{"version":3,"sources":["domready!","../lq/cookie.js","../lq/main.js","../lq/oop.js","../lq/observable.js","../lq/validations.js","../lq/drop.js","../lq/enum.js","../lq/constants.js","../lq/util.js","../lq/responsive.js","jquery.signalR-2.4.3.js","../lq/asyncSubcriptions.js","../lq/typesProvider.js","../lq/services/action/pasteCommand.js","../lq/services/action/addToHomeScreenCommand.js","../lq/services/action/actionServiceFactory.js","../lq/style.js","../drops/action/action.js","../lq/events/processEventActionsUrl.js","../lq/queryDispatcher.js","../drops/actionSlideshow/actionSlide.js","../drops/actionSlideshow/actionSlideshow.js","HtmlSanitizer.js","../lq/html.js","../lq/tooltip.js","../lq/required.js","../drops/modals.js","../drops/autoComplete/autoComplete.js","../drops/baiduMaps/baiduMaps.js","../drops/barCode/barCode.js","../drops/boolImageInput/boolImageInput.js","../drops/boolInput/boolInput.js","../drops/businessProcess/businessProcess.js","../lq/dropFactory.js","../drops/drawings/businessprocessEvents.js","../lq/point.js","../lq/design/jqueryExtensions.js","../lq/design/editors/dropExtensionsClicks.js","../drops/drawings/businessprocessElement.js","../drops/drawings/flow/segment.js","../drops/drawings/flow/flow.js","../drops/drawings/gateway/gateway.js","../drops/drawings/milestone/milestone.js","../drops/drawings/start/start.js","../drops/drawings/stop/stop.js","../drops/drawings/task/task.js","../drops/drawings/runtimeTypesProvider.js","detectmobilebrowser.js","../lq/onlongpress.js","html2canvas.js","../drops/businessProcessCanvas/businessProcessCanvas.js","../drops/button/button.js","../drops/buttonWithIcon/buttonWithIcon.js","luxon.js","../drops/calendar/calendar.js","../drops/calendar/calendarParameter.js","jquery-ui.js","../drops/calendar/calendarItems.js","../lq/nestingContext.js","../drops/calendarDayView/calendarDayView.html!tpl","../drops/calendarDayView/calendarDayView.js","../drops/calendarItem/calendarItem.js","../lq/eventSource.js","../drops/calendar/daysofmonthcalendar.html!tpl","../drops/calendar/daysofmonthcalendar.js","../drops/calendarMonthView/calendarMonthView.js","../lq/windowSize.js","../drops/calendarWeekView/calendarWeekView.html!tpl","../drops/calendarWeekView/calendarWeekView.js","../drops/calendarYearView/calendarYearView.html!tpl","../drops/calendarYearView/calendarYearView.js","../drops/bucketDrop/bucketDrop.js","../drops/captcha/captcha.js","../drops/carousel/carousel.js","../drops/carouselControl/carouselControl.js","../drops/carouselPanel/carouselPanel.js","../drops/carouselTabControl/carouselTabControl.js","../lq/cache.js","../lq/cssutil.js","../drops/chart/chart.js","../lq/Drop.js","../drops/chart_v2/Chart_v2Defaults.js","../lq/frontendModules.js","../drops/chart_v2/chart_v2.js","../drops/circle/circle.js","../drops/circleShape/circleShape.js","../drops/clock/clock.js","jquery.miniColors/jquery.miniColors.js","../drops/colorPicker/colorPicker.js","../drops/custom/custom.js","../lq/imageSize.js","../lq/dynamicContentImage.js","../drops/dataGrid/dataGrid.js","../drops/dateInput/dateInputCustom.js","../drops/dateInput/dateInputNative.js","../drops/dateInput/dateInput.js","../drops/documentView/documentView.js","../drops/dropdown/dropdown.js","../drops/dropField/dropField.js","../drops/dynamicBarcode/dynamicBarcode.js","../drops/dynamicIframe/dynamicIframe.js","../drops/dynamicImage/dynamicImage.js","../drops/dynamicSlideshow/dynamicSlideshow.js","../lq/domainDefinitions.js","../lq/richText.js","../drops/dynamicText/dynamicText.js","../lq/videoPlayer.js","../drops/dynamicVideo/dynamicVideo.js","../drops/embed/embed.js","../drops/entityFilter/filterInstance.js","../drops/entityFilter/entityFilter.js","../drops/entityFiltersPanel/entityFiltersPanelItem.html!tpl","../drops/entityFiltersPanel/entityFiltersPanelItem.js","../drops/entityFiltersPanel/entityFiltersPanel.js","../drops/errorHandling/errorHandling.js","../drops/frame/frame.js","../drops/gauge/gauge.js","uuid.js","../lq/runtimeDispatcher.js","../lq/runtimeBusyIndicator.js","../lq/busyIndicator.js","../lq/dispatcher.js","../drops/googleMap/googleMap.js","../drops/grid/gridPager.js","../drops/grid/grid.js","ResizeSensor.js","../drops/gridLayout/gridLayout.js","../drops/helper/helper.js","magic-wand-min.js","../drops/magicWand/magicWand.js","../drops/hotspot/hotspot.js","../drops/iframe/iframe.js","../drops/image/image.js","../drops/imageKpi/imageKpi.js","../drops/input/input.js","../drops/jitsiMeeting/jitsiMeeting.js","sortable.js","../lq/dropSortable.js","../drops/list/list.js","../drops/listItem/listItem.js","../drops/matrix/matrixTablesSynchronizer.js","../drops/matrix/matrix.js","../drops/milestones/milestones.js","../drops/mockList/mockList.js","../lq/modalblur.js","../drops/modalAction/ModalActionMpa.js","../lq/navigationHistory.js","../lq/navigatorSpa.js","../lq/validatorGateway.js","../lq/actionLoader.js","../lq/layouting.js","../lq/highlighter.js","../drops/modalAction/ModalActionSpa.js","../drops/modalAction/modalAction.js","../drops/modalPopup/modalPopup.js","../drops/multiSelect/checkboxList.js","../drops/multiSelect/dropdownitem.js","../drops/multiSelect/dropDownMultiSelect.js","../drops/multiSelect/multiSelect.js","../lq/numeric.js","../drops/numericInput/numericInput.js","../drops/pagination/pagination.js","../drops/pattern/pattern.js","../drops/payment/payment.js","../lq/dayTime.js","../drops/planningGraph/planninggraphimpl.js","../drops/planningGraph/planningGraph.js","../drops/progressBar/progressBar.js","../lq/webPushNotifications.js","../drops/pushNotificationReceiver/pushNotificationReceiver.js","../drops/qrCode/qrCode.js","../drops/radioButton/radioButton.js","../drops/radioButtonGroup/radioButtonGroup.js","../drops/radioButtonGroupV2/radioButtonGroupV2.js","../drops/radioButtonList/radioButtonList.js","../drops/rectangle/rectangle.js","../drops/requirementsGraph/monotoniccubicspline.js","../drops/requirementsGraph/barvalue.js","../drops/requirementsGraph/requirementsgraphimpl.js","../drops/requirementsGraph/requirementsGraph.js","../lq/fileUtil.js","../lq/fileUpload.js","../lq/uploader.js","../drops/richTextEditor/richTextEditor.js","../drops/richTextTemplateEditor/richTextTemplateEditor.js","../drops/runtimeQueryBuilder/runtimeQueryBuilder.js","../drops/simpleSpreadsheet/simpleSpreadsheetRow.js","../drops/simpleSpreadsheet/simpleSpreadsheet.js","../drops/sketchPad/canvasMorph.js","../drops/sketchPad/sketchPad.js","nouislider.js","../drops/slider/slider.js","../drops/stack/stack.js","../drops/taskProgress/taskProgress.js","../drops/text/text.js","../drops/textArea/textArea.js","../drops/timeInput/timeInput.js","../drops/timer/timer.js","../drops/treeView/singleSelection.js","../drops/treeView/multiSelection.js","../drops/treeView/treeView.js","../drops/tweetDrop/tweetDrop.js","../drops/video/video.js","../drops/documentPreviewer/documentPreviewer.js","../drops/googlePlaces/googlePlaces.js","../drops/dropDown_v2/dropkick.js","../drops/dropDown_v2/dropDown_v2.js","../drops/dynamicGridLayout/dynamicGridLayout.js","../lq/types.js","../drops/ganttChart/ganttChart.js","../drops/normalDistribution/normalDistributionDefaults.js","../drops/normalDistribution/normalDistribution.js","../drops/contentRegion/contentRegion.js","../drops/scrollSync/scrollSync.js","../drops/documentIntelligencePreviewer/documentIntelligencePreviewer.js","../drops/action/runtimeTypesProvider.js","../lq/parameterCollection.js","../lq/parameterShell.js","../lq/clipboard.js","../lq/runtimeErrorHandler.js","../lq/formatter.js","../lq/formatting.js","../lq/runtimeUrl.js","../lq/conditions/operandEvaluator.js","../lq/conditions/conditionEvaluator.js","../lq/conditions/conditions.js","../lq/events/actions/eventAction.js","../lq/events/actions/thirdPartyLogin.js","../lq/events/actions/federatedLogin.js","../lq/events/abortError.js","../lq/events/eventing.js","../lq/events/actions/activeDirectorySyncGroupUsers.js","../lq/events/actions/backgroundTask.js","../lq/events/actions/breakEvent.js","../lq/events/actions/calendarEventsExportCommand.js","../lq/events/actions/calendarURLExport.js","../lq/events/actions/changeParameter.js","../lq/events/actions/changePassword.js","../lq/events/actions/checkIn.js","../lq/events/actions/checkOut.js","../lq/events/actions/copyDynamicContentCommand.js","../lq/events/actions/copyToClipboard.js","../lq/events/actions/cq.js","../lq/entityFiltersState.js","../lq/events/actions/create.js","../lq/events/actions/createTextFileCommand.js","../lq/formSubmission.js","../lq/events/actions/csvExportCommand.js","../lq/events/actions/deleteCommand.js","../lq/events/actions/deleteDynamicContentCommand.js","../lq/events/actions/distanceMatrix.js","../lq/events/actions/desktopClientCommand.js","../lq/events/actions/documentZip.js","../lq/events/actions/domainFunctionCommand.js","../lq/events/actions/download.js","../lq/events/actions/downloadFileCommand.js","../lq/events/actions/excelExportCommand.js","../lq/events/actions/executeEidReader.js","jquery.jsonp.min.js","../lq/events/actions/executeEidSigner.js","../lq/events/actions/executeMethod.js","../lq/events/actions/executePlugin.js","../lq/events/actions/executeQuery.js","../lq/events/actions/executeTimer.js","../lq/events/actions/extractMailAttachment.js","../lq/events/actions/eYouthAuthenticationCommand.js","../lq/events/actions/eYouthAuthenticationLogoutCommand.js","../lq/events/actions/focus.js","../lq/events/actions/forEach.js","../lq/events/actions/formula.js","../lq/events/actions/generateText.js","../lq/events/actions/import.js","../lq/events/actions/languageCommand.js","../lq/events/actions/login.js","../lq/storage.js","../lq/events/actions/logoffCommand.js","../lq/events/actions/mail.js","../lq/events/actions/mapping.js","../lq/events/actions/mollie.js","../lq/events/actions/mollieCreateCustomer.js","../lq/events/actions/mollieUpdateCustomer.js","../lq/events/actions/officeAddinLoginCommand.js","../lq/events/actions/openDocumentInOfficeOnline.js","../lq/events/actions/pain001ExportCommand.js","../lq/events/actions/payment.js","../lq/events/actions/paypal.js","../lq/events/actions/pdfDataCommand.js","../lq/events/actions/pdfMergeCommand.js","../lq/events/actions/pdfMergeCommand_v2.js","../lq/events/actions/platformCommand.js","../lq/events/actions/plugInLogin.js","../lq/events/actions/pushNotificationsCommand.js","../lq/events/actions/raiseEvent.js","../lq/events/actions/readOutlookMessage.js","../lq/events/actions/redirect.js","../lq/events/actions/refreshCaptcha.js","../lq/events/actions/refreshLoggedInUserCommand.js","../lq/events/actions/reportCommand.js","../lq/events/actions/rssCommand.js","../lq/events/actions/saveMorph.js","../lq/events/actions/scheduledTaskCommand.js","../lq/events/actions/scrollTo.js","../lq/events/actions/serverCommand.js","../lq/events/actions/setParameterFromEvent.js","../lq/events/actions/setVisibility.js","../lq/events/actions/shareOnFacebook.js","../lq/events/actions/shareOnLinkedIn.js","../lq/events/actions/shareOnTwitter.js","../lq/events/actions/sms.js","../lq/events/actions/transformRichText.js","../lq/events/actions/undoCheckOut.js","../lq/events/actions/update.js","../lq/events/actions/urlGenerator.js","../lq/events/actions/windowsLoginCommand.js","../lq/events/actions/wordExportCommand.js","../lq/events/actions/xmlExportCommand.js","../lq/events/actions/popupGoogleLogin.js","../lq/events/actions/bigBlueButtonJoinMeetingCommand.js","../lq/events/actions/bigBlueButtonStartMeetingCommand.js","../lq/events/actions/googleGeocodingQuery.js","../lq/events/actions/downloadExternalDocumentCommand.js","../lq/events/actions/rawSqlCommand.js","../lq/events/actions/asyncSender.js","../lq/events/actions/asyncEventTrigger.js","../lq/events/actions/asyncEventReceiver.js","../lq/events/actions/share.js","../lq/events/actions/labelImageCommand.js","../lq/events/actions/webserviceClient.js","../lq/events/actions/chatGPTBatchCommand.js","../lq/events/actions/chatGPTCommand.js","../lq/events/actions/chatGPTImageCommand.js","../lq/events/actions/businessLogicBlockCommand.js","../lq/services/mpa/addToHomeScreenCommand.js","../lq/events/actions/addToHomeScreenCommand.js","../lq/events/actions/translationCommand.js","../lq/events/actions/asyncDeletion.js","../lq/events/actions/enablePushNotificationsCommand.js","../lq/events/actions/CQCommand.js","../lq/events/actions/validateCommand.js","../lq/events/actions/apiCallv2.js","../lq/events/eventActionFactory.js","../lq/visibility/defaultVisibility.js","../lq/datasources.js","../lq/visibility/itemVisibility.js","../lq/queryString.js","../lq/runtimePiping.js","../lq/navigatorMpa.js","../lq/services/mpa/pasteCommand.js","../lq/services/mpa/applicationValidation.js","../lq/runtimeClone.js","../lq/runtimeDropPicker.js","../lq/services/mpa/issueTracking.js","../lq/pullDownAction.js","../lq/services/mpa/pullDownEvents.js","../lq/services/mpa/serviceFactory.js","../lq/javascript/polyfill.js","../lq/licquidRuntimeMpa.js","async.js","../lq/services/application/applicationValidation.js","../lq/services/application/issueTracking.js","../lq/services/application/pullDownEvents.js","../lq/services/application/applicationServiceFactory.js","../lq/licquidRuntimeSpa.js","../lq/licquidRuntimeRaven.js"],"names":["define","set","cname","cvalue","expiryInDays","expiryDate","Date","setDate","getDate","document","cookie","toUTCString","get","name","ca","split","i","length","c","charAt","substring","indexOf","remove","domready","module","require","_","$","config","ravenLogger","getTenantName","tenantName","getTenantApplicationName","tenantApplicationName","inMockMode","URLSearchParams","window","location","search","inForcedDevMode","getMockCookieName","browserMatchesChrome","test","navigator","userAgent","toLowerCase","init","initCompleted","ravenFrontEndDsn","Raven","setUserContext","id","userId","tags","environment","ravenEnvironment","tenant","application","component","componentName","dataCallback","data","fingerprint","install","context","on","getNotificationIcon","notificationIcon","areWebNotificationsEnabled","serviceWorker","getFirebaseApiKey","firebaseApiKey","getFirebaseAppId","firebaseAppId","getFirebaseProjectId","firebaseProjectId","getFirebaseSenderId","firebaseSenderId","getFirebaseWPCert","firebaseWPCert","getNotificationsEntryPage","notificationsEntryPage","isScriptDebuggingEnabled","scriptDebuggingEnabled","getStylesVersion","stylesVersion","getBaseUrl","path","baseUrl","getCdnUrl","cdnUrl","getTenantUrl","tenantUrl","getTenantCdnUrl","tenantCdnUrl","getRuntimeUrl","runtimeUrl","getRuntimeBaseUrl","runtimeBaseUrl","getUserId","getDesignerId","designerId","getDesignerUrl","designerUrl","getDesignerBaseUrl","designerBaseUrl","getTenantUploads","tenantUploads","getFrontEndUrl","frontEndUrl","getPortalUrl","getFullUrl","pathFromRoot","slice","origin","protocol","hostname","port","getNameOfComponent","getRavenLogger","getLanguageIsoCode","languageISOCode","isInMockMode","isInForcedDevMode","exitMockMode","setRavenLogger","instance","browser","isChrome","main","extend","subClass","superClass","F","prototype","this","constructor","Object","makeExtendable","obj","Observable","events","eventListeners","flatten","addListener","event","listener","checkEvent","push","addOnceListener","self","listenerWrapper","apply","arguments","removeListener","wrappedListener","actualListener","find","current","index","splice","informListeners","eventArgs","drop","forEach","getListeners","contains","RangeError","addObservableEvents","chain","compact","each","makeObservable","observable","bind","when","runValidation","validation","piping","triggerEvent","optionalCurrentContextValue","rules","reduce","globalValidationResult","validationRule","conditions","getConditionEvaluator","condition","evaluate","then","executionData","conditionResult","validatedEventData","eventing","enabled","raisedEventName","invalidatedEventData","lq","oop","validations","dropDefaultModel","positioning","position","x","y","size","zIndex","locked","isHidden","formatting","dateFormat","groupSeperator","decimalSeperator","decimalPrecision","initialVisibility","initialVisibilityOption","centered","toPage","childDrops","editable","renderInBackground","Drop","$element","defaultModel","model","type","addClass","css","parent","pool","otherVisuals","eventHandlers","applyLayouts","constructing","defaultEventArg","undefined","supportsManyToManyData","selector","autoPositionAt","targetPosition","left","top","right","bottom","appendTo","createAndRenderDrops","preRender","removed","childDropsWithRootDrop","map","rootDrop","drops","dropFactory","createDrops","all","createRenderPromisesForChildren","postRender","isRenderedInBackground","createRenderPromiseForChild","toBrowser","render","$actionWrapper","$masterPage","$pageAnchored","renderPromises","addDrop","noop","resize","postWindowResize","error","errorArgs","onError","isVisible","showWithoutAnimation","getElementForVisibility","removeClass","shown","show","animation","showAnimation","showAnimationTime","animationDuration","delay","unit","one","hideWithoutAnimation","hidden","hide","hideAnimation","hideAnimationTime","getChildElementForVisibility","childDrop","toggle","afterShown","afterHidden","getEventDataFor","eventName","applyEventTrigger","jsEventName","$target","eventArg","eventData","jsEventNameWithNamespace","off","subscribeEventHandler","isBackgroundEvent","insideList","triggerEventIfEnabled","$optionalSource","isEventEnabled","parentEventActionId","getDefaultEventArg","eventPosition","trigger","clientX","clientY","offsetX","offsetY","pageX","pageY","screenX","screenY","source","element","activeArea","getBoundingClientRect","publish","updateRequiredIndicator","isValid","requiredData","hasValue","triggerValidationEvent","optionalParentEventActionId","performValidation","getValue","value","makesItGrow","doesThisMakeMeGrow","applyPosition","canGrow","display","getZIndex","minHeight","width","margin","marginLeft","marginRight","parentCss","paddingTop","paddingBottom","$actionView","applyPositionForChild","getPositionCss","pageAnchoredCanvas","parallax","updateParallaxPosition","otherDrop","scrollTop","factor","designData","optionalZIndex","dynamicHeight","height","useFullScreen","autoHeight","useDynamicHeight","isDynamiclySizedContainer","autoWidth","useDynamicWidth","fitContent","getPosition","removeDrop","beforeRemove","datasources","unregisterDatasource","removeAllDrops","handler","unsubscribeEventHandlers","unsubscribeEventHandlersRecursive","removeClicks","eventHandler","unsubscribe","getRootDrop","isChildDropOfRecursive","potentialParent","doNotAutoUnsubscribe","keys","descendantOf","dropType","getFirstParentOfType","getNestingContext","nestingContext","appliedLayouts","layoutId","freeze","EnumItem","enumObject","enumName","methods","enum","toString","create","Enum","key","values","getIndex","constants","licquidDateFormat","valueTypes","uniqueIdentifier","dateTime","decimal","integer","string","boolean","layoutTypes","deviceTypes","orientations","mappingTypes","valueTypeLabels","valueTypeSelection","convertListOfKeyValuesToObject","sourceObject","ignoredProperties","Array","theObject","item","Value","Key","uriRegex","RegExp","parseUri","uri","match","scheme","authority","query","fragment","formatUriQuery","join","parseUriQuery","param","rest","object","addOrSetQueryParameter","queryString","getPropertyByPathArray","pathArray","property","isObject","cloneData","JSON","parse","stringify","addOrSetQueryParameterInUrl","url","parsedUri","convertRelativeHyperlinkToHostName","hyperlink","getPropertyByPath","setPropertyByPath","lastProperty","pop","lastObject","getOrCreatePropertyByPathArray","removePropertyByPath","autoFormatNumber","number","isFinite","abs","Math","log10","log","LN10","toExponential","precision","floor","toFixed","formatted","util","propertiesThatAreAlwaysLayoutDependend","propertiesThatShouldBeDeletedIfTheyDoNotExist","propertiesThatAreLayoutDependendByType","List","Gauge","Image","Text","getDeviceType","vendor","opera","substr","Phone","Tablet","Desktop","copyDropLayout","sourceData","targetData","prop","isUndefined","applyLayoutRecursiveToChildren","layoutInfo","currentDropLayout","findWhere","layouts","backgroundDrops","isPhoneDevice","isPWA","matchMedia","matches","getOrientation","screen","orientation","Landscape","Portrait","$window","outerWidth","outerHeight","getBrowserLayout","deviceType","layoutType","getLayoutType","getBrowserLayoutType","getBrowserResolution","w","d","e","documentElement","g","getElementsByTagName","innerWidth","clientWidth","innerHeight","clientHeight","getLayoutIdFromUri","hash","getLayoutTypeFromUri","queryParameters","parseInt","getDefaultLayoutType","defaultLayout","isDefaultLayout","currentLayout","getCurrentLayout","isDefault","currentLayoutId","selectedLayout","allLayouts","currentLayoutType","getCurrentLayoutType","layoutsMatchingDeviceSortedBySize","where","sortBy","browserSize","fittingLayoutsSortedBySize","filter","resolutionX","resolutionY","last","first","layoutTypeOverride","getInitialLayoutType","applyLayoutRecursive","resources","nojQuery","noTransportOnInit","errorOnNegotiate","stoppedWhileLoading","stoppedWhileNegotiating","errorParsingNegotiateResponse","errorRedirectionExceedsLimit","errorDuringStartRequest","errorFromServer","stoppedDuringStartRequest","errorParsingStartResponse","invalidStartResponse","protocolIncompatible","aspnetCoreSignalrServer","sendFailed","parseFailed","longPollFailed","eventSourceFailedToConnect","eventSourceError","webSocketClosed","pingServerFailedInvalidResponse","pingServerFailed","pingServerFailedStatusCode","pingServerFailedParse","noConnectionTransport","webSocketsInvalidState","reconnectTimeout","reconnectWindowTimeout","jsonpNotSupportedWithAccessToken","Error","signalR","_connection","version","_pageLoaded","readyState","_pageWindow","_negotiateAbortText","onStart","onStarting","onReceived","onConnectionSlow","onReconnecting","onReconnect","onStateChanged","onDisconnect","changeState","connection","expectedState","newState","state","triggerHandler","oldState","supportsKeepAlive","keepAliveData","activated","transport","addDefaultPort","getDefaultPort","ConnectingMessageBuffer","drainCallback","that","buffer","tryBuffer","message","connectionState","connecting","drain","connected","shift","clear","qs","logging","fn","defaultContentType","ieVersion","appName","exec","parseFloat","transportError","format","s","replace","firefoxMajorVersion","configurePingInterval","onFail","pingIntervalId","pingInterval","setInterval","transports","_logic","pingServer","fail","ajaxDefaults","processData","timeout","async","global","cache","isDisconnecting","disconnected","reconnecting","hub","start","load","$connection","lastError","connectingMessageBuffer","lastMessageAt","getTime","lastActiveAt","beatInterval","beatHandle","totalTransportConnectTimeout","redirectQs","_parseResponse","response","json","_originalJson","isCrossDomain","against","link","trim","createElement","href","host","ajaxDataType","contentType","clientProtocol","supportedProtocols","negotiateRedirectSupportedProtocols","reconnectDelay","transportConnectTimeout","disconnectTimeout","reconnectWindow","keepAliveWarnAt","options","callback","initialize","waitForPageLoad","jsonp","deferred","_deferral","Deferred","parser","setConnectionUrl","wsProtocol","withCredentials","support","cors","requestedTransport","isArray","validateTransport","deferredStartHandler","promise","resolve","stopReconnectingTimeout","onReconnectTimeout","configuredStopReconnectingTimeout","stop","setTimeout","stateChanged","clearTimeout","configureStopReconnectingTimeout","_originalUrl","call","initHandler","noTransportError","reject","transportName","onFallback","isFirefox11OrGreater","asyncAbort","monitorKeepAlive","startHeartbeat","onFailed","err","negotiateRequest","prepareQueryString","res","protocolError","redirects","supportedTransports","negotiate","onSuccess","statusText","success","accessToken","headers","Authorization","ajax","result","availableTransports","ProtocolVersion","RedirectUrl","AccessToken","splitUrlAndQs","appRelativeUrl","Url","ConnectionId","token","ConnectionToken","webSocketServerUrl","WebSocketServerUrl","pollTimeout","ConnectionTimeout","DisconnectTimeout","TransportConnectTimeout","KeepAliveTimeout","timeoutWarning","TryWebSockets","inArray","starting","send","received","errorData","sendData","connectionSlow","reconnected","notifyServer","deferral","unbind","clearInterval","abort","stopMonitoringKeepAlive","messageId","groupsToken","msg","m","toTimeString","console","debug","noConflict","jQuery","transportLogic","startAbortText","beat","monitoring","timeElapsed","lostConnection","userNotified","checkIfAlive","markActive","getAjaxUrl","InitHandler","startRequested","startCompleted","connectionStopped","failCalled","initReceived","transportFailed","transportTimeoutHandle","tryAbortStartRequest","ajaxStart","wrappedError","xhrFields","dataType","xhr","addQs","Response","status","preparedUrl","encodeURIComponent","firstChar","appender","getUrl","poll","ajaxPost","random","maximizePersistentResponse","minPersistentResponse","MessageId","C","Messages","M","Initialized","ShouldReconnect","LongPollDelay","L","GroupsToken","G","E","updateGroups","stringifySend","ajaxSend","payload","triggerReceived","textStatus","ajaxAbort","requestHeaders","fetch","method","keepalive","credentials","rejectDeferred","triggerStartError","startRequest","tryInitialize","persistentResponse","onInitialized","processMessages","minData","I","markLastMessage","reconnectKeepAliveUpdate","verifyLastActive","isConnectedOrReconnecting","ensureReconnectingState","clearReconnectTimeout","reconnect","handleParseFailure","foreverFrame","count","connections","webSockets","socket","ex","opened","WebSocket","onopen","onclose","wasClean","reason","onmessage","close","clearReconnectAttemptTimeout","reconnectAttemptTimeoutHandle","serverSentEvents","timeOut","eventSource","EventSource","Message","OPEN","addEventListener","eventPhase","CLOSED","loadingFixIntervalId","attachedTo","createFrame","frame","setAttribute","loadPreventer","prevent","tempFrame","body","appendChild","removeChild","cancel","iframeClearThreshold","frameId","frameLoadHandler","attachEvent","src","receive","cw","frameMessageCount","contentWindow","contentDocument","firstChild","execCommand","parentNode","getConnection","started","longPolling","fireConnect","tryFailConnect","privateData","reconnectErrors","fireReconnected","reconnectTimeoutId","pollXhr","pollTimeoutId","raiseReconnect","polling","postData","onprogress","shouldReconnect","responseText","min","pow","nextGuid","makeEventName","getArgValue","a","isFunction","hasMembers","hasOwnProperty","clearInvocationCallbacks","callbacks","invocationCallbacks","callbackId","invocationCallbackId","scope","isCallbackFromGeneratedHubProxy","hubProxy","hubConnection","hubName","settings","useDefaultPath","callbackMap","hasSubscriptions","callbackIdentity","isFromOldGeneratedHubProxy","_signalRGuid","registration","callbackSpace","guid","callbackRegistration","j","invoke","methodName","argValues","arr","fun","thisp","makeArray","H","A","minResult","_maximizeHubResponse","State","Progress","notifyWith","Data","progressjQueryVersionLogged","jquery","StackTrace","IsHubException","ErrorData","rejectWith","resolveWith","Result","isEmptyObject","S","minHubResponse","R","P","Id","D","T","proxies","proxy","dataCallbackId","_maximizeClientHubInvocation","Method","Hub","Args","errData","origData","minClientHubInvocation","_registerSubscribedHubs","_subscribedToHubs","subscribedHubs","createHubProxy","groups","getRandom","max","createSubscription","register","actionInstanceId","receiverIdentifier","groupName","subscribers","callSubscribers","calleeArguments","subscriber","addSubscription","initialiseCallback","defer","asyncHub","client","receiveResults","results","deleteResult","receiveEvent","argument","HubConnectionBuilder","withUrl","build","capitalizedResults","outputs","totalResults","addDatasourceSubscription","parameters","registerDatasourceSubscription","server","addDatasourceListener","actionId","addEventSubscription","registerEventSubscription","unsubscribeActionInstance","groupNames","toClose","TypesProvider","listOfTypes","types","memo","typeName","getPrototypeOf","filePastedEvent","textPastedEvent","PasteCommand","onPaste","handlePaste","shouldListenForPaste","addEventHandlers","shouldListenFor","items","clipboardData","originalEvent","image","kind","getAsFile","eventActionId","text","getAsString","textData","dispose","removeEventListener","responsive","AddToHomeScreenCommand","deferredPrompt","typesProvider","createService","service","serviceType","defaultSupportedFontFamilies","supportedTextAligns","supportedFontWeights","supportedTextTransforms","supportedHorizontalPositions","supportedVerticalPositions","defaults","border","style","color","font","fontFamily","inheritColor","weight","italic","underline","align","verticalAlign","lineHeight","textTransform","background","padding","boxShadow","blur","spread","textShadow","textStroke","opacity","roundedCorners","leftTopRadius","rightTopRadius","rightBottomRadius","leftBottomRadius","backgroundImage","leftMargin","rightMargin","heading","level","numberingStyle","rotate","runtime","hasTransform","has","radianConversionFactor","PI","rotateFilterTemplate","template","variable","Style","defaultStyles","defaultMockStyles","mockMode","customStyleStates","renderStyles","classPrefix","$actualElement","actualStyle","customState","customHoverStyle","$requiredIndicatorElement","styles","prefix","isMockAction","styleId","getDefaultStyleIdByDropType","getClassNameFromStyleId","classNameFromStyleId","renderCustomStyle","renderSavedStyles","className","ignoreMock","getDefaultStyleIdForComponentByDropType","uncapitalizedComponentName","role","renderStyle","renderCss","customHoverState","styleState","hoverStyle","selected","removeStyleClass","defaultStyleSettings","resetCss","borderStyle","borderColor","borderTopWidth","borderBottomWidth","borderRightWidth","borderLeftWidth","fontSize","fontWeight","fontStyle","textDecoration","textAlign","transform","outline","paddingLeft","paddingRight","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","$content","getDropTextContent","justifyContent","convertAlignmentValue","alignItems","MSInputMethodContext","documentMode","rotateRadians","sin","cos","hasClass","children","addBack","supportedFontFamilies","getSupportedFontFamilies","fontName","getSupportedTextTransforms","getSupportedTextAligns","getSupportedFontWeights","getSupportedHorizontalPositions","getSupportedVerticalPositions","getDefaults","bestFontSize","container","successSize","failingSize","newFontSize","offsetHeight","scrollHeight","offsetWidth","scrollWidth","asyncSubcriptions","actionServiceFactory","masterPageId","contentRegionActionId","embeddable","keyDownHandler","which","target","is","preventDefault","instanceCounter","Action","instanceId","nextInstanceId","makeItGrow","html","insideAnIFrame","useScroll","disableBackspaceNavigation","addSwipeEvents","xStart","yStart","xCurrent","yCurrent","handleTouchStart","handleTouchMove","getTouches","evt","touches","touchStart","touchCurrent","xDiff","yDiff","scrollEventHandler","verScrollGt","verScrollLimitGt","horScrollGt","horScrollLimitGt","scrollLeft","verScrollLt","verScrollLimitLt","horScrollLt","horScrollLimitLt","services","applyLayout","systems","setValue","layout","updateBackgroundSize","runningOnHandheldDevice","deviceTypeName","shouldUseWidthOfLayout","isNumeric","minWidth","applicationService","growingDrop","$viewport","removeAttr","resizeViewport","morphs","concat","addRootMorph","bindEvents","triggerPageLoadEvent","PointerEventsPolyfill","scrollEventEnabled","windowMinHeight","attr","scale","ww","wscale","hscale","viewportScaleForWidth","actionWidth","viewportScaleForHeight","windowMinWidth","wh","actionHeight","setContent","contentArray","locals","insertionPoint","contentRegion","getAllDrops","loadData","actionData","isActive","morph","prepareName","section","optionalName","params","r","prepare","processEventActionsUrl","QueryDispatcher","getDefaultQueryParams","getQueryRequest","batch","globalParameters","globals","getAll","localParameters","requests","batchEntry","queryData","decorateDataFunc","eventActionType","queryObjectName","queryName","queries","listeners","dispatchBatch","requestData","dispatcher","dispatch","batchResult","responses","errorHandler","backgroundDispatch","catch","ActionSlide","getActionUrl","visibility","targetUrl","$parent","listenForMessage","append","eventMethod","messageEvent","fadeOut","ActionSlideshow","slides","$slides","handled","performInitialLoad","loadSlides","done","showSlide","actionSlideshowId","newSlides","slide","promises","nextIndex","HtmlSanitizer","_tagWhitelist","ABBR","B","BLOCKQUOTE","BODY","BR","CENTER","CODE","DD","DIV","DL","DT","EM","FONT","H1","H2","H3","H4","H5","H6","HR","IMG","LABEL","LI","OL","PRE","SMALL","SOURCE","SPAN","STRONG","SUB","SUP","TABLE","TBODY","TR","TD","TH","THEAD","UL","U","VIDEO","CAPTION","FIGURE","_contentTagWhiteList","FORM","_attributeWhitelist","cellspacing","cellpadding","colspan","rowspan","rel","controls","title","_cssWhitelist","float","_schemaWhiteList","_uriAttributes","action","_parser","DOMParser","startsWithAny","str","substrings","SanitizeHtml","input","extraSelector","doc","parseFromString","tagName","resultElement","makeSanitizedCopy","node","newNode","nodeType","Node","TEXT_NODE","cloneNode","ELEMENT_NODE","attributes","styleName","setProperty","getPropertyValue","childNodes","subCopy","innerHTML","createDocumentFragment","AllowedTags","AllowedAttributes","AllowedCssStyles","AllowedSchemas","$htmStripper","escape","String","unescape","strip","sanitize","Tooltip","tooltipData","option","queryParent","parentDatasourceOutput","ctx","tooltip","isEnabled","hardcodedTooltip","hardcoded","parameter","update","optionalTooltipOverride","datasourceOutput","registerDatasourceListener","datasource","Required","callBack","required","isRequired","fromQuery","fromParameter","valueFromParameterIsTrue","defaultValue","addRemoveRequiredIndicator","fromHardcoded","valueSource","currentZIndexOfRealModals","getZIndexForPopups","getNextZIndex","modals","filterParameterName","keyOutputName","behaviour","onlyShowSelectedItem","AutoComplete","typeOfCurrentValue","focused","selectedItem","selectedId","selectedText","afterUpdate","hasSearch","whiteSpace","$list","currentPage","fetchingPage","lastPageReached","blockInfiniteScroll","totalNumberOfResults","numberOfLoadedResults","$inputWrapper","$inputField","possible","generateRandomSuffix","$scrollContainer","$listTable","$listFooter","infiniteScroll","onScroll","fetchNextPageIfNeeded","$imgWrapper","$displayField","watermark","inset","overflow","flexDirection","$clearButton","clearValue","$borderWrapper","prepend","$img","isDropDown","tabIndex","tooglePlaceholder","dataSource","newSearchDebounced","debounce","newSearch","queryDispatcher","decorateQuery","clearFilterParameter","tempStyles","tempType","gridStyleId","$app","closeItemList","formatter","createFormatter","doNotExecuteCountQuery","hideTotal","page","pageSize","getPageSize","enterPressedEvent","val","openItemList","nextItem","previousItem","itemListIsOpen","hasFocusedItem","selectCurrentItem","handleFocusLost","getFocusedItem","keepFocus","onMouseDown","queryId","uniqueId","focus","keepText","findMatchingRowById","selectItem","useSecondDataSource","secondParameter","secondDataSource","checkForResults","getNonSystemParameters","filterValues","outputAlias","anId","outputName","addedItem","empty","isNewSearch","updateAutoCompleteList","clearFocusedItem","setFocusedItem","getAllItems","eq","getFocusedIndex","focusedItem","scrollTopOfContainer","heightOfContainer","bottomOfContainer","$item","bestPosition","movingToTheLastItem","hiddenColumns","headerNames","hideHeaders","$header","every","unshift","currentSelection","indexOfCurrentSelection","$row","cellValue","formattedValue","convertFromLicquidFormat","row","offset","popupHasWidth","popupWidth","availableWidth","borderWidthOfList","availableHeight","$selected","bmStatuses","bmStatus","bmReadyCallbacks","waitForBaiduMaps","mapType","showMapTypeButtons","locationType","city","defaultZoom","BaiduMaps","$map","usable","renderMap","apiKey","baiduMapsReady","jsFile","getScript","loadBaiduMaps","onReady","BMap","Map","getMapType","enableScrollWheelZoom","enablePinchToZoom","toggleMapTypeControl","toggleNavigationControl","updateLocation","showDefaultCity","openCity","showDefaultAddress","openAddress","address","showDefaultGpsLocation","openGpsCoordinates","gpsLongitude","gpsLatitude","showDefaultBd09Location","openBaiduCoordinates","bd09Longitude","bd09Latitude","openLocationOfUser","openCityOfUser","mapTypeControl","MapTypeControl","addControl","removeControl","showNavigationControl","navigationControl","NavigationControl","setCurrentCity","centerAndZoom","geoAddress","Geocoder","getPoint","point","longitude","latitude","Point","points","convertor","Convertor","translate","geolocation","Geolocation","getCurrentPosition","getStatus","BMAP_STATUS_SUCCESS","enableHighAccuracy","theCity","LocalCity","gpsParts","baiduParts","Barcode","$image","rgba2hex","rgba","rgb","filePath","normal","selectedType","hideLabel","complete","isTriStateEnabled","BoolImageInput","changeValueTo","readOnly","cursor","handleClickAndTriggerEvents","handleClick","isTrue","getNullImageUrl","nullImage","getFalseImageUrl","falseImage","defaultFalseImage","getTrueImageUrl","trueImage","defaultTrueImage","imageUrl","removeProperty","isChecked","useBuiltInStyle","BoolInput","renderCheckbox","$checkbox","$wrapper","BusinessProcess","defaultCreationOptions","dynamic","DropFactory","keepTrackOfDrops","createdDropsById","createdDropsByName","createdDrops","createdDropsByViewModelKey","clearCache","createDrop","creationOptions","viewModelKey","models","getAllChildMorphs","findDropById","findDropByName","findDropByViewModelKey","BusinessProcessEvents","eventRegistrations","optionalOwner","owner","registrations","args","fromPosition","fromPositionToZoomPosition","zoomlevel","fromPositionXAndY","toPositionXAndY","toPosition","add","v","subtract","multiply","divide","clone","distance","delta","sqrt","multiplyScalar","rot90","rot270","positionWithoutTransform","originalTtransform","offsetTop","offsetLeft","enterKey","ev","keyCode","naturalDimensions","naturalWidth","naturalHeight","inMemoryCopy","getOverlappingDrops","left1","top1","right1","bottom1","left2","top2","right2","bottom2","animateBackToStart","initialPosition","animate","duration","queue","dragToPosition","setZoomLevel","getZoomLevel","getCurrentSize","newPos","oldLeft","newLeft","oldTop","newTop","poolWidth","poolHeight","anchor","updatePositionIndicator","triggerDropMoved","move","end","$this","clickHandlers","touchStartHandler","startHandler","clicks","startPos","_oldZIndex","dragging","clickTimer","dropToDrag","drag","revertWhenDroppedOffTarget","getDropTargets","ignoreChildren","beforeDrag","saveTargets","afterDrag","highlightTargets","overlappingTargets","targets","droppedOnTarget","droppedOffTarget","dragFunc","extraInfo","targetDrop","dragIgnoreOffset","click","doubleClick","snapGridSize","getTarget","touchMoveHandler","onMouseMove","getPositionSource","targetTouches","changedTouches","scalePercentage","round","getClientPosition","blockDragStart","includes","activeElement","triggerClick","onselectstart","doClick","endDrag","stopPropagation","xMove","yMove","pos","adjustedStartPos","snapFunc","clientPos","isTouch","simulatedClickPosition","Event","businessProcessEvents","BusinessProcessElement","acceptsFlowConnections","getAnchoringPoints","informPositionChanged","onResizing","Segment","$arrow","$text","$textContainer","$line","showArrow","showText","setTextPosition","draw","ax","ay","bx","by","angle","startPoint","endPoint","atan2","outId","inId","textTop","textLeft","joints","linkToApplication","Flow","outDrop","inDrop","createAllSegments","listenToConnectedDropMovements","createSegment","segments","segment","bpElement","drawSegments","getAllSegmentCoordinates","getAvailablePoints","fallback","pointGroups","jointPoint","getClosestPoints","pointGroupA","pointGroupB","shortestDistance","closestAnchoringPoints","outPoint","inPoint","pointA","pointB","Gateway","EXLUSIVE","PARALLEL","gateType","textPosition","createTextElement","$textCell","$diamond","$plusSign","entityId","Milestone","Start","$circle","Stop","Task","mobile","eventToTrigger","timerExceeded","scrolledOrMoved","checkForSelection","OnLongPress","applyLongPressOnElement","$scrollableElement","unhandledClickCallback","pressTimer","longPressDelay","longPressEvent","clickedEvent","parentStillHasSomeEvents","triggerTheCorrectEvent","determinedEventArg","factory","exports","amd","globalThis","html2canvas","extendStatics","b","setPrototypeOf","__proto__","p","__extends","TypeError","__","__assign","assign","t","n","__awaiter","thisArg","_arguments","generator","Promise","fulfilled","step","next","rejected","__generator","f","label","sent","trys","ops","verb","throw","return","Symbol","iterator","op","__spreadArray","to","from","pack","ar","l","Bounds","h","fromClientRect","clientRect","windowBounds","fromDOMRectList","domRectList","domRect","rect","EMPTY","parseBounds","toCodePoints$1","codePoints","charCodeAt","extra","fromCodePoint$1","_i","fromCodePoint","codeUnits","codePoint","fromCharCode","chars$2","lookup$2","Uint8Array","i$2","chars$1$1","lookup$1$1","i$1$1","slice16$1","view","Uint16Array","Trie$1","Trie","initialValue","errorValue","highStart","highValueIndex","ix","UTRIE2_DATA_BLOCK_LENGTH$1","UTRIE2_INDEX_1_OFFSET$1","UTRIE2_INDEX_2_BLOCK_LENGTH$1","chars$3","lookup$3","i$3","SP","BA","HY","CL","CP","EX","IN","NS","OP","IS","NU","PO","PR","SY","AL","EB","ID","JL","JV","JT","SA","ea_OP","BREAK_NOT_ALLOWED$1","BREAK_ALLOWED$1","UnicodeTrie$1","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","len","ArrayBuffer","bytes","decode$1","view32","polyUint32Array$1","Uint32Array","view16","polyUint16Array$1","headerLength","ceil","createTrieFromBase64$1","ALPHABETICS","HARD_LINE_BREAKS","SPACE$1","PREFIX_POSTFIX","LINE_BREAKS","KOREAN_SYLLABLE_BLOCK","HYPHEN","isAdjacentWithSpaceIgnored","currentIndex","classTypes","prev","previousNonSpaceClassType","_lineBreakAtIndex","indicies","forbiddenBreaks","beforeIndex","afterIndex","before","prevIndex","cssFormattedClasses","lineBreak","wordBreak","_a","indices","categories","classType","codePointsToCharacterClasses","isLetterNumber","forbiddenBreakpoints","letterNumber","Break","HYPHEN_MINUS","PLUS_SIGN","EOF","isDigit","isHex","isWhiteSpace","isNameStartCodePoint","isLowerCaseLetter","isUpperCaseLetter","isLetter","isNonASCIICodePoint","isNameCodePoint","isNonPrintableCodePoint","isValidEscape","c1","c2","isIdentifierStart","c3","isNumberStart","stringToNumber","sign","integers","int","fraction","fracd","frac","expsign","exponent","exp","LEFT_PARENTHESIS_TOKEN","RIGHT_PARENTHESIS_TOKEN","COMMA_TOKEN","SUFFIX_MATCH_TOKEN","PREFIX_MATCH_TOKEN","COLUMN_TOKEN","DASH_MATCH_TOKEN","INCLUDE_MATCH_TOKEN","LEFT_CURLY_BRACKET_TOKEN","RIGHT_CURLY_BRACKET_TOKEN","SUBSTRING_MATCH_TOKEN","BAD_URL_TOKEN","BAD_STRING_TOKEN","CDO_TOKEN","CDC_TOKEN","COLON_TOKEN","SEMICOLON_TOKEN","LEFT_SQUARE_BRACKET_TOKEN","RIGHT_SQUARE_BRACKET_TOKEN","WHITESPACE_TOKEN","EOF_TOKEN","Tokenizer","_value","write","chunk","read","tokens","consumeToken","consumeCodePoint","consumeStringToken","peekCodePoint","flags","consumeName","reconsumeCodePoint","consumeNumericToken","e1","e2","e3","consumeIdentLikeToken","a1","a2","a3","u1","u2","consumeUnicodeRangeToken","consumeWhiteSpace","digits","questionMarks","digit","endDigits","consumeUrlToken","stringToken","consumeBadUrlRemnants","consumeEscapedCodePoint","consumeStringSlice","amount","endingCodePoint","consumeNumber","repr","hex","hexCodePoint","isSurrogateCodePoint","Parser","_tokens","tokenizer","parseValue","parseComponentValue","parseValues","parseComponentValues","SyntaxError","reconsumeToken","consumeComponentValue","consumeSimpleBlock","consumeFunction","block","isEndingTokenFor","functionToken","cssFunction","isDimensionToken","isNumberToken","isIdentToken","isStringToken","isIdentWithValue","nonWhiteSpace","nonFunctionArgSeparator","parseFunctionArgs","arg","isLength","isLengthPercentage","parseLengthPercentageTuple","ZERO_LENGTH","FIFTY_PERCENT","HUNDRED_PERCENT","getAbsoluteValueForTuple","tuple","getAbsoluteValue","GRAD","TURN","_context","isAngle","parseNamedSide","ident","deg","color$1","colorFunction","SUPPORTED_COLOR_FUNCTIONS","namedColor","COLORS","toUpperCase","TRANSPARENT","isTransparent","asString","alpha","blue","green","red","getTokenColorValue","_b","hue2rgb","t1","t2","hue","hsl","saturation","lightness","hsla","parseColor","ALICEBLUE","ANTIQUEWHITE","AQUA","AQUAMARINE","AZURE","BEIGE","BISQUE","BLACK","BLANCHEDALMOND","BLUE","BLUEVIOLET","BROWN","BURLYWOOD","CADETBLUE","CHARTREUSE","CHOCOLATE","CORAL","CORNFLOWERBLUE","CORNSILK","CRIMSON","CYAN","DARKBLUE","DARKCYAN","DARKGOLDENROD","DARKGRAY","DARKGREEN","DARKGREY","DARKKHAKI","DARKMAGENTA","DARKOLIVEGREEN","DARKORANGE","DARKORCHID","DARKRED","DARKSALMON","DARKSEAGREEN","DARKSLATEBLUE","DARKSLATEGRAY","DARKSLATEGREY","DARKTURQUOISE","DARKVIOLET","DEEPPINK","DEEPSKYBLUE","DIMGRAY","DIMGREY","DODGERBLUE","FIREBRICK","FLORALWHITE","FORESTGREEN","FUCHSIA","GAINSBORO","GHOSTWHITE","GOLD","GOLDENROD","GRAY","GREEN","GREENYELLOW","GREY","HONEYDEW","HOTPINK","INDIANRED","INDIGO","IVORY","KHAKI","LAVENDER","LAVENDERBLUSH","LAWNGREEN","LEMONCHIFFON","LIGHTBLUE","LIGHTCORAL","LIGHTCYAN","LIGHTGOLDENRODYELLOW","LIGHTGRAY","LIGHTGREEN","LIGHTGREY","LIGHTPINK","LIGHTSALMON","LIGHTSEAGREEN","LIGHTSKYBLUE","LIGHTSLATEGRAY","LIGHTSLATEGREY","LIGHTSTEELBLUE","LIGHTYELLOW","LIME","LIMEGREEN","LINEN","MAGENTA","MAROON","MEDIUMAQUAMARINE","MEDIUMBLUE","MEDIUMORCHID","MEDIUMPURPLE","MEDIUMSEAGREEN","MEDIUMSLATEBLUE","MEDIUMSPRINGGREEN","MEDIUMTURQUOISE","MEDIUMVIOLETRED","MIDNIGHTBLUE","MINTCREAM","MISTYROSE","MOCCASIN","NAVAJOWHITE","NAVY","OLDLACE","OLIVE","OLIVEDRAB","ORANGE","ORANGERED","ORCHID","PALEGOLDENROD","PALEGREEN","PALETURQUOISE","PALEVIOLETRED","PAPAYAWHIP","PEACHPUFF","PERU","PINK","PLUM","POWDERBLUE","PURPLE","REBECCAPURPLE","RED","ROSYBROWN","ROYALBLUE","SADDLEBROWN","SALMON","SANDYBROWN","SEAGREEN","SEASHELL","SIENNA","SILVER","SKYBLUE","SLATEBLUE","SLATEGRAY","SLATEGREY","SNOW","SPRINGGREEN","STEELBLUE","TAN","TEAL","THISTLE","TOMATO","TURQUOISE","VIOLET","WHEAT","WHITE","WHITESMOKE","YELLOW","YELLOWGREEN","backgroundClip","backgroundColor","parseColorStop","processColorStops","stops","lineLength","processStops","previous","stop_1","absoluteValue","gapBegin","stop_2","gapLength","gapValue","calculateGradientDirection","radian","corner","centerX","centerY","getAngleFromCorner","halfWidth","halfHeight","halfLineLength","findCorner","closest","stat","cx","cy","optimumDistance","optimumCorner","Infinity","prefixLinearGradient","angle$1","firstToken","colorStop","CLOSEST_SIDE","FARTHEST_SIDE","CLOSEST_CORNER","FARTHEST_CORNER","CIRCLE","ELLIPSE","COVER","CONTAIN","prefixRadialGradient","shape","isColorStop","acc","image_1","addImage","imageFunction","SUPPORTED_IMAGE_FUNCTIONS","BACKGROUND_SIZE","isAtPosition_1","isSupportedImage","backgroundOrigin","backgroundPosition","backgroundRepeat","parseBackgroundRepeat","LINE_BREAK","backgroundSize","isBackgroundSizeInfoToken","borderColorForSide","side","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderRadiusForSide","borderStyleForSide","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderWidthForSide","direction","bit","parseDisplayValue","letterSpacing","WORD_BREAK","STRICT","NORMAL","computeLineHeight","listStyleImage","listStylePosition","listStyleType","marginForSide","marginTop","marginBottom","overflowWrap","paddingForSide","shadow","transform$1","transformFunction","SUPPORTED_TRANSFORM_FUNCTIONS","matrix","matrix3d","b1","b2","a4","b4","DEFAULT_VALUE","DEFAULT","transformOrigin","origins","BREAK_ALL","KEEP_ALL","auto","order","time","textDecorationColor","textDecorationLine","line","accumulator","fontVariant","content","counterIncrement","increments","filtered","counter","increment","counterReset","resets","reset","quotes","open_1","close_1","open","getQuote","depth","quote","paintOrder","layers","webkitTextStrokeColor","webkitTextStrokeWidth","CSSParsedDeclaration","declaration","cssFloat","overflowTuple","overflowX","overflowY","isTransformed","isPositioned","isPositionedWithZIndex","isFloating","isInlineLevel","CSSParsedPseudoDeclaration","CSSParsedCounterDeclaration","descriptor","length_1","value_1","isDebugging","elementType","getAttribute","getElementDebugType","ElementContainer","textNodes","elements","getComputedStyle","isHTMLElementNode","some","bounds","chars$1","lookup$1","i$1","slice16","UTRIE2_DATA_BLOCK_LENGTH","UTRIE2_INDEX_1_OFFSET","UTRIE2_INDEX_2_BLOCK_LENGTH","chars","lookup","PseudoElementType","V","LV","LVT","UnicodeTrie","decode","polyUint32Array","polyUint16Array","createTrieFromBase64","BREAK_NOT_ALLOWED","codePointToClass","_graphemeBreakAtIndex","_codePoints","countRI","GraphemeBreaker","toCodePoints","lastEnd","graphemeBreak","isGreenPixel","createForeignObjectSVG","xmlns","svg","createElementNS","foreignObject","setAttributeNS","loadSerializedSVG$1","img","onload","onerror","XMLSerializer","serializeToString","FEATURES","SUPPORT_RANGE_BOUNDS","createRange","range","testElement","TEST_HEIGHT","selectNode","rangeBounds","rangeHeight","testRangeBounds","defineProperty","SUPPORT_WORD_BREAKING","wordSpacing","repeat","textList","supports","setStart","setEnd","boundAhead","testIOSLineBreak","SUPPORT_SVG_DRAWING","canvas","getContext","drawImage","toDataURL","testSVG","SUPPORT_FOREIGNOBJECT_DRAWING","fillStyle","fillRect","greenImageSrc","getImageData","testForeignObject","SUPPORT_CORS_IMAGES","crossOrigin","SUPPORT_RESPONSE_TYPE","XMLHttpRequest","responseType","SUPPORT_CORS_XHR","SUPPORT_NATIVE_TEXT_SEGMENTATION","Intl","Segmenter","TextBounds","getWrapperBounds","ownerDocument","wrapper","replaceChild","segmentGraphemes","segmenter","granularity","bk","breaker","graphemes","splitGraphemes","breakText","breakWords","segmentWords","wordSeparators","LineBreaker","words","_loop_1","word_1","TextContainer","textBounds","clientRects","getClientRects","subSegments","subOffset_1","subSegment","replacementNode","splitText","parseTextBounds","CAPITALIZE","capitalize","p1","p2","ImageElementContainer","_super","_this","currentSrc","intrinsicWidth","intrinsicHeight","CanvasElementContainer","SVGElementContainer","baseVal","LIElementContainer","OLElementContainer","reversed","CHECKBOX_BORDER_RADIUS","RADIO_BORDER_RADIUS","CHECKBOX","RADIO","PASSWORD","INPUT_COLOR","InputElementContainer","checked","placeholder","SelectElementContainer","selectedIndex","TextareaElementContainer","IFrameElementContainer","iframe","tree","parseTree","documentBackgroundColor","bodyBackgroundColor","LIST_OWNERS","parseNodeTree","root","childNode","nextNode","nextSibling","isTextNode","isElementNode","isSlotElement","assignedNodes","createContainer","createsRealStackingContext","createsStackingContext","slot","shadowRoot","isTextareaElement","isSVGElement","isSelectElement","isImageElement","isCanvasElement","isLIElement","isOLElement","isInputElement","isIFrameElement","isBodyElement","isSVGElementNode","isVideoElement","isStyleElement","isCustomElement","CounterState","counters","getCounterValue","getCounterValues","canReset","entry","counterNames","ROMAN_UPPER","ARMENIAN","HEBREW","GEORGIAN","createAdditiveCounter","symbols","suffix","createCounterText","createCounterStyleWithSymbolResolver","codePointRangeLength","resolver","createCounterStyleFromRange","codePointRangeStart","codePointRangeEnd","createCounterStyleFromSymbols","createCJKCounter","numbers","multipliers","negativeSign","tmp","coefficient","CHINESE_INFORMAL_MULTIPLIERS","CHINESE_FORMAL_MULTIPLIERS","JAPANESE_NEGATIVE","KOREAN_NEGATIVE","appendSuffix","defaultSuffix","cjkSuffix","koreanSuffix","spaceSuffix","CJK_TEN_COEFFICIENTS","CJK_ZEROS","IGNORE_ATTRIBUTE","DocumentCloner","scrolledElements","referenceElement","quoteDepth","toIFrame","windowSize","createIFrameContainer","scrollX","defaultView","pageXOffset","scrollY","pageYOffset","cloneWindow","documentClone","iframeLoad","iframeLoader","onclone","restoreNodeScroll","scrollTo","logger","warn","clonedReferenceElement","nodeName","fonts","ready","imagesReady","serializeDoctype","doctype","restoreOwnerScroll","adoptNode","createElementClone","createCanvasClone","createVideoClone","createStyleClone","srcset","loading","createCustomElementClone","copyCSSStyles","sheet","cssRules","rule","cssText","textContent","inlineImages","info","clonedCanvas","clonedCtx","allowTaint","putImageData","gl","attribs","getContextAttributes","preserveDrawingBuffer","video","blankCanvas","appendChildNode","child","copyStyles","hasAttribute","ignoreElements","cloneChildNodes","assignedNode","createTextNode","transitionProperty","styleBefore","styleAfter","createPseudoHideStyles","resolvePseudoContent","BEFORE","insertBefore","after","AFTER","pseudoElt","anonymousReplacedElement","counterStyle","counterState","counterType","delim","counterStates","counterType_1","separator","PSEUDO_HIDE_ELEMENT_CLASS_BEFORE","PSEUDO_HIDE_ELEMENT_CLASS_AFTER","newClassName","baseValue","destroy","CORNER","cloneIframeContainer","scrolling","imageReady","images","interval","ignoredStyleProperties","internalSubset","publicId","systemId","PSEUDO_HIDE_ELEMENT_STYLE","createStyles","CacheStorage","getOrigin","_link","isSameOrigin","_origin","setContext","Cache","_options","_cache","isBlobImage","isRenderable","loadImage","useCORS","useProxy","isInlineImage","isInlineBase64Image","imageTimeout","reader_1","FileReader","readAsDataURL","timeout_1","ontimeout","INLINE_SVG","INLINE_BASE64","INLINE_IMG","isSVG","Vector","deltaX","deltaY","lerp","BezierCurve","startControl","endControl","subdivide","firstHalf","ab","bc","cd","abbc","bccd","dest","reverse","isBezierCurve","BoundCurves","tlh","tlv","trh","trv","_c","brh","brv","_d","blh","blv","factors","maxFactor","topWidth","rightHeight","bottomWidth","leftHeight","topLeftBorderDoubleOuterBox","getCurvePoints","TOP_LEFT","topRightBorderDoubleOuterBox","TOP_RIGHT","bottomRightBorderDoubleOuterBox","BOTTOM_RIGHT","bottomLeftBorderDoubleOuterBox","BOTTOM_LEFT","topLeftBorderDoubleInnerBox","topRightBorderDoubleInnerBox","bottomRightBorderDoubleInnerBox","bottomLeftBorderDoubleInnerBox","topLeftBorderStroke","topRightBorderStroke","bottomRightBorderStroke","bottomLeftBorderStroke","topLeftBorderBox","topRightBorderBox","bottomRightBorderBox","bottomLeftBorderBox","topLeftPaddingBox","topRightPaddingBox","bottomRightPaddingBox","bottomLeftPaddingBox","topLeftContentBox","topRightContentBox","bottomRightContentBox","bottomLeftContentBox","r1","r2","kappa","ox","oy","xm","ym","calculateBorderBoxPath","curves","calculatePaddingBoxPath","TransformEffect","ClipEffect","OpacityEffect","isClipEffect","effect","equalPath","StackingContext","inlineLevel","nonInlineLevel","negativeZIndex","zeroOrAutoZIndexOrTransformedOrOpacity","positiveZIndex","nonPositionedFloats","nonPositionedInlineLevel","ElementPaint","effects","borderBox","paddingBox","getEffects","inFlow","croplessEffects","parseStackTree","stackingContext","realStackingContext","listItems","treatAsRealStackingContext","paintContainer","listOwnerItems","parentStack","stack","order_1","index_1","index_2","processListItems","numbering","listValue","parsePathForBorder","borderSide","createPathFromCurves","createStrokePathFromCurves","outer1","outer2","inner1","inner2","contentBox","calculateBackgroundRendering","intrinsicSize","backgroundPositioningArea","calculateBackgroundPositioningArea","getBackgroundValueForIndex","backgroundPaintingArea","calculateBackgroundPaintingArea","backgroundImageSize","calculateBackgroundSize","sizeWidth","sizeHeight","calculateBackgroundRepeatPath","isAuto","AUTO","hasIntrinsicValue","intrinsicProportion","second","hasIntrinsicProportion","hasIntrinsicWidth","hasIntrinsicHeight","hasIntrinsicDimensions","width_3","height_3","SAMPLE_TEXT","FontMetrics","_data","_document","parseMetrics","span","baseline","middle","getMetrics","Renderer","CanvasRenderer","_activeEffects","fontMetrics","textBaseline","applyEffects","popEffect","applyEffect","save","isOpacityEffect","globalAlpha","isTransformEffect","clip","restore","renderStack","renderStackContent","renderNode","paint","renderNodeBackgroundAndBorders","renderNodeContent","renderTextWithLetterSpacing","fillText","letter","measureText","createFontStyle","variant","fixIOSSystemFonts","renderTextNode","paintOrderLayer","textShadows","shadowColor","shadowOffsetX","shadowOffsetY","shadowBlur","strokeStyle","lineWidth","lineJoin","chrome","strokeText","renderReplacedElement","box","fill","beginPath","arc","isTextInputElement","canvasTextAlign","_e","_f","_g","_h","_j","_k","_l","_m","_o","_p","mask","paths","moveTo","lineTo","formatPath","closePath","bezierCurveTo","renderRepeat","pattern","resizeImage","renderBackgroundImage","this_1","x0","x1","y0","y1","gradient_1","top_1","rx","ry","radialGradient_1","midX","midY","invF","createPattern","createLinearGradient","addColorStop","isRadialGradient","gradient","calculateRadius","createRadialGradient","renderSolidBorder","curvePoints","renderDoubleBorder","outerPaths","innerPaths","parsePathForBorderDoubleOuter","parsePathForBorderDoubleInner","hasBackground","borders","borders_1","calculateBackgroundCurvedPaintingArea","deltaW","deltaH","borderBoxArea","maskOffset","shadowPaintingArea","renderDashedDottedBorder","strokePaths","boxPaths","startX","startY","endX","endY","dashLength","spaceLength","useLineDash","multiplier","numberOfDashes","minSpace","maxSpace","path1","path2","parsePathForBorderStroke","setLineDash","lineCap","stroke","calculateContentBoxPath","iOSBrokenFonts","fontFamilies","ForeignObjectRenderer","loadSerializedSVG","Logger","now","instances","Context","instanceName","instanceCount","renderElement","opts","resourceOptions","contextOptions","windowOptions","foreignObjectRendering","cloneOptions","documentCloner","clonedElement","renderOptions","_q","_r","_s","_t","_u","windowWidth","windowHeight","parseDocumentSize","parseBackgroundColor","devicePixelRatio","removeContainer","backgroundColorOverride","defaultBackgroundColor","runtimeTypesProvider","BusinessProcessCanvas","drawingDropFactory","$canvas","drawing","getWidth","$milestones","getHeight","getFile","dimensions","$copy","activeStyleDuration","Button","$button","flex","enable","disable","triggerActiveStyle","licquidMethod_enable","clicked","licquidMethod_disable","icon","iconAlignment","ButtonWithIcon","$icon","buttonIcon","moveAttributeToTextElement","attributeName","parentReplacement","luxon","_defineProperties","props","enumerable","configurable","writable","_toPropertyKey","_createClass","Constructor","protoProps","staticProps","_extends","_inheritsLoose","_setPrototypeOf","_getPrototypeOf","o","_construct","Parent","Class","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Function","_wrapNativeSuper","Wrapper","_objectWithoutPropertiesLoose","excluded","sourceKeys","_arrayLikeToArray","arr2","_createForOfIteratorHelperLoose","allowArrayLike","it","minLen","_unsupportedIterableToArray","hint","prim","toPrimitive","Number","_toPrimitive","LuxonError","_Error","InvalidDateTimeError","_LuxonError","toMessage","InvalidIntervalError","_LuxonError2","InvalidDurationError","_LuxonError3","ConflictingSpecificationError","_LuxonError4","InvalidUnitError","_LuxonError5","InvalidArgumentError","_LuxonError6","ZoneIsAbstractError","_LuxonError7","DATE_SHORT","year","month","day","DATE_MED","DATE_MED_WITH_WEEKDAY","weekday","DATE_FULL","DATE_HUGE","TIME_SIMPLE","hour","minute","TIME_WITH_SECONDS","TIME_WITH_SHORT_OFFSET","timeZoneName","TIME_WITH_LONG_OFFSET","TIME_24_SIMPLE","hourCycle","TIME_24_WITH_SECONDS","TIME_24_WITH_SHORT_OFFSET","TIME_24_WITH_LONG_OFFSET","DATETIME_SHORT","DATETIME_SHORT_WITH_SECONDS","DATETIME_MED","DATETIME_MED_WITH_SECONDS","DATETIME_MED_WITH_WEEKDAY","DATETIME_FULL","DATETIME_FULL_WITH_SECONDS","DATETIME_HUGE","DATETIME_HUGE_WITH_SECONDS","Zone","_proto","offsetName","ts","formatOffset","equals","otherZone","singleton$1","SystemZone","_Zone","_ref","parseZoneInfo","locale","getTimezoneOffset","DateTimeFormat","resolvedOptions","timeZone","dtfCache","typeToPos","era","ianaZoneCache","IANAZone","zoneName","valid","isValidZone","resetCache","isValidSpecifier","zone","date","isNaN","NaN","dtf","hour12","_ref2","formatToParts","filled","_formatted$i","partsOffset","parsed","fMonth","fDay","hackyOffset","adOrBc","asTS","over","objToLocalTS","millisecond","_excluded","_excluded2","intlLFCache","intlDTCache","getCachedDTF","locString","intlNumCache","intlRelCache","sysLocaleCache","weekInfoCache","listStuff","loc","englishFn","intlFn","mode","listingMode","PolyNumberFormatter","intl","forceSimple","padTo","otherOpts","intlOpts","useGrouping","minimumIntegerDigits","inf","NumberFormat","getCachedINF","fixed","padStart","roundTo","PolyDateFormatter","dt","originalZone","z","gmtOffset","offsetZ","setZone","plus","minutes","_proto2","toJSDate","parts","part","PolyRelFormatter","isEnglish","hasRelative","rtf","_opts","base","cacheKeyOpts","RelativeTimeFormat","getCachedRTF","_proto3","numeric","narrow","units","years","quarters","months","weeks","days","hours","seconds","lastable","isDay","isInPast","fmtValue","singular","lilUnits","fmtUnit","formatRelativeTime","fallbackWeekSettings","firstDay","minimalDays","weekend","Locale","outputCalendar","weekSettings","specifiedLocale","_parseLocaleString","localeStr","xIndex","selectedStr","uIndex","smaller","numberingSystem","calendar","parseLocaleString","parsedLocale","parsedNumberingSystem","parsedOutputCalendar","intlConfigString","weekdaysCache","standalone","monthsCache","meridiemCache","eraCache","fastNumbersCached","fromOpts","defaultToEN","Settings","defaultLocale","defaultNumberingSystem","defaultOutputCalendar","validateWeekSettings","defaultWeekSettings","fromObject","_temp","_proto4","isActuallyEn","hasNoWeirdness","alts","getOwnPropertyNames","redefaultToEN","redefaultToSystem","_this2","formatStr","ms","DateTime","utc","mapMonths","extract","weekdays","_this3","mapWeekdays","meridiems","_this4","eras","_this5","field","matching","dtFormatter","numberFormatter","fastNumbers","relFormatter","listFormatter","ListFormat","getCachedLF","startsWith","getWeekSettings","hasLocaleWeekInfo","getWeekInfo","weekInfo","getCachedWeekInfo","getStartOfWeek","getMinDaysInFirstWeek","getWeekendDays","other","singleton","FixedOffsetZone","utcInstance","parseSpecifier","signedOffset","InvalidZone","normalizeZone","defaultZone","lowered","isNumber","numberingSystems","arab","arabext","bali","beng","deva","fullwide","gujr","hanidec","khmr","knda","laoo","limb","mlym","mong","mymr","orya","tamldec","telu","thai","tibt","latn","numberingSystemsUTF16","hanidecChars","digitRegexCache","digitRegex","ns","throwOnInvalid","twoDigitCutoffYear","resetCaches","cutoffYear","Invalid","explanation","nonLeapLadder","leapLadder","unitOutOfRange","dayOfWeek","UTC","setUTCFullYear","getUTCFullYear","js","getUTCDay","computeOrdinal","isLeapYear","uncomputeOrdinal","ordinal","table","month0","findIndex","isoWeekdayToLocal","isoWeekday","startOfWeek","gregorianToWeek","gregObj","minDaysInFirstWeek","weekYear","weekNumber","weeksInWeekYear","timeObject","weekToGregorian","weekData","weekdayOfJan4","yearInDays","daysInYear","_uncomputeOrdinal","gregorianToOrdinal","gregData","ordinalToGregorian","ordinalData","_uncomputeOrdinal2","usesLocalWeekValues","localWeekday","localWeekNumber","localWeekYear","hasInvalidGregorianData","validYear","isInteger","validMonth","integerBetween","validDay","daysInMonth","hasInvalidTimeData","validHour","validMinute","validSecond","validMillisecond","bestBy","compare","best","pair","thing","parseInteger","parseFloating","parseMillis","towardZero","trunc","modMonth","floorMod","firstWeekOffset","weekOffset","weekOffsetNext","untruncateYear","offsetFormat","modified","offHourStr","offMinuteStr","offHour","offMin","asNumber","numericValue","normalizeObject","normalizer","normalized","u","k","pick","monthsLong","monthsShort","monthsNarrow","weekdaysLong","weekdaysShort","weekdaysNarrow","erasLong","erasShort","erasNarrow","stringifyTokens","splits","tokenToString","_step","_iterator","literal","_macroTokenToFormatOpts","DDD","DDDD","tt","ttt","tttt","TT","TTT","TTTT","ff","fff","ffff","FF","FFF","FFFF","Formatter","formatOpts","systemLoc","parseFormat","fmt","currentFull","bracketed","macroTokenToFormatOpts","formatWithSystemDefault","formatDateTime","formatDateTimeParts","formatInterval","formatRange","num","formatDateTimeFromString","knownEnglish","useDateTimeFormatter","isOffsetFixed","allowZ","meridiem","meridiemForDateTime","monthForDateTime","weekdayForDateTime","eraForDateTime","quarter","maybeMacro","formatDurationFromString","dur","lildur","tokenToField","realTokens","found","collapsed","shiftTo","mapped","ianaRegex","combineRegexes","_len","regexes","_key","full","combineExtractors","_len2","extractors","_key2","mergedVals","mergedZone","_ex","_len3","patterns","_key3","_patterns","_patterns$_i","regex","extractor","simpleParse","_len4","_key4","ret","offsetRegex","isoTimeBaseRegex","isoTimeRegex","isoTimeExtensionRegex","extractISOWeekData","extractISOOrdinalData","sqlTimeRegex","sqlTimeExtensionRegex","extractISOTime","milliseconds","extractISOOffset","local","fullOffset","extractIANAZone","isoTimeOnly","isoDuration","extractISODuration","yearStr","monthStr","weekStr","dayStr","hourStr","minuteStr","secondStr","millisecondsStr","hasNegativePrefix","negativeSeconds","maybeNegate","force","obsOffsets","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","fromStrings","weekdayStr","rfc2822","extractRFC2822","obsOffset","milOffset","rfc1123","rfc850","ascii","extractRFC1123Or850","extractASCII","isoYmdWithTimeExtensionRegex","isoWeekWithTimeExtensionRegex","isoOrdinalWithTimeExtensionRegex","isoTimeCombinedRegex","extractISOYmdTimeAndOffset","extractISOWeekTimeAndOffset","extractISOOrdinalDateAndTime","extractISOTimeAndOffset","extractISOTimeOnly","sqlYmdWithTimeExtensionRegex","sqlTimeCombinedRegex","extractISOTimeOffsetAndIANAZone","INVALID$2","lowOrderMatrix","casualMatrix","daysInYearAccurate","daysInMonthAccurate","accurateMatrix","orderedUnits$1","reverseUnits","clone$1","conf","conversionAccuracy","Duration","durationToMillis","vals","_vals$milliseconds","sum","normalizeValues","reduceRight","previousVal","conv","rollUp","_Symbol$for","accurate","invalid","isLuxonDuration","fromMillis","normalizeUnit","fromDurationLike","durationLike","isDuration","fromISO","_parseISODuration","parseISODuration","fromISOTime","_parseISOTimeOnly","parseISOTimeOnly","week","toFormat","fmtOpts","toHuman","unitDisplay","listStyle","toObject","toISO","toISOTime","millis","toMillis","suppressMilliseconds","suppressSeconds","includePrefix","includeOffset","toJSON","invalidReason","_i2","_orderedUnits","minus","negate","mapUnits","_i3","_Object$keys","reconfigure","as","normalize","rescale","newVals","_Object$entries","entries","_Object$entries$_i","removeZeroes","shiftToAll","lastUnit","built","accumulated","_i4","_orderedUnits2","own","ak","negated","_i5","_Object$keys2","_i6","_orderedUnits3","v1","v2","for","INVALID$1","validateStartEnd","Interval","isLuxonInterval","fromDateTimes","builtStart","friendlyDateTime","builtEnd","validateError","_split","startIsValid","endIsValid","_dur","isInterval","toDuration","startOf","useLocaleWeeks","diff","hasSame","isEmpty","isAfter","isBefore","splitAt","dateTimes","sorted","sort","added","splitBy","idx","divideEqually","numberOfParts","overlaps","abutsStart","abutsEnd","engulfs","intersection","union","merge","intervals","_intervals$sort$reduc","sofar","final","xor","_Array$prototype","currentCount","ends","difference","toLocaleString","toISODate","_temp2","_ref3$separator","mapEndpoints","mapFn","Info","hasDST","proto","isUniversal","isValidIANAZone","_ref$locale","_ref$locObj","locObj","getMinimumDaysInFirstWeek","_ref2$locale","_ref2$locObj","getWeekendWeekdays","_temp3","_ref3","_ref3$locale","_ref3$locObj","_temp4","_ref4","_ref4$locale","_ref4$numberingSystem","_ref4$locObj","_ref4$outputCalendar","monthsFormat","_temp5","_ref5","_ref5$locale","_ref5$numberingSystem","_ref5$locObj","_ref5$outputCalendar","_temp6","_ref6","_ref6$locale","_ref6$numberingSystem","_ref6$locObj","weekdaysFormat","_temp7","_ref7","_ref7$locale","_ref7$numberingSystem","_ref7$locObj","_temp8","_ref8$locale","_temp9","_ref9$locale","features","relative","localeWeek","dayDiff","earlier","later","utcDayStart","toUTC","keepLocalTime","_diff","_highOrderDiffs","lowestOrder","highWater","_differs","_differs$_i","differ","highOrderDiffs","remainingMillis","lowerOrderUnits","_cursor$plus","_Duration$fromMillis","intUnit","post","deser","code","_numberingSystemsUTF","parseDigits","spaceOrNBSP","spaceOrNBSPRegExp","fixListRegex","stripInsensitivities","oneOf","strings","startIndex","simple","partTypeStyleToTokenVal","short","long","dayperiod","dayPeriod","hour24","dummyDateTimeCache","expandMacroTokens","formatOptsToTokens","maybeExpandMacroToken","TokenParser","two","three","four","six","oneOrTwo","oneToThree","oneToSix","oneToNine","twoToFour","fourToSix","unitate","disqualifyingUnit","_buildRegex","regexString","handlers","explainFromTokens","_match","matchIndex","rawMatches","specificOffset","Z","q","toField","dateTimeFromMatches","df","resolvedOpts","isSpace","actualType","tokenForPart","INVALID","MAX_DATE","unsupportedZone","possiblyCachedWeekData","possiblyCachedLocalWeekData","localWeekData","inst","old","fixOffset","localTS","tz","utcGuess","o2","o3","tsToObj","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","objToTS","adjustTime","oPre","millisToAdd","_fixOffset","parseDataToDateTime","parsedZone","interpretationZone","toTechFormat","_toISODate","extended","longFormat","_toISOTime","extendedZone","ianaName","zoneOffsetTs","defaultUnitValues","defaultWeekUnitValues","defaultOrdinalUnitValues","orderedUnits","orderedWeekUnits","orderedOrdinalUnits","normalizeUnitWithLocalWeeks","weeknumber","weeksnumber","weeknumbers","weekyear","weekyears","quickDT","offsetProvis","zoneOffsetGuessCache","guessOffsetForZone","_objToTS","diffRelative","calendary","lastOpts","argList","ot","_zone","isLuxonDateTime","_lastOpts","_lastOpts2","fromJSDate","zoneToUse","fromSeconds","_usesLocalWeekValues","tsNow","containsOrdinal","containsGregorYear","containsGregorMD","containsGregor","definiteWeekDef","defaultValues","useWeekData","objNow","_step2","foundFirst","_iterator2","higherOrderInvalid","validWeek","validWeekday","hasInvalidWeekData","validOrdinal","hasInvalidOrdinalData","_objToTS2","_parseISODate","parseISODate","fromRFC2822","_parseRFC2822Date","preprocessRFC2822","parseRFC2822Date","fromHTTP","_parseHTTPDate","parseHTTPDate","fromFormat","_opts$locale","_opts$numberingSystem","_parseFromTokens","_explainFromTokens","parseFromTokens","fromString","fromSQL","_parseSQL","parseSQL","isDateTime","parseFormatForOpts","localeOpts","tokenList","expandFormat","getPossibleOffsets","dayMs","minuteMs","oEarlier","oLater","o1","ts1","ts2","resolvedLocaleOptions","_Formatter$create$res","toLocal","_ref2$keepLocalTime","_ref2$keepCalendarTim","keepCalendarTime","newTS","offsetGuess","setLocale","mixed","_usesLocalWeekValues2","settingWeekStuff","_objToTS4","_ref4$useLocaleWeeks","normalizedUnit","endOf","_this$plus","toLocaleParts","_ref5$format","_ref5$suppressSeconds","_ref5$suppressMillise","_ref5$includeOffset","_ref5$extendedZone","ext","_ref6$format","toISOWeekDate","_ref7$suppressMillise","_ref7$suppressSeconds","_ref7$includeOffset","_ref7$includePrefix","_ref7$extendedZone","_ref7$format","toRFC2822","toHTTP","toSQLDate","toSQLTime","_ref8","_ref8$includeOffset","_ref8$includeZone","includeZone","_ref8$includeOffsetSp","includeOffsetSpace","toSQL","toSeconds","toUnixInteger","toBSON","includeConfig","otherDateTime","durOpts","otherIsLater","diffed","diffNow","until","inputMs","adjustedToZone","toRelative","toRelativeCalendar","fromFormatExplain","_options$locale","_options$numberingSys","fromStringExplain","buildFormatParser","_options2","_options2$locale","_options2$numberingSy","localeToUse","fromFormatParser","formatParser","_opts2","_opts2$locale","_opts2$numberingSyste","_formatParser$explain","dateTimeish","VERSION","Calendar","defaultStyle","openFirstView","currentView","getEnabledViews","calendarView","openViewById","viewId","openView","openDate","getOpenDate","selectedDate","getSelectedDate","detach","setSelectedDate","clearSelectedDate","loadCalendarData","changeView","viewType","licquidMethod_previous","licquidMethod_next","licquidMethod_today","licquidMethod_changeToDayView","licquidMethod_changeToWeekView","licquidMethod_changeToMonthView","licquidMethod_changeToYearView","convert","luxonDate","ui","orig","widgetUuid","widgetHasOwnProperty","widgetSlice","cleanData","elems","elem","widget","existingConstructor","basePrototype","proxiedPrototype","namespace","fullName","Widget","expr","pseudos","_createWidget","_childConstructors","_superApply","returnValue","__super","__superApply","widgetEventPrefix","widgetName","widgetFullName","childPrototype","bridge","inputIndex","inputLength","isPlainObject","isMethodCall","methodValue","pushStack","_init","defaultElement","classes","disabled","uuid","eventNamespace","bindings","hoverable","focusable","classesElementLookup","_on","parentWindow","_getCreateOptions","_create","_setOptionDisabled","_trigger","_getCreateEventData","_destroy","_removeClass","removeData","curOption","_setOptions","_setOption","_setOptionClasses","classKey","currentElements","_classes","_toggleClass","bindRemoveEvent","nodesToBind","processClassString","checkOption","uniqueSort","not","_untrackClassesElement","_off","_addClass","toggleClass","suppressDisabledCheck","delegateElement","handlerProxy","_delay","_hoverable","mouseenter","currentTarget","mouseleave","_focusable","focusin","focusout","isDefaultPrevented","defaultEffect","hasOptions","effectName","easing","cachedScrollbarWidth","rhorizontal","rvertical","roffset","rposition","rpercent","_position","getOffsets","offsets","parseCss","isWindow","scrollbarWidth","w1","w2","div","innerDiv","getScrollInfo","within","isDocument","hasOverflowX","getWithinInfo","withinElement","isElemWindow","of","atOffset","targetWidth","targetHeight","targetOffset","basePosition","raw","scrollInfo","collision","at","horizontalOffset","verticalOffset","collisionPosition","using","elemWidth","elemHeight","collisionWidth","collisionHeight","myOffset","my","dir","feedback","horizontal","vertical","important","fit","newOverRight","withinOffset","collisionPosLeft","overLeft","overRight","newOverBottom","collisionPosTop","overTop","overBottom","flip","newOverLeft","newOverTop","flipfit","createPseudo","dataName","disableSelection","eventType","enableSelection","colors","class2type","rplusequals","stringParsers","re","execResult","space","Color","spaces","propTypes","byte","percent","degrees","mod","getType","clamp","allowEmpty","def","stringParse","_rgba","spaceName","transparent","_default","_spaceName","same","localCache","isCache","_space","used","transition","startColor","startValue","endValue","blend","opaque","toRgbaString","toHslaString","toHexString","includeAlpha","cur","vtype","_hsla","hook","hooks","cssHooks","fx","colorInit","expand","expanded","names","aqua","black","fuchsia","gray","lime","maroon","navy","olive","purple","silver","teal","white","yellow","baseEasings","dataSpace","dataSpaceStyle","dataSpaceAnimated","classAnimationActions","shorthandStyles","borderBottom","borderLeft","borderRight","borderTop","borderWidth","getElementStyles","setAttr","animateClass","speed","applyClassChange","animated","baseClass","allAnimations","el","oldStyle","newStyle","styleDifference","styleInfo","dfd","classNames","switchClass","_normalizeArguments","speeds","standardAnimationOption","parseClip","uiBackCompat","setMode","createWrapper","active","wrap","removeWrapper","replaceWith","scaledDimensions","clipToBox","queueLength","dequeue","saveStyle","restoreStyle","getBaseline","original","createPlaceholder","cssPosition","insertAfter","removePlaceholder","dataKey","cleanUp","setTransition","list","cssUnit","effectMethod","defaultMode","queueName","modes","prefilter","normalizedMode","run","cssClip","clipObj","transfer","targetFixed","fixTop","fixLeft","endPosition","startPosition","clipInit","Sine","Circ","Elastic","Back","Bounce","pow2","bounce","easeIn","up","down","upAnim","downAnim","refValue","times","anims","ref","motion","queuelen","both","oppositeMotion","mx","rows","pieces","cells","childComplete","horizFirst","animation1","animation2","temp","cProps","vProps","hProps","childOriginal","childFrom","childTo","newOptions","fade","showhide","animateTo","positiveMotion","startClip","startRef","hasTabindex","mapName","focusableIfVisible","fieldset","formResetMixin","_formResetHandler","form","refresh","_bindFormResetHandler","_unbindFormResetHandler","escapeSelector","CSS","even","odd","BACKSPACE","COMMA","DELETE","DOWN","END","ENTER","ESCAPE","HOME","LEFT","PAGE_DOWN","PAGE_UP","PERIOD","RIGHT","SPACE","TAB","UP","labels","ancestor","ancestors","parents","siblings","scrollParent","includeHidden","excludeStaticParent","overflowRegex","tabbable","removeUniqueId","collapsible","header","heightStyle","icons","activeHeader","activate","beforeActivate","hideProps","showProps","prevShow","prevHide","_processPanels","_refresh","panel","_createIcons","prependTo","_destroyIcons","contents","_setupEvents","_activate","_keydown","altKey","ctrlKey","toFocus","_eventHandler","_panelKeyDown","prevHeaders","prevPanels","panels","maxHeight","_findActive","headerId","panelId","keydown","activeChildren","clickedChildren","clickedIsActive","collapsing","toShow","toHide","oldHeader","oldPanel","newHeader","newPanel","_toggle","_animate","_toggleComplete","total","adjust","boxSizing","submenu","menus","select","activeMenu","mouseHandled","lastMousePosition","_activateItem","isPropagationStopped","timer","keepActiveItem","_menuItems","collapseAll","_closeOnDocumentClick","previousFilter","actualTarget","submenus","character","skip","previousPage","nextPage","_move","collapse","filterTimer","_filterMenuItems","nextAll","newSubmenus","newItems","newWrappers","menu","submenuCaret","_isDivider","_itemRole","listbox","nested","activeParent","_scrollIntoView","_close","_startOpening","scroll","elementHeight","itemHeight","_hasScroll","fromFocus","_open","currentMenu","startMenu","newItem","isFirstItem","prevAll","isLastItem","escapedCharacter","autoFocus","minLength","change","requestIndex","pending","liveRegionTimer","suppressKeyPress","suppressKeyPressRepeat","suppressInput","isTextarea","isInput","isMultiLine","valueMethod","isNewMenu","_keyEvent","term","_searchTimeout","keypress","searching","_change","_initSource","_appendTo","mousedown","menufocus","liveRegion","menuselect","beforeunload","_isEventTargetInWidget","menuElement","_closeOnClickOutside","array","request","autocomplete","equalValues","menuVisible","modifierKey","metaKey","shiftKey","_search","cancelSearch","_response","__response","_normalize","_suggest","ul","_renderMenu","_resizeMenu","_renderItemData","_renderItem","keyEvent","escapeRegex","matcher","grep","messages","noResults","controlgroupCornerRegex","onlyVisible","button","controlgroupLabel","checkboxradio","selectmenu","spinner","_enhance","_callChildMethod","childWidgets","unwrap","_initWidgets","wrapAll","instanceOptions","_resolveClassesValues","widgetElement","_updateCornerClass","_buildSimpleOptions","only","_spinnerOptions","_buttonOptions","_checkboxradioOptions","_selectmenuOptions","labelContents","_readType","originalLabel","_updateLabel","_updateIcon","_getRadioGroup","nameSelector","_toggleClasses","iconSpace","toAdd","isDisabled","iconPosition","showLabel","hasTitle","keyup","_updateTooltip","displayBlock","_attachIcon","_attachIconSpace","newShowLabel","newIcon","primary","secondary","buttonset","controlgroup","datepicker_instActive","Datepicker","_curInst","_disabledInputs","_datepickerShowing","_inDialog","_mainDivId","_inlineClass","_appendClass","_triggerClass","_dialogClass","_disableClass","_unselectableClass","_currentClass","_dayOverClass","regional","closeText","prevText","nextText","currentText","monthNames","monthNamesShort","dayNames","dayNamesShort","dayNamesMin","weekHeader","isRTL","showMonthAfterYear","yearSuffix","selectMonthLabel","selectYearLabel","_defaults","showOn","showAnim","showOptions","defaultDate","appendText","buttonText","buttonImage","buttonImageOnly","hideIfNoPrevNext","navigationAsDateFormat","gotoCurrent","changeMonth","changeYear","yearRange","showOtherMonths","selectOtherMonths","showWeek","calculateWeek","iso8601Week","shortYearCutoff","minDate","maxDate","beforeShowDay","beforeShow","onSelect","onChangeMonthYear","onClose","onUpdateDatepicker","numberOfMonths","showCurrentAtPos","stepMonths","stepBigMonths","altField","altFormat","constrainInput","showButtonPanel","autoSize","en","dpDiv","datepicker_bindHover","datepicker_handleMouseover","datepicker","_isDisabledDatepicker","inline","datepicker_extendRemove","markerClassName","maxRows","_widgetDatepicker","setDefaults","_attachDatepicker","_newInst","_connectDatepicker","_inlineDatepicker","selectedDay","selectedMonth","selectedYear","drawMonth","drawYear","_attachments","_doKeyDown","_doKeyPress","_doKeyUp","_autoSize","_disableDatepicker","_get","_showDatepicker","alt","_lastInput","_hideDatepicker","findMax","maxI","setMonth","getDay","_formatDate","divSpan","_setDate","_getDefaultDate","_updateDatepicker","_updateAlternate","_dialogDatepicker","browserWidth","browserHeight","_dialogInst","_dialogInput","_pos","blockUI","_destroyDatepicker","_enableDatepicker","_getInst","_optionDatepicker","_getDateDatepicker","_getMinMaxDate","_changeDatepicker","_refreshDatepicker","_setDateDatepicker","noDefault","_setDateFromField","_getDate","dateStr","sel","_selectDay","_adjustDate","_clearDate","_gotoToday","chr","_possibleChars","charCode","lastVal","parseDate","_getFormatConfig","beforeShowSettings","isFixed","_findPos","_checkOffset","datepicker_getZindex","_shouldFocusInput","_generateHTML","_attachHandlers","origyearshtml","numMonths","_getNumberOfMonths","cols","activeCell","yearshtml","dpWidth","dpHeight","inputWidth","inputHeight","viewWidth","viewHeight","postProcess","_tidyDialog","unblockUI","_checkExternalClick","period","_adjustInstDate","currentDay","currentMonth","currentYear","getMonth","getFullYear","_notifyChange","_selectMonthYear","td","_selectDate","formatDate","noWeekends","checkDate","iFormat","dim","iValue","shortYearCutoffTemp","doy","lookAhead","getNumber","isDoubled","getName","shortNames","longNames","checkLiteral","_ticksTo1970","_getDaysInMonth","_daylightSavingAdjust","ATOM","COOKIE","ISO_8601","RFC_822","RFC_850","RFC_1036","RFC_1123","RFC_2822","RSS","TICKS","TIMESTAMP","W3C","formatNumber","formatName","output","dates","_restrictMinMax","_determineDate","newDate","offsetString","offsetNumeric","setHours","setMinutes","setSeconds","setMilliseconds","getHours","noChange","origMonth","origYear","today","selectDay","selectMonth","selectYear","maxDraw","gotoDate","buttonPanel","dow","group","col","cornerClass","calender","thead","leadDays","curRows","numRows","printDate","dRow","tbody","daySettings","otherMonth","unselectable","tempDate","isMultiMonth","currentDate","_canAdjustMonth","class","outerHTML","_isInRange","_generateMonthYearHeader","_getFirstDayOfMonth","inMinYear","inMaxYear","thisYear","determineYear","endYear","monthHtml","onChange","minMax","curYear","curMonth","yearSplit","minYear","maxYear","initialized","otherArgs","_mouseInit","_mouseDown","stopImmediatePropagation","_mouseDestroy","_mouseMoveDelegate","_mouseUpDelegate","_mouseMoved","_mouseStarted","_mouseUp","_mouseDownEvent","btnIsLeft","elIsCancel","_mouseCapture","mouseDelayMet","_mouseDelayTimer","_mouseDistanceMet","_mouseDelayMet","_mouseStart","_mouseMove","ignoreMissingWhich","_mouseDrag","_mouseStop","plugin","plugins","allowDisconnected","mouse","addClasses","axis","connectToSortable","containment","cursorAt","grid","handle","helper","iframeFix","refreshPositions","revert","revertDuration","scrollSensitivity","scrollSpeed","snap","snapMode","snapTolerance","_setPositionRelative","_setHandleClassName","_removeHandleClassName","destroyOnClear","_getHandle","_blurActiveElement","_blockFrames","iframeBlocks","_unblockFrames","_createHelper","_cacheHelperProportions","ddmanager","_cacheMargins","offsetParent","hasFixedAncestor","positionAbs","_refreshOffsets","originalPosition","_generatePosition","originalPageX","originalPageY","_adjustOffsetFromHelper","_setContainment","_clear","dropBehaviour","prepareOffsets","dragStart","margins","_getParentOffset","_getRelativeOffset","noPropagation","_convertPositionTo","_uiHash","dropped","dragStop","handleElement","helperIsFunction","helperProportions","_isRootNode","po","scrollIsRootNode","isUserScrollable","ce","relativeContainer","constrainPosition","co","cancelHelperRemoval","draggable","uiSortable","sortables","sortable","isOver","_storedCSS","_helper","innermostIntersecting","_intersectsWith","containerCache","_parent","currentItem","fromOutside","_revert","_cursor","_opacity","scrollParentNotHidden","overflowOffset","scrolled","snapElements","$t","$o","bs","ls","rs","x2","y2","snapping","release","snapItem","_zIndex","alsoResize","animateDuration","animateEasing","aspectRatio","autoHide","ghost","handles","maxWidth","_num","_isNumber","_aspectRatio","originalElement","_proportionallyResizeElements","resizable","elementIsWrapper","originalResizeStyle","zoom","_proportionallyResize","_setupHandles","_handles","resizing","_addedHandles","_removeHandles","hname","se","sw","ne","nw","_renderAxis","padPos","padWrapper","capture","curleft","curtop","calculatedSize","_renderProxy","_calculateAdjustedElementDimensions","originalSize","sizeDiff","originalMousePosition","_propagate","smp","dx","dy","_updatePrevProperties","_updateVirtualBoundaries","_updateRatio","_respectSize","_updateCache","_applyChanges","pr","ista","soffseth","soffsetw","prevPosition","prevSize","forceAspectRatio","pMinWidth","pMaxWidth","pMinHeight","pMaxHeight","_vBoundaries","cpos","csize","ismaxw","ismaxh","isminw","isminh","dw","dh","ch","_getPaddingPlusBorderDimensions","widths","paddings","elWidth","elHeight","paddingBorder","_getElementTheoreticalSize","extraSize","dimension","prel","outerDimensions","elementOffset","cs","oc","containerElement","containerOffset","containerPosition","parentData","containerSize","woset","hoset","isParent","isOffsetRelative","cp","pRatio","cop","continueResize","ho","elSize","os","gridX","gridY","newWidth","newHeight","isMaxWidth","isMaxHeight","isMinWidth","isMinHeight","autoOpen","buttons","closeOnEscape","modal","topOffset","uiDialogTitleHeadingLevel","beforeClose","resizeStart","resizeStop","sizeRelatedOptions","resizableRelatedOptions","originalCss","originalTitle","_createWrapper","uiDialog","_createTitlebar","_createButtonPane","_makeDraggable","_makeResizable","_isOpen","_trackFocus","_untrackInstance","_destroyOverlay","_focusedElement","opener","_hide","isOpen","moveToTop","_moveToTop","silent","moved","zIndices","zIndexMax","_focusTabbable","_size","_createOverlay","overlay","_show","_makeFocusTarget","hasFocus","uiDialogButtonPane","uiDialogTitlebarClose","_restoreTabbableFocus","_keepFocus","tabbables","uiDialogTitle","uiDialogTitlebar","uiDialogHeadingLevel","_title","uiButtonSet","_createButtons","buttonOptions","filteredUi","resizeHandles","_minHeight","_trackingInstances","exists","resizableOptions","isDraggable","isResizable","nonContentHeight","minContentHeight","maxContentHeight","_allowInteraction","isOpening","overlays","dialog","dialogClass","accept","greedy","tolerance","deactivate","out","proportions","isover","isout","_addToManager","droppables","_splice","_addActiveClass","_deactivate","_removeActiveClass","_over","_addHoverClass","_out","_removeHoverClass","_drop","custom","childrenIntersection","droppable","intersect","isOverAxis","reference","toleranceMode","absolute","default","droppablesLoop","visible","parentsUntil","greedyChild","parentInstance","intersects","hoverClass","activeClass","oldValue","_constrainedValue","valueDiv","_refreshValue","newValue","indeterminate","_percentage","percentage","overlayDiv","autoRefresh","selecting","unselected","unselecting","dragged","elementPos","selectees","selecteeOffset","startselected","opos","selectee","doSelect","hit","selectmenuId","ids","_drawButton","_drawMenu","_rendered","menuItems","_parseOption","tabindex","buttonItem","_renderButtonItem","_resizeButton","_buttonEvents","_refreshMenu","menuWrap","menuInstance","_select","focusIndex","_getSelectedItem","_parseOptions","_setAria","_toggleAttr","_documentClick","menuWidget","_setText","currentOptgroup","li","optgroup","_setSelection","selection","getSelection","removeAllRanges","addRange","rangeCount","getRangeAt","_selectFocusedItem","oldIndex","numPages","_keySliding","_mouseSliding","_animateOff","_handleIndex","_detectOrientation","_calculateNewMax","_createRange","_createHandles","handleCount","existingHandles","_valueMin","_handleEvents","normValue","closestHandle","mouseOverHandle","elementSize","_normValueFromMouse","_valueMax","thisDistance","_lastChangedValue","_start","_clickOffset","_slide","_stop","pixelTotal","pixelMouse","percentMouse","valueTotal","valueMouse","_trimAlignValue","uiHash","handleIndex","_hasMultipleValues","newVal","otherVal","currentValue","newValues","_values","valsLength","_refreshRange","valModStep","alignValue","_precision","_precisionOf","lastValPercent","valPercent","valueMin","valueMax","oRange","_set","curVal","connectWith","dropOnEmpty","forcePlaceholderSize","forceHelperSize","beforeStop","_isOverAxis","_isFloating","overrideHandle","validHandle","reverting","_refreshItems","_removeCurrentsFromItems","noActivation","currentContainer","domPosition","_createPlaceholder","_storedStylesheet","_storedZIndex","_storedOpacity","_preserveHelperProportions","containers","lastPositionAbs","_scroll","itemElement","_refreshItemPositions","dragDirection","_getDragVerticalDirection","_getDragHorizontalDirection","_intersectsWithPointer","_intersectsWithSides","_rearrange","_contactContainers","_noFinalSort","serialize","_getItemsAsjQuery","attribute","expression","toArray","dyClick","dxClick","isOverElementHeight","isOverElementWidth","isOverElement","forcePointerForContainers","floating","verticalDirection","horizontalDirection","isOverBottomHalf","isOverRightHalf","_connectWith","addItems","_queries","queriesLength","fast","toleranceElement","refreshContainers","_createTrPlaceholder","sourceTr","targetTr","dist","itemWithLeastDistance","posProperty","sizeProperty","nearBottom","innermostContainer","innermostIndex","hardRefresh","delayedTriggers","delayEvent","_inst","sender","spinnerModifier","culture","incremental","numberFormat","spin","_draw","_events","mousewheel","spinning","_spin","mousewheelTimer","_repeat","uiSpinner","steps","_adjustValue","_increment","aboveMin","prevValue","_parse","_format","Globalize","allowAny","stepUp","_stepUp","stepDown","_stepDown","pageUp","pages","pageDown","_uiSpinnerHtml","_buttonHtml","rhash","beforeLoad","_isLocal","anchorUrl","locationUrl","decodeURIComponent","running","_processTabs","_initialActive","tabs","anchors","locationHashDecoded","tab","_getPanelForTab","_tabKeydown","focusedTab","goingForward","_handlePageNav","activating","_focusNextTab","_panelKeydown","_findNextTab","lastTabIndex","_setupHeightStyle","lis","tablist","prevTabs","prevAnchors","_getList","anchorId","originalAriaControls","_createPanel","oldTab","newTab","_getIndex","jqXHR","_ajaxSettings","beforeSend","ajaxSettings","track","_addDescribedBy","describedby","_removeDescribedBy","mouseover","tooltips","disabledTitles","_updateContent","_disable","_enable","blurEvent","_registerCloseHandlers","contentOption","delayedShow","a11yContent","positionOption","_find","_tooltip","mousemove","fakeEvent","targetElement","_removeTooltip","closing","hiding","tooltipClass","calendarParameter","minutesInAday","calendarItemsCollide","otherItem","endOfItem","startOfItem","getNumberOfAvailableColumns","columns","columnIndexOfItem","availableColumns","column","layoutGroupOfCalendarItems","layoutOverlappingCalendarItems","lastEncounteredItem","firstItem","secondItem","sortCalendarItems","startNewGroupOfCalendarItems","tryAddingItemToExistingColumn","makeResizableAndDraggable","onlyDraggable","isMultiweek","timeslotSize","timeslotHeight","getTimeslotHeight","snapInterval","resizeSnapInterval","snapHeight","weekdayWidth","itemWidth","elementPadding","elementBorder","setOtherItemsOpacity","getGroup","groupMembers","leftOffset","prevState","calendarItemGroups","idOutput","onStop","snapDropTopAndHeight","earlyDrop","lateDrop","earlyTimeDate","getItemTimeData1","lateTimeData","origStatMomnet","getDatetimeFromRow","startOutput","origEndMomnet","endOutput","prveEarlyTimeDate","prveLateTimeData","startDateObj","endDateObj","currentDateMoment","currentDateMomente","getCurrentPositionDateMoment","startTime","startMoment","endTime","endMoment","getStartOfCurrentWeek","updateParams","newStart","newEnd","checkForOverLapping","actDrop","pos3","sameDayDrops","startOfDay","sameDayDrop","doItemsOverlap","$item1","topHeight","pos1","pos2","checkForOutOfWeek","dropic","isStartOut","isEndOut","getEndOfCurrentWeek","getRoundedToWeekdayLeft","savePosition","allowItemOverlap","uiTop","uiHeight","gMembers","getRoundedHeight","overLappings","hasOverlap","outOfWeek","overLapping","uiLeft","itemLeft","dropp","flag","dayOffset","currentDateObj","getRoundedTop","calendarItemDrop","getRoundedHeight1","dayStart","getRoundedTop1","toRound","isNegative","rounded","viewClassSelector","getMouseEventMinutes","isMove","timeslotIndex","yTot","creationInterval","fillUp","itemsData","handleItemSelection","fork","startOfCurrentWeek","endOfCurrentWeek","currentWeekInterval","startIsBetween","endIsBetween","timeslotMousedown","$weekday","enableDragAndResize","onCreate","dragStartMinutes","endOfDay","dayEnd","tooltipOutput","dropArr","itemCreation","inProgress","isCreatable","timeslotMouseup","createParams","timeslotMousemove","dragMinutes","savedStart","savedEnd","overlapp","currentStart","currentEnd","currentInterval","isStartBetweenOrSame","isEndBetweenOrSame","NestingContext","nestedDataSources","addDataSource","executeDataSources","getDatasourceListenersThatListenFor","__t","__p","__j","print","globalize","calendarItems","dataSourceType","dateOutput","calendarStartParameter","calendarEndParameter","titleFormat","timeslotHourFormat","CalendarDayView","goToDefaultPosition","bindScrollPositionParameter","defaultScrollPosition","slotNumber","$slot","$hours","$container","scrollPositionParameter","binding","subscribeForUpdates","goToScrollToPosition","scrollPosition","dateOfRequestedData","showItems","activeTSDataSource","setActiveTimeslots","registerForDataSource","prepareUi","createTimeslots","$title","$timeslots","timeslots","startMinute","$timeslot","determineEventArg","timeslotClicked","dateAndTime","removeCalendarItems","triggerNavigatedEvent","updateTitle","showErrorDialog","$activeTimeslots","activeTSStart","activeTSStartOutput","activeTSEnd","activeTSEndOutput","$filteredTimeslots","getTimeOfDay","getMinutes","CalendarItem","applyDataToChild","lengthOfDay","addEventSource","onceHandler","eventNameOrNames","showWeekdayHeaders","weekdayHeadersFormat","DaysOfMonthCalendar","$days","$weekdayHeaders","updateWeekdayHeaders","toggleWeekdayHeaders","$weekdayHeader","triggerNavigated","rerender","buildDays","renderDaysInRowsOfSeven","createDay","$day","isWeekend","hasClickedListeners","isSelectedDate","triggerClicked","otherDate","pluck","decorateDate","fontColor","isUnavailable","visibleDay","colorOutput","fontColorOutput","isUnavailableOutput","CalendarMonthView","showColors","withOnNavigated","startOfCurrentMonth","endOfCurrentMonth","withOnClicked","WindowSize","lastWidth","lastHeight","triggerChanged","dayHeaderFormat","hideTitleEndDate","CalendarWeekView","createWeekdayHeaders","createWeekdayColumns","$columns","$headers","$weekdays","$backPage","$nextPage","Changed","updateHeadersWidth","updateHeadersLeftMargin","timeslot","monday","sunday","weekDayTitle","dayDifference","startOfItemInCurrentDay","endOfItemInCurrentDay","monthTitleFormat","CalendarYearView","getCalendarForDate","calendarIndex","calendars","setup","$calendars","getStartOfCurrentYear","calendarDate","getEndOfCurrentYear","BucketDrop","definition","requirejs","contexts","urlArgs","bucketInfo","files","stylesheets","stylesheet","loadedCount","scripts","file","script","bucketsBaseUrl","configuration","uploads","callMethodOnBucket","bucketId","Captcha","setACaptcha","createCaptchaUrl","refreshCaptcha","showPager","showControls","Carousel","slideChanged","sliderActive","onChangeFunctions","$shadowWrapper","$sliderUl","renderDropShadow","hasDrop","dropSize","dropBlur","initSlider","hasPanels","onSlideHandler","currentElement","currentPosition","comingPosition","setInitialIndex","disableTabbing","enableTabbing","slider","bxSlider","hideControlOnEnd","touchEnabled","oneToOneTouch","pager","swipeThreshold","startSlide","getInitialIndex","onSlideBefore","enableAutoTransition","pause","autoTransitionPause","infiniteLoop","onSlideNext","onSlidePrev","onSlideAfter","setBorderAndBGStyle","bg","widthCorrectionAmount","actualWidth","correction","goToSlide","slideNr","getCurrentSlide","func","offChange","without","getInitialIndexParameters","useLocalParameter","performAction","goToNextSlide","goToPrevSlide","canPerformAction","getSlideCount","destroySlider","CarouselControl","onChangeListener","updateVisibility","setupControlImages","normalImage","setImage","hoverImage","overrides","CarouselPanel","applyColor","CarouselTabControl","tabStyles","onChangeFunc","getCarousel","carousel","getTabData","renderTabs","tabstyle","tabData","$tab","tabX","tabY","wordWrap","selectedTab","hover","store","hasOwn","styleSheetCache","requireCss","loadCss","toUrl","cssUtil","d3","showGridX","showGridY","showTooltip","showLegend","showDataLabels","labelType","legendPosition","showXAxis","axisXType","axisXLabel","axisXLabelPosition","showYAxis","axisYLabel","axisYLabelPosition","showY2Axis","axisY2Label","axisY2LabelPosition","emptyText","removeAxisPadding","enableZoom","zoomType","zoomBoundaries","axisXLimit","enableSubchart","subchartHeight","subchartHide","scrollbarColor","Chart","$chart","decorateDataSourceData","lazyLoadedD3","lazyLoadedC3","getStepType","stepType","getTickSettings","precisionSetting","seriesSettings","series","outputType","chart","dynamicPie","labelOutput","copy","seriesWithColorSetting","serie","hasCustomColor","barSeriesWithStack","chartSettings","bindto","axes","legend","tick","axisXLimitMin","axisXLimitMax","axisXLabelHeight","pie","ratio","subchart","onclick","chartSerie","axisYMax","axisYMin","xDataSeries","generate","xs","xArr","zoomBoundaryMin","zoomBoundaryMax","defaultMin","defaultMax","defaultFontSettingsMain","defaultFontSettingsSecondary","defaultPadding","chartPadding","axisXColor","axisXWidth","showXAxisLabel","axisXLabelFont","axisXLabelAlignment","axisXLabelPadding","showXAxisTicks","axisXTickColor","axisXTickWidth","axisXTickLength","axisXDashedTick","axisXDashedTickLength","axisXDashedTickSpacing","showXAxisTickLabels","axisXTickLabelAlignment","axisXTickLabelFont","axisXTickLabelPadding","axisXTickLabelMirror","axisXLabelAutoSkip","axisXLabelAutoSkipPadding","axisXLabelMinRotation","axisXLabelMaxRotation","axisYColor","axisYWidth","showYAxisLabel","axisYLabelFont","axisYLabelAlignment","axisYLabelPadding","showYAxisTicks","axisYTickColor","axisYTickWidth","axisYTickLength","axisYDashedTick","axisYDashedTickLength","axisYDashedTickSpacing","showYAxisTickLabels","axisYTickLabelAlignment","axisYTickLabelFont","axisYTickLabelPadding","axisYTickLabelMirror","axisYLabelAutoSkip","axisYLabelAutoSkipPadding","axisYLabelMinRotation","axisYLabelMaxRotation","axisY2Color","axisY2Width","showY2AxisLabel","axisY2LabelFont","axisY2LabelAlignment","axisY2LabelPadding","showY2AxisTicks","axisY2TickColor","axisY2TickWidth","axisY2TickLength","axisY2DashedTick","axisY2DashedTickLength","axisY2DashedTickSpacing","showY2AxisTickLabels","axisY2TickLabelAlignment","axisY2TickLabelFont","axisY2TickLabelPadding","axisY2TickLabelMirror","axisY2LabelAutoSkip","axisY2LabelAutoSkipPadding","axisY2LabelMinRotation","axisY2LabelMaxRotation","showXGrid","gridXColor","gridXLineWidth","gridXDashedLine","gridXDashedLineLength","gridXDashedLineSpacing","showYGrid","gridYColor","gridYLineWidth","gridYDashedLine","gridYDashedLineLength","gridYDashedLineSpacing","showTitle","titleText","titleFont","titleFullSize","titlePosition","titleAlignment","titlePadding","tooltipInteractionMode","tooltipInteractionIntersect","tooltipInteractionAxis","tooltipInteractionIncludeInvisible","tooltipPosition","tooltipPadding","tooltipBoxPadding","tooltipCaretPadding","tooltipCaretSize","tooltipBorderWidth","tooltipBorderColor","tooltipRoundedCorners","tooltipBackgroundColor","showTooltipTitle","tooltipTitleFont","tooltipTitleAlignment","tooltipTitleSpacing","tooltipTitleMarginBottom","showTooltipBody","tooltipBodyFont","tooltipBodyLabelType","tooltipBodyAlignment","tooltipBodySpacing","tooltipUsePointStyle","tooltipShowColorBoxes","legendAlignment","legendMaxWidth","legendMaxHeight","legendDisableClick","legendLabelFont","legendItemShowBorder","legendItemBorderColor","legendItemBorderWidth","legendItemBorderRadius","legendItemBorderPadding","legendLabelBoxWitdh","legendLabelBoxHeight","legendLabelAlignment","legendLabelPadding","legendLabelUsePointStyle","legendLabelBoxRoundedCorners","showLegendTitle","legendTitleText","legendTitleFont","legendTitlePadding","legendHideNullSeries","enableZoomWheel","zoomWheelSpeed","zoomWheelModifierKey","enableZoomDrag","zoomDragBacgroundColor","showScrollbar","scrollbarHeight","scrollbarRoundedCorners","enableZoomPinch","zoomMode","zoomScaleMode","enablePanning","panningMode","panningModifierKey","showDatalabels","datalabelFont","datalabelHideZero","datalabelMinPercentageThreshold","datalabelAnchor","datalabelAlignment","datalabelOffset","datalabelClamp","getServerTicks","createScript","scriptUrl","vendorLoaded","bundleName","includeCss","linkUrl","createLink","designDefaults","FrontendModules","ChartComponent","setChart","dataSourceResult","setData","ChartRendered","Circle","styleTheCircle","setColors","borderRadius","colorRanges","CircleShape","availableSize","Clock","$timeField","dateTimeString","minicolors","removeProp","fadeIn","showSpeed","hideSpeed","wx","wy","phi","picker","animationSpeed","animationEasing","updateFromControl","getCoords","brightness","swatch","opacitySlider","gridPicker","sliderPicker","opacityPicker","gridPos","sliderPos","opacityPos","control","keepWithin","hsb2hex","updateInput","doChange","isRgb","parseRgb","hex2rgb","parseHex","rgbString2hex","convertCase","letterCase","updateFromInput","preserveInputValue","hsb","keywords","getAlpha","parseInput","rgb2hsb","hex2hsb","lastChange","swatches","changeDelay","rgb2hex","nr","t3","hsb2rgb","theme","rgbObject","rgbString","swatchString","delegateTarget","swatchOpacity","miniColors","ColorPicker","$colorPicker","createData","colorChanged","updatePosition","THRESHOLD","newPosition","parentPos","Custom","$customStyledElement","hasHighPixelRatio","forElement","htmlElementSize","imageSize","imageTypes","getPath","imageName","isFullUrl","useThumbnail","resizeOption","thumbnailFileType","extension","lastIndexOf","extractExtension","isSvg","isImageExtension","requiredSize","dynamicContentImage","showNavigationAtTop","showNavigationAtBottom","headerHeight","rowHeight","headerEnabled","defaultSortOutput","defaultSortDirection","setBackgroundImage","$el","physicalFile","horizontalAlignmentToFlex","inherit","center","DataGrid","$tableHeaders","$tableRows","$headerWrapper","updateHeaderStyle","$contentWrapper","loadNextPageIfNeeded","$footerWrapper","currentScrollPosition","loadedAllData","loadedPages","previousData","conditionalStartStates","footerData","sortParameters","clicksCounter","descending","updateStyle","initializing","keepScrollPositionOnQueryReload","storeScollPosition","selectedRows","triggerPageOpened","decorateDataSourceDataForFirstPage","footerDataSource","getFooterRow","setUpHeaderTooltips","formatters","headersWithTooltips","$h","headerVisible","headerText","headerTooltip","loadNextPage","loadDataForPage","updateColumnWidths","calculateColumnWidths","columnSizeType","columnSizeInPixels","columnSizeInPercentage","forceHeaderRender","prepareGrid","renderHeadersAndRows","postDataGridRender","footerEnabled","updateItems","$headerRow","columnIndex","getHTMLHeaderElementByType","disabledColumnSorting","sortByColumn","padL","headerIconPadding","padT","padR","padB","isHeaderIconEnabled","headerIconFile","headerIconWidth","headerIconHeight","restoreScrollPosition","updateSelectedRow","selectedRowValue","$tbody","createRow","allRows","offsetIndexCurrentRows","currentRow","currentRowIndex","$currentRow","actualIndex","$cell","getHTMLRowElementByType","textAlignment","dataGrouping","backgroundColorArg","dblClickTimer","handleSingleClick","handleDoubleClick","rowCssStyle","showRowAsSelected","showRowAsDeselected","isSelected","resetRowSelection","tr","getIndexOfRowWithId","rowId","selectedRowId","rowValues","rowIndex","rowData","imageVisibility","physicalFileHoverSelected","customStyleName","getPaddingFormat","dispatchQuery","$th","textAlignmentHeader","columnSize","showSortingInHeader","$sorting","$headerTitle","applyCustomPaddingForHeader","customPaddingForHeader","$table","$footerHeaders","textAlignmentFooter","applyCustomPaddingForFooter","customPaddingForFooter","dataOfRow","isFooter","$td","textTrimStyle","textOverflow","hasEventOnColumn","hasEventOnDataGrid","customPadding","queryVisible","columnType","footerType","inputType","footerStaticValue","$textElement","applyColumnStyleToElement","footerDynamicValue","colType","removeMarginAndPadding","textSuffix","create$image","addImageToContent","imageWidth","imageHeight","truePhysicalFile","falsePhysicalFile","toggleConditionalState","horizontalAlign","selectedResizeOption","imageRoundness","textBold","textUnderline","textItalic","$div","enableConditionalState","conditionalState","usingScrollBar","tableWidth","pixelWidth","leftOverPercentage","totalWeight","openPage","pageNumber","resetList","zebraDatepicker","timepicker","formatTypes","DateInputCustom","inputFocusLostTimeout","$dateInput","onDateInputBlur","cancelFocusLost","setCurrentDateIfNeeded","showTimePicker","$timeInput","$dateIcon","$timeButton","dateOnlyPhpFormat","filterAndConvertDateTimeFormat","timeOnlyPhpFormat","Time","showDatePicker","attachDatePicker","attachTimePicker","hasLightBox","createLightBoxOverlay","datePatternToPhpMap","yy","yyyy","MM","MMM","MMMM","dd","ddd","dddd","timePatternToPhpMap","hh","HH","mm","ss","zzz","dateTimeFormat","formatTypeToFilter","lastKnownType","currentMap","sameCharGroup","currentType","attachDateButton","showAtFixedLocation","Zebra_DatePicker","days_abbr","namesAbbr","months_abbr","show_icon","readonly_element","zero_pad","show_select_today","todayLabel","show_clear_date","showClearButton","lang_clear_date","clearLabel","dateFormatted","dateStandard","dateObj","defaultDay","defaultMonth","defaultMonthSource","monthParameter","defaultDaySource","dayParameter","getYear","minMaxFlag","minDateFormatted","maxDateFormatted","valueChanged","dateChanged","licquidDate","getCurrentDateAsLicquidDate","dateUpdated","onClear","onOpen","$lightBoxOverlay","currentDimensions","currentBodyHeight","currentDimensionsNumbers","bodyHeight","newBodyHeight","newMargin","styleSplit","zebra","popupStyleId","setCurrentDateAndShowDatePicker","attachTimeButton","timeFormat","timeInputStep","useSelect","noneOption","newTime","changeTimePickerIcon","changeDatePickerIcon","newDateFormatted","looseDateFormat","setFullYear","updateDate","focusLost","afterDateUpdatedSuccesfully","getDatePickerImagePath","physicalFileDatePicker","useCustomIconDatePicker","cdnPath","getTimePickerImagePath","physicalFileTimePicker","useCustomIconTimePicker","imagePath","setImageDatePicker","setImageTimePicker","dateParameterWhenOpening","licquidDateFromParameter","dateObject","parseLicquidDate","current_date","lightBoxColor","lightBoxOpacity","DateInputNative","localTimeAsString","toISOString","DateInput","minMaxDateFormat","shouldShowCustomInput","dateInputBehaviour","date1","date2","timeChanged","getSeconds","newDateWithoutTime","hasTimeChange","hasDateChange","formatLicquidDate","hadDate","setPlaceholder","DocumentView","$a","$span","iconSize","downloadText","$spanDownloadText","showIcon","filename","Filename","openInBrowser","cancelBubble","showEmptyItem","Dropdown","loaded","valueIsNumber","$dropDown","defaultOption","requiredInitialState","_update","renderMockData","createEmptyItem","emptyItemText","mockData","selectedKeyColumn","$option","getDisplayStringFromResult","selectFirstItem","getNameOfDisplayedColumn","selectedColumnToShow","firstOption","alert","fileDroppedEvent","DropField","preventDefaultEventHandlers","addDropEventHandler","dataTransfer","DynamicBarcode","getImageUrl","barcodeType","eventsToCatch","DynamicIframe","$iframe","getAllowedFeatures","allowCamera","allowMicrophone","eventObj","triggerEventForChild","postMessage","horizontalImageAlignment","verticalImageAlignment","notOptimise","optimisationLevel","DynamicImage","hideWhenNecessary","onResizeOptions","horizontalAlignmentOptions","verticalAlignmentOptions","thumbnailFileTypes","setImageScaling","hideWhenEmpty","updateImage","srcPath","getPathFromSrcString","documentPath","movements","DynamicSlideshow","inTransition","transitionsQueue","deferredUpdate","$imageWrapper","_addPanels","startAutoSlide","autoTransition","cancelAutoSlide","autoTransitionTimer","_next","transitionDelay","previousResults","keyOfCurrentImage","selectedKeyField","getIndexOfRowWithKey","_setImage","_previous","previousIndex","withEvent","movement","selectedDocumentField","$previous","getHideAnimation","getShowAnimation","runNextInQueue","displayed","nextShowAnimation","previousShowAnimation","nextHideAnimation","previousHideAnimation","getLeftImage","leftButtonImage","getRightImage","rightButtonImage","$leftArrow","$centerclick","$rightArrow","DomainDefinitions","entityDefinitions","indexDefinitions","getDocumentEntityNames","getDocumentEntityDefinitions","entity","entityType","richTextStringPrefix","isRichTextString","modelToRichTextString","richTextModel","modelFromRichTextString","richTextString","RichTextEditorSection","richTextEditor","createRichTextEditorSection","$viewer","createViewer","openEditor","$editor","$toolbar","buildToolbar","$textAreaDiv","$textArea","simpleRichTextEditor","buildStylesBar","buildSectionOperationsBar","editor","wysihtml5","Editor","toolbar","parserRules","wysihtml5ParserRules","observe","composer","wysihtml5_size_matters","updateViewerFromEditor","triggerFocusLost","$styleDiv","$styleSelect","genericStyles","removeSection","$sectionOperations","addSectionBefore","moveSectionUp","reopenEditor","moveSectionDown","addSectionAfter","placeHolder","closeEditor","toModel","RichTextEditor","parentElement","sections","$richTextEditor","defaultSection","$richTextEditorBottomActions","$richTextEditorLeftActions","newSection","clickedSection","nonSelectedSections","clearSections","fromModel","sectionModel","richText","trimTextWithEllipsis","trimTextWithEllipsisMaxNumberOfLines","DynamicText","showMockData","getMockTextToShow","updateMockData","showPlainText","containImages","$label","rerenderLabel","renderAsHtml","$htmlWrapper","stripHtml","hidePlainText","showRichText","hideRichText","createLabelElement","labelForDropId","trimTextWithEllipsisBasedOnLineCount","$labelWrapper","$innerLabelWrapper","$overflowWrapper","rerenderDynamicText","supportedTypes","datasetup","VideoPlayer","player","videoLoaded","videoType","getVideoType","$source","$video","poster","autoPlay","loop","techOrder","preload","autoplay","sources","showAsError","play","onEnded","hasVideo","DynamicVideo","openVideoPlayer","embedCode","Embed","FilterInstance","hasInitialValue","currentPopup","applyFilterToTarget","modalPopup","executeFilterChanges","applySettingsFromPopup","hideSettingsPopup","triggerSettingsApplied","isImmediate","popup","closeCurrentPopup","showSettingsPopup","$nextTo","doReverseMappingToShowFilterValuesForCurrentTarget","filterPosition","poolPosition","triggerEditingSettings","mappings","mapping","sourceName","targetParameter","filterParameterValue","sourceDrop","triggerEventForTargetIfEnabled","executeQuery","resetFilter","filterParameterResetValue","skipQueryExecution","triggerRemoved","EntityFilter","targetsCached","targetOptions","getOptionsForTarget","removeAppliedFilters","removeAppliedFilter","getMyActiveFiltersForTarget","activeFilter","activeFilterInstances","getActiveFiltersForTarget","removeConflictingFiltersFromTarget","createInstance","addAsActiveFilterToTarget","conflictingFilterInstances","filterInstance","newFilters","withOnceRemoved","removeAsActiveFilterFromTarget","triggerFilterAdded","activeFilters","filtersWithoutSelf","getEventDataForTarget","EntityFiltersPanelItem","editingSettings","showAsPopupOpen","settingsApplied","showAsPopupApplied","withOnEditingSettings","withOnSettingsApplied","$remove","removeClicked","slideUp","withoutOnEditingSettings","withoutOnSettingsApplied","EntityFiltersPanel","$panel","withOnFilterAdded","addEntityFilter","removeEntityFilter","itemStyles","ErrorHandling","showMessage","busyIndicator","forceHide","hasScrollbars","Frame","$frameContainer","switchBeetweenAnchorModes","addAnchorContainer","sH","sW","removeAnchorContainer","renderScrollbars","frameSizesCalculationHelper","hasVerticalScrollbar","hasHorizontalScrollbar","calcObject","indicatorPosition","indicatorOrigin","indicatorScale","rotation","$background","$indicator","hideIndicator","indicatorImage","setIndicatorImage","setupWindowResizeScaling","updateIndicator","getPositionOfIndicator","positionIndicator","showIndicator","xFactor","getXScalingFactor","yFactor","getYScalingFactor","scaleX","scaleY","uuidv4","crypto","getRandomValues","msCrypto","rng","RuntimeDispatcher","actionVersion","masterPageVersion","csrfToken","doNotHandleUnauthorized","dispatchToAbsoluteUrl","absoluteUrl","doDispatch","jqxhr","reload","successFunc","errorFunc","LicquidActionVersion","LicquidMasterPageVersion","getMessageFromResponse","ignore","refreshCsrfToken","RuntimeBusyIndicator","imageHTML","showCount","overlayCSS","$description","setOpacity","unblock","showHtml","showElement","removeElement","showWithCount","timeInMilliSec","overlayCss","baseZ","showOverlay","selectedlocationOption","mapStyle","draggableMarkers","zoomAddr","zoomCoor","estimateDraggedAddress","unknownAddressText","glyphColor","defaultMarkerScale","geoLocationRegex","mapIds","plain","markers","GoogleMap","mapDeferred","loadModule","loadGoogleMapsLibraries","libraryNames","dropId","initMap","createGoogleMap","addClickEventListenerToMap","getMapId","customStyleMapId","myOptions","mapTypeId","mapId","basePinElementOptions","useCustomBaseMarkerColors","google","maps","pointerEventsBlocked","latParam","latLng","lat","lngParam","lng","addressParam","formatted_address","goToAddress","goToCoordinates","deleteMarkers","resultAddress","addressOutput","forwardGeoCode","onlyNullFlag","latOutput","lngOutput","marker","createMarker","markerClicked","markerDragged","calculateMarkerBounds","goToLocation","coordinates","renderValue","seperator","slat","slng","flat","flng","locationCoordinates","latlng","LatLng","setOptions","mappedMarkerId","unblockPointerEvents","MapTypeId","TERRAIN","SATELLITE","HYBRID","ROADMAP","markerData","geocodePosition","writeParam","draggedLatParam","draggedLngParam","draggedAddressParam","zooom","showMapAddr","latAddr","lngAddr","addressAddr","showMapCoor","latCoor","lngCoor","addressCoor","setCenter","setZoom","setMap","markerBounds","LatLngBounds","fitBounds","getMap","licquidMethod_deleteMarkers","AdvancedMarkerElement","pinElementOptions","useDynamicMarkerColorsFromDatasource","backgroundColorOutput","borderColorOutput","glyphColorOutput","markerScaleOutput","markerTitleOutput","PinElement","GridPager","$firstDiv","$previousDiv","$pagerText","$nextDiv","$lastDiv","setPagerText","Grid","groupColumnsFromLeftToRight","indexOfFirstRow","indexOfLastRow","allGroupedColumns","indexOfThisGroup","outputKey","indexOfCurrentRow","selectedRowIndex","displayData","columnsToGroupOn","tableLayout","autoSizeColumns","calculateColumnWidthSum","borderSpacing","$colgroup","$thead","alias","selectedEvent","deselectedEvent","rowKey","isSelectedRow","ResizeSensor","globalWindow","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","forEachElement","elementsType","isCollectionTyped","Elements","getElementSize","setStyle","EventQueue","sizeInfo","newQueue","attachResizeEvent","resized","resizedAttached","resizeSensor","pointerEvents","styleChild","expandChild","shrink","shrinkChild","dirty","rafId","computedStyle","initialHiddenCheck","lastAnimationFrame","resetSensor","onResized","addEvent","cb","MutationObserver","observer","mutations","addedNodes","childList","subtree","isAspectRatioEnabled","ratioHeight","spaceBetweenRows","spaceBetweenColumns","GridLayout","cellElements","calculateRowAndColumnCssDimensions","createCells","calculateSizeBasedOnRatio","setupDynamicCells","cellElementData","getCellElementForChild","$cellElement","cellElement","isInsideADynamicCell","gridlayout_row","gridlayout_column","rowElements","rowDimension","rowCssDimensions","columnDimension","columnCssDimensions","createCell","calculateCssDimensions","getUnitSum","sizes","spaceBetween","cssDimensions","fractionSum","pixelSum","sumOfPrecedingFractions","sumOfPrecedingPixels","cssSize","getCssSize","getCssPosition","getUnitValue","precedingFractions","precedingPixels","hasDynamicCell","gridRow","gridColumn","hasDynamicColumn","hasDynamicRow","rowGap","columnGap","topMargin","ratioWidth","resetPositioningForChild","sizeCss","popupPosition","popupSize","Helper","popupIsVisible","togglePopup","$popup","originalWidth","originalHeight","setIcon","closePopup","convertToHtmlContent","getStartAndEndPositionForOpeningThePopup","corrPopupPosition","getEndPositionForClosingThePopup","openPopup","opening","htmlContent","MagicWandClass","floodFill","minX","minY","maxX","maxY","gaussBlur","Float32Array","gaussBlurOnlyBorder","createBorderMask","getBorderIndices","traceContours","inner","simplifyContours","initialCount","simplifierTolerance","selectEvent","magicWandData","colorThreshold","currentThreshold","blurRadius","hatchLength","hatchOffset","imageInfo","cacheInd","downPoint","allowDraw","firstDraw","MagicWand","compressMaskData","initCanvas","getMousePosition","drawMask","adx","ady","thres","drawBorderFromSimplifiedData","clearCanvas","clearRect","drawArea","cvs","tempCtx","licquidMethod_select","selections","selectionClickedEvent","Hotspot","Results","selectedColumn","Mask","isPointInPath","Iframe","getIframeUrl","parametersForIframe","getParametersForIframe","parameterName","openInline","cropImageWidth","cropImageHeight","cropPositionX","cropPositionY","getImagePath","getPercentage","backgroundAnchorX","backgroundAnchorY","ImageKpi","loadImages","fileName","loadingFunc","kpi","isTheImageWereLookingFor","replaceImage","selectedImage","parsedValue","getUploadUrl","useCustomImage","changedDelay","Input","maskedInput","$input","addTogglePassword","changeOpenEyeIcon","removeTogglePassword","focusLostEvent","changedEvent","lastChangedEventValue","hasMaxLength","maxLength","convertToLicquidFormat","$togglePassword","changeClosedEyeIcon","getOpenEyeImagePath","physicalFileOpenEye","getClosedEyeImagePath","physicalFileClosedEye","setCustomEyeImage","clearCustomEyeImage","meetingHasName","JitsiMeeting","meetingDataIsUpdated","isRendered","JitsiMeetExternalAPI","runningMeetingAPI","$meeting","meetingDatasource","meetingData","tryStartMeeting","domain","jitsiServer","jitsi","cordova","diagnostic","requestRuntimePermissions","startMeeting","permission","CAMERA","RECORD_AUDIO","roomName","meetingIdOutput","userInfo","displayName","fullNameOutput","configOverwrite","disableDeepLinking","disableInviteFunctions","doNotStoreRoom","interfaceConfigOverwrite","SHOW_CHROME_EXTENSION_BANNER","api","executeCommand","meetingNameOutput","avatarURL","fullNameavaterURLOutputOutput","Sortable","getOwnPropertySymbols","getOwnPropertyDescriptor","getOwnPropertyDescriptors","defineProperties","passive","msMatchesSelector","webkitMatchesSelector","N","classList","currentStyle","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","O","scrollingElement","X","Bt","Y","lastElementChild","previousElementSibling","Polymer","Zepto","dom","initializeByDefault","K","mount","pluginName","pluginEvent","eventCanceled","initializePlugins","modifyOption","getEventProperties","eventProperties","optionListeners","W","rootEl","targetEl","cloneEl","toEl","fromEl","newIndex","oldDraggableIndex","newDraggableIndex","putSortable","extraEventProperties","CustomEvent","createEvent","initEvent","bubbles","cancelable","pullMode","lastPutMode","dispatchEvent","propertyIsEnumerable","dragEl","parentEl","ghostEl","nextEl","Q","lastDownEl","J","cloneHidden","et","dragStarted","pt","lt","activeSortable","nt","rt","hideGhostForTarget","kt","unhideGhostForTarget","Rt","cloneNowHidden","cloneNowShown","dispatchSortableEvent","st","ct","ut","ht","ft","gt","mt","vt","bt","yt","wt","Et","Dt","St","Ct","Tt","xt","Ot","At","Mt","Nt","It","gridTemplateColumns","Pt","checkPull","pull","checkPut","put","revertClone","Xt","emptyInsertThreshold","_onDragOver","Yt","_isOutsideThisEl","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","ghostClass","chosenClass","dragClass","preventOnFilter","dropBubble","dragoverBubble","dataIdAttr","delayOnTouchOnly","touchStartThreshold","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","captureAnimationState","thisAnimationDuration","fromRect","addAnimationState","removeAnimationState","animateAll","prevFromRect","prevToRect","toRect","animationResetTimer","animationTime","animatingX","animatingY","forRepaintDummy","Ft","onMove","draggedRect","related","relatedRect","willInsertAfter","jt","Ht","Lt","Kt","_getDirection","pointerType","composedPath","isContentEditable","_prepareDragStart","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","_onTouchMove","_onDragStart","_dragStarted","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","removeAttribute","_hideClone","cloneId","_loopId","effectAllowed","_dragStartId","_ignoreWhileAnimating","nextElementSibling","isOwner","dragRect","targetRect","canSort","fromSortable","completed","changed","insertion","_showClone","_offMoveEvents","_offUpEvents","handleEvent","dropEffect","querySelectorAll","utils","throttle","nextTick","cancelNextTick","detectDirection","getChild","Wt","zt","Gt","Ut","qt","Vt","Zt","Qt","pid","Jt","te","ee","scrollFn","vx","vy","layer","bubbleScroll","onSpill","oe","ie","ae","le","ue","de","he","fe","pe","sortableIndex","ge","forceAutoScrollFallback","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","nulling","swapClass","dragOverValid","swap","isEqualNode","swapItem","avoidImplicitDeselect","_deselectMultiDrag","_checkKeyDown","_checkKeyUp","selectedClass","multiDragKey","multiDragKeyDown","isMultiDrag","delayStartGlobal","delayEnded","setupClone","showClone","hideClone","dragStartGlobal","multiDrag","dragOver","dragOverAnimationCapture","dragOverAnimationComplete","nullingGlobal","destroyGlobal","deselect","multiDragElement","clones","oldIndicies","newIndicies","setUpSortable","moveable","onEnd","dropSortable","positioningProps","childPositionX","childPositionY","childSizeX","childSizeY","selectionMode","selectionBehavior","pagingEnabled","stopAutoLoadPages","onlyLoadFirstPage","groupByColumns","listItemAlignment","isParentIdEnabled","eventThreshold","stayThreshold","reverseScrolling","listItemAutoSize","horAlignDirection","verAlignDirection","enableSorting","handlerDropName","enableScrollingWithSorting","useCustomDragPreview","hasInitialDynamicText","preloadDistance","xDown","yDown","initialPos","mouseDown","initializeTemplates","rendered","rendering","afterRendering","loadedPagesForward","loadedPagesBackward","groupingLoss","queuedData","hasInfiniteScrollEnabled","checkScrollAndLoadNextPageIfNeeded","setWidthOfListItems","updateAlignContainerResize","allowSwipe","listWidth","decorateQueryParams","keepPagingInformation","configureStartPageEnabled","startAtItemIdParameter","focusStartPageElement","findRowByItemId","datasourceListenerId","unregisterDatasourceListener","useParentGroupData","isUpdate","deleteItem","relativePositioned","preventScrollEvent","scrolledByUser","setScrollTop","idToDelete","existingListItem","applyRelativePositioning","supportsPassive","wheelOpt","wheelEvent","disableScroll","enableScroll","getItemOffset","getItemSize","childCss","isFirst","isLast","groupedData","groupData","renderData","lines","renderLoadingItem","renderQueuedData","childModel","itemTemplateType","itemTemplatesData","getDefaultItemTemplate","headerTemplatesData","loadingTemplatesData","swipeTemplatesData","nextPageTemplateData","getDefaultNextPageTemplate","preloaderTemplateData","getDefaultPreloaderTemplate","selectedItems","valueAsArray","updateSelection","listItem","renderStyleIfEnabled","selectedIds","previouslySelectedItems","newlySelectedItems","valueOrDefault","nextPageItem","$alignContainer","updateAlignContainer","loadingDrops","loadingDrop","resetItemCounters","headerDrops","listItemsRendered","headerDrop","setTotalData","setItemCounters","incrementItemCounters","widthOfContainer","calcTheWidthOfContainer","isListItemSizeDynamic","keepPagerPositionOnQueryReload","currentColumn","itemCounter","lastItem","decrementItemCounters","createDataItemForGroup","groupResultItems","originalData","groupDataItem","$groupData","getKey","keyValuePairs","groupsByKey","groupsInOrder","groupedItems","resultItem","fieldNames","headerField","getPreliminaryGroupingKey","kvp","groupedResults","removeLastListItem","getLastListItem","getFirstListItem","isGroupingEnabled","RENDER_BATCH_SIZE","queryParams","listBatchSize","batchSizeParam","listItemWidth","widthIsDynamic","retVal","childData","hasAnchorLeft","hasAnchorRight","countOfVisibleData","renderedItemsCount","isNextPageLinkNeeded","elementWidth","setTheAlignContWidthAndMargins","scrollingQuery","keyColumn","lastPreviousItem","lastPreviousData","getData","firstNextData","isEqual","startPage","endPage","skipItemsWithEmptyId","idOfItem","parentIdOutput","loadBackward","currentResult","reapplyData","dataRow","pipingData","clonedItemDataToCreate","listItemDrops","listItemsBatched","currentBatch","groupInBatches","batchIndex","batchRenderPromises","indexWithinBatch","oldScrollHeight","oldScrollWidth","yield","isListItemHasDynGrid","swipeItems","getSwipeItemByType","addSwipingToListItem","handleListItemClick","handleListItemSelection","addNextPageLinkIfNeeded","scrollIntoView","behavior","typeClass","handleTouchEnd","firstTouch","$evtTarget","resetStayed","$centerSwipe","stayedElements","rElems","lElems","xUp","yUp","alreadySwiping","newPosInt","hasNextPage","autoLoadLimitReached","addNextPageLink","offsetScrollPosition","scrollHeightWithPagingEl","canLoadBackward","loadNextPageForward","loadNextPageBackward","bottomMargin","documentHeight","bottomScrollPosition","getDatasourceListenersWithSameParams","myParams","allListeners","renderPreloader","queryNextPage","removePreloader","preloaderItem","handleLeftClickAsMultiSelect","indexOfItem","previousSelection","licquidMethod_selectFirstItem","licquidMethod_jumpToItem","itemId","childPos","childOffset","randomRotateOffset","conditionalRendering","ListItem","applyDataAndVisibilityToChild","licquidMethod_load","createChildren","isReversed","rotationdiff","currentRotationAsMatrix","matrixValues","newrotation","applyHandlerClassForSortable","getStates","getScrollbarWidth","handlerDrop","RowSynchronizer","$first","$second","$rowsOfFirst","$rowsOfSecond","heightOfFirst","heightOfSecond","sync","$firstRow","$secondRow","firstOuterHeight","secondOuterHeight","ColumnSynchronizer","$columnOfFirst","$columnOfSecond","widthOfFirst","widthOfSecond","$firstColumn","$secondColumn","firstWidth","secondWidth","firstOuterWidth","secondOuterWidth","syncFor","synchronizers","$fixedHeaders","$dynamicHeaders","$fixedRows","$dynamicRows","synchronizer","matrixTablesSynchronizer","rowHeaders","rowHeadersSort","columnHeaders","columnHeadersSort","columnContentAlignment","dataItems","fixedColumnHeaderTextOrientation","columnHeaderTextOrientation","createCol","optionalWidth","$col","Matrix","$fixedHeadersWrapper","$fixedRowsWrapper","$dynamicHeadersWrapper","$dynamicRowsWrapper","$matrix","allData","setColumnWidthBasedOnSettings","dynamicColumnCount","visibleRowHeaders","$fixedRowsGroup","$fixedHeadersGroup","rowHeader","$dynamicRowsGroup","$dynamicHeadersGroup","columnWidth","totalWidth","uniqueRowHeaderGroups","groupBy","dataItem","getRowKey","uniqueColumnHeaderGroups","getColumnKey","columnHeaderOutputs","columnHeaderSortOutputs","columnKeysSorted","key1","key2","dataItem1","dataItem2","compareDataItems","enableHeadersHeight","headersHeight","columnHeaderKey","columnHeaderData","columnHeaderSettings","visibleColumnHeaderOutput","rowHeaderOutputs","rowHeaderSortOutputs","rowKeysSorted","clickEventData","fixedColumnClickEventData","rowHeaderKey","rowHeaderGroup","firstItemInRowGroup","fixColumnContent","$fixedColumnCell","currentFixedColumnEventArg","eventArgFixedColumn","rowGroupItem","$tableCell","currentBackgroundColor","currentTooltip","currentEventArg","postUpdate","renderLoadMoreButton","numberOfDynamicColumns","$loadMoreRow","$loadMoreCell","$loadMoreButton","nextPageText","nextPageStyle","newData","allResults","fieldsToCompare","previousResult","fieldName","Milestones","milestonesList","selectedDataSourceOutput","TimeLine","currentDateRec","selectedData","timeLineFormats","rectTopList","rectBottomList","beschrijvingList","selectedFormat","resizeCanvas","buildTimeLine","_render","_canvas","buildCanvas","milestone","naam","naamOutput","beschrijving","beschrijvingOutput","datumPlanning","datumPlanningOutput","datumWerkelijk","datumWerkelijkOutput","_getMinAndMaxDate","msl","smallest","MAX_VALUE","largest","MIN_VALUE","cellText","getYears","monthText","getMonthText","calcWeeks","getMonths","getWeeks","getWeekDayText","largestDate","smallestDate","buildCells","low","high","cell","fontSizeLimit","milestonesPlanning","milestonesWerkelijk","colorStroke","colorFill","canvasClick","toggleDescription","drawAll","canvasCellWidth","cellWidth","buildMilestones","buildCurrentDate","buildTimeLineDates","locCurrentDate","getLoc","rectC","toLocaleDateString","rec","rl","rectDescr","locPlanning","rectPlanning","yIndex","detectCollision","locWerkelijk","rectWerkelijk","mnr","wknr","rectlist","drawLine","drawDate","drawBox","drawDescription","strokeRect","canSave","dirtyCheck","isDirty","MockList","applyStyles","applyStyle","renderTable","rerenderTable","parsedMockData","parseMockData","totalSize","numberOfCells","setBlurValue","$rootWrapper","cssValue","applyBlur","hasBlur","updateModalLayerHeight","$modalLayer","ModalActionMpa","modalAction","onMessageReceived","receivedMessage","sizeUpdateIntervaldId","setUp","allowtransparency","nestedLicquidContainer","explicitlyMappedParams","getEventFromMessage","useSelectedActionSize","setElementSizeBasedOnAnchoring","targetOrigin","defaultStateKey","retrieveTraceFromLocalStorage","stateKey","sessionStorage","getItem","storeTraceInLocalStorage","trace","setItem","NavigationHistory","traceName","storeTrace","retrieveTrace","withLocalStorage","inMemory","inMemoryTrace","previousUrl","NavigatorSpa","initialActionId","history","onNavigate","currentActionId","openAction","openBlank","openUrl","goToPrevious","previousActionId","loadValidator","validator","publishEvent","theEvent","gateway","registerListener","unregisterListener","whenEnabled","callCallbacks","removeCallback","callbackToRemove","ActionLoader","requestId","insertionPoints","receivedData","requiresLogin","pageUrl","currentUrl","system","systemParameters","$highlight","highlight","validatorGateway","layouting","highlighter","ModalActionSpa","onActionLoaded","showAction","onEventReceived","$view","$modals","gatewayCallback","informValidator","openNewAction","actionLoader","actions","createChildPiping","enableBackwardsCompatibility","addBeforeInterceptor","addAfterInterceptor","cleanupCurrentAction","receiveMessage","parentInstanceId","canReload","waitForTaskCompletion","parentEventAction","removeInterceptor","ModalBlur","actionSource","ModalAction","implementation","singlePage","resetMinimumDimensions","applyMinimumDimensions","centerInsideParent","applyZIndex","applyAnimation","anchoringData","sizeY","sizeX","renderModalLayer","isScrollable","getVerticalCenterPosition","getHorizontalCenterPosition","totalHeight","getActionId","updateScrollContainerZIndex","addBackgroundClickHandler","removeBackgroundClickHandler","openTime","backgroundClickHandler","closeWhenBackgroundClicked","applyModalLayerLayout","actionIdParameter","mappedActionId","ModalPopup","autoPosition","CheckboxList","setItems","createAllOption","fillList","setTabIndex","displayedOutput","selectAllByDefault","rowModel","check","uncheck","updateAllOption","buildItemTable","$ticker","$outermostDiv","$innerDiv","flexFlow","$all","$allCheckbox","$rows","numberOfColumns","leftover","numOfBlankElements","addAllOption","allOptionLabel","DropDownItem","onCheckboxToggled","$checkboxWrapper","setReadOnly","addExtraColumns","createExtraColumn","onRowClicked","updated","triggerEvents","updateSummary","DropDownMultiSelect","$placeholder","$buttonWrapper","getGridStyleClassName","onClicked","handleClickOnDocument","onScrolled","scrolledInApp","togglePlaceholder","targetWasNotThisDrop","targetWasNotThisList","$allDiv","selectAll","$checkboxHeader","$trh","textOutput","updateUi","summary","Checkboxlist","MultiSelect","checkedItemIds","createControl","isNormalDropdown","renderControl","numericInputConfig","minValue","maxValue","numericVal","numericInput","lastValidValue","rawValue","numpadDecSeparator","NumericInput","hasMaxValue","hasMinValue","getMaxLength","getMinValue","getMaxValue","updatePrefix","$prefix","createInput","enableNumericKeypad","$numeric","cutDecimals","hasMaxDecimals","prec","splited","showFirst","firstLabel","showPrevious","previousLabel","showNext","nextLabel","showLast","lastLabel","labelTemplate","verticalAlignment","Pagination","withOnPageOpened","pageOpened","createPager","$pager","$back","goToFirstPage","goToPreviousPage","$forward","$next","goToNextPage","$last","goToLastPage","totalNumberOfPages","sizeOfPage","isFirstPage","isLastPage","firstRecordCurrentPage","lastRecordCurrentPage","selectedPattern","Pattern","Payment","$elem","morphId","acceptUrl","cancelUrl","cancelRedirect","executePayment","submit","fixBetween","getHoursAndMinutes","dayTimeString","hourPart","minutePart","stringSingsTwo","fromTicks","ticks","fromDate","dateString","toTicks","hoursAndMinutes","toDate","dayTime","PlanningGraphImpl","graphData","planningGraphMouseUp","planningGraphMouseDown","cursorX","clickedDiv","srcElement","resizeDirection","draggingDiv","currentLeft","currentRight","divMove","divResizeLeft","divResizeRight","getLeftLimit","rowArId","planArId","minLeft","rangeMin","myStart","barValues","Plannings","End","getRightLimit","minRight","rangeMax","myEnd","plannerAvailableWidth","offSet","maxLeft","setNewTotal","maxRight","newRight","originalDD","floatingPercent","barDiv","usingDateTime","gridLinePosToDate","totalValue","Total","showAsTime","deleteGraph","createGraph","graph","descriptionLabel","totalLabel","addRow","showGrid","drawLines","planningItem","arId","optionalColor","SelectedTextColor","newRowContent","SelectedToolTip","SelectedName","Boundary1start","Boundary1stop","boundary1PositionLeft","boundary1PositionRight","Boundary2start","Boundary2stop","boundary2PositionLeft","boundary2PositionRight","diffInDays","startDay","oneDayRange","endDay","unavailableStartLeft","unavailableStartRight","unavailableEndLeft","unavailableEndRight","getGridLinePos","selectedPositionLeft","selectedPositionRight","additionalClass","isPreference","isSpecial","isFlagged","selectedBarId","dynamicBarColor","dynamicTextColor","newRow","clickedSelection","clickedOnDescription","dateOrGridLinePos","dateToGridLinePos","gridLinePos","intervalGrid","gridLine","intervalGridMajor","gridLineLabel","showAxisLabels","showAxisLabelsTop","intervalGridLabel","labelValue","getDateLabel","gridLines","hasUnsavedChanges","startNew","startOld","_origStart","endNew","endOld","_origEnd","getOutputData","plan","selectedGraphData","fromDateParameter","toDateParameter","PlanningGraph","boundaries1","boundaries2","rdata","selectedBoundary1DataSource","selectedBoundary2DataSource","getBatchOfCommands","command","barValue","startAttribute","stopAttribute","beschrijvingIdOutput","bound1","bound","boundary1idOutput","bound2","boundary2idOutput","beginOutput","eindeOutput","beschrijvingTextColorOutput","beschrijvingTooltipOutput","SelectedId","SelectedDescription","boundary1startOutput","boundary1stopOutput","boundary2startOutput","boundary2stopOutput","idSelectieOutput","startSelectieOutput","stopSelectieOutput","EventArgument","eventArgument","planning","newTotal","planningList","prevScrollPosition","drawPlanningGraph","retrievePlanningGraphData","scheduleUnit","su","fixHeight","visibleRows","legendFontSize","convertToNumber","convertToBoolean","testData","getPlanningData","getGridData","intervalRedGrid","isWithPreferredValues","gridData","exception","planningItems","pi","ProgressBar","$progress","setProgress","messaging","swRegistration","currentTokenKey","currentRegistrationUserIdKey","notificationPermissionCallbacks","receivedNotifications","firebaseConfig","projectId","messagingSenderId","appId","firebase","initializeApp","getRegistration","callNotificationPermissionCallbacks","deviceId","Notification","startReceiver","BroadcastChannel","getToken","serviceWorkerRegistration","vapidKey","newToken","currentToken","localStorage","registeredUserId","messenger","platform","onMessage","foreground","enableNotifications","notificationPermissionCallback","startReceivingNotifications","hasReceivedNotifications","getAllReceivedNotifications","otherCallback","webPushNotifications","PushNotificationReceiver","handleNotification","onPageLoad","initializeForWeb","continuation","permissionType","notifications","handleNotifications","isBackground","notification","QrCode","RadioButton","renderRadioButton","updateParent","triggerSelectedEvent","radioButtonSelectionChanged","unselect","RadioButtonGroup","addRequiredIndicator","valueOfSelection","radioButton","RadioButtonGroupV2","RadioButtonList","$radiobuttons","elementId","keyOutput","$radioButton","_updateRadioButtonSelection","Rectangle","setBackgroundColor","MonotonicCubicSpline","beta","tau","to_fix","interpolate","h01","h10","h11","BarValue","xValue","selectedValue","preferredValue","originalSelectedValue","originalPreferredValue","hasChanged","RequirementsGraphImpl","isMouseDown","previousMouseMovePosition","graphModel","roundFloat","compareFloats","getYPosition","realYValue","yIntervals","yInterval","real","percentual","getXPosition","realXValue","xIntervals","xInterval","getRealYPosition","percentualYValue","getRealXPosition","percentualXValue","calculateYPosition","yAxisFrom","yAxisTo","calculateXPosition","xAxisFrom","xAxisTo","getBarValue","createGraphModel","xSubIntervalWidth","xAxisSubInterval","xIntervalWidth","xAxisInterval","ySubIntervalWidth","yAxisSubInterval","yIntervalWidth","yAxisInterval","generateXIntervals","generateYIntervals","createGraphContainer","createXAxis","createYAxis","xAxis","xAxisShowAsTime","yAxis","yAxisShowAsTime","outerGraphContainer","graphContainer","addChangeBarListeners","createGridLines","createGraphBars","createVerticalGridDiv","createHorizontalGridDiv","yValue","createGridDiv","onMouseMoveStart","onMouseMoveEnd","locateAndChangeBar","calculateRelativeMousePosition","mousePosition","limitedMousePositionY","relativeMousePosition","amountOfIntervalsBetweenPositions","cubicSpline","positivity","simulatedXPosition","simulatedYPosition","simulatedMousePosition","snapXCoordinateToLowestSubInterval","snapYCoordinateToClosestSubInterval","renderBarChange","snappedX","snappedY","closestYIntervals","changePreferredBarSize","changeBarSize","bar","barsContainer","createGraphBarTitle","preferredBar","selectedBarHeight","switchToMinusColor","switchToPlusColor","xAxisMin","xAxisMax","createInvalidGraphBar","any","createGraphBar","newBarValue","selectedString","xPosition","xPlusOnePosition","yPosition","yPositionOfPreferredValue","isPreferredPlus","topLocation","bottomLocation","getBarValues","RequirementsGraph","limits","planningUnits","scheduleUnits","selectedScheduleDataSource","selectedLimitsDataSource","mergeData","selectedPlanningDataSource","xAxisMinOutput","xAxisMaxOutput","barUnit","scheduledAmount","planningUnit","xValueOutput","xValueStartOutput","xValueStopOutput","plannedAmount","yValueOutput","planningId","barIdOutput","barval","retrieveRequirementsGraphData","xAxisLabel","yAxisLabel","parentIdParameter","parentId","xValueAttribute","yValueAttribute","parentIdAttribute","dataUrlToBlob","dataUrl","byteString","atob","mimeString","ia","Blob","fileUtil","maxFileSizeInKb","maxImageDimensions","multiple","onMaxFileSizeExceeded","onInvalidFileExtension","onUploadingFile","onFileUploading","onFileUploaded","onFinished","onFilesSelected","FileUpload","do","largeFile","tryToFindFileThatExceedsMaxFileSize","invalidFile","isAllowedExtension","getDataToSend","sendFile","maxFilesSizeInBytes","extList","qqfile","jsonResponse","upload","setRequestHeader","shouldTryToResize","reader","readerEvent","blob","Uploader","targetDiv","onStartingUploadCallback","onFileUploadedCallback","onUploadFinishedCallback","withParameters","toTenantUrl","withFileFilter","withMaxFileSize","withSmartphoneMode","smartphoneMode","withPhotoQuality","photoQuality","withMaxImageDimensions","onMaxFileSizeExceededCallback","onInvalidFileExtensionCallback","onStartingUpload","onUploadFinished","uploadSingleFile","_doUpload","uploadMultipleFiles","allowMultipleUploads","camera","_doSmartphoneUpload","_doNormalUpload","sourceType","Camera","PictureSourceType","PHOTOLIBRARY","getPicture","imageURI","FileUploadOptions","fileKey","mimeType","httpMethod","encodeURI","FileTransfer","uploadSmartphoneFile","destinationType","DestinationType","FILE_URI","encodingType","EncodingType","JPEG","quality","correctOrientation","extensions","$percentage","$progressBar","uploaded","tinymce","tenantUrlPlaceholder","supportedLanguages","licquidLanguageMap","zh","fr","hu","ko","nb","sv","readonly","undoRedoEnabled","boldEnabled","italicEnabled","underlineEnabled","stripFormattingOnPaste","spellcheckerEnabled","strikethroughEnabled","formatselectEnabled","removeformatEnabled","fullscreenEnabled","previewEnabled","printEnabled","anchorEnabled","cutEnabled","copyEnabled","pasteEnabled","selectallEnabled","searchreplaceEnabled","superscriptEnabled","subscriptEnabled","lineheightEnabled","wordcountEnabled","runtimeResizeEnabled","skin","initialUpdate","$textarea","triggerChangedEvent","lazyLoadedTinymce","createRichTextEditor","body_class","getCssClassNameForStyling","menubar","statusbar","buildPluginsList","paste_as_text","paste_data_images","imagesEnabled","images_upload_handler","imageUploadHandler","image_dimensions","containImagesEnabled","content_style","buildContentStyles","relative_urls","remove_script_host","browser_spellcheck","file_browser_callback","openFileBrowser","cache_suffix","require_config","ed","contentChanged","disableParagraphs","allowedKeys","getLengthOfContent","bold","text_patterns","extended_valid_elements","content_css","urlconverter_callback","on_save","file_picker_callback","language","getLanguage","elementpath","getSkin","newline_behavior","paste_preprocess","paste_postprocess","contentStyles","blobInfo","progress","getContent","insertLinkEnabled","insertListEnabled","tablesEnabled","fontFamilyEnabled","fontSizeEnabled","fontForegroundEnabled","fontBackgroundEnabled","textAlignEnabled","indentationEnabled","meta","uploadResponse","runtimeLanguage","licquidLanguage","browserLanguages","languages","userLanguage","lang","nameColumn","categoryColumn","modelColumn","TemplateSelector","richTextTemplateEditor","templates","$templates","buttonDisabled","$load","$delete","confirm","openTemplate","Values","loadTemplates","activeTemplateSelector","disableButtons","tryToSelectItem","foundTemplate","findTemplateWithName","clearSelection","TemplateSaver","$name","updateButton","RichTextTemplateEditor","templateSelector","templateSaver","addDefaultEmptyRow","existingTemplate","getCategory","setCurrentTemplate","clearName","categoryIsParameter","category","builderData","RuntimeQueryBuilder","showEmptyQueryOnPageLoad","lastDesignState","showComponent","QueryBuilder","showQueryBuilder","designState","entities","externalData","availableQueries","SimpleSpreadsheetRow","spreadsheet","$cells","rowClicked","columnUpdated","keyPressed","focusReceived","isNumberColumn","alignment","updateSelectedRows","setSelectedRow","indexOfColumn","moveToNextRow","dehighlight","paste","setValueOf","convertToNumericValue","getNumericValueOf","focusFirstInputField","focusInputField","defaultNumberOfRows","SimpleSpreadsheet","lastTotal","deletedRowIds","eventArgumentColumn","triggerUpdated","loadDataFromDatasource","createDefaultNumberOfRows","numberOfRequiredLines","getNumberOfRequiredLines","extraRows","rowNumberOutput","sortedResults","rowToFocus","updateRowIndexParameter","rowToScrollTo","isRowSelected","selectedRow","currentRowParameter","getTotalForEvent","eventArgumentFunction","startRowIndex","getFirstSelectedIndex","requiredLength","addExtraRows","nextSelectedRow","getIndexOfRow","numberOfExtraRows","rowNumberAttribute","parentAttribute","deletes","receiveBatchOfCommandsResult","identifiers","identifier","triggerRow","indexOfTrigger","nextRow","licquidMethod_insertRow","oneOrMoreRowsAreSelected","licquidMethod_deleteRow","lastSelectedIndex","getLastSelectedIndex","deleteRow","nextIndexToFocus","newRowToFocus","$stylePickerContainer","reqDataFromParent","mousedownAction","curMode","addClick","redraw","transformedPoint","lastX","lastY","indexOfNearest","getDistance","strokeSelectionSensitivity","selectStroke","findStroke","mousemoveAction","refreshLayers","moveCounter","cancelDelete","mouseupAction","strokeSelected","deleteStroke","lastStrokeEndIndOld","lastStrokeEndInd","isOnReleaseEnabled","triggerOnReleaseEventFunction","setButtonImage","$toolbarButtons","srcActOn","srcActOff","srcDeactOn","srcDeactOff","setButtonSvg","defaultColor","toogleSvg","getElementsByClassName","getOffsetLeft","getOffsetTop","getTouchPoint","touch","pt1","pt2","ys","disableZooming","realCurZoom","scaleFactor","lineSizeMarker","curColorMarker","lineSize","curColor","showUndo","undoneStrokes","hideRedo","deleteFromIndex","deleteToIndex","originalColorSelection","selectionColor","lum","colorLuminance","showRedo","completedStrokesInd","loadSvgFile","filenameToLoad","xmlhttp","svgElement","responseXML","pathElements","strokeOpacity","pathColor","combineColorWithOpacityToRgba","pathSize","dAttArr","xyArr","hasBgImage","bgdata","sizeAtTheTimeOfLoading","bgWidth","bgHeight","cvWidth","cvHeight","bgLeft","bgTop","gridInfo","gridOnTop","toggleOnTop","gridSize","_isGridShown","getBoxDimension","bgImgSrc","isNewBgImg","isClearBg","clearEverything","isInitialized","drawLayer","cachedBgImg","drawBgImageWithSize","redrawContent","drawBgImageAndContent","drawLayerToMainContext","useBackImage","backImageOnTop","backImage","beg","drawProperStroke","hex2rgba","sizeAtTheTimeOfSaving","actualContext","disableMovingBg","setupNonMovinBackground","offsetForCentering","_isUndoShown","btnUndo","hideUndo","_isRedoShown","btnRedo","showGridInitially","btnGrid","btnOnTop","hideGrid","startingGridSize","curZoom","setCurZoom","startingLineSize","startingLineSizeMarker","defaultPenColor","defaultMarkerColor","lastColor","showPen","showMarker","showMove","showDelete","showClear","showLineSlider","showGridSlider","showScrollSlider","showGridOnTop","showUndoRedo","useGraphPaper","useGraphPaperScale","enablePinchMove","graphPaperScaleParameter","startingSensitivity","colorIndicesToAllow","hasHeader","penOpenedEvent","markOpenedEvent","lastTouchDistance","btnDraw","btnMarker","btnDelete","btnGrab","btnClear","layerX","layerY","mouseup","mouseout","wheelDelta","detail","touchstart","touchmove","touchend","touchColorpicker","selectDraw","is_touch_device","$penTool","selectGrab","selectDelete","selectMarker","$markerTool","clearDrawing","selectClear","isClearEventEnabled","triggerClearEventFunction","toggleGrid","undo","isOnUndoEventEnabled","triggerOnUndoEventFunction","undoMouseDown","undoMouseUpOrOut","undoTouch","redo","isOnRedoEventEnabled","triggerOnRedoEventFunction","redoMouseDown","redoMouseUpOrOut","redoTouch","prevFuncCallWhileTouchScroll","functionCallback","trackTransforms","createGridLayer","createLayer","drawInterval","uploadedImg","btoa","uploadedImgBase64","createUploadedImageLayer","createLayers","touchcancel","flexWrap","alignContent","$undoButton","$redoButton","$deleteButton","$moveButton","hiddenStyle","$toggleGridButton","$toggleOnTopButton","colorIndices","sizesMark","sizesDraw","$picker","colorI","colorInput","isSameNode","insertStylePicker","resizerRedraw","createSvg","svgns","xlinkns","bgPositionData","hasDrawings","minProp","maxProp","boxWidth","boxHeight","drawGridLayer","drawGridToSvg","drawImageToSvg","getHexColorWithoutAlpha","getColorAlpha","dAtt","getLayer","createImage","exportCrop","imageType","cropX","cropY","cropWidth","cropHeight","canvasHeight","canvasWidth","exportCanvas","exportCanvasCtx","applyTransformTo","currentTimeoutId","layerName","transformMatrix","getTransformMatrix","layerMatrix","layerScale","newTranslateX","newTranslateY","setTransform","layerCanvas","layerContext","p1x","p1y","p2x","p2y","xSpacing","ySpacing","drawGridLinesToSvg","lineColor","lineOpacity","thickness","stopX","stopY","quadraticCurveTo","xform","createSVGMatrix","sx","sy","scaleNonUniform","createSVGPoint","matrixTransform","inverse","setXForm","xf","resetTracking","otherCtx","hexStr","colorParts","CanvasMorph","exportType","SketchPad","canvasMorph","adjustCanvasSize","clearBackground","licquidMethod_setBackgroundImage","licquidMethod_clearDrawing","dropWidth","dropHeight","toolbarHeight","noUiSlider","addClassFor","asArray","countDecimals","numStr","getPageOffset","supportPageOffset","isCSS1Compat","compatMode","subRangeRatio","pa","pb","fromPercentage","getJ","toStepping","xVal","xPct","va","vb","toPercentage","getStep","xSteps","handleEntryPoint","xHighestCompleteStep","handleStepPoint","totalSteps","xNumSteps","highestStep","Spectrum","singleStep","ordered","getMargin","fromStepping","isPercentage","getNearbySteps","stepBefore","thisStep","stepAfter","countStepDecimals","stepDecimals","defaultFormatter","validateFormat","isValidFormatter","testStep","testRange","spectrum","testStart","testSnap","testAnimate","testAnimationDuration","testConnect","connect","testOrientation","ort","testMargin","testLimit","limit","testPadding","testDirection","testBehaviour","tap","testTooltips","testAriaFormat","ariaFormat","testFormat","testCssPrefix","cssPrefix","testCssClasses","cssClasses","testUseRaf","useRequestAnimationFrame","testOptions","tests","handleLower","handleUpper","ltr","rtl","pips","pipsHorizontal","pipsVertical","markerHorizontal","markerVertical","markerNormal","markerLarge","markerSub","valueHorizontal","valueVertical","valueNormal","valueLarge","valueSub","styleOposite","closure","originalOptions","scope_Base","scope_Handles","scope_Connects","scope_Self","scope_Pips","tips","pointerEnabled","msPointerEnabled","getSupportsPassive","scope_Target","scope_Locations","scope_HandleNumbers","scope_ActiveHandle","scope_Spectrum","scope_Values","scope_Events","scope_Listeners","scope_Document","scope_DocumentElement","scope_Body","addNodeTo","addOrigin","handleNumber","addConnect","addTooltip","addMarking","filterFunc","valueSizeClasses","markerSizeClasses","valueOrientationClasses","markerOrientationClasses","getClasses","sizeClasses","innerText","addSpread","removePips","density","stepped","indexes","firstInRange","lastInRange","ignoreFirst","ignoreLast","prevPct","newPct","pctDifference","realSteps","stepsize","generateSpread","baseSize","pageOffset","pointer","fixEvent","calcPoint","calcPointToPercentage","docElem","proposal","clientTop","clientLeft","moveHandles","upward","locations","handleNumbers","proposals","checkHandlePosition","setHandle","fireEvent","targetEvent","documentLeave","relatedTarget","eventEnd","eventMove","appVersion","buttonsProperty","startCalcPoint","setZindex","eventStart","moveEvent","endEvent","outEvent","eventTap","getClosestHandle","eventHover","lookBackward","lookForward","toPct","pct","stateUpdate","updateConnect","updateHandlePosition","valueSet","fireSetEvent","isInit","valueGet","bindEvent","namespacedEvent","addSlider","connectOptions","addElements","nearbySteps","decrement","tEvent","tNamespace","__moveHandles","updateOptions","optionsToUpdate","updateAble","handleBefore","handleAfter","eventHolders","eventHolder","unencoded","positions","stepSize","handleSize","barSize","Slider","$slider","createSlider","slideEvent","$handle","childIdsByPosition","Stack","determineAutoLayout","shouldStretchHorizontally","applyHorizontalAlignmentCss","applyVerticalAlignmentCss","stack_verticalAlignment","stack_horizontalAlignment","elementCss","parentElementCss","applyCentering","repositionedDrops","repositionedDrop","TaskProgress","buildLinks","drawAllLinks","borderPadding","links","drop1","morph1","drop2","morph2","checkLinkCanBuild","drawOneLink","point1","point2","completionPercentage","task","completionStatus","dataSourceOutput","setCompletionPercentage","scrollbarOnOverflow","rerenderText","applyBestFontFit","isMaxLengthSupported","TextArea","createSimpleTextEditor","isInRichTextMode","switchToRichText","switchToSimpleText","cutToMaxLengthIfOver","richTextPlaceholder","withOnFocusLost","TimeInput","NATURAL_NUMBER","DATE_TIME","storageType","withDropDown","focuslost","displayValue","triggerChangeEvent","scrollDefault","stringValue","intervalOption","autoStart","Timer","startTimer","timerElapsedEvent","dataSourceForInterval","dataSourceOutputForInterval","SingleSelection","idOfSelectedNode","$tree","onCreateLi","idOfNode","showAsSelected","currentNode","showAsDeselected","reselect","MultiSelection","idsOfSelectedNodes","checkbox","idsOfNodes","deselectAll","nodes","jqTree","expandTreeOnLoad","multiselect","TreeView","$overflowElement","initializeTree","useCustomNodeImages","dragAndDrop","$li","renderCustomColors","defaultLeafNodeImage","selectedLeafNodeImage","nodeActions","nodeAction","$action","nodeActionSpacing","enableDynamicVisibility","onCanSelectNode","closedIcon","collapsedNodeImage","openedIcon","expandedNodeImage","renderNormalStyleForNode","overrideStylingIfNeeded","styleData","textColor","idProperty","parentIdProperty","textProperty","treeViewItems","treeViewItemsById","rootTreeViewItems","treeViewItem","na","textColorProperty","backgroundColorProperty","Twitter","renderTwitter","fjs","username","widgetId","Video","filenameEndsWith","suffixes","DocumentPreviewer","documentUrl","isImage","getFullDocumentUrl","getEmbeddedUrl","fullDocumentUrl","isOfficeFile","isPdfFile","GooglePlaces","searchBox","places","SearchBox","mapDrop","setBounds","getBounds","getPlaces","modules","installedModules","__webpack_require__","moduleId","getter","__esModule","_typeof","_utils2","_interopRequireDefault","_defaults2","_customEvent2","isMobile","isIframe","_docListener","Dropkick","_classCallCheck","dk","globalDK","getElementById","uid","optList","funcs","selectedOptions","cacheID","_changeListener","onDocClick","dkOption","dkOptsList","dkTop","dkBottom","_scrollTo","disabledClass","hiddenClass","combobox","bubble","tIndex","sIndex","cScore","tScore","reg","defaultSelected","_delegate","_keyHandler","_searchOptions","_highlight","firstIndex","lastIndex","collapseToStart","lastSelected","keyChar","searchString","searchTimeout","selectOne","optPos","optTop","dkOpts","idpre","selOpt","addOption","optgroupList","tId","dropkick","isIE","Utils","classname","attrs","NativeCustomEvent","foo","useNative","initCustomEvent","createEventObject","eval","hideEmptyItemInList","handleChange","dropKickObject","$oList","listMaxHeight","listPosition","setupCorrectWidthOfList","$dropDownButton","$dropdownButtonWrapper","$dkSelected","handleScroll","ensureRightPadding","addButton","DynamicGridLayout","initCellsVisibsWithVal","initDropsInCells","setupCellsVisibilities","easyCell","isTopAndBottmAnchored","isLefAndRightAnchored","getWrapperForDrop","dropsInCells","cellsContentVisibilities","hideCellsIfNeeded","showCellsIfNeeded","setupPosForDropInDynCell","columnIndexAll","getPropertyEditor","editorName","currentPropertyEditors","propEditor","propertyEditorName","editors","propEditor2","gridTemplate","generateGridTemplate","gridTemplateRows","hasTrue","columnArray","isAllFalse","reInitDropsInCells","yyyy_mm_dd","isDate","isString","isBoolean","parseBoolean","dependenciesEnabled","dependencyArrowRemoverEnabled","holidaysEnabled","scrollbarVisible","defaultZoomLevel","strongYearFormat","strongMonthFormat","strongWeekDayFormat","mediumMonthFormat","lightMonthFormat","barLabelPosition","boxShadowColor","toolbarIconHoverColor","headerFill","headerRowWrapperLineColor","headerRowLineColor","headerRowCellLineColor","headerHorizontalLineColor","cellFill","weekendFill","holidayFill","horizontalGridLinesColor","dayLinesColor","monthLinesColor","yearLinesColor","GanttChart","GanttChartComponent","tasksDataSourceListenerId","tasksDataSource","taskData","taskId","taskName","taskStart","taskEnd","taskPosition","taskColor","setTasksL","dependenciesDataSourceListenerId","dependenciesDataSource","dependencyData","dependencyId","fromTaskId","dependencyFromTaskId","toTaskId","dependencyToTaskId","setDependenciesL","holidaysDataSourceListenerId","holidaysDataSource","holidaysData","holidayId","holidayDate","setHolidaysL","GanttChartComponentRendered","changeTask","newStartDate","newEndDate","taskIdParameter","taskStartParameter","taskEndParameter","taskClicked","startDate","endDate","taskHovered","zoomLevelChanged","zoomLevel","currentZoomLevelParameter","focusedDateChanged","focusedDate","formattedFocusedDate","currentFocusedDateParameter","addDependency","dependencyIdParameter","dependencyFromTaskIdParameter","dependencyToTaskIdParameter","deleteDependency","dependencyClicked","useFocusedDateParameter","focusedDateParameterIsBound","focusedDateParameter","updateFocusedDateParameter","useStartDateParameter","viewStartParameterIsBound","viewStart","updateViewStartParameter","useEndDateParameter","viewEndParameterIsBound","viewEnd","updateViewEndParameter","useReadOnlyParameter","readOnlyParameterIsBound","readOnlyParameter","updateReadOnlyParameter","configureGanttChart","cellHeight","barHeight","startDateParameter","endDateParameter","configureHeader","languageCode","configureCells","chosenValueDataType","methodType","numericIsPopulation","showChosenLegend","showLowestLegend","showLowerLegend","showAverageLegend","showHigherLegend","showHighestLegend","maxTooltips","showChosenBars","barWidth","valueRadius","chosenLabel","lowestLabel","lowerLabel","averageLabel","higherLabel","highestLabel","chosenColor","lowestColor","lowerColor","averageColor","higherColor","highestColor","axisXPrecision","axisYPrecision","axisXRemovePadding","dropDefaults","NormalDistribution","chosenValueDataSource","chosen","chosenData","checkUpdate","numericDatasetDataSource","numericData","meanAndStdDataSource","meanAndStd","meanAndStdData","generateEmptyChart","calcMean","calcPdf","mean","stdDeviation","arrayRange","generateDataPointsForRange","std","numPoints","cleanArray","cleanedArray","generateTooltipPercentile","tooltipHtml","percentile","prob","calcCdf","valueColumn","population","arrKey","sample","avgSquaredDiffs","avg","squaredDiffs","calcStandardDeviation","datarow","meanDataSourceColumn","stdDataSourceColumn","chosenValues","errors","valuesDataLabelColumn","valuesDataValueColumn","labelColumn","chosenValueNamePairs","chosenKey","xFarBelowAvg","deviationFragments","farBelowAvg","xBelowAvg","belowAvg","xAvg","xAboveAvg","aboveAvg","xFarAboveAvg","farAboveAvg","farBelowAverage","belowAverage","average","aboveAverage","farAboveAverage","customLabelNames","customColors","zoomDomain","sigma","joinThreshold","chosenPoints","appendAfterCount","toSorted","multiline","chosenPdfs","chosenPointBars","chosenPointsPlucked","chosenPdfsPlucked","sharedParameters","ContentRegion","bindingsOfThisAction","bindingsOfChildAction","copyParameterToChild","sharedParameter","parameterType","copyParameterToPiping","copyParameterFromChild","targetPiping","updating","parameterExists","ignoreHistory","disposeBindings","ScrollSync","syncedDrops","allScrollableElements","syncedDrop","dropName","hideScrollbar","scrollableElement","syncScroll","attachObserver","allElements","$otherElement","mutation","$newElements","DocumentIntelligencePreviewer","DocumentPreviewerComponent","documentsDatasource","documentDataSourceResult","boundingRegionsDataSourceResult","boundingRegionsDatasource","DocumentViewerRendered","documentsDataColumn","boundingRegions","boundingJson","boundingRegionsColumn","boundingRegion","PageNumber","polygon","Polygon","colorColumn","tooltipColumn","backgroundOpacity","initialZoom","getInternalKey","ParameterCollection","initialValues","parentCollection","internalKey","informSubscribers","copyInto","targetObject","originalKey","createChildScope","ctxObject","optionallyTriggerForInitialValue","unsubscribeFromUpdates","subscription","currentDateTime","currentTime","ParameterShell","localsCollection","globalsCollection","systemsCollection","serverSystemParameters","serverSystemParameter","paramName","newLocals","clipboard","createErrorDialog","devTools","$devTools","bookmark","rootMorphId","morphName","designerPortalUrl","errorReportPortalUrl","$buttons","buttonLabel","onButtonClicked","allowErrorReporting","$submitErrorReport","onErrorSubmitted","details","encounteredErrorReferences","RuntimeErrorHandler","pageIsUnloading","listenForPageUnloading","listenForAjaxErrors","listenForWindowErrors","ajaxError","getAjaxError","handleError","$layer","referenceId","previousOnerror","lineNumber","colno","getStack","fullDescription","lastEventId","isRavenError","showErrorDetails","getActualType","typeOfValue","cultureId","baseCulture","findClosestCulture","addCultureInfo","englishName","nativeName","standard","theDate","dateValue","properlyFormatDate","defaultFormatting","Formatting","defaultFormattingId","formattersById","fallbackFormatter","formattingSettings","formattings","addFormatting","getAvailableFormattings","getSettings","getFallbackFormatting","RuntimeUrl","overwriteLicquidParameter","updateParameter","queryStringObject","getValueOf","InAppBrowser","secondValueShouldFallbackToEmptyString","valueShouldBeConvertedToNull","theValue","evaluationHandlers","leftString","rightString","OperandEvaluator","operand","isCurrentContext","operandValue","isQueryOutput","isValue","isParameter","isViewData","queryResults","currentContextValue","leftValue","rightValue","evaluator","operator","fixedValue","ConditionEvaluator","conditionId","conditionName","prepareExpression","operands","forceEvaluation","receivedDatasources","awaitingQueries","previousExecutionData","missingDatasources","findAllDataSources","evaluateOperands","runQueries","queryResult","dataSources","uniq","executableExpression","inputValues","nameToReplace","clearResult","Conditions","conditionsById","evaluatorsById","supportedValues","supportedOperators","idOfConditionOrConditionObject","EventAction","DO_NOT_BATCH","QUERY_BATCH","COMMAND_BATCH","getBatchType","createEventActionRequest","execute","eventActionResponse","eventIsEnabled","getEventActionIdentifier","ThirdPartyLogin","getParameterByName","commandId","isThirdPartyLoginAfterPageLoad","pathname","requiredParameters","theParameter","defaultMessage","afterPageLoad","returnUrl","commandWasFound","eventAction","eventActionFactory","FederatedLogin","isFederatedLoginAfterPageLoad","AbortError","eventCounter","getFullEventName","eventSourceDropId","Eventing","isReloaded","subcriptions","beforeInterceptors","afterInterceptors","initialEventNames","reloadedEventNames","loadedEventNames","subscribe","eventCompleted","hasSubscribers","callBeforeInterceptors","interceptedEventObj","interceptor","subscriptions","eventGroups","eventGroup","bindEventGroup","endLogGroup","conditionEvaluators","conditionEvaluator","conditionData","shouldExecute","invertCondition","eventsData","executeNextEvent","eventId","enterEvent","inverted","createAndExecuteEventActions","mockMailTo","redirect","mockJumpOptions","startLogGroup","eventActions","createEventActions","eventActionData","executeEventActionBatches","createEventActionBatches","currentBatchType","batches","batchType","eventActionBatches","executeNextBatch","createEventActionRequests","eventActionRequests","executeBatch","processEventActionRequest","stopExecuting","eventActionTypeName","eventActionRequest","beforeParameters","afterParameters","logIndentationLevel","logPrefix","groupEnd","ActiveDirectorySyncGroupUsers","BackgroundTask","pollForProgress","waitUntilReady","updateProgress","lastBatchProgress","lastBatchTotal","ticketNumber","isReady","operation","notify","always","BreakEvent","CalendarEventsExportCommand","downloadOnly","calendarExportId","download","prepareParameter","CalendarURLExport","fullUrl","identifierParameter","parameterValue","ChangeParameter","setParameter","targetParameters","updateType","shouldSetParameter","ChangePassword","newPassword","passwordField","newPasswordConfirmation","passwordConfirmationField","oldPassword","oldPasswordField","CheckIn","requestContinuation","tempUrl","CheckOut","CopyDynamicContentCommand","CopyToClipboard","getValueToCopy","CQ","showMail","mapEventName","eventValue","mapArgumentValue","cqStartProcessId","cqStartTodo","cqCancelTodo","cqCancelAndContinueId","cqFinishTodo","cqFinishAndContinueId","cqFinishAll","cqCancelAll","cqGoBack","cqLogin","cqLogOff","mail","cc","mockMailCc","bcc","mockMailBcc","subject","mockMailSubject","mockMailBody","getStateOfEntityFilters","entityFilters","entityFilter","appliedFilters","filters","appliedFilter","restoreStateOfFilters","listShouldBeReloaded","targetList","storedFilters","dropFilter","queriesBatch","shouldBeReloaded","listName","theList","entityFiltersState","Create","validateData","requestCancellation","isDataValid","buildRequest","commandViewModelKeysValues","commandViewModelKeys","extraProperties","isEntityFilterEntity","captcha","getCaptcha","fileUploadType","fileSourceMorph","requiredValueIsFilledIn","uploadBase64Img","base64Img","fileSourceParameter","fd","FormData","onreadystatechange","uploader","fileUploadAllowedFileTypes","fileUploadAllowedCustomFileTypes","maxFileSize","fileUploadModeSmartPhone","skipRequiredFields","isDropValid","captchaField","captchaDrop","captchaInputField","CreateTextFileCommand","FormSubmission","addProperty","hiddenField","addParameters","CsvExportCommand","waitWhileDownloadIsStarting","DeleteCommand","ObjectName","DeleteDynamicContentCommand","DistanceMatrix","DesktopClientCommand","DocumentZip","isDownloadOnly","DomainFunctionCommand","Download","openInNewTab","DownloadFileCommand","forceDownload","ExcelExportCommand","ExecuteEidReader","ok","executeMappings","getDecoratedData","eidMappings","errorCode","monthMap","birthDateExpression","validityDateExpression","valueConvertersByPath","monthName","monthEntry","indexOfNumber","sourcePath","photoBase64","dataFilter","callbackParameter","pageCache","charset","traditional","htmlFor","ExecuteEidSigner","claims","ExecuteMethod","argumentMappings","argumentName","ExecutePlugin","doNotBatch","fileUploads","uploadFile","fileUploadIndex","fileUpload","addFile","fileIndex","ExecuteQuery","initialDataSource","queryWithTheSameParams","listenerId","getDatasourceListener","receiveAsyncData","deleteHandler","ExecuteTimer","ExtractMailAttachment","eYouthAuthenticationCommand","authWindows","eYouthAuthenticationLogoutCommand","Focus","ForEach","shouldContinueWithoutDoingAnything","handleForEach","records","Formula","formula","buildListOfArguments","argumentsWithTheirValue","targetObj","morphsWithViewModelKey","fillInTheValuesFromMorphsWithAViewModelKey","createSeparateListsWithNamesAndValues","argumentsWithTheirValues","bodyOfFunction","getResultFromFunction","targetParameterIsGlobal","GenerateText","generatedText","textTemplate","Import","excelImport","importMorphId","filenameParameter","report","reportMessages","convertReportToErrorMessage","errorMessage","reports","mergeErrorMessages","allMessages","LanguageCommand","refreshPage","refreshPageOrContinueEvents","continuationFunc","getParameters","Login","mfaId","mfaPollingTimer","getUsername","usernameField","getPassword","getMfaCode","mfaCodeField","executeLogin","mfaConfirmed","password","mfaCode","showBody","startPollingMfaStatus","stopPollingMfaStatus","loginCallback","expired","confirmed","localStorageIsAvailable","removeItem","storage","LogoffCommand","isFederated","Mail","Mapping","mappingsId","mappingName","_doMappingFromDataSource","_doMappingFromParameter","_doMappingFromViewModel","_doMappingFromQueryString","_doMappingFromFixedValue","_doMappingFromNullValue","fields","aResult","sourceOutput","targetViewModelKey","targetMorph","getDatasourceListenersThatListenForWithDefaultParams","sourceMorph","sourceViewModelKey","_mapValue","sourceParameter","sourceValue","Mollie","paymentUrl","MollieCreateCustomer","MollieUpdateCustomer","afterInitialization","OfficeAddinLoginCommand","startReadingMessage","startLogin","Office","mailbox","getCallbackTokenAsync","callbackToken","ewsUrl","OpenDocumentInOfficeOnline","documentId","idParameter","wopiWindowName","wopiWindow","isClosed","closedTime","lastModificationDate","closedTimer","closed","checkIsSaved","isSaved","Pain001ExportCommand","Paypal","paymentInitialized","initializedPayment","approvalUrl","PdfDataCommand","PdfMergeCommand","pdfMergeId","PdfMergeCommand_v2","PlatformCommand","PlugInLogin","handleResult","parameterMappings","PushNotificationsCommand","RaiseEvent","eventReceiver","getEventValue","eventParameter","ReadOutlookMessage","storeMessage","messageEntityId","readParameters","printEmailAddress","printEmailAddresses","hasAttachments","attachments","dateTimeCreated","getAsync","addresses","displayMode","emailAddress","Redirect","toLandingPage","redirectToActionWrapper","showOptionsPopup","isJumpToPrevious","getLocalsForNextPage","isJumpOutsideApplication","jumpToNewWindow","linkWillNotCauseNavigationToAnotherPage","applicationName","controllerAction","controllerActionUrl","applicationUrl","isUrlFromParameter","isEmailLink","jumpParameters","localsForNextPage","jumpParameter","destinationActionId","cqConfiguration","navigationTrailEnabled","updateNavigationTrailAndRedirect","redirectToAction","getTargetUrl","rollbackEnabled","fromActionId","fromLocalParameters","toActionId","toLocalParameters","responseListener","RefreshCaptcha","RefreshLoggedInUserCommand","cookieOnly","ReportCommand","downloadBehaviour","entityIdParameter","entityIdParameterIsGlobal","entityIdValue","RssCommand","rssId","SaveMorph","saveableMorphId","ScheduledTaskCommand","ScrollTo","ServerCommand","SetParameterFromEvent","opposites","hasEnoughRoomAtTheRight","requiredSpace","srcElementX","hasEnoughRoomAtTheLeft","hasEnoughRoomAtTheBottom","srcElementY","hasEnoughRoomAtTheTop","hasEnoughRoomAtLeftOrRight","targetElementWidth","srcElementWidth","hasEnoughRoomAtTopOrBottom","targetElementHeight","srcElementHeight","hasEnoughRoom","positionA","positionB","determinePosition","SetVisibility","showMorph","preferedPositionA","preferedPositionB","allPositions","getBestPosition","fbInitialized","ShareOnFacebook","showDialog","fbAsyncInit","FB","facebook","xfbml","head","ShareOnLinkedIn","mini","linkedIn","ShareOnTwitter","twitter","hashtags","via","Sms","TransformRichText","sourceString","getResultFromTransform","writeResult","resultingRichText","getTransformedText","caseInsensitiveParameters","UndoCheckOut","Update","UrlGenerator","includeGlobals","WindowsLoginCommand","WordExportCommand","XmlExportCommand","PopupGoogleLogin","signIn","accounts","client_id","clientId","cancel_on_tap_outside","prompt_parent_id","handlePopupResponse","prompt","isNotDisplayed","renderButton","isSkippedMoment","credential","handleLoginResponse","BigBlueButtonJoinMeetingCommand","joined","redirectUrl","BigBlueButtonStartMeeting","GoogleGeocodingQuery","DownloadExternalDocumentCommand","directDownloadEnabled","RawSql","AsyncSender","AsyncEventTrigger","AsyncEventReceiver","Share","shareData","shareType","textToShare","share","sourceFileDataSource","sourceFileOutput","downloadUrl","metadata","disposition","File","canShare","LabelImageCommand","WebserviceClient","ChatGPTBatchCommand","ChatGPTCommand","ChatGPTImageCommand","BusinessLogicBlockCommand","runTrace","nextContinuation","firstContinuation","parentActionInstanceId","entering","entered","onBeforeInstallPrompt","handleBeforeInstallPrompt","AddToHomeScreenCommandMpa","AddToHomeScreenCommandSpa","userChoice","outcome","TranslationCommand","AsyncDeletion","EnablePushNotificationsCommand","CQCommand","ValidationCommand","afterValidationCompleted","isEverythingValid","APICallv2Command","currentEventActionId","EventActionFactory","DefaultVisibility","visibilityRegistrationId","dataSourceForVisibility","dataSourceOutputForVisibility","updateVisibilityFromParameter","parameterForVisibilityIsBound","parameterForVisibility","fromCondition","conditionForVisibility","fromParentState","parentWithState","getDropById","visibleWhenParentHasStates","parentRule","visibilityRule","$visibilityFromParentRules","Datasources","datasourceListeners","defaultParams","listenerToRemove","registerDatasource","getDatasources","getDatasourceNames","datasourceTypesToIgnore","datasourceName","unique","getDatasourceByName","dataSourceName","getEntityTypeOfDatasource","entityDefinitionName","getDatasourceOutputs","keepOriginalOrder","hideField","updateDatasource","ItemVisibility","shouldGetVisibilityFromParent","updateVisibilityFromDataRow","getParametersFromQueryString","queryStringPart","splitPosition","paramValue","QueryString","pushState","argArray","getParameterNames","RuntimePiping","createRoot","actionDrop","parentDrop","childParameters","childPiping","childQueryDispatcher","NavigatorMpa","friendlyNames","route","onpaste","cssutil","ApplicationValidation","annotations","presses","isProductionModeEnabled","handleKeyUp","keyPressTime","previousKeyPressTime","numberToTrigger","cssFile","Validator","validatorConfig","loginUrl","designUrl","portalUrl","RuntimeClone","$masterPageClone","$actionClone","$topBar","onCancel","$closest","$pool","RuntimeDropPicker","canPick","createClone","destroyClone","IssueTracking","picking","handleSelection","createUrl","attach","shouldRefresh","touchId","translateLength","$pullDownContainer","$pullDownIndicator","webkitOverflowScrolling","pullDownAction","PullDownEvents","searchElement","fromIndex","pivot","hasDontEnumBug","dontEnums","dontEnumsLength","Element","mouseEvents","usePolyfillIf","$1","register_mouse_events","origDisplayAttribute","underneathElem","serviceFactory","LicquidRuntimeMpa","universalLinks","globalPiping","performance","navigation","TYPE_RELOAD","embedded","withOnChanged","_uid","req","onLoad","isBuild","paramRegex","formatUrl","app","applicationServiceFactory","LicquidRuntimeSpa","globalServices","globalService","updateHistory","replaceState","hideUrl","friendlyName","currentParameters","LicquidRuntimeRaven","licquidRuntime","raven","frontEndDsn","issuesProjectIdentifier","bookmarkType","releaseName","releaseNumber","user","startRuntime"],"mappings":"AACAA,OCDA,2BAEA,IAaAC,EAAA,SAAAC,EAAAC,EAAAC,GACA,IAAAC,EAAA,IAAAC,KACAD,EAAAE,QAAAF,EAAAG,WAAAJ,GAAA,OAGAK,SAAAC,OAAAR,EAAA,IAAAC,EAAA,mBAAAE,EAAAM,aACA,EAMA,OACAC,IA1BA,SAAAV,GAIA,IAHA,IAAAW,EAAAX,EAAA,IACAY,EAAAL,SAAAC,OAAAK,MAAA,KAEAC,EAAA,EAAAA,EAAAF,EAAAG,OAAAD,IAAA,CAEA,IADA,IAAAE,EAAAJ,EAAAE,GACA,MAAAE,EAAAC,OAAA,IAAAD,IAAAE,UAAA,GACA,OAAAF,EAAAG,QAAAR,GAAA,OAAAK,EAAAE,UAAAP,EAAAI,OAAAC,EAAAD,OACA,CAEA,WACA,EAgBAhB,MACAqB,OAPA,SAAApB,GACAD,EAAAC,EAAA,MACA,EAQA,IACAF,OClCA,WACA,YACA,SACA,UACA,aACA,SACA,cACA,SAAAuB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAjB,GACA,IAAAkB,EAAAJ,EAAAI,SACAC,EAAA,KAwEAC,EAAA,WACA,OAAAF,EAAAG,UACA,EAEAC,EAAA,WACA,OAAAJ,EAAAK,qBACA,EAqFAC,GAAA,IAAAC,gBAAAC,OAAAC,SAAAC,QAAA1B,IAAA,UAAAF,EAAAE,IAAA,aAAAkB,OAAAE,OACAO,EAAA,IAAAJ,gBAAAC,OAAAC,SAAAC,QAAA1B,IAAA,UAAAF,EAAAE,IAAA,aAAAkB,OAAAE,OAKAQ,EAAA,WACA,mBAAAV,OAAAE,KACA,EAOAS,EAAA,eAAAC,KAAAC,UAAAC,UAAAC,eASA,OACAC,KA3LA,SAAAC,GACAnB,EAAAoB,iBACAvB,EAAA,oBAAAwB,GACAA,EAAAC,eAAA,CACAC,GAAAvB,EAAAwB,SAEAH,EACArB,SAAAoB,iBACA,CACAK,KAAA,CACAhB,SAAA,YACAiB,YAAA1B,EAAA2B,iBACAC,OAAA5B,EAAAG,YAAA,GACA0B,YAAA7B,EAAAK,uBAAA,GACAyB,UAAA9B,EAAA+B,eAAA,IAEAC,aAAA,SAAAC,GAEA,OADAA,EAAAC,YAAA,iBAAAlC,EAAAG,WAAAH,EAAAK,uBACA4B,CACA,IAEAE,UAEAd,EACAe,SAAA,WACAnC,EAAAoB,EAEAF,GACA,GACA,IAEAA,IAGApB,EAAAS,QAAA6B,GAAA,qBAEA,GACA,EAuJAC,oBAjJA,WACA,OAAAtC,EAAAuC,gBACA,EAgJAC,2BA9IA,WACA,OAAAxC,EAAAwC,4BAAAhC,OAAAO,UAAA0B,aACA,EA6IAC,kBA3HA,WACA,OAAA1C,EAAA2C,cACA,EA0HAC,iBAxIA,WACA,OAAA5C,EAAA6C,aACA,EAuIAC,qBArIA,WACA,OAAA9C,EAAA+C,iBACA,EAoIAC,oBAlIA,WACA,OAAAhD,EAAAiD,gBACA,EAiIAC,kBA/IA,WACA,OAAAlD,EAAAmD,cACA,EA8IAC,0BA5JA,WACA,OAAApD,EAAAqD,sBACA,EA2JAC,yBAdA,WACA,OAAAtD,EAAAuD,sBACA,EAaAC,iBAlHA,WACA,OAAAxD,EAAAyD,aACA,EAiHAvD,gBACAE,2BACAsD,WAzHA,SAAAC,GACA,OAAA3D,EAAA4D,QAAAD,CACA,EAwHAE,UAlHA,SAAAF,GACA,OAAA3D,EAAA8D,OAAAH,CACA,EAiHAI,aA/GA,SAAAJ,GACA,OAAA3D,EAAAgE,UAAAL,CACA,EA8GAM,gBA5GA,SAAAN,GACA,OAAA3D,EAAAkE,aAAAP,CACA,EA2GAQ,cAzGA,SAAAR,GACA,OAAA3D,EAAAoE,WAAAT,CACA,EAwGAU,kBAtGA,SAAAV,GACA,OAAA3D,EAAAsE,eAAAX,CACA,EAqGAY,UAnGA,WACA,OAAAvE,EAAAwB,MACA,EAkGAgD,cAhGA,WACA,OAAAxE,EAAAyE,UACA,EA+FAC,eA7FA,SAAAf,GACA,OAAA3D,EAAA2E,YAAAhB,CACA,EA4FAiB,mBAvFA,SAAAjB,GACA,OAAA3D,EAAA6E,gBAAAlB,CACA,EAsFAmB,iBApFA,SAAAnB,GACA,OAAA3D,EAAA+E,cAAApB,CACA,EAmFAqB,eAjFA,SAAArB,GACA,OAAA3D,EAAAiF,YAAAtB,CACA,EAgFAuB,aA7FA,SAAAvB,GACA,OAAA3D,EAAA6E,gBAAA,mBAAA7E,EAAAG,WAAA,gBAAAH,EAAAK,sBAAA,IAAAsD,CACA,EA4FAwB,WA7DA,SAAAC,GAGA,OAFAA,GAAA,IAAAA,EAAA3F,QAAA,OACA2F,IAAAC,MAAA,KAPA7E,OAAAC,SAAA6E,OACA9E,OAAAC,SAAA6E,OAAA,IACA9E,OAAAC,SAAA8E,SAAA,KAAA/E,OAAAC,SAAA+E,UAAAhF,OAAAC,SAAAgF,KAAA,IAAAjF,OAAAC,SAAAgF,KAAA,KAMAL,CACA,EA0DAM,mBAhFA,WACA,OAAA1F,EAAA+B,aACA,EA+EA4D,eA7EA,WACA,OAAA1F,CACA,EA4EA2F,mBA1DA,WACA,OAAA5F,EAAA6F,eACA,EAyDAjF,oBACAkF,aArDA,kBAAAxF,CAAA,EAsDAyF,kBArDA,kBAAApF,CAAA,EAsDAqF,aAhDA,WACAlH,EAAAY,OAAAkB,IACA,EA+CAqF,eA/EA,SAAAC,GACAjG,EAAAiG,CACA,EA8EAC,QAAA,CACAC,SA7CA,WACA,OAAAvF,CACA,GA8CA,IAEAzC,OAAA,2BAAAiI,GAAA,OAAAA,CAAA,IAEAjI,OChPA,wBACA,aAEA,IAAAkI,EAAA,SAAAC,EAAAC,GAEA,IAAAC,EAAA,aACAA,EAAAC,WAFAF,KAAAG,MAEAD,UACAH,EAAAG,UAAA,IAAAD,EACAF,EAAAG,UAAAE,YAAAL,EACAA,EAAAD,SAEAE,EAAAE,UAAAE,cAAAC,OAAAH,UAAAE,cACAJ,EAAAE,UAAAE,YAAAJ,EAEA,EAMA,OACAF,SACAQ,eANA,SAAAC,GACAA,EAAAT,QACA,EAMA,IAGAlI,OC3BA,yCAAA0B,GACA,aAEA,SAAAkH,EAAAD,EAAAE,GACAN,KAAAI,MACAJ,KAAAO,eAAA,GACAP,KAAAM,SAAAnH,EAAAqH,QAAA,CAAAF,IAAA,IACA,CAwEA,OAtEAD,EAAAN,UAAAU,YAAA,SAAAC,EAAAC,GAGA,OAFAX,KAAAY,WAAAF,GACAV,KAAAO,eAAAG,GAAAG,KAAAF,GACAX,KAAAI,GACA,EAEAC,EAAAN,UAAAe,gBAAA,SAAAJ,EAAAC,GACA,IAAAI,EAAAf,KACAgB,EAAA,WACAL,EAAAM,MAAAjB,KAAAkB,WACAH,EAAAI,eAAAT,EAAAM,EACA,EAGA,OAFAA,EAAAI,gBAAAT,EACAX,KAAAS,YAAAC,EAAAM,GACAhB,KAAAI,GACA,EAEAC,EAAAN,UAAAoB,eAAA,SAAAT,EAAAC,GACAX,KAAAY,WAAAF,GACA,IAAAW,EAAAlI,EAAAmI,KAAAtB,KAAAO,eAAAG,IAAA,SAAAa,GACA,OAAAA,IAAAZ,GAAAY,EAAAH,kBAAAT,CACA,IACA,GAAAU,EAAA,CACA,IAAAG,EAAAxB,KAAAO,eAAAG,GAAA5H,QAAAuI,GACArB,KAAAO,eAAAG,GAAAe,OAAAD,EAAA,EACA,CACA,OAAAxB,KAAAI,GACA,EAEAC,EAAAN,UAAA2B,gBAAA,SAAAhB,GACAV,KAAAY,WAAAF,GAEA,IAAAiB,EAAAxI,EAAAyI,KAAAV,UAAA,GAMA,OAHA/H,EAAA0I,QAAA7B,KAAAO,eAAAG,GAAAhC,SAAA,SAAAiC,GACAA,EAAAM,MAAAjB,KAAA2B,EACA,IACA3B,KAAAI,GACA,EAEAC,EAAAN,UAAA+B,aAAA,SAAApB,GAEA,OADAV,KAAAY,WAAAF,GACAV,KAAAO,eAAAG,GAAAhC,OACA,EAEA2B,EAAAN,UAAAa,WAAA,SAAAF,GACA,GAAAV,KAAAM,SAAAnH,EAAA4I,SAAA/B,KAAAM,OAAAI,GACA,UAAAsB,WAAA,+BAAAtB,GACAV,KAAAO,eAAAG,KACAV,KAAAO,eAAAG,GAAA,GACA,EAEAL,EAAAN,UAAAkC,oBAAA,WACA,GAAAjC,KAAAM,OAAA,CAGAY,UAAAxI,QAAAwI,UAAA,KACAlB,KAAAM,OAAA,MAEA,IAAAS,EAAAf,KAOA,OANA7G,EAAA+I,MAAAhB,WACAV,UACA2B,UACAC,MAAA,SAAA1B,GACAK,EAAAT,OAAAO,KAAAH,EACA,IACAV,KAAAI,GAXA,CAYA,EAEA,CACAiC,eAAA,SAAAjC,EAAAE,GACA,GAAAF,EAAA6B,oBACA7B,EAAA6B,oBAAA3B,OADA,CAIA,IAAAgC,EAAA,IAAAjC,EAAAD,EAAAE,GACAF,EAAAK,YAAAtH,EAAAoJ,KAAAD,EAAA7B,YAAA6B,GACAlC,EAAAU,gBAAA3H,EAAAoJ,KAAAD,EAAAxB,gBAAAwB,GACAlC,EAAAsB,gBAAAvI,EAAAoJ,KAAAD,EAAAZ,gBAAAY,GACAlC,EAAAe,eAAAhI,EAAAoJ,KAAAD,EAAAnB,eAAAmB,GACAlC,EAAA0B,aAAA3I,EAAAoJ,KAAAD,EAAAR,aAAAQ,GACAlC,EAAA6B,oBAAA9I,EAAAoJ,KAAAD,EAAAL,oBAAAK,EAPA,CAQA,EAEA,IACA7K,OC/FA,kBACA,SACA,SAAA+K,GACA,aA2BA,OAEAC,cA3BA,SAAAC,EAAAC,EAAAC,EAAAC,GACA,OAAAH,GAAA,IAAAA,EAAAI,MAAApK,OAEA8J,EAAAO,OAAAL,EAAAI,OAAA,SAAAE,EAAAC,GAGA,OAFAN,EAAAO,WAAAC,sBAAAF,EAAAG,WAEAC,SAAAV,GAAA,OAAAE,GACAS,MAAA,SAAAC,GACA,GAAAA,EAAAC,gBAMA,CACA,IAAAC,EAAAR,EAAAS,SAAA,UAIA,OAHAD,EAAAE,SACAf,EAAAa,EAAAG,iBAEAZ,CACA,CAXA,IAAAa,EAAAZ,EAAAS,SAAA,YAIA,OAHAG,EAAAF,SACAf,EAAAiB,EAAAD,kBAEA,CAQA,GACA,OArBApB,GAAA,EAsBA,EAOA,IACA/K,OCpCA,WACA,aACA,SACA,OACA,KACA,SACA,gBACA,mBACA,SAAA0B,EAAAC,EAAAoJ,EAAAsB,EAAAC,EAAAzB,EAAA0B,GACA,aAIA,IAAAC,EAAA,CACA3I,KAAA,CACA4I,YAAA,WACAC,SAAA,CAAAC,EAAA,EAAAC,EAAA,GACAC,KAAA,CAAAF,EAAA,IAAAC,EAAA,IACAE,OAAA,EACAC,QAAA,EACAC,UAAA,EACAC,WAAA,CACAC,WAAA,aACAC,eAAA,GACAC,iBAAA,GACAC,iBAAA,IAEApB,SAAA,GACAqB,mBAAA,EACAC,wBAAA,aACAC,UAAA,EACAC,QAAA,GAEAC,WAAA,GACAC,UAAA,EACAC,oBAAA,GAGAC,EAAA,SAAAC,EAAAC,EAAAC,GACArM,EAAAuG,QAAA,EAAAK,KAAAiE,EAAAuB,EAAAC,GAEAzF,KAAA0F,KAAA1F,KAAA1E,KAAAoK,KAEA1F,KAAAuF,WACAI,SAAA,gBACAC,IAAA,wBAEA5F,KAAA6F,OAAA,KACA7F,KAAA8F,KAAA,GAEA9F,KAAA+F,aAAA,GAEA/F,KAAAgG,cAAA,GAEA1D,EAAAD,eAAArC,KAAA,oCAEAA,KAAAiG,eAEA,mBAAAX,EAAAY,cACAZ,EAAAY,aAAAlG,MAGAsF,EAAA5D,gBAAA,eAAA1B,KACA,EA8rBA,OA5rBAsF,EAAAvF,UAAAoG,qBAAAC,EACAd,EAAAvF,UAAA0E,UAAA,EACAa,EAAAvF,UAAAsG,uBAAA,WACA,QACA,EAEAtC,EAAA5D,eAAAmF,GAEAhD,EAAAD,eAAAiD,EAAA,gBAEAA,EAAAvF,UAAA3G,EAAA,SAAAkN,GACA,OAAAtG,KAAAuF,SAAAjE,KAAAgF,EACA,EAEAhB,EAAAvF,UAAAwG,eAAA,SAAAC,GACAxG,KAAAuF,SACAK,IAAA,CACAa,KAAA,OAAAD,EAAAC,KAAA,OAAAD,EAAAC,KAAA,KACAC,IAAA,OAAAF,EAAAE,IAAA,OAAAF,EAAAE,IAAA,KACAC,MAAA,OAAAH,EAAAG,MAAA,OAAAH,EAAAG,MAAA,KACAC,OAAA,OAAAJ,EAAAI,OAAA,OAAAJ,EAAAI,OAAA,OAEAC,SAAAzN,EAAA,QACA,EAGAkM,EAAAvF,UAAA+G,qBAAA,SAAAvB,GACA,IAAAxE,EAAAf,KAEA,OAAAwC,EAAAzB,EAAAgG,aACAzD,MAAA,WACA,IAAAvC,EAAAiG,QAAA,CAEAjG,EAAAwE,SAAAsB,SAAAtB,GACA,IAAA0B,EAAA9N,EAAA+N,IAAAnG,EAAAoE,YAAA,SAAAxM,GAEA,OADAA,EAAAwO,SAAApG,EAAAoG,SACAxO,CACA,IACAyO,EAAArG,EAAA4B,OAAA0E,YAAAC,YAAAL,GACA,OAAAzE,EAAA+E,IAAAxG,EAAAyG,gCAAAJ,GAPA,CAQA,IACA9D,MAAA,WACA,OAAAvC,EAAA0G,YACA,GACA,EAEAnC,EAAAvF,UAAA2H,uBAAA,WACA,WAAA1H,KAAAqF,sBAEArF,KAAA6F,QAEA7F,KAAA6F,OAAA6B,wBACA,EAEApC,EAAAvF,UAAA4H,4BAAA,SAAA/F,GACA,OAAAA,EAAAtG,KAAAsM,UACAhG,EAAAiG,OAAA7H,KAAA2C,OAAAmF,gBACAlG,EAAAyD,oBAAArF,KAAAmH,SAAAY,YACAnG,EAAAiG,OAAA7H,KAAAmH,SAAAY,aACAnG,EAAAtG,KAAA4J,QAAAlF,KAAAmH,SAAAa,cACApG,EAAAiG,OAAA7H,KAAAmH,SAAAa,eAGApG,EAAAiG,OAAA7H,KAAAuF,SACA,EAEAD,EAAAvF,UAAAyH,gCAAA,SAAAJ,GACA,IAAArG,EAAAf,KACAiI,EAAA,GAOA,OALA9O,EAAAiJ,KAAAgF,GAAA,SAAAxF,GACAb,EAAAmH,QAAAtG,GACAqG,EAAApH,KAAAE,EAAA4G,4BAAA/F,GACA,IAEAqG,CACA,EAEA3C,EAAAvF,UAAA8H,OAAA,SAAAtC,GACA,IAAAxE,EAAAf,KAEA,OAAAwC,EAAAzB,EAAAgG,aACAzD,MAAA,WACA,IAAAvC,EAAAiG,QAAA,CAEAjG,EAAAwE,SAAAsB,SAAAtB,GAEA,IAAA0C,EAAA,GAMA,OAJA9O,EAAA0I,QAAAd,EAAA+E,MAAA,SAAAlE,GACAqG,EAAApH,KAAAE,EAAA4G,4BAAA/F,GACA,IAEAY,EAAA+E,IAAAU,EATA,CAUA,IACA3E,MAAA,WACA,OAAAvC,EAAA0G,YACA,GACA,EAEAnC,EAAAvF,UAAAgH,UAAA3N,EAAA+O,KAEA7C,EAAAvF,UAAA0H,WAAArO,EAAA+O,KAEA7C,EAAAvF,UAAAqI,OAAA,WACApI,KAAAqI,mBAEAlP,EAAA0I,QAAA7B,KAAA8F,MAAA,SAAAlE,GAEAA,EAAAwG,QACA,GACA,EAGA9C,EAAAvF,UAAAsI,iBAAAjP,EAAA+O,KAEA7C,EAAAvF,UAAAuI,MAAA,SAAAC,GACAvI,KAAAwI,QAAAD,GAEApP,EAAA0I,QAAA7B,KAAA8F,MAAA,SAAAlE,GACAA,EAAA0G,MAAAC,EACA,GACA,EAEAjD,EAAAvF,UAAAyI,QAAA,SAAAD,GACA,EAEAjD,EAAAvF,UAAA0I,UAAA,WACA,OAAAzI,KAAAyE,YAGAzE,KAAA6F,QACA7F,KAAA6F,OAAA4C,YAGA,EAEAnD,EAAAvF,UAAA2I,qBAAA,WACA1I,KAAA2I,0BAAAC,YAAA,eACA5I,KAAAyE,UAAA,EACAzE,KAAA6I,OACA,EAEAvD,EAAAvF,UAAA+I,KAAA,WAEA,IAAA/H,EAAAf,KACA+I,EAAA/I,KAAA1E,KAAA0N,cACA,SAAAD,GAAA3C,MAAA2C,GACA/I,KAAA1E,KAAA2N,mBACA7P,EAAA4G,KAAA2I,2BAAA/C,IAAA,CAAAsD,kBAAAlJ,KAAA1E,KAAA2N,kBAAAE,MAAAnJ,KAAA1E,KAAA2N,kBAAAG,OACApJ,KAAA2I,0BAAAC,YAAA,eACA5I,KAAA2I,0BAAAhD,SAAA,YAAAoD,GACA/I,KAAA2I,0BAAAU,IAAA,2FACAtI,EAAA4H,0BAAAC,YAAA,YAAAG,GACAhI,EAAA0D,UAAA,EACA1D,EAAA8H,OACA,KAEA7I,KAAA0I,sBAEA,EAEApD,EAAAvF,UAAAuJ,qBAAA,WACAtJ,KAAA2I,0BAAAhD,SAAA,eACA3F,KAAAyE,UAAA,EACAzE,KAAAuJ,QACA,EAEAjE,EAAAvF,UAAAyJ,KAAA,WAEA,IAAAzI,EAAAf,KACA+I,EAAA/I,KAAA1E,KAAAmO,cACA,SAAAV,GAAA3C,MAAA2C,GACA/I,KAAA1E,KAAAoO,mBACAtQ,EAAA4G,KAAA2I,2BAAA/C,IAAA,CAAAsD,kBAAAlJ,KAAA1E,KAAAoO,kBAAAP,MAAAnJ,KAAA1E,KAAAoO,kBAAAN,OACApJ,KAAA2I,0BAAAhD,SAAA,YAAAoD,GACA/I,KAAA2I,0BAAAU,IAAA,2FACAtI,EAAA4H,0BAAAC,YAAA,YAAAG,GACAhI,EAAA4H,0BAAAhD,SAAA,eACA5E,EAAA0D,UAAA,EACA1D,EAAAwI,QACA,KAEAvJ,KAAAsJ,sBAEA,EAEAhE,EAAAvF,UAAA4I,wBAAA,WACA,aAAA3I,KAAA6F,OACA7F,KAAA6F,OAAA8D,6BAAA3J,MAEAA,KAAAuF,QAEA,EAEAD,EAAAvF,UAAA4J,6BAAA,SAAAC,GACA,OAAAA,EAAArE,QACA,EAEAD,EAAAvF,UAAA8J,OAAA,SAAAf,GACA,IAAA5H,UAAAxI,SACAoQ,GAAA9I,KAAAyI,aAEAK,EACA9I,KAAA8I,OAEA9I,KAAAwJ,MACA,EAEAlE,EAAAvF,UAAA8I,MAAA,WACA7I,KAAAyI,cAGAzI,KAAA8J,aAEA3Q,EAAA0I,QAAA7B,KAAA8F,MAAA,SAAAlE,GACAA,EAAAiH,OACA,IACA,EAEAvD,EAAAvF,UAAA+J,WAAA1Q,EAAA+O,KAEA7C,EAAAvF,UAAAwJ,OAAA,WACAvJ,KAAAyI,cAGAzI,KAAA+J,cAEA5Q,EAAA0I,QAAA7B,KAAA8F,MAAA,SAAAlE,GACAA,EAAA2H,QACA,IACA,EAEAjE,EAAAvF,UAAAgK,YAAA3Q,EAAA+O,KAEA7C,EAAAvF,UAAAiK,gBAAA,SAAAC,GACA,OAAAjK,KAAA1E,MAAA0E,KAAA1E,KAAAoI,UAAA1D,KAAA1E,KAAAoI,SAAAuG,IAAA,EACA,EAEA3E,EAAAvF,UAAAmK,kBAAA,SAAAD,EAAAE,EAAAC,EAAAC,GACA,IAAAtJ,EAAAf,KACAoK,KAAArJ,EAAAwE,SAEA,IAAA+E,EAAAtK,KAAAgK,gBAAAC,GACAM,EAAAJ,EAAA,wBAAAF,EAEAG,EAAAI,IAAAD,GAEAD,EAAA3G,SACA3D,KAAAyK,sBAAAL,EAAAG,GAAA,WAUA,OATAxJ,EAAA6B,aAAA0H,EAAA1G,gBAAAyG,OAAAjE,SAAArF,EAAA2J,kBAAAT,KASAlJ,EAAA4J,YACA,GAEA,EAEArF,EAAAvF,UAAA4K,WAAA,WACA,QAAA3K,KAAA6F,SAEA,SAAA7F,KAAA6F,OAAAH,MAEA1F,KAAA6F,OAAA8E,aACA,EAEArF,EAAAvF,UAAA6K,sBAAA,SAAAX,EAAAI,EAAAQ,EAAAnK,GACA,IAAA4J,EAAAtK,KAAAgK,gBAAAC,GACA,GAAAK,EAAA3G,QAAA,CACA,IAAA+G,EAAA1K,KAAA0K,kBAAAT,GACAjK,KAAA4C,aAAA0H,EAAA1G,gBAAAyG,EAAAQ,EAAAnK,EAAAgK,EACA,CACA,EAEApF,EAAAvF,UAAA2K,kBAAA,SAAAT,GACA,qBAAAA,GAAA,eAAAA,CACA,EAEA3E,EAAAvF,UAAA+K,eAAA,SAAAb,GAEA,OADAjK,KAAAgK,gBAAAC,GACAtG,OACA,EAEA2B,EAAAvF,UAAA6C,aAAA,SAAAgB,EAAAyG,EAAAQ,EAAAnK,EAAAgK,EAAAK,GACA,GAAA/K,KAAA2C,OAAA,MAEAyD,IAAAiE,IACAA,EAAArK,KAAAgL,sBAEA,IAKAC,EALAC,EAAAL,GAAA7K,KAAAuF,SAEA2F,aAAA9R,IACA8R,IAAA7S,IAAA,IAGAqI,IACAuK,EAAA,CACAE,QAAAzK,EAAAyK,QACAC,QAAA1K,EAAA0K,QACAC,QAAA3K,EAAA2K,QACAC,QAAA5K,EAAA4K,QACAC,MAAA7K,EAAA6K,MACAC,MAAA9K,EAAA8K,MACAC,QAAA/K,EAAA+K,QACAC,QAAAhL,EAAAgL,UAIA,IAAAC,EAAA,CACA/J,KAAA5B,KACA4L,QAAAV,EACAW,WAAAX,EAAAY,wBACAb,gBACAP,uBAGA1K,KAAA2C,OAAAe,SAAAqI,QAAAnI,EAAA+H,EAAAtB,EAAA,KAAAU,EAhCA,CAiCA,EAEAzF,EAAAvF,UAAAiL,mBAAA,WACA,YAAA5E,IAAApG,KAAAmG,gBACAnG,KAAAmG,gBAEAnG,KAAA6F,OACA7F,KAAA6F,OAAAmF,0BADA,CAIA,EAEA1F,EAAAvF,UAAAiM,wBAAA,WACAhM,KAAAiM,UACAjM,KAAAuF,SAAAI,SAAA,iBAEA3F,KAAAuF,SAAAqD,YAAA,gBACA,EAEAtD,EAAAvF,UAAAkM,QAAA,WACA,OAAAjM,KAAAkM,cAAAlM,KAAAmM,UACA,EAEA7G,EAAAvF,UAAAqM,uBAAA,SAAAC,EAAAzI,GACA5D,KAAA4C,aAAAgB,EAAA,oBAAAyI,EACA,EAEA/G,EAAAvF,UAAAuM,kBAAA,SAAAD,GACA,OAAArI,EAAAvB,cAAAzC,KAAA1E,KAAAoH,WAAA1C,KAAA2C,OAAA3C,KAAAoM,uBAAA7J,KAAAvC,KAAAqM,GAAArM,KAAAuM,WACA,EAEAjH,EAAAvF,UAAAoM,SAAA,WACA,IAAAK,EAAAxM,KAAAuM,WAEA,OAAAC,UAAA,IAAAA,GAIA,IAAAA,EAAA9T,MAKA,EAEA4M,EAAAvF,UAAA0M,YAAA,WACA,OAAAzM,KAAAmH,UAAAnH,KAAAmH,SAAAuF,mBAAA1M,KACA,EAEAsF,EAAAvF,UAAA4M,cAAA,WACA,GAAA3M,KAAA4M,WAAA5M,KAAAyM,cAAA,CACA,IAAA7G,EAAA,CACAzB,SAAA,WACA0I,QAAA,QACAtI,OAAAvE,KAAA8M,aAGA9M,KAAA1E,KAAAyR,YACAnH,EAAAmH,UAAA/M,KAAA1E,KAAAyR,UAAA,OAGA,IAAA/M,KAAA1E,KAAA2J,UACAW,EAAAoH,MAAAhN,KAAA1E,KAAAgJ,KAAAF,EAAA,KACAwB,EAAAqH,OAAA,UACA,MAAAjN,KAAA1E,KAAAqL,OAAA,MAAA3G,KAAA1E,KAAAmL,MACAb,EAAAsH,WAAA,OACAtH,EAAAuH,YAAAnN,KAAA1E,KAAAqL,MAAA,KACAf,EAAAoH,MAAAhN,KAAA1E,KAAAgJ,KAAAF,EAAA,MACA,MAAApE,KAAA1E,KAAAqL,OAAA,MAAA3G,KAAA1E,KAAAmL,MACAb,EAAAsH,WAAAlN,KAAA1E,KAAAmL,KAAA,KACAb,EAAAuH,YAAAnN,KAAA1E,KAAAqL,MAAA,KACAf,EAAAoH,MAAA,eAAAhN,KAAA1E,KAAAmL,KAAA,KAAAzG,KAAA1E,KAAAqL,MAAA,QAEAf,EAAAsH,YAAA,MAAAlN,KAAA1E,KAAAmL,KAAAzG,KAAA1E,KAAAmL,KAAAzG,KAAA1E,KAAA6I,SAAAC,GAAA,KACAwB,EAAAoH,MAAAhN,KAAA1E,KAAAgJ,KAAAF,EAAA,MAGApE,KAAAuF,SAAAK,OAEA,IAAAwH,EAAA,CACAC,YAAA,MAAArN,KAAA1E,KAAAoL,IAAA1G,KAAA1E,KAAAoL,IAAA1G,KAAA1E,KAAA6I,SAAAE,GAAA,MAGA,MAAArE,KAAA1E,KAAAsL,SACAwG,EAAAE,cAAAtN,KAAA1E,KAAAsL,OAAA,MAEA5G,YAAAmH,SACAnH,KAAA2C,OAAA4K,YAAA3H,IAAAwH,GAEApN,KAAA6F,OAAAN,SAAAK,IAAAwH,EAEA,eAAApN,KAAA6F,QAAA,MAAA7F,KAAA6F,eAAA7F,KAAA0H,yBAkBA,MAAA1H,KAAA6F,OACA7F,KAAA6F,OAAA2H,sBAAAxN,MAEAA,KAAAuF,SAAAK,IAAA5F,KAAAyN,eAAAzN,KAAA1E,WArBA,CACA,IAAAwK,EAAA9F,KAAAmH,SAAA5B,SAAA,GAEA,GAAAvF,KAAAuF,SAAA,KAAAO,EAAA,CACA,IAAAD,EAAA7F,KAAAuF,SAAAM,SAAA,GAEA,IAAA7F,KAAA1E,KAAA4J,QAAAlF,KAAA1E,KAAAsM,YAAA5H,KAAAmH,SAAAa,cAAA,CACA,IAAA0F,EAAA1N,KAAAmH,SAAAa,cAAA,GACAnC,IAAA6H,GACA1N,KAAAuF,SAAAsB,SAAA6G,EACA,MAAA1N,KAAA1E,KAAA4J,QAAAlF,KAAA1E,KAAAsM,WACA/B,IAAAC,GACA9F,KAAAuF,SAAAsB,SAAAf,EAEA,CAEA9F,KAAA6F,OAAA2H,sBAAAxN,KACA,CAQAA,KAAA1E,KAAAqS,UAAA3N,KAAA1E,KAAAqS,SAAAhK,SACA3D,KAAA2C,OAAAmF,eAAApM,GAAA,SAAAsE,KAAA4N,uBAAArL,KAAAvC,MACA,EAEAsF,EAAAvF,UAAA2M,mBAAA,SAAAmB,GACA,QACA,EAEAvI,EAAAvF,UAAA6M,QAAA,SAAAhL,GACA,QACA,EAEA0D,EAAAvF,UAAA6N,uBAAA,WACA,IAAAE,EAAA9N,KAAA2C,OAAAmF,eAAAgG,YACA9N,KAAAuF,SAAAK,IAAA,MAAA5F,KAAA1E,KAAA6I,SAAAE,EAAAyJ,IAAA9N,KAAA1E,KAAAqS,SAAAI,OAAA,KACA,EAEAzI,EAAAvF,UAAAyN,sBAAA,SAAA5D,GACA,IAAArF,EAAAqF,EAAAkD,YACAlH,EAAA5F,KAAAyN,eAAA7D,EAAAtO,KAAAiJ,GACAqF,EAAArE,SAAAK,MACA,EAEAN,EAAAvF,UAAA+M,UAAA,WACA,OAAA9M,KAAAqF,oBAAArF,KAAA6F,SAAA7F,KAAAmH,UAAAnH,KAAAgO,WAEAhO,KAAA1E,KAAAiJ,OADAvE,KAAA1E,KAAAiJ,OAtgBA,GAwgBA,EAEAe,EAAAvF,UAAA0N,eAAA,SAAAnS,EAAA2S,GACA,IAAA1J,OAAA6B,IAAA6H,IAAA3S,EAAAiJ,OAEA,QAAAjJ,EAAA4S,cACA,OACA/J,SAAA,WACAuC,IAAApL,EAAA6I,SAAAE,EAAA,KACAoC,KAAAnL,EAAA6I,SAAAC,EAAA,KACA4I,MAAA1R,EAAAgJ,KAAAF,EACAG,SACA4J,OAAA,QAIA,IAAAvI,EAAA,CACArB,SACAJ,SAAA7I,EAAA4I,aAGA,OAAA5I,EAAA8S,eACAxI,EAAAa,KAAA,MACAb,EAAAe,MAAA,MACAf,EAAAc,IAAA,MACAd,EAAAgB,OAAA,MACAhB,EAAAuI,OAAA,OACAvI,EAAAoH,MAAA,OACApH,IAGA,MAAAtK,EAAAsL,QAAA,MAAAtL,EAAAoL,KACAd,EAAAc,IAAA,OACAd,EAAAgB,OAAAtL,EAAAsL,OAAA,KACAhB,EAAAuI,OAAA7S,EAAAgJ,KAAAD,GACA,MAAA/I,EAAAsL,QAAA,MAAAtL,EAAAoL,KACAd,EAAAc,IAAApL,EAAAoL,IAAA,KACAd,EAAAgB,OAAAtL,EAAAsL,OAAA,KACAhB,EAAAuI,OAAA,SAEAvI,EAAAc,KAAA,MAAApL,EAAAoL,IAAApL,EAAAoL,IAAApL,EAAA6I,SAAAE,GAAA,KACAuB,EAAAgB,OAAA,OACAhB,EAAAuI,OAAA7S,EAAAgJ,KAAAD,GAEA,MAAA/I,EAAAqL,OAAA,MAAArL,EAAAmL,MACAb,EAAAa,KAAA,OACAb,EAAAe,MAAArL,EAAAqL,MAAA,KACAf,EAAAoH,MAAA1R,EAAAgJ,KAAAF,GACA,MAAA9I,EAAAqL,OAAA,MAAArL,EAAAmL,MACAb,EAAAa,KAAAnL,EAAAmL,KAAA,KACAb,EAAAe,MAAArL,EAAAqL,MAAA,KACAf,EAAAoH,MAAA,SAEApH,EAAAa,MAAA,MAAAnL,EAAAmL,KAAAnL,EAAAmL,KAAAnL,EAAA6I,SAAAC,GAAA,KACAwB,EAAAe,MAAA,OACAf,EAAAoH,MAAA1R,EAAAgJ,KAAAF,IAGA,IAAA9I,EAAA2J,WACAW,EAAAa,KAAA,IACAb,EAAAe,MAAA,IACAf,EAAAsH,WAAA,OACAtH,EAAAuH,YAAA,SAGA7R,EAAA+S,YAAA/S,EAAAgT,kBAAAhT,EAAAiT,6BACA3I,EAAAuI,OAAA,SAGA7S,EAAAkT,WAAAlT,EAAAmT,iBAAAnT,EAAAiT,6BACA3I,EAAAoH,MAAA,QAGA1R,EAAAoT,aACA9I,EAAAoH,MAAA,eAGApH,EACA,EAEAN,EAAAvF,UAAA4O,YAAA,WACA,IAAAxK,EAAA,GAcA,OAZA,OAAAnE,KAAA1E,KAAAmL,OACAtC,EAAAsC,KAAAzG,KAAA1E,KAAAmL,MAEA,OAAAzG,KAAA1E,KAAAoL,MACAvC,EAAAuC,IAAA1G,KAAA1E,KAAAoL,KAEA,OAAA1G,KAAA1E,KAAAqL,QACAxC,EAAAwC,MAAA3G,KAAA1E,KAAAqL,OAEA,OAAA3G,KAAA1E,KAAAsL,SACAzC,EAAAyC,OAAA5G,KAAA1E,KAAAsL,QAEAzC,CACA,EAEAmB,EAAAvF,UAAAmI,QAAA,SAAAtG,GAOA,OANA5B,KAAA8F,KAAAjF,KAAAe,GACAA,EAAAiE,OAAA7F,KACA4B,EAAAuF,SAAAnH,KAAAmH,SACAvF,EAAAe,OAAA3C,KAAA2C,OACA3C,KAAA0B,gBAAA,aAAAE,UACAA,EAAAoF,QACAhH,IACA,EAEAsF,EAAAvF,UAAA6O,WAAA,SAAAhN,GACAA,EAAAiN,eAEA,UAAAjN,EAAA8D,MACA1F,KAAA2C,OAAAmM,YAAAC,qBAAAnN,EAAAtG,MAEA,IAAAkG,EAAAxB,KAAA8F,KAAAhN,QAAA8I,GAOA,OANA5B,KAAA8F,KAAArE,OAAAD,EAAA,GACAI,EAAAiE,OAAA,KACAjE,EAAAuF,SAAA,KACAvF,EAAAe,OAAA,KACAf,EAAAoF,SAAA,EAEAhH,IACA,EAEAsF,EAAAvF,UAAA8O,aAAA,WACA1V,EAAAiJ,KAAApC,KAAA8F,MAAA,SAAA8D,GACAA,EAAAiF,cACA,GACA,EAEAvJ,EAAAvF,UAAAiP,eAAA,WACA,IAAAjO,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAA8F,KAAApH,MAAA,aAAAkD,GACAb,EAAA6N,WAAAhN,EACA,GACA,EAEA0D,EAAAvF,UAAA0K,sBAAA,SAAAlF,EAAA7E,EAAAuO,GACA,oBAAA/N,UAAA,GACA,OAAAlB,KAAAyK,sBAAAzK,KAAAuF,SAAArE,UAAA,GAAAA,UAAA,IACAlB,KAAAgG,cAAAnF,KAAA,CAAA0E,WAAA7E,QAAAuO,YACA1J,EAAA7J,GAAAgF,EAAAuO,EACA,EAMA3J,EAAAvF,UAAAmP,yBAAA9V,EAAA+O,KAEA7C,EAAAvF,UAAAoP,kCAAA,WACAhW,EAAAiJ,KAAApC,KAAA8F,MAAA,SAAAlE,GACAA,EAAAuN,mCACA,IAEAnP,KAAAkP,2BAEAlP,KAAAoP,cACApP,KAAAoP,eAEA,IAAArO,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAAgG,eAAA,SAAAqJ,GACAA,EAAA9J,SACA8J,EAAA9J,SAAAiF,IAAA6E,EAAA3O,MAAA2O,EAAAJ,SACAI,EAAA1D,QACA5K,EAAAuO,YAAAD,EAAA1D,OAAA0D,EAAA/O,OACA,IAEAN,KAAA6F,OAAA,KACA7F,KAAAmH,SAAA,KACAnH,KAAA2C,OAAA,KAEA3C,KAAAuF,SAAAxM,QACA,EAEAuM,EAAAvF,UAAAwP,YAAA,WACA,OAAAvP,KAAA6F,OACA7F,KAAA6F,OAAA0J,cACAvP,IACA,EAEAsF,EAAAvF,UAAAyP,uBAAA,SAAAC,GACA,QAAAzP,KAAA6F,SACA7F,KAAA6F,SAAA4J,GAAAzP,KAAA6F,OAAA2J,uBAAAC,GAEA,EAGAnK,EAAAvF,UAAAO,OAAA,SAAAqL,EAAArL,EAAAoP,GACAvW,EAAAiJ,KAAAjJ,EAAAwW,KAAArP,IAAA,SAAAI,GACA,IAAAuO,EAAA3O,EAAAI,GACAiL,EAAA,SAAAjL,GAAAuO,EACA,KAGA,IAAAS,GACA1P,KAAAgG,cAAAnF,KAAA,CAAA8K,SAAArL,UACA,EAEAgF,EAAAvF,UAAAuP,YAAA,SAAA3D,EAAArL,GACAnH,EAAAiJ,KAAAjJ,EAAAwW,KAAArP,IAAA,SAAAI,GACA,IAAAuO,EAAA3O,EAAAI,GACAiL,EAAA,YAAAjL,GAAAuO,EACA,GACA,EAEA3J,EAAAvF,UAAA6P,aAAA,SAAAC,GACA,QAAA7P,KAAA6F,SACA7F,KAAA6F,OAAAH,OAAAmK,GACA7P,KAAA6F,OAAA+J,aAAAC,GACA,EAEAvK,EAAAvF,UAAA+P,qBAAA,SAAAD,GACA,GAAA7P,KAAA6F,OACA,OAAA7F,KAAA6F,OAAAH,OAAAmK,EAAA7P,KAAA6F,OACA7F,KAAA6F,OAAAiK,qBAAAD,EACA,EAEAvK,EAAAvF,UAAAgQ,kBAAA,WACA,GAAA/P,KAAA6F,OACA,OAAA7F,KAAA6F,OAAAmK,eAAAhQ,KAAA6F,OAAAmK,eACAhQ,KAAA6F,OAAAkK,mBACA,EAEAzK,EAAAvF,UAAAkG,aAAA,WACAjG,KAAA1E,KAAA2U,gBAAAjQ,KAAA1E,KAAA2U,eAAAvX,OAAA,GACAsH,KAAAuF,SACAI,SAAA,mBACAA,SAAAxM,EAAA+N,IAAAlH,KAAA1E,KAAA2U,gBAAA,SAAAC,GACA,yBAAAA,CACA,IAEA,EAEA5K,CACA,IACA7N,OC/vBA,mCAAA0B,GACA,aAMA,IAAAgX,EAAA,SAAA/P,GACAF,OAAAiQ,QACAjQ,OAAAiQ,OAAA/P,EAEA,EAEAgQ,EAAA,SAAAC,EAAAC,EAAAhY,EAAAiY,GACA,IAAAxP,EAAAf,KACAe,EAAAyP,KAAAH,EACAtP,EAAAuP,WACAvP,EAAAzI,OACAa,EAAAwG,OAAAoB,EAAAwP,GACAJ,EAAApP,EACA,EAEAqP,EAAArQ,UAAA0Q,SAAA,WACA,kBAAAzQ,KAAAsQ,SAAA,IAAAtQ,KAAA1H,IACA,EAEA4H,OAAAwQ,SAEAN,EAAArQ,UAAAG,OAAAwQ,OAAA,OAGA,IAAAC,EAAA,SAAArY,EAAAqX,EAAAY,GACA,IAAAxP,EAAAf,KAEA2P,IAAAjR,QACAyR,EAAAR,GAEA5O,EAAA4O,KAAA,WACA,OAAAA,CACA,EAEAxW,EAAAiJ,KAAAuN,GAAA,SAAAiB,GACA7P,EAAA6P,GAAA,IAAAR,EAAArP,EAAAzI,EAAAsY,EAAAL,EACA,IAEAJ,EAAApP,EACA,EAMA,OAJA4P,EAAA5Q,UAAA8Q,OAAA,WACA,OAAA1X,EAAA0X,OAAA7Q,KACA,EAEA2Q,CACA,IAEAlZ,OCvDA,gBACA,YACA,SAAAkZ,GACA,aAEA,IAAAG,EAAA,WACA,OAAA9Q,KAAAwQ,KAAAb,OAAA7W,QAAAkH,KAAA1H,KACA,EAEAyY,EAAA,CACAC,kBAAA,IACAC,WAAA,CACAC,iBAAA,cACAC,SAAA,kBACAC,QAAA,iBACAC,QAAA,eACAC,OAAA,gBACAC,QAAA,iBACArZ,SAAA,gCAGAsZ,YAAA,IAAAb,EAAA,+FAAAG,aACAW,YAAA,IAAAd,EAAA,4CAAAG,aACAY,aAAA,IAAAf,EAAA,yCAAAG,aACAa,aAAA,IAAAhB,EAAA,+FAGAI,gBAAA,IAuBA,OAtBAA,EAAAa,gBAAAb,EAAAE,WAAAK,QAAA,SACAP,EAAAa,gBAAAb,EAAAE,WAAAI,SAAA,iBACAN,EAAAa,gBAAAb,EAAAE,WAAAG,SAAA,UACAL,EAAAa,gBAAAb,EAAAE,WAAAE,UAAA,WACAJ,EAAAa,gBAAAb,EAAAE,WAAAM,SAAA,UACAR,EAAAa,gBAAAb,EAAAE,WAAAC,kBAAA,oBAEAH,EAAAc,mBAAA,CACA,CAAAjB,IAAAG,EAAAE,WAAAK,OAAA9E,MAAAuE,EAAAa,gBAAAb,EAAAE,WAAAK,SACA,CAAAV,IAAAG,EAAAE,WAAAI,QAAA7E,MAAAuE,EAAAa,gBAAAb,EAAAE,WAAAI,UACA,CAAAT,IAAAG,EAAAE,WAAAG,QAAA5E,MAAAuE,EAAAa,gBAAAb,EAAAE,WAAAG,UACA,CAAAR,IAAAG,EAAAE,WAAAE,SAAA3E,MAAAuE,EAAAa,gBAAAb,EAAAE,WAAAE,WACA,CAAAP,IAAAG,EAAAE,WAAAM,QAAA/E,MAAAuE,EAAAa,gBAAAb,EAAAE,WAAAM,UACA,CAAAX,IAAAG,EAAAE,WAAAC,iBAAA1E,MAAAuE,EAAAa,gBAAAb,EAAAE,WAAAC,oBAGAhR,OAAAiQ,SACAjQ,OAAAiQ,OAAAY,EAAAE,YACA/Q,OAAAiQ,OAAAY,EAAAa,iBACA1R,OAAAiQ,OAAAY,IAGAA,CACA,IACAtZ,OCpDA,mCAAA0B,GACA,aAEA,IAAA2Y,EAAA,SAAAC,EAAAC,GACA,KAAAD,aAAAE,QAAA,IAAAF,EAAArZ,OACA,OAAAqZ,EAKA,IAFA,IAAAG,EAAA,GAEAzZ,EAAA,EAAAA,EAAAsZ,EAAArZ,OAAAD,IAAA,CACA,IAAA0Z,EAAAJ,EAAAtZ,GAEA+T,OAAApG,IAAA+L,EAAA3F,MAAA2F,EAAA3F,MAAA2F,EAAAC,MACAxB,OAAAxK,IAAA+L,EAAAvB,IAAAuB,EAAAvB,IAAAuB,EAAAE,IAEAL,IAAA,IAAAA,EAAAlZ,QAAA8X,GACAsB,EAAAtB,GAAApE,EAEA0F,EAAAtB,GAAAkB,EAAAtF,EAEA,CACA,OAAA0F,CACA,EAQAI,EAAA,IAAAC,OAAA,8DAEAC,EAAA,SAAAC,GACA,IAAAC,EAAAD,EAAAC,MAAAJ,GACA,GAAAI,EACA,OACAC,OAAAD,EAAA,GACAE,UAAAF,EAAA,GACA1V,KAAA0V,EAAA,GACAG,MAAAH,EAAA,GACAI,SAAAJ,EAAA,GACAjC,SAAA,WAEA,OAAAzQ,KAAA2S,OAAA3S,KAAA2S,OAAA,SACA3S,KAAA4S,UAAA,KAAA5S,KAAA4S,UAAA,IACA5S,KAAAhD,MACAgD,KAAA6S,MAAA,IAAA7S,KAAA6S,MAAA,KACA7S,KAAA8S,SAAA,IAAA9S,KAAA8S,SAAA,GACA,EAGA,EAEAC,EAAA,SAAAF,GACA,OAAA1Z,EAAA+N,IAAA2L,GAAA,SAAArG,EAAAoE,GAAA,OAAAA,EAAA,IAAApE,CAAA,IACAwG,KAAA,IACA,EAEAC,EAAA,SAAAJ,GACA,OAAA1Z,EAAA+I,MAAA2Q,EAAAra,MAAA,MACA2J,UACA+E,KAAA,SAAAgM,GACA,IAAA1a,EAAA0a,EAAA1a,MAAA,KACA2a,EAAA3a,EAAAkG,MAAA,GAAAsU,KAAA,KACA,OAAAxa,EAAA,GAAA2a,EACA,IACAC,SACA5G,OACA,EAEA6G,EAAA,SAAAC,EAAAhb,EAAAkU,GACA,IAAAqG,EAAAI,EAAAK,GAAA,IAEA,OADAT,EAAAva,GAAAkU,EACAuG,EAAAF,EACA,EAuBAU,EAAA,SAAAnT,EAAAoT,GACA,IAAAjS,EAAAnB,EAMA,OAJAjH,EAAAiJ,KAAAoR,GAAA,SAAAC,GACAlS,EAAApI,EAAAua,SAAAnS,KAAAkS,QAAArN,CACA,IAEA7E,CACA,EA2EA,OACAoS,UA7JA,SAAArY,GACA,YAAA8K,IAAA9K,OAAA8K,EACAwN,KAAAC,MAAAD,KAAAE,UAAAxY,GACA,EA2JAkX,WACAa,yBACAU,4BA5GA,SAAAC,EAAA1b,EAAAkU,GACA,IAAAyH,EAAAzB,EAAAwB,GAEA,OADAC,EAAApB,MAAAQ,EAAAY,EAAApB,MAAAva,EAAAkU,GACAyH,EAAAxD,UACA,EAyGAwC,gBACAF,iBACAmB,mCAzGA,SAAAC,GAEA,IAAA1B,EAAAD,EAAA2B,GAIA,YAAA1B,EAAAzV,KAAA,IAAAyV,EAAAG,UAMAuB,GALA1B,EAAAG,UAAAH,EAAAzV,KACAyV,EAAAzV,KAAA,GACAyV,EAAAhC,WAIA,EA6FA2D,kBAjFA,SAAAhU,EAAApD,GACA,OAAAuW,EAAAnT,EAAA,iBAAApD,EAAA,CAAAA,KAAAxE,MAAA,KACA,EAgFA6b,kBAnDA,SAAAjU,EAAApD,EAAAwP,GACA,IAAAgH,EAAA,iBAAAxW,EAAA,CAAAA,KAAAxE,MAAA,KACA8b,EAAAd,EAAAe,MAEA,GAAApb,EAAAua,SAAAtT,GAAA,CAIA,IAAAoU,EApBA,SAAApU,EAAAoT,GACA,IAAAjS,EAAAnB,EAQA,OAPAjH,EAAAiJ,KAAAoR,GAAA,SAAAC,GACAta,EAAAua,SAAAnS,EAAAkS,MACAlS,EAAAkS,GAAA,IAEAlS,IAAAkS,EACA,IAEAlS,CACA,CAUAkT,CAAArU,EAAAoT,GAEAgB,EAAAF,GAAA9H,CAJA,CAKA,EAyCAkI,qBA/EA,SAAAtU,EAAApD,GACA,IAAAwW,EAAA,iBAAAxW,EAAA,CAAAA,KAAAxE,MAAA,KACA8b,EAAAd,EAAAe,MAEA,GAAApb,EAAAua,SAAAtT,GAAA,CAIA,IAAAoU,EAAAjB,EAAAnT,EAAAoT,GAEAra,EAAAua,SAAAc,WACAA,EAAAF,EALA,CAOA,EAmEAK,iBAvCA,SAAAC,GACA,GAAAA,QACA,OAAAA,EACA,IAAAzb,EAAA0b,SAAAD,IAAA,iBAAAA,EACA,OAAAA,EAAAnE,WAEA,IAAAqE,EAAAC,KAAAD,IAAAF,GACAI,EAAAD,KAAAE,IAAAH,GAAAC,KAAAG,KACA,IAAA/b,EAAA0b,SAAAG,GACA,OAAAJ,EAAAnE,WAEA,GAAAuE,EAAA,GAAAA,GAAA,EACA,OAAAJ,EAAAO,cAAA,GAEA,IAAAC,EAAA,EAAAL,KAAAM,MAAAL,GACA,GAAAI,GAAA,EACA,OAAAR,EAAAU,QAAA,GAGA,IADA,IAAAC,EAAAX,EAAAU,QAAAF,GACA,KAAAG,EAAA3c,OAAA2c,EAAA7c,OAAA,IACA6c,IAAA1c,UAAA,EAAA0c,EAAA7c,OAAA,GAKA,MAHA,KAAA6c,EAAA3c,OAAA2c,EAAA7c,OAAA,KACA6c,IAAA1c,UAAA,EAAA0c,EAAA7c,OAAA,IAEA6c,CACA,EAcAzD,iCAGA,IACAra,OCrMA,iBACA,SACA,aACA,eACA,UACA,YACA,SAAA2B,EAAAD,EAAA4X,EAAAzL,EAAAkQ,GACA,aAEA,IAAA9D,EAAAX,EAAAW,aACAD,EAAAV,EAAAU,YACAD,EAAAT,EAAAS,YAGAiE,EAAA,CACA,WACA,OACA,SACA,MACA,QACA,SACA,OACA,WACA,SACA,SACA,0BACA,oBACA,0BACA,gCACA,yBACA,yBACA,0BAGAC,EAAA,CACA,MACA,QACA,SACA,OACA,YAIAC,EAAA,CACAC,KAAA,CACA,iBACA,iBACA,aACA,cAEAC,MAAA,CACA,kBAEAC,MAAA,CACA,gBACA,gBACA,iBACA,kBACA,uBACA,oBAEAC,KAAA,CACA,qBAIAC,EAAA,WAEA,IAAA3b,EAAAD,UAAAC,WAAAD,UAAA6b,QAAApc,OAAAqc,MACA,iUAAA/b,KAAAE,IAEA,0kDAAAF,KAAAE,EAAA8b,OAAA,MACA1E,EAAA2E,MACA,8BAAAjc,KAAAE,GACAoX,EAAA4E,OAEA5E,EAAA6E,OACA,EAwIAC,EAAA,SAAA1G,EAAA2G,EAAAC,GACAd,EAAA9F,IACA1W,EAAAiJ,KAAAuT,EAAA9F,IAAA,SAAA6G,GACAvd,EAAAwd,YAAAH,EAAAE,MACAD,EAAAC,GAAAF,EAAAE,GACA,IAGAvd,EAAAiJ,KAAAqT,GAAA,SAAAiB,GACAvd,EAAAwd,YAAAH,EAAAE,KAEA,IAAAvd,EAAAL,QAAA4c,EAAAgB,WAMAD,EAAAC,GAPAD,EAAAC,GAAAF,EAAAE,EASA,GACA,EAEAE,EAAA,SAAAhV,EAAAiV,GACA1d,EAAAiJ,KAAAR,EAAAuD,YAAA,SAAAyE,GACA,IAAAkN,EAAA3d,EAAA4d,UAAAnN,EAAAtO,KAAA0b,QAAA,CAAA9G,SAAA2G,EAAAjc,KACAkc,GAAAP,EAAA3M,EAAAtO,KAAAoK,KAAAoR,EAAAlN,EAAAtO,MACAsb,EAAAhN,EAAAiN,EACA,IAEA1d,EAAAiJ,KAAAR,EAAAqV,iBAAA,SAAArN,GACA,IAAAkN,EAAA3d,EAAA4d,UAAAnN,EAAAtO,KAAA0b,QAAA,CAAA9G,SAAA2G,EAAAjc,KACAkc,GAAAP,EAAA3M,EAAAtO,KAAAoK,KAAAoR,EAAAlN,EAAAtO,MACAsb,EAAAhN,EAAAiN,EACA,GACA,EA4BA,OACAnF,aAAAX,EAAAW,aACAD,YAAAV,EAAAU,YACAD,YAAAT,EAAAS,YACAwE,gBACAkB,cAzMA,WACA,OAAAlB,MAAAvE,EAAA2E,KACA,EAwMAe,MAtMA,WACA,OAAAtd,OAAAud,WAAA,8BAAAC,OACA,EAqMAC,eAnMA,WAIA,GAAAzd,OAAA0d,QAAA1d,OAAA0d,OAAAC,YAEA,OADA,IAAA3d,OAAA0d,OAAAC,YAAA9R,KAAA5M,QAAA,aACA4Y,EAAA+F,UAAA/F,EAAAgG,SAIA,IAAAC,EAAAve,EAAAS,QAGA,OAFAA,OAAA+d,YAAAD,EAAA3K,UACAnT,OAAAge,aAAAF,EAAAxJ,UACA,IAAAuD,EAAA+F,UAAA/F,EAAAgG,QACA,EAsLAI,iBA5KA,WACA,IAAAC,EAAA/X,KAAAgW,gBACAwB,EAAAxX,KAAAsX,iBAEA,OACAU,WAFAhY,KAAAiY,cAAAF,EAAAP,GAGAO,aACAP,cAEA,EAoKAU,qBAtJA,WAEA,OADAlY,KAAA8X,mBACAE,WAAAlH,UACA,EAoJAqH,qBAlIA,WACA,IAAAC,EAAAve,OAAAwe,EAAAngB,SAAAogB,EAAAD,EAAAE,gBAAAC,EAAAH,EAAAI,qBAAA,WACA,OACArU,EAAAgU,EAAAM,YAAAJ,EAAAK,aAAAH,EAAAG,YACAtU,EAAA+T,EAAAQ,aAAAN,EAAAO,cAAAL,EAAAK,aAEA,EA6HAZ,cAvLA,SAAAF,EAAAP,GACA,OAAAO,IAAAtG,EAAA6E,QACA9E,EAAA8E,QAEA9E,EAAAuG,EAAAzf,KAAAkf,EAAAlf,KACA,EAmLAwgB,mBA/JA,WACA,IAAAxF,EAAAzZ,OAAAC,SAAAif,MAAA,IAEA,OADAvD,EAAAvC,cAAAK,EAAA6C,OAAA,IACAjG,QACA,EA4JA8I,qBAtKA,WACA,IAAA1F,EAAAzZ,OAAAC,SAAAif,MAAA,IACAE,EAAAzD,EAAAvC,cAAAK,EAAA6C,OAAA,IACA,OAAA+C,SAAAD,EAAAjB,WAAA,GACA,EAmKAmB,qBA9HA,SAAAhS,GAEA,OADAA,EAAAiS,eAAA,CAAApB,WAAA,EAAApd,GAAA,YACAod,UACA,EA4HAqB,gBA1HA,WACA,IAAAC,EAAAtZ,KAAAuZ,mBACA,OAAAD,KAAAE,SACA,EAwHAD,iBAtHA,SAAApS,GACA,IAAAsS,EAAAzZ,KAAA8Y,qBACAY,EAAAD,GAAAtgB,EAAA4d,UAAA5P,EAAAwS,WAAA,CAAA/e,GAAA6e,IACA,GAAAC,EACA,OAAAA,EAEA,IAAAE,EAAA5Z,KAAA6Z,qBAAA1S,GACA2S,EAAA3gB,EAAA+I,MAAAiF,EAAAwS,YACAI,MAAA,CAAA/B,WAAA4B,IACAI,OAAA,eACAxN,QACAyN,EAAAja,KAAAmY,uBACA+B,EAAA/gB,EAAAghB,OAAAL,GAAA,SAAAjD,GACA,OAAAA,EAAAuD,aAAAH,EAAA7V,GAAAyS,EAAAwD,aAAAJ,EAAA5V,CACA,IAEA,GAAA6V,EAAAxhB,OAAA,EACA,OAAAS,EAAAmhB,KAAAJ,GAEA,GAAAJ,EAAAphB,OAAA,GACA,OAAAohB,EAAAphB,OACA,OAAAohB,EAAA,GAGA,IAAAS,EAAAphB,EAAAohB,MAAAT,GACA,OAAAS,EAAAH,YAAAH,EAAA7V,GAAAmW,EAAAF,YAAAJ,EAAA5V,EACAkW,EAGAphB,EAAAmhB,KAAAR,EACA,CAGA,OAAA3S,EAAA7L,KAAA2U,gBAAA9I,EAAA7L,KAAA2U,eAAAvX,OAAA,QAAAS,EAAAL,QAAAqO,EAAA7L,KAAA2U,eAAA9I,EAAAiS,cAAAxe,IACAzB,EAAA4d,UAAA5P,EAAAwS,WAAA,CAAA/e,GAAAuM,EAAA7L,KAAA2U,eAAA,KAGA9I,EAAAiS,aACA,EAiFAS,qBAzJA,SAAA1S,GACA,IAAAqT,EAAAxa,KAAAgZ,uBAEA,OAAAwB,GAAA,EACAA,GAGA,mBAAArT,EAAAsT,uBACAD,EAAArT,EAAAsT,wBAEAD,GAAA,EACAA,EAEAxa,KAAAkY,uBACA,EA4IA3B,iBACAmE,qBA7CA,SAAAvT,EAAA0P,GACA,IAAAC,EAAA3d,EAAA4d,UAAA5P,EAAA7L,KAAA0b,QAAA,CAAA9G,SAAA2G,EAAAjc,KAEAkc,EACA9W,KAAAuW,eAAApP,EAAAzB,KAAAoR,EAAA3P,EAAA7L,MACAub,EAAA2C,WACAxZ,KAAAuW,eAAApP,EAAAzB,KAAA,CACApB,KAAA,CACAF,EAAAyS,EAAAuD,YACA/V,EAAAwS,EAAAwD,aAEAlW,SAAA,CACAC,EAAA,EACAC,EAAA,GAEAqC,IAAA,KACAD,KAAA,KACAG,OAAA,KACAD,MAAA,KACA1B,UAAA,GACAkC,EAAA7L,MAGAsb,EAAAzP,EAAA0P,EACA,EAuBA;;;;;;;;;AC3RA,SAAAzd,EAAAS,EAAAuM,GAEA,IAAAuU,EAAA,CACAC,SAAA,sGACAC,kBAAA,+HACAC,iBAAA,oCACAC,oBAAA,+CACAC,wBAAA,2DACAC,8BAAA,oCACAC,6BAAA,wCACAC,wBAAA,uDACAC,gBAAA,iDACAC,0BAAA,uDACAC,0BAAA,gEACAC,qBAAA,0DACAC,qBAAA,uHACAC,wBAAA,+LACAC,WAAA,eACAC,YAAA,kCACAC,eAAA,+BACAC,2BAAA,iCACAC,iBAAA,8BACAC,gBAAA,oBACAC,gCAAA,oDACAC,iBAAA,yBACAC,2BAAA,0FACAC,sBAAA,iEACAC,sBAAA,mEACAC,uBAAA,oFACAC,iBAAA,6EACAC,uBAAA,wHACAC,iCAAA,8HAGA,wBAEA,UAAAC,MAAA9B,EAAAC,UAGA,IAAA8B,EACAC,EAgHAC,EACAvF,EAhHAwF,EAAA,aAAAhjB,EAAA3B,SAAA4kB,WACAC,EAAA3jB,EAAAS,GACAmjB,EAAA,wBACA1c,EAAA,CACA2c,QAAA,UACAC,WAAA,aACAC,WAAA,aACA3U,QAAA,UACA4U,iBAAA,mBACAC,eAAA,iBACAC,YAAA,cACAC,eAAA,iBACAC,aAAA,gBAyBAC,EAAA,SAAAC,EAAAC,EAAAC,GACA,OAAAD,IAAAD,EAAAG,QACAH,EAAAG,MAAAD,EAEAxkB,EAAAskB,GAAAI,eAAAxd,EAAAid,eAAA,EAAAQ,SAAAJ,EAAAC,eACA,EAIA,EAMAI,EAAA,SAAAN,GACA,OAAAA,EAAAvkB,EAAA8kB,cAAAC,WACAR,EAAAS,UAAAH,kBAAAN,EACA,EAmMA,SAAAU,EAAAxf,EAAAoV,GAGA,OAAAA,EAAAtB,MAAA,SACAsB,EAEAA,EAAA,IAdA,SAAApV,GACA,gBAAAA,EACA,GACA,WAAAA,EACA,SADA,CAGA,CAQAyf,CAAAzf,EAEA,CAEA,SAAA0f,EAAAZ,EAAAa,GACA,IAAAC,EAAAxe,KACAye,EAAA,GAEAD,EAAAE,UAAA,SAAAC,GACA,OAAAjB,EAAAG,QAAAzkB,EAAAsjB,QAAAkC,gBAAAC,aACAJ,EAAA5d,KAAA8d,IAEA,EAIA,EAEAH,EAAAM,MAAA,WAEA,GAAApB,EAAAG,QAAAzkB,EAAAsjB,QAAAkC,gBAAAG,UACA,KAAAN,EAAA/lB,OAAA,GACA6lB,EAAAE,EAAAO,QAGA,EAEAR,EAAAS,MAAA,WACAR,EAAA,EACA,CACA,EAnMA/B,EAAA,SAAA1I,EAAAkL,EAAAC,GAaA,WAAAzC,EAAA0C,GAAA7kB,KAAAyZ,EAAAkL,EAAAC,EACA,GAEAhmB,EAAA,CACAkmB,mBAAA,mDAEAC,WAIA,gCAAAzlB,EAAAO,UAAAmlB,UAEAlI,EAAA,wBAAAmI,KAAA3lB,EAAAO,UAAAC,cAGAuiB,EAAA/iB,EAAA4lB,WAAApI,EAAA,KAKAuF,GAGAtU,MAAA,SAAAqW,EAAAhT,EAAAlQ,GACA,IAAA6c,EAAA,IAAAmE,MAAAkC,GAOA,OANArG,EAAA3M,cAEA,IAAAlQ,IACA6c,EAAA7c,WAGA6c,CACA,EAEAoH,eAAA,SAAAf,EAAAR,EAAAxS,EAAAlQ,GACA,IAAA6c,EAAAtY,KAAAsI,MAAAqW,EAAAhT,EAAAlQ,GAEA,OADA6c,EAAA6F,cAAA7lB,KArLA,UAsLAggB,CACA,EAEAqH,OAAA,WAGA,IADA,IAAAC,EAAA1e,UAAA,GACAzI,EAAA,EAAAA,EAAAyI,UAAAxI,OAAA,EAAAD,IACAmnB,IAAAC,QAAA,IAAApnB,EAAA,IAAAyI,UAAAzI,EAAA,IAEA,OAAAmnB,CACA,EAEAE,oBAAA,SAAAzlB,GAEA,IAAAgd,EAAAhd,EAAAqY,MAAA,kBACA,OAAA2E,MAAA3e,QAAA2e,EAAA3e,OAAA,EACA,EAEAwgB,SAAA7B,EAAA,MACA,EAEA0I,sBAAA,SAAArC,GACA,IAAArkB,EAAAqkB,EAAAvkB,EAAAE,OACA2mB,EAAA,SAAA1X,GACAlP,EAAAskB,GAAAI,eAAAxd,EAAAkI,QAAA,CAAAF,GACA,EAEAjP,IAAAqkB,EAAAvkB,EAAA8mB,gBAAA5mB,EAAA6mB,eACAxC,EAAAvkB,EAAA8mB,eAAApmB,EAAAsmB,aAAA,WACAzD,EAAA0D,WAAAC,OAAAC,WAAA5C,GAAA6C,KAAAP,EACA,GAAA3mB,EAAA6mB,cAEA,GAGAxD,EAAApc,SAEAoc,EAAA/B,YAEA+B,EAAA8D,aAtKA,CACAC,aAAA,EACAC,QAAA,KACAC,OAAA,EACAC,QAAA,EACAC,OAAA,GAmKAnE,EAAAe,cAEAf,EAAAoE,gBAxIA,SAAApD,GACA,OAAAA,EAAAG,QAAAnB,EAAAkC,gBAAAmC,YACA,EAwIArE,EAAAkC,gBAAA,CACAC,WAAA,EACAE,UAAA,EACAiC,aAAA,EACAD,aAAA,GAGArE,EAAAuE,IAAA,CACAC,MAAA,WAEA,UAAAzE,MAAA,iHACA,GAKA,mBAAAM,EAAArhB,GACAqhB,EAAArhB,GAAA,mBAAAmhB,GAAA,KAGAE,EAAAoE,MAAA,WAAAtE,GAAA,KAkFAH,EAAA0C,GAAA1C,EAAA3c,UAAA,CACAxF,KAAA,SAAAyZ,EAAAkL,EAAAC,GACA,IAAAiC,EAAAhoB,EAAA4G,MAEAA,KAAAgU,MACAhU,KAAAkf,KACAlf,KAAAqhB,UAAA,KACArhB,KAAA7G,EAAA,CACA8kB,cAAA,GACAqD,wBAAA,IAAAhD,EAAAte,MAAA,SAAA2e,GACAyC,EAAAtD,eAAAxd,EAAA6c,WAAA,CAAAwB,GACA,IACA4C,eAAA,IAAAxpB,MAAAypB,UACAC,cAAA,IAAA1pB,MAAAypB,UACAE,aAAA,IACAC,WAAA,KACAC,6BAAA,EACAC,WAAA,MAEA,sBACA7hB,KAAAmf,UAEA,EAEA2C,eAAA,SAAAC,GAGA,OAAAA,GAEA,iBAAAA,EAJA/hB,KAKAgiB,KAAAnO,MAAAkO,GAFAA,CAMA,EAEAE,cAAApoB,EAAA+Z,KAEAoO,KAAAnoB,EAAA+Z,KAEAsO,cAAA,SAAAlO,EAAAmO,GAOA,IAAAC,EAMA,OAJApO,EAAA5a,EAAAipB,KAAArO,GAEAmO,KAAAtoB,EAAAC,SAEA,IAAAka,EAAAlb,QAAA,WAKAspB,EAAAvoB,EAAA3B,SAAAoqB,cAAA,MACAC,KAAAvO,EAGAoO,EAAAxjB,SAAAwf,EAAAgE,EAAAxjB,SAAAwjB,EAAAI,QAAAL,EAAAvjB,SAAAwf,EAAA+D,EAAAvjB,SAAAujB,EAAAK,MACA,EAEAC,aAAA,OAEAC,YAAA,kCAEAvD,SAAA,EAEAtB,MAAAnB,EAAAkC,gBAAAmC,aAEA4B,eAAA,MAOAC,mBAAA,oBAEAC,oCAAA,cAEAC,eAAA,IAEAC,wBAAA,EAEAC,kBAAA,IAEAC,gBAAA,IAEAC,gBAAA,IAEAhC,MAAA,SAAAiC,EAAAC,GAIA,IAOAC,EAPA3F,EAAA1d,KACA3G,EAAA,CACA6mB,aAAA,IACAoD,iBAAA,EACAnF,UAAA,OACAoF,OAAA,GAGAC,EAAA9F,EAAA+F,WAAArqB,EAAAsqB,WACAC,EAAA9pB,EAAA3B,SAAAoqB,cAAA,KACAsB,EAAA,SAAAlG,EAAA1J,GACA0J,EAAA1J,SAAA0J,EAAAzgB,UAKAygB,EAAA1J,MAGA2P,EAAApB,KAAA7E,EAAA1J,IACA2P,EAAA/kB,UAAA,MAAA+kB,EAAA/kB,UAIA8e,EAAA9e,SAAA+kB,EAAA/kB,SACA8e,EAAA8E,KAAAmB,EAAAnB,OAJA9E,EAAA9e,SAAA/E,EAAA3B,SAAA4B,SAAA8E,SACA8e,EAAA8E,KAAAmB,EAAAnB,MAAA3oB,EAAA3B,SAAA4B,SAAA0oB,MAMA9E,EAAAzgB,QAAAygB,EAAA9e,SAAA,KAAA8e,EAAA8E,KAGA9E,EAAAmG,WAAA,WAAAnG,EAAA9e,SAAA,iBAGA,IAAA8e,EAAA1J,IAAAlb,QAAA,QACA4kB,EAAA1J,IAAAna,EAAAC,SAAA8E,SAAA8e,EAAA1J,IACA0J,EAAAzI,IAAA,sDAAAyI,EAAA1J,IAAA,OAGA0J,EAAAwE,cAAAxE,EAAA1J,OACA0J,EAAAzI,IAAA,mCAEA,SAAA5b,EAAA8kB,YAEA9kB,EAAA8kB,UAAA,sDAGA,IAAAT,EAAAoG,kBACApG,EAAAoG,iBAAA,GAMA1qB,EAAA2qB,QAAAC,OACAtG,EAAA+E,aAAA,QACA/E,EAAAzI,IAAA,2DAGAyI,EAAAgF,YAAAhG,EAAAvjB,EAAAkmB,oBAEA,EAOA,GALA3B,EAAA2D,UAAA,KAGA3D,EAAA+F,UAAAD,GAEA9F,EAAAsE,KAEA,UAAAvF,MAAA,iLAgBA,GAbA,aAAArjB,EAAAsM,KAAAyd,GAEAC,EAAAD,EACA,WAAA/pB,EAAAsM,KAAAyd,KACA/pB,EAAAuG,OAAAtG,EAAA8pB,GACA,aAAA/pB,EAAAsM,KAAArM,EAAA+pB,YACAA,EAAA/pB,EAAA+pB,WAIA/pB,EAAA8kB,UApQA,SAAA8F,EAAAvG,GAMA,GAAAtkB,EAAA8qB,QAAAD,GAAA,CAEA,QAAAxrB,EAAAwrB,EAAAvrB,OAAA,EAAAD,GAAA,EAAAA,IAAA,CACA,IAAA0lB,EAAA8F,EAAAxrB,GACA,WAAAW,EAAAsM,KAAAyY,IAAAzB,EAAA0D,WAAAjC,KACAT,EAAAzI,IAAA,sBAAAkJ,EAAA,2CACA8F,EAAAxiB,OAAAhJ,EAAA,GAEA,CAGA,IAAAwrB,EAAAvrB,SACAglB,EAAAzI,IAAA,8DACAgP,EAAA,KAEA,SAAAvH,EAAA0D,WAAA6D,IAAA,SAAAA,GAGA,YAAAA,GAAAvH,EAAAvjB,EAAAmmB,WAAA,EAEA,2BAJA5B,EAAAzI,IAAA,sBAAAgP,EAAAxT,WAAA,KACAwT,EAAA,KAOA,OAAAA,CACA,CAqOAE,CAAA9qB,EAAA8kB,UAAAT,IAGArkB,EAAA8kB,UACA,UAAA1B,MAAA,4DAOA,GAJAiB,EAAAvkB,EAAAE,UAIAwjB,IAAA,IAAAxjB,EAAAiqB,gBAMA,OALA5F,EAAAvkB,EAAAirB,qBAAA,WACA1G,EAAAwD,MAAAiC,EAAAC,EACA,EACArG,EAAAxa,KAAA,OAAAmb,EAAAvkB,EAAAirB,sBAEAZ,EAAAa,UAIA,GAAA3G,EAAAG,QAAAnB,EAAAkC,gBAAAC,WACA,OAAA2E,EAAAa,UACA,IAEA,IAFA5G,EAAAC,EACAhB,EAAAkC,gBAAAmC,aACArE,EAAAkC,gBAAAC,YAKA,OADA2E,EAAAc,QAAA5G,GACA8F,EAAAa,WA1bA,SAAA3G,GACA,IAAA6G,EACAC,EAIA9G,EAAAvkB,EAAAsrB,oCACAD,EAAA,SAAA9G,GACA,IAAAiB,EAAAjC,EAAAvjB,EAAAwmB,OAAAjD,EAAA/B,UAAA2B,iBAAAoB,EAAAsF,mBACAtF,EAAAzI,IAAA0J,GACAvlB,EAAAskB,GAAAI,eAAAxd,EAAAkI,QAAA,CAAAkU,EAAAvjB,EAAAmP,MAAAqW,EAAA,sBACAjB,EAAAgH,MAAA,KACA,EAEAhH,EAAAsD,cAAA,WACA,IAAAtD,EAAA1d,KAGA0d,EAAAG,QAAAnB,EAAAkC,gBAAAoC,eACAuD,EAAA1qB,EAAA8qB,YAAA,WAAAH,EAAA9G,EAAA,GAAAA,EAAAsF,mBAEA,IAEAtF,EAAAkH,cAAA,SAAAtpB,GACAA,EAAAyiB,WAAArB,EAAAkC,gBAAAoC,cAEAnnB,EAAAgrB,aAAAN,EAEA,IAEA7G,EAAAvkB,EAAAsrB,mCAAA,EAEA,CA6ZAK,CAAApH,GAMA,SAAArkB,EAAA8kB,YAAA,IAAA9kB,EAAAkqB,QACAlqB,EAAA8kB,UAAA,eAGAT,EAAAoG,gBAAAzqB,EAAAyqB,gBAGApG,EAAAqH,aAAArH,EAAA1J,IAEA0J,EAAA+E,aAAAppB,EAAAkqB,MAAA,eAEAK,EAAAlG,IAAA1J,KAEA5a,EAAAskB,GAAAnb,KAAAjC,EAAA2c,SAAA,SAAA3E,EAAAhd,GACA,aAAAlC,EAAAsM,KAAA0d,IACAA,EAAA4B,KAAAtH,GAEA8F,EAAAc,QAAA5G,EACA,IAEAA,EAAAvkB,EAAA8rB,YAAAvI,EAAA0D,WAAAC,OAAA4E,YAAAvH,GAEA2F,EAAA,SAAAjD,EAAA5e,GACA,IAAA0jB,EAAAxI,EAAAvjB,EAAAmP,MAAAqS,EAAAE,mBAGA,IADArZ,KAAA,IACA4e,EAAA1nB,OAcA,OAbA,IAAA8I,EACAkc,EAAAzI,IAAA,wDACA,IAAAzT,EACAkc,EAAAzI,IAAA,yCAEAyI,EAAAzI,IAAA,kCAIA7b,EAAAskB,GAAAI,eAAAxd,EAAAkI,QAAA,CAAA0c,IACA1B,EAAA2B,OAAAD,QAEAxH,EAAAgH,OAKA,GAAAhH,EAAAG,QAAAnB,EAAAkC,gBAAAmC,aAAA,CAIA,IAAAqE,EAAAhF,EAAA5e,GACA2c,EAAAzB,EAAA0D,WAAAgF,GACAC,EAAA,WACAhC,EAAAjD,EAAA5e,EAAA,EACA,EAEAkc,EAAAS,YAEA,IACAT,EAAAvkB,EAAA8rB,YAAA/D,MAAA/C,GAAA,WAEA,IAAAmH,EAAA5I,EAAAvjB,EAAA2mB,oBAAAjmB,EAAAO,UAAAC,YAAA,GACAkrB,GAAA,EAEA7H,EAAAzI,IAAA,sEAEA+I,EAAAN,IACAhB,EAAA0D,WAAAC,OAAAmF,iBAAA9H,GAGAA,EAAAvkB,EAAA8kB,cAAAC,WACAxB,EAAA0D,WAAAC,OAAAoF,eAAA/H,GAKAhB,EAAAvjB,EAAA4mB,sBAAArC,GAEAD,EAAAC,EACAhB,EAAAkC,gBAAAC,WACAnC,EAAAkC,gBAAAG,YACArB,EAAAzI,IAAA,4DAIAyI,EAAAvkB,EAAAmoB,wBAAAxC,QAEA1lB,EAAAskB,GAAAI,eAAAxd,EAAA2c,SAGAF,EAAAxa,KAAA,qBACAmb,EAAAzI,IAAA,8CAEAyI,EAAAgH,KAAAa,EACA,IAEAD,GAGAvI,EAAAxa,KAAA,2BAGA1I,EAAA8qB,YAAA,WACAjH,EAAAgH,KAAAa,EACA,KACA,GAEA,GAAAF,EACA,CACA,MAAA/c,GACAoV,EAAAzI,IAAAkJ,EAAA7lB,KAAA,qBAAAgQ,EAAAqW,QAAA,+BACA0G,GACA,CAhEA,CAiEA,EAEA,IAAArR,EAAA0J,EAAA1J,IAAA,aACA0R,EAAA,SAAApd,EAAAoV,GACA,IAAAiI,EAAAjJ,EAAAvjB,EAAAmP,MAAAqS,EAAAG,iBAAAxS,EAAAoV,EAAAvkB,EAAAysB,kBAEAxsB,EAAAskB,GAAAI,eAAAxd,EAAAkI,QAAAmd,GACAnC,EAAA2B,OAAAQ,GAEAjI,EAAAgH,MACA,EAqKA,OAnKAtrB,EAAAskB,GAAAI,eAAAxd,EAAA4c,YAEAlJ,EAAA0I,EAAA0D,WAAAC,OAAAwF,mBAAAnI,EAAA1J,GAEA0J,EAAAzI,IAAA,qBAAAjB,EAAA,MAGA0J,EAAAvkB,EAAAysB,iBAAA,WACA,IAAAE,EAGA7H,EACA8H,EAHAC,EAAA,EAIA5F,EAAA,GACA6F,EAAA,GACAC,EAAA,SAAAxI,EAAAyI,GACA,IAAAnS,EAAA0I,EAAA0D,WAAAC,OAAAwF,mBAAAnI,IAAA1J,IAAA,cACA0J,EAAAzI,IAAA,qBAAAjB,EAAA,MACA,IAAAmP,EAAA,CACAnP,MACA1L,MAAA,SAAAA,EAAA8d,GAEAA,IAAApJ,EACA0I,EAAApd,EAAAoV,GAGA8F,EAAA2B,OAAAzI,EAAAvjB,EAAAmP,MAAAqS,EAAAK,wBAAA,KAAA0C,EAAAvkB,EAAAysB,kBAEA,EACAS,QAAAF,GAOA,OAJAzI,EAAA4I,cACAnD,EAAAoD,QAAA,CAAAC,cAAA,UAAA9I,EAAA4I,cAGA5J,EAAA0D,WAAAC,OAAAoG,KAAA/I,EAAAyF,EACA,EACAC,EAAA,SAAAsD,GACA,IACAZ,EAAApI,EAAAoE,eAAA4E,EACA,OAAApe,GAEA,YADAod,EAAAhJ,EAAAvjB,EAAAmP,MAAAqS,EAAAM,8BAAA3S,GAAAoV,EAEA,CAGA,GAAAoI,EAAAa,oBAIA,OAHAZ,EAAArJ,EAAAvjB,EAAAmP,MAAAqS,EAAAc,yBACAriB,EAAAskB,GAAAI,eAAAxd,EAAAkI,QAAA,CAAAud,SACAvC,EAAA2B,OAAAY,GAIA,IAAAD,EAAAc,kBAAA,IAAAlJ,EAAAkF,mBAAA9pB,QAAAgtB,EAAAc,iBAKA,OAJAb,EAAArJ,EAAAvjB,EAAAmP,MAAAoU,EAAAvjB,EAAAwmB,OAAAhF,EAAAa,qBAAAkC,EAAAiF,eAAAmD,EAAAc,kBACAxtB,EAAAskB,GAAAI,eAAAxd,EAAAkI,QAAA,CAAAud,SACAvC,EAAA2B,OAAAY,GAQA,QAAArI,EAAAmF,oCAAA/pB,QAAAgtB,EAAAc,iBAAA,CACA,GAAAd,EAAArJ,MAIA,OAHAsJ,EAAArJ,EAAAvjB,EAAAmP,MAAAoU,EAAAvjB,EAAAwmB,OAAAhF,EAAAS,gBAAA0K,EAAArJ,QACArjB,EAAAskB,GAAAI,eAAAxd,EAAAkI,QAAA,CAAAud,SACAvC,EAAA2B,OAAAY,GAGA,GAAAD,EAAAe,YAAA,CACA,GA/DA,MA+DAb,EAEA,YADAN,EAAAhJ,EAAAvjB,EAAAmP,MAAAqS,EAAAO,8BAAAwC,GAIA,SAAArkB,EAAA8kB,YAEA9kB,EAAA8kB,UAAA,iDAGAT,EAAAzI,IAAA,yBAAA6Q,EAAAe,aACAnJ,EAAA4I,YAAAR,EAAAgB,YAEA,IAAAC,EAAAjB,EAAAe,YAAAruB,MAAA,OAMA,OALAorB,EAAAlG,EAAAqJ,EAAA,IAGArJ,EAAAvkB,EAAA0oB,WAAA,IAAAkF,EAAAruB,OAAAquB,EAAA,QAEA,UAAArJ,EAAA+E,cAAA/E,EAAA4I,iBACAZ,EAAAhJ,EAAAvjB,EAAAmP,MAAAqS,EAAA6B,kCAAAkB,IAIAsI,SACAE,EAAAxI,EAAA0F,GAEA,CACA,CAEAnF,EAAAP,EAAAvkB,EAAA8kB,cACAP,EAAAsJ,eAAAlB,EAAAmB,IACAvJ,EAAA9iB,GAAAkrB,EAAAoB,aACAxJ,EAAAyJ,MAAArB,EAAAsB,gBACA1J,EAAA2J,mBAAAvB,EAAAwB,mBAGA5J,EAAAvkB,EAAAouB,YAAA,IAAAzB,EAAA0B,kBAAA,IAIA9J,EAAAsF,kBAAA,IAAA8C,EAAA2B,kBAGA/J,EAAAvkB,EAAAyoB,6BAAAlE,EAAAqF,wBAAA,IAAA+C,EAAA4B,wBAGA5B,EAAA6B,kBAEA1J,EAAAC,WAAA,EAGAD,EAAAyC,QAAA,IAAAoF,EAAA6B,iBAGA1J,EAAA2J,eAAA3J,EAAAyC,QAAAhD,EAAAwF,gBAGAxF,EAAAvkB,EAAAuoB,cAAAzD,EAAAyC,QAAAzC,EAAA2J,gBAAA,GAEA3J,EAAAC,WAAA,EAGAR,EAAAuF,gBAAAvF,EAAAsF,mBAAA/E,EAAAyC,SAAA,GAEAtnB,EAAAgJ,KAAAsa,EAAA0D,YAAA,SAAAxP,GACA,OAAAA,EAAA9X,QAAA,qBAAA8X,IAAAkV,EAAA+B,cACA,SAEA5B,EAAAplB,KAAA+P,EACA,IAEAxX,EAAA8qB,QAAA7qB,EAAA8kB,WACA/kB,EAAAgJ,KAAA/I,EAAA8kB,WAAA,SAAAhlB,EAAAglB,GACA/kB,EAAA0uB,QAAA3J,EAAA8H,IAAA,GACA7F,EAAAvf,KAAAsd,EAEA,IACA,SAAA9kB,EAAA8kB,UACAiC,EAAA6F,EACA7sB,EAAA0uB,QAAAzuB,EAAA8kB,UAAA8H,IAAA,GACA7F,EAAAvf,KAAAxH,EAAA8kB,WAGAkF,EAAAjD,EACA,EAEA,OAAA8F,EAAAxI,EAAA0F,EACA,CA1JA,GA4JAI,EAAAa,SACA,EAEA0D,SAAA,SAAA3E,GAIA,IAAA1F,EAAA1d,KAIA,OAHA5G,EAAAskB,GAAAnb,KAAAjC,EAAA4c,YAAA,SAAA5E,EAAAhd,GACA8nB,EAAA4B,KAAAtH,EACA,IACAA,CACA,EAEAsK,KAAA,SAAA1sB,GAIA,IAAAoiB,EAAA1d,KAEA,GAAA0d,EAAAG,QAAAnB,EAAAkC,gBAAAmC,aAEA,UAAAtE,MAAA,6FAGA,GAAAiB,EAAAG,QAAAnB,EAAAkC,gBAAAC,WAEA,UAAApC,MAAA,6IAKA,OAFAiB,EAAAS,UAAA6J,KAAAtK,EAAApiB,GAEAoiB,CACA,EAEAuK,SAAA,SAAA7E,GAIA,IAAA1F,EAAA1d,KAIA,OAHA5G,EAAAskB,GAAAnb,KAAAjC,EAAA6c,YAAA,SAAA7E,EAAAhd,GACA8nB,EAAA4B,KAAAtH,EAAApiB,EACA,IACAoiB,CACA,EAEAkH,aAAA,SAAAxB,GAIA,IAAA1F,EAAA1d,KAIA,OAHA5G,EAAAskB,GAAAnb,KAAAjC,EAAAid,gBAAA,SAAAjF,EAAAhd,GACA8nB,EAAA4B,KAAAtH,EAAApiB,EACA,IACAoiB,CACA,EAEApV,MAAA,SAAA8a,GAIA,IAAA1F,EAAA1d,KAQA,OAPA5G,EAAAskB,GAAAnb,KAAAjC,EAAAkI,SAAA,SAAA8P,EAAA4P,EAAAC,GACAzK,EAAA2D,UAAA6G,EAIA9E,EAAA4B,KAAAtH,EAAAwK,EAAAC,EACA,IACAzK,CACA,EAEAqD,aAAA,SAAAqC,GAIA,IAAA1F,EAAA1d,KAIA,OAHA5G,EAAAskB,GAAAnb,KAAAjC,EAAAkd,cAAA,SAAAlF,EAAAhd,GACA8nB,EAAA4B,KAAAtH,EACA,IACAA,CACA,EAEA0K,eAAA,SAAAhF,GAIA,IAAA1F,EAAA1d,KAKA,OAJA5G,EAAAskB,GAAAnb,KAAAjC,EAAA8c,kBAAA,SAAA9E,EAAAhd,GACA8nB,EAAA4B,KAAAtH,EACA,IAEAA,CACA,EAEAsD,aAAA,SAAAoC,GAIA,IAAA1F,EAAA1d,KAIA,OAHA5G,EAAAskB,GAAAnb,KAAAjC,EAAA+c,gBAAA,SAAA/E,EAAAhd,GACA8nB,EAAA4B,KAAAtH,EACA,IACAA,CACA,EAEA2K,YAAA,SAAAjF,GAIA,IAAA1F,EAAA1d,KAIA,OAHA5G,EAAAskB,GAAAnb,KAAAjC,EAAAgd,aAAA,SAAAhF,EAAAhd,GACA8nB,EAAA4B,KAAAtH,EACA,IACAA,CACA,EAEAgH,KAAA,SAAA/D,EAAA2H,GAKA,IAAA5K,EAAA1d,KAEAuoB,EAAA7K,EAAA+F,UAcA,OAXA/F,EAAAvkB,EAAAirB,sBAEArH,EAAAyL,OAAA,OAAA9K,EAAAvkB,EAAAirB,6BAIA1G,EAAAvkB,EAAAE,cACAqkB,EAAAvkB,EAAAirB,qBAIAvH,GAAAa,EAAAvkB,EAAAE,SAAA,IAAAqkB,EAAAvkB,EAAAE,OAAAiqB,gBAYA5F,EAAAG,QAAAnB,EAAAkC,gBAAAmC,cAIArD,EAAAzI,IAAA,wBAGApb,EAAAgrB,aAAAnH,EAAAvkB,EAAAwoB,YACA9nB,EAAA4uB,cAAA/K,EAAAvkB,EAAA8mB,gBAEAvC,EAAAS,YACAT,EAAAS,UAAAuG,KAAAhH,IAEA,IAAA4K,GACA5K,EAAAS,UAAAuK,MAAAhL,EAAAiD,GAGA3C,EAAAN,IACAhB,EAAA0D,WAAAC,OAAAsI,wBAAAjL,GAGAA,EAAAS,UAAA,MAGAT,EAAAvkB,EAAAysB,mBAEAlI,EAAAvkB,EAAAysB,iBAAA8C,MAAA1L,UACAU,EAAAvkB,EAAAysB,kBAIAlI,EAAAvkB,EAAA8rB,aACAvH,EAAAvkB,EAAA8rB,YAAAP,cAGAhH,EAAA+F,iBACA/F,EAAAkL,iBACAlL,EAAAmL,mBACAnL,EAAA9iB,UACA8iB,EAAAvkB,EAAA8mB,sBACAvC,EAAAvkB,EAAAooB,qBACA7D,EAAAvkB,EAAAsoB,aAGA/D,EAAAvkB,EAAAmoB,wBAAArC,QAGA7lB,EAAAskB,GAAA8K,OAAAloB,EAAA2c,gBAGAS,EAAA4I,mBACA5I,EAAA9e,gBACA8e,EAAA8E,YACA9E,EAAAzgB,eACAygB,EAAAmG,kBACAnG,EAAAgF,YACAhF,EAAA1J,IAAA0J,EAAAqH,aACArH,EAAAvkB,EAAA0oB,WAAA,KAGApE,EAAAC,IAAAG,MAAAnB,EAAAkC,gBAAAmC,cACA3nB,EAAAskB,GAAAI,eAAAxd,EAAAkd,cAEAE,QA/DA,GAXAA,EAAAzI,IAAA,gDAGAsT,GACAA,EAAApD,OAAAzI,EAAAvjB,EAAAmP,MAAAqS,EAAAI,uBAuEA,EAEA9F,IAAA,SAAA6T,IA79BA,SAAAA,EAAA3J,GAIA,IAAA4J,GAHA,IAAA5J,QAIA,IAAAtlB,EAAA,UAGAkvB,EAAA,SAAAhxB,MAAAixB,eAAA,cAAAF,EACAjvB,EAAAovB,QAAAC,MACArvB,EAAAovB,QAAAC,MAAAH,GACAlvB,EAAAovB,QAAAhU,KACApb,EAAAovB,QAAAhU,IAAA8T,GAEA,CAg9BA9T,CAAA6T,EAAA9oB,KAAAmf,QACA,GAGAzC,EAAA0C,GAAA7kB,KAAAwF,UAAA2c,EAAA0C,GAEA1C,EAAAyM,WAAA,WAMA,OAHA/vB,EAAAskB,aAAAhB,IACAtjB,EAAAskB,WAAAf,GAEAD,CACA,EAEAtjB,EAAAskB,aACAf,EAAAvjB,EAAAskB,YAGAtkB,EAAAskB,WAAAtkB,EAAAsjB,SAEA,CAjjCA,CAijCA7iB,OAAAuvB,OAAAvvB,QAQA,SAAAT,EAAAS,EAAAuM,GAEA,IAIAijB,EAJA3M,EAAAtjB,EAAAsjB,QACApc,EAAAlH,EAAAsjB,QAAApc,OACAmd,EAAArkB,EAAAsjB,QAAAe,YACA6L,EAAA,oBAKA,SAAAC,EAAA7L,GACAA,EAAAvkB,EAAA8kB,cAAAuL,YAYA,SAAA9L,GACA,IACA+L,EADAxL,EAAAP,EAAAvkB,EAAA8kB,cAIAP,EAAAG,QAAAnB,EAAAkC,gBAAAG,aACA0K,GAAA,IAAA1xB,MAAAypB,UAAA9D,EAAAvkB,EAAAooB,gBAGAtD,EAAAyC,SACAhD,EAAAzI,IAAA,6EAGAyI,EAAAS,UAAAuL,eAAAhM,IACA+L,GAAAxL,EAAA2J,eAEA3J,EAAA0L,eACAjM,EAAAzI,IAAA,4DACA7b,EAAAskB,GAAAI,eAAAxd,EAAA8c,kBACAa,EAAA0L,cAAA,GAGA1L,EAAA0L,cAAA,EAGA,CApCAC,CAAAlM,GAIA2L,EAAAQ,WAAAnM,KACAA,EAAAvkB,EAAAwoB,WAAA9nB,EAAA8qB,YAAA,WACA4E,EAAA7L,EACA,GAAAA,EAAAvkB,EAAAuoB,cAEA,CA6BA,SAAAoI,EAAApM,EAAA1gB,GACA,IAAAgX,EAAA0J,EAAA1J,IAAAhX,EAMA,OAJA0gB,EAAAS,YACAnK,GAAA,cAAA0J,EAAAS,UAAA7lB,MAGA+wB,EAAAxD,mBAAAnI,EAAA1J,EACA,CAEA,SAAA+V,EAAArM,GACA1d,KAAA0d,aAEA1d,KAAAgqB,gBAAA,EACAhqB,KAAAiqB,gBAAA,EACAjqB,KAAAkqB,mBAAA,CACA,CA1DAxN,EAAA0D,WAAA,GA4DA2J,EAAAhqB,UAAA,CACAmhB,MAAA,SAAA/C,EAAAgI,EAAAd,GACA,IAAA7G,EAAAxe,KACA0d,EAAAc,EAAAd,WACAyM,GAAA,EAEA3L,EAAAwL,gBAAAxL,EAAA0L,kBACAxM,EAAAzI,IAAA,YAAAkJ,EAAA7lB,KAAA,uEAIAolB,EAAAzI,IAAAkJ,EAAA7lB,KAAA,wBAEA6lB,EAAA+C,MAAAxD,GAAA,WACAyM,GACA3L,EAAA4L,aAAAjM,EAAAgI,EAEA,aAAA7d,GASA,OAPA6hB,IACAA,GAAA,EACA3L,EAAA6L,gBAAAlM,EAAA7V,EAAA+c,KAKA7G,EAAAyL,gBAAAzL,EAAA0L,iBACA,IAEA1L,EAAA8L,uBAAAzwB,EAAA8qB,YAAA,WACAwF,IACAA,GAAA,EACAzM,EAAAzI,IAAAkJ,EAAA7lB,KAAA,gDACAkmB,EAAA6L,gBAAAlM,EArGA,UAqGAkH,GAEA,GAAA3H,EAAAvkB,EAAAyoB,8BACA,EAEA8C,KAAA,WACA1kB,KAAAkqB,mBAAA,EACArwB,EAAAgrB,aAAA7kB,KAAAsqB,wBACA5N,EAAA0D,WAAAC,OAAAkK,qBAAAvqB,KAAA0d,WACA,EAEA0M,aAAA,SAAAjM,EAAAgI,GACA,IAAA3H,EAAAxe,KACA0d,EAAAc,EAAAd,WAEAc,EAAAwL,eACAtM,EAAAzI,IAAA,wDAIAuJ,EAAA0L,oBAIA1L,EAAAwL,gBAAA,EACAnwB,EAAAgrB,aAAArG,EAAA8L,wBAEA5M,EAAAzI,IAAAkJ,EAAA7lB,KAAA,mDACAokB,EAAA0D,WAAAC,OAAAmK,UAAA9M,GAAA,WACAc,EAAAyL,gBAAA,EACA9D,GACA,IACA,EAEAkE,gBAAA,SAAAlM,EAAA7V,EAAA+c,GACA,IAEAoF,EAFA/M,EAAA1d,KAAA0d,WACA8F,EAAA9F,EAAA+F,UAGAzjB,KAAAkqB,oBAIArwB,EAAAgrB,aAAA7kB,KAAAsqB,wBAEAtqB,KAAAgqB,eAKAhqB,KAAAiqB,iBAGAQ,EAAA/N,EAAAvjB,EAAAmP,MAAAoU,EAAA/B,UAAAQ,wBAAA7S,GAEAoV,EAAAzI,IAAAkJ,EAAA7lB,KAAA,wEACAc,EAAAskB,GAAAI,eAAAxd,EAAAkI,QAAA,CAAAiiB,IACAjH,GACAA,EAAA2B,OAAAsF,GAGA/M,EAAAgH,SAfAvG,EAAAuG,KAAAhH,GAEAA,EAAAzI,IAAAkJ,EAAA7lB,KAAA,0DACA+sB,KAiBA,GAGAgE,EAAA3M,EAAA0D,WAAAC,OAAA,CACAoG,KAAA,SAAA/I,EAAAyF,GACA,OAAA/pB,EAAAqtB,KACArtB,EAAAuG,QAAA,KAAAvG,EAAAsjB,QAAA8D,aAAA,CACA9a,KAAA,MACApK,KAAA,GACAovB,UAAA,CAAA5G,gBAAApG,EAAAoG,iBACApB,YAAAhF,EAAAgF,YACAiI,SAAAjN,EAAA+E,cACAU,GACA,EAEA7C,WAAA,SAAA5C,GAIA,IAAA1J,EACA4W,EACArC,EAAAnvB,EAAAsqB,WA6EA,OA3EAhG,EAAAS,WACAnK,EAAA0J,EAAA1J,IAAA,QAEAA,EAAAqV,EAAAwB,MAAA7W,EAAA0J,EAAAwB,IAEA0L,EAAAvB,EAAA5C,KAAA/I,EAAA,CACA1J,MACAuS,QAAA7I,EAAA4I,YAAA,CAAAE,cAAA,UAAA9I,EAAA4I,aAAA,GACAD,QAAA,SAAAK,GACA,IAAAprB,EAEA,IACAA,EAAAoiB,EAAAoE,eAAA4E,EACA,CACA,MAAApe,GAUA,OATAigB,EAAApD,OACAzI,EAAAvjB,EAAAumB,eACAhD,EAAA/B,UAAAwB,sBACAuB,EAAAS,UACA7V,EACAsiB,SAGAlN,EAAAgH,MAEA,CAEA,SAAAppB,EAAAwvB,SACAvC,EAAAjE,UAGAiE,EAAApD,OACAzI,EAAAvjB,EAAAumB,eACAhD,EAAAvjB,EAAAwmB,OAAAjD,EAAA/B,UAAAqB,gCAAA0K,GACAhJ,EAAAS,UACA,KACAyM,GAIA,EACAtiB,MAAA,SAAAA,GACA,MAAAA,EAAAyiB,QAAA,MAAAziB,EAAAyiB,QACAxC,EAAApD,OACAzI,EAAAvjB,EAAAumB,eACAhD,EAAAvjB,EAAAwmB,OAAAjD,EAAA/B,UAAAuB,2BAAA5T,EAAAyiB,QACArN,EAAAS,UACA7V,EACAsiB,IAGAlN,EAAAgH,QAGA6D,EAAApD,OACAzI,EAAAvjB,EAAAumB,eACAhD,EAAA/B,UAAAsB,iBACAyB,EAAAS,UACA7V,EACAsiB,GAIA,KAIArC,EAAApD,OACAzI,EAAAvjB,EAAAumB,eACAhD,EAAA/B,UAAAyB,sBACAsB,EAAAS,YAKAoK,EAAAlE,SACA,EAEAwB,mBAAA,SAAAnI,EAAA1J,GACA,IAAAgX,EAqBA,OAlBAA,EAAA3B,EAAAwB,MAAA7W,EAAA,kBAAA0J,EAAAiF,gBAIAqI,EAFA,iBAAAtN,EAAAvkB,EAAA,WAEAkwB,EAAAwB,MAAAG,EAAAtN,EAAAvkB,EAAA0oB,YAGAwH,EAAAwB,MAAAG,EAAAtN,EAAAwB,IAGAxB,EAAAyJ,QACA6D,GAAA,oBAAAnxB,EAAAoxB,mBAAAvN,EAAAyJ,QAGAzJ,EAAApiB,OACA0vB,GAAA,mBAAAnxB,EAAAoxB,mBAAAvN,EAAApiB,OAGA0vB,CACA,EAEAH,MAAA,SAAA7W,EAAAkL,GACA,IACAgM,EADAC,GAAA,IAAAnX,EAAAlb,QAAA,aAGA,IAAAomB,EACA,OAAAlL,EAGA,sBACA,OAAAA,EAAAmX,EAAA/xB,EAAA8Z,MAAAgM,GAGA,sBAOA,MAJA,OAFAgM,EAAAhM,EAAAtmB,OAAA,KAEA,MAAAsyB,IACAC,EAAA,IAGAnX,EAAAmX,EAAAjM,EAGA,UAAAzC,MAAA,2DACA,EAGA2O,OAAA,SAAA1N,EAAAS,EAAA6C,EAAAqK,EAAAC,GAEA,IACAtX,GADA,eAAAmK,EAAA,GAAAT,EAAAzgB,SACAygB,EAAAsJ,eACA9H,EAAA,aAAAf,EAkCA,OAhCAmN,GAAA5N,EAAAmL,cACA3J,GAAA,gBAAArlB,EAAAoxB,mBAAAvN,EAAAmL,cAGA7H,GAKAhN,GAFAqX,EAEA,QAEA,cAGAC,GAAA5N,EAAAkL,YACA1J,GAAA,cAAArlB,EAAAoxB,mBAAAvN,EAAAkL,aAVA5U,GAAA,WAaAA,GAAA,IAAAkL,EACAlL,EAAAqV,EAAAxD,mBAAAnI,EAAA1J,GAGA0J,EAAAS,WAAAT,EAAA4I,cACA,qBAAA5I,EAAAS,UAAA7lB,MAAA,eAAAolB,EAAAS,UAAA7lB,OACA0b,GAAA,iBAAAna,EAAAoxB,mBAAAvN,EAAA4I,eAIAgF,IACAtX,GAAA,QAAAe,KAAAM,MAAA,GAAAN,KAAAwW,WAGAvX,CACA,EAEAwX,2BAAA,SAAAC,GACA,OACAC,UAAAD,EAAAE,EACAC,SAAAH,EAAAI,EACAC,iBAAA,IAAAL,EAAA,EACAM,qBAAA,IAAAN,EAAA,EACAO,cAAAP,EAAAQ,EACAC,YAAAT,EAAAU,EACA1P,MAAAgP,EAAAW,EAEA,EAEAC,aAAA,SAAA3O,EAAAmL,GACAA,IACAnL,EAAAmL,cAEA,EAEAyD,cAAA,SAAA5O,EAAAiB,GACA,kCACAA,EAEAjB,EAAAsE,KAAAlO,UAAA6K,EACA,EAEA4N,SAAA,SAAA7O,EAAApiB,GACA,IAEAsvB,EAFA4B,EAAAnD,EAAAiD,cAAA5O,EAAApiB,GACA0Y,EAAA8V,EAAApM,EAAA,SAEAsC,EAAA,SAAA1X,EAAAoV,GACAtkB,EAAAskB,GAAAI,eAAAxd,EAAAkI,QAAA,CAAAkU,EAAAvjB,EAAAumB,eAAAhD,EAAA/B,UAAAe,WAAAgC,EAAAS,UAAA7V,EAAAsiB,GAAAtvB,GACA,EAuCA,OApCAsvB,EAAAvB,EAAA5C,KAAA/I,EAAA,CACA1J,MACAtO,KAAA,UAAAgY,EAAA+E,aAAA,aACAC,YAAAhG,EAAAvjB,EAAAkmB,mBACAkH,QAAA7I,EAAA4I,YAAA,CAAAE,cAAA,UAAA9I,EAAA4I,aAAA,GACAhrB,KAAA,CACAA,KAAAkxB,GAEAnG,QAAA,SAAAK,GACA,IAAAZ,EAEA,GAAAY,EAAA,CACA,IACAZ,EAAApI,EAAAoE,eAAA4E,EACA,CACA,MAAApe,GAGA,OAFA0X,EAAA1X,EAAAoV,QACAA,EAAAgH,MAEA,CAEA2E,EAAAoD,gBAAA/O,EAAAoI,EACA,CACA,EACAxd,MAAA,SAAAA,EAAAokB,GACA,UAAAA,GAAA,gBAAAA,GAOA1M,EAAA1X,EAAAoV,EACA,GAIA,EAEAiP,UAAA,SAAAjP,EAAAiD,GACA,YAAAjD,EAAA,WAKAiD,OAAA,IAAAA,KAEA,IAAA3M,EAAA8V,EAAApM,EAAA,UAEAkP,EAAAlP,EAAA4I,YAAA,CAAAE,cAAA,UAAA9I,EAAA4I,aAAA,GAGAzsB,EAAAgzB,MAEAhzB,EAAAgzB,MAAA7Y,EAAA,CACA8Y,OAAA,OACAC,WAAA,EACAxG,QAAAqG,EACAI,aAAA,IAAAtP,EAAAoG,gBAAA,0BAKAuF,EAAA5C,KAAA/I,EAAA,CACA1J,MACA2M,QACAD,QAAA,IACAhb,KAAA,OACA6gB,QAAAqG,EACAjC,SAAA,SAIAjN,EAAAzI,IAAA,4BAAA0L,EAAA,IA/BA,CAgCA,EAEA6J,UAAA,SAAA9M,EAAAyI,GACA,IAAA8G,EAAA,SAAA3kB,GACA,IAAAkb,EAAA9F,EAAA+F,UACAD,GACAA,EAAA2B,OAAA7c,EAEA,EACA4kB,EAAA,SAAA5kB,GACAoV,EAAAzI,IAAA,sDACA7b,EAAAskB,GAAAI,eAAAxd,EAAAkI,QAAA,CAAAF,IACA2kB,EAAA3kB,GACAoV,EAAAgH,MACA,EAEAhH,EAAAvkB,EAAAg0B,aAAA9D,EAAA5C,KAAA/I,EAAA,CACA1J,IAAA8V,EAAApM,EAAA,UACA6I,QAAA7I,EAAA4I,YAAA,CAAAE,cAAA,UAAA9I,EAAA4I,aAAA,GACAD,QAAA,SAAAK,EAAAN,EAAAwE,GACA,IAAAtvB,EAEA,IACAA,EAAAoiB,EAAAoE,eAAA4E,EACA,OAAApe,GAIA,YAHA4kB,EAAAxQ,EAAAvjB,EAAAmP,MACAoU,EAAAvjB,EAAAwmB,OAAAjD,EAAA/B,UAAAW,0BAAAoL,GACApe,EAAAsiB,GAEA,CAEA,YAAAtvB,EAAAwvB,SACA3E,IAEA+G,EAAAxQ,EAAAvjB,EAAAmP,MACAoU,EAAAvjB,EAAAwmB,OAAAjD,EAAA/B,UAAAY,qBAAAmL,GACA,KAAAkE,GAEA,EACAtiB,MAAA,SAAAsiB,EAAAxE,EAAA9d,GACA8d,IAAAkD,EACA4D,EAAAxQ,EAAAvjB,EAAAmP,MACAoU,EAAA/B,UAAAQ,wBACA7S,EAAAsiB,KAIAlN,EAAAzI,IAAA,mEACAgY,EAAAvQ,EAAAvjB,EAAAmP,MACAoU,EAAA/B,UAAAU,0BACA,KAAAuP,IAEA,GAEA,EAEAL,qBAAA,SAAA7M,GACAA,EAAAvkB,EAAAg0B,eAEAzP,EAAAvkB,EAAAg0B,aAAAzE,MAAAY,UACA5L,EAAAvkB,EAAAg0B,aAEA,EAEAC,cAAA,SAAA1P,EAAA2P,EAAAC,GACAD,EAAAvB,aAAAwB,EACAA,IACAD,EAAAvB,aACApO,EAAAzI,IAAA,mEAGA,EAEAwX,gBAAA,SAAA/O,EAAApiB,GACAoiB,EAAAvkB,EAAAmoB,wBAAA5C,UAAApjB,IACAlC,EAAAskB,GAAAI,eAAAxd,EAAA6c,WAAA,CAAA7hB,GAEA,EAEAiyB,gBAAA,SAAA7P,EAAA8P,EAAAF,GACA,IAAAhyB,EAEA,GAAAkyB,QAAA,IAAAA,EAAAC,EAEApE,EAAAoD,gBAAA/O,EAAA8P,QAOA,GAFAnE,EAAAqE,gBAAAhQ,GAEA8P,EAAA,CAIA,IAFAlyB,EAAA+tB,EAAAmC,2BAAAgC,IAEA/Q,MAKA,OAHAiB,EAAAzI,IAAA,8CAAAuY,EAAApB,GACAhzB,EAAAskB,GAAAI,eAAApB,EAAApc,OAAAkI,QAAA,CAAAkU,EAAAvjB,EAAAmP,MAAAklB,EAAApB,EAAA,sBACA1O,EAAAgH,MAAA,MAIA2E,EAAAgD,aAAA3O,EAAApiB,EAAA4wB,aAEA5wB,EAAAowB,YACAhO,EAAAkL,UAAAttB,EAAAowB,WAGApwB,EAAAswB,WACAxyB,EAAAgJ,KAAA9G,EAAAswB,UAAA,SAAApqB,EAAAmd,GACA0K,EAAAoD,gBAAA/O,EAAAiB,EACA,IAEA0K,EAAA+D,cAAA1P,EAAApiB,EAAAgyB,GAEA,CACA,EAEA9H,iBAAA,SAAA9H,GACA,IAAAO,EAAAP,EAAAvkB,EAAA8kB,cAGAA,EAAAuL,WAgBA9L,EAAAzI,IAAA,kEAfAgJ,EAAAuL,YAAA,EAEAH,EAAAqE,gBAAAhQ,GAGAA,EAAAvkB,EAAA8kB,cAAA0P,yBAAA,WAEAtE,EAAAqE,gBAAAhQ,EACA,EAGAtkB,EAAAskB,GAAAnb,KAAAjC,EAAAgd,YAAAI,EAAAvkB,EAAA8kB,cAAA0P,0BAEAjQ,EAAAzI,IAAA,uDAAAgJ,EAAA2J,eAAA,2BAAA3J,EAAAyC,QAAA,iCAAAhD,EAAAsF,mBAIA,EAEA2F,wBAAA,SAAAjL,GACA,IAAAO,EAAAP,EAAAvkB,EAAA8kB,cAGAA,EAAAuL,aAEAvL,EAAAuL,YAAA,EAGApwB,EAAAskB,GAAA8K,OAAAloB,EAAAgd,YAAAI,EAAAvkB,EAAA8kB,cAAA0P,0BAGAjQ,EAAAvkB,EAAA8kB,cAAA,GACAP,EAAAzI,IAAA,8CAEA,EAEAwQ,eAAA,SAAA/H,GACAA,EAAAvkB,EAAAsoB,cAAA,IAAA1pB,MAAAypB,UACA+H,EAAA7L,EACA,EAEAgQ,gBAAA,SAAAhQ,GACAA,EAAAvkB,EAAAooB,eAAA,IAAAxpB,MAAAypB,UACA9D,EAAAvkB,EAAAsoB,aAAA/D,EAAAvkB,EAAAooB,aACA,EAEAsI,WAAA,SAAAnM,GACA,QAAA2L,EAAAuE,iBAAAlQ,KACAA,EAAAvkB,EAAAsoB,cAAA,IAAA1pB,MAAAypB,WACA,EAIA,EAEAqM,0BAAA,SAAAnQ,GACA,OAAAA,EAAAG,QAAAnB,EAAAkC,gBAAAG,WACArB,EAAAG,QAAAnB,EAAAkC,gBAAAoC,YACA,EAEA8M,wBAAA,SAAApQ,GAMA,OAHA,IAFAD,EAAAC,EACAhB,EAAAkC,gBAAAG,UACArC,EAAAkC,gBAAAoC,eACA5nB,EAAAskB,GAAAI,eAAAxd,EAAA+c,gBAEAK,EAAAG,QAAAnB,EAAAkC,gBAAAoC,YACA,EAEA+M,sBAAA,SAAArQ,GACAA,KAAAvkB,EAAAmjB,mBACAziB,EAAAgrB,aAAAnH,EAAAvkB,EAAAmjB,yBACAoB,EAAAvkB,EAAAmjB,iBAEA,EAEAsR,iBAAA,SAAAlQ,GAIA,IAAAA,EAAAvkB,EAAA8kB,cAAAC,YACA,IAAAnmB,MAAAypB,UAAA9D,EAAAvkB,EAAAsoB,aAAA/D,EAAAuF,gBACA,SAGA,IAAAtE,EAAAjC,EAAAvjB,EAAAwmB,OAAAjD,EAAA/B,UAAA4B,uBAAA,IAAAxkB,KAAA2lB,EAAAvkB,EAAAsoB,cAAA/D,EAAAuF,iBAIA,OAHAvF,EAAAzI,IAAA0J,GACAvlB,EAAAskB,GAAAI,eAAAxd,EAAAkI,QAAA,CAAAkU,EAAAvjB,EAAAmP,MAAAqW,EAAA,sBACAjB,EAAAgH,MAAA,OACA,CACA,EAEAsJ,UAAA,SAAAtQ,EAAA0H,GACA,IAAAjH,EAAAzB,EAAA0D,WAAAgF,GAIA,GAAAiE,EAAAwE,0BAAAnQ,OAAAvkB,EAAAmjB,iBAAA,CAEA,IAAA+M,EAAAuE,iBAAAlQ,GACA,OAGAA,EAAAvkB,EAAAmjB,iBAAAziB,EAAA8qB,YAAA,WACA0E,EAAAuE,iBAAAlQ,KAIAS,EAAAuG,KAAAhH,GAEA2L,EAAAyE,wBAAApQ,KACAA,EAAAzI,IAAAmQ,EAAA,kBACAjH,EAAA+C,MAAAxD,IAEA,GAAAA,EAAAoF,eACA,CACA,EAEAmL,mBAAA,SAAAvQ,EAAAgJ,EAAApe,EAAAod,EAAAjqB,GACA,IAAAgvB,EAAA/N,EAAAvjB,EAAAumB,eACAhD,EAAAvjB,EAAAwmB,OAAAjD,EAAA/B,UAAAgB,YAAA+K,GACAhJ,EAAAS,UACA7V,EACA7M,GAGAiqB,KAAA+E,GACA/M,EAAAzI,IAAA,iEAEA7b,EAAAskB,GAAAI,eAAAxd,EAAAkI,QAAA,CAAAiiB,IACA/M,EAAAgH,OAEA,EAEAO,YAAA,SAAAvH,GACA,WAAAqM,EAAArM,EACA,EAEAwQ,aAAA,CACAC,MAAA,EACAC,YAAA,IAIA,CAhuBA,CAguBAv0B,OAAAuvB,OAAAvvB,QASA,SAAAT,EAAAS,EAAAuM,GAEA,IAAAsW,EAAAtjB,EAAAsjB,QACApc,EAAAlH,EAAAsjB,QAAApc,OACAmd,EAAArkB,EAAAsjB,QAAAe,YACA4L,EAAA3M,EAAA0D,WAAAC,OAEA3D,EAAA0D,WAAAiO,WAAA,CACA/1B,KAAA,aAEA0lB,kBAAA,WACA,QACA,EAEAgK,KAAA,SAAAtK,EAAApiB,GACA,IAAAkxB,EAAAnD,EAAAiD,cAAA5O,EAAApiB,GAEA,IACAoiB,EAAA4Q,OAAAtG,KAAAwE,EACA,OAAA+B,GACAn1B,EAAAskB,GAAAI,eAAAxd,EAAAkI,QACA,CAAAkU,EAAAvjB,EAAAumB,eACAhD,EAAA/B,UAAA0B,uBACAqB,EAAAS,UACAoQ,EACA7Q,EAAA4Q,QAEAhzB,GACA,CACA,EAEA4lB,MAAA,SAAAxD,EAAAyI,EAAAT,GACA,IAAA1R,EACAwa,GAAA,EACAhQ,EAAAxe,KACAghB,GAAAmF,EACA/E,EAAAhoB,EAAAskB,GAEA7jB,EAAA40B,UAKA/Q,EAAA4Q,SAEAta,EADA0J,EAAA2J,mBACA3J,EAAA2J,mBAEA3J,EAAAmG,WAAAnG,EAAA8E,KAGAxO,GAAAqV,EAAA+B,OAAA1N,EAAA1d,KAAA1H,KAAA0oB,GAEAtD,EAAAzI,IAAA,qCAAAjB,EAAA,MACA0J,EAAA4Q,OAAA,IAAAz0B,EAAA40B,UAAAza,GAEA0J,EAAA4Q,OAAAI,OAAA,WACAF,GAAA,EACA9Q,EAAAzI,IAAA,qBAEAoU,EAAA0E,sBAAArQ,IAIA,IAFAD,EAAAC,EACAhB,EAAAkC,gBAAAoC,aACAtE,EAAAkC,gBAAAG,YACAqC,EAAAtD,eAAAxd,EAAAgd,YAEA,EAEAI,EAAA4Q,OAAAK,QAAA,SAAAjuB,GACA,IAAA4H,EAMAtI,OAAA0d,EAAA4Q,SACAE,QAAA,IAAA9tB,EAAAkuB,WAAA,IAAAluB,EAAAkuB,UAGAtmB,EAAAoU,EAAAvjB,EAAAumB,eACAhD,EAAA/B,UAAAoB,gBACA2B,EAAAS,UACAzd,GAEAgd,EAAAzI,IAAA,uCAAAvU,EAAAmuB,QAAA,wBAEAnR,EAAAzI,IAAA,qBAGAyQ,KAAApd,KACAA,GACAlP,EAAAskB,GAAAI,eAAAxd,EAAAkI,QAAA,CAAAF,IAGAkW,EAAAwP,UAAAtQ,IAGA,EAEAA,EAAA4Q,OAAAQ,UAAA,SAAApuB,GACA,IAAApF,EAEA,IACAA,EAAAoiB,EAAAoE,eAAAphB,EAAApF,KACA,CACA,MAAAgN,GAEA,YADA+gB,EAAA4E,mBAAAvQ,EAAAhd,EAAApF,KAAAgN,EAAAod,EAAAhlB,EAEA,CAEApF,GACA+tB,EAAAkE,gBAAA7P,EAAApiB,EAAA6qB,EAEA,GA1EAT,GA4EA,EAEAsI,UAAA,SAAAtQ,GACA2L,EAAA2E,UAAAtQ,EAAA1d,KAAA1H,KACA,EAEAoxB,eAAA,SAAAhM,GACA1d,KAAAguB,UAAAtQ,EACA,EAEAgH,KAAA,SAAAhH,GAEA2L,EAAA0E,sBAAArQ,GAEAA,EAAA4Q,SACA5Q,EAAAzI,IAAA,0BACAyI,EAAA4Q,OAAAS,QACArR,EAAA4Q,OAAA,KAEA,EAEA5F,MAAA,SAAAhL,EAAAiD,GACA0I,EAAAsD,UAAAjP,EAAAiD,EACA,EAGA,CA7IA,CA6IA9mB,OAAAuvB,OAAAvvB,QASA,SAAAT,EAAAS,EAAAuM,GAEA,IAAAsW,EAAAtjB,EAAAsjB,QACApc,EAAAlH,EAAAsjB,QAAApc,OACAmd,EAAArkB,EAAAsjB,QAAAe,YACA4L,EAAA3M,EAAA0D,WAAAC,OACA2O,EAAA,SAAAtR,GACA7jB,EAAAgrB,aAAAnH,EAAAvkB,EAAA81B,sCACAvR,EAAAvkB,EAAA81B,6BACA,EAEAvS,EAAA0D,WAAA8O,iBAAA,CACA52B,KAAA,mBAEA0lB,kBAAA,WACA,QACA,EAEAmR,QAAA,IAEAjO,MAAA,SAAAxD,EAAAyI,EAAAT,GACA,IAIA1R,EAJAwK,EAAAxe,KACAwuB,GAAA,EACApN,EAAAhoB,EAAAskB,GACAsD,GAAAmF,EAQA,GALAzI,EAAA0R,cACA1R,EAAAzI,IAAA,4DACAyI,EAAAgH,QAGA7qB,EAAAw1B,YAAA,CAQArb,EAAAqV,EAAA+B,OAAA1N,EAAA1d,KAAA1H,KAAA0oB,GAEA,IACAtD,EAAAzI,IAAA,0CAAAjB,EAAA,MACA0J,EAAA0R,YAAA,IAAAv1B,EAAAw1B,YAAArb,EAAA,CAAA8P,gBAAApG,EAAAoG,iBACA,CACA,MAAAxL,GAYA,OAXAoF,EAAAzI,IAAA,mDAAAqD,EAAAgX,QAAA,UACA5J,EAEAA,KAEAtE,EAAAtD,eAAAxd,EAAAkI,QAAA,CAAAkU,EAAAvjB,EAAAumB,eAAAhD,EAAA/B,UAAAkB,2BAAA6B,EAAAS,UAAA7F,KACA0I,GAEAxC,EAAAwP,UAAAtQ,IAIA,CAEAsD,IACAtD,EAAAvkB,EAAA81B,8BAAAp1B,EAAA8qB,YAAA,YACA,IAAA6J,GAGA9Q,EAAA0R,YAAAtS,aAAAjjB,EAAAw1B,YAAAE,MAEA/Q,EAAAwP,UAAAtQ,EAGA,GACAc,EAAA2Q,UAGAzR,EAAA0R,YAAAI,iBAAA,iBAAAlX,GACAoF,EAAAzI,IAAA,0BAEA+Z,EAAAtR,GACA2L,EAAA0E,sBAAArQ,IAEA,IAAA8Q,IACAA,GAAA,GAIA,IAFA/Q,EAAAC,EACAhB,EAAAkC,gBAAAoC,aACAtE,EAAAkC,gBAAAG,YACAqC,EAAAtD,eAAAxd,EAAAgd,aAGA,OAEAI,EAAA0R,YAAAI,iBAAA,oBAAAlX,GACA,IAAAwN,EAGA,mBAAAxN,EAAAhd,KAAA,CAIA,IACAwqB,EAAApI,EAAAoE,eAAAxJ,EAAAhd,KACA,CACA,MAAAgN,GAEA,YADA+gB,EAAA4E,mBAAAvQ,EAAApF,EAAAhd,KAAAgN,EAAAod,EAAApN,EAEA,CAEA+Q,EAAAkE,gBAAA7P,EAAAoI,EAAAK,EAVA,CAWA,OAEAzI,EAAA0R,YAAAI,iBAAA,kBAAAlX,GACA,IAAAhQ,EAAAoU,EAAAvjB,EAAAumB,eACAhD,EAAA/B,UAAAmB,iBACA4B,EAAAS,UACA7F,GAKAtY,OAAA0d,EAAA0R,cAIA1J,KAAApd,KAIAoV,EAAAzI,IAAA,2BAAAyI,EAAA0R,YAAAtS,WAAA,KAEAxE,EAAAmX,aAAA51B,EAAAw1B,YAAAK,QAKAhS,EAAAzI,IAAA,iEACAuJ,EAAAwP,UAAAtQ,KAGAA,EAAAzI,IAAA,sBACAmM,EAAAtD,eAAAxd,EAAAkI,QAAA,CAAAF,MAEA,MAxGA,MALAod,IACAhI,EAAAzI,IAAA,qCACAyQ,IA4GA,EAEAsI,UAAA,SAAAtQ,GACA2L,EAAA2E,UAAAtQ,EAAA1d,KAAA1H,KACA,EAEAoxB,eAAA,SAAAhM,GACA1d,KAAAguB,UAAAtQ,EACA,EAEAsK,KAAA,SAAAtK,EAAApiB,GACA+tB,EAAAkD,SAAA7O,EAAApiB,EACA,EAEAopB,KAAA,SAAAhH,GAEAsR,EAAAtR,GACA2L,EAAA0E,sBAAArQ,GAEAA,KAAA0R,cACA1R,EAAAzI,IAAA,gCACAyI,EAAA0R,YAAAL,QACArR,EAAA0R,YAAA,YACA1R,EAAA0R,YAEA,EAEA1G,MAAA,SAAAhL,EAAAiD,GACA0I,EAAAsD,UAAAjP,EAAAiD,EACA,EAGA,CA/KA,CA+KA9mB,OAAAuvB,OAAAvvB,QASA,SAAAT,EAAAS,EAAAuM,GAEA,IAaAupB,EAEAC,EAfAlT,EAAAtjB,EAAAsjB,QACApc,EAAAlH,EAAAsjB,QAAApc,OACAmd,EAAArkB,EAAAsjB,QAAAe,YACA4L,EAAA3M,EAAA0D,WAAAC,OACAwP,EAAA,WACA,IAAAC,EAAAj2B,EAAA3B,SAAAoqB,cAAA,UAEA,OADAwN,EAAAC,aAAA,8EACAD,CACA,EAIAE,GACAL,EAAA,KAEAC,EAAA,EAEA,CACAK,QAAA,WAEAvT,EAAAvjB,EAAAmmB,WAAA,IAEA,IAAAsQ,IAEAD,EAAA91B,EAAAsmB,aAAA,WACA,IAAA+P,EAAAL,IAEAh2B,EAAA3B,SAAAi4B,KAAAC,YAAAF,GACAr2B,EAAA3B,SAAAi4B,KAAAE,YAAAH,GAEAA,EAAA,IACA,GAjBA,MAoBAN,IAEA,EACAU,OAAA,WAEA,IAAAV,GACA/1B,EAAA4uB,cAAAkH,GAGAC,EAAA,GACAA,GAEA,IAIAlT,EAAA0D,WAAA8N,aAAA,CACA51B,KAAA,eAEA0lB,kBAAA,WACA,QACA,EAGAuS,qBAAA,GAEArP,MAAA,SAAAxD,EAAAyI,EAAAT,GACA,GAAAhI,EAAA4I,YACAZ,IACAhI,EAAAzI,IAAA,yHACAyQ,SAHA,CAQA,IAEA1R,EAFAwK,EAAAxe,KACAwwB,EAAAnH,EAAA6E,aAAAC,OAAA,EAEA2B,EAAAD,IACAY,EAAA,WACA/S,EAAAzI,IAAA,8EACAyQ,QACAlH,EAAAwP,UAAAtQ,EAEA,EAEA7jB,EAAAw1B,YAEA3J,IACAhI,EAAAzI,IAAA,2EACAyQ,MAKAoK,EAAAC,aAAA,6BAAArS,EAAA9iB,IAIAo1B,EAAAC,UAGAjc,EAAAqV,EAAA+B,OAAA1N,EAAA1d,KAAA1H,MACA0b,GAAA,YAAAwc,EAGA32B,EAAA3B,SAAAqgB,gBAAA6X,YAAAN,GAEApS,EAAAzI,IAAA,mCAEA6a,EAAAN,iBACAM,EAAAN,iBAAA,OAAAiB,GAAA,GACAX,EAAAY,aACAZ,EAAAY,YAAA,SAAAD,GAGAX,EAAAa,IAAA3c,EACAqV,EAAA6E,aAAAE,YAAAoC,GAAA9S,EAEAA,EAAAoS,QACApS,EAAA8S,UAEArK,IACAzI,EAAAyI,UAAA,WACAzI,EAAAzI,IAAA,6BACAkR,GACA,GArDA,CAuDA,EAEA6H,UAAA,SAAAtQ,GACA,IAAAc,EAAAxe,KAGAqpB,EAAAwE,0BAAAnQ,IAAA2L,EAAAuE,iBAAAlQ,IACA7jB,EAAA8qB,YAAA,WAEA,GAAA0E,EAAAuE,iBAAAlQ,IAIAA,EAAAoS,OAAAzG,EAAAyE,wBAAApQ,GAAA,CACA,IAAAoS,EAAApS,EAAAoS,MACAa,EAAAtH,EAAA+B,OAAA1N,EAAAc,EAAAlmB,MAAA,eAAAolB,EAAA8S,QACA9S,EAAAzI,IAAA,2BAAA0b,EAAA,MACAb,EAAAa,KACA,CACA,GAAAjT,EAAAoF,eAEA,EAEA4G,eAAA,SAAAhM,GACA1d,KAAAguB,UAAAtQ,EACA,EAEAsK,KAAA,SAAAtK,EAAApiB,GACA+tB,EAAAkD,SAAA7O,EAAApiB,EACA,EAEAs1B,QAAA,SAAAlT,EAAApiB,GACA,IAAAu1B,EACAV,EACApO,EAgBA,GAdArE,EAAAsE,OAAAtE,EAAAuE,gBAMA3mB,EAAAoiB,EAAAuE,cAAAnO,UAAAxY,IAGAymB,EAAArE,EAAAoE,eAAAxmB,GAEA+tB,EAAAkE,gBAAA7P,EAAAqE,EAAArE,EAAAyI,WAGAzI,EAAAG,QAAAzkB,EAAAsjB,QAAAkC,gBAAAG,YAEArB,EAAAoT,mBAAApT,EAAAoT,mBAAA,KACApT,EAAAoT,kBAAApU,EAAA0D,WAAA8N,aAAAqC,uBACA7S,EAAAoT,kBAAA,GACAD,EAAAnT,EAAAoS,MAAAiB,eAAArT,EAAAoS,MAAAkB,kBACAH,EAAA34B,UAAA24B,EAAA34B,SAAAi4B,OAIA,IAHAA,EAAAU,EAAA34B,SAAAi4B,KAGAA,EAAAc,YACAd,EAAAE,YAAAF,EAAAc,WAKA,EAEAvM,KAAA,SAAAhH,GACA,IAAAmT,EAAA,KAKA,GAFAb,EAAAM,SAEA5S,EAAAoS,MAAA,CACA,GAAApS,EAAAoS,MAAApL,KACAhH,EAAAoS,MAAApL,YAEA,KACAmM,EAAAnT,EAAAoS,MAAAiB,eAAArT,EAAAoS,MAAAkB,iBACA94B,UAAA24B,EAAA34B,SAAAg5B,aACAL,EAAA34B,SAAAg5B,YAAA,OAEA,CACA,MAAA5Y,GACAoF,EAAAzI,IAAA,kEAAAqD,EAAAqG,QAAA,IACA,CAIAjB,EAAAoS,MAAAqB,aAAAt3B,EAAA3B,SAAAqgB,iBACA1e,EAAA3B,SAAAqgB,gBAAA8X,YAAA3S,EAAAoS,cAGAzG,EAAA6E,aAAAE,YAAA1Q,EAAA8S,SACA9S,EAAAoS,MAAA,KACApS,EAAA8S,QAAA,YACA9S,EAAAoS,aACApS,EAAA8S,eACA9S,EAAAyI,iBACAzI,EAAAoT,kBACApT,EAAAzI,IAAA,0BACA,CACA,EAEAyT,MAAA,SAAAhL,EAAAiD,GACA0I,EAAAsD,UAAAjP,EAAAiD,EACA,EAEAyQ,cAAA,SAAAx2B,GACA,OAAAyuB,EAAA6E,aAAAE,YAAAxzB,EACA,EAEAy2B,QAAA,SAAA3T,IAGA,IAFAD,EAAAC,EACAhB,EAAAkC,gBAAAoC,aACAtE,EAAAkC,gBAAAG,YAEA3lB,EAAAskB,GAAAI,eAAAxd,EAAAgd,YAEA,EAGA,CAvPA,CAuPAzjB,OAAAuvB,OAAAvvB,QASA,SAAAT,EAAAS,EAAAuM,GAEA,IAAAsW,EAAAtjB,EAAAsjB,QACApc,EAAAlH,EAAAsjB,QAAApc,OACAmd,EAAArkB,EAAAsjB,QAAAe,YACAqD,EAAA1nB,EAAAsjB,QAAAoE,gBACAuI,EAAA3M,EAAA0D,WAAAC,OAEA3D,EAAA0D,WAAAkR,YAAA,CACAh5B,KAAA,cAEA0lB,kBAAA,WACA,QACA,EAEA8E,eAAA,IAEA5B,MAAA,SAAAxD,EAAAyI,EAAAT,GAGA,IAAAlH,EAAAxe,KACAuxB,EAAA,WACAA,EAAAn4B,EAAA+O,KAEAuV,EAAAzI,IAAA,0BAEAkR,EACAA,IAEAzI,EAAAzI,IAAA,mEAEA,EACAuc,EAAA,SAAAlpB,GACA,QAAAod,EAAApd,KACAoV,EAAAzI,IAAA,mCACA,EAIA,EACAwc,EAAA/T,EAAAvkB,EACAu4B,EAAA,EACAC,EAAA,SAAApyB,GACA1F,EAAAgrB,aAAA4M,EAAAG,oBACAH,EAAAG,mBAAA,MAIA,IAFAnU,EAAAle,EACAmd,EAAAkC,gBAAAoC,aACAtE,EAAAkC,gBAAAG,aAEAxf,EAAA0V,IAAA,+BACA7b,EAAAmG,GAAAue,eAAAxd,EAAAgd,aAEA,EAIAI,EAAAmU,UACAnU,EAAAzI,IAAA,kDACAyI,EAAAgH,QAGAhH,EAAAkL,UAAA,KAEA6I,EAAAG,mBAAA,KAEAH,EAAAK,cAAAj4B,EAAA8qB,YAAA,YACA,SAAA0G,EAAA9rB,EAAAwyB,GACA,IAEA/Q,IADA,OADAzhB,EAAAqpB,WAGAoJ,GAAAD,EACA/d,EAAAqV,EAAA+B,OAAA7rB,EAAAif,EAAAlmB,KAAA0oB,EAAAgR,GAAA,GACAC,EAAA,GAEA1yB,EAAAqpB,YACAqJ,EAAArJ,UAAArpB,EAAAqpB,WAGArpB,EAAAspB,cACAoJ,EAAApJ,YAAAtpB,EAAAspB,cAIA,IAAA/H,EAAAvhB,KAIAme,EAAAzI,IAAA,oCAAAjB,EAAA,MACAzU,EAAAsyB,QAAAxI,EAAA5C,KAAA/I,EAAA,CACAgN,UAAA,CACAwH,WAAA,WACA7I,EAAAqE,gBAAAhQ,EACA,GAEA1J,MACAtO,KAAA,OACAgd,YAAAhG,EAAAvjB,EAAAkmB,mBACA/jB,KAAA22B,EACAvR,QAAAhD,EAAAvkB,EAAAouB,YACAhB,QAAA7I,EAAA4I,YAAA,CAAAE,cAAA,UAAA9I,EAAA4I,aAAA,GACAD,QAAA,SAAAK,GACA,IAAA8G,EAEAlyB,EACA62B,EAFAhpB,EAAA,EAIAuU,EAAAzI,IAAA,uBAIAyc,EAAA,EAEA,IAEAlE,EAAA9P,EAAAoE,eAAA4E,EACA,CACA,MAAApe,GAEA,YADA+gB,EAAA4E,mBAAA1uB,EAAAmnB,EAAApe,EAAAkpB,EAAAjyB,EAAAsyB,QAEA,CAGA,OAAAJ,EAAAG,oBACAD,EAAApyB,GAGAiuB,IACAlyB,EAAA+tB,EAAAmC,2BAAAgC,IAGAnE,EAAAkE,gBAAAhuB,EAAAiuB,EAAA+D,GAEAj2B,GACA,WAAAlC,EAAAsM,KAAApK,EAAA0wB,iBACA7iB,EAAA7N,EAAA0wB,gBAGA,IAAAlL,EAAAvhB,MAIA4yB,EAAA72B,KAAAywB,mBAIA1C,EAAAyE,wBAAAvuB,KAMA4J,EAAA,EACAsoB,EAAAK,cAAAj4B,EAAA8qB,YAAA,WACA0G,EAAA9rB,EAAA4yB,EACA,GAAAhpB,GAEAkiB,EAAA9rB,EAAA4yB,IAEA,EAEA7pB,MAAA,SAAAhN,EAAAoxB,GACA,IAAApkB,EAAAoU,EAAAvjB,EAAAumB,eAAAhD,EAAA/B,UAAAiB,eAAA8B,EAAAS,UAAA7iB,EAAAiE,EAAAsyB,SAOA,GAHAh4B,EAAAgrB,aAAA4M,EAAAG,oBACAH,EAAAG,mBAAA,KAEA,UAAAlF,GAKA,IAAA8E,EAAAlpB,GAAA,CAeA,GAVAopB,IAEAhU,EAAAG,QAAAnB,EAAAkC,gBAAAoC,eACAtD,EAAAzI,IAAA,iDAAAyX,EAAA,iBAAApxB,EAAA82B,aAAA,KACAh5B,EAAAmG,GAAAue,eAAAxd,EAAAkI,QAAA,CAAAF,MAMAoV,EAAAG,QAAAnB,EAAAkC,gBAAAG,WACArB,EAAAG,QAAAnB,EAAAkC,gBAAAoC,gBACAqI,EAAAuE,iBAAAlQ,GACA,OAKA,IAAA2L,EAAAyE,wBAAAvuB,GACA,OAIAkyB,EAAAK,cAAAj4B,EAAA8qB,YAAA,WACA0G,EAAA9rB,GAAA,EACA,GAAAif,EAAAsE,eACA,OAnCApF,EAAAzI,IAAA,uBAoCA,IAIA+L,IAAA,IAAA+Q,IAMAN,EAAAG,mBAAA/3B,EAAA8qB,YAAA,WAAAgN,EAAApyB,EAAA,GAAAwV,KAAAsd,IAAA,KAAAtd,KAAAud,IAAA,EAAAZ,GAAA,GAjKA,QAmKA,CAvJA,CAuJAhU,EACA,OACA,EAEAgM,eAAA,SAAAhM,GACAA,EAAAmU,SACAnU,EAAAmU,QAAAnJ,MAAA,iBAEA,EAEAV,KAAA,SAAAtK,EAAApiB,GACA+tB,EAAAkD,SAAA7O,EAAApiB,EACA,EAEAopB,KAAA,SAAAhH,GAIA7jB,EAAAgrB,aAAAnH,EAAAvkB,EAAA24B,eACAj4B,EAAAgrB,aAAAnH,EAAAvkB,EAAAy4B,2BAEAlU,EAAAvkB,EAAA24B,qBACApU,EAAAvkB,EAAAy4B,mBAEAlU,EAAAmU,UACAnU,EAAAmU,QAAAnJ,QACAhL,EAAAmU,QAAA,YACAnU,EAAAmU,QAEA,EAEAnJ,MAAA,SAAAhL,EAAAiD,GACA0I,EAAAsD,UAAAjP,EAAAiD,EACA,EAGA,CA9PA,CA8PA9mB,OAAAuvB,OAAAvvB,QAQA,SAAAT,EAAAS,EAAAuM,GAEA,IAAAmsB,EAAA,EAEA7V,EAAAtjB,EAAAsjB,QAEA,SAAA8V,EAAA9xB,GACA,OAAAA,EAJA,WAKA,CAeA,SAAA+xB,EAAAC,GACA,OAAAt5B,EAAAu5B,WAAAD,IAAA,cAAAt5B,EAAAsM,KAAAgtB,GAAA,KAAAA,CACA,CAEA,SAAAE,EAAAxyB,GACA,QAAAwQ,KAAAxQ,EAEA,GAAAA,EAAAyyB,eAAAjiB,GACA,SAIA,QACA,CAEA,SAAAkiB,EAAApV,EAAApV,GAEA,IACA8a,EADA2P,EAAArV,EAAAvkB,EAAA65B,oBAgBA,QAAAC,KAbAL,EAAAG,IACArV,EAAAzI,IAAA,iDAAA3M,EAAA,KAIAoV,EAAAvkB,EAAA+5B,qBAAA,SACAxV,EAAAvkB,EAAA65B,oBACAtV,EAAAvkB,EAAA65B,oBAAA,GAMAD,GACA3P,EAAA2P,EAAAE,IACAnG,OAAA9H,KAAA5B,EAAA+P,MAAA,CAAA/G,EAAA9jB,GAEA,CAEA,SAAA8qB,EAAAhQ,GAIA,OAAAhqB,EAAAu5B,WAAAvP,MAAA3S,WAAA/R,MAAA,OAAA5F,QAAA,mCACA,CAGA,SAAAu6B,EAAAC,EAAAC,GAKA,WAAAF,EAAAjU,GAAA7kB,KAAA+4B,EAAAC,EACA,CAiNA,SAAAD,EAAAtf,EAAAmP,GAIA,IAAAqQ,EAAA,CACAtU,GAAA,KACAC,SAAA,EACAsU,gBAAA,GAQA,OALAr6B,EAAAuG,OAAA6zB,EAAArQ,GAEAnP,IAAAwf,EAAAC,iBACAzf,MAAA,gBAEA,IAAAsf,EAAAlU,GAAA7kB,KAAAyZ,EAAAwf,EACA,CA/NAH,EAAAjU,GAAAiU,EAAAtzB,UAAA,CACAxF,KAAA,SAAAmjB,EAAA6V,GACAvzB,KAAA6d,MAAA,GACA7d,KAAA0d,aACA1d,KAAAuzB,UACAvzB,KAAA7G,EAAA,CACAu6B,YAAA,GAEA,EAEAzzB,YAAAozB,EAEAM,iBAAA,WACA,OAAAf,EAAA5yB,KAAA7G,EAAAu6B,YACA,EAEAh4B,GAAA,SAAAuO,EAAAmZ,EAAAwQ,GAKA,IAAApV,EAAAxe,KACA0zB,EAAAlV,EAAArlB,EAAAu6B,YACAG,GAAAD,GAAAR,EAAAhQ,IAIAwQ,KAAAxQ,GAGA0Q,eACAF,EAAAE,aAAAvB,KAOA,IAOAwB,EAPAC,EAAAN,EAHAzpB,IAAA3P,eAIA05B,IACAA,EAAA,GACAN,EAAAzpB,GAAA+pB,GAKA,QAAAv7B,EAAA,EAAAA,EAAAu7B,EAAAt7B,OAAAD,KACAu7B,EAAAv7B,GAAAw7B,OAAAL,EAAAE,cAAAD,GAAAG,EAAAv7B,GAAAo7B,8BACAE,EAAAC,EAAAv7B,IAKAs7B,IACAA,EAAA,CACAE,KAAAL,EAAAE,aACA9tB,cAAA,GACA6tB,8BAEAH,EAAAzpB,GAAApJ,KAAAkzB,IAGA,IAAA9kB,EAAA,SAAAqJ,EAAAhd,GACA8nB,EAAAniB,MAAAud,EAAAljB,EACA,EAKA,OAJAy4B,EAAA/tB,cAAAnF,KAAAoO,GAEA7V,EAAAolB,GAAAjc,KAAAiwB,EAAAvoB,GAAAgF,GAEAuP,CACA,EAEAhU,IAAA,SAAAP,EAAAmZ,EAAAwQ,GAKA,IAEAI,EAFAxV,EAAAxe,KACA0zB,EAAAlV,EAAArlB,EAAAu6B,YAEAG,GAAAD,GAAAR,EAAAhQ,GAUA,GARAwQ,KAAAxQ,EAKA4Q,EAAAN,EAFAzpB,IAAA3P,eAOA,GAAA8oB,EAAA,CAIA,IAFA,IAAA8Q,EAEAz7B,EAAA,EAAAA,EAAAu7B,EAAAt7B,OAAAD,KACAu7B,EAAAv7B,GAAAw7B,OAAAL,EAAAE,cAAAD,GAAAG,EAAAv7B,GAAAo7B,8BAEAK,EAAAF,EAAAv7B,IAKA,GAAAy7B,EAAA,CAEA,QAAAC,EAAA,EAAAA,EAAAD,EAAAluB,cAAAtN,OAAAy7B,IACA/6B,EAAAolB,GAAAgK,OAAAgK,EAAAvoB,GAAAiqB,EAAAluB,cAAAmuB,IAIAH,EAAAvyB,OAAAhJ,EAAA,GAGA,IAAAu7B,EAAAt7B,eACAg7B,EAAAzpB,EAEA,CACA,MAAAmZ,IACAhqB,EAAAolB,GAAAgK,OAAAgK,EAAAvoB,WAEAypB,EAAAzpB,IAIA,OAAAuU,CACA,EAEA4V,OAAA,SAAAC,GAIA,IAAA7V,EAAAxe,KACA0d,EAAAc,EAAAd,WAEA4W,EA1MA,SAAAC,EAAAC,EAAAC,GACA,IAAAh8B,EACAC,EAAA67B,EAAA77B,OACAguB,EAAA,GACA,IAAAjuB,EAAA,EAAAA,EAAAC,EAAAD,GAAA,EACA87B,EAAA1B,eAAAp6B,KACAiuB,EAAAjuB,GAAA+7B,EAAAxP,KAAAyP,EAAAF,EAAA97B,KAAA87B,IAGA,OAAA7N,CACA,CAgMAxf,CADA9N,EAAAs7B,UAAAxzB,WAAAxC,MAAA,GACA+zB,GACAn3B,EAAA,CAAAq5B,EAAAnW,EAAA+U,QAAA1H,EAAAwI,EAAAO,EAAAN,EAAA7G,EAAA/P,EAAAvkB,EAAA+5B,sBACA7a,EAAAjf,EAAAsqB,WA+CA,OAVAhG,EAAAvkB,EAAA65B,oBAAAtV,EAAAvkB,EAAA+5B,qBAAAziB,YAAA,CAAA0iB,MAAA3U,EAAAsO,OApCA,SAAA+H,GACA,IACAlpB,EACArD,EAFAoe,EAAAlI,EAAAsW,qBAAAD,GAKAz7B,EAAAuG,OAAA6e,EAAAX,MAAA6I,EAAAqO,OAEArO,EAAAsO,SACA3c,EAAA4c,WAEA5c,EAAA4c,WAAAzW,EAAA,CAAAkI,EAAAsO,SAAAE,OACAxX,EAAAvkB,EAAAg8B,8BACAzX,EAAAzI,IAAA,0FAAA7b,EAAA2G,UAAAq1B,OAAA,kGACA1X,EAAAvkB,EAAAg8B,6BAAA,GAEAzO,EAAAjK,OAEAiK,EAAA2O,YACA3X,EAAAzI,IAAAyR,EAAAjK,MAAA,KAAAiK,EAAA2O,WAAA,KAIA1pB,EAAA+a,EAAA4O,eAAA,4BACAhtB,EAAAoU,EAAAvjB,EAAAmP,MAAAoe,EAAAjK,MAAA9Q,IACArQ,KAAAorB,EAAA6O,UAEA7X,EAAAzI,IAAAuJ,EAAA+U,QAAA,IAAAc,EAAA,8BAAA/rB,EAAAqW,SACAtG,EAAAmd,WAAAhX,EAAA,CAAAlW,MAGAoV,EAAAzI,IAAA,WAAAuJ,EAAA+U,QAAA,IAAAc,GACAhc,EAAAod,YAAAjX,EAAA,CAAAkI,EAAAgP,SAEA,GAGAhY,EAAAvkB,EAAA+5B,sBAAA,EAEA95B,EAAAu8B,cAAAnX,EAAAX,SACAviB,EAAAs6B,EAAApX,EAAAX,OAGAH,EAAAzI,IAAA,YAAAuJ,EAAA+U,QAAA,IAAAc,GACA3W,EAAAsK,KAAA1sB,GAEA+c,EAAAgM,SACA,EAEAyQ,qBAAA,SAAAe,GACA,OACAd,MAAAc,EAAAD,EACAF,OAAAG,EAAAC,EACAd,SAAAa,EAAAE,EAAA,CACAC,GAAAH,EAAAE,EAAAtI,EACAyH,KAAAW,EAAAE,EAAAE,GACA,KACAD,GAAAH,EAAApI,EACA6H,eAAAO,EAAAlB,EACAlY,MAAAoZ,EAAAzJ,EACAiJ,WAAAQ,EAAAK,EACAX,UAAAM,EAAAI,EAEA,GAGA5C,EAAAjU,GAAA7kB,KAAAwF,UAAAszB,EAAAjU,GAqBAkU,EAAAlU,GAAAkU,EAAAvzB,UAAA3G,EAAAskB,aAEA4V,EAAAlU,GAAA7kB,KAAA,SAAAyZ,EAAAmP,GACA,IAAAqQ,EAAA,CACAtU,GAAA,KACAC,SAAA,EACAsU,gBAAA,GAEA/V,EAAA1d,KAEA5G,EAAAuG,OAAA6zB,EAAArQ,GAGA/pB,EAAAsjB,QAAA0C,GAAA7kB,KAAAyqB,KAAAtH,EAAA1J,EAAAwf,EAAAtU,GAAAsU,EAAArU,SAGAzB,EAAAyY,QAAA,GAEAzY,EAAAvkB,EAAA+5B,qBAAA,EACAxV,EAAAvkB,EAAA65B,oBAAA,GAGAtV,EAAAuK,UAAA,SAAAuF,GACA,IAAAlyB,EAAA86B,EAAAC,EAAAjT,EAAAmQ,EAAAtpB,EACAujB,SAQA,IAAAA,EAAA,GACA6I,EAAA7I,EAAAuI,EAAAtI,EAAAhd,YACA2S,EAAA1F,EAAAvkB,EAAA65B,oBAAAqD,KAEAjT,EAAA0J,OAAA9H,KAAA5B,EAAA+P,MAAA3F,SAEA,IAAAA,EAAA,GAEA6I,EAAA7I,EAAAC,EAAAhd,YACA2S,EAAA1F,EAAAvkB,EAAA65B,oBAAAqD,MAGA3Y,EAAAvkB,EAAA65B,oBAAAqD,GAAA,YACA3Y,EAAAvkB,EAAA65B,oBAAAqD,GAGAjT,EAAA0J,OAAA9H,KAAA5B,EAAA+P,MAAA3F,MAGAlyB,EAAA0E,KAAAs2B,6BAAA9I,GAGA9P,EAAAzI,IAAA,gCAAA3Z,EAAAi7B,OAAA,aAAAj7B,EAAAk7B,IAAA,MAGAjD,EAAAj4B,EAAAk7B,IAAAl8B,cACA2P,EAAA3O,EAAAi7B,OAAAj8B,cAGA87B,EAAAp2B,KAAAm2B,QAAA5C,GAGAn6B,EAAAuG,OAAAy2B,EAAAvY,MAAAviB,EAAAy5B,OACA37B,EAAAg9B,GAAAtY,eAAA0U,EAAAvoB,GAAA,CAAA3O,EAAAm7B,QAEA,IAEA/Y,EAAApV,OAAA,SAAAouB,EAAAC,GACA,IAAA1D,EAAA7P,EAEAuT,IAKA1D,EAAA0D,EAAAlJ,GACArK,EAAA1F,EAAAvkB,EAAA65B,oBAAAC,MAKAvV,EAAAvkB,EAAA65B,oBAAAC,GAAA,YACAvV,EAAAvkB,EAAA65B,oBAAAC,GAGA7P,EAAA0J,OAAA9H,KAAA5B,EAAA+P,MAAA,CAAA/G,EAAAsK,KAEA,IAEAhZ,EAAAsD,cAAA,WACAtD,EAAAS,WAAA,eAAAT,EAAAS,UAAA7lB,MACAw6B,EAAApV,EAAA,yEAEA,IAEAA,EAAAqD,cAAA,WACA+R,EAAApV,EAAA,qEACA,GACA,EAEA4V,EAAAlU,GAAAkX,6BAAA,SAAAM,GACA,OACAJ,IAAAI,EAAAjC,EACA4B,OAAAK,EAAA/K,EACA4K,KAAAG,EAAAhC,EACAG,MAAA6B,EAAAhB,EAEA,EAEAtC,EAAAlU,GAAAyX,wBAAA,WAKA,IAAAnZ,EAAA1d,KAEA0d,EAAAoZ,oBACApZ,EAAAoZ,mBAAA,EACApZ,EAAAqK,UAAA,WAGA,IAAAgP,EAAA,GAEA39B,EAAAgJ,KAAAsb,EAAAyY,SAAA,SAAAvlB,GACA5Q,KAAA2zB,qBACAoD,EAAAl2B,KAAA,CAAAvI,KAAAsY,IACA8M,EAAAzI,IAAA,6BAAArE,EAAA,MAEA,IAEA,IAAAmmB,EAAAr+B,QACAglB,EAAAzI,IAAA,qMAGAyI,EAAApiB,KAAAoiB,EAAAsE,KAAAlO,UAAAijB,EACA,IAEA,EAEAzD,EAAAlU,GAAA4X,eAAA,SAAAzD,GAUAA,IAAAj5B,cAEA,IAAA87B,EAAAp2B,KAAAm2B,QAAA5C,GAQA,OAPA6C,IACAA,EAAA/C,EAAArzB,KAAAuzB,GACAvzB,KAAAm2B,QAAA5C,GAAA6C,GAGAp2B,KAAA62B,0BAEAT,CACA,EAEA9C,EAAAlU,GAAA7kB,KAAAwF,UAAAuzB,EAAAlU,GAEAhmB,EAAAk6B,eAEA,CAvdA,CAudAz5B,OAAAuvB,OAAAvvB,QAWAA,OAAAuvB,OADA1M,QAAAE,QAAA,QAGAnlB,OAAA,0BAEAA,OCzmGA,wBACA,aACA,KACA,OACA,YACA,SAAA0B,EAAA2K,EAAAtB,EAAAka,GACA,aAEA,IAAAgB,EAAA,KACAuZ,EAAA,GAEAC,EAAA,SAAA7E,EAAA8E,GACA,OAAApiB,KAAAM,MAAAN,KAAAwW,UAAA4L,EAAA9E,EAAA,GAAAA,EACA,EAEA+E,EAAA,SAAAC,EAAAC,EAAAC,EAAAnU,GACA,OAAAiU,IACA/zB,MAAA,SAAAk0B,GACAP,EAAAO,KACAP,EAAAO,GAAA,CACAC,YAAA,OAIAt+B,EAAA4d,UAAAkgB,EAAAO,GAAAC,YAAA,CACAH,mBACAC,wBAIAN,EAAAO,GAAAC,YAAA52B,KAAA,CACAy2B,mBACAC,qBACAnU,WACAiU,YAGA,GACA,EAEAK,EAAA,SAAAF,EAAAG,GACAx+B,EAAAiJ,KAAA60B,EAAAO,GAAAC,aAAA,SAAAG,GACAA,EAAAxU,SAAAniB,MAAA,KAAA02B,EACA,GACA,EAEAE,EAAA,SAAAC,GACA,IAAAtU,EAAAhhB,EAAAu1B,QACA,GAAA3+B,EAAAskB,WACAxkB,QAAA,CACA,iBAEA,WACAE,EAAAskB,WAAAuD,IAAApD,OAAAzkB,EAAAskB,WAAAkB,gBAAAG,UACA+Y,IACAx0B,MAAA,WACAkgB,EAAAc,SACA,KAEAlrB,EAAAskB,WAAAsa,SAAAC,OAAAC,eAAA,SAAA58B,GACAo8B,EAAAp8B,EAAAk8B,UAAA,kBAAAl8B,EAAA68B,SACA,EACA/+B,EAAAskB,WAAAsa,SAAAC,OAAAG,aAAA,SAAA98B,GACAo8B,EAAAp8B,EAAAk8B,UAAA,gBAAAl8B,EAAAV,IACA,EACAxB,EAAAskB,WAAAsa,SAAAC,OAAAI,aAAA,SAAA/8B,GACAo8B,EAAAp8B,EAAAk8B,UAAA,gBAAAl8B,EAAA2O,UAAA3O,EAAAg9B,UACA,EACAl/B,EAAAskB,WAAAuD,IAAAF,cAAA,WACA,IAAA5X,EAAA+tB,EAAA,SAEAvS,YAAA,WACAvrB,EAAAskB,WAAAuD,IAAAC,QACA5d,MAAA,WACAnK,EAAAiJ,KAAAjJ,EAAAwW,KAAAsnB,IAAA,SAAAO,GACAr+B,EAAAiJ,KAAA60B,EAAAO,GAAAC,aAAA,SAAAG,GACAA,EAAAP,UACA,GACA,GACA,GACA,GAAAluB,EACA,IACA/P,EAAAskB,WAAAuD,IAAA9B,SAAA,EACA/lB,EAAAskB,WAAAuD,IAAAC,QACA5d,MAAA,WACA,OAAAw0B,GACA,IACAx0B,MAAA,WACAkgB,EAAAc,SACA,IAEA,QACA,EACA5G,GAAA,IAAAhB,EAAA6b,sBACAC,QAAA,eACAC,SAEA/8B,GAAA,2BAAAJ,GACA,IAAAo9B,EAAA,CACAC,QAAAr9B,EAAA68B,QAAAQ,QACAR,QAAA78B,EAAA68B,gBACAS,aAAAt9B,EAAA68B,QAAAS,cAEAlB,EAAAp8B,EAAAk8B,UAAA,kBAAAkB,GACA,IAEAhb,EAAAhiB,GAAA,yBAAAJ,GACAo8B,EAAAp8B,EAAAk8B,UAAA,gBAAAl8B,EAAAV,IACA,IAEA8iB,EAAAhiB,GAAA,yBAAAJ,GACAo8B,EAAAp8B,EAAAk8B,UAAA,gBAAAl8B,EAAA2O,UAAA3O,EAAAg9B,UACA,IAEA5a,aAAAiR,SAAA,WACA,IAAAxlB,EAAA+tB,EAAA,SAEAvS,YAAA,WACAjH,EAAAwD,QAAA5d,MAAA,WACAnK,EAAAiJ,KAAAjJ,EAAAwW,KAAAsnB,IAAA,SAAAO,GACAr+B,EAAAiJ,KAAA60B,EAAAO,GAAAC,aAAA,SAAAG,GACAA,EAAAP,UACA,GACA,GACA,GACA,GAAAluB,EACA,IAGAuU,EAAAwD,QAAA5d,MAAA,WACA,IACAoa,EAAA0W,OAAA,cAAAtwB,EAAAvK,gBAAA,IAAAuK,EAAArK,4BACA6J,MAAA,WACAw0B,IAAAx0B,MAAA,WACAkgB,EAAAc,SACA,GACA,GACA,OAAAqB,GACAsD,QAAA3gB,MAAAqd,EACA,CACA,GAGA,CAEA,OAAAnC,EAAAa,OACA,EAmFA,OAEAwU,0BAnFA,SAAAl2B,EAAA40B,EAAApd,EAAAiJ,GACAjJ,EAAAxX,EAAAm2B,WAAAjZ,QAAA1F,GAEA,IAAA4e,EAAA,WACA,OAAA3/B,EAAAskB,WACAtkB,EAAAskB,WAAAsa,SAAAgB,OAAAC,sBACAn1B,EAAAvK,gBACAuK,EAAArK,2BACAkJ,EAAAu2B,SACA3B,EACApd,GAEAuD,EAAA0W,OAAA,wBACAtwB,EAAAvK,gBACAuK,EAAArK,2BACAkJ,EAAAu2B,SACA3B,EACApd,EAEA,EAEA,OAAA0d,GAAA,WACA,OAAAT,EAAA2B,EAAAp2B,EAAA20B,iBAAAC,EAAAnU,EACA,GACA,EA4DA+V,qBA1DA,SAAAx2B,EAAA40B,EAAApd,EAAAiJ,GACAjJ,EAAAxX,EAAAm2B,WAAAjZ,QAAA1F,GAEA,IAAAif,EAAA,WACA,OAAAhgC,EAAAskB,WACAtkB,EAAAskB,WAAAsa,SAAAgB,OAAAxJ,iBACA1rB,EAAAvK,gBACAuK,EAAArK,2BACAkJ,EAAAu2B,SACA3B,EACApd,GAEAuD,EAAA0W,OAAA,mBACAtwB,EAAAvK,gBACAuK,EAAArK,2BACAkJ,EAAAu2B,SACA3B,EACApd,EAEA,EAEA,OAAA0d,GAAA,WACA,OAAAT,EAAAgC,EAAAz2B,EAAA20B,iBAAAC,EAAAnU,EACA,GACA,EAmCAiW,0BAzBA,SAAA/B,GACAn+B,EAAAiJ,KAAAjJ,EAAAwW,KAAAsnB,IAAA,SAAAO,GACAP,EAAAO,GAAAC,YAAAt+B,EAAAghB,OAAA8c,EAAAO,GAAAC,aAAA,SAAAG,GACA,OAAAA,EAAAN,oBACA,GACA,IAEA,IAfAgC,EAeAC,EAAApgC,EAAAghB,OAAAhhB,EAAAwW,KAAAsnB,IAAA,SAAAO,GACA,WAAAP,EAAAO,GAAAC,YAAA/+B,MACA,IAEA6gC,EAAA7gC,OAAA,IAnBA4gC,EAoBAC,EAnBAngC,EAAAskB,WACAtkB,EAAAskB,WAAAsa,SAAAgB,OAAA1pB,YAAAgqB,GAEA5b,EAAA0W,OAAA,cAAAkF,IAiBAh2B,MAAA,WACAnK,EAAAiJ,KAAAm3B,GAAA,SAAA/B,UACAP,EAAAO,EACA,GACA,GAEA,EASA,IACA//B,OC7OA,oBACA,eACA,SAAA0B,GACA,aAEA,IAAAqgC,EAAA,SAAAC,GACAz5B,KAAA05B,MAAAvgC,EAAA4J,OACA02B,GACA,SAAAE,EAAAj0B,GACA,IAAAk0B,EAAAl0B,EAAAk0B,SAEAA,IAEAA,EADA15B,OAAA25B,eAAAn0B,EAAA3F,WACAE,YAAA25B,UAGA,IAAAA,EACA,UAAAnd,MAAA,8BAEA,GAAAkd,EAAAC,GACA,UAAAnd,MAAA,oCAAAmd,EAAA,KAGA,OADAD,EAAAC,GAAAl0B,EACAi0B,CACA,GACA,GACA,EAWA,OATAH,EAAAz5B,UAAA1H,IAAA,SAAAuhC,GACA,IAAAl0B,EAAA1F,KAAA05B,MAAAE,GAEA,IAAAl0B,EACA,UAAA+W,MAAA,QAAAmd,EAAA,mBAEA,OAAAl0B,CACA,EAEA8zB,CACA,IACA/hC,OCvCA,mCACA,SACA,eACA,SAAA2B,EAAAD,GACA,aAEA,IAAA2gC,EAAA,aACAC,EAAA,aAEA,SAAAC,EAAA1+B,EAAA6L,GACAnH,KAAA1E,OACA0E,KAAAmH,WACAnH,KAAAi6B,QAAAj6B,KAAAk6B,YAAA33B,KAAAvC,KACA,CAkDA,OAhDAg6B,EAAAJ,SAAA,eAEAI,EAAAj6B,UAAAsjB,WAAA,WACArjB,KAAAm6B,wBACAn6B,KAAAo6B,kBACA,EAEAJ,EAAAj6B,UAAAo6B,qBAAA,WACA,OAAAn6B,KAAAq6B,gBAAAP,IAAA95B,KAAAq6B,gBAAAN,EACA,EAEAC,EAAAj6B,UAAAs6B,gBAAA,SAAApwB,GACA,OAAAjK,KAAA1E,KAAAoI,UACA1D,KAAA1E,KAAAoI,SAAAuG,IACAjK,KAAA1E,KAAAoI,SAAAuG,GAAAtG,OACA,EAEAq2B,EAAAj6B,UAAAq6B,iBAAA,WACAliC,SAAAs3B,iBAAA,QAAAxvB,KAAAi6B,QACA,EAEAD,EAAAj6B,UAAAm6B,YAAA,SAAAx5B,GACA,GAAAV,KAAAmH,SAAAxE,OAAA,CAEA,IAAA23B,GAAA55B,EAAA65B,eAAA75B,EAAA85B,cAAAD,eAAAD,MAEAG,EAAAthC,EAAAmI,KAAAg5B,GAAA,SAAAnoB,GAAA,eAAAA,EAAAuoB,IAAA,IAEA,GAAAD,EACAz6B,KAAAq6B,gBAAAP,IACA95B,KAAAmH,SAAAxE,OAAAe,SAAAqI,QAAA/L,KAAA1E,KAAAoI,SAAAo2B,GAAAl2B,gBAAA,KAAA62B,EAAAE,YAAA,KAAA55B,EAAA65B,oBACA,GAAA56B,KAAAq6B,gBAAAN,GAAA,CACA,IAAAc,EAAA1hC,EAAAmI,KAAAg5B,GAAA,SAAAnoB,GAAA,iBAAAA,EAAAuoB,IAAA,IAEA,GAAAG,EAAA,CACA,IAAA95B,EAAAf,KACA66B,EAAAC,aAAA,SAAAC,GACAh6B,EAAAoG,SAAAxE,OAAAe,SAAAqI,QAAAhL,EAAAzF,KAAAoI,SAAAq2B,GAAAn2B,gBAAA,KAAAm3B,EAAA,KAAAh6B,EAAA65B,cACA,GACA,CACA,CAlBA,CAmBA,EAEAZ,EAAAj6B,UAAAi7B,QAAA,WACA9iC,SAAA+iC,oBAAA,QAAAj7B,KAAAi6B,SACAj6B,KAAAmH,cAAAf,CACA,EAEA4zB,CACA,IACAviC,OCjEA,6CACA,kBACA,SAAAyjC,GACA,aAEA,SAAAC,EAAA7/B,EAAA6L,GACAnH,KAAA1E,OACA0E,KAAAmH,UACA,CA0BA,OAxBAg0B,EAAAvB,SAAA,yBAEAuB,EAAAC,eAAA,KAEAD,EAAAp7B,UAAAsjB,WAAA,WACA,GAAA6X,EAAA/jB,QAGA,CAEA,IAAApW,EAAAf,KACAiK,EAAA,eACA0a,YAAA,WACA5jB,EAAAoG,SAAAxE,OAAAe,UAAA3C,EAAAzF,KAAAoI,SAAAuG,IAAAlJ,EAAAzF,KAAAoI,SAAAuG,GAAAtG,SACA5C,EAAAoG,SAAAxE,OAAAe,SAAAqI,QAAAhL,EAAAzF,KAAAoI,SAAAuG,GAAArG,gBAAA,eAAA7C,EAAA65B,cAEA,GACA,MAVAO,EAAAC,eAAAp7B,KAAAmH,SAAAxE,OAAAy4B,cAWA,EAEAD,EAAAp7B,UAAAi7B,QAAA,WACAh7B,KAAAmH,cAAAf,CACA,EAEA+0B,CACA,IAEA1jC,OCrCA,2CACA,mBAEA,iBACA,6BACA,SAAA+hC,GACA,aAEA,IACA6B,EAAA,IAAA7B,EADAvnB,MAAAlS,UAAArB,MAAAsmB,KAAA9jB,UAAA,IASA,OACAo6B,cAPA,SAAAC,EAAAp0B,GAGA,OADA,IADAk0B,EAAAhjC,IAAAkjC,EAAAC,aACA,CAAAD,EAAAjgC,KAAA6L,EAEA,EAKA,IACA1P,OCrBA,YACA,SACA,aACA,KACA,YACA,SAAA2B,EAAAD,EAAA2K,EAAA0R,GACA,aAEA,IAAAimB,EAAA,CACA,mCACA,4CACA,sCACA,4CACA,wBACA,6BACA,kCACA,+CACA,gDACA,2BACA,8BACA,oCACA,4BACA,2CAGA,kCACA,mCACA,4BACA,6BACA,iCACA,kCAWA,yBACA,wBACA,2BACA,0BACA,4BACA,wBACA,0BACA,yBACA,sBACA,2BACA,0BACA,2BACA,2BACA,4BACA,2BACA,2BACA,sBACA,wBACA,wBACA,8BACA,kCACA,2BACA,oBACA,yBACA,gCACA,2BACA,2BACA,kCACA,4BACA,6BACA,oCACA,eACA,yBACA,gCACA,qBACA,iBACA,iBACA,uBACA,4BACA,gCACA,8BACA,qBACA,sBACA,6CACA,wCACA,2CACA,wBACA,yBACA,2BACA,4BACA,uBACA,2BACA,4BACA,mBACA,kBACA,0BACA,uBACA,gCACA,8BACA,iCACA,gCACA,uCACA,iCACA,kCACA,mCACA,qCACA,uCACA,qCACA,oCACA,0CACA,qCACA,sCACA,oCACA,qBACA,kCACA,wBACA,kCACA,2BACA,8BACA,2BACA,kCACA,6BACA,8BACA,gBACA,wBACA,4BACA,mCACA,2BACA,kCACA,iCACA,wCACA,kCACA,yCACA,6BACA,4BACA,mCACA,6BACA,oCACA,8BACA,gCACA,uCACA,2BACA,kCACA,qBACA,0BACA,iCACA,4BACA,6BACA,qBACA,qBACA,sBACA,6BACA,8BACA,wCACA,yCACA,yCACA,4BACA,mBACA,mBACA,aACA,mBACA,YACA,kBACA,cACA,aACA,mBACA,eACA,YACA,mBAGAC,EAAA,CACA,OACA,SACA,SAGAC,EAAA,CACA,SACA,OACA,SACA,UACA,WAGAC,EAAA,CACA,OACA,aACA,YACA,aAGAC,EAAA,CACA,OACA,SACA,SAGAC,EAAA,CACA,MACA,SACA,UAGAC,EAAA,CAEAp4B,SAAA,EAEAq4B,OAAA,CACAt1B,KAAA,EACAC,OAAA,EACAC,QAAA,EACAH,MAAA,EACAw1B,MAAA,QACAC,MAAA,mBACAlvB,MAAA,GAGAmvB,KAAA,CACA73B,KAAA,GACA83B,WAAAX,EAAA,GACAS,MAAA,mBACAG,cAAA,EACAC,OAAAX,EAAA,GACAY,QAAA,EACAC,WAAA,GAGA3B,KAAA,CACA4B,MAAAf,EAAA,GACAgB,cAAA,MACAC,WAAA,GACAC,cAAAhB,EAAA,IAGAiB,WAAA,CACAl5B,SAAA,EACAu4B,MAAA,0BAGAY,QAAA,CACAr2B,KAAA,EACAE,MAAA,EACAD,IAAA,EACAE,OAAA,GAGAm2B,UAAA,CACAp5B,SAAA,EACAS,EAAA,EACAC,EAAA,EACA24B,KAAA,EACAC,OAAA,EACAf,MAAA,oBAGAgB,WAAA,CACAv5B,SAAA,EACAS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A,CACA,EACA,EACAksB,GAAAiyC,GAAA,OACA/xC,GAAA+xC,GAAA,SACAhyC,GAAAgyC,GAAA,UACA9xC,GAAA8xC,GAAA,QAEA72C,GAAA,CACA5jC,KAAA,QACA29D,aAAA,cACA32B,QAAA,EACA55B,KAAA,EACAia,OAAA,SAGAqzD,GAAA,CACA16E,KAAA,YACA29D,aAAA,MACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAA2P,GACA,MACA,QADAA,EAEA,EAGA,CAEA,GAGAnmE,GAAA,CACAvU,KAAA,UACA29D,aAAA,eACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAAxE,GACA,OAAAA,EAAA1kD,OAAAgoD,IAAAp/D,QAAA,SAAAkwE,EAAA9rD,GACA,OAAA8rD,EAAAC,GAAA/rD,EAAA3a,MACA,KACA,GAEA0mE,GAAA,SAAArmE,GACA,OAAAA,GACA,YACA,kBACA,SACA,aACA,SACA,aACA,SACA,WACA,UACA,gBACA,UACA,YACA,UACA,WACA,mBACA,WACA,WACA,eACA,WACA,WACA,WACA,cACA,YACA,gBACA,YACA,sBACA,YACA,yBACA,YACA,yBACA,aACA,gBACA,aACA,iBACA,aACA,yBACA,cACA,mBACA,cACA,oBACA,cACA,gBACA,eACA,gBACA,eACA,0BACA,eACA,0BACA,eACA,eACA,gBACA,mBACA,gBACA,uBACA,gBACA,mBACA,iBACA,kBACA,iBACA,kBACA,iBAEA,QACA,EAEAwjC,GAAA,CACA/3C,KAAA,QACA29D,aAAA,OACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAAhzB,GACA,OAAAA,GACA,WACA,SACA,YACA,SACA,mBACA,SACA,iBACA,SAEA,QACA,GAGA8iC,GAAA,CACA76E,KAAA,iBACA29D,aAAA,IACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAAl8C,GACA,YAAAA,EAAAzhB,MAAA,WAAAyhB,EAAA3a,MACA,EAEA,KAAA2a,EAAAzhB,MAGA,KAAAyhB,EAAAzhB,KAFAyhB,EAAAvS,OAKA,CACA,IAIA,SAAAo9D,GACAA,EAAA,gBACAA,EAAA,eACA,CAHA,CAGAA,QAAA,KACA,IAgaAoB,GAhaAzY,GAAA,CACAriE,KAAA,aACA29D,aAAA,SACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAA1I,GACA,MACA,WADAA,EAEAqX,GAAAqB,OAGArB,GAAAsB,MAEA,GAGA32C,GAAA,CACArkC,KAAA,cACA29D,aAAA,SACA32B,QAAA,EACA55B,KAAA,GAEA6tE,GAAA,SAAApsD,EAAA+Z,GACA,OAAAihC,GAAAh7C,IAAA,WAAAA,EAAA3a,MACA,IAAA00B,EAEA,KAAA/Z,EAAAzhB,KACAw7B,EAAA/Z,EAAAvS,OAEA+tD,GAAAx7C,GACA+7C,GAAA/7C,EAAA+Z,GAEAA,CACA,EAEAsyC,GAAA,CACAl7E,KAAA,mBACA29D,aAAA,OACAvwD,KAAA,EACA45B,QAAA,EACAzrB,MAAA,SAAApY,EAAA0rB,GACA,YAAAA,EAAAzhB,MAAA,SAAAyhB,EAAA3a,MACA,KAEAiuB,GAAAh/B,EAAA0rB,EACA,GAGAssD,GAAA,CACAn7E,KAAA,sBACA29D,aAAA,UACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAAl/D,GACA,MACA,WADAA,EAEA,EAGA,CAEA,GAGAuvE,GAAA,CACAp7E,KAAA,kBACA29D,aAAA,OACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAA39D,GACA,OAAAA,GACA,WACA,SACA,aACA,SACA,aACA,SACA,cACA,SACA,kBACA,SACA,2BACA,SACA,kBACA,SACA,kBACA,SACA,kBACA,SACA,kBACA,SACA,kBACA,UACA,mBACA,UACA,eACA,UACA,cACA,UACA,gBACA,UACA,yBACA,UACA,wBACA,UACA,sBACA,UACA,iBACA,UACA,uBACA,UACA,eACA,UACA,eACA,UACA,eAEA,aACA,UACA,eACA,UACA,qBACA,UACA,sBACA,UACA,wBACA,UACA,cACA,UACA,eACA,UACA,qBACA,UACA,YACA,UACA,2BACA,UACA,0BACA,UACA,4BACA,UACA,UACA,UACA,qBACA,UACA,gBACA,UACA,gBACA,UACA,cACA,UACA,YACA,UACA,cACA,UACA,0BACA,UACA,4BACA,UACA,YACA,UACA,aACA,UACA,WACA,UACA,cACA,UACA,0BACA,UACA,4BACA,UACA,qBACA,UACA,sBACA,UACA,wBACA,UAEA,QACA,SAEA,GAGAiuE,GAAA,SAAAvB,GAAA,OACA95E,KAAA,UAAA85E,EACAnc,aAAA,IACA32B,QAAA,EACA55B,KAAA,EACA,EACAkuE,GAAAD,GAAA,OACAxmE,GAAAwmE,GAAA,SACAE,GAAAF,GAAA,UACAzmE,GAAAymE,GAAA,QAEA38B,GAAA,CACA1+C,KAAA,WACA29D,aAAA,UACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAAxE,GACA,OAAAA,EAAA1kD,OAAAgoD,IAAAj7D,KAAA,SAAA8vC,GACA,OAAAA,EAAAxqC,OACA,aACA,SACA,aACA,SACA,WACA,SACA,WACA,SAEA,QACA,SAEA,GACA,GAGAsnE,GAAA,CACAx7E,KAAA,gBACA29D,aAAA,SACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAArsB,GACA,MACA,eADAA,EAEA,aAGA,QAEA,GAGA+8B,GAAA,SAAA3B,GAAA,OACA95E,KAAA,WAAA85E,EACAnc,aAAA,IACA32B,QAAA,EACA55B,KAAA,EACAia,OAAA,oBACA,EACAtS,GAAA0mE,GAAA,OACAryC,GAAAqyC,GAAA,SACAzmE,GAAAymE,GAAA,UACAtyC,GAAAsyC,GAAA,QAEAzyC,GAAA,CACAhpC,KAAA,aACA29D,aAAA,OACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAA/hC,GACA,OAAAA,GACA,YACA,SACA,aACA,cACA,SAEA,QACA,SAEA,GAGAn9B,GAAA,CACA7L,KAAA,WACA29D,aAAA,SACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAAl/D,GACA,OAAAA,GACA,eACA,SACA,eACA,SACA,YACA,SACA,aACA,SAEA,QACA,GAGA+4B,GAAA,CACA5kC,KAAA,cACA29D,aAAA,OACAvwD,KAAA,EACA45B,QAAA,EACAzrB,MAAA,SAAApY,EAAAojE,GACA,WAAAA,EAAAnmE,QAAA2pE,GAAAxD,EAAA,WACA,GAEA2D,GAAA3D,GAAA33D,KAAA,SAAA2J,GAQA,IAPA,IAAAmjE,EAAA,CACA93C,MAAA4nC,GAAAE,YACA34D,QAAAw3D,GACAv3D,QAAAu3D,GACA7lC,KAAA6lC,IAEAlqE,EAAA,EACAF,EAAA,EAAAA,EAAAoY,EAAAnY,OAAAD,IAAA,CACA,IAAA0uB,EAAAtW,EAAApY,GACAiqE,GAAAv7C,IACA,IAAAxuB,EACAq7E,EAAA3oE,QAAA8b,EAEA,IAAAxuB,EACAq7E,EAAA1oE,QAAA6b,EAGA6sD,EAAAh3C,KAAA7V,EAEAxuB,KAGAq7E,EAAA93C,MAAAwnC,GAAAjoE,EAAA0rB,EAEA,CACA,OAAA6sD,CACA,GACA,GAGAp3C,GAAA,CACAtkC,KAAA,iBACA29D,aAAA,OACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAAzmC,GACA,OAAAA,GACA,gBACA,SACA,gBACA,SACA,iBACA,SAEA,QACA,GAGAq3C,GAAA,CACA37E,KAAA,YACA29D,aAAA,OACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAAl8C,GACA,QAAAA,EAAAzhB,MAAA,SAAAyhB,EAAA3a,MACA,YAEA,QAAA2a,EAAAzhB,KAAA,CACA,IAAAwuE,EAAAC,GAAAhtD,EAAA7uB,MACA,YAAA47E,EACA,UAAAz3D,MAAA,0DAAA0K,EAAA7uB,KAAA,KAEA,OAAA47E,EAAA/sD,EAAAtW,OACA,CACA,WACA,GAYAsjE,GAAA,CACAC,OAXA,SAAAvvB,GACA,IAAAh0C,EAAAg0C,EAAA1qC,QAAA,SAAAsoD,GAAA,YAAAA,EAAA/8D,IAAA,IAAAwB,KAAA,SAAAu7D,GAAA,OAAAA,EAAA7tD,MAAA,IACA,WAAA/D,EAAAnY,OAAAmY,EAAA,IACA,EASAwjE,SAPA,SAAAxvB,GACA,IAAAh0C,EAAAg0C,EAAA1qC,QAAA,SAAAsoD,GAAA,YAAAA,EAAA/8D,IAAA,IAAAwB,KAAA,SAAAu7D,GAAA,OAAAA,EAAA7tD,MAAA,IACA8qD,EAAA7uD,EAAA,GAAAyjE,EAAAzjE,EAAA,GAAAA,EAAA,GAAAA,EAAA,OAAA8uD,EAAA9uD,EAAA,GAAA0jE,EAAA1jE,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAAAA,EAAA,QAAA2jE,EAAA3jE,EAAA,IAAA4jE,EAAA5jE,EAAA,IACA,OADAA,EAAA,IAAAA,EAAA,IACA,KAAAA,EAAAnY,OAAA,CAAAgnE,EAAA4U,EAAA3U,EAAA4U,EAAAC,EAAAC,GAAA,IACA,GAMAC,GAAA,CACAhvE,KAAA,GACAkP,OAAA,GACAsqD,MA5xEA,GA8xEAyV,GAAA,CAAAD,OACAE,GAAA,CACAt8E,KAAA,mBACA29D,aAAA,UACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAAxE,GACA,IAAAgW,EAAAhW,EAAA1kD,OAAAwoD,IACA,WAAAkS,EAAAn8E,OACAi8E,GAEA,CAAAE,EAAA,GAAAA,EAAA,GACA,GAGAppC,GAAA,CACAnzC,KAAA,UACA29D,aAAA,OACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAA53B,GACA,OAAAA,GACA,aACA,SACA,eACA,SAEA,QACA,SAEA,IAIA,SAAA2nC,GACAA,EAAA,gBACAA,EAAA,sBACAA,EAAA,mBACA,CAJA,CAIAA,QAAA,KAomBA,IAnmBA,IAAAxY,GAAA,CACAtiE,KAAA,aACA29D,aAAA,SACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAAzI,GACA,OAAAA,GACA,gBACA,OAAAwY,GAAA0B,UACA,eACA,OAAA1B,GAAA2B,SAEA,QACA,OAAA3B,GAAAE,OAEA,GAGA/uE,GAAA,CACAjM,KAAA,UACA29D,aAAA,OACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAAl8C,GACA,QAAAA,EAAAzhB,KACA,OAAAsvE,MAAA,EAAAC,MAAA,GAEA,GAAA/S,GAAA/6C,GACA,OAAA6tD,MAAA,EAAAC,MAAA9tD,EAAAvS,QAEA,UAAA6H,MAAA,gCACA,GAGAy4D,GAEA,SAAA7R,EAAA72D,GACA,QAAAA,EAAA9G,KACA,OAAA8G,EAAApD,KAAA9O,eACA,QACA,WAAAkS,EAAAoI,OACA,SACA,OAAApI,EAAAoI,OAGA,UAAA6H,MAAA,wBACA,EAGA2gB,GAAA,CACA9kC,KAAA,UACA29D,aAAA,IACAvwD,KAAA,EACA45B,QAAA,EACAzrB,MAAA,SAAAwvD,EAAAl8C,GACA,OAAA+6C,GAAA/6C,GACAA,EAAAvS,OAEA,CACA,GAGAugE,GAAA,CACA78E,KAAA,wBACA29D,aAAA,cACA32B,QAAA,EACA55B,KAAA,EACAia,OAAA,SAGAy1D,GAAA,CACA98E,KAAA,uBACA29D,aAAA,OACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAAxE,GACA,OAAAA,EACA1kD,OAAAgoD,IACAj7D,KAAA,SAAAigB,GACA,OAAAA,EAAA3a,OACA,gBACA,SACA,eACA,SACA,mBACA,SACA,WACA,SAEA,QACA,IACA2N,QAAA,SAAAk7D,GAAA,WAAAA,CAAA,GACA,GAGAj5C,GAAA,CACA9jC,KAAA,cACA29D,aAAA,GACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAAxE,GACA,IAAAyW,EAAA,GACAn9C,EAAA,GAmBA,OAlBA0mC,EAAAh9D,SAAA,SAAAslB,GACA,OAAAA,EAAAzhB,MACA,QACA,OACA4vE,EAAAz0E,KAAAsmB,EAAA3a,OACA,MACA,QACA8oE,EAAAz0E,KAAAsmB,EAAAvS,OAAAnE,YACA,MACA,OACA0nB,EAAAt3B,KAAAy0E,EAAAtiE,KAAA,MACAsiE,EAAA58E,OAAA,EAGA,IACA48E,EAAA58E,QACAy/B,EAAAt3B,KAAAy0E,EAAAtiE,KAAA,MAEAmlB,EAAAjxB,KAAA,SAAAwf,GAAA,WAAAA,EAAA5tB,QAAA,KAAA4tB,EAAA,IAAAA,EAAA,MACA,GAGAwa,GAAA,CACA5oC,KAAA,YACA29D,aAAA,IACA32B,QAAA,EACA55B,KAAA,EACAia,OAAA,UAGAwhB,GAAA,CACA7oC,KAAA,cACA29D,aAAA,SACAvwD,KAAA,EACA45B,QAAA,EACAzrB,MAAA,SAAAwvD,EAAAl8C,GACA,OAAA+6C,GAAA/6C,GACAA,EAAAvS,OAEAutD,GAAAh7C,IAEA,SADAA,EAAA3a,MAEA,IAMA,GACA,GAGA+oE,GAAA,CACAj9E,KAAA,eACA29D,aAAA,OACAvwD,KAAA,EACA45B,QAAA,EACAzrB,MAAA,SAAAwvD,EAAAxE,GACA,OAAAA,EAAA1kD,OAAAgoD,IAAAj7D,KAAA,SAAAigB,GAAA,OAAAA,EAAA3a,KAAA,GACA,GAGA40B,GAAA,CACA9oC,KAAA,aACA29D,aAAA,SACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAArsB,GACA,OAAAA,GACA,cACA,gBACA,aACA,eAEA,QACA,eAEA,GAGAj1C,GAAA,SAAAkxE,EAAAzmE,GAAA,SAAAymE,EAAAzmE,EAAA,EAEAgpE,GAAA,CACAl9E,KAAA,UACA29D,aAAA,OACAvwD,KAAA,EACA45B,QAAA,EACAzrB,MAAA,SAAAwvD,EAAAxE,GACA,OAAAA,EAAAnmE,OACA,SAEA,IAAA6hB,EAAAskD,EAAA,GACA,YAAAtkD,EAAA7U,MAAA,SAAA6U,EAAA/N,MACA,GAEAqyD,CACA,GAGA4W,GAAA,CACAn9E,KAAA,oBACA29D,aAAA,OACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAAxE,GACA,OAAAA,EAAAnmE,OACA,YAEA,IAAA6hB,EAAAskD,EAAA,GACA,QAAAtkD,EAAA7U,MAAA,SAAA6U,EAAA/N,MACA,YAIA,IAFA,IAAAkpE,EAAA,GACAC,EAAA9W,EAAA1kD,OAAAmoD,IACA7pE,EAAA,EAAAA,EAAAk9E,EAAAj9E,OAAAD,IAAA,CACA,IAAAm9E,EAAAD,EAAAl9E,GACAm6D,EAAA+iB,EAAAl9E,EAAA,GACA,QAAAm9E,EAAAlwE,KAAA,CACA,IAAAmwE,EAAAjjB,GAAAsP,GAAAtP,KAAAh+C,OAAA,EACA8gE,EAAA70E,KAAA,CAAA+0E,UAAAppE,MAAAqpE,aACA,CACA,CACA,OAAAH,CACA,GAGAI,GAAA,CACAx9E,KAAA,gBACA29D,aAAA,OACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAAxE,GACA,OAAAA,EAAAnmE,OACA,SAIA,IAFA,IAAAq9E,EAAA,GACAJ,EAAA9W,EAAA1kD,OAAAmoD,IACA7pE,EAAA,EAAAA,EAAAk9E,EAAAj9E,OAAAD,IAAA,CACA,IAAAm9E,EAAAD,EAAAl9E,GACAm6D,EAAA+iB,EAAAl9E,EAAA,GACA,GAAA0pE,GAAAyT,IAAA,SAAAA,EAAAppE,MAAA,CACA,IAAAwpE,EAAApjB,GAAAsP,GAAAtP,KAAAh+C,OAAA,EACAmhE,EAAAl1E,KAAA,CAAA+0E,UAAAppE,MAAAwpE,SACA,CACA,CACA,OAAAD,CACA,GAGAxuB,GAAA,CACAjvD,KAAA,WACA29D,aAAA,KACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAApY,EAAAojE,GACA,OAAAA,EAAA1kD,OAAA8nD,IAAA/6D,KAAA,SAAAigB,GAAA,OAAA+tD,GAAAz5E,EAAA0rB,EAAA,GACA,GAGA8uD,GAAA,CACA39E,KAAA,SACA29D,aAAA,OACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAAxE,GACA,OAAAA,EAAAnmE,OACA,YAEA,IAAA6hB,EAAAskD,EAAA,GACA,QAAAtkD,EAAA7U,MAAA,SAAA6U,EAAA/N,MACA,YAEA,IAAAypE,EAAA,GACAN,EAAA9W,EAAA1kD,OAAAioD,IACA,GAAAuT,EAAAj9E,OAAA,KACA,YAEA,QAAAD,EAAA,EAAAA,EAAAk9E,EAAAj9E,OAAAD,GAAA,GACA,IAAAy9E,EAAAP,EAAAl9E,GAAA+T,MACA2pE,EAAAR,EAAAl9E,EAAA,GAAA+T,MACAypE,EAAAp1E,KAAA,CAAAu1E,KAAAF,EAAAnnD,MAAAonD,GACA,CACA,OAAAF,CACA,GAEAI,GAAA,SAAAJ,EAAAK,EAAAF,GACA,IAAAH,EACA,SAEA,IAAAM,EAAAN,EAAAlhE,KAAAsd,IAAAikD,EAAAL,EAAAv9E,OAAA,IACA,OAAA69E,EAGAH,EAAAG,EAAAH,KAAAG,EAAAxnD,MAFA,EAGA,EAEAgO,GAAA,CACAzkC,KAAA,aACA29D,aAAA,OACAvwD,KAAA,EACA45B,QAAA,EACAzrB,MAAA,SAAApY,EAAAojE,GACA,WAAAA,EAAAnmE,QAAA2pE,GAAAxD,EAAA,WACA,GAEA2D,GAAA3D,GAAA33D,KAAA,SAAA2J,GAUA,IATA,IAAAmjE,EAAA,CACA93C,MAAA,IACA7wB,QAAAw3D,GACAv3D,QAAAu3D,GACA7lC,KAAA6lC,GACA5lC,OAAA4lC,GACA9rB,OAAA,GAEAp+C,EAAA,EACAF,EAAA,EAAAA,EAAAoY,EAAAnY,OAAAD,IAAA,CACA,IAAA0uB,EAAAtW,EAAApY,GACA4pE,GAAAl7C,EAAA,SACA6sD,EAAAj9B,OAAA,EAEA2rB,GAAAv7C,IACA,IAAAxuB,EACAq7E,EAAA3oE,QAAA8b,EAEA,IAAAxuB,EACAq7E,EAAA1oE,QAAA6b,EAEA,IAAAxuB,EACAq7E,EAAAh3C,KAAA7V,EAGA6sD,EAAA/2C,OAAA9V,EAEAxuB,KAGAq7E,EAAA93C,MAAAwnC,GAAAjoE,EAAA0rB,EAEA,CACA,OAAA6sD,CACA,GACA,GAGAwC,GAAA,CACAl+E,KAAA,cACA29D,aAAA,SACA32B,QAAA,EACA55B,KAAA,EACAmO,MAAA,SAAAwvD,EAAAxE,GACA,IACA4X,EAAA,GAmBA,OAlBA5X,EAAA1kD,OAAAgoD,IAAAtgE,SAAA,SAAAslB,GACA,OAAAA,EAAA3a,OACA,aACAiqE,EAAA51E,KAAA,GACA,MACA,WACA41E,EAAA51E,KAAA,GACA,MACA,cACA41E,EAAA51E,KAAA,GAGA,IAdA,QAeAgB,SAAA,SAAA2K,IACA,IAAAiqE,EAAA39E,QAAA0T,IACAiqE,EAAA51E,KAAA2L,EAEA,IACAiqE,CACA,GAGAC,GAAA,CACAp+E,KAAA,4BACA29D,aAAA,eACA32B,QAAA,EACA55B,KAAA,EACAia,OAAA,SAGAg3D,GAAA,CACAr+E,KAAA,4BACA29D,aAAA,IACAvwD,KAAA,EACA45B,QAAA,EACAzrB,MAAA,SAAAwvD,EAAAl8C,GACA,OAAA86C,GAAA96C,GACAA,EAAAvS,OAEA,CACA,GAGAgiE,GAAA,WACA,SAAAA,EAAAn7E,EAAAo7E,GACA,IAAAhc,EAAA2J,EACAxkE,KAAAkJ,kBAAA2K,GAAApY,EAAA8rD,GAAAsvB,EAAA3tE,mBACAlJ,KAAAsuE,eAAAz6D,GAAApY,EAAA6yE,GAAAuI,EAAAvI,gBACAtuE,KAAAuuE,gBAAA16D,GAAApY,EAAA8yE,GAAAsI,EAAAtI,iBACAvuE,KAAA09B,gBAAA7pB,GAAApY,EAAAiiC,GAAAm5C,EAAAn5C,iBACA19B,KAAA4xE,iBAAA/9D,GAAApY,EAAAm2E,GAAAiF,EAAAjF,kBACA5xE,KAAA6xE,mBAAAh+D,GAAApY,EAAAo2E,GAAAgF,EAAAhF,oBACA7xE,KAAA8xE,iBAAAj+D,GAAApY,EAAAq2E,GAAA+E,EAAA/E,kBACA9xE,KAAAiyE,eAAAp+D,GAAApY,EAAAw2E,GAAA4E,EAAA5E,gBACAjyE,KAAAqyE,eAAAx+D,GAAApY,EAAA42E,GAAAwE,EAAAxE,gBACAryE,KAAAsyE,iBAAAz+D,GAAApY,EAAA62E,GAAAuE,EAAAvE,kBACAtyE,KAAAuyE,kBAAA1+D,GAAApY,EAAA82E,GAAAsE,EAAAtE,mBACAvyE,KAAAwyE,gBAAA3+D,GAAApY,EAAA+2E,GAAAqE,EAAArE,iBACAxyE,KAAA2hC,oBAAA9tB,GAAApY,EAAAkmC,GAAAk1C,EAAAl1C,qBACA3hC,KAAA4hC,qBAAA/tB,GAAApY,EAAAmmC,GAAAi1C,EAAAj1C,sBACA5hC,KAAA8hC,wBAAAjuB,GAAApY,EAAAqmC,GAAA+0C,EAAA/0C,yBACA9hC,KAAA6hC,uBAAAhuB,GAAApY,EAAAomC,GAAAg1C,EAAAh1C,wBACA7hC,KAAA2yE,eAAA9+D,GAAApY,EAAAk3E,GAAAkE,EAAAlE,gBACA3yE,KAAA4yE,iBAAA/+D,GAAApY,EAAAm3E,GAAAiE,EAAAjE,kBACA5yE,KAAA6yE,kBAAAh/D,GAAApY,EAAAo3E,GAAAgE,EAAAhE,mBACA7yE,KAAA8yE,gBAAAj/D,GAAApY,EAAAq3E,GAAA+D,EAAA/D,iBACA9yE,KAAA8gC,eAAAjtB,GAAApY,EAAAqlC,GAAA+1C,EAAA/1C,gBACA9gC,KAAAghC,iBAAAntB,GAAApY,EAAAulC,GAAA61C,EAAA71C,kBACAhhC,KAAA+gC,kBAAAltB,GAAApY,EAAAslC,GAAA81C,EAAA91C,mBACA/gC,KAAAihC,gBAAAptB,GAAApY,EAAAwlC,GAAA41C,EAAA51C,iBACAjhC,KAAA+8B,UAAAlpB,GAAApY,EAAAshC,GAAA85C,EAAA95C,WACA/8B,KAAAk8B,MAAAroB,GAAApY,EAAAygC,GAAA26C,EAAA36C,OACAl8B,KAAAgzE,UAAAn/D,GAAApY,EAAAu3E,GAAA6D,EAAA7D,WACAhzE,KAAA6M,QAAAgH,GAAApY,EAAAoR,GAAAgqE,EAAAhqE,SACA7M,KAAAqwC,MAAAx8B,GAAApY,EAAA40C,GAAAwmC,EAAAC,UACA92E,KAAAo8B,WAAAvoB,GAAApY,EAAA2gC,GAAAy6C,EAAAz6C,YACAp8B,KAAAkhC,SAAArtB,GAAApY,EAAAylC,GAAA21C,EAAA31C,UACAlhC,KAAAohC,UAAAvtB,GAAApY,EAAA2lC,GAAAy1C,EAAAz1C,WACAphC,KAAAu1E,YAAA1hE,GAAApY,EAAA85E,GAAAsB,EAAAtB,aACAv1E,KAAAmhC,WAAAttB,GAAApY,EAAA0lC,GAAA01C,EAAA11C,YACAnhC,KAAAmzE,cAAAt/D,GAAApY,EAAA03E,GAAA0D,EAAA1D,eACAnzE,KAAA26D,UAAA9mD,GAAApY,EAAAk/D,GAAAkc,EAAAlc,WACA36D,KAAA28B,WAAA9oB,GAAApY,EAAAkhC,GAAAk6C,EAAAl6C,YACA38B,KAAAwzE,eAAA3/D,GAAApY,EAAA+3E,GAAAqD,EAAArD,gBACAxzE,KAAAyzE,kBAAA5/D,GAAApY,EAAAg4E,GAAAoD,EAAApD,mBACAzzE,KAAA0zE,cAAA7/D,GAAApY,EAAAi4E,GAAAmD,EAAAnD,eACA1zE,KAAA4zE,UAAA//D,GAAApY,EAAAm4E,GAAAiD,EAAAjD,WACA5zE,KAAAmN,YAAA0G,GAAApY,EAAA0R,GAAA0pE,EAAA1pE,aACAnN,KAAA6zE,aAAAhgE,GAAApY,EAAAo4E,GAAAgD,EAAAhD,cACA7zE,KAAAkN,WAAA2G,GAAApY,EAAAyR,GAAA2pE,EAAA3pE,YACAlN,KAAAo9B,QAAAvpB,GAAApY,EAAA2hC,GAAAy5C,EAAAz5C,SACA,IAAA25C,EAAAljE,GAAApY,EAAAu7C,GAAA6/B,EAAA7/B,UACAh3C,KAAAg3E,UAAAD,EAAA,GACA/2E,KAAAi3E,UAAAF,IAAAr+E,OAAA,OACAsH,KAAA8zE,aAAAjgE,GAAApY,EAAAq4E,GAAA+C,EAAA/C,cACA9zE,KAAAqN,WAAAwG,GAAApY,EAAA4R,GAAAwpE,EAAAxpE,YACArN,KAAA0hC,aAAA7tB,GAAApY,EAAAimC,GAAAm1C,EAAAn1C,cACA1hC,KAAAsN,cAAAuG,GAAApY,EAAA6R,GAAAupE,EAAAvpE,eACAtN,KAAAyhC,YAAA5tB,GAAApY,EAAAgmC,GAAAo1C,EAAAp1C,aACAzhC,KAAAw2E,WAAA3iE,GAAApY,EAAA+6E,GAAAK,EAAAL,YACAx2E,KAAAmE,SAAA0P,GAAApY,EAAA0I,GAAA0yE,EAAA1yE,UACAnE,KAAAshC,UAAAztB,GAAApY,EAAA6lC,GAAAu1C,EAAAv1C,WACAthC,KAAAm1E,oBAAAthE,GAAApY,EAAA05E,GAAA,QAAAta,EAAAgc,EAAA1B,2BAAA,IAAAta,IAAAgc,EAAA36C,OACAl8B,KAAAo1E,mBAAAvhE,GAAApY,EAAA25E,GAAA,QAAA5Q,EAAAqS,EAAAzB,0BAAA,IAAA5Q,IAAAqS,EAAAx1C,gBACArhC,KAAAk9B,WAAArpB,GAAApY,EAAAyhC,GAAA25C,EAAA35C,YACAl9B,KAAA48B,cAAA/oB,GAAApY,EAAAmhC,GAAAi6C,EAAAj6C,eACA58B,KAAAuhC,UAAA1tB,GAAApY,EAAAw4E,GAAA4C,EAAAt1C,WACAvhC,KAAA40E,gBAAA/gE,GAAApY,EAAAm5E,GAAAiC,EAAAjC,iBACA50E,KAAAyrC,WAAA53B,GAAApY,EAAAgwC,GAAAorC,EAAAprC,YACAzrC,KAAA02E,sBAAA7iE,GAAApY,EAAAi7E,GAAAG,EAAAH,uBACA12E,KAAA22E,sBAAA9iE,GAAApY,EAAAk7E,GAAAE,EAAAF,uBACA32E,KAAA46D,UAAA/mD,GAAApY,EAAAm/D,GAAAic,EAAAjc,WACA56D,KAAAuE,OAAAsP,GAAApY,EAAA8I,GAAAsyE,EAAAtyE,OACA,CA2BA,OA1BAqyE,EAAA72E,UAAA0I,UAAA,WACA,OAAAzI,KAAA6M,QAAA,GAAA7M,KAAAo9B,QAAA,OAAAp9B,KAAAyrC,UACA,EACAmrC,EAAA72E,UAAAkkE,cAAA,WACA,OAAAA,GAAAjkE,KAAAuuE,gBACA,EACAqI,EAAA72E,UAAAm3E,cAAA,WACA,cAAAl3E,KAAAuhC,SACA,EACAq1C,EAAA72E,UAAAo3E,aAAA,WACA,WAAAn3E,KAAAmE,QACA,EACAyyE,EAAA72E,UAAAq3E,uBAAA,WACA,OAAAp3E,KAAAm3E,iBAAAn3E,KAAAuE,OAAAywE,IACA,EACA4B,EAAA72E,UAAAs3E,WAAA,WACA,WAAAr3E,KAAAqwC,KACA,EACAumC,EAAA72E,UAAAu3E,cAAA,WACA,OAAAv1E,GAAA/B,KAAA6M,QAAA,IACA9K,GAAA/B,KAAA6M,QAAA,WACA9K,GAAA/B,KAAA6M,QAAA,YACA9K,GAAA/B,KAAA6M,QAAA,YACA9K,GAAA/B,KAAA6M,QAAA,WACA9K,GAAA/B,KAAA6M,QAAA,UACA,EACA+pE,CACA,CAlGA,GAmGAW,GACA,SAAA97E,EAAAo7E,GACA72E,KAAAw1E,QAAA3hE,GAAApY,EAAA+5E,GAAAqB,EAAArB,SACAx1E,KAAAi2E,OAAApiE,GAAApY,EAAAw6E,GAAAY,EAAAZ,OACA,EAGAuB,GACA,SAAA/7E,EAAAo7E,GACA72E,KAAAy1E,iBAAA5hE,GAAApY,EAAAg6E,GAAAoB,EAAApB,kBACAz1E,KAAA81E,aAAAjiE,GAAApY,EAAAq6E,GAAAe,EAAAf,aACA,EAIAjiE,GAAA,SAAApY,EAAAg8E,EAAAx7C,GACA,IAAAklC,EAAA,IAAA3C,GACAhyD,EAAAyvB,UAAAxrB,WAAAgnE,EAAAxhB,aACAkL,EAAAzC,MAAAlyD,GACA,IAAAmX,EAAA,IAAAs9C,GAAAE,EAAAvC,QACA,OAAA6Y,EAAA/xE,MACA,OACA,IAAAyhB,EAAAxD,EAAA09C,sBACA,OAAAoW,EAAA5jE,MAAApY,EAAA0mE,GAAAh7C,KAAA3a,MAAAirE,EAAAxhB,cACA,OACA,OAAAwhB,EAAA5jE,MAAApY,EAAAkoB,EAAA09C,uBACA,OACA,OAAAoW,EAAA5jE,MAAApY,EAAAkoB,EAAA49C,wBACA,OACA,OAAA59C,EAAA09C,sBACA,OACA,OAAAoW,EAAA93D,QACA,YACA,OAAAwtC,GAAA1xD,EAAAkoB,EAAA09C,uBACA,YACA,OAAAqC,GAAAjoE,EAAAkoB,EAAA09C,uBACA,YACA,OAAA5mC,GAAAh/B,EAAAkoB,EAAA09C,uBACA,aACA,IAAAqW,EAAA/zD,EAAA09C,sBACA,OAAAqB,GAAAgV,KAAA7U,GACA,wBACA,IAAA8U,EAAAh0D,EAAA09C,sBACA,OAAAsB,GAAAgV,KAAA9U,GACA,WACA,OAAAqS,GAAAz5E,EAAAkoB,EAAA09C,wBAIA,EAkBAuW,GAAA,SAAAhsE,EAAAlG,GACA,IAAAmyE,EAhBA,SAAAjsE,GAEA,OADAA,EAAAksE,aAFA,2BAIA,UACA,SACA,YACA,SACA,YACA,SACA,aACA,SACA,QACA,SAEA,CAEAC,CAAAnsE,GACA,WAAAisE,GAAAnyE,IAAAmyE,CACA,EAEAG,GACA,SAAAv8E,EAAAmQ,GACA5L,KAAAvE,UACAuE,KAAAi4E,UAAA,GACAj4E,KAAAk4E,SAAA,GACAl4E,KAAAk/D,MAAA,EACA0Y,GAAAhsE,EAAA,GAGA5L,KAAAq/B,OAAA,IAAAu3C,GAAAn7E,EAAA5B,OAAAs+E,iBAAAvsE,EAAA,OACAwsE,GAAAxsE,KACA5L,KAAAq/B,OAAAn2B,kBAAAmvE,MAAA,SAAA9wB,GAAA,OAAAA,EAAA,OACA37C,EAAAqwB,MAAA/yB,kBAAA,MAEA,OAAAlJ,KAAAq/B,OAAAkC,YAEA31B,EAAAqwB,MAAAsF,UAAA,SAGAvhC,KAAAs4E,OAAA5jB,EAAA10D,KAAAvE,QAAAmQ,GACAgsE,GAAAhsE,EAAA,KACA5L,KAAAk/D,OAAA,GAEA,EAgBAqZ,GAAA,mEAEAC,GAAA,oBAAAjjB,WAAA,OAAAA,WAAA,KACAkjB,GAAA,EAAAA,GAAAF,GAAAE,KACAD,GAAAD,GAAA1jB,WAAA4jB,QA6LA,IA3LA,IAoGAC,GAAA,SAAA7iB,EAAA30C,EAAAsnC,GACA,OAAAqN,EAAAn3D,MACAm3D,EAAAn3D,MAAAwiB,EAAAsnC,GAEA,IAAAsN,YAAA7jD,MAAAlS,UAAArB,MAAAsmB,KAAA6wC,EAAA30C,EAAAsnC,GACA,EAkBAwN,GAAA,WACA,SAAAA,EAAAC,EAAAC,EAAAC,EAAAC,EAAA50D,EAAAlG,GACA0E,KAAAi2D,eACAj2D,KAAAk2D,aACAl2D,KAAAm2D,YACAn2D,KAAAo2D,iBACAp2D,KAAAwB,QACAxB,KAAA1E,MACA,CA6CA,OAtCA06D,EAAAj2D,UAAA1H,IAAA,SAAA88D,GACA,IAAAkB,EACA,GAAAlB,GAAA,GACA,GAAAA,EAAA,OAAAA,EAAA,OAAAA,GAAA,MAMA,OADAkB,IADAA,EAAAr2D,KAAAwB,MAAA2zD,GAtGA,KASA,IAgBAwjB,GA8EAxjB,GACAn1D,KAAA1E,KAAA+6D,GAEA,GAAAlB,GAAA,MASA,OADAkB,IADAA,EAAAr2D,KAAAwB,MA5FA,MA4FA2zD,EAAA,OAjHA,MASA,IAgBAwjB,GAyFAxjB,GACAn1D,KAAA1E,KAAA+6D,GAEA,GAAAlB,EAAAn1D,KAAAm2D,UAOA,OALAE,EAAAuiB,MAAAzjB,GArHA,IAsHAkB,EAAAr2D,KAAAwB,MAAA60D,GACAA,GAAAlB,GAzHA,EAwDA0jB,GAmEAxiB,IADAA,EAAAr2D,KAAAwB,MAAA60D,KAjHA,IAgBAsiB,GAkGAxjB,GACAn1D,KAAA1E,KAAA+6D,GAEA,GAAAlB,GAAA,QACA,OAAAn1D,KAAA1E,KAAA0E,KAAAo2D,eAEA,CAEA,OAAAp2D,KAAAk2D,UACA,EACAF,CACA,CAtDA,GA6DA8iB,GAAA,mEAEAC,GAAA,oBAAAxjB,WAAA,OAAAA,WAAA,KACA98D,GAAA,EAAAA,GAAAqgF,GAAArgF,KACAsgF,GAAAD,GAAAjkB,WAAAp8D,QAGA,IAmgDAugF,GA7/CA/sD,GAAA,EACAgtD,GAAA,EAEAC,GAAA,GACAC,GAAA,GA0BAlkB,GAAA,WAEA,IADA,IAAAL,EAAA,GACAI,EAAA,EAAAA,EAAA9zD,UAAAxI,OAAAs8D,IACAJ,EAAAI,GAAA9zD,UAAA8zD,GAEA,GAAAriB,OAAAsiB,cACA,OAAAtiB,OAAAsiB,cAAAh0D,MAAA0xC,OAAAiiB,GAEA,IAAAl8D,EAAAk8D,EAAAl8D,OACA,IAAAA,EACA,SAKA,IAHA,IAAAw8D,EAAA,GACA1zD,GAAA,EACAklB,EAAA,KACAllB,EAAA9I,GAAA,CACA,IAAAy8D,EAAAP,EAAApzD,GACA2zD,GAAA,MACAD,EAAAr0D,KAAAs0D,IAGAA,GAAA,MACAD,EAAAr0D,KAAA,OAAAs0D,GAAA,IAAAA,EAAA,cAEA3zD,EAAA,IAAA9I,GAAAw8D,EAAAx8D,OAAA,SACAguB,GAAAisB,OAAAyiB,aAAAn0D,MAAA0xC,OAAAuiB,GACAA,EAAAx8D,OAAA,EAEA,CACA,OAAAguB,CACA,EACA0yD,GAlJA,SAAA/gB,GACA,IAPAxC,EAAA30C,EAAAsnC,EAOA/pC,EAjHA,SAAA45C,GACA,IAAA5/D,EAAA6/D,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAAAL,EAAA3/D,OAAAigE,EAAAN,EAAA3/D,OAAAm5D,EAAA,EACA,MAAAwG,IAAA3/D,OAAA,KACAggE,IACA,MAAAL,IAAA3/D,OAAA,IACAggE,KAGA,IAAAj6C,EAAA,oBAAAm6C,aACA,oBAAArD,iBACA,IAAAA,WAAAx1D,UAAArB,MACA,IAAAk6D,YAAAF,GACA,IAAAzmD,MAAAymD,GACAG,EAAA5mD,MAAAiS,QAAAzF,KAAA,IAAA82C,WAAA92C,GACA,IAAAhmB,EAAA,EAAAA,EAAAkgE,EAAAlgE,GAAA,EACA6/D,EAAAkgB,GAAAngB,EAAAxD,WAAAp8D,IACA8/D,EAAAigB,GAAAngB,EAAAxD,WAAAp8D,EAAA,IACA+/D,EAAAggB,GAAAngB,EAAAxD,WAAAp8D,EAAA,IACAggE,EAAA+f,GAAAngB,EAAAxD,WAAAp8D,EAAA,IACAogE,EAAAhH,KAAAyG,GAAA,EAAAC,GAAA,EACAM,EAAAhH,MAAA,GAAA0G,IAAA,EAAAC,GAAA,EACAK,EAAAhH,MAAA,EAAA2G,IAAA,KAAAC,EAEA,OAAAh6C,CACA,CAyFA46D,CAAAhhB,GACAU,EAAA9mD,MAAAiS,QAAAzF,GAjFA,SAAAA,GAGA,IAFA,IAAA/lB,EAAA+lB,EAAA/lB,OACAmgE,EAAA,GACApgE,EAAA,EAAAA,EAAAC,EAAAD,GAAA,EACAogE,EAAAh4D,KAAA4d,EAAAhmB,EAAA,OAAAgmB,EAAAhmB,EAAA,OAAAgmB,EAAAhmB,EAAA,MAAAgmB,EAAAhmB,IAEA,OAAAogE,CACA,CA0EAygB,CAAA76D,GAAA,IAAAw6C,YAAAx6C,GACAy6C,EAAAjnD,MAAAiS,QAAAzF,GA1FA,SAAAA,GAGA,IAFA,IAAA/lB,EAAA+lB,EAAA/lB,OACAmgE,EAAA,GACApgE,EAAA,EAAAA,EAAAC,EAAAD,GAAA,EACAogE,EAAAh4D,KAAA4d,EAAAhmB,EAAA,MAAAgmB,EAAAhmB,IAEA,OAAAogE,CACA,CAmFA0gB,CAAA96D,GAAA,IAAAq3C,YAAAr3C,GAEAjd,EAAAk3E,GAAAxf,EAAAE,GAAAL,EAAA,MACAz9D,EAAA,IAAAy9D,EAAA,GACA2f,GAAAxf,GAHA,GAGAH,EAAA,QAbAlD,EAcAkD,EAdA73C,EAcAnM,KAAAskD,MAJA,GAIAN,EAAA,OAbAlD,EAAAn3D,MACAm3D,EAAAn3D,MAAAwiB,EAAAsnC,GAEA,IAAAyQ,YAAAhnD,MAAAlS,UAAArB,MAAAsmB,KAAA6wC,EAAA30C,EAAAsnC,KAWA,WAAAwN,GAAA+C,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAv3D,EAAAlG,EACA,CAwIAk+E,CA/QA,gjzBAgRAC,GAAA,IAEAC,GAAA,SAAAvkB,GAAA,OAAAikB,GAAA/gF,IAAA88D,EAAA,EACAwkB,GAAA,SAAAC,EAAA5f,EAAAx4D,GACA,IAAAi5D,EAAAj5D,EAAA,EACAy4D,EAAAD,EAAAS,GACAl5D,EAAAy4D,EAAAx4D,EAAA,GACAoxD,EAAAoH,EAAAx4D,GAEA,GA5EA,IA4EAD,GA3EA,IA2EAqxD,EACA,OAAA6mB,GAGA,GAhFA,IAgFAl4E,GA/EA,IA+EAA,GA9EA,IA8EAA,EACA,MAbA,IAgBA,GApFA,IAoFAqxD,GAnFA,IAmFAA,GAlFA,IAkFAA,EACA,MAjBA,IAqBA,GAAArxD,IAAA0qB,KAAA,KAAAA,GAAAgtD,GAAAC,GAAAC,IAAArgF,QAAA85D,GACA,OAAA6mB,GAGA,KAAAl4E,IAAA23E,IAAA33E,IAAA03E,IAAArmB,IAAAqmB,IAtFA,KAsFArmB,GACA,OAAA6mB,GAGA,IAAAl4E,IAAA43E,IA1FA,KA0FA53E,IA1FA,KA0FAqxD,EACA,OAAA6mB,GAGA,GA3FA,KA2FA7mB,GAlGA,IAkGAA,EACA,OAAA6mB,GAIA,GAtGA,IAsGA7mB,EACA,OAAA6mB,GAGA,GA/GA,IA+GAl4E,EACA,OAAAk4E,GAGA,GAxGA,KAwGAl4E,GAvGA,KAuGAqxD,EAAA,CACA,KAhHA,IAgHAqH,GACAA,EAAAD,IAAAS,GAEA,GA3GA,KA2GAR,EACA,OAAAwf,EAEA,CAIA,GAjHA,KAiHAl4E,GAjHA,KAiHAqxD,EAAA,CAEA,IADA,IAAAinB,EAAA,EAlHA,KAmHA5f,GACA4f,IACA5f,EAAAD,IAAAS,GAEA,GAAAof,EAAA,KACA,OAAAJ,EAEA,CACA,MAnEA,GAoEA,EACAK,GAAA,SAAAlpC,GACA,IAAAgkB,EA7HA,SAAAhkB,GAIA,IAHA,IAAAgkB,EAAA,GACAn8D,EAAA,EACAC,EAAAk4C,EAAAl4C,OACAD,EAAAC,GAAA,CACA,IAAA8T,EAAAokC,EAAAikB,WAAAp8D,KACA,GAAA+T,GAAA,OAAAA,GAAA,OAAA/T,EAAAC,EAAA,CACA,IAAAo8D,EAAAlkB,EAAAikB,WAAAp8D,KACA,cAAAq8D,GACAF,EAAA/zD,OAAA,KAAA2L,IAAA,UAAAsoD,GAAA,QAGAF,EAAA/zD,KAAA2L,GACA/T,IAEA,MAEAm8D,EAAA/zD,KAAA2L,EAEA,CACA,OAAAooD,CACA,CAwGAmlB,CAAAnpC,GACAl4C,EAAAk8D,EAAAl8D,OACA8I,EAAA,EACAw4E,EAAA,EACAhgB,EAAApF,EAAA1tD,IAAAwyE,IACA,OACA9mB,KAAA,WACA,GAAApxD,GAAA9I,EACA,OAAA6zC,MAAA,EAAA//B,MAAA,MAGA,IADA,IAAAytE,EAAAR,GACAj4E,EAAA9I,IACAuhF,EAAAN,GAAA/kB,EAAAoF,IAAAx4D,MAAAi4E,KACA,GAAAQ,IAAAR,IAAAj4E,IAAA9I,EAAA,CACA,IAAA8T,EAAAyoD,GAAAh0D,MAAA,KAAA2zD,EAAAl2D,MAAAs7E,EAAAx4E,IAEA,OADAw4E,EAAAx4E,EACA,CAAAgL,QAAA+/B,MAAA,EACA,CACA,OAAAA,MAAA,EAAA//B,MAAA,KACA,EAEA,EAkFA0tE,GAAA,SAAA5+E,GACA,WAAAA,EAAA,UAAAA,EAAA,QAAAA,EAAA,UAAAA,EAAA,EACA,EAuCA6+E,GAAA,SAAAntE,EAAAmB,EAAA/J,EAAAC,EAAAitC,GACA,IAAA8oC,EAAA,6BACAC,EAAAniF,SAAAoiF,gBAAAF,EAAA,OACAG,EAAAriF,SAAAoiF,gBAAAF,EAAA,iBAUA,OATAC,EAAAG,eAAA,aAAAxtE,EAAAyD,YACA4pE,EAAAG,eAAA,cAAArsE,EAAAsC,YACA8pE,EAAAC,eAAA,qBACAD,EAAAC,eAAA,sBACAD,EAAAC,eAAA,SAAAp2E,EAAAqM,YACA8pE,EAAAC,eAAA,SAAAn2E,EAAAoM,YACA8pE,EAAAC,eAAA,yCACAH,EAAAjqD,YAAAmqD,GACAA,EAAAnqD,YAAAkhB,GACA+oC,CACA,EACAI,GAAA,SAAAJ,GACA,WAAA5nB,SAAA,SAAAnuC,EAAAa,GACA,IAAAu1D,EAAA,IAAA5kE,MACA4kE,EAAAC,OAAA,kBAAAr2D,EAAAo2D,EAAA,EACAA,EAAAE,QAAAz1D,EACAu1D,EAAA/pD,IAAA,oCAAA1F,oBAAA,IAAA4vD,eAAAC,kBAAAT,GACA,GACA,EACAU,GAAA,CACA,wBAAAC,GACA,IAAAxuE,EAvIA,SAAAtU,GAEA,GAAAA,EAAA+iF,YAAA,CACA,IAAAC,EAAAhjF,EAAA+iF,cACA,GAAAC,EAAApvE,sBAAA,CACA,IAAAqvE,EAAAjjF,EAAAoqB,cAAA,aACA64D,EAAAl/C,MAAA9tB,OAAAitE,QACAD,EAAAl/C,MAAApvB,QAAA,QACA3U,EAAAi4B,KAAAC,YAAA+qD,GACAD,EAAAG,WAAAF,GACA,IAAAG,EAAAJ,EAAApvE,wBACAyvE,EAAAxmE,KAAA81C,MAAAywB,EAAAntE,QAEA,GADAjW,EAAAi4B,KAAAE,YAAA8qD,GAXA,MAYAI,EACA,QAEA,CACA,CACA,QACA,CAoHAC,CAAAtjF,UAEA,OADAgI,OAAAu7E,eAAAV,GAAA,wBAAAvuE,UACAA,CACA,EACA,yBAAAkvE,GACA,IAAAlvE,EAAAuuE,GAAAC,sBAxHA,SAAA9iF,GACA,IAAAijF,EAAAjjF,EAAAoqB,cAAA,aACA64D,EAAAl/C,MAAAjvB,MAAA,OACAmuE,EAAAl/C,MAAApvB,QAAA,QACAsuE,EAAAl/C,MAAAiF,SAAA,OACAi6C,EAAAl/C,MAAAk3C,cAAA,MACAgI,EAAAl/C,MAAA0/C,YAAA,MACAzjF,EAAAi4B,KAAAC,YAAA+qD,GACA,IAAAD,EAAAhjF,EAAA+iF,cACAE,EAAAhpC,UAAA,qBAAAypC,OAAA,YAAAA,OAAA,OACA,IAAAtqC,EAAA6pC,EAAAlqD,WACA4qD,EAAAlnB,EAAArjB,EAAAh2C,MAAA4L,KAAA,SAAAzO,GAAA,OAAAs8D,EAAAt8D,EAAA,IACA4jD,EAAA,EACA4d,EAAA,GAEA6hB,EAAAD,EAAAjgC,OAAA,SAAA/gB,EAAApiC,GACAyiF,EAAAa,SAAAzqC,EAAA+K,GACA6+B,EAAAc,OAAA1qC,EAAA+K,EAAAxhB,EAAAniC,QACA,IAAA87D,EAAA0mB,EAAApvE,wBACAuwC,GAAAxhB,EAAAniC,OACA,IAAAujF,EAAAznB,EAAApwD,EAAA61D,EAAA71D,GAAAowD,EAAAnwD,EAAA41D,EAAA51D,EAEA,OADA41D,EAAAzF,EACA,IAAA/7D,GAGAwjF,CACA,IAEA,OADA/jF,EAAAi4B,KAAAE,YAAA8qD,GACAW,CACA,CA2FAI,CAAAhkF,UAEA,OADAgI,OAAAu7E,eAAAV,GAAA,yBAAAvuE,UACAA,CACA,EACA,uBAAA2vE,GACA,IAAA3vE,EA7FA,SAAAtU,GACA,IAAAwiF,EAAA,IAAA5kE,MACAsmE,EAAAlkF,EAAAoqB,cAAA,UACA8wB,EAAAgpC,EAAAC,WAAA,MACA,IAAAjpC,EACA,SAEAsnC,EAAA/pD,IAAA,oEACA,IACAyiB,EAAAkpC,UAAA5B,EAAA,KACA0B,EAAAG,WACA,CACA,MAAAjkE,GACA,QACA,CACA,QACA,CA6EAkkE,CAAAtkF,UAEA,OADAgI,OAAAu7E,eAAAV,GAAA,uBAAAvuE,UACAA,CACA,EACA,iCAAAiwE,GACA,IAAAjwE,EAAA,mBAAAyF,MAAA2hD,MAAA,mBAAA/5D,OAAAgzB,MA9EA,SAAA30B,GACA,IAAAkkF,EAAAlkF,EAAAoqB,cAAA,UACAhe,EAAA,IACA83E,EAAApvE,MAAA1I,EACA83E,EAAAjuE,OAAA7J,EACA,IAAA8uC,EAAAgpC,EAAAC,WAAA,MACA,IAAAjpC,EACA,OAAAqf,QAAAttC,QAAA,GAEAiuB,EAAAspC,UAAA,iBACAtpC,EAAAupC,SAAA,IAAAr4E,KACA,IAAAo2E,EAAA,IAAA5kE,MACA8mE,EAAAR,EAAAG,YACA7B,EAAA/pD,IAAAisD,EACA,IAAAvC,EAAAF,GAAA71E,IAAA,IAAAo2E,GAGA,OAFAtnC,EAAAspC,UAAA,MACAtpC,EAAAupC,SAAA,IAAAr4E,KACAm2E,GAAAJ,GACA/2E,MAAA,SAAAo3E,GACAtnC,EAAAkpC,UAAA5B,EAAA,KACA,IAAAp/E,EAAA83C,EAAAypC,aAAA,IAAAv4E,KAAAhJ,KACA83C,EAAAspC,UAAA,MACAtpC,EAAAupC,SAAA,IAAAr4E,KACA,IAAAgtC,EAAAp5C,EAAAoqB,cAAA,OAIA,OAHAgvB,EAAArV,MAAAyB,gBAAA,OAAAk/C,EAAA,IACAtrC,EAAArV,MAAA9tB,OAAA7J,EAAA,KAEA41E,GAAA5+E,GACAm/E,GAAAN,GAAA71E,IAAA,IAAAgtC,IACAmhB,QAAAttC,QAAA,EACA,IACA7hB,MAAA,SAAAo3E,GAGA,OAFAtnC,EAAAkpC,UAAA5B,EAAA,KAEAR,GAAA9mC,EAAAypC,aAAA,IAAAv4E,KAAAhJ,KACA,IACAgwC,OAAA,sBACA,CA0CAwxC,CAAA5kF,UACAu6D,QAAAnuC,SAAA,GAEA,OADApkB,OAAAu7E,eAAAV,GAAA,iCAAAvuE,UACAA,CACA,EACA,uBAAAuwE,GACA,IAAAvwE,OA3GA,SAAAsJ,OAAAknE,YA6GA,OADA98E,OAAAu7E,eAAAV,GAAA,uBAAAvuE,UACAA,CACA,EACA,yBAAAywE,GACA,IAAAzwE,EA/GA,qBAAA0wE,gBAAAC,aAiHA,OADAj9E,OAAAu7E,eAAAV,GAAA,yBAAAvuE,UACAA,CACA,EACA,oBAAA4wE,GACA,IAAA5wE,EAAA,wBAAA0wE,eAEA,OADAh9E,OAAAu7E,eAAAV,GAAA,oBAAAvuE,UACAA,CACA,EACA,oCAAA6wE,GAEA,IAAA7wE,IAAA,oBAAA8wE,YAAAC,WAEA,OADAr9E,OAAAu7E,eAAAV,GAAA,oCAAAvuE,UACAA,CACA,GAGAgxE,GACA,SAAA3iD,EAAAy9C,GACAt4E,KAAA66B,OACA76B,KAAAs4E,QACA,EAoCAmF,GAAA,SAAAhiF,EAAA61C,GACA,IAAAosC,EAAApsC,EAAAosC,cACA,GAAAA,EAAA,CACA,IAAAC,EAAAD,EAAAp7D,cAAA,sBACAq7D,EAAAvtD,YAAAkhB,EAAAK,WAAA,IACA,IAAAxgB,EAAAmgB,EAAAngB,WACA,GAAAA,EAAA,CACAA,EAAAysD,aAAAD,EAAArsC,GACA,IAAAgnC,EAAA5jB,EAAAj5D,EAAAkiF,GAIA,OAHAA,EAAA1sD,YACAE,EAAAysD,aAAAD,EAAA1sD,WAAA0sD,GAEArF,CACA,CACA,CACA,OAAAtkB,EAAAS,KACA,EACAwmB,GAAA,SAAA3pC,EAAA+K,EAAA3jD,GACA,IAAAglF,EAAApsC,EAAAosC,cACA,IAAAA,EACA,UAAAjhE,MAAA,8BAEA,IAAAy+D,EAAAwC,EAAAzC,cAGA,OAFAC,EAAAa,SAAAzqC,EAAA+K,GACA6+B,EAAAc,OAAA1qC,EAAA+K,EAAA3jD,GACAwiF,CACA,EACA2C,GAAA,SAAArxE,GACA,GAAAuuE,GAAAsC,iCAAA,CAEA,IAAAS,EAAA,IAAAR,KAAAC,eAAA,GAAAQ,YAAA,aAEA,OAAA9rE,MAAA2hD,KAAAkqB,EAAA1vB,QAAA5hD,IAAAtF,KAAA,SAAAknD,GAAA,OAAAA,SAAA,GACA,CACA,OAzQA,SAAAxd,GAIA,IAHA,IAEAotC,EAFAC,EAAAnE,GAAAlpC,GACAstC,EAAA,KAEAF,EAAAC,EAAArrB,QAAArmB,MACAyxC,EAAAxxE,OACA0xE,EAAAr9E,KAAAm9E,EAAAxxE,MAAA9N,SAGA,OAAAw/E,CACA,CA+PAC,CAAA3xE,EACA,EAYA4xE,GAAA,SAAA5xE,EAAA6yB,GACA,WAAAA,EAAA8zC,cAAA0K,GAAArxE,GAZA,SAAAA,EAAA6yB,GACA,GAAA07C,GAAAsC,iCAAA,CAEA,IAAAS,EAAA,IAAAR,KAAAC,eAAA,GACAQ,YAAA,SAGA,OAAA9rE,MAAA2hD,KAAAkqB,EAAA1vB,QAAA5hD,IAAAtF,KAAA,SAAAknD,GAAA,OAAAA,SAAA,GACA,CACA,OAAAiwB,GAAA7xE,EAAA6yB,EACA,CAEAi/C,CAAA9xE,EAAA6yB,EACA,EAEAk/C,GAAA,oCACAF,GAAA,SAAAztC,EAAAvR,GA6BA,IA5BA,IAKA2+C,EALAC,EAnkHA,SAAArtC,EAAAztB,GACA,IAAAyxC,EAAAD,EAAA/jB,GACAiqB,EAAAH,GAAA9F,EAAAzxC,GAAAi3C,EAAAS,EAAA,GAAAb,EAAAa,EAAA,GAAAM,EAAAN,EAAA,GACAniE,EAAAk8D,EAAAl8D,OACAshF,EAAA,EACAntC,EAAA,EACA,OACA+lB,KAAA,WACA,GAAA/lB,GAAAn0C,EACA,OAAA6zC,MAAA,EAAA//B,MAAA,MAGA,IADA,IAAAmuD,EAAAzC,EACArrB,EAAAn0C,IACAiiE,EAAAR,GAAAvF,EAAAoF,EAAAI,IAAAvtB,EAAAsuB,MACAjD,IACA,GAAAyC,IAAAzC,GAAArrB,IAAAn0C,EAAA,CACA,IAAA8T,EAAA,IAAA6uD,GAAAzG,EAAA+F,EAAAqf,EAAAntC,GAEA,OADAmtC,EAAAntC,EACA,CAAArgC,QAAA+/B,MAAA,EACA,CACA,OAAAA,MAAA,EAAA//B,MAAA,KACA,EAEA,CA4iHAgyE,CAAA5tC,EAAA,CACA+pB,UAAAt7B,EAAAs7B,UACAC,UAAA,eAAAv7B,EAAAy0C,aAAA,aAAAz0C,EAAAu7B,YAEA6jB,EAAA,GAEAC,EAAA,WACA,GAAAV,EAAAxxE,MAAA,CACA,IAAAA,EAAAwxE,EAAAxxE,MAAA9N,QACAk2D,EAAAD,EAAAnoD,GACAmyE,EAAA,GACA/pB,EAAA/yD,SAAA,SAAAszD,IACA,IAAAopB,GAAAzlF,QAAAq8D,GACAwpB,GAAA5pB,EAAAI,IAGAwpB,EAAAjmF,QACA+lF,EAAA59E,KAAA89E,GAEAF,EAAA59E,KAAAk0D,EAAAI,IACAwpB,EAAA,GAEA,IACAA,EAAAjmF,QACA+lF,EAAA59E,KAAA89E,EAEA,CACA,IACAX,EAAAC,EAAArrB,QAAArmB,MACAmyC,IAEA,OAAAD,CACA,EAEAG,GACA,SAAAnjF,EAAA61C,EAAAjS,GACAr/B,KAAA66B,KAAA0G,GAAA+P,EAAAh2C,KAAA+jC,EAAAzC,eACA58B,KAAA6+E,WA3HA,SAAApjF,EAAA+Q,EAAA6yB,EAAAiS,GACA,IAAAuqC,EAAAuC,GAAA5xE,EAAA6yB,GACAw/C,EAAA,GACAxiC,EAAA,EA4BA,OA3BAw/B,EAAAh6E,SAAA,SAAAg5B,GACA,GAAAwE,EAAA+1C,mBAAA18E,QAAAmiC,EAAAxY,OAAA3pB,OAAA,EACA,GAAAqiF,GAAAC,qBAAA,CACA,IAAA8D,EAAA7D,GAAA3pC,EAAA+K,EAAAxhB,EAAAniC,QAAAqmF,iBACA,GAAAD,EAAApmF,OAAA,GACA,IAAAsmF,EAAAnB,GAAAhjD,GACAokD,EAAA,EACAD,EAAAn9E,SAAA,SAAAq9E,GACAL,EAAAh+E,KAAA,IAAA28E,GAAA0B,EAAAlrB,EAAAK,gBAAA54D,EAAAw/E,GAAA3pC,EAAA2tC,EAAA5iC,EAAA6iC,EAAAxmF,QAAAqmF,oBACAE,GAAAC,EAAAxmF,MACA,GACA,MAEAmmF,EAAAh+E,KAAA,IAAA28E,GAAA3iD,EAAAm5B,EAAAK,gBAAA54D,EAAAqjF,IAEA,KACA,CACA,IAAAK,EAAA7tC,EAAA8tC,UAAAvkD,EAAAniC,QACAmmF,EAAAh+E,KAAA,IAAA28E,GAAA3iD,EAAA4iD,GAAAhiF,EAAA61C,KACAA,EAAA6tC,CACA,MAEApE,GAAAC,uBACA1pC,IAAA8tC,UAAAvkD,EAAAniC,SAEA2jD,GAAAxhB,EAAAniC,MACA,IACAmmF,CACA,CA2FAQ,CAAA5jF,EAAAuE,KAAA66B,KAAAwE,EAAAiS,EACA,EAGA/P,GAAA,SAAA1G,EAAA0G,GACA,OAAAA,GACA,OACA,OAAA1G,EAAAvgC,cACA,OACA,OAAAugC,EAAAhb,QAAAy/D,GAAAC,IACA,OACA,OAAA1kD,EAAAkpC,cACA,QACA,OAAAlpC,EAEA,EACAykD,GAAA,2BACAC,GAAA,SAAAx2D,EAAAy2D,EAAAC,GACA,OAAA12D,EAAArwB,OAAA,EACA8mF,EAAAC,EAAA1b,cAEAh7C,CACA,EAEA22D,GAAA,SAAAC,GAEA,SAAAD,EAAAjkF,EAAAi/E,GACA,IAAAkF,EAAAD,EAAA36D,KAAAhlB,KAAAvE,EAAAi/E,IAAA16E,KAKA,OAJA4/E,EAAAjvD,IAAA+pD,EAAAmF,YAAAnF,EAAA/pD,IACAivD,EAAAE,eAAApF,EAAAl0B,aACAo5B,EAAAG,gBAAArF,EAAAj0B,cACAm5B,EAAAnkF,QAAAolB,MAAAywD,SAAAsO,EAAAjvD,KACAivD,CACA,CACA,OATA9tB,EAAA4tB,EAAAC,GASAD,CACA,CAXA,CAWA1H,IAEAgI,GAAA,SAAAL,GAEA,SAAAK,EAAAvkF,EAAA2gF,GACA,IAAAwD,EAAAD,EAAA36D,KAAAhlB,KAAAvE,EAAA2gF,IAAAp8E,KAIA,OAHA4/E,EAAAxD,SACAwD,EAAAE,eAAA1D,EAAApvE,MACA4yE,EAAAG,gBAAA3D,EAAAjuE,OACAyxE,CACA,CACA,OARA9tB,EAAAkuB,EAAAL,GAQAK,CACA,CAVA,CAUAhI,IAEAiI,GAAA,SAAAN,GAEA,SAAAM,EAAAxkF,EAAAi/E,GACA,IAAAkF,EAAAD,EAAA36D,KAAAhlB,KAAAvE,EAAAi/E,IAAA16E,KACA4f,EAAA,IAAAi7D,cACAvC,EAAA5jB,EAAAj5D,EAAAi/E,GAOA,OANAA,EAAA3qD,aAAA,QAAAuoD,EAAAtrE,MAAA,MACA0tE,EAAA3qD,aAAA,SAAAuoD,EAAAnqE,OAAA,MACAyxE,EAAAvF,IAAA,sBAAApvD,mBAAArL,EAAAk7D,kBAAAJ,IACAkF,EAAAE,eAAApF,EAAA1tE,MAAAkzE,QAAA1zE,MACAozE,EAAAG,gBAAArF,EAAAvsE,OAAA+xE,QAAA1zE,MACAozE,EAAAnkF,QAAAolB,MAAAywD,SAAAsO,EAAAvF,KACAuF,CACA,CACA,OAbA9tB,EAAAmuB,EAAAN,GAaAM,CACA,CAfA,CAeAjI,IAEAmI,GAAA,SAAAR,GAEA,SAAAQ,EAAA1kF,EAAAmQ,GACA,IAAAg0E,EAAAD,EAAA36D,KAAAhlB,KAAAvE,EAAAmQ,IAAA5L,KAEA,OADA4/E,EAAApzE,MAAAZ,EAAAY,MACAozE,CACA,CACA,OANA9tB,EAAAquB,EAAAR,GAMAQ,CACA,CARA,CAQAnI,IAEAoI,GAAA,SAAAT,GAEA,SAAAS,EAAA3kF,EAAAmQ,GACA,IAAAg0E,EAAAD,EAAA36D,KAAAhlB,KAAAvE,EAAAmQ,IAAA5L,KAGA,OAFA4/E,EAAA1+D,MAAAtV,EAAAsV,MACA0+D,EAAAS,SAAA,kBAAAz0E,EAAAy0E,WAAA,IAAAz0E,EAAAy0E,SACAT,CACA,CACA,OAPA9tB,EAAAsuB,EAAAT,GAOAS,CACA,CATA,CASApI,IAEAsI,GAAA,CACA,CACA56E,KAAA,GACAw5D,MAAA,EACA91D,KAAA,KACAwL,OAAA,IAGA2rE,GAAA,CACA,CACA76E,KAAA,GACAw5D,MAAA,EACAtqD,OAAA,KAgBA4rE,GAAA,WACAC,GAAA,QACAC,GAAA,WACAC,GAAA,UACAC,GAAA,SAAAjB,GAEA,SAAAiB,EAAAnlF,EAAAs1C,GACA,IAXAO,EACA9kC,EAVA8rE,EAoBAsH,EAAAD,EAAA36D,KAAAhlB,KAAAvE,EAAAs1C,IAAA/wC,KAyBA,OAxBA4/E,EAAAl6E,KAAAqrC,EAAArrC,KAAApL,cACAslF,EAAAiB,QAAA9vC,EAAA8vC,QACAjB,EAAApzE,MAZA,KADAA,GADA8kC,EAcAP,GAbArrC,OAAAg7E,GAAA,IAAAzuE,MAAAq/B,EAAA9kC,MAAA9T,OAAA,GAAAsa,KAAA,KAAAs+B,EAAA9kC,OACA9T,OAAA44C,EAAAwvC,aAAA,GAAAt0E,EAaAozE,EAAAl6E,OAAA86E,IAAAZ,EAAAl6E,OAAA+6E,KACAb,EAAAvgD,OAAAkvC,gBAAA,WACAqR,EAAAvgD,OAAAgzC,eACAuN,EAAAvgD,OAAAizC,iBACAsN,EAAAvgD,OAAAkzC,kBACAqN,EAAAvgD,OAAAmzC,gBACA,WACAoN,EAAAvgD,OAAAyB,eACA8+C,EAAAvgD,OAAA2B,iBACA4+C,EAAAvgD,OAAA0B,kBACA6+C,EAAAvgD,OAAA4B,gBACA,EACA2+C,EAAAvgD,OAAAszC,eACAiN,EAAAvgD,OAAAuzC,iBACAgN,EAAAvgD,OAAAwzC,kBACA+M,EAAAvgD,OAAAyzC,gBACA,EACA8M,EAAAvgD,OAAAivC,eAAA,IACAsR,EAAAvgD,OAAAuyC,iBAAA,IACAgO,EAAAtH,QA3CAA,EA2CAsH,EAAAtH,QA1CAtrE,MAAAsrE,EAAAnqE,OACA,IAAA6lD,EAAAskB,EAAA7xE,MAAA6xE,EAAAtrE,MAAAsrE,EAAAnqE,QAAA,EAAAmqE,EAAA5xE,IAAA4xE,EAAAnqE,OAAAmqE,EAAAnqE,QAEAmqE,EAAAtrE,MAAAsrE,EAAAnqE,OACA,IAAA6lD,EAAAskB,EAAA7xE,KAAA6xE,EAAA5xE,KAAA4xE,EAAAnqE,OAAAmqE,EAAAtrE,OAAA,EAAAsrE,EAAAtrE,MAAAsrE,EAAAtrE,OAEAsrE,GAsCAsH,EAAAl6E,MACA,KAAA86E,GACAZ,EAAAvgD,OAAAuC,qBACAg+C,EAAAvgD,OAAAsC,oBACAi+C,EAAAvgD,OAAAyC,wBACA89C,EAAAvgD,OAAAwC,uBACAy+C,GACA,MACA,KAAAG,GACAb,EAAAvgD,OAAAuC,qBACAg+C,EAAAvgD,OAAAsC,oBACAi+C,EAAAvgD,OAAAyC,wBACA89C,EAAAvgD,OAAAwC,uBACA0+C,GAGA,OAAAX,CACA,CACA,OA7CA9tB,EAAA8uB,EAAAjB,GA6CAiB,CACA,CA/CA,CA+CA5I,IAEA+I,GAAA,SAAApB,GAEA,SAAAoB,EAAAtlF,EAAAmQ,GACA,IAAAg0E,EAAAD,EAAA36D,KAAAhlB,KAAAvE,EAAAmQ,IAAA5L,KACAizC,EAAArnC,EAAAuX,QAAAvX,EAAAo1E,eAAA,GAEA,OADApB,EAAApzE,MAAAymC,KAAApY,MAAA,GACA+kD,CACA,CACA,OAPA9tB,EAAAivB,EAAApB,GAOAoB,CACA,CATA,CASA/I,IAEAiJ,GAAA,SAAAtB,GAEA,SAAAsB,EAAAxlF,EAAAmQ,GACA,IAAAg0E,EAAAD,EAAA36D,KAAAhlB,KAAAvE,EAAAmQ,IAAA5L,KAEA,OADA4/E,EAAApzE,MAAAZ,EAAAY,MACAozE,CACA,CACA,OANA9tB,EAAAmvB,EAAAtB,GAMAsB,CACA,CARA,CAQAjJ,IAEAkJ,GAAA,SAAAvB,GAEA,SAAAuB,EAAAzlF,EAAA0lF,GACA,IAAAvB,EAAAD,EAAA36D,KAAAhlB,KAAAvE,EAAA0lF,IAAAnhF,KACA4/E,EAAAjvD,IAAAwwD,EAAAxwD,IACAivD,EAAA5yE,MAAAkM,SAAAioE,EAAAn0E,MAAA,OACA4yE,EAAAzxE,OAAA+K,SAAAioE,EAAAhzE,OAAA,OACAyxE,EAAArR,gBAAAqR,EAAAvgD,OAAAkvC,gBACA,IACA,GAAA4S,EAAApwD,eACAowD,EAAApwD,cAAA74B,UACAipF,EAAApwD,cAAA74B,SAAAqgB,gBAAA,CACAqnE,EAAAwB,KAAAC,GAAA5lF,EAAA0lF,EAAApwD,cAAA74B,SAAAqgB,iBAEA,IAAA+oE,EAAAH,EAAApwD,cAAA74B,SAAAqgB,gBACA0sD,GAAAxpE,EAAA08E,iBAAAgJ,EAAApwD,cAAA74B,SAAAqgB,iBAAAg2D,iBACAzK,GAAAE,YACAud,EAAAJ,EAAApwD,cAAA74B,SAAAi4B,KACA80C,GAAAxpE,EAAA08E,iBAAAgJ,EAAApwD,cAAA74B,SAAAi4B,MAAAo+C,iBACAzK,GAAAE,YACA4b,EAAArR,gBAAAtK,GAAAqd,GACArd,GAAAsd,GACA3B,EAAAvgD,OAAAkvC,gBACAgT,EACAD,CACA,CACA,CACA,MAAAhpE,GAAA,CACA,OAAAsnE,CACA,CACA,OA7BA9tB,EAAAovB,EAAAvB,GA6BAuB,CACA,CA/BA,CA+BAlJ,IAEAwJ,GAAA,mBACAC,GAAA,SAAAhmF,EAAA61C,EAAAzrC,EAAA67E,GACA,QAAAC,EAAArwC,EAAArgB,WAAA2wD,OAAA,EAAAD,IAAAC,EAEA,GADAA,EAAAD,EAAAE,YACAC,GAAAH,MAAArmF,KAAA+mB,OAAA3pB,OAAA,EACAmN,EAAAoyE,UAAAp3E,KAAA,IAAA+9E,GAAAnjF,EAAAkmF,EAAA97E,EAAAw5B,cAEA,GAAA0iD,GAAAJ,GACA,GAAAK,GAAAL,MAAAM,cACAN,EAAAM,gBAAApgF,SAAA,SAAA8/E,GAAA,OAAAF,GAAAhmF,EAAAkmF,EAAA97E,EAAA67E,EAAA,QAEA,CACA,IAAAp+C,EAAA4+C,GAAAzmF,EAAAkmF,GACAr+C,EAAAjE,OAAA52B,cACA05E,GAAAR,EAAAr+C,EAAAo+C,GACAp+C,EAAA47B,OAAA,EAEAkjB,GAAA9+C,EAAAjE,UACAiE,EAAA47B,OAAA,IAEA,IAAAsiB,GAAA1oF,QAAA6oF,EAAAxwC,WACA7N,EAAA47B,OAAA,GAEAr5D,EAAAqyE,SAAAr3E,KAAAyiC,GACAq+C,EAAAU,KACAV,EAAAW,WACAb,GAAAhmF,EAAAkmF,EAAAW,WAAAh/C,EAAAo+C,GAEAa,GAAAZ,IACAa,GAAAb,IACAc,GAAAd,IACAF,GAAAhmF,EAAAkmF,EAAAr+C,EAAAo+C,GAGA,CAGA,EACAQ,GAAA,SAAAzmF,EAAAmQ,GACA,OAAA82E,GAAA92E,GACA,IAAA8zE,GAAAjkF,EAAAmQ,GAEA+2E,GAAA/2E,GACA,IAAAo0E,GAAAvkF,EAAAmQ,GAEA42E,GAAA52E,GACA,IAAAq0E,GAAAxkF,EAAAmQ,GAEAg3E,GAAAh3E,GACA,IAAAu0E,GAAA1kF,EAAAmQ,GAEAi3E,GAAAj3E,GACA,IAAAw0E,GAAA3kF,EAAAmQ,GAEAk3E,GAAAl3E,GACA,IAAAg1E,GAAAnlF,EAAAmQ,GAEA62E,GAAA72E,GACA,IAAAm1E,GAAAtlF,EAAAmQ,GAEA22E,GAAA32E,GACA,IAAAq1E,GAAAxlF,EAAAmQ,GAEAm3E,GAAAn3E,GACA,IAAAs1E,GAAAzlF,EAAAmQ,GAEA,IAAAosE,GAAAv8E,EAAAmQ,EACA,EACAy1E,GAAA,SAAA5lF,EAAAmQ,GACA,IAAA03B,EAAA4+C,GAAAzmF,EAAAmQ,GAGA,OAFA03B,EAAA47B,OAAA,EACAuiB,GAAAhmF,EAAAmQ,EAAA03B,KACAA,CACA,EACA6+C,GAAA,SAAA7wC,EAAAhO,EAAAo+C,GACA,OAAAp+C,EAAAjE,OAAA+3C,0BACA9zC,EAAAjE,OAAAjC,QAAA,GACAkG,EAAAjE,OAAA63C,iBACA8L,GAAA1xC,IAAAowC,EAAAriD,OAAA4kC,eACA,EACAme,GAAA,SAAA/iD,GAAA,OAAAA,EAAA83C,gBAAA93C,EAAAg4C,YAAA,EACAyK,GAAA,SAAAxwC,GAAA,OAAAA,EAAAE,WAAAC,KAAAC,SAAA,EACAqwC,GAAA,SAAAzwC,GAAA,OAAAA,EAAAE,WAAAC,KAAAG,YAAA,EACAwmC,GAAA,SAAA9mC,GACA,OAAAywC,GAAAzwC,SAAA,IAAAA,EAAArV,QAAAgnD,GAAA3xC,EACA,EACA2xC,GAAA,SAAAr3E,GACA,uBAAAA,EAAAk0B,SACA,EACA8iD,GAAA,SAAAtxC,GAAA,aAAAA,EAAAH,OAAA,EACA0xC,GAAA,SAAAvxC,GAAA,aAAAA,EAAAH,OAAA,EACA2xC,GAAA,SAAAxxC,GAAA,gBAAAA,EAAAH,OAAA,EAEAqxC,GAAA,SAAAlxC,GAAA,cAAAA,EAAAH,OAAA,EACA6xC,GAAA,SAAA1xC,GAAA,eAAAA,EAAAH,OAAA,EACAwxC,GAAA,SAAArxC,GAAA,iBAAAA,EAAAH,OAAA,EACA+xC,GAAA,SAAA5xC,GAAA,gBAAAA,EAAAH,OAAA,EACAuxC,GAAA,SAAApxC,GAAA,cAAAA,EAAAH,OAAA,EACA4xC,GAAA,SAAAzxC,GAAA,iBAAAA,EAAAH,OAAA,EACAgyC,GAAA,SAAA7xC,GAAA,gBAAAA,EAAAH,OAAA,EAEAoxC,GAAA,SAAAjxC,GAAA,mBAAAA,EAAAH,OAAA,EACAsxC,GAAA,SAAAnxC,GAAA,iBAAAA,EAAAH,OAAA,EACA6wC,GAAA,SAAA1wC,GAAA,eAAAA,EAAAH,OAAA,EAEAiyC,GAAA,SAAA9xC,GAAA,OAAAA,EAAAH,QAAAr4C,QAAA,QAEAuqF,GAAA,WACA,SAAAA,IACArjF,KAAAsjF,SAAA,EACA,CA8CA,OA7CAD,EAAAtjF,UAAAwjF,gBAAA,SAAAjrF,GACA,IAAAs9E,EAAA51E,KAAAsjF,SAAAhrF,GACA,OAAAs9E,KAAAl9E,OACAk9E,IAAAl9E,OAAA,GAEA,CACA,EACA2qF,EAAAtjF,UAAAyjF,iBAAA,SAAAlrF,GACA,IAAAs9E,EAAA51E,KAAAsjF,SAAAhrF,GACA,OAAAs9E,GAAA,EACA,EACAyN,EAAAtjF,UAAAwU,IAAA,SAAA+uE,GACA,IAAA1D,EAAA5/E,KACAsjF,EAAAzhF,SAAA,SAAA+zE,GAAA,OAAAgK,EAAA0D,SAAA1N,GAAArhE,KAAA,GACA,EACA8uE,EAAAtjF,UAAA8T,MAAA,SAAAooB,GACA,IAAA2jD,EAAA5/E,KACAy1E,EAAAx5C,EAAAw5C,iBACAK,EAAA75C,EAAA65C,aACA2N,GAAA,EACA,OAAAhO,GACAA,EAAA5zE,SAAA,SAAA6hF,GACA,IAAA9N,EAAAgK,EAAA0D,SAAAI,EAAA9N,SACAA,GAAA,IAAA8N,EAAA7N,YACA4N,GAAA,EACA7N,EAAAl9E,QACAk9E,EAAA/0E,KAAA,GAEA+0E,EAAA7gE,KAAAoiB,IAAA,EAAAy+C,EAAAl9E,OAAA,KAAAgrF,EAAA7N,UAEA,IAEA,IAAA8N,EAAA,GAWA,OAVAF,GACA3N,EAAAj0E,SAAA,SAAA6hF,GACA,IAAA9N,EAAAgK,EAAA0D,SAAAI,EAAA9N,SACA+N,EAAA9iF,KAAA6iF,EAAA9N,SACAA,IACAA,EAAAgK,EAAA0D,SAAAI,EAAA9N,SAAA,IAEAA,EAAA/0E,KAAA6iF,EAAA1N,MACA,IAEA2N,CACA,EACAN,CACA,CAlDA,GAmDAO,GAAA,CACAjnB,SAAA,0CACA9rD,OAAA,6DAEAgzE,GAAA,CACAlnB,SAAA,CACA,iFACA,qCAEA9rD,OAAA,CACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MAGAizE,GAAA,CACAnnB,SAAA,CACA,gFACA,qCAEA9rD,OAAA,CACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MAGAkzE,GAAA,CACApnB,SAAA,CACA,+EACA,2CAEA9rD,OAAA,CACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MAGAmzE,GAAA,SAAAx3E,EAAA6lB,EAAA8E,EAAA8sD,EAAAx1B,EAAAy1B,GACA,OAAA13E,EAAA6lB,GAAA7lB,EAAA2qB,EACAgtD,GAAA33E,EAAAiiD,EAAAy1B,EAAAxrF,OAAA,GAEAurF,EAAAtnB,SAAA55D,QAAA,SAAAuO,EAAAD,EAAA7P,GACA,KAAAgL,GAAA6E,GACA7E,GAAA6E,EACAC,GAAA2yE,EAAApzE,OAAArP,GAEA,OAAA8P,CACA,OAAA4yE,CACA,EACAE,GAAA,SAAA53E,EAAA63E,EAAAn9C,EAAAo9C,GACA,IAAAhzE,EAAA,GACA,GACA41B,GACA16B,IAEA8E,EAAAgzE,EAAA93E,GAAA8E,EACA9E,GAAA63E,QACA73E,EAAA63E,MACA,OAAA/yE,CACA,EACAizE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,EAAA,CACAR,KAAA50C,EACA60C,OAAA70C,EACA2jC,OAAA3jC,EACAm1C,UAAA,OAEAE,EAAA,CACAT,KAAA50C,EACA60C,OAAA70C,EACA2jC,OAAA3jC,EACAm1C,UAAA,MACAH,aAAAxnF,GAEA8nF,EAAA,CACAV,KAAA50C,EACA60C,OAAA70C,EACA2jC,OAAA3jC,EACAm1C,UAAA,MACAH,aAAArzC,GAEA4zC,EAAA,CACApB,KAAAn0C,EACAo0C,MAAAp0C,EACAq0C,IAAAr0C,EACA40C,KAAA50C,EACA60C,OAAA70C,GAEAw1C,EAAA,CACArB,KAAAn0C,EACAo0C,MAAAp0C,EACAq0C,IAAAr0C,EACA40C,KAAA50C,EACA60C,OAAA70C,EACA2jC,OAAA3jC,GAEAy1C,EAAA,CACAtB,KAAAn0C,EACAo0C,MAAA5mF,EACA6mF,IAAAr0C,EACA40C,KAAA50C,EACA60C,OAAA70C,GAEA01C,EAAA,CACAvB,KAAAn0C,EACAo0C,MAAA5mF,EACA6mF,IAAAr0C,EACA40C,KAAA50C,EACA60C,OAAA70C,EACA2jC,OAAA3jC,GAEA21C,EAAA,CACAxB,KAAAn0C,EACAo0C,MAAA5mF,EACA6mF,IAAAr0C,EACAw0C,QAAAhnF,EACAonF,KAAA50C,EACA60C,OAAA70C,GAEA41C,EAAA,CACAzB,KAAAn0C,EACAo0C,MAAAzyC,EACA0yC,IAAAr0C,EACA40C,KAAA50C,EACA60C,OAAA70C,EACAg1C,aAAAxnF,GAEAqoF,EAAA,CACA1B,KAAAn0C,EACAo0C,MAAAzyC,EACA0yC,IAAAr0C,EACA40C,KAAA50C,EACA60C,OAAA70C,EACA2jC,OAAA3jC,EACAg1C,aAAAxnF,GAEAsoF,EAAA,CACA3B,KAAAn0C,EACAo0C,MAAAzyC,EACA0yC,IAAAr0C,EACAw0C,QAAA7yC,EACAizC,KAAA50C,EACA60C,OAAA70C,EACAg1C,aAAArzC,GAEAo0C,EAAA,CACA5B,KAAAn0C,EACAo0C,MAAAzyC,EACA0yC,IAAAr0C,EACAw0C,QAAA7yC,EACAizC,KAAA50C,EACA60C,OAAA70C,EACA2jC,OAAA3jC,EACAg1C,aAAArzC,GAMAq0C,EAAA,WACA,SAAAA,IAAA,CACA,IAAAC,EAAAD,EAAAroG,UAsGA,OA5FAsoG,EAAAC,WAAA,SAAAC,EAAAjJ,GACA,UAAA8G,CACA,EAUAiC,EAAAG,aAAA,SAAAD,EAAA5oF,GACA,UAAAymF,CACA,EAQAiC,EAAAhsD,OAAA,SAAAksD,GACA,UAAAnC,CACA,EAQAiC,EAAAI,OAAA,SAAAC,GACA,UAAAtC,CACA,EAOApD,EAAAoF,EAAA,EACAx3F,IAAA,OACAvY,IAMA,WACA,UAAA+tG,CACA,GAOA,CACAx1F,IAAA,OACAvY,IAAA,WACA,UAAA+tG,CACA,GAQA,CACAx1F,IAAA,WACAvY,IAAA,WACA,OAAA2H,KAAA1H,IACA,GAOA,CACAsY,IAAA,cACAvY,IAAA,WACA,UAAA+tG,CACA,GACA,CACAx1F,IAAA,UACAvY,IAAA,WACA,UAAA+tG,CACA,KAEAgC,CACA,CAzGA,GA2GAO,EAAA,KAMAC,EAAA,SAAAC,GAEA,SAAAD,IACA,OAAAC,EAAA5nG,MAAAjB,KAAAkB,YAAAlB,IACA,CAHAqjG,EAAAuF,EAAAC,GAIA,IAAAR,EAAAO,EAAA7oG,UA+DA,OA7DAsoG,EAAAC,WAAA,SAAAC,EAAAO,GAGA,OAAAC,GAAAR,EAFAO,EAAAnpF,OACAmpF,EAAAE,OAEA,EAGAX,EAAAG,aAAA,SAAAD,EAAA5oF,GACA,OAAA6oF,GAAAxoG,KAAAq8C,OAAAksD,GAAA5oF,EACA,EAGA0oF,EAAAhsD,OAAA,SAAAksD,GACA,WAAAxwG,KAAAwwG,GAAAU,mBACA,EAGAZ,EAAAI,OAAA,SAAAC,GACA,iBAAAA,EAAAhjG,IACA,EAGAs9F,EAAA4F,EAAA,EACAh4F,IAAA,OACAvY,IACA,WACA,cACA,GAGA,CACAuY,IAAA,OACAvY,IAAA,WACA,WAAAilF,KAAA4rB,gBAAAC,kBAAAC,QACA,GAGA,CACAx4F,IAAA,cACAvY,IAAA,WACA,QACA,GACA,CACAuY,IAAA,UACAvY,IAAA,WACA,QACA,IACA,EACAuY,IAAA,WACAvY,IAKA,WAIA,OAHA,OAAAswG,IACAA,EAAA,IAAAC,GAEAD,CACA,KAEAC,CACA,CArEA,CAqEAR,GAEAiB,EAAA,GAiBA,IAAAC,EAAA,CACA/C,KAAA,EACAC,MAAA,EACAC,IAAA,EACA8C,IAAA,EACAvC,KAAA,EACAC,OAAA,EACAlR,OAAA,GA8BA,IAAAyT,EAAA,GAKAC,EAAA,SAAAZ,GAuDA,SAAAY,EAAAnxG,GACA,IAAAsnF,EAMA,OALAA,EAAAipB,EAAA7jF,KAAAhlB,aAEA0pG,SAAApxG,EAEAsnF,EAAA+pB,MAAAF,EAAAG,YAAAtxG,GACAsnF,CACA,CA9DAyjB,EAAAoG,EAAAZ,GAKAY,EAAA/4F,OAAA,SAAApY,GAIA,OAHAkxG,EAAAlxG,KACAkxG,EAAAlxG,GAAA,IAAAmxG,EAAAnxG,IAEAkxG,EAAAlxG,EACA,EAMAmxG,EAAAI,WAAA,WACAL,EAAA,GACAH,EAAA,EACA,EAUAI,EAAAK,iBAAA,SAAAlqF,GACA,OAAA5f,KAAA4pG,YAAAhqF,EACA,EAUA6pF,EAAAG,YAAA,SAAAG,GACA,IAAAA,EACA,SAEA,IAIA,OAHA,IAAAzsB,KAAA4rB,eAAA,SACAE,SAAAW,IACApqF,UACA,CACA,OAAArH,GACA,QACA,CACA,EAgBA,IAAA+vF,EAAAoB,EAAA1pG,UAoHA,OA1GAsoG,EAAAC,WAAA,SAAAC,EAAAO,GAGA,OAAAC,GAAAR,EAFAO,EAAAnpF,OACAmpF,EAAAE,OACAhpG,KAAA1H,KACA,EAUA+vG,EAAAG,aAAA,SAAAD,EAAA5oF,GACA,OAAA6oF,GAAAxoG,KAAAq8C,OAAAksD,GAAA5oF,EACA,EAQA0oF,EAAAhsD,OAAA,SAAAksD,GACA,IAAAyB,EAAA,IAAAjyG,KAAAwwG,GACA,GAAA0B,MAAAD,GAAA,OAAAE,IACA,IArKAH,EAqKAI,GArKAJ,EAqKA/pG,KAAA1H,KApKA+wG,EAAAU,KACAV,EAAAU,GAAA,IAAAzsB,KAAA4rB,eAAA,SACAkB,QAAA,EACAhB,SAAAW,EACAxD,KAAA,UACAC,MAAA,UACAC,IAAA,UACAO,KAAA,UACAC,OAAA,UACAlR,OAAA,UACAwT,IAAA,WAGAF,EAAAU,IAwJAM,EAAAF,EAAAG,cAjIA,SAAAH,EAAAH,GAGA,IAFA,IAAAz0F,EAAA40F,EAAAG,cAAAN,GACAO,EAAA,GACA9xG,EAAA,EAAAA,EAAA8c,EAAA7c,OAAAD,IAAA,CACA,IAAA+xG,EAAAj1F,EAAA9c,GACAiN,EAAA8kG,EAAA9kG,KACA8G,EAAAg+F,EAAAh+F,MACAi/C,EAAA69C,EAAA5jG,GACA,QAAAA,EACA6kG,EAAA9+C,GAAAj/C,EACAmK,GAAA80C,KACA8+C,EAAA9+C,GAAAvyC,SAAA1M,EAAA,IAEA,CACA,OAAA+9F,CACA,CAkHAE,CAAAN,EAAAH,GA7IA,SAAAG,EAAAH,GACA,IAAAz0F,EAAA40F,EAAAxqF,OAAAqqF,GAAAnqF,QAAA,cACA6qF,EAAA,kDAAAlrF,KAAAjK,GACAo1F,EAAAD,EAAA,GACAE,EAAAF,EAAA,GAMA,OALAA,EAAA,GAKAC,EAAAC,EAJAF,EAAA,GACAA,EAAA,GACAA,EAAA,GACAA,EAAA,GAEA,CAkIAG,CAAAV,EAAAH,GACAzD,EAAA8D,EAAA,GACA7D,EAAA6D,EAAA,GACA5D,EAAA4D,EAAA,GACAS,EAAAT,EAAA,GACArD,EAAAqD,EAAA,GACApD,EAAAoD,EAAA,GACAtU,EAAAsU,EAAA,GACA,OAAAS,IACAvE,EAAA,EAAAxxF,KAAAD,IAAAyxF,IAIA,IAUAwE,GAAAf,EACAgB,EAAAD,EAAA,IAEA,OAZAE,GAAA,CACA1E,OACAC,QACAC,MACAO,KALA,KAAAA,EAAA,EAAAA,EAMAC,SACAlR,SACAmV,YAAA,KAIAH,GAAAC,GAAA,EAAAA,EAAA,IAAAA,IACA,GACA,EAQA3C,EAAAI,OAAA,SAAAC,GACA,eAAAA,EAAAhjG,MAAAgjG,EAAApwG,OAAA0H,KAAA1H,IACA,EAOA0qG,EAAAyG,EAAA,EACA74F,IAAA,OACAvY,IAAA,WACA,YACA,GAOA,CACAuY,IAAA,OACAvY,IAAA,WACA,OAAA2H,KAAA0pG,QACA,GAQA,CACA94F,IAAA,cACAvY,IAAA,WACA,QACA,GACA,CACAuY,IAAA,UACAvY,IAAA,WACA,OAAA2H,KAAA2pG,KACA,KAEAF,CACA,CA3LA,CA2LArB,GAEA+C,EAAA,SACAC,GAAA,kBAIAC,GAAA,GAaA,IAAAC,GAAA,GACA,SAAAC,GAAAC,EAAAlM,QACA,IAAAA,IACAA,EAAA,IAEA,IAAA1uF,EAAAgD,KAAAE,UAAA,CAAA03F,EAAAlM,IACA6K,EAAAmB,GAAA16F,GAKA,OAJAu5F,IACAA,EAAA,IAAA7sB,KAAA4rB,eAAAsC,EAAAlM,GACAgM,GAAA16F,GAAAu5F,GAEAA,CACA,CACA,IAAAsB,GAAA,GAaA,IAAAC,GAAA,GAgBA,IAAAC,GAAA,KASA,IAAAC,GAAA,GA+EA,SAAAC,GAAAC,EAAApzG,EAAAqzG,EAAAC,GACA,IAAAC,EAAAH,EAAAI,cACA,gBAAAD,EACA,KACA,OAAAA,EACAF,EAAArzG,GAEAszG,EAAAtzG,EAEA,CAYA,IAAAyzG,GAAA,WACA,SAAAA,EAAAC,EAAAC,EAAA/M,GACAt/F,KAAAssG,MAAAhN,EAAAgN,OAAA,EACAtsG,KAAAqV,MAAAiqF,EAAAjqF,QAAA,EACAiqF,EAAAgN,MACAhN,EAAAjqF,MACA,IAAAk3F,EAAAjI,EAAAhF,EAAA8L,IACA,IAAAiB,GAAAnsG,OAAAyP,KAAA48F,GAAA7zG,OAAA,GACA,IAAA8zG,EAAApJ,EAAA,CACAqJ,aAAA,GACAnN,GACAA,EAAAgN,MAAA,IAAAE,EAAAE,qBAAApN,EAAAgN,OACAtsG,KAAA2sG,IArJA,SAAAnB,EAAAlM,QACA,IAAAA,IACAA,EAAA,IAEA,IAAA1uF,EAAAgD,KAAAE,UAAA,CAAA03F,EAAAlM,IACAqN,EAAAlB,GAAA76F,GAKA,OAJA+7F,IACAA,EAAA,IAAArvB,KAAAsvB,aAAApB,EAAAlM,GACAmM,GAAA76F,GAAA+7F,GAEAA,CACA,CA0IAE,CAAAT,EAAAI,EACA,CACA,CAYA,OAXAL,EAAApsG,UACA4f,OAAA,SAAAlnB,GACA,GAAAuH,KAAA2sG,IAAA,CACA,IAAAG,EAAA9sG,KAAAqV,MAAAN,KAAAM,MAAA5c,KACA,OAAAuH,KAAA2sG,IAAAhtF,OAAAmtF,EACA,CAGA,OAAAC,GADA/sG,KAAAqV,MAAAN,KAAAM,MAAA5c,GAAAu0G,GAAAv0G,EAAA,GACAuH,KAAAssG,MAEA,EACAH,CACA,CA3BA,GA+BAc,GAAA,WACA,SAAAA,EAAAC,EAAAd,EAAA9M,GACAt/F,KAAAs/F,OACAt/F,KAAAmtG,kBAAA/mG,EACA,IAAAgnG,OAAAhnG,EACA,GAAApG,KAAAs/F,KAAA8J,SAEAppG,KAAAktG,UACA,aAAAA,EAAAnD,KAAArkG,KAAA,CAOA,IAAA2nG,EAAAH,EAAA7wD,OAAA,MACAixD,EAAAD,GAAA,aAAAA,EAAA,UAAAA,EACA,IAAAH,EAAA7wD,QAAAotD,EAAA/4F,OAAA48F,GAAA3D,OACAyD,EAAAE,EACAttG,KAAAktG,OAIAE,EAAA,MACAptG,KAAAktG,GAAA,IAAAA,EAAA7wD,OAAA6wD,IAAAK,QAAA,OAAAC,KAAA,CACAC,QAAAP,EAAA7wD,SAEAr8C,KAAAmtG,aAAAD,EAAAnD,KAEA,gBAAAmD,EAAAnD,KAAArkG,KACA1F,KAAAktG,KACA,SAAAA,EAAAnD,KAAArkG,MACA1F,KAAAktG,KACAE,EAAAF,EAAAnD,KAAAzxG,OAIA80G,EAAA,MACAptG,KAAAktG,KAAAK,QAAA,OAAAC,KAAA,CACAC,QAAAP,EAAA7wD,SAEAr8C,KAAAmtG,aAAAD,EAAAnD,MAEA,IAAAyC,EAAApJ,EAAA,GAAApjG,KAAAs/F,MACAkN,EAAApD,SAAAoD,EAAApD,UAAAgE,EACAptG,KAAAmqG,IAAAoB,GAAAa,EAAAI,EACA,CACA,IAAAkB,EAAAT,EAAAltG,UAmCA,OAlCA2tG,EAAA/tF,OAAA,WACA,OAAA3f,KAAAmtG,aAGAntG,KAAAsqG,gBAAApjG,KAAA,SAAA4hG,GAEA,OADAA,EAAAt8F,KAEA,IAAAwG,KAAA,IAEAhT,KAAAmqG,IAAAxqF,OAAA3f,KAAAktG,GAAAS,WACA,EACAD,EAAApD,cAAA,WACA,IAAA1qB,EAAA5/E,KACA4tG,EAAA5tG,KAAAmqG,IAAAG,cAAAtqG,KAAAktG,GAAAS,YACA,OAAA3tG,KAAAmtG,aACAS,EAAA1mG,KAAA,SAAA2mG,GACA,uBAAAA,EAAAnoG,KAKA09F,EAAA,GAAAyK,EAAA,CACArhG,MALAozE,EAAAutB,aAAA7E,WAAA1oB,EAAAstB,GAAA3E,GAAA,CACAS,OAAAppB,EAAAstB,GAAAlE,OACArpF,OAAAigE,EAAA0f,KAAA8H,iBAMAyG,CAEA,IAEAD,CACA,EACAF,EAAAvE,gBAAA,WACA,OAAAnpG,KAAAmqG,IAAAhB,iBACA,EACA8D,CACA,CAnFA,GAuFAa,GAAA,WACA,SAAAA,EAAA1B,EAAA2B,EAAAzO,GACAt/F,KAAAs/F,KAAA8D,EAAA,CACAnnE,MAAA,QACAqjE,IACAyO,GAAAC,OACAhuG,KAAAiuG,IAxPA,SAAAzC,EAAAlM,QACA,IAAAA,IACAA,EAAA,IAEA,IAAA4O,EAAA5O,EACA4O,EAAAC,KACA,IAAAC,EAAA9J,EAAA4J,EAAA/C,GACAv6F,EAAAgD,KAAAE,UAAA,CAAA03F,EAAA4C,IACAzB,EAAAjB,GAAA96F,GAKA,OAJA+7F,IACAA,EAAA,IAAArvB,KAAA+wB,mBAAA7C,EAAAlM,GACAoM,GAAA96F,GAAA+7F,GAEAA,CACA,CA0OA2B,CAAAlC,EAAA9M,GAEA,CACA,IAAAiP,EAAAT,EAAA/tG,UAeA,OAdAwuG,EAAA5uF,OAAA,SAAAwO,EAAA/kB,GACA,OAAApJ,KAAAiuG,IACAjuG,KAAAiuG,IAAAtuF,OAAAwO,EAAA/kB,GAq1CA,SAAAA,EAAA+kB,EAAAqgF,EAAAC,QACA,IAAAD,IACAA,EAAA,eAEA,IAAAC,IACAA,GAAA,GAEA,IAAAC,EAAA,CACAC,MAAA,eACAC,SAAA,mBACAC,OAAA,gBACAC,MAAA,eACAC,KAAA,qBACAC,MAAA,eACAvB,QAAA,kBACAwB,QAAA,mBAEAC,GAAA,kCAAAp2G,QAAAsQ,GACA,YAAAolG,GAAAU,EAAA,CACA,IAAAC,EAAA,SAAA/lG,EACA,OAAA+kB,GACA,OACA,OAAAghF,EAAA,mBAAAT,EAAAtlG,GAAA,GACA,OACA,OAAA+lG,EAAA,oBAAAT,EAAAtlG,GAAA,GACA,OACA,OAAA+lG,EAAA,gBAAAT,EAAAtlG,GAAA,GAEA,CAEA,IAAAgmG,EAAAlvG,OAAAokC,GAAAnW,GAAA,IAAAA,EAAA,EACAkhF,EAAAt6F,KAAAD,IAAAqZ,GACAmhF,EAAA,IAAAD,EACAE,EAAAb,EAAAtlG,GACAomG,EAAAf,EAAAa,EAAAC,EAAA,GAAAA,EAAA,IAAAA,EAAA,GAAAD,EAAAZ,EAAAtlG,GAAA,GAAAA,EACA,OAAAgmG,EAAAC,EAAA,IAAAG,EAAA,aAAAH,EAAA,IAAAG,CACA,CAv3CAC,CAAArmG,EAAA+kB,EAAAnuB,KAAAs/F,KAAAkP,QAAA,SAAAxuG,KAAAs/F,KAAArjE,MAEA,EACAsyE,EAAAjE,cAAA,SAAAn8E,EAAA/kB,GACA,OAAApJ,KAAAiuG,IACAjuG,KAAAiuG,IAAA3D,cAAAn8E,EAAA/kB,GAEA,EAEA,EACA0kG,CACA,CAzBA,GA0BA4B,GAAA,CACAC,SAAA,EACAC,YAAA,EACAC,QAAA,OAMAC,GAAA,WA8BA,SAAAA,EAAA9G,EAAA5U,EAAA2b,EAAAC,EAAAC,GACA,IAAAC,EAjRA,SAAAC,GAYA,IAAAC,EAAAD,EAAAr3G,QAAA,QACA,IAAAs3G,IACAD,IAAAt3G,UAAA,EAAAu3G,IAEA,IAIAjtF,EACAktF,EALAC,EAAAH,EAAAr3G,QAAA,OACA,QAAAw3G,EACA,OAAAH,GAIA,IACAhtF,EAAAooF,GAAA4E,GAAAhH,kBACAkH,EAAAF,CACA,OAAA73F,GACA,IAAAi4F,EAAAJ,EAAAt3G,UAAA,EAAAy3G,GACAntF,EAAAooF,GAAAgF,GAAApH,kBACAkH,EAAAE,CACA,CACA,IAAAjkB,EAAAnpE,EAGA,OAAAktF,EAFA/jB,EAAAkkB,gBACAlkB,EAAAmkB,SAGA,CA8OAC,CAAA1H,GACA2H,EAAAT,EAAA,GACAU,EAAAV,EAAA,GACAW,EAAAX,EAAA,GACAlwG,KAAAgpG,OAAA2H,EACA3wG,KAAAwwG,gBAAApc,GAAAwc,GAAA,KACA5wG,KAAA+vG,kBAAAc,GAAA,KACA7wG,KAAAgwG,eACAhwG,KAAAosG,KArPA,SAAA+D,EAAAK,EAAAT,GACA,OAAAA,GAAAS,GACAL,EAAAnlD,SAAA,SACAmlD,GAAA,MAEAJ,IACAI,GAAA,OAAAJ,GAEAS,IACAL,GAAA,OAAAK,GAEAL,GAEAA,CAEA,CAsOAW,CAAA9wG,KAAAgpG,OAAAhpG,KAAAwwG,gBAAAxwG,KAAA+vG,gBACA/vG,KAAA+wG,cAAA,CACApxF,OAAA,GACAqxF,WAAA,IAEAhxG,KAAAixG,YAAA,CACAtxF,OAAA,GACAqxF,WAAA,IAEAhxG,KAAAkxG,cAAA,KACAlxG,KAAAmxG,SAAA,GACAnxG,KAAAiwG,kBACAjwG,KAAAoxG,kBAAA,IACA,CAnDAtB,EAAAuB,SAAA,SAAA/R,GACA,OAAAwQ,EAAAp/F,OAAA4uF,EAAA0J,OAAA1J,EAAAkR,gBAAAlR,EAAAyQ,eAAAzQ,EAAA0Q,aAAA1Q,EAAAgS,YACA,EACAxB,EAAAp/F,OAAA,SAAAs4F,EAAAwH,EAAAT,EAAAC,EAAAsB,QACA,IAAAA,IACAA,GAAA,GAEA,IAAArB,EAAAjH,GAAAuI,GAAAC,cAMA,WAAA1B,EAJAG,IAAAqB,EAAA,QA9QA3F,KAGAA,IAAA,IAAAruB,KAAA4rB,gBAAAC,kBAAAH,SA4QAwH,GAAAe,GAAAE,uBACA1B,GAAAwB,GAAAG,sBACAC,GAAA3B,IAAAuB,GAAAK,oBACA3B,EACA,EACAH,EAAAjG,WAAA,WACA8B,GAAA,KACAL,GAAA,GACAG,GAAA,GACAC,GAAA,EACA,EACAoE,EAAA+B,WAAA,SAAAC,GACA,IAAAzH,OAAA,IAAAyH,EAAA,GAAAA,EACA9I,EAAAqB,EAAArB,OACAwH,EAAAnG,EAAAmG,gBACAT,EAAA1F,EAAA0F,eACAC,EAAA3F,EAAA2F,aACA,OAAAF,EAAAp/F,OAAAs4F,EAAAwH,EAAAT,EAAAC,EACA,EAwBA,IAAA+B,EAAAjC,EAAA/vG,UAmLA,OAlLAgyG,EAAA7F,YAAA,WACA,IAAA8F,EAAAhyG,KAAA+tG,YACAkE,IAAA,OAAAjyG,KAAAwwG,iBAAA,SAAAxwG,KAAAwwG,iBAAA,OAAAxwG,KAAA+vG,gBAAA,YAAA/vG,KAAA+vG,gBACA,OAAAiC,GAAAC,EAAA,WACA,EACAF,EAAAtsD,MAAA,SAAAysD,GACA,OAAAA,GAAA,IAAAhyG,OAAAiyG,oBAAAD,GAAAx5G,OAGAo3G,EAAAp/F,OAAAwhG,EAAAlJ,QAAAhpG,KAAAiwG,gBAAAiC,EAAA1B,iBAAAxwG,KAAAwwG,gBAAA0B,EAAAnC,gBAAA/vG,KAAA+vG,eAAA4B,GAAAO,EAAAlC,eAAAhwG,KAAAgwG,aAAAkC,EAAAZ,cAAA,GAFAtxG,IAIA,EACA+xG,EAAAK,cAAA,SAAAF,GAIA,YAHA,IAAAA,IACAA,EAAA,IAEAlyG,KAAAylD,MAAA29C,EAAA,GAAA8O,EAAA,CACAZ,aAAA,IAEA,EACAS,EAAAM,kBAAA,SAAAH,GAIA,YAHA,IAAAA,IACAA,EAAA,IAEAlyG,KAAAylD,MAAA29C,EAAA,GAAA8O,EAAA,CACAZ,aAAA,IAEA,EACAS,EAAAlD,OAAA,SAAAn2G,EAAAinB,GACA,IAAA2yF,EAAAtyG,KAIA,YAHA,IAAA2f,IACAA,GAAA,GAEAksF,GAAA7rG,KAAAtH,EAAAm2G,IAAA,WACA,IAAAzC,EAAAzsF,EAAA,CACA6mF,MAAA9tG,EACA+tG,IAAA,WACA,CACAD,MAAA9tG,GAEA65G,EAAA5yF,EAAA,sBAMA,OALA2yF,EAAArB,YAAAsB,GAAA75G,KACA45G,EAAArB,YAAAsB,GAAA75G,GA9RA,SAAAq6D,GAEA,IADA,IAAAy/C,EAAA,GACA/5G,EAAA,EAAAA,GAAA,GAAAA,IAAA,CACA,IAAAy0G,EAAAuF,GAAAC,IAAA,KAAAj6G,EAAA,GACA+5G,EAAA3xG,KAAAkyD,EAAAm6C,GACA,CACA,OAAAsF,CACA,CAuRAG,EAAA,SAAAzF,GACA,OAAAoF,EAAAM,QAAA1F,EAAAd,EAAA,QACA,KAEAkG,EAAArB,YAAAsB,GAAA75G,EACA,GACA,EACAq5G,EAAAc,SAAA,SAAAn6G,EAAAinB,GACA,IAAAmzF,EAAA9yG,KAIA,YAHA,IAAA2f,IACAA,GAAA,GAEAksF,GAAA7rG,KAAAtH,EAAAm6G,IAAA,WACA,IAAAzG,EAAAzsF,EAAA,CACAinF,QAAAluG,EACA6tG,KAAA,UACAC,MAAA,OACAC,IAAA,WACA,CACAG,QAAAluG,GAEA65G,EAAA5yF,EAAA,sBAMA,OALAmzF,EAAA/B,cAAAwB,GAAA75G,KACAo6G,EAAA/B,cAAAwB,GAAA75G,GA7SA,SAAAq6D,GAEA,IADA,IAAAy/C,EAAA,GACA/5G,EAAA,EAAAA,GAAA,EAAAA,IAAA,CACA,IAAAy0G,EAAAuF,GAAAC,IAAA,WAAAj6G,GACA+5G,EAAA3xG,KAAAkyD,EAAAm6C,GACA,CACA,OAAAsF,CACA,CAsSAO,EAAA,SAAA7F,GACA,OAAA4F,EAAAF,QAAA1F,EAAAd,EAAA,UACA,KAEA0G,EAAA/B,cAAAwB,GAAA75G,EACA,GACA,EACAq5G,EAAAiB,UAAA,WACA,IAAAC,EAAAjzG,KACA,OAAA6rG,GAAA7rG,UAAAoG,GAAA,WACA,OAAA4sG,EACA,eAGA,IAAAC,EAAA/B,cAAA,CACA,IAAA9E,EAAA,CACApF,KAAA,UACAO,UAAA,OAEA0L,EAAA/B,cAAA,CAAAuB,GAAAC,IAAA,cAAAD,GAAAC,IAAA,gBAAAxrG,KAAA,SAAAgmG,GACA,OAAA+F,EAAAL,QAAA1F,EAAAd,EAAA,YACA,GACA,CACA,OAAA6G,EAAA/B,aACA,GACA,EACAa,EAAAmB,KAAA,SAAAx6G,GACA,IAAAy6G,EAAAnzG,KACA,OAAA6rG,GAAA7rG,KAAAtH,EAAAw6G,IAAA,WACA,IAAA9G,EAAA,CACA7C,IAAA7wG,GAUA,OALAy6G,EAAAhC,SAAAz4G,KACAy6G,EAAAhC,SAAAz4G,GAAA,CAAA+5G,GAAAC,KAAA,QAAAD,GAAAC,IAAA,WAAAxrG,KAAA,SAAAgmG,GACA,OAAAiG,EAAAP,QAAA1F,EAAAd,EAAA,MACA,KAEA+G,EAAAhC,SAAAz4G,EACA,GACA,EACAq5G,EAAAa,QAAA,SAAA1F,EAAAV,EAAA4G,GACA,IAEAC,EAFArzG,KAAAszG,YAAApG,EAAAV,GACAlC,gBACAhpG,MAAA,SAAAynB,GACA,OAAAA,EAAArjB,KAAApL,gBAAA84G,CACA,IACA,OAAAC,IAAA7mG,MAAA,IACA,EACAulG,EAAAwB,gBAAA,SAAAjU,GAMA,YALA,IAAAA,IACAA,EAAA,IAIA,IAAA6M,GAAAnsG,KAAAosG,KAAA9M,EAAA+M,aAAArsG,KAAAwzG,YAAAlU,EACA,EACAyS,EAAAuB,YAAA,SAAApG,EAAAV,GAIA,YAHA,IAAAA,IACAA,EAAA,IAEA,IAAAS,GAAAC,EAAAltG,KAAAosG,KAAAI,EACA,EACAuF,EAAA0B,aAAA,SAAAnU,GAIA,YAHA,IAAAA,IACAA,EAAA,IAEA,IAAAwO,GAAA9tG,KAAAosG,KAAApsG,KAAA+tG,YAAAzO,EACA,EACAyS,EAAA2B,cAAA,SAAApU,GAIA,YAHA,IAAAA,IACAA,EAAA,IA5fA,SAAAkM,EAAAlM,QACA,IAAAA,IACAA,EAAA,IAEA,IAAA1uF,EAAAgD,KAAAE,UAAA,CAAA03F,EAAAlM,IACA6K,EAAAkB,GAAAz6F,GAKA,OAJAu5F,IACAA,EAAA,IAAA7sB,KAAAq2B,WAAAnI,EAAAlM,GACA+L,GAAAz6F,GAAAu5F,GAEAA,CACA,CAmfAyJ,CAAA5zG,KAAAosG,KAAA9M,EACA,EACAyS,EAAAhE,UAAA,WACA,aAAA/tG,KAAAgpG,QAAA,UAAAhpG,KAAAgpG,OAAA1uG,eAAA,IAAAgjF,KAAA4rB,eAAAlpG,KAAAosG,MAAAjD,kBAAAH,OAAA6K,WAAA,QACA,EACA9B,EAAA+B,gBAAA,WACA,OAAA9zG,KAAAgwG,aACAhwG,KAAAgwG,aACA+D,KAtcA,SAAAvI,GACA,IAAAlwG,EAAAswG,GAAAJ,GACA,IAAAlwG,EAAA,CACA,IAAA0tG,EAAA,IAAA1rB,KAAAwyB,OAAAtE,GAEAlwG,EAAA,gBAAA0tG,IAAAgL,cAAAhL,EAAAiL,SACArI,GAAAJ,GAAAlwG,CACA,CACA,OAAAA,CACA,CAgcA44G,CAAAl0G,KAAAgpG,QAFA0G,EAIA,EACAqC,EAAAoC,eAAA,WACA,OAAAn0G,KAAA8zG,kBAAAnE,QACA,EACAoC,EAAAqC,sBAAA,WACA,OAAAp0G,KAAA8zG,kBAAAlE,WACA,EACAmC,EAAAsC,eAAA,WACA,OAAAr0G,KAAA8zG,kBAAAjE,OACA,EACAkC,EAAAtJ,OAAA,SAAA6L,GACA,OAAAt0G,KAAAgpG,SAAAsL,EAAAtL,QAAAhpG,KAAAwwG,kBAAA8D,EAAA9D,iBAAAxwG,KAAA+vG,iBAAAuE,EAAAvE,cACA,EACAgC,EAAAthG,SAAA,WACA,gBAAAzQ,KAAAgpG,OAAA,KAAAhpG,KAAAwwG,gBAAA,KAAAxwG,KAAA+vG,eAAA,GACA,EACA/M,EAAA8M,EAAA,EACAl/F,IAAA,cACAvY,IAAA,WArYA,IAAAyzG,EAyYA,OAHA,MAAA9rG,KAAAoxG,oBACApxG,KAAAoxG,qBAvYAtF,EAuYA9rG,MAtYAwwG,iBAAA,SAAA1E,EAAA0E,mBAGA,SAAA1E,EAAA0E,kBAAA1E,EAAA9C,QAAA8C,EAAA9C,OAAA6K,WAAA,oBAAAv2B,KAAA4rB,eAAA4C,EAAAM,MAAAjD,kBAAAqH,kBAqYAxwG,KAAAoxG,iBACA,KAEAtB,CACA,CAzOA,GA2OAyE,GAAA,KAMAC,GAAA,SAAA3L,GA4BA,SAAA2L,EAAAn4D,GACA,IAAAujC,EAIA,OAHAA,EAAAipB,EAAA7jF,KAAAhlB,aAEA8sG,MAAAzwD,EACAujC,CACA,CAjCAyjB,EAAAmR,EAAA3L,GAMA2L,EAAAj1G,SAAA,SAAA88C,GACA,WAAAA,EAAAm4D,EAAAC,YAAA,IAAAD,EAAAn4D,EACA,EAUAm4D,EAAAE,eAAA,SAAA90F,GACA,GAAAA,EAAA,CACA,IAAA8pB,EAAA9pB,EAAAlN,MAAA,yCACA,GAAAg3B,EACA,WAAA8qE,EAAAG,GAAAjrE,EAAA,GAAAA,EAAA,IAEA,CACA,WACA,EAcA,IAAA2+D,EAAAmM,EAAAz0G,UAiHA,OA1GAsoG,EAAAC,WAAA,WACA,OAAAtoG,KAAA1H,IACA,EAUA+vG,EAAAG,aAAA,SAAAD,EAAA5oF,GACA,OAAA6oF,GAAAxoG,KAAA8sG,MAAAntF,EACA,EAeA0oF,EAAAhsD,OAAA,WACA,OAAAr8C,KAAA8sG,KACA,EAQAzE,EAAAI,OAAA,SAAAC,GACA,gBAAAA,EAAAhjG,MAAAgjG,EAAAoE,QAAA9sG,KAAA8sG,KACA,EAQA9J,EAAAwR,EAAA,EACA5jG,IAAA,OACAvY,IAAA,WACA,aACA,GAQA,CACAuY,IAAA,OACAvY,IAAA,WACA,WAAA2H,KAAA8sG,MAAA,YAAAtE,GAAAxoG,KAAA8sG,MAAA,SACA,GAQA,CACAl8F,IAAA,WACAvY,IAAA,WACA,WAAA2H,KAAA8sG,MACA,UAEA,UAAAtE,IAAAxoG,KAAA8sG,MAAA,SAEA,GACA,CACAl8F,IAAA,cACAvY,IAAA,WACA,QACA,GACA,CACAuY,IAAA,UACAvY,IAAA,WACA,QACA,IACA,EACAuY,IAAA,cACAvY,IAKA,WAIA,OAHA,OAAAk8G,KACAA,GAAA,IAAAC,EAAA,IAEAD,EACA,KAEAC,CACA,CA3JA,CA2JApM,GAMAwM,GAAA,SAAA/L,GAEA,SAAA+L,EAAAlL,GACA,IAAA9pB,EAIA,OAHAA,EAAAipB,EAAA7jF,KAAAhlB,aAEA0pG,WACA9pB,CACA,CAPAyjB,EAAAuR,EAAA/L,GAUA,IAAAR,EAAAuM,EAAA70G,UA+CA,OA7CAsoG,EAAAC,WAAA,WACA,WACA,EAGAD,EAAAG,aAAA,WACA,QACA,EAGAH,EAAAhsD,OAAA,WACA,OAAA6tD,GACA,EAGA7B,EAAAI,OAAA,WACA,QACA,EAGAzF,EAAA4R,EAAA,EACAhkG,IAAA,OACAvY,IAAA,WACA,eACA,GAGA,CACAuY,IAAA,OACAvY,IAAA,WACA,OAAA2H,KAAA0pG,QACA,GAGA,CACA94F,IAAA,cACAvY,IAAA,WACA,QACA,GACA,CACAuY,IAAA,UACAvY,IAAA,WACA,QACA,KAEAu8G,CACA,CA3DA,CA2DAxM,GAKA,SAAAyM,GAAA9jE,EAAA+jE,GACA,GAAAn+F,GAAAo6B,IAAA,OAAAA,EACA,OAAA+jE,EACA,GAAA/jE,aAAAq3D,EACA,OAAAr3D,EACA,GAyhBA,iBAzhBAA,EAAA,CACA,IAAAgkE,EAAAhkE,EAAAz2C,cACA,kBAAAy6G,EAAAD,EAAA,UAAAC,GAAA,WAAAA,EAAAnM,EAAArpG,SAAA,QAAAw1G,GAAA,QAAAA,EAAAP,GAAAC,YAAAD,GAAAE,eAAAK,IAAAtL,EAAA/4F,OAAAqgC,EACA,QAAAikE,GAAAjkE,GACAyjE,GAAAj1G,SAAAwxC,GACA,iBAAAA,GAAA,WAAAA,GAAA,mBAAAA,EAAAsL,OAGAtL,EAEA,IAAA6jE,GAAA7jE,EAEA,CAEA,IAAAkkE,GAAA,CACAC,KAAA,QACAC,QAAA,QACAC,KAAA,QACAC,KAAA,QACAC,KAAA,QACAC,SAAA,QACAC,KAAA,QACAC,QAAA,wBACAC,KAAA,QACAC,KAAA,QACAC,KAAA,QACAC,KAAA,QACAC,KAAA,QACAC,KAAA,QACAC,KAAA,QACAC,KAAA,QACAC,QAAA,QACAC,KAAA,QACAC,KAAA,QACAC,KAAA,QACAC,KAAA,OAEAC,GAAA,CACArB,KAAA,YACAC,QAAA,YACAC,KAAA,YACAC,KAAA,YACAC,KAAA,YACAC,SAAA,cACAC,KAAA,YACAE,KAAA,YACAC,KAAA,YACAC,KAAA,YACAC,KAAA,YACAC,KAAA,YACAC,KAAA,YACAC,KAAA,YACAC,KAAA,YACAC,QAAA,YACAC,KAAA,YACAC,KAAA,YACAC,KAAA,aAEAG,GAAAvB,GAAAQ,QAAA51F,QAAA,eAAArnB,MAAA,IA2BA,IAAAi+G,GAAA,GAIA,SAAAC,GAAA5N,EAAAj9D,QAEA,IAAAA,IACAA,EAAA,IAEA,IAAA8qE,EAJA7N,EAAA0H,iBAIA,OAOA,OANAiG,GAAAE,KACAF,GAAAE,GAAA,IAEAF,GAAAE,GAAA9qE,KACA4qE,GAAAE,GAAA9qE,GAAA,IAAAt5B,OAAA,GAAA0iG,GAAA0B,GAAA9qE,IAEA4qE,GAAAE,GAAA9qE,EACA,CAEA,IAQA+qE,GARA5X,GAAA,WACA,OAAAjnG,KAAAinG,KACA,EACA8V,GAAA,SACAtD,GAAA,KACAC,GAAA,KACAC,GAAA,KACAmF,GAAA,GAEAjF,GAAA,KAKAL,GAAA,WACA,SAAAA,IAAA,CA+KA,OA1KAA,EAAAuF,YAAA,WACAhH,GAAAjG,aACAJ,EAAAI,aACA4I,GAAA5I,aAxCA4M,GAAA,EA0CA,EACAzT,EAAAuO,EAAA,OACA3gG,IAAA,MACAvY,IAKA,WACA,OAAA2mG,EACA,EASAtnG,IAAA,SAAA06D,GACA4sC,GAAA5sC,CACA,GAOA,CACAxhD,IAAA,cACAvY,IAMA,WACA,OAAAw8G,GAAAC,GAAAlM,EAAArpG,SACA,EAMA7H,IAAA,SAAAqyG,GACA+K,GAAA/K,CACA,GACA,CACAn5F,IAAA,gBACAvY,IAAA,WACA,OAAAm5G,EACA,EAMA95G,IAAA,SAAAsxG,GACAwI,GAAAxI,CACA,GAMA,CACAp4F,IAAA,yBACAvY,IAAA,WACA,OAAAo5G,EACA,EAMA/5G,IAAA,SAAA84G,GACAiB,GAAAjB,CACA,GAMA,CACA5/F,IAAA,wBACAvY,IAAA,WACA,OAAAq5G,EACA,EAMAh6G,IAAA,SAAAq4G,GACA2B,GAAA3B,CACA,GAYA,CACAn/F,IAAA,sBACAvY,IAAA,WACA,OAAAu5G,EACA,EASAl6G,IAAA,SAAAs4G,GACA4B,GAAAD,GAAA3B,EACA,GAMA,CACAp/F,IAAA,qBACAvY,IAAA,WACA,OAAAw+G,EACA,EAWAn/G,IAAA,SAAAq/G,GACAF,GAAAE,EAAA,GACA,GAMA,CACAnmG,IAAA,iBACAvY,IAAA,WACA,OAAAu+G,EACA,EAMAl/G,IAAA,SAAAy6D,GACAykD,GAAAzkD,CACA,KAEAo/C,CACA,CAjLA,GAmLAyF,GAAA,WACA,SAAAA,EAAAnoF,EAAAooF,GACAj3G,KAAA6uB,SACA7uB,KAAAi3G,aACA,CASA,OARAD,EAAAj3G,UACA0lG,UAAA,WACA,OAAAzlG,KAAAi3G,YACAj3G,KAAA6uB,OAAA,KAAA7uB,KAAAi3G,YAEAj3G,KAAA6uB,MAEA,EACAmoF,CACA,CAdA,GAgBAE,GAAA,6CACAC,GAAA,6CACA,SAAAC,GAAAhuG,EAAAoD,GACA,WAAAwqG,GAAA,qCAAAxqG,EAAA,oBAAAA,EAAA,UAAApD,EAAA,qBACA,CACA,SAAAiuG,GAAA9Q,EAAAC,EAAAC,GACA,IAAApuF,EAAA,IAAAtgB,UAAAu/G,IAAA/Q,EAAAC,EAAA,EAAAC,IACAF,EAAA,KAAAA,GAAA,GACAluF,EAAAk/F,eAAAl/F,EAAAm/F,iBAAA,MAEA,IAAAC,EAAAp/F,EAAAq/F,YACA,WAAAD,EAAA,EAAAA,CACA,CACA,SAAAE,GAAApR,EAAAC,EAAAC,GACA,OAAAA,GAAAmR,GAAArR,GAAA4Q,GAAAD,IAAA1Q,EAAA,EACA,CACA,SAAAqR,GAAAtR,EAAAuR,GACA,IAAAC,EAAAH,GAAArR,GAAA4Q,GAAAD,GACAc,EAAAD,EAAAE,WAAA,SAAAx/G,GACA,OAAAA,EAAAq/G,CACA,IAEA,OACAtR,MAAAwR,EAAA,EACAvR,IAHAqR,EAAAC,EAAAC,GAKA,CACA,SAAAE,GAAAC,EAAAC,GACA,OAAAD,EAAAC,EAAA,MACA,CAMA,SAAAC,GAAAC,EAAAC,EAAAH,QACA,IAAAG,IACAA,EAAA,QAEA,IAAAH,IACAA,EAAA,GAEA,IAMAI,EANAjS,EAAA+R,EAAA/R,KACAC,EAAA8R,EAAA9R,MACAC,EAAA6R,EAAA7R,IACAqR,EAAAH,GAAApR,EAAAC,EAAAC,GACAG,EAAAsR,GAAAb,GAAA9Q,EAAAC,EAAAC,GAAA2R,GACAK,EAAA1jG,KAAAM,OAAAyiG,EAAAlR,EAAA,GAAA2R,GAAA,GAWA,OATAE,EAAA,EAEAA,EAAAC,GADAF,EAAAjS,EAAA,EACAgS,EAAAH,GACAK,EAAAC,GAAAnS,EAAAgS,EAAAH,IACAI,EAAAjS,EAAA,EACAkS,EAAA,GAEAD,EAAAjS,EAEAnD,EAAA,CACAoV,WACAC,aACA7R,WACA+R,GAAAL,GACA,CACA,SAAAM,GAAAC,EAAAN,EAAAH,QACA,IAAAG,IACAA,EAAA,QAEA,IAAAH,IACAA,EAAA,GAEA,IAMA7R,EANAiS,EAAAK,EAAAL,SACAC,EAAAI,EAAAJ,WACA7R,EAAAiS,EAAAjS,QACAkS,EAAAZ,GAAAb,GAAAmB,EAAA,EAAAD,GAAAH,GACAW,EAAAC,GAAAR,GACAV,EAAA,EAAAW,EAAA7R,EAAAkS,EAAA,EAAAP,EAEAT,EAAA,EAEAA,GAAAkB,GADAzS,EAAAiS,EAAA,GAEAV,EAAAiB,GACAxS,EAAAiS,EAAA,EACAV,GAAAkB,GAAAR,IAEAjS,EAAAiS,EAEA,IAAAS,EAAApB,GAAAtR,EAAAuR,GAGA,OAAA1U,EAAA,CACAmD,OACAC,MAJAyS,EAAAzS,MAKAC,IAJAwS,EAAAxS,KAKAkS,GAAAE,GACA,CACA,SAAAK,GAAAC,GACA,IAAA5S,EAAA4S,EAAA5S,KAIA,OAAAnD,EAAA,CACAmD,OACAuR,QAHAH,GAAApR,EAFA4S,EAAA3S,MACA2S,EAAA1S,MAKAkS,GAAAQ,GACA,CACA,SAAAC,GAAAC,GACA,IAAA9S,EAAA8S,EAAA9S,KAEA+S,EAAAzB,GAAAtR,EADA8S,EAAAvB,SAIA,OAAA1U,EAAA,CACAmD,OACAC,MAJA8S,EAAA9S,MAKAC,IAJA6S,EAAA7S,KAKAkS,GAAAU,GACA,CAQA,SAAAE,GAAAn5G,EAAA0rG,GAEA,IADAn1F,GAAAvW,EAAAo5G,gBAAA7iG,GAAAvW,EAAAq5G,mBAAA9iG,GAAAvW,EAAAs5G,eACA,CAEA,IADA/iG,GAAAvW,EAAAwmG,WAAAjwF,GAAAvW,EAAAq4G,cAAA9hG,GAAAvW,EAAAo4G,UAEA,UAAA1S,EAAA,kEAQA,OANAnvF,GAAAvW,EAAAo5G,gBAAAp5G,EAAAwmG,QAAAxmG,EAAAo5G,cACA7iG,GAAAvW,EAAAq5G,mBAAAr5G,EAAAq4G,WAAAr4G,EAAAq5G,iBACA9iG,GAAAvW,EAAAs5G,iBAAAt5G,EAAAo4G,SAAAp4G,EAAAs5G,sBACAt5G,EAAAo5G,oBACAp5G,EAAAq5G,uBACAr5G,EAAAs5G,cACA,CACAnB,mBAAAzM,EAAAsI,wBACAgE,YAAAtM,EAAAqI,iBAEA,CACA,OACAoE,mBAAA,EACAH,YAAA,EAGA,CA4BA,SAAAuB,GAAAv5G,GACA,IAAAw5G,EAAAC,GAAAz5G,EAAAmmG,MACAuT,EAAAC,GAAA35G,EAAAomG,MAAA,MACAwT,EAAAD,GAAA35G,EAAAqmG,IAAA,EAAAwT,GAAA75G,EAAAmmG,KAAAnmG,EAAAomG,QACA,OAAAoT,EAEAE,GAEAE,GACA5C,GAAA,MAAAh3G,EAAAqmG,KAFA2Q,GAAA,QAAAh3G,EAAAomG,OAFA4Q,GAAA,OAAAh3G,EAAAmmG,KAMA,CACA,SAAA2T,GAAA95G,GACA,IAAA4mG,EAAA5mG,EAAA4mG,KACAC,EAAA7mG,EAAA6mG,OACAlR,EAAA31F,EAAA21F,OACAmV,EAAA9qG,EAAA8qG,YACAiP,EAAAJ,GAAA/S,EAAA,YAAAA,GAAA,IAAAC,GAAA,IAAAlR,GAAA,IAAAmV,EACAkP,EAAAL,GAAA9S,EAAA,MACAoT,EAAAN,GAAAhkB,EAAA,MACAukB,EAAAP,GAAA7O,EAAA,OACA,OAAAiP,EAEAC,EAEAC,GAEAC,GACAlD,GAAA,cAAAlM,GAFAkM,GAAA,SAAArhB,GAFAqhB,GAAA,SAAAnQ,GAFAmQ,GAAA,OAAApQ,EAQA,CAQA,SAAArwF,GAAA6sF,GACA,gBAAAA,CACA,CACA,SAAAwR,GAAAxR,GACA,uBAAAA,CACA,CACA,SAAAqW,GAAArW,GACA,uBAAAA,KAAA,IACA,CAUA,SAAAwK,KACA,IACA,0BAAA1wB,aAAA+wB,kBACA,OAAA/1F,GACA,QACA,CACA,CACA,SAAAy7F,KACA,IACA,0BAAAz2B,aAAAwyB,SAAA,aAAAxyB,KAAAwyB,OAAA/vG,WAAA,gBAAAu9E,KAAAwyB,OAAA/vG,UACA,OAAAuY,GACA,QACA,CACA,CAOA,SAAAiiG,GAAAhmF,EAAA24B,EAAAstD,GACA,OAAAjmF,EAAA77B,OAGA,OAAA67B,EAAAxxB,QAAA,SAAA03G,EAAA7nD,GACA,IAAA8nD,EAAA,CAAAxtD,EAAA0F,MACA,OAAA6nD,GAEAD,EAAAC,EAAA,GAAAC,EAAA,MAAAD,EAAA,GACAA,EAFAC,CAMA,WACA,CAOA,SAAA7nF,GAAAzyB,EAAAsW,GACA,OAAAxW,OAAAH,UAAA8yB,eAAA7N,KAAA5kB,EAAAsW,EACA,CACA,SAAAi7F,GAAAn+E,GACA,SAAAA,EACA,YACA,oBAAAA,EACA,UAAA0yE,EAAA,mCAEA,IAAA6T,GAAAvmF,EAAAm8E,SAAA,OAAAoK,GAAAvmF,EAAAo8E,YAAA,OAAA39F,MAAAiS,QAAAsP,EAAAq8E,UAAAr8E,EAAAq8E,QAAAx3B,MAAA,SAAAhzB,GACA,OAAA00D,GAAA10D,EAAA,IACA,IACA,UAAA6gD,EAAA,yBAEA,OACAyJ,SAAAn8E,EAAAm8E,SACAC,YAAAp8E,EAAAo8E,YACAC,QAAA59F,MAAA2hD,KAAApgC,EAAAq8E,SAGA,CAIA,SAAAkK,GAAAY,EAAA/zG,EAAAF,GACA,OAAAmzG,GAAAc,OAAA/zG,GAAA+zG,GAAAj0G,CACA,CAMA,SAAAqmG,GAAAh8D,EAAAqhB,GAWA,YAVA,IAAAA,IACAA,EAAA,GAEArhB,EAAA,EAGA,SAAAA,GAAAg8D,SAAA36C,EAAA,MAEA,GAAArhB,GAAAg8D,SAAA36C,EAAA,IAGA,CACA,SAAAwoD,GAAAtpG,GACA,OAAAqF,GAAArF,IAAA,OAAAA,GAAA,KAAAA,OACA,EAEA4H,SAAA5H,EAAA,GAEA,CACA,SAAAupG,GAAAvpG,GACA,OAAAqF,GAAArF,IAAA,OAAAA,GAAA,KAAAA,OACA,EAEAmO,WAAAnO,EAEA,CACA,SAAAwpG,GAAAj+C,GAEA,IAAAlmD,GAAAkmD,IAAA,OAAAA,GAAA,KAAAA,EAAA,CAGA,IAAA9J,EAAA,IAAAtzC,WAAA,KAAAo9C,GACA,OAAA9nD,KAAAM,MAAA09C,EACA,CACA,CACA,SAAAi6C,GAAAp4F,EAAAqrD,EAAA86C,QACA,IAAAA,IACAA,GAAA,GAEA,IAAAhtG,EAAAgH,KAAAud,IAAA,GAAA2tC,GAEA,OADA86C,EAAAhmG,KAAAimG,MAAAjmG,KAAA81C,OACAj2C,EAAA7G,IACA,CAIA,SAAA6pG,GAAArR,GACA,OAAAA,EAAA,OAAAA,EAAA,QAAAA,EAAA,OACA,CACA,SAAAyS,GAAAzS,GACA,OAAAqR,GAAArR,GAAA,OACA,CACA,SAAA0T,GAAA1T,EAAAC,GACA,IAAAyU,EAzDA,SAAA72G,EAAAguD,GACA,OAAAhuD,EAAAguD,EAAAr9C,KAAAM,MAAAjR,EAAAguD,EACA,CAuDA8oD,CAAA1U,EAAA,QAEA,WAAAyU,EACArD,GAFArR,GAAAC,EAAAyU,GAAA,IAEA,MAEA,wCAAAA,EAAA,EAEA,CAGA,SAAAhQ,GAAA7qG,GACA,IAAAiY,EAAAtgB,KAAAu/G,IAAAl3G,EAAAmmG,KAAAnmG,EAAAomG,MAAA,EAAApmG,EAAAqmG,IAAArmG,EAAA4mG,KAAA5mG,EAAA6mG,OAAA7mG,EAAA21F,OAAA31F,EAAA8qG,aAUA,OAPA9qG,EAAAmmG,KAAA,KAAAnmG,EAAAmmG,MAAA,IACAluF,EAAA,IAAAtgB,KAAAsgB,IAIAk/F,eAAAn3G,EAAAmmG,KAAAnmG,EAAAomG,MAAA,EAAApmG,EAAAqmG,MAEApuF,CACA,CAGA,SAAA8iG,GAAA5U,EAAAgS,EAAAH,GAEA,OADAF,GAAAb,GAAA9Q,EAAA,EAAAgS,GAAAH,GACAG,EAAA,CACA,CACA,SAAAG,GAAAF,EAAAD,EAAAH,QACA,IAAAG,IACAA,EAAA,QAEA,IAAAH,IACAA,EAAA,GAEA,IAAAgD,EAAAD,GAAA3C,EAAAD,EAAAH,GACAiD,EAAAF,GAAA3C,EAAA,EAAAD,EAAAH,GACA,OAAAY,GAAAR,GAAA4C,EAAAC,GAAA,CACA,CACA,SAAAC,GAAA/U,GACA,OAAAA,EAAA,GACAA,EACAA,EAAAgL,GAAAsF,mBAAA,KAAAtQ,EAAA,IAAAA,CACA,CAIA,SAAAwC,GAAAR,EAAAgT,EAAAvS,EAAAI,QACA,IAAAA,IACAA,EAAA,MAEA,IAAAY,EAAA,IAAAjyG,KAAAwwG,GACAiE,EAAA,CACAjF,UAAA,MACAhB,KAAA,UACAC,MAAA,UACAC,IAAA,UACAO,KAAA,UACAC,OAAA,WAEAmC,IACAoD,EAAApD,YAEA,IAAAoS,EAAApY,EAAA,CACAgE,aAAAmU,GACA/O,GACA9B,EAAA,IAAAptB,KAAA4rB,eAAAF,EAAAwS,GAAAlR,cAAAN,GAAA1oG,MAAA,SAAAynB,GACA,uBAAAA,EAAArjB,KAAApL,aACA,IACA,OAAAowG,IAAAl+F,MAAA,IACA,CAGA,SAAAmoG,GAAA8G,EAAAC,GACA,IAAAC,EAAAziG,SAAAuiG,EAAA,IAGAtW,OAAA8E,MAAA0R,KACAA,EAAA,GAEA,IAAAC,EAAA1iG,SAAAwiG,EAAA,OAEA,UAAAC,GADAA,EAAA,GAAAz7G,OAAAokC,GAAAq3E,GAAA,IAAAC,IAEA,CAIA,SAAAC,GAAArvG,GACA,IAAAsvG,EAAA3W,OAAA34F,GACA,qBAAAA,GAAA,KAAAA,GAAA24F,OAAA8E,MAAA6R,GAAA,UAAA5V,EAAA,sBAAA15F,GACA,OAAAsvG,CACA,CACA,SAAAC,GAAA37G,EAAA47G,GACA,IAAAC,EAAA,GACA,QAAAC,KAAA97G,EACA,GAAAyyB,GAAAzyB,EAAA87G,GAAA,CACA,IAAA72D,EAAAjlD,EAAA87G,GACA,GAAA72D,QAAA,SACA42D,EAAAD,EAAAE,IAAAL,GAAAx2D,EACA,CAEA,OAAA42D,CACA,CASA,SAAAzT,GAAAnsD,EAAA18B,GACA,IAAAqvF,EAAAj6F,KAAAimG,MAAAjmG,KAAAD,IAAAunC,EAAA,KACAoxD,EAAA14F,KAAAimG,MAAAjmG,KAAAD,IAAAunC,EAAA,KACAqgB,EAAArgB,GAAA,UACA,OAAA18B,GACA,YACA,SAAA+8C,EAAAqwC,GAAAiC,EAAA,OAAAjC,GAAAU,EAAA,GACA,aACA,SAAA/wC,EAAAsyC,GAAAvB,EAAA,MAAAA,EAAA,IACA,aACA,SAAA/wC,EAAAqwC,GAAAiC,EAAA,GAAAjC,GAAAU,EAAA,GACA,QACA,UAAAzrG,WAAA,gBAAA2d,EAAA,wCAEA,CACA,SAAAg5F,GAAAv4G,GACA,OA5NA,SAAAA,EAAAuP,GACA,OAAAA,EAAA5M,QAAA,SAAA2vB,EAAAypF,GAEA,OADAzpF,EAAAypF,GAAA/7G,EAAA+7G,GACAzpF,CACA,MACA,CAuNA0pF,CAAAh8G,EAAA,yCACA,CAMA,IAAAi8G,GAAA,gHACAC,GAAA,0EACAC,GAAA,kDACA,SAAA1N,GAAAn2G,GACA,OAAAA,GACA,aACA,SAAAgvC,OAAA60E,IACA,YACA,SAAA70E,OAAA40E,IACA,WACA,SAAA50E,OAAA20E,IACA,cACA,2DACA,cACA,oEACA,QACA,YAEA,CACA,IAAAG,GAAA,yEACAC,GAAA,4CACAC,GAAA,8BACA,SAAA7J,GAAAn6G,GACA,OAAAA,GACA,aACA,SAAAgvC,OAAAg1E,IACA,YACA,SAAAh1E,OAAA+0E,IACA,WACA,SAAA/0E,OAAA80E,IACA,cACA,oCACA,QACA,YAEA,CACA,IAAAxJ,GAAA,YACA2J,GAAA,gCACAC,GAAA,YACAC,GAAA,UACA,SAAA3J,GAAAx6G,GACA,OAAAA,GACA,aACA,SAAAgvC,OAAAm1E,IACA,YACA,SAAAn1E,OAAAk1E,IACA,WACA,SAAAl1E,OAAAi1E,IACA,QACA,YAEA,CAmDA,SAAAG,GAAAC,EAAAC,GAEA,IADA,IACAC,EADAr9F,EAAA,GACAs9F,EAAAvY,EAAAoY,KAAAE,EAAAC,KAAA3wE,MAAA,CACA,IAAAplB,EAAA81F,EAAAzwG,MACA2a,EAAAg2F,QACAv9F,GAAAuH,EAAA2xB,IAEAl5B,GAAAo9F,EAAA71F,EAAA2xB,IAEA,CACA,OAAAl5B,CACA,CACA,IAAAw9F,GAAA,CACAnnF,EAAAqwE,EACA/4D,GAAAm5D,EACA2W,IAAAxW,EACAyW,KAAAxW,EACA30C,EAAA40C,EACAwW,GAAArW,EACAsW,IAAArW,EACAsW,KAAApW,EACAnxE,EAAAoxE,EACAoW,GAAAlW,EACAmW,IAAAlW,EACAmW,KAAAlW,EACA30C,EAAA40C,EACAkW,GAAAhW,EACAiW,IAAA9V,EACA+V,KAAA7V,EACApoG,EAAA8nG,EACAoW,GAAAlW,EACAmW,IAAAhW,EACAiW,KAAA/V,GAMAgW,GAAA,WAqDA,SAAAA,EAAAnV,EAAAoV,GACAp+G,KAAAs/F,KAAA8e,EACAp+G,KAAA8rG,IAAA9C,EACAhpG,KAAAq+G,UAAA,IACA,CAxDAF,EAAAztG,OAAA,SAAAs4F,EAAA1J,GAIA,YAHA,IAAAA,IACAA,EAAA,IAEA,IAAA6e,EAAAnV,EAAA1J,EACA,EACA6e,EAAAG,YAAA,SAAAC,GAQA,IAJA,IAAAh9G,EAAA,KACAi9G,EAAA,GACAC,GAAA,EACA1B,EAAA,GACAtkH,EAAA,EAAAA,EAAA8lH,EAAA7lH,OAAAD,IAAA,CACA,IAAAE,EAAA4lH,EAAA3lH,OAAAH,GACA,MAAAE,GACA6lH,EAAA9lH,OAAA,GACAqkH,EAAAl8G,KAAA,CACAs8G,QAAAsB,GAAA,QAAAtkH,KAAAqkH,GACA1lE,IAAA0lE,IAGAj9G,EAAA,KACAi9G,EAAA,GACAC,MACAA,GAEA9lH,IAAA4I,EADAi9G,GAAA7lH,GAIA6lH,EAAA9lH,OAAA,GACAqkH,EAAAl8G,KAAA,CACAs8G,QAAA,QAAAhjH,KAAAqkH,GACA1lE,IAAA0lE,IAGAA,EAAA7lH,EACA4I,EAAA5I,EAEA,CAOA,OANA6lH,EAAA9lH,OAAA,GACAqkH,EAAAl8G,KAAA,CACAs8G,QAAAsB,GAAA,QAAAtkH,KAAAqkH,GACA1lE,IAAA0lE,IAGAzB,CACA,EACAoB,EAAAO,uBAAA,SAAAv3F,GACA,OAAAi2F,GAAAj2F,EACA,EAMA,IAAAkhF,EAAA8V,EAAAp+G,UA8VA,OA7VAsoG,EAAAsW,wBAAA,SAAAzR,EAAA5N,GAKA,OAJA,OAAAt/F,KAAAq+G,YACAr+G,KAAAq+G,UAAAr+G,KAAA8rG,IAAAuG,qBAEAryG,KAAAq+G,UAAA/K,YAAApG,EAAA9J,EAAA,GAAApjG,KAAAs/F,SACA3/E,QACA,EACA0oF,EAAAiL,YAAA,SAAApG,EAAA5N,GAIA,YAHA,IAAAA,IACAA,EAAA,IAEAt/F,KAAA8rG,IAAAwH,YAAApG,EAAA9J,EAAA,GAAApjG,KAAAs/F,QACA,EACA+I,EAAAuW,eAAA,SAAA1R,EAAA5N,GACA,OAAAt/F,KAAAszG,YAAApG,EAAA5N,GAAA3/E,QACA,EACA0oF,EAAAwW,oBAAA,SAAA3R,EAAA5N,GACA,OAAAt/F,KAAAszG,YAAApG,EAAA5N,GAAAgL,eACA,EACAjC,EAAAyW,eAAA,SAAAtzB,EAAA8T,GAEA,OADAt/F,KAAAszG,YAAA9nB,EAAAtqE,MAAAo+E,GACA6K,IAAA4U,YAAAvzB,EAAAtqE,MAAAysF,WAAAniB,EAAAhjC,IAAAmlD,WACA,EACAtF,EAAAc,gBAAA,SAAA+D,EAAA5N,GACA,OAAAt/F,KAAAszG,YAAApG,EAAA5N,GAAA6J,iBACA,EACAd,EAAA2W,IAAA,SAAA5sD,EAAAP,GAKA,QAJA,IAAAA,IACAA,EAAA,GAGA7xD,KAAAs/F,KAAA+M,YACA,OAAAU,GAAA36C,EAAAP,GAEA,IAAAytC,EAAA8D,EAAA,GAAApjG,KAAAs/F,MAIA,OAHAztC,EAAA,IACAytC,EAAAgN,MAAAz6C,GAEA7xD,KAAA8rG,IAAAyH,gBAAAjU,GAAA3/E,OAAAyyC,EACA,EACAi2C,EAAA4W,yBAAA,SAAA/R,EAAAqR,GACA,IAAA3+B,EAAA5/E,KACAk/G,EAAA,OAAAl/G,KAAA8rG,IAAAI,cACAiT,EAAAn/G,KAAA8rG,IAAAiE,gBAAA,YAAA/vG,KAAA8rG,IAAAiE,eACAz+F,EAAA,SAAAguF,EAAAsT,GACA,OAAAhzB,EAAAksB,IAAA8G,QAAA1F,EAAA5N,EAAAsT,EACA,EACApK,EAAA,SAAAlJ,GACA,OAAA4N,EAAAkS,eAAA,IAAAlS,EAAA7wD,QAAAijD,EAAA+f,OACA,IAEAnS,EAAAjhG,QAAAihG,EAAAnD,KAAAvB,aAAA0E,EAAA3E,GAAAjJ,EAAA3/E,QAAA,EACA,EACA2/F,EAAA,WACA,OAAAJ,EAzMA,SAAAhS,GACA,OAAA8F,GAAA9F,EAAAlG,KAAA,OACA,CAuMAuY,CAAArS,GAAA57F,EAAA,CACA01F,KAAA,UACAO,UAAA,OACA,YACA,EACAf,EAAA,SAAA9tG,EAAAs4G,GACA,OAAAkO,EAzMA,SAAAhS,EAAAx0G,GACA,OAAAm2G,GAAAn2G,GAAAw0G,EAAA1G,MAAA,EACA,CAuMAgZ,CAAAtS,EAAAx0G,GAAA4Y,EAAA0/F,EAAA,CACAxK,MAAA9tG,GACA,CACA8tG,MAAA9tG,EACA+tG,IAAA,WACA,QACA,EACAG,EAAA,SAAAluG,EAAAs4G,GACA,OAAAkO,EApNA,SAAAhS,EAAAx0G,GACA,OAAAm6G,GAAAn6G,GAAAw0G,EAAAtG,QAAA,EACA,CAkNA6Y,CAAAvS,EAAAx0G,GAAA4Y,EAAA0/F,EAAA,CACApK,QAAAluG,GACA,CACAkuG,QAAAluG,EACA8tG,MAAA,OACAC,IAAA,WACA,UACA,EASA8C,EAAA,SAAA7wG,GACA,OAAAwmH,EA/NA,SAAAhS,EAAAx0G,GACA,OAAAw6G,GAAAx6G,GAAAw0G,EAAA3G,KAAA,MACA,CA6NAmZ,CAAAxS,EAAAx0G,GAAA4Y,EAAA,CACAi4F,IAAA7wG,GACA,MACA,EAsNA,OAAAokH,GAAAqB,EAAAG,YAAAC,IArNA,SAAAp3F,GAEA,OAAAA,GAEA,QACA,OAAAy4D,EAAAo/B,IAAA9R,EAAAhC,aACA,QAEA,UACA,OAAAtrB,EAAAo/B,IAAA9R,EAAAhC,YAAA,GAEA,QACA,OAAAtrB,EAAAo/B,IAAA9R,EAAAnX,QACA,SACA,OAAAnW,EAAAo/B,IAAA9R,EAAAnX,OAAA,GAEA,SACA,OAAAnW,EAAAo/B,IAAAjqG,KAAAM,MAAA63F,EAAAhC,YAAA,OACA,UACA,OAAAtrB,EAAAo/B,IAAAjqG,KAAAM,MAAA63F,EAAAhC,YAAA,MAEA,QACA,OAAAtrB,EAAAo/B,IAAA9R,EAAAjG,QACA,SACA,OAAArnB,EAAAo/B,IAAA9R,EAAAjG,OAAA,GAEA,QACA,OAAArnB,EAAAo/B,IAAA9R,EAAAlG,KAAA,SAAAkG,EAAAlG,KAAA,IACA,SACA,OAAApnB,EAAAo/B,IAAA9R,EAAAlG,KAAA,SAAAkG,EAAAlG,KAAA,MACA,QACA,OAAApnB,EAAAo/B,IAAA9R,EAAAlG,MACA,SACA,OAAApnB,EAAAo/B,IAAA9R,EAAAlG,KAAA,GAEA,QAEA,OAAAwB,EAAA,CACA7oF,OAAA,SACA0/F,OAAAz/B,EAAA0f,KAAA+f,SAEA,SAEA,OAAA7W,EAAA,CACA7oF,OAAA,QACA0/F,OAAAz/B,EAAA0f,KAAA+f,SAEA,UAEA,OAAA7W,EAAA,CACA7oF,OAAA,SACA0/F,OAAAz/B,EAAA0f,KAAA+f,SAEA,WAEA,OAAAnS,EAAAnD,KAAAzB,WAAA4E,EAAA3E,GAAA,CACA5oF,OAAA,QACAqpF,OAAAppB,EAAAksB,IAAA9C,SAEA,YAEA,OAAAkE,EAAAnD,KAAAzB,WAAA4E,EAAA3E,GAAA,CACA5oF,OAAA,OACAqpF,OAAAppB,EAAAksB,IAAA9C,SAGA,QAEA,OAAAkE,EAAAxD,SAEA,QACA,OAAA4V,IAEA,QACA,OAAAH,EAAA7tG,EAAA,CACAm1F,IAAA,WACA,OAAA7mB,EAAAo/B,IAAA9R,EAAAzG,KACA,SACA,OAAA0Y,EAAA7tG,EAAA,CACAm1F,IAAA,WACA,OAAA7mB,EAAAo/B,IAAA9R,EAAAzG,IAAA,GAEA,QAaA,QAEA,OAAA7mB,EAAAo/B,IAAA9R,EAAAtG,SAZA,UAEA,OAAAA,EAAA,YACA,WAEA,OAAAA,EAAA,WACA,YAEA,OAAAA,EAAA,aAKA,UAEA,OAAAA,EAAA,YACA,WAEA,OAAAA,EAAA,WACA,YAEA,OAAAA,EAAA,aAEA,QAEA,OAAAuY,EAAA7tG,EAAA,CACAk1F,MAAA,UACAC,IAAA,WACA,SAAA7mB,EAAAo/B,IAAA9R,EAAA1G,OACA,SAEA,OAAA2Y,EAAA7tG,EAAA,CACAk1F,MAAA,UACAC,IAAA,WACA,SAAA7mB,EAAAo/B,IAAA9R,EAAA1G,MAAA,GACA,UAEA,OAAAA,EAAA,YACA,WAEA,OAAAA,EAAA,WACA,YAEA,OAAAA,EAAA,aAEA,QAEA,OAAA2Y,EAAA7tG,EAAA,CACAk1F,MAAA,WACA,SAAA5mB,EAAAo/B,IAAA9R,EAAA1G,OACA,SAEA,OAAA2Y,EAAA7tG,EAAA,CACAk1F,MAAA,WACA,SAAA5mB,EAAAo/B,IAAA9R,EAAA1G,MAAA,GACA,UAEA,OAAAA,EAAA,YACA,WAEA,OAAAA,EAAA,WACA,YAEA,OAAAA,EAAA,aAEA,QAEA,OAAA2Y,EAAA7tG,EAAA,CACAi1F,KAAA,WACA,QAAA3mB,EAAAo/B,IAAA9R,EAAA3G,MACA,SAEA,OAAA4Y,EAAA7tG,EAAA,CACAi1F,KAAA,WACA,QAAA3mB,EAAAo/B,IAAA9R,EAAA3G,KAAA91F,WAAA/R,OAAA,MACA,WAEA,OAAAygH,EAAA7tG,EAAA,CACAi1F,KAAA,WACA,QAAA3mB,EAAAo/B,IAAA9R,EAAA3G,KAAA,GACA,aAEA,OAAA4Y,EAAA7tG,EAAA,CACAi1F,KAAA,WACA,QAAA3mB,EAAAo/B,IAAA9R,EAAA3G,KAAA,GAEA,QAEA,OAAAgD,EAAA,SACA,SAEA,OAAAA,EAAA,QACA,YACA,OAAAA,EAAA,UACA,SACA,OAAA3pB,EAAAo/B,IAAA9R,EAAAsL,SAAA/nG,WAAA/R,OAAA,MACA,WACA,OAAAkhF,EAAAo/B,IAAA9R,EAAAsL,SAAA,GACA,QACA,OAAA54B,EAAAo/B,IAAA9R,EAAAuL,YACA,SACA,OAAA74B,EAAAo/B,IAAA9R,EAAAuL,WAAA,GACA,QACA,OAAA74B,EAAAo/B,IAAA9R,EAAAuM,iBACA,SACA,OAAA75B,EAAAo/B,IAAA9R,EAAAuM,gBAAA,GACA,SACA,OAAA75B,EAAAo/B,IAAA9R,EAAAwM,cAAAjpG,WAAA/R,OAAA,MACA,WACA,OAAAkhF,EAAAo/B,IAAA9R,EAAAwM,cAAA,GACA,QACA,OAAA95B,EAAAo/B,IAAA9R,EAAA4K,SACA,UACA,OAAAl4B,EAAAo/B,IAAA9R,EAAA4K,QAAA,GACA,QAEA,OAAAl4B,EAAAo/B,IAAA9R,EAAAyS,SACA,SAEA,OAAA//B,EAAAo/B,IAAA9R,EAAAyS,QAAA,GACA,QACA,OAAA//B,EAAAo/B,IAAAjqG,KAAAM,MAAA63F,EAAA3E,GAAA,MACA,QACA,OAAA3oB,EAAAo/B,IAAA9R,EAAA3E,IACA,QACA,OA/NA,SAAAphF,GACA,IAAAi3F,EAAAD,EAAAO,uBAAAv3F,GACA,OAAAi3F,EACAx+B,EAAA++B,wBAAAzR,EAAAkR,GAEAj3F,CAEA,CAwNAy4F,CAAAz4F,GAEA,GAEA,EACAkhF,EAAAwX,yBAAA,SAAAC,EAAAvB,GACA,IAuBAwB,EAvBAzN,EAAAtyG,KACAggH,EAAA,SAAA74F,GACA,OAAAA,EAAA,IACA,QACA,oBACA,QACA,eACA,QACA,eACA,QACA,aACA,QACA,YACA,QACA,aACA,QACA,cACA,QACA,aACA,QACA,YAEA,EAWA03C,EAAAs/C,EAAAG,YAAAC,GACA0B,EAAAphD,EAAA97D,QAAA,SAAAm9G,EAAApX,GACA,IAAAqU,EAAArU,EAAAqU,QACArkE,EAAAgwD,EAAAhwD,IACA,OAAAqkE,EAAA+C,IAAAx4E,OAAAoR,EACA,OACAqnE,EAAAL,EAAAM,QAAAn/G,MAAA6+G,EAAAG,EAAA/4G,IAAA84G,GAAA7lG,QAAA,SAAAg4C,GACA,OAAAA,CACA,KACA,OAAA2qD,GAAAj+C,GAnBAkhD,EAmBAI,EAlBA,SAAAh5F,GACA,IAAAk5F,EAAAL,EAAA74F,GACA,OAAAk5F,EACA/N,EAAA0M,IAAAe,EAAA1nH,IAAAgoH,GAAAl5F,EAAAzuB,QAEAyuB,CAEA,GAYA,EACAg3F,CACA,CAzZA,GAqaAmC,GAAA,+EACA,SAAAC,KACA,QAAAC,EAAAt/G,UAAAxI,OAAA+nH,EAAA,IAAAxuG,MAAAuuG,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IACAD,EAAAC,GAAAx/G,UAAAw/G,GAEA,IAAAC,EAAAF,EAAA19G,QAAA,SAAAgwD,EAAArpB,GACA,OAAAqpB,EAAArpB,EAAA/9B,MACA,OACA,OAAA4G,OAAA,IAAAouG,EAAA,IACA,CACA,SAAAC,KACA,QAAAC,EAAA3/G,UAAAxI,OAAAooH,EAAA,IAAA7uG,MAAA4uG,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IACAD,EAAAC,GAAA7/G,UAAA6/G,GAEA,gBAAAh4F,GACA,OAAA+3F,EAAA/9G,QAAA,SAAA+lG,EAAAv6E,GACA,IAAAyyF,EAAAlY,EAAA,GACAmY,EAAAnY,EAAA,GACA5mD,EAAA4mD,EAAA,GACAoY,EAAA3yF,EAAAxF,EAAAm5B,GACApJ,EAAAooE,EAAA,GACAnX,EAAAmX,EAAA,GACAtuD,EAAAsuD,EAAA,GACA,OAAA9d,EAAA,GAAA4d,EAAAloE,GAAAixD,GAAAkX,EAAAruD,EACA,gBAAAl0D,MAAA,IACA,CACA,CACA,SAAAmV,GAAA+L,GACA,SAAAA,EACA,kBAEA,QAAAuhG,EAAAjgH,UAAAxI,OAAA0oH,EAAA,IAAAnvG,MAAAkvG,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IACAD,EAAAC,EAAA,GAAAngH,UAAAmgH,GAEA,QAAArsD,EAAA,EAAAssD,EAAAF,EAAApsD,EAAAssD,EAAA5oH,OAAAs8D,IAAA,CACA,IAAAusD,EAAAD,EAAAtsD,GACAwsD,EAAAD,EAAA,GACAE,EAAAF,EAAA,GACAx4F,EAAAy4F,EAAAhiG,KAAAI,GACA,GAAAmJ,EACA,OAAA04F,EAAA14F,EAEA,CACA,iBACA,CACA,SAAA24F,KACA,QAAAC,EAAAzgH,UAAAxI,OAAAiX,EAAA,IAAAsC,MAAA0vG,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IACAjyG,EAAAiyG,GAAA1gH,UAAA0gH,GAEA,gBAAAlvG,EAAAwvC,GACA,IACAzpD,EADAopH,EAAA,GAEA,IAAAppH,EAAA,EAAAA,EAAAkX,EAAAjX,OAAAD,IACAopH,EAAAlyG,EAAAlX,IAAAmiH,GAAAloG,EAAAwvC,EAAAzpD,IAEA,OAAAopH,EAAA,KAAA3/D,EAAAzpD,EACA,CACA,CAGA,IAAAqpH,GAAA,kCAEAC,GAAA,sDACAC,GAAAzvG,OAAA,GAAAwvG,GAAAp2G,QAFA,MAAAm2G,GAAAn2G,OAAA,WAAA20G,GAAA30G,OAAA,aAGAs2G,GAAA1vG,OAAA,OAAAyvG,GAAAr2G,OAAA,MAIAu2G,GAAAR,GAAA,mCACAS,GAAAT,GAAA,kBAEAU,GAAA7vG,OAAAwvG,GAAAp2G,OAAA,QAAAm2G,GAAAn2G,OAAA,KAAA20G,GAAA30G,OAAA,OACA02G,GAAA9vG,OAAA,OAAA6vG,GAAAz2G,OAAA,MACA,SAAAixD,GAAAlqD,EAAA+4C,EAAAgD,GACA,IAAA1lC,EAAArW,EAAA+4C,GACA,OAAA90C,GAAAoS,GAAA0lC,EAAAmsD,GAAA7xF,EACA,CASA,SAAAu5F,GAAA5vG,EAAAwvC,GAOA,OANA,CACA8sD,MAAApyC,GAAAlqD,EAAAwvC,EAAA,GACAurD,QAAA7wC,GAAAlqD,EAAAwvC,EAAA,KACA+sD,QAAAryC,GAAAlqD,EAAAwvC,EAAA,KACAqgE,aAAAzH,GAAApoG,EAAAwvC,EAAA,KAEA,KAAAA,EAAA,EACA,CACA,SAAAsgE,GAAA9vG,EAAAwvC,GACA,IAAAugE,GAAA/vG,EAAAwvC,KAAAxvC,EAAAwvC,EAAA,GACAwgE,EAAA/N,GAAAjiG,EAAAwvC,EAAA,GAAAxvC,EAAAwvC,EAAA,IAEA,UADAugE,EAAA,KAAAjO,GAAAj1G,SAAAmjH,GACAxgE,EAAA,EACA,CACA,SAAAygE,GAAAjwG,EAAAwvC,GAEA,UADAxvC,EAAAwvC,GAAAunD,EAAA/4F,OAAAgC,EAAAwvC,IAAA,KACAA,EAAA,EACA,CAIA,IAAA0gE,GAAArwG,OAAA,MAAAwvG,GAAAp2G,OAAA,KAIAk3G,GAAA,+PACA,SAAAC,GAAApwG,GACA,IAAAkN,EAAAlN,EAAA,GACAqwG,EAAArwG,EAAA,GACAswG,EAAAtwG,EAAA,GACAuwG,EAAAvwG,EAAA,GACAwwG,EAAAxwG,EAAA,GACAywG,EAAAzwG,EAAA,GACA0wG,EAAA1wG,EAAA,GACA2wG,EAAA3wG,EAAA,GACA4wG,EAAA5wG,EAAA,GACA6wG,EAAA,MAAA3jG,EAAA,GACA4jG,EAAAH,GAAA,MAAAA,EAAA,GACAI,EAAA,SAAAzE,EAAA0E,GAIA,YAHA,IAAAA,IACAA,GAAA,QAEAt9G,IAAA44G,IAAA0E,GAAA1E,GAAAuE,IAAAvE,GACA,EACA,QACArQ,MAAA8U,EAAA5I,GAAAkI,IACAlU,OAAA4U,EAAA5I,GAAAmI,IACAlU,MAAA2U,EAAA5I,GAAAoI,IACAlU,KAAA0U,EAAA5I,GAAAqI,IACAlU,MAAAyU,EAAA5I,GAAAsI,IACA1V,QAAAgW,EAAA5I,GAAAuI,IACAnU,QAAAwU,EAAA5I,GAAAwI,GAAA,OAAAA,GACAd,aAAAkB,EAAA3I,GAAAwI,GAAAE,IAEA,CAKA,IAAAG,GAAA,CACAC,IAAA,EACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,KAEA,SAAAC,GAAAC,EAAAvB,EAAAC,EAAAE,EAAAC,EAAAC,EAAAC,GACA,IAAA38F,EAAA,CACA6/E,KAAA,IAAAwc,EAAArqH,OAAA4iH,GAAAV,GAAAmI,IAAAnI,GAAAmI,GACAvc,MAAA8V,GAAAxjH,QAAAkqH,GAAA,EACAvc,IAAAmU,GAAAsI,GACAlc,KAAA4T,GAAAuI,GACAlc,OAAA2T,GAAAwI,IAMA,OAJAC,IAAA38F,EAAAqvE,OAAA6kB,GAAAyI,IACAiB,IACA59F,EAAAkgF,QAAA0d,EAAA5rH,OAAA,EAAA8jH,GAAA1jH,QAAAwrH,GAAA,EAAA7H,GAAA3jH,QAAAwrH,GAAA,GAEA59F,CACA,CAGA,IAAA69F,GAAA,kMACA,SAAAC,GAAA9xG,GACA,IAYA2pC,EAZAioE,EAAA5xG,EAAA,GACAwwG,EAAAxwG,EAAA,GACAswG,EAAAtwG,EAAA,GACAqwG,EAAArwG,EAAA,GACAywG,EAAAzwG,EAAA,GACA0wG,EAAA1wG,EAAA,GACA2wG,EAAA3wG,EAAA,GACA+xG,EAAA/xG,EAAA,GACAgyG,EAAAhyG,EAAA,GACA+oG,EAAA/oG,EAAA,IACAgpG,EAAAhpG,EAAA,IACAgU,EAAA29F,GAAAC,EAAAvB,EAAAC,EAAAE,EAAAC,EAAAC,EAAAC,GASA,OANAhnE,EADAooE,EACAd,GAAAc,GACAC,EACA,EAEA/P,GAAA8G,EAAAC,GAEA,CAAAh1F,EAAA,IAAA8tF,GAAAn4D,GACA,CAQA,IAAAsoE,GAAA,6HACAC,GAAA,yJACAC,GAAA,4HACA,SAAAC,GAAApyG,GACA,IAAA4xG,EAAA5xG,EAAA,GACAwwG,EAAAxwG,EAAA,GACAswG,EAAAtwG,EAAA,GAMA,OADA2xG,GAAAC,EAJA5xG,EAAA,GAIAswG,EAAAE,EAHAxwG,EAAA,GACAA,EAAA,GACAA,EAAA,IAEA8hG,GAAAC,YACA,CACA,SAAAsQ,GAAAryG,GACA,IAAA4xG,EAAA5xG,EAAA,GACAswG,EAAAtwG,EAAA,GACAwwG,EAAAxwG,EAAA,GACAywG,EAAAzwG,EAAA,GACA0wG,EAAA1wG,EAAA,GACA2wG,EAAA3wG,EAAA,GAGA,OADA2xG,GAAAC,EADA5xG,EAAA,GACAswG,EAAAE,EAAAC,EAAAC,EAAAC,GACA7O,GAAAC,YACA,CACA,IAAAuQ,GAAAzE,GAnKA,8CAmKA0B,IACAgD,GAAA1E,GAnKA,8BAmKA0B,IACAiD,GAAA3E,GAnKA,mBAmKA0B,IACAkD,GAAA5E,GAAAyB,IACAoD,GAAAxE,IA3JA,SAAAluG,EAAAwvC,GAMA,OALA,CACAqkD,KAAA3pC,GAAAlqD,EAAAwvC,GACAskD,MAAA5pC,GAAAlqD,EAAAwvC,EAAA,KACAukD,IAAA7pC,GAAAlqD,EAAAwvC,EAAA,MAEA,KAAAA,EAAA,EACA,GAoJAogE,GAAAE,GAAAG,IACA0C,GAAAzE,GAAAsB,GAAAI,GAAAE,GAAAG,IACA2C,GAAA1E,GAAAuB,GAAAG,GAAAE,GAAAG,IACA4C,GAAA3E,GAAA0B,GAAAE,GAAAG,IAkBA,IAAA6C,GAAA5E,GAAA0B,IAIA,IAAAmD,GAAAlF,GA3LA,wBA2LA8B,IACAqD,GAAAnF,GAAA6B,IACAuD,GAAA/E,GAAA0B,GAAAE,GAAAG,IAKA,IAAAiD,GAAA,mBAGAC,GAAA,CACA/W,MAAA,CACAC,KAAA,EACAC,MAAA,IACAvB,QAAA,MACAwB,QAAA,OACAsT,aAAA,QAEAxT,KAAA,CACAC,MAAA,GACAvB,QAAA,KACAwB,QAAA,MACAsT,aAAA,OAEAvT,MAAA,CACAvB,QAAA,GACAwB,QAAA,KACAsT,aAAA,MAEA9U,QAAA,CACAwB,QAAA,GACAsT,aAAA,KAEAtT,QAAA,CACAsT,aAAA,MAGAuD,GAAA1iB,EAAA,CACAuL,MAAA,CACAC,SAAA,EACAC,OAAA,GACAC,MAAA,GACAC,KAAA,IACAC,MAAA,KACAvB,QAAA,OACAwB,QAAA,QACAsT,aAAA,SAEA3T,SAAA,CACAC,OAAA,EACAC,MAAA,GACAC,KAAA,GACAC,MAAA,KACAvB,QAAA,OACAwB,QAAA,QACAsT,aAAA,SAEA1T,OAAA,CACAC,MAAA,EACAC,KAAA,GACAC,MAAA,IACAvB,QAAA,MACAwB,QAAA,OACAsT,aAAA,SAEAsD,IACAE,GAAA,SACAC,GAAA,UACAC,GAAA7iB,EAAA,CACAuL,MAAA,CACAC,SAAA,EACAC,OAAA,GACAC,MAAAiX,QACAhX,KAAAgX,GACA/W,MAAA+W,QACAtY,QAAAsY,SACA9W,QAAA8W,SAAA,GACAxD,aAAAwD,SAAA,QAEAnX,SAAA,CACAC,OAAA,EACAC,MAAAiX,UACAhX,KAAAgX,UACA/W,MAAA+W,SACAtY,QAAAsY,SACA9W,QAAA8W,SAAA,KACAxD,aAAAwD,mBAEAlX,OAAA,CACAC,MAAAkX,mBACAjX,KAAAiX,GACAhX,MAAAgX,QACAvY,QAAAuY,QACA/W,QAAA+W,QACAzD,aAAAyD,YAEAH,IAGAK,GAAA,wFACAC,GAAAD,GAAAxnH,MAAA,GAAA8vF,UAGA,SAAA43B,GAAAtG,EAAA5N,EAAAjzF,QACA,IAAAA,IACAA,GAAA,GAGA,IAAAonG,EAAA,CACAx1G,OAAAoO,EAAAizF,EAAArhG,OAAAuyF,EAAA,GAAA0c,EAAAjvG,OAAAqhG,EAAArhG,QAAA,IACAi7F,IAAAgU,EAAAhU,IAAArmD,MAAAysD,EAAApG,KACAwa,mBAAApU,EAAAoU,oBAAAxG,EAAAwG,mBACAlyC,OAAA89B,EAAA99B,QAAA0rC,EAAA1rC,QAEA,WAAAmyC,GAAAF,EACA,CACA,SAAAG,GAAApyC,EAAAqyC,GAGA,IAFA,IAAAC,EAEAzJ,EADA0J,EAAA,OAAAD,EAAAD,EAAAlE,cAAAmE,EAAA,EACAxJ,EAAAvY,EAAAwhB,GAAAznH,MAAA,MAAAu+G,EAAAC,KAAA3wE,MAAA,CACA,IAAAnjC,EAAA6zG,EAAAzwG,MACAi6G,EAAAr9G,KACAu9G,GAAAF,EAAAr9G,GAAAgrE,EAAAhrE,GAAA,aAEA,CACA,OAAAu9G,CACA,CAGA,SAAAC,GAAAxyC,EAAAqyC,GAGA,IAAA14G,EAAAy4G,GAAApyC,EAAAqyC,GAAA,OACAP,GAAAW,aAAA,SAAAh4C,EAAAttE,GACA,GAAAoV,GAAA8vG,EAAAllH,IA0BA,OAAAstE,EAzBA,GAAAA,EAAA,CACA,IAAAi4C,EAAAL,EAAA53C,GAAA9gE,EACAg5G,EAAA3yC,EAAA7yE,GAAAstE,GAiBAm4C,EAAAjyG,KAAAM,MAAAyxG,EAAAC,GACAN,EAAAllH,IAAAylH,EAAAj5G,EACA04G,EAAA53C,IAAAm4C,EAAAD,EAAAh5G,CACA,CACA,OAAAxM,CAIA,SAIA2kH,GAAAnjH,QAAA,SAAA8rE,EAAAttE,GACA,GAAAoV,GAAA8vG,EAAAllH,IAQA,OAAAstE,EAPA,GAAAA,EAAA,CACA,IAAAhS,EAAA4pD,EAAA53C,GAAA,EACA43C,EAAA53C,IAAAhS,EACA4pD,EAAAllH,IAAAs7D,EAAAuX,EAAAvF,GAAAttE,EACA,CACA,OAAAA,CAIA,QACA,CA6BA,IAAAglH,GAAA,SAAAU,GAIA,SAAAV,EAAAltH,GACA,IAAA6tH,EAAA,aAAA7tH,EAAAitH,qBAAA,EACAlyC,EAAA8yC,EAAAjB,GAAAH,GACAzsH,EAAA+6E,SACAA,EAAA/6E,EAAA+6E,QAMAp0E,KAAA6Q,OAAAxX,EAAAwX,OAIA7Q,KAAA8rG,IAAAzyG,EAAAyyG,KAAAgE,GAAAp/F,SAIA1Q,KAAAsmH,mBAAAY,EAAA,oBAIAlnH,KAAAmnH,QAAA9tH,EAAA8tH,SAAA,KAIAnnH,KAAAo0E,SAIAp0E,KAAAonH,iBAAA,CACA,CAWAb,EAAAc,WAAA,SAAAl5F,EAAAmxE,GACA,OAAAinB,EAAA1U,WAAA,CACA0Q,aAAAp0F,GACAmxE,EACA,EAsBAinB,EAAA1U,WAAA,SAAAzxG,EAAAk/F,GAIA,QAHA,IAAAA,IACAA,EAAA,IAEA,MAAAl/F,GAAA,iBAAAA,EACA,UAAA8lG,EAAA,uEAAA9lG,EAAA,cAAAA,IAEA,WAAAmmH,EAAA,CACA11G,OAAAkrG,GAAA37G,EAAAmmH,EAAAe,eACAxb,IAAAgE,GAAA+B,WAAAvS,GACAgnB,mBAAAhnB,EAAAgnB,mBACAlyC,OAAAkrB,EAAAlrB,QAEA,EAYAmyC,EAAAgB,iBAAA,SAAAC,GACA,GAAAxS,GAAAwS,GACA,OAAAjB,EAAAc,WAAAG,GACA,GAAAjB,EAAAkB,WAAAD,GACA,OAAAA,EACA,oBAAAA,EACA,OAAAjB,EAAA1U,WAAA2V,GAEA,UAAAthB,EAAA,6BAAAshB,EAAA,mBAAAA,EAEA,EAgBAjB,EAAAmB,QAAA,SAAA7sF,EAAAykE,GACA,IAAAqoB,EAlVA,SAAA/nG,GACA,OAAA/L,GAAA+L,EAAA,CAAAijG,GAAAC,IACA,CAgVA8E,CAAA/sF,GACA6vE,EAAAid,EAAA,GACA,OAAAjd,EACA6b,EAAA1U,WAAAnH,EAAApL,GAEAinB,EAAAY,QAAA,2BAAAtsF,EAAA,iCAEA,EAkBA0rF,EAAAsB,YAAA,SAAAhtF,EAAAykE,GACA,IAAAwoB,EAxWA,SAAAloG,GACA,OAAA/L,GAAA+L,EAAA,CAAAgjG,GAAA4C,IACA,CAsWAuC,CAAAltF,GACA6vE,EAAAod,EAAA,GACA,OAAApd,EACA6b,EAAA1U,WAAAnH,EAAApL,GAEAinB,EAAAY,QAAA,2BAAAtsF,EAAA,iCAEA,EAQA0rF,EAAAY,QAAA,SAAAt4F,EAAAooF,GAIA,QAHA,IAAAA,IACAA,EAAA,OAEApoF,EACA,UAAAq3E,EAAA,oDAEA,IAAAihB,EAAAt4F,aAAAmoF,GAAAnoF,EAAA,IAAAmoF,GAAAnoF,EAAAooF,GACA,GAAA1F,GAAAqF,eACA,UAAAhR,EAAAuhB,GAEA,WAAAZ,EAAA,CACAY,WAGA,EAKAZ,EAAAe,cAAA,SAAAl+G,GACA,IAAA6yG,EAAA,CACA1V,KAAA,QACAoI,MAAA,QACAgR,QAAA,WACA/Q,SAAA,WACApI,MAAA,SACAqI,OAAA,SACAmZ,KAAA,QACAlZ,MAAA,QACArI,IAAA,OACAsI,KAAA,OACA/H,KAAA,QACAgI,MAAA,QACA/H,OAAA,UACAwG,QAAA,UACA1X,OAAA,UACAkZ,QAAA,UACA/D,YAAA,eACAqX,aAAA,gBACAn5G,IAAA9O,cAAA8O,GACA,IAAA6yG,EAAA,UAAAjW,EAAA58F,GACA,OAAA6yG,CACA,EAOAsK,EAAAkB,WAAA,SAAAjkB,GACA,OAAAA,KAAA4jB,kBAAA,CACA,EAMA,IAAA/e,EAAAke,EAAAxmH,UAolBA,OA7jBAsoG,EAAA4f,SAAA,SAAA1J,EAAAjf,QACA,IAAAA,IACAA,EAAA,IAGA,IAAA4oB,EAAA9kB,EAAA,GAAA9D,EAAA,CACAjqF,OAAA,IAAAiqF,EAAAz0C,QAAA,IAAAy0C,EAAAjqF,QAEA,OAAArV,KAAAiM,QAAAkyG,GAAAztG,OAAA1Q,KAAA8rG,IAAAoc,GAAArI,yBAAA7/G,KAAAu+G,GAAAqH,EACA,EAgBAvd,EAAA8f,QAAA,SAAA7oB,GACA,IAAA1f,EAAA5/E,KAIA,QAHA,IAAAs/F,IACAA,EAAA,KAEAt/F,KAAAiM,QAAA,OAAA25G,GACA,IAAA7xD,EAAAmyD,GAAAh/G,KAAA,SAAAkC,GACA,IAAA0vC,EAAA8mC,EAAA/uE,OAAAzH,GACA,OAAAuN,GAAAmiC,GACA,KAEA8mC,EAAAksB,IAAAyH,gBAAAnQ,EAAA,CACAnnE,MAAA,OACAmsF,YAAA,QACA9oB,EAAA,CACAl2F,OAAA1K,MAAA,SACAihB,OAAAm5B,EACA,IAAA3+B,QAAA,SAAAi4C,GACA,OAAAA,CACA,IACA,OAAApyD,KAAA8rG,IAAA4H,cAAAtQ,EAAA,CACA19F,KAAA,cACAu2B,MAAAqjE,EAAA+oB,WAAA,UACA/oB,IAAA3/E,OAAAo0C,EACA,EAOAs0C,EAAAigB,SAAA,WACA,OAAAtoH,KAAAiM,QACAm3F,EAAA,GAAApjG,KAAA6Q,QADA,EAEA,EAYAw3F,EAAAkgB,MAAA,WAEA,IAAAvoH,KAAAiM,QAAA,YACA,IAAA2T,EAAA,IAaA,OAZA,IAAA5f,KAAA2uG,QAAA/uF,GAAA5f,KAAA2uG,MAAA,KACA,IAAA3uG,KAAA6uG,QAAA,IAAA7uG,KAAA4uG,WAAAhvF,GAAA5f,KAAA6uG,OAAA,EAAA7uG,KAAA4uG,SAAA,KACA,IAAA5uG,KAAA8uG,QAAAlvF,GAAA5f,KAAA8uG,MAAA,KACA,IAAA9uG,KAAA+uG,OAAAnvF,GAAA5f,KAAA+uG,KAAA,KACA,IAAA/uG,KAAAgvG,OAAA,IAAAhvG,KAAAytG,SAAA,IAAAztG,KAAAivG,SAAA,IAAAjvG,KAAAuiH,eAAA3iG,GAAA,KACA,IAAA5f,KAAAgvG,QAAApvF,GAAA5f,KAAAgvG,MAAA,KACA,IAAAhvG,KAAAytG,UAAA7tF,GAAA5f,KAAAytG,QAAA,KACA,IAAAztG,KAAAivG,SAAA,IAAAjvG,KAAAuiH,eAGA3iG,GAAAotF,GAAAhtG,KAAAivG,QAAAjvG,KAAAuiH,aAAA,YACA,MAAA3iG,OAAA,OACAA,CACA,EAkBAyoF,EAAAmgB,UAAA,SAAAlpB,GAIA,QAHA,IAAAA,IACAA,EAAA,KAEAt/F,KAAAiM,QAAA,YACA,IAAAw8G,EAAAzoH,KAAA0oH,WACA,OAAAD,EAAA,GAAAA,GAAA,YACAnpB,EAAA8D,EAAA,CACAulB,sBAAA,EACAC,iBAAA,EACAC,eAAA,EACAlpG,OAAA,YACA2/E,EAAA,CACAwpB,eAAA,IAEArW,GAAA4U,WAAAoB,EAAA,CACA1e,KAAA,QAEAye,UAAAlpB,GACA,EAMA+I,EAAA0gB,OAAA,WACA,OAAA/oH,KAAAuoH,OACA,EAMAlgB,EAAA53F,SAAA,WACA,OAAAzQ,KAAAuoH,OACA,EAMAlgB,EAAA4e,GAAA,WACA,OAAAjnH,KAAAiM,QACA,sBAAA2H,KAAAE,UAAA9T,KAAA6Q,QAAA,KAEA,+BAAA7Q,KAAAgpH,cAAA,IAEA,EAMA3gB,EAAAqgB,SAAA,WACA,OAAA1oH,KAAAiM,QACAu6G,GAAAxmH,KAAAo0E,OAAAp0E,KAAA6Q,QADAq5F,GAEA,EAMA7B,EAAApE,QAAA,WACA,OAAAjkG,KAAA0oH,UACA,EAOArgB,EAAAmF,KAAA,SAAAjmD,GACA,IAAAvnD,KAAAiM,QAAA,OAAAjM,KAGA,IAFA,IAAA8/G,EAAAyG,EAAAgB,iBAAAhgE,GACA7gC,EAAA,GACAuiG,EAAA,EAAAC,EAAAhD,GAAA+C,EAAAC,EAAAxwH,OAAAuwH,IAAA,CACA,IAAA9M,EAAA+M,EAAAD,IACAp2F,GAAAitF,EAAAjvG,OAAAsrG,IAAAtpF,GAAA7yB,KAAA6Q,OAAAsrG,MACAz1F,EAAAy1F,GAAA2D,EAAAznH,IAAA8jH,GAAAn8G,KAAA3H,IAAA8jH,GAEA,CACA,OAAAiK,GAAApmH,KAAA,CACA6Q,OAAA6V,IACA,EACA,EAOA2hF,EAAA8gB,MAAA,SAAA5hE,GACA,IAAAvnD,KAAAiM,QAAA,OAAAjM,KACA,IAAA8/G,EAAAyG,EAAAgB,iBAAAhgE,GACA,OAAAvnD,KAAAwtG,KAAAsS,EAAAsJ,SACA,EASA/gB,EAAAghB,SAAA,SAAAjqG,GACA,IAAApf,KAAAiM,QAAA,OAAAjM,KAEA,IADA,IAAA0mB,EAAA,GACA4iG,EAAA,EAAAC,EAAArpH,OAAAyP,KAAA3P,KAAA6Q,QAAAy4G,EAAAC,EAAA7wH,OAAA4wH,IAAA,CACA,IAAAnN,EAAAoN,EAAAD,GACA5iG,EAAAy1F,GAAAN,GAAAz8F,EAAApf,KAAA6Q,OAAAsrG,MACA,CACA,OAAAiK,GAAApmH,KAAA,CACA6Q,OAAA6V,IACA,EACA,EAUA2hF,EAAAhwG,IAAA,SAAA+Q,GACA,OAAApJ,KAAAumH,EAAAe,cAAAl+G,GACA,EASAi/F,EAAA3wG,IAAA,SAAAmZ,GACA,OAAA7Q,KAAAiM,QAEAm6G,GAAApmH,KAAA,CACA6Q,OAFAuyF,EAAA,GAAApjG,KAAA6Q,OAAAkrG,GAAAlrG,EAAA01G,EAAAe,kBADAtnH,IAKA,EAOAqoG,EAAAmhB,YAAA,SAAA1X,GACA,IAAAhJ,OAAA,IAAAgJ,EAAA,GAAAA,EACA9I,EAAAF,EAAAE,OACAwH,EAAA1H,EAAA0H,gBACA8V,EAAAxd,EAAAwd,mBACAlyC,EAAA00B,EAAA10B,OAUA,OAAAgyC,GAAApmH,KALA,CACA8rG,IALA9rG,KAAA8rG,IAAArmD,MAAA,CACAujD,SACAwH,oBAIAp8B,SACAkyC,sBAGA,EAUAje,EAAAohB,GAAA,SAAArgH,GACA,OAAApJ,KAAAiM,QAAAjM,KAAAogH,QAAAh3G,GAAA/Q,IAAA+Q,GAAA8gG,GACA,EAiBA7B,EAAAqhB,UAAA,WACA,IAAA1pH,KAAAiM,QAAA,OAAAjM,KACA,IAAAymH,EAAAzmH,KAAAsoH,WAEA,OADA1B,GAAA5mH,KAAAo0E,OAAAqyC,GACAL,GAAApmH,KAAA,CACA6Q,OAAA41G,IACA,EACA,EAOApe,EAAAshB,QAAA,WACA,OAAA3pH,KAAAiM,QAEAm6G,GAAApmH,KAAA,CACA6Q,OA7kBA,SAAA41G,GAEA,IADA,IAAAmD,EAAA,GACA50D,EAAA,EAAA60D,EAAA3pH,OAAA4pH,QAAArD,GAAAzxD,EAAA60D,EAAAnxH,OAAAs8D,IAAA,CACA,IAAA+0D,EAAAF,EAAA70D,GACApkD,EAAAm5G,EAAA,GACAv9G,EAAAu9G,EAAA,GACA,IAAAv9G,IACAo9G,EAAAh5G,GAAApE,EAEA,CACA,OAAAo9G,CACA,CAgkBAI,CAAAhqH,KAAA0pH,YAAAO,aAAA3B,cAGA,GAJAtoH,IAKA,EAOAqoG,EAAA+X,QAAA,WACA,QAAAI,EAAAt/G,UAAAxI,OAAAg2G,EAAA,IAAAz8F,MAAAuuG,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IACAhS,EAAAgS,GAAAx/G,UAAAw/G,GAEA,IAAA1gH,KAAAiM,QAAA,OAAAjM,KACA,OAAA0uG,EAAAh2G,OACA,OAAAsH,KAEA0uG,IAAAxnG,KAAA,SAAAg1G,GACA,OAAAqK,EAAAe,cAAApL,EACA,IAKA,IAJA,IAGAgO,EAHAC,EAAA,GACAC,EAAA,GACA3D,EAAAzmH,KAAAsoH,WAEA+B,EAAA,EAAAC,EAAApE,GAAAmE,EAAAC,EAAA5xH,OAAA2xH,IAAA,CACA,IAAAlO,EAAAmO,EAAAD,GACA,GAAA3b,EAAA51G,QAAAqjH,IAAA,GACA+N,EAAA/N,EACA,IAAAoO,EAAA,EAGA,QAAAC,KAAAJ,EACAG,GAAAvqH,KAAAo0E,OAAAo2C,GAAArO,GAAAiO,EAAAI,GACAJ,EAAAI,GAAA,EAIAxV,GAAAyR,EAAAtK,MACAoO,GAAA9D,EAAAtK,IAKA,IAAA1jH,EAAAsc,KAAAimG,MAAAuP,GACAJ,EAAAhO,GAAA1jH,EACA2xH,EAAAjO,IAAA,IAAAoO,EAAA,IAAA9xH,GAAA,GAGA,MAAAu8G,GAAAyR,EAAAtK,MACAiO,EAAAjO,GAAAsK,EAAAtK,GAEA,CAIA,QAAAvrG,KAAAw5G,EACA,IAAAA,EAAAx5G,KACAu5G,EAAAD,IAAAt5G,IAAAs5G,EAAAE,EAAAx5G,GAAAw5G,EAAAx5G,GAAA5Q,KAAAo0E,OAAA81C,GAAAt5G,IAIA,OADAg2G,GAAA5mH,KAAAo0E,OAAA+1C,GACA/D,GAAApmH,KAAA,CACA6Q,OAAAs5G,IACA,EACA,EAOA9hB,EAAA4hB,WAAA,WACA,OAAAjqH,KAAAiM,QACAjM,KAAAogH,QAAA,4EADApgH,IAEA,EAOAqoG,EAAA+gB,OAAA,WACA,IAAAppH,KAAAiM,QAAA,OAAAjM,KAEA,IADA,IAAAyqH,EAAA,GACAC,EAAA,EAAAC,EAAAzqH,OAAAyP,KAAA3P,KAAA6Q,QAAA65G,EAAAC,EAAAjyH,OAAAgyH,IAAA,CACA,IAAAvO,EAAAwO,EAAAD,GACAD,EAAAtO,GAAA,IAAAn8G,KAAA6Q,OAAAsrG,GAAA,GAAAn8G,KAAA6Q,OAAAsrG,EACA,CACA,OAAAiK,GAAApmH,KAAA,CACA6Q,OAAA45G,IACA,EACA,EAYApiB,EAAAI,OAAA,SAAA6L,GACA,IAAAt0G,KAAAiM,UAAAqoG,EAAAroG,QACA,SAEA,IAAAjM,KAAA8rG,IAAArD,OAAA6L,EAAAxI,KACA,SAOA,QAAA8e,EAAA,EAAAC,EAAA3E,GAAA0E,EAAAC,EAAAnyH,OAAAkyH,IAAA,CACA,IAAA1O,EAAA2O,EAAAD,GACA,GAPAE,EAOA9qH,KAAA6Q,OAAAqrG,GAPA6O,EAOAzW,EAAAzjG,OAAAqrG,UALA91G,IAAA0kH,GAAA,IAAAA,OAAA1kH,IAAA2kH,GAAA,IAAAA,EACAD,IAAAC,GAKA,QAEA,CAVA,IAAAD,EAAAC,EAWA,QACA,EACA/nB,EAAAujB,EAAA,EACA31G,IAAA,SACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAA8rG,IAAA9C,OAAA,IACA,GAOA,CACAp4F,IAAA,kBACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAA8rG,IAAA0E,gBAAA,IACA,GACA,CACA5/F,IAAA,QACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAA6Q,OAAA89F,OAAA,EAAAzE,GACA,GAMA,CACAt5F,IAAA,WACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAA6Q,OAAA+9F,UAAA,EAAA1E,GACA,GAMA,CACAt5F,IAAA,SACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAA6Q,OAAAg+F,QAAA,EAAA3E,GACA,GAMA,CACAt5F,IAAA,QACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAA6Q,OAAAi+F,OAAA,EAAA5E,GACA,GAMA,CACAt5F,IAAA,OACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAA6Q,OAAAk+F,MAAA,EAAA7E,GACA,GAMA,CACAt5F,IAAA,QACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAA6Q,OAAAm+F,OAAA,EAAA9E,GACA,GAMA,CACAt5F,IAAA,UACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAA6Q,OAAA48F,SAAA,EAAAvD,GACA,GAMA,CACAt5F,IAAA,UACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAA6Q,OAAAo+F,SAAA,EAAA/E,GACA,GAMA,CACAt5F,IAAA,eACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAA6Q,OAAA0xG,cAAA,EAAArY,GACA,GAOA,CACAt5F,IAAA,UACAvY,IAAA,WACA,cAAA2H,KAAAmnH,OACA,GAMA,CACAv2G,IAAA,gBACAvY,IAAA,WACA,OAAA2H,KAAAmnH,QAAAnnH,KAAAmnH,QAAAt4F,OAAA,IACA,GAMA,CACAje,IAAA,qBACAvY,IAAA,WACA,OAAA2H,KAAAmnH,QAAAnnH,KAAAmnH,QAAAlQ,YAAA,IACA,KAEAsP,CACA,CApzBA,CAozBAhzD,OAAAy3D,IAAA,+BAEAC,GAAA,mBAGA,SAAAC,GAAAhqG,EAAAsnC,GACA,OAAAtnC,KAAAjV,QAEAu8C,KAAAv8C,QAEAu8C,EAAAtnC,EACAiqG,GAAAhE,QAAA,wFAAAjmG,EAAAqnG,QAAA,YAAA//D,EAAA+/D,SAEA,KAJA4C,GAAAhE,QAAA,0BAFAgE,GAAAhE,QAAA,2BAQA,CAcA,IAAAgE,GAAA,SAAAlE,GAIA,SAAAkE,EAAA9xH,GAIA2G,KAAA4f,EAAAvmB,EAAA6nB,MAIAlhB,KAAAsY,EAAAjf,EAAAmvD,IAIAxoD,KAAAmnH,QAAA9tH,EAAA8tH,SAAA,KAIAnnH,KAAAorH,iBAAA,CACA,CAQAD,EAAAhE,QAAA,SAAAt4F,EAAAooF,GAIA,QAHA,IAAAA,IACAA,EAAA,OAEApoF,EACA,UAAAq3E,EAAA,oDAEA,IAAAihB,EAAAt4F,aAAAmoF,GAAAnoF,EAAA,IAAAmoF,GAAAnoF,EAAAooF,GACA,GAAA1F,GAAAqF,eACA,UAAAlR,EAAAyhB,GAEA,WAAAgE,EAAA,CACAhE,WAGA,EAQAgE,EAAAE,cAAA,SAAAnqG,EAAAsnC,GACA,IAAA8iE,EAAAC,GAAArqG,GACAsqG,EAAAD,GAAA/iE,GACAijE,EAAAP,GAAAI,EAAAE,GACA,aAAAC,EACA,IAAAN,EAAA,CACAjqG,MAAAoqG,EACA9iE,IAAAgjE,IAGAC,CAEA,EAQAN,EAAAhhC,MAAA,SAAAjpE,EAAAqmC,GACA,IAAAu4D,EAAAyG,GAAAgB,iBAAAhgE,GACA2lD,EAAAqe,GAAArqG,GACA,OAAAiqG,EAAAE,cAAAne,IAAAM,KAAAsS,GACA,EAQAqL,EAAA3wD,OAAA,SAAAhS,EAAAjB,GACA,IAAAu4D,EAAAyG,GAAAgB,iBAAAhgE,GACA2lD,EAAAqe,GAAA/iE,GACA,OAAA2iE,EAAAE,cAAAne,EAAAic,MAAArJ,GAAA5S,EACA,EAUAie,EAAAzD,QAAA,SAAA7sF,EAAAykE,GACA,IAAAosB,GAAA7wF,GAAA,IAAAriC,MAAA,OACAonB,EAAA8rG,EAAA,GACApzG,EAAAozG,EAAA,GACA,GAAA9rG,GAAAtH,EAAA,CACA,IAAA4I,EAAAyqG,EAOAnjE,EAAAojE,EANA,IAEAD,GADAzqG,EAAAuxF,GAAAiV,QAAA9nG,EAAA0/E,IACArzF,OACA,OAAAqM,GACAqzG,GAAA,CACA,CAEA,IAEAC,GADApjE,EAAAiqD,GAAAiV,QAAApvG,EAAAgnF,IACArzF,OACA,OAAAqM,GACAszG,GAAA,CACA,CACA,GAAAD,GAAAC,EACA,OAAAT,EAAAE,cAAAnqG,EAAAsnC,GAEA,GAAAmjE,EAAA,CACA,IAAA7L,EAAAyG,GAAAmB,QAAApvG,EAAAgnF,GACA,GAAAwgB,EAAA7zG,QACA,OAAAk/G,EAAAhhC,MAAAjpE,EAAA4+F,EAEA,SAAA8L,EAAA,CACA,IAAAC,EAAAtF,GAAAmB,QAAA9nG,EAAA0/E,GACA,GAAAusB,EAAA5/G,QACA,OAAAk/G,EAAA3wD,OAAAhS,EAAAqjE,EAEA,CACA,CACA,OAAAV,EAAAhE,QAAA,2BAAAtsF,EAAA,iCACA,EAOAswF,EAAAW,WAAA,SAAAtoB,GACA,OAAAA,KAAA4nB,kBAAA,CACA,EAMA,IAAA/iB,EAAA8iB,EAAAprH,UA8fA,OAxfAsoG,EAAA3vG,OAAA,SAAA0Q,GAIA,YAHA,IAAAA,IACAA,EAAA,gBAEApJ,KAAAiM,QAAAjM,KAAA+rH,WAAA9qH,MAAAjB,KAAA,CAAAoJ,IAAA/Q,IAAA+Q,GAAA8gG,GACA,EAWA7B,EAAAl6E,MAAA,SAAA/kB,EAAAk2F,GAIA,QAHA,IAAAl2F,IACAA,EAAA,iBAEApJ,KAAAiM,QAAA,OAAAi+F,IACA,IACA1hD,EADAtnC,EAAAlhB,KAAAkhB,MAAA8qG,QAAA5iH,EAAAk2F,GAUA,OADA92C,GANAA,EADA,MAAA82C,KAAA2sB,eACAjsH,KAAAwoD,IAAAghE,YAAA,CACAxgB,OAAA9nF,EAAA8nF,SAGAhpG,KAAAwoD,KAEAwjE,QAAA5iH,EAAAk2F,GACAvqF,KAAAM,MAAAmzC,EAAA0jE,KAAAhrG,EAAA9X,GAAA/Q,IAAA+Q,KAAAo/C,EAAAy7C,YAAAjkG,KAAAwoD,IAAAy7C,UACA,EAOAoE,EAAA8jB,QAAA,SAAA/iH,GACA,QAAApJ,KAAAiM,UAAAjM,KAAAosH,WAAApsH,KAAAsY,EAAA6wG,MAAA,GAAAgD,QAAAnsH,KAAA4f,EAAAxW,GACA,EAMAi/F,EAAA+jB,QAAA,WACA,OAAApsH,KAAA4f,EAAAqkF,YAAAjkG,KAAAsY,EAAA2rF,SACA,EAOAoE,EAAAgkB,QAAA,SAAAl7G,GACA,QAAAnR,KAAAiM,SACAjM,KAAA4f,EAAAzO,CACA,EAOAk3F,EAAAikB,SAAA,SAAAn7G,GACA,QAAAnR,KAAAiM,SACAjM,KAAAsY,GAAAnH,CACA,EAOAk3F,EAAAtmG,SAAA,SAAAoP,GACA,QAAAnR,KAAAiM,UACAjM,KAAA4f,GAAAzO,GAAAnR,KAAAsY,EAAAnH,EACA,EASAk3F,EAAA3wG,IAAA,SAAAo6G,GACA,IAAAhJ,OAAA,IAAAgJ,EAAA,GAAAA,EACA5wF,EAAA4nF,EAAA5nF,MACAsnC,EAAAsgD,EAAAtgD,IACA,OAAAxoD,KAAAiM,QACAk/G,EAAAE,cAAAnqG,GAAAlhB,KAAA4f,EAAA4oC,GAAAxoD,KAAAsY,GADAtY,IAEA,EAOAqoG,EAAAkkB,QAAA,WACA,IAAA3sC,EAAA5/E,KACA,IAAAA,KAAAiM,QAAA,SACA,QAAAu0G,EAAAt/G,UAAAxI,OAAA8zH,EAAA,IAAAv6G,MAAAuuG,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IACA8L,EAAA9L,GAAAx/G,UAAAw/G,GAUA,IARA,IAAA+L,EAAAD,EAAAtlH,IAAAqkH,IAAApxG,QAAA,SAAA9B,GACA,OAAAunE,EAAA79E,SAAAsW,EACA,IAAAq0G,MAAA,SAAAh6F,EAAAg/B,GACA,OAAAh/B,EAAAg2F,WAAAh3D,EAAAg3D,UACA,IACAvwF,EAAA,GACAvY,EAAA5f,KAAA4f,EACAnnB,EAAA,EACAmnB,EAAA5f,KAAAsY,GAAA,CACA,IAAAq0G,EAAAF,EAAAh0H,IAAAuH,KAAAsY,EACAs6C,GAAA+5D,GAAA3sH,KAAAsY,EAAAtY,KAAAsY,EAAAq0G,EACAx0F,EAAAt3B,KAAAsqH,EAAAE,cAAAzrG,EAAAgzC,IACAhzC,EAAAgzC,EACAn6D,GAAA,CACA,CACA,OAAA0/B,CACA,EAQAkwE,EAAAukB,QAAA,SAAArlE,GACA,IAAAu4D,EAAAyG,GAAAgB,iBAAAhgE,GACA,IAAAvnD,KAAAiM,UAAA6zG,EAAA7zG,SAAA,IAAA6zG,EAAA2J,GAAA,gBACA,SAMA,IAJA,IAEA72D,EAFAhzC,EAAA5f,KAAA4f,EACAitG,EAAA,EAEA10F,EAAA,GACAvY,EAAA5f,KAAAsY,GAAA,CACA,IAAAq0G,EAAA3sH,KAAAkhB,MAAAssF,KAAAsS,EAAAuJ,UAAA,SAAAjlH,GACA,OAAAA,EAAAyoH,CACA,KACAj6D,GAAA+5D,GAAA3sH,KAAAsY,EAAAtY,KAAAsY,EAAAq0G,EACAx0F,EAAAt3B,KAAAsqH,EAAAE,cAAAzrG,EAAAgzC,IACAhzC,EAAAgzC,EACAi6D,GAAA,CACA,CACA,OAAA10F,CACA,EAOAkwE,EAAAykB,cAAA,SAAAC,GACA,OAAA/sH,KAAAiM,QACAjM,KAAA4sH,QAAA5sH,KAAAtH,SAAAq0H,GAAAruH,MAAA,EAAAquH,GADA,EAEA,EAOA1kB,EAAA2kB,SAAA,SAAA1Y,GACA,OAAAt0G,KAAAsY,EAAAg8F,EAAA10F,GAAA5f,KAAA4f,EAAA00F,EAAAh8F,CACA,EAOA+vF,EAAA4kB,WAAA,SAAA3Y,GACA,QAAAt0G,KAAAiM,UACAjM,KAAAsY,IAAAg8F,EAAA10F,CACA,EAOAyoF,EAAA6kB,SAAA,SAAA5Y,GACA,QAAAt0G,KAAAiM,UACAqoG,EAAAh8F,IAAAtY,KAAA4f,CACA,EAOAyoF,EAAA8kB,QAAA,SAAA7Y,GACA,QAAAt0G,KAAAiM,UACAjM,KAAA4f,GAAA00F,EAAA10F,GAAA5f,KAAAsY,GAAAg8F,EAAAh8F,EACA,EAOA+vF,EAAAI,OAAA,SAAA6L,GACA,SAAAt0G,KAAAiM,UAAAqoG,EAAAroG,WAGAjM,KAAA4f,EAAA6oF,OAAA6L,EAAA10F,IAAA5f,KAAAsY,EAAAmwF,OAAA6L,EAAAh8F,GACA,EASA+vF,EAAA+kB,aAAA,SAAA9Y,GACA,IAAAt0G,KAAAiM,QAAA,OAAAjM,KACA,IAAA4f,EAAA5f,KAAA4f,EAAA00F,EAAA10F,EAAA5f,KAAA4f,EAAA00F,EAAA10F,EACAtH,EAAAtY,KAAAsY,EAAAg8F,EAAAh8F,EAAAtY,KAAAsY,EAAAg8F,EAAAh8F,EACA,OAAAsH,GAAAtH,EACA,KAEA6yG,EAAAE,cAAAzrG,EAAAtH,EAEA,EAQA+vF,EAAAglB,MAAA,SAAA/Y,GACA,IAAAt0G,KAAAiM,QAAA,OAAAjM,KACA,IAAA4f,EAAA5f,KAAA4f,EAAA00F,EAAA10F,EAAA5f,KAAA4f,EAAA00F,EAAA10F,EACAtH,EAAAtY,KAAAsY,EAAAg8F,EAAAh8F,EAAAtY,KAAAsY,EAAAg8F,EAAAh8F,EACA,OAAA6yG,EAAAE,cAAAzrG,EAAAtH,EACA,EAQA6yG,EAAAmC,MAAA,SAAAC,GACA,IAAAC,EAAAD,EAAAb,MAAA,SAAAh6F,EAAAg/B,GACA,OAAAh/B,EAAA9S,EAAA8xC,EAAA9xC,CACA,IAAA7c,QAAA,SAAAsnG,EAAAl4F,GACA,IAAAs7G,EAAApjB,EAAA,GACA9oG,EAAA8oG,EAAA,GACA,OAAA9oG,EAEAA,EAAAyrH,SAAA76G,IAAA5Q,EAAA0rH,WAAA96G,GACA,CAAAs7G,EAAAlsH,EAAA8rH,MAAAl7G,IAEA,CAAAs7G,EAAA/lF,OAAA,CAAAnmC,IAAA4Q,GAJA,CAAAs7G,EAAAt7G,EAMA,cACA+tG,EAAAsN,EAAA,GACAE,EAAAF,EAAA,GAIA,OAHAE,GACAxN,EAAAr/G,KAAA6sH,GAEAxN,CACA,EAOAiL,EAAAwC,IAAA,SAAAJ,GAkBA,IAjBA,IAAAK,EAiBA3Q,EAhBA/7F,EAAA,KACA2sG,EAAA,EACA11F,EAAA,GACA21F,EAAAP,EAAArmH,KAAA,SAAAzO,GACA,QACAy8E,KAAAz8E,EAAAmnB,EACAla,KAAA,KACA,CACAwvE,KAAAz8E,EAAA6f,EACA5S,KAAA,KAEA,IAKAw3G,EAAAvY,GAJAipB,EAAA37G,MAAAlS,WAAA2nC,OAAAzmC,MAAA2sH,EAAAE,GACApB,MAAA,SAAAh6F,EAAAg/B,GACA,OAAAh/B,EAAAwiD,KAAAxjB,EAAAwjB,IACA,OACA+nC,EAAAC,KAAA3wE,MAAA,CACA,IAAA9zC,EAAAwkH,EAAAzwG,MAEA,KADAqhH,GAAA,MAAAp1H,EAAAiN,KAAA,MAEAwb,EAAAzoB,EAAAy8E,MAEAh0D,QAAAzoB,EAAAy8E,MACA/8C,EAAAt3B,KAAAsqH,EAAAE,cAAAnqG,EAAAzoB,EAAAy8E,OAEAh0D,EAAA,KAEA,CACA,OAAAiqG,EAAAmC,MAAAn1F,EACA,EAOAkwE,EAAA0lB,WAAA,WAEA,IADA,IAAAzb,EAAAtyG,KACA6gH,EAAA3/G,UAAAxI,OAAA60H,EAAA,IAAAt7G,MAAA4uG,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IACAwM,EAAAxM,GAAA7/G,UAAA6/G,GAEA,OAAAoK,EAAAwC,IAAA,CAAA3tH,MAAA0nC,OAAA6lF,IAAArmH,KAAA,SAAAzO,GACA,OAAA65G,EAAA8a,aAAA30H,EACA,IAAA0hB,QAAA,SAAA1hB,GACA,OAAAA,MAAA2zH,SACA,GACA,EAMA/jB,EAAA53F,SAAA,WACA,OAAAzQ,KAAAiM,QACA,IAAAjM,KAAA4f,EAAA2oG,QAAA,MAAAvoH,KAAAsY,EAAAiwG,QAAA,IADA0C,EAEA,EAMA5iB,EAAA4e,GAAA,WACA,OAAAjnH,KAAAiM,QACA,qBAAAjM,KAAA4f,EAAA2oG,QAAA,UAAAvoH,KAAAsY,EAAAiwG,QAAA,KAEA,+BAAAvoH,KAAAgpH,cAAA,IAEA,EAoBA3gB,EAAA2lB,eAAA,SAAA5P,EAAA9e,GAOA,YANA,IAAA8e,IACAA,EAAA9X,QAEA,IAAAhH,IACAA,EAAA,IAEAt/F,KAAAiM,QAAAkyG,GAAAztG,OAAA1Q,KAAA4f,EAAAksF,IAAArmD,MAAA65C,GAAA8e,GAAAU,eAAA9+G,MAAAirH,EACA,EAQA5iB,EAAAkgB,MAAA,SAAAjpB,GACA,OAAAt/F,KAAAiM,QACAjM,KAAA4f,EAAA2oG,MAAAjpB,GAAA,IAAAt/F,KAAAsY,EAAAiwG,MAAAjpB,GADA2rB,EAEA,EAQA5iB,EAAA4lB,UAAA,WACA,OAAAjuH,KAAAiM,QACAjM,KAAA4f,EAAAquG,YAAA,IAAAjuH,KAAAsY,EAAA21G,YADAhD,EAEA,EASA5iB,EAAAmgB,UAAA,SAAAlpB,GACA,OAAAt/F,KAAAiM,QACAjM,KAAA4f,EAAA4oG,UAAAlpB,GAAA,IAAAt/F,KAAAsY,EAAAkwG,UAAAlpB,GADA2rB,EAEA,EAaA5iB,EAAA4f,SAAA,SAAAtjH,EAAAupH,GACA,IACAC,QADA,IAAAD,EAAA,GAAAA,GACArjC,UACAA,OAAA,IAAAsjC,EAAA,MAAAA,EACA,OAAAnuH,KAAAiM,QACA,GAAAjM,KAAA4f,EAAAqoG,SAAAtjH,GAAAkmF,EAAA7qF,KAAAsY,EAAA2vG,SAAAtjH,GADAsmH,EAEA,EAcA5iB,EAAA0jB,WAAA,SAAA3iH,EAAAk2F,GACA,OAAAt/F,KAAAiM,QAGAjM,KAAAsY,EAAA4zG,KAAAlsH,KAAA4f,EAAAxW,EAAAk2F,GAFAinB,GAAAY,QAAAnnH,KAAAgpH,cAGA,EASA3gB,EAAA+lB,aAAA,SAAAC,GACA,OAAAlD,EAAAE,cAAAgD,EAAAruH,KAAA4f,GAAAyuG,EAAAruH,KAAAsY,GACA,EACA0qF,EAAAmoB,EAAA,EACAv6G,IAAA,QACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAA4f,EAAA,IACA,GAMA,CACAhP,IAAA,MACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAAsY,EAAA,IACA,GAMA,CACA1H,IAAA,UACAvY,IAAA,WACA,cAAA2H,KAAAgpH,aACA,GAMA,CACAp4G,IAAA,gBACAvY,IAAA,WACA,OAAA2H,KAAAmnH,QAAAnnH,KAAAmnH,QAAAt4F,OAAA,IACA,GAMA,CACAje,IAAA,qBACAvY,IAAA,WACA,OAAA2H,KAAAmnH,QAAAnnH,KAAAmnH,QAAAlQ,YAAA,IACA,KAEAkU,CACA,CAnpBA,CAmpBA53D,OAAAy3D,IAAA,+BAKAsD,GAAA,WACA,SAAAA,IAAA,CAqQA,OA/PAA,EAAAC,OAAA,SAAAxkB,QACA,IAAAA,IACAA,EAAAwH,GAAAuD,aAEA,IAAA0Z,EAAA/b,GAAAzT,MAAAuO,QAAAxD,GAAAryG,IAAA,CACA8uG,MAAA,KAEA,OAAAuD,EAAA0kB,aAAAD,EAAAnyE,SAAAmyE,EAAA92H,IAAA,CACA8uG,MAAA,IACAnqD,MACA,EAOAiyE,EAAAI,gBAAA,SAAA3kB,GACA,OAAAN,EAAAG,YAAAG,EACA,EAgBAukB,EAAAzZ,cAAA,SAAA9jE,GACA,OAAA8jE,GAAA9jE,EAAAwgE,GAAAuD,YACA,EASAwZ,EAAAna,eAAA,SAAArC,GACA,IAAAhJ,OAAA,IAAAgJ,EAAA,GAAAA,EACA6c,EAAA7lB,EAAAE,OACAA,OAAA,IAAA2lB,EAAA,KAAAA,EACAC,EAAA9lB,EAAA+lB,OAEA,aADA,IAAAD,EAAA,KAAAA,IACA9e,GAAAp/F,OAAAs4F,IAAAmL,gBACA,EAUAma,EAAAQ,0BAAA,SAAAZ,GACA,IAAA7jB,OAAA,IAAA6jB,EAAA,GAAAA,EACAa,EAAA1kB,EAAArB,OACAA,OAAA,IAAA+lB,EAAA,KAAAA,EACAC,EAAA3kB,EAAAwkB,OAEA,aADA,IAAAG,EAAA,KAAAA,IACAlf,GAAAp/F,OAAAs4F,IAAAoL,uBACA,EASAka,EAAAW,mBAAA,SAAAC,GACA,IAAAC,OAAA,IAAAD,EAAA,GAAAA,EACAE,EAAAD,EAAAnmB,OACAA,OAAA,IAAAomB,EAAA,KAAAA,EACAC,EAAAF,EAAAN,OAGA,aAFA,IAAAQ,EAAA,KAAAA,IAEAvf,GAAAp/F,OAAAs4F,IAAAqL,iBAAA31G,OACA,EAmBA4vH,EAAAzf,OAAA,SAAAn2G,EAAA42H,QACA,IAAA52H,IACAA,EAAA,QAEA,IAAA62H,OAAA,IAAAD,EAAA,GAAAA,EACAE,EAAAD,EAAAvmB,OACAA,OAAA,IAAAwmB,EAAA,KAAAA,EACAC,EAAAF,EAAA/e,gBACAA,OAAA,IAAAif,EAAA,KAAAA,EACAC,EAAAH,EAAAV,OACAA,OAAA,IAAAa,EAAA,KAAAA,EACAC,EAAAJ,EAAAxf,eACAA,OAAA,IAAA4f,EAAA,UAAAA,EACA,OAAAd,GAAA/e,GAAAp/F,OAAAs4F,EAAAwH,EAAAT,IAAAlB,OAAAn2G,EACA,EAeA41H,EAAAsB,aAAA,SAAAl3H,EAAAm3H,QACA,IAAAn3H,IACAA,EAAA,QAEA,IAAAo3H,OAAA,IAAAD,EAAA,GAAAA,EACAE,EAAAD,EAAA9mB,OACAA,OAAA,IAAA+mB,EAAA,KAAAA,EACAC,EAAAF,EAAAtf,gBACAA,OAAA,IAAAwf,EAAA,KAAAA,EACAC,EAAAH,EAAAjB,OACAA,OAAA,IAAAoB,EAAA,KAAAA,EACAC,EAAAJ,EAAA/f,eACAA,OAAA,IAAAmgB,EAAA,UAAAA,EACA,OAAArB,GAAA/e,GAAAp/F,OAAAs4F,EAAAwH,EAAAT,IAAAlB,OAAAn2G,GAAA,EACA,EAgBA41H,EAAAzb,SAAA,SAAAn6G,EAAAy3H,QACA,IAAAz3H,IACAA,EAAA,QAEA,IAAA03H,OAAA,IAAAD,EAAA,GAAAA,EACAE,EAAAD,EAAApnB,OACAA,OAAA,IAAAqnB,EAAA,KAAAA,EACAC,EAAAF,EAAA5f,gBACAA,OAAA,IAAA8f,EAAA,KAAAA,EACAC,EAAAH,EAAAvB,OAEA,aADA,IAAA0B,EAAA,KAAAA,IACAzgB,GAAAp/F,OAAAs4F,EAAAwH,EAAA,OAAAqC,SAAAn6G,EACA,EAcA41H,EAAAkC,eAAA,SAAA93H,EAAA+3H,QACA,IAAA/3H,IACAA,EAAA,QAEA,IAAAg4H,OAAA,IAAAD,EAAA,GAAAA,EACAE,EAAAD,EAAA1nB,OACAA,OAAA,IAAA2nB,EAAA,KAAAA,EACAC,EAAAF,EAAAlgB,gBACAA,OAAA,IAAAogB,EAAA,KAAAA,EACAC,EAAAH,EAAA7B,OAEA,aADA,IAAAgC,EAAA,KAAAA,IACA/gB,GAAAp/F,OAAAs4F,EAAAwH,EAAA,OAAAqC,SAAAn6G,GAAA,EACA,EAUA41H,EAAAtb,UAAA,SAAA8d,GACA,IACAC,QADA,IAAAD,EAAA,GAAAA,GACA9nB,OACAA,OAAA,IAAA+nB,EAAA,KAAAA,EACA,OAAAjhB,GAAAp/F,OAAAs4F,GAAAgK,WACA,EAYAsb,EAAApb,KAAA,SAAAx6G,EAAAs4H,QACA,IAAAt4H,IACAA,EAAA,SAEA,IACAu4H,QADA,IAAAD,EAAA,GAAAA,GACAhoB,OACAA,OAAA,IAAAioB,EAAA,KAAAA,EACA,OAAAnhB,GAAAp/F,OAAAs4F,EAAA,gBAAAkK,KAAAx6G,EACA,EAWA41H,EAAA4C,SAAA,WACA,OACAC,SAAAnjB,KACAojB,WAAArd,KAEA,EACAua,CACA,CAvQA,GAyQA,SAAA+C,GAAAC,EAAAC,GACA,IAAAC,EAAA,SAAAtkB,GACA,OAAAA,EAAAukB,MAAA,GACAC,eAAA,IACA1F,QAAA,OAAA/nB,SACA,EACAuO,EAAAgf,EAAAD,GAAAC,EAAAF,GACA,OAAAv8G,KAAAM,MAAAkxG,GAAAc,WAAA7U,GAAAiX,GAAA,QACA,CAsDA,SAAAkI,GAAAL,EAAAC,EAAA7iB,EAAApP,GACA,IAAAsyB,EAtDA,SAAA1vE,EAAAqvE,EAAA7iB,GAuBA,IAtBA,IAYAmjB,EAAAC,EAFA35F,EAAA,GACAm5F,EAAApvE,EAWA8S,EAAA,EAAA+8D,EAtBA,mBAAAr/F,EAAAg/B,GACA,OAAAA,EAAA60C,KAAA7zE,EAAA6zE,IACA,wBAAA7zE,EAAAg/B,GACA,OAAAA,EAAAiuD,QAAAjtF,EAAAitF,QAAA,GAAAjuD,EAAA60C,KAAA7zE,EAAA6zE,KACA,sBAAA7zE,EAAAg/B,GACA,OAAAA,EAAA80C,MAAA9zE,EAAA8zE,MAAA,IAAA90C,EAAA60C,KAAA7zE,EAAA6zE,KACA,qBAAA7zE,EAAAg/B,GACA,IAAAq9C,EAAAsiB,GAAA3+F,EAAAg/B,GACA,OAAAq9C,IAAA,IACA,WAAAsiB,KAaAr8D,EAAA+8D,EAAAr5H,OAAAs8D,IAAA,CACA,IAAAg9D,EAAAD,EAAA/8D,GACA5rD,EAAA4oH,EAAA,GACAC,EAAAD,EAAA,GACAtjB,EAAA51G,QAAAsQ,IAAA,IACAyoH,EAAAzoH,EACA+uB,EAAA/uB,GAAA6oH,EAAA/vE,EAAAqvE,IACAO,EAAAR,EAAA9jB,KAAAr1E,IACAo5F,GAEAp5F,EAAA/uB,MACA84C,EAAAovE,EAAA9jB,KAAAr1E,IAKAo5F,IAEAO,EAAA5vE,EAEA/pB,EAAA/uB,KACA84C,EAAAovE,EAAA9jB,KAAAr1E,KAGA+pB,EAAA4vE,EAGA,CACA,OAAA5vE,EAAA/pB,EAAA25F,EAAAD,EACA,CAEAK,CAAAZ,EAAAC,EAAA7iB,GACAxsD,EAAA0vE,EAAA,GACAz5F,EAAAy5F,EAAA,GACAE,EAAAF,EAAA,GACAC,EAAAD,EAAA,GACAO,EAAAZ,EAAArvE,EACAkwE,EAAA1jB,EAAAv0F,QAAA,SAAA+hG,GACA,mDAAApjH,QAAAojH,IAAA,CACA,IACA,OAAAkW,EAAA15H,OAAA,CAEA,IAAA25H,EADA,GAAAP,EAAAP,EAEAO,EAAA5vE,EAAAsrD,OAAA6kB,EAAA,IAAAR,GAAA,EAAAQ,IAEAP,IAAA5vE,IACA/pB,EAAA05F,IAAA15F,EAAA05F,IAAA,GAAAM,GAAAL,EAAA5vE,GAEA,CACA,IAEAowE,EAFA/qE,EAAAg/D,GAAA1U,WAAA15E,EAAAmnE,GACA,OAAA8yB,EAAA15H,OAAA,GAEA45H,EAAA/L,GAAAc,WAAA8K,EAAA7yB,IAAA8gB,QAAAn/G,MAAAqxH,EAAAF,GAAA5kB,KAAAjmD,GAEAA,CAEA,CAGA,SAAAgrE,GAAA/Q,EAAAgR,GAMA,YALA,IAAAA,IACAA,EAAA,SAAA/5H,GACA,OAAAA,CACA,GAEA,CACA+oH,QACAiR,MAAA,SAAA3pB,GACA,IAAAlpF,EAAAkpF,EAAA,GACA,OAAA0pB,EApkHA,SAAA5hF,GACA,IAAApkC,EAAA0M,SAAA03B,EAAA,IACA,GAAAq5D,MAAAz9F,GAAA,CACAA,EAAA,GACA,QAAA/T,EAAA,EAAAA,EAAAm4C,EAAAl4C,OAAAD,IAAA,CACA,IAAAi6H,EAAA9hF,EAAAikB,WAAAp8D,GACA,QAAAm4C,EAAAn4C,GAAAsB,OAAAk7G,GAAAQ,SACAjpG,GAAAgqG,GAAA19G,QAAA83C,EAAAn4C,SAEA,QAAAmY,KAAA2lG,GAAA,CACA,IAAAoc,EAAApc,GAAA3lG,GACAyhB,EAAAsgG,EAAA,GACAx7F,EAAAw7F,EAAA,GACAD,GAAArgG,GAAAqgG,GAAAv7F,IACA3qB,GAAAkmH,EAAArgG,EAEA,CAEA,CACA,OAAAnZ,SAAA1M,EAAA,GACA,CACA,OAAAA,CAEA,CA6iHAomH,CAAAhzG,GACA,EAEA,CACA,IACAizG,GAAA,KADAlgF,OAAAyiB,aAAA,KACA,IACA09D,GAAA,IAAAvgH,OAAAsgH,GAAA,KACA,SAAAE,GAAAnzG,GAGA,OAAAA,EAAAC,QAAA,cAAAA,QAAAizG,GAAAD,GACA,CACA,SAAAG,GAAApzG,GACA,OAAAA,EAAAC,QAAA,UACAA,QAAAizG,GAAA,KACAx4H,aACA,CACA,SAAA24H,GAAAC,EAAAC,GACA,cAAAD,EACA,KAEA,CACA1R,MAAAjvG,OAAA2gH,EAAAhsH,IAAA6rH,IAAA//G,KAAA,MACAy/G,MAAA,SAAApoB,GACA,IAAAzqF,EAAAyqF,EAAA,GACA,OAAA6oB,EAAAjb,WAAA,SAAAx/G,GACA,OAAAu6H,GAAApzG,KAAAozG,GAAAv6H,EACA,IAAA06H,CACA,EAGA,CACA,SAAA92E,GAAAmlE,EAAAvqF,GACA,OACAuqF,QACAiR,MAAA,SAAAtD,GAGA,OAAAxa,GAFAwa,EAAA,GACAA,EAAA,GAEA,EACAl4F,SAEA,CACA,SAAAm8F,GAAA5R,GACA,OACAA,QACAiR,MAAA,SAAAlD,GAEA,OADAA,EAAA,EAEA,EAEA,CA+JA,IAAA8D,GAAA,CACA9sB,KAAA,CACA,eACAiI,QAAA,SAEAhI,MAAA,CACAgI,QAAA,IACA,eACA8kB,MAAA,MACAC,KAAA,QAEA9sB,IAAA,CACA+H,QAAA,IACA,gBAEA5H,QAAA,CACA0sB,MAAA,MACAC,KAAA,QAEAC,UAAA,IACAC,UAAA,IACArpB,OAAA,CACAoE,QAAA,IACA,gBAEAklB,OAAA,CACAllB,QAAA,IACA,gBAEAvH,OAAA,CACAuH,QAAA,IACA,gBAEAzY,OAAA,CACAyY,QAAA,IACA,gBAEApH,aAAA,CACAmsB,KAAA,QACAD,MAAA,QAgJA,IAAAK,GAAA,KAkBA,SAAAC,GAAA/0D,EAAAmqC,GACA,IAAA4kB,EACA,OAAAA,EAAA37G,MAAAlS,WAAA2nC,OAAAzmC,MAAA2sH,EAAA/uD,EAAA33D,KAAA,SAAAirD,GACA,OAdA,SAAAhrC,EAAA6hF,GACA,GAAA7hF,EAAAg2F,QACA,OAAAh2F,EAEA,IACA03C,EAAAg1D,GADA1V,GAAAO,uBAAAv3F,EAAA2xB,KACAkwD,GACA,aAAAnqC,KAAA7T,cAAA5kD,GACA+gB,EAEA03C,CACA,CAIAi1D,CAAA3hE,EAAA62C,EACA,IACA,CAMA,IAAA+qB,GAAA,WACA,SAAAA,EAAA/qB,EAAArpF,GAUA,GATA3f,KAAAgpG,SACAhpG,KAAA2f,SACA3f,KAAA6+D,OAAA+0D,GAAAzV,GAAAG,YAAA3+F,GAAAqpF,GACAhpG,KAAA0uG,MAAA1uG,KAAA6+D,OAAA33D,KAAA,SAAAirD,GACA,OAhXAhrC,EAgXAgrC,EA/WA9oD,EAAAqtG,GADA5K,EAgXA9C,GA9WAgrB,EAAAtd,GAAA5K,EAAA,OACAmoB,EAAAvd,GAAA5K,EAAA,OACAooB,EAAAxd,GAAA5K,EAAA,OACAqoB,EAAAzd,GAAA5K,EAAA,OACAsoB,EAAA1d,GAAA5K,EAAA,SACAuoB,EAAA3d,GAAA5K,EAAA,SACAwoB,EAAA5d,GAAA5K,EAAA,SACAyoB,EAAA7d,GAAA5K,EAAA,SACA0oB,EAAA9d,GAAA5K,EAAA,SACA2oB,EAAA/d,GAAA5K,EAAA,SACAqR,EAAA,SAAAhrD,GACA,OACAqvD,MAAAjvG,QAtBA/F,EAsBA2lD,EAAArZ,IArBAtsC,EAAAqT,QAAA,wCAsBA4yG,MAAA,SAAA3C,GAEA,OADAA,EAAA,EAEA,EACA3S,SAAA,GA3BA,IAAA3wG,CA6BA,EA2HApD,EA1HA,SAAA+oD,GACA,GAAAhrC,EAAAg2F,QACA,OAAAA,EAAAhrD,GAEA,OAAAA,EAAArZ,KAEA,QACA,OAAAm6E,GAAAnnB,EAAAoH,KAAA,YACA,SACA,OAAA+f,GAAAnnB,EAAAoH,KAAA,WAEA,QACA,OAAAqf,GAAA+B,GACA,SAwEA,SACA,OAAA/B,GAAAiC,EAAAlZ,IAvEA,WAoEA,WACA,OAAAiX,GAAA2B,GAnEA,YACA,OAAA3B,GAAAkC,GACA,aACA,OAAAlC,GAAA4B,GAEA,QAQA,QASA,QAYA,QAIA,QAIA,QAEA,QAIA,QAuBA,QACA,OAAA5B,GAAA6B,GAjEA,SAQA,SASA,SAQA,SAIA,SAIA,SAMA,SAIA,SAuBA,SACA,OAAA7B,GAAAyB,GAjEA,UACA,OAAAf,GAAAnnB,EAAA+C,OAAA,eACA,WACA,OAAAokB,GAAAnnB,EAAA+C,OAAA,cAKA,UACA,OAAAokB,GAAAnnB,EAAA+C,OAAA,eACA,WACA,OAAAokB,GAAAnnB,EAAA+C,OAAA,cAOA,QAyBA,QACA,OAAA0jB,GAAA8B,GAxBA,UAyBA,UACA,OAAA9B,GAAA0B,GACA,QACA,OAAAb,GAAAmB,GACA,SACA,OAAAnB,GAAAgB,GACA,UAgBA,QACA,QACA,OAAA7B,GAAAlpH,GAfA,QACA,OAAA4pH,GAAAnnB,EAAAkH,YAAA,GAeA,UACA,OAAAigB,GAAAnnB,EAAA+G,SAAA,eACA,WACA,OAAAogB,GAAAnnB,EAAA+G,SAAA,cACA,UACA,OAAAogB,GAAAnnB,EAAA+G,SAAA,eACA,WACA,OAAAogB,GAAAnnB,EAAA+G,SAAA,cAEA,QACA,SACA,OAAAx2D,GAAA,IAAA9pC,OAAA,QAAA6hH,EAAAzoH,OAAA,SAAAqoH,EAAAroH,OAAA,UACA,UACA,OAAA0wC,GAAA,IAAA9pC,OAAA,QAAA6hH,EAAAzoH,OAAA,KAAAqoH,EAAAroH,OAAA,SAGA,QACA,OAAAynH,GAAA,sBAGA,QACA,OAAAA,GAAA,aACA,QACA,OAAAjW,EAAAhrD,GAEA,CACAuiE,CAAAvtG,IAAA,CACA6hG,cAxNA,qDA0NA5/G,EAAA+d,QACA/d,EApJA,IAAA+d,EAAA2kF,EACAziG,EACA2qH,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAtX,EAoIA/zG,CAiOA,IACApJ,KAAA20H,kBAAA30H,KAAA0uG,MAAAptG,MAAA,SAAA6wD,GACA,OAAAA,EAAA62D,aACA,KACAhpH,KAAA20H,kBAAA,CACA,IAAAC,EArIA,MANAlmB,EA2IA1uG,KAAA0uG,OA1IAxnG,KAAA,SAAAg1G,GACA,OAAAA,EAAAsF,KACA,IAAAz+G,QAAA,SAAAgwD,EAAArpB,GACA,OAAAqpB,EAAA,IAAArpB,EAAA/9B,OAAA,GACA,OACA,IAAA+iG,GAsIAmmB,EAAAD,EAAA,GACAE,EAAAF,EAAA,GACA50H,KAAAwhH,MAAAjvG,OAAAsiH,EAAA,KACA70H,KAAA80H,UACA,CAhJA,IAAApmB,CAiJA,CA2CA,OA1CAqlB,EAAAh0H,UACAg1H,kBAAA,SAAAhkF,GACA,GAAA/wC,KAAAiM,QAMA,CACA,IAAA+oH,EAnJA,SAAAjkF,EAAAywE,EAAAsT,GACA,IAAAz9G,EAAA05B,EAAAr+B,MAAA8uG,GACA,GAAAnqG,EAAA,CACA,IAAA9P,EAAA,GACA0tH,EAAA,EACA,QAAAx8H,KAAAq8H,EACA,GAAAjiG,GAAAiiG,EAAAr8H,GAAA,CACA,IAAAw7D,EAAA6gE,EAAAr8H,GACAw+B,EAAAg9B,EAAAh9B,OAAAg9B,EAAAh9B,OAAA,KACAg9B,EAAAkpD,SAAAlpD,EAAA9sC,QACA5f,EAAA0sD,EAAA9sC,MAAA2xB,IAAA,IAAAmb,EAAAw+D,MAAAp7G,EAAA3Y,MAAAu2H,IAAAh+F,KAEAg+F,GAAAh+F,CACA,CAEA,OAAA5f,EAAA9P,EACA,CACA,OAAA8P,EAAA,GAEA,CAgIA3E,CAAAq+B,EAAA/wC,KAAAwhH,MAAAxhH,KAAA80H,UACAI,EAAAF,EAAA,GACA39G,EAAA29G,EAAA,GACA5E,EAAA/4G,EAlIA,SAAAA,GACA,IAkCA89G,EADAprB,EAAA,KAkCA,OAhCApzF,GAAAU,EAAA+1F,KACArD,EAAAN,EAAA/4F,OAAA2G,EAAA+1F,IAEAz2F,GAAAU,EAAA+9G,KACArrB,IACAA,EAAA,IAAAyK,GAAAn9F,EAAA+9G,IAEAD,EAAA99G,EAAA+9G,GAEAz+G,GAAAU,EAAAg+G,KACAh+G,EAAAwU,EAAA,GAAAxU,EAAAg+G,EAAA,MAEA1+G,GAAAU,EAAA48C,KACA58C,EAAA48C,EAAA,QAAA58C,EAAAqb,EACArb,EAAA48C,GAAA,GACA,KAAA58C,EAAA48C,GAAA,IAAA58C,EAAAqb,IACArb,EAAA48C,EAAA,IAGA,IAAA58C,EAAA8U,GAAA9U,EAAAhT,IACAgT,EAAAhT,GAAAgT,EAAAhT,GAEAsS,GAAAU,EAAA6kG,KACA7kG,EAAAue,EAAAklF,GAAAzjG,EAAA6kG,IASA,CAPAh8G,OAAAyP,KAAA0H,GAAAtU,QAAA,SAAA2mC,EAAAyyE,GACA,IAAAppD,EA7DA,SAAA5rC,GACA,OAAAA,GACA,QACA,oBACA,QACA,eACA,QACA,eACA,QACA,QACA,aACA,QACA,YACA,QACA,gBACA,QACA,QACA,cACA,QACA,aACA,QACA,QACA,gBACA,QACA,mBACA,QACA,iBACA,QACA,gBACA,QACA,YAEA,CA6BAmuG,CAAAnZ,GAIA,OAHAppD,IACArpB,EAAAqpB,GAAA17C,EAAA8kG,IAEAzyE,CACA,OACAqgE,EAAAorB,EACA,CA6DAI,CAAAl+G,GAAA,gBAAAjR,GACAsgB,EAAA0pG,EAAA,GACArmB,EAAAqmB,EAAA,GACA+E,EAAA/E,EAAA,GACA,GAAAv9F,GAAAxb,EAAA,MAAAwb,GAAAxb,EAAA,KACA,UAAAyuF,EAAA,yDAEA,OACA/0D,QACA8tB,OAAA7+D,KAAA6+D,OACA2iD,MAAAxhH,KAAAwhH,MACA0T,aACA79G,UACAqP,SACAqjF,OACAorB,iBAEA,CA1BA,OACApkF,QACA8tB,OAAA7+D,KAAA6+D,OACAmqD,cAAAhpH,KAAAgpH,cAwBA,EACAhmB,EAAA+wB,EAAA,EACAnjH,IAAA,UACAvY,IAAA,WACA,OAAA2H,KAAA20H,iBACA,GACA,CACA/jH,IAAA,gBACAvY,IAAA,WACA,OAAA2H,KAAA20H,kBAAA30H,KAAA20H,kBAAA3L,cAAA,IACA,KAEA+K,CACA,CA9DA,GA+DA,SAAAgB,GAAA/rB,EAAAj4D,EAAApxB,GAEA,OADA,IAAAo0G,GAAA/qB,EAAArpF,GACAo1G,kBAAAhkF,EACA,CASA,SAAA8iF,GAAAzV,EAAApV,GACA,IAAAoV,EACA,YAEA,IACAoX,EADArX,GAAAztG,OAAAs4F,EAAAoV,GACA9K,aA3GAqgB,KACAA,GAAAlhB,GAAA4U,WAAA,gBAEAsM,KAyGA/lB,EAAA4nB,EAAAlrB,gBACAmrB,EAAAD,EAAArsB,kBACA,OAAAyE,EAAA1mG,KAAA,SAAA2qD,GACA,OA9PA,SAAAg8C,EAAAuQ,EAAAqX,GACA,IAAA/vH,EAAAmoG,EAAAnoG,KACA8G,EAAAqhG,EAAArhG,MACA,eAAA9G,EAAA,CACA,IAAAgwH,EAAA,QAAAv7H,KAAAqS,GACA,OACA2wG,SAAAuY,EACA58E,IAAA48E,EAAA,IAAAlpH,EAEA,CACA,IAAAyvB,EAAAmiF,EAAA14G,GAKAiwH,EAAAjwH,EACA,SAAAA,IAEAiwH,EADA,MAAAvX,EAAAhU,OACAgU,EAAAhU,OAAA,kBACA,MAAAgU,EAAA7W,UACA,QAAA6W,EAAA7W,WAAA,QAAA6W,EAAA7W,UACA,SAEA,SAKAkuB,EAAArrB,OAAA,mBAGA,IAAAtxD,EAAAu6E,GAAAsC,GAIA,GAHA,iBAAA78E,IACAA,IAAA7c,IAEA6c,EACA,OACAqkE,SAAA,EACArkE,MAIA,CAoNA88E,CAAA/jE,EAAAusD,EAAAqX,EACA,GACA,CAEA,IAAAI,GAAA,mBACAC,GAAA,OACA,SAAAC,GAAAhsB,GACA,WAAAiN,GAAA,gCAAAjN,EAAAzxG,KAAA,qBACA,CAMA,SAAA09H,GAAA9oB,GAIA,OAHA,OAAAA,EAAA2L,WACA3L,EAAA2L,SAAAR,GAAAnL,EAAAv0G,IAEAu0G,EAAA2L,QACA,CAKA,SAAAod,GAAA/oB,GAIA,OAHA,OAAAA,EAAAgpB,gBACAhpB,EAAAgpB,cAAA7d,GAAAnL,EAAAv0G,EAAAu0G,EAAApB,IAAAsI,wBAAAlH,EAAApB,IAAAqI,mBAEAjH,EAAAgpB,aACA,CAIA,SAAAzwE,GAAA0wE,EAAAjkB,GACA,IAAA3wG,EAAA,CACAgnG,GAAA4tB,EAAA5tB,GACAwB,KAAAosB,EAAApsB,KACApxG,EAAAw9H,EAAAx9H,EACA6qG,EAAA2yB,EAAA3yB,EACAsI,IAAAqqB,EAAArqB,IACAqb,QAAAgP,EAAAhP,SAEA,WAAA1U,GAAArP,EAAA,GAAA7hG,EAAA2wG,EAAA,CACAkkB,IAAA70H,IAEA,CAIA,SAAA80H,GAAAC,EAAA9yB,EAAA+yB,GAEA,IAAAC,EAAAF,EAAA,GAAA9yB,EAAA,IAGAizB,EAAAF,EAAAl6E,OAAAm6E,GAGA,GAAAhzB,IAAAizB,EACA,OAAAD,EAAAhzB,GAIAgzB,GAAA,IAAAC,EAAAjzB,GAAA,IAGA,IAAAkzB,EAAAH,EAAAl6E,OAAAm6E,GACA,OAAAC,IAAAC,EACA,CAAAF,EAAAC,GAIA,CAAAH,EAAA,GAAAvhH,KAAAsd,IAAAokG,EAAAC,GAAA,IAAA3hH,KAAAoiB,IAAAs/F,EAAAC,GACA,CAGA,SAAAC,GAAApuB,EAAAlsD,GAEA,IAAAhkC,EAAA,IAAAtgB,KADAwwG,GAAA,GAAAlsD,EAAA,KAEA,OACAkqD,KAAAluF,EAAAm/F,iBACAhR,MAAAnuF,EAAAu+G,cAAA,EACAnwB,IAAApuF,EAAAw+G,aACA7vB,KAAA3uF,EAAAy+G,cACA7vB,OAAA5uF,EAAA0+G,gBACAhhC,OAAA19E,EAAA2+G,gBACA9rB,YAAA7yF,EAAA4+G,qBAEA,CAGA,SAAAC,GAAA92H,EAAAi8C,EAAA0tD,GACA,OAAAssB,GAAAprB,GAAA7qG,GAAAi8C,EAAA0tD,EACA,CAGA,SAAAotB,GAAAhB,EAAArW,GACA,IAAAsX,EAAAjB,EAAA3yB,EACA+C,EAAA4vB,EAAAx9H,EAAA4tG,KAAAxxF,KAAAimG,MAAA8E,EAAAnR,OACAnI,EAAA2vB,EAAAx9H,EAAA6tG,MAAAzxF,KAAAimG,MAAA8E,EAAAjR,QAAA,EAAA95F,KAAAimG,MAAA8E,EAAAlR,UACAj2G,EAAAyqG,EAAA,GAAA+yB,EAAAx9H,EAAA,CACA4tG,OACAC,QACAC,IAAA1xF,KAAAsd,IAAA8jG,EAAAx9H,EAAA8tG,IAAAwT,GAAA1T,EAAAC,IAAAzxF,KAAAimG,MAAA8E,EAAA/Q,MAAA,EAAAh6F,KAAAimG,MAAA8E,EAAAhR,SAEAuoB,EAAA9Q,GAAA1U,WAAA,CACAlD,MAAAmR,EAAAnR,MAAA55F,KAAAimG,MAAA8E,EAAAnR,OACAC,SAAAkR,EAAAlR,SAAA75F,KAAAimG,MAAA8E,EAAAlR,UACAC,OAAAiR,EAAAjR,OAAA95F,KAAAimG,MAAA8E,EAAAjR,QACAC,MAAAgR,EAAAhR,MAAA/5F,KAAAimG,MAAA8E,EAAAhR,OACAC,KAAA+Q,EAAA/Q,KAAAh6F,KAAAimG,MAAA8E,EAAA/Q,MACAC,MAAA8Q,EAAA9Q,MACAvB,QAAAqS,EAAArS,QACAwB,QAAA6Q,EAAA7Q,QACAsT,aAAAzC,EAAAyC,eACAkH,GAAA,gBAEA6N,EAAAjB,GADAprB,GAAAtyG,GACAy+H,EAAAjB,EAAApsB,MACAxB,EAAA+uB,EAAA,GACA9zB,EAAA8zB,EAAA,GAMA,OALA,IAAAD,IACA9uB,GAAA8uB,EAEA7zB,EAAA2yB,EAAApsB,KAAA1tD,OAAAksD,IAEA,CACAA,KACA/E,IAEA,CAIA,SAAA+zB,GAAA7sB,EAAA8sB,EAAAl4B,EAAA3/E,EAAAkb,EAAAs6F,GACA,IAAA5nB,EAAAjO,EAAAiO,QACAxD,EAAAzK,EAAAyK,KACA,GAAAW,GAAA,IAAAxqG,OAAAyP,KAAA+6F,GAAAhyG,QAAA8+H,EAAA,CACA,IAAAC,EAAAD,GAAAztB,EACAosB,EAAA1jB,GAAAZ,WAAAnH,EAAAtH,EAAA,GAAA9D,EAAA,CACAyK,KAAA0tB,EACAtC,oBAEA,OAAA5nB,EAAA4oB,IAAA5oB,QAAAxD,EACA,CACA,OAAA0I,GAAA0U,QAAA,IAAAnQ,GAAA,2BAAAn8E,EAAA,yBAAAlb,GAEA,CAIA,SAAA+3G,GAAAxqB,EAAAvtF,EAAA0/F,GAIA,YAHA,IAAAA,IACAA,GAAA,GAEAnS,EAAAjhG,QAAAkyG,GAAAztG,OAAAo/F,GAAAp/F,OAAA,UACA2uG,SACAhT,aAAA,IACA4S,yBAAA/R,EAAAvtF,GAAA,IACA,CACA,SAAAg4G,GAAAn0B,EAAAo0B,GACA,IAAAC,EAAAr0B,EAAA7qG,EAAA4tG,KAAA,MAAA/C,EAAA7qG,EAAA4tG,KAAA,EACA5tG,EAAA,GAYA,OAXAk/H,GAAAr0B,EAAA7qG,EAAA4tG,MAAA,IAAA5tG,GAAA,KACAA,GAAAo0G,GAAAvJ,EAAA7qG,EAAA4tG,KAAAsxB,EAAA,KACAD,GACAj/H,GAAA,IACAA,GAAAo0G,GAAAvJ,EAAA7qG,EAAA6tG,OACA7tG,GAAA,IACAA,GAAAo0G,GAAAvJ,EAAA7qG,EAAA8tG,OAEA9tG,GAAAo0G,GAAAvJ,EAAA7qG,EAAA6tG,OACA7tG,GAAAo0G,GAAAvJ,EAAA7qG,EAAA8tG,MAEA9tG,CACA,CACA,SAAAm/H,GAAAt0B,EAAAo0B,EAAAhP,EAAAD,EAAAG,EAAAiP,GACA,IAAAp/H,EAAAo0G,GAAAvJ,EAAA7qG,EAAAquG,MAmCA,OAlCA4wB,GACAj/H,GAAA,IACAA,GAAAo0G,GAAAvJ,EAAA7qG,EAAAsuG,QACA,IAAAzD,EAAA7qG,EAAAuyG,aAAA,IAAA1H,EAAA7qG,EAAAo9F,QAAA6yB,IACAjwH,GAAA,MAGAA,GAAAo0G,GAAAvJ,EAAA7qG,EAAAsuG,QAEA,IAAAzD,EAAA7qG,EAAAuyG,aAAA,IAAA1H,EAAA7qG,EAAAo9F,QAAA6yB,IACAjwH,GAAAo0G,GAAAvJ,EAAA7qG,EAAAo9F,QACA,IAAAyN,EAAA7qG,EAAAuyG,aAAAyd,IACAhwH,GAAA,IACAA,GAAAo0G,GAAAvJ,EAAA7qG,EAAAuyG,YAAA,KAGA4d,IACAtlB,EAAA4b,eAAA,IAAA5b,EAAAnnD,SAAA07E,EACAp/H,GAAA,IACA6qG,IAAA,GACA7qG,GAAA,IACAA,GAAAo0G,GAAAh4F,KAAAimG,OAAAxX,IAAA,KACA7qG,GAAA,IACAA,GAAAo0G,GAAAh4F,KAAAimG,OAAAxX,IAAA,OAEA7qG,GAAA,IACAA,GAAAo0G,GAAAh4F,KAAAimG,MAAAxX,IAAA,KACA7qG,GAAA,IACAA,GAAAo0G,GAAAh4F,KAAAimG,MAAAxX,IAAA,OAGAu0B,IACAp/H,GAAA,IAAA6qG,EAAAuG,KAAAiuB,SAAA,KAEAr/H,CACA,CAGA,IAyLAs/H,GAzLAC,GAAA,CACA1xB,MAAA,EACAC,IAAA,EACAO,KAAA,EACAC,OAAA,EACAlR,OAAA,EACAmV,YAAA,GAEAitB,GAAA,CACA1f,WAAA,EACA7R,QAAA,EACAI,KAAA,EACAC,OAAA,EACAlR,OAAA,EACAmV,YAAA,GAEAktB,GAAA,CACAtgB,QAAA,EACA9Q,KAAA,EACAC,OAAA,EACAlR,OAAA,EACAmV,YAAA,GAIAmtB,GAAA,8DACAC,GAAA,2EACAC,GAAA,0DAiCA,SAAAC,GAAApvH,GACA,OAAAA,EAAA9O,eACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,oBACA,qBACA,sBACA,QACA,OA1CA,SAAA8O,GACA,IAAA6yG,EAAA,CACA1V,KAAA,OACAoI,MAAA,OACAnI,MAAA,QACAqI,OAAA,QACApI,IAAA,MACAsI,KAAA,MACA/H,KAAA,OACAgI,MAAA,OACA/H,OAAA,SACAwG,QAAA,SACAkS,QAAA,UACA/Q,SAAA,UACA7Y,OAAA,SACAkZ,QAAA,SACA/D,YAAA,cACAqX,aAAA,cACA3b,QAAA,UACAiM,SAAA,UACA4lB,WAAA,aACAC,YAAA,aACAC,YAAA,aACAC,SAAA,WACAC,UAAA,WACA/gB,QAAA,WACA1uG,EAAA9O,eACA,IAAA2hH,EAAA,UAAAjW,EAAA58F,GACA,OAAA6yG,CACA,CAaAqL,CAAAl+G,GAEA,CAkCA,SAAA0vH,GAAA14H,EAAAk/F,GACA,IAAAyK,EAAA8K,GAAAvV,EAAAyK,KAAAwH,GAAAuD,aACA,IAAA/K,EAAA99F,QACA,OAAAwmG,GAAA0U,QAAA4O,GAAAhsB,IAEA,IACAxB,EAAA/E,EADAsI,EAAAgE,GAAA+B,WAAAvS,GAIA,GAAA3oF,GAAAvW,EAAAmmG,MAgBAgC,EAAAgJ,GAAAvS,UAhBA,CACA,QAAAhqC,EAAA,EAAAk0D,EAAAmP,GAAArjE,EAAAk0D,EAAAxwH,OAAAs8D,IAAA,CACA,IAAAknD,EAAAgN,EAAAl0D,GACAr+C,GAAAvW,EAAA87G,MACA97G,EAAA87G,GAAAgc,GAAAhc,GAEA,CACA,IAAAiL,EAAAxN,GAAAv5G,IAAA85G,GAAA95G,GACA,GAAA+mH,EACA,OAAA1U,GAAA0U,WAEA,IAAA4R,EAjCA,SAAAhvB,GAOA,OANAivB,GAAAjvB,UACA3jG,IAAA6xH,KACAA,GAAA1mB,GAAAvS,OAEAg6B,GAAAjvB,KAAA1tD,OAAA47E,KAEAe,GAAAjvB,EACA,CAyBAkvB,CAAAlvB,GACAmvB,EAAAhC,GAAA92H,EAAA24H,EAAAhvB,GACAxB,EAAA2wB,EAAA,GACA11B,EAAA01B,EAAA,EACA,CAGA,WAAAzmB,GAAA,CACAlK,KACAwB,OACA+B,MACAtI,KAEA,CACA,SAAA21B,GAAAj4G,EAAAsnC,EAAA82C,GACA,IAAAz0C,IAAAl0C,GAAA2oF,EAAAz0C,QAAAy0C,EAAAz0C,MACAlrC,EAAA,SAAAhnB,EAAAyQ,GAGA,OAFAzQ,EAAAq0G,GAAAr0G,EAAAkyD,GAAAy0C,EAAA85B,UAAA,QACA5wE,EAAAsjD,IAAArmD,MAAA65C,GAAAmU,aAAAnU,GACA3/E,OAAAhnB,EAAAyQ,EACA,EACA6oH,EAAA,SAAA7oH,GACA,OAAAk2F,EAAA85B,UACA5wE,EAAA2jE,QAAAjrG,EAAA9X,GAEA,EADAo/C,EAAAwjE,QAAA5iH,GAAA8iH,KAAAhrG,EAAA8qG,QAAA5iH,MAAA/Q,IAAA+Q,GAGAo/C,EAAA0jE,KAAAhrG,EAAA9X,GAAA/Q,IAAA+Q,EAEA,EACA,GAAAk2F,EAAAl2F,KACA,OAAAuW,EAAAsyG,EAAA3yB,EAAAl2F,MAAAk2F,EAAAl2F,MAEA,QAAA6zG,EAAAC,EAAAvY,EAAArF,EAAAoP,SAAAuO,EAAAC,KAAA3wE,MAAA,CACA,IAAAnjC,EAAA6zG,EAAAzwG,MACA2hB,EAAA8jG,EAAA7oH,GACA,GAAA2L,KAAAD,IAAAqZ,IAAA,EACA,OAAAxO,EAAAwO,EAAA/kB,EAEA,CACA,OAAAuW,EAAAuB,EAAAsnC,GAAA,IAAA82C,EAAAoP,MAAApP,EAAAoP,MAAAh2G,OAAA,GACA,CACA,SAAA2gI,GAAAC,GACA,IACAz0E,EADAy6C,EAAA,GAQA,OANAg6B,EAAA5gI,OAAA,oBAAA4gI,IAAA5gI,OAAA,IACA4mG,EAAAg6B,IAAA5gI,OAAA,GACAmsD,EAAA5yC,MAAA2hD,KAAA0lE,GAAA56H,MAAA,EAAA46H,EAAA5gI,OAAA,IAEAmsD,EAAA5yC,MAAA2hD,KAAA0lE,GAEA,CAAAh6B,EAAAz6C,EACA,CAYA,IAAAm0E,GAAA,GAsBAvmB,GAAA,SAAAwU,GAIA,SAAAxU,EAAAp5G,GACA,IAAA0wG,EAAA1wG,EAAA0wG,MAAAwH,GAAAuD,YACAqS,EAAA9tH,EAAA8tH,UAAAhiB,OAAA8E,MAAA5wG,EAAAkvG,IAAA,IAAAyO,GAAA,yBAAAjN,EAAA99F,QAAA,KAAA8pH,GAAAhsB,IAIA/pG,KAAAuoG,GAAA5xF,GAAAtd,EAAAkvG,IAAAgJ,GAAAvS,MAAA3lG,EAAAkvG,GACA,IAAA5vG,EAAA,KACA6qG,EAAA,KACA,IAAA2jB,EAEA,GADA9tH,EAAA+8H,KAAA/8H,EAAA+8H,IAAA7tB,KAAAvoG,KAAAuoG,IAAAlvG,EAAA+8H,IAAArsB,KAAAtB,OAAAsB,GACA,CACA,IAAAjB,EAAA,CAAAzvG,EAAA+8H,IAAAz9H,EAAAU,EAAA+8H,IAAA5yB,GACA7qG,EAAAmwG,EAAA,GACAtF,EAAAsF,EAAA,EACA,MAGA,IAAAywB,EAAAvkB,GAAA37G,EAAAmqG,KAAAnqG,EAAA+8H,IAAA/8H,EAAAmqG,EAAAuG,EAAA1tD,OAAAr8C,KAAAuoG,IACA5vG,EAAAg+H,GAAA32H,KAAAuoG,GAAAgxB,GAEA5gI,GADAwuH,EAAAhiB,OAAA8E,MAAAtxG,EAAA4tG,MAAA,IAAAyQ,GAAA,uBACA,KAAAr+G,EACA6qG,EAAA2jB,EAAA,KAAAoS,CACA,CAMAv5H,KAAAw5H,MAAAzvB,EAIA/pG,KAAA8rG,IAAAzyG,EAAAyyG,KAAAgE,GAAAp/F,SAIA1Q,KAAAmnH,UAIAnnH,KAAA64G,SAAA,KAIA74G,KAAAk2H,cAAA,KAIAl2H,KAAArH,IAIAqH,KAAAwjG,IAIAxjG,KAAAy5H,iBAAA,CACA,CAWAhnB,EAAAzT,IAAA,WACA,WAAAyT,EAAA,GACA,EAuBAA,EAAAgQ,MAAA,WACA,IAAAiX,EAAAL,GAAAn4H,WACAo+F,EAAAo6B,EAAA,GACA70E,EAAA60E,EAAA,GAQA,OAAAZ,GAAA,CACAvyB,KARA1hD,EAAA,GASA2hD,MARA3hD,EAAA,GASA4hD,IARA5hD,EAAA,GASAmiD,KARAniD,EAAA,GASAoiD,OARApiD,EAAA,GASAkxC,OARAlxC,EAAA,GASAqmD,YARArmD,EAAA,IASAy6C,EACA,EA2BAmT,EAAAC,IAAA,WACA,IAAAinB,EAAAN,GAAAn4H,WACAo+F,EAAAq6B,EAAA,GACA90E,EAAA80E,EAAA,GACApzB,EAAA1hD,EAAA,GACA2hD,EAAA3hD,EAAA,GACA4hD,EAAA5hD,EAAA,GACAmiD,EAAAniD,EAAA,GACAoiD,EAAApiD,EAAA,GACAkxC,EAAAlxC,EAAA,GACAqmD,EAAArmD,EAAA,GAEA,OADAy6C,EAAAyK,KAAAyK,GAAAC,YACAqkB,GAAA,CACAvyB,OACAC,QACAC,MACAO,OACAC,SACAlR,SACAmV,eACA5L,EACA,EASAmT,EAAAmnB,WAAA,SAAA5vB,EAAA7mF,QACA,IAAAA,IACAA,EAAA,IAEA,IA7rIAqgF,EA6rIA+E,GA7rIA/E,EA6rIAwG,EA5rIA,kBAAA9pG,OAAAH,UAAA0Q,SAAAuU,KAAAw+E,GA4rIAwG,EAAA/F,UAAAiG,KACA,GAAA/E,OAAA8E,MAAA1B,GACA,OAAAkK,EAAA0U,QAAA,iBAEA,IAAA0S,EAAAhlB,GAAA1xF,EAAA4mF,KAAAwH,GAAAuD,aACA,OAAA+kB,EAAA5tH,QAGA,IAAAwmG,EAAA,CACAlK,KACAwB,KAAA8vB,EACA/tB,IAAAgE,GAAA+B,WAAA1uF,KALAsvF,EAAA0U,QAAA4O,GAAA8D,GAOA,EAaApnB,EAAA4U,WAAA,SAAA9E,EAAAp/F,GAIA,QAHA,IAAAA,IACAA,EAAA,IAEA6xF,GAAAuN,GAEA,OAAAA,GAAAuT,IAAAvT,EAAAuT,GAEArjB,EAAA0U,QAAA,0BAEA,IAAA1U,EAAA,CACAlK,GAAAga,EACAxY,KAAA8K,GAAA1xF,EAAA4mF,KAAAwH,GAAAuD,aACAhJ,IAAAgE,GAAA+B,WAAA1uF,KARA,UAAA+iF,EAAA,gEAAAqc,EAAA,eAAAA,EAWA,EAaA9P,EAAAqnB,YAAA,SAAA7qB,EAAA9rF,GAIA,QAHA,IAAAA,IACAA,EAAA,IAEA6xF,GAAA/F,GAGA,WAAAwD,EAAA,CACAlK,GAAA,IAAA0G,EACAlF,KAAA8K,GAAA1xF,EAAA4mF,KAAAwH,GAAAuD,aACAhJ,IAAAgE,GAAA+B,WAAA1uF,KALA,UAAA+iF,EAAA,yCAQA,EAmCAuM,EAAAZ,WAAA,SAAAzxG,EAAAk/F,QACA,IAAAA,IACAA,EAAA,IAEAl/F,KAAA,GACA,IAAAy5H,EAAAhlB,GAAAvV,EAAAyK,KAAAwH,GAAAuD,aACA,IAAA+kB,EAAA5tH,QACA,OAAAwmG,EAAA0U,QAAA4O,GAAA8D,IAEA,IAAA/tB,EAAAgE,GAAA+B,WAAAvS,GACA2c,EAAAF,GAAA37G,EAAAo4H,IACAuB,EAAAxgB,GAAA0C,EAAAnQ,GACAyM,EAAAwhB,EAAAxhB,mBACAH,EAAA2hB,EAAA3hB,YACA4hB,EAAAzoB,GAAAvS,MACA+5B,EAAApiH,GAAA2oF,EAAA61B,gBAAA0E,EAAAx9E,OAAA29E,GAAA16B,EAAA61B,eACA8E,GAAAtjH,GAAAslG,EAAAnE,SACAoiB,GAAAvjH,GAAAslG,EAAA1V,MACA4zB,GAAAxjH,GAAAslG,EAAAzV,SAAA7vF,GAAAslG,EAAAxV,KACA2zB,EAAAF,GAAAC,EACAE,EAAApe,EAAAzD,UAAAyD,EAAAxD,WAQA,IAAA2hB,GAAAH,IAAAI,EACA,UAAAv0B,EAAA,uEAEA,GAAAq0B,GAAAF,EACA,UAAAn0B,EAAA,0CAEA,IAGA4I,EACA4rB,EAJAC,EAAAF,GAAApe,EAAArV,UAAAwzB,EAKAI,EAAA7D,GAAAqD,EAAAjB,GACAwB,GACA7rB,EAAA4pB,GACAgC,EAAAnC,GACAqC,EAAAniB,GAAAmiB,EAAAjiB,EAAAH,IACA6hB,GACAvrB,EAAA6pB,GACA+B,EAAAlC,GACAoC,EAAAthB,GAAAshB,KAEA9rB,EAAA2pB,GACAiC,EAAApC,IAKA,IADA,IACAuC,EADAC,GAAA,EACAC,EAAAh2B,EAAA+J,KAAA+rB,EAAAE,KAAApuF,MAAA,CACA,IAAA2vE,EAAAue,EAAAjuH,MAEAmK,GADAslG,EAAAC,IAIAD,EAAAC,GADAwe,EACAJ,EAAApe,GAEAse,EAAAte,GAJAwe,GAAA,CAMA,CAGA,IAAAE,EAAAL,EAr7IA,SAAAn6H,EAAAm4G,EAAAH,QACA,IAAAG,IACAA,EAAA,QAEA,IAAAH,IACAA,EAAA,GAEA,IAAAwB,EAAAC,GAAAz5G,EAAAo4G,UACAqiB,EAAA9gB,GAAA35G,EAAAq4G,WAAA,EAAAC,GAAAt4G,EAAAo4G,SAAAD,EAAAH,IACA0iB,EAAA/gB,GAAA35G,EAAAwmG,QAAA,KACA,OAAAgT,EAEAihB,GAEAC,GACA1jB,GAAA,UAAAh3G,EAAAwmG,SAFAwQ,GAAA,OAAAh3G,EAAAq4G,YAFArB,GAAA,WAAAh3G,EAAAo4G,SAMA,CAo6IAuiB,CAAA9e,EAAA1D,EAAAH,GAAA6hB,EAn6IA,SAAA75H,GACA,IAAAw5G,EAAAC,GAAAz5G,EAAAmmG,MACAy0B,EAAAjhB,GAAA35G,EAAA03G,QAAA,EAAAkB,GAAA54G,EAAAmmG,OACA,OAAAqT,GAEAohB,GACA5jB,GAAA,UAAAh3G,EAAA03G,SAFAV,GAAA,OAAAh3G,EAAAmmG,KAIA,CA25IA00B,CAAAhf,GAAAtC,GAAAsC,GACAkL,EAAAyT,GAAA1gB,GAAA+B,GACA,GAAAkL,EACA,OAAA1U,EAAA0U,WAIA,IACA+T,EAAAhE,GADAqD,EAAA3hB,GAAAqD,EAAA1D,EAAAH,GAAA6hB,EAAA7gB,GAAA6C,KACA8c,EAAAc,GAGA1D,EAAA,IAAA1jB,EAAA,CACAlK,GAHA2yB,EAAA,GAIAnxB,KAAA8vB,EACAr2B,EAJA03B,EAAA,GAKApvB,QAIA,OAAAmQ,EAAArV,SAAAwzB,GAAAh6H,EAAAwmG,UAAAuvB,EAAAvvB,QACA6L,EAAA0U,QAAA,4DAAAlL,EAAArV,QAAA,kBAAAuvB,EAAA5N,SAEA4N,EAAAlqH,QAGAkqH,EAFA1jB,EAAA0U,QAAAgP,EAAAhP,QAGA,EAmBA1U,EAAAiV,QAAA,SAAA7sF,EAAAykE,QACA,IAAAA,IACAA,EAAA,IAEA,IAAA67B,EA32GA,SAAAv7G,GACA,OAAA/L,GAAA+L,EAAA,CAAAolG,GAAAI,IAAA,CAAAH,GAAAI,IAAA,CAAAH,GAAAI,IAAA,CAAAH,GAAAI,IACA,CAy2GA6V,CAAAvgG,GAGA,OAAA08F,GAFA4D,EAAA,GACAA,EAAA,GACA77B,EAAA,WAAAzkE,EACA,EAiBA43E,EAAA4oB,YAAA,SAAAxgG,EAAAykE,QACA,IAAAA,IACAA,EAAA,IAEA,IAAAg8B,EAj4GA,SAAA17G,GACA,OAAA/L,GAjDA,SAAA+L,GAEA,OAAAA,EAAAC,QAAA,0BAAAA,QAAA,gBAAAwC,MACA,CA8CAk5G,CAAA37G,GAAA,CAAA2kG,GAAAC,IACA,CA+3GAgX,CAAA3gG,GAGA,OAAA08F,GAFA+D,EAAA,GACAA,EAAA,GACAh8B,EAAA,WAAAzkE,EACA,EAkBA43E,EAAAgpB,SAAA,SAAA5gG,EAAAykE,QACA,IAAAA,IACAA,EAAA,IAEA,IAAAo8B,EAx5GA,SAAA97G,GACA,OAAA/L,GAAA+L,EAAA,CAAA+kG,GAAAG,IAAA,CAAAF,GAAAE,IAAA,CAAAD,GAAAE,IACA,CAs5GA4W,CAAA9gG,GAGA,OAAA08F,GAFAmE,EAAA,GACAA,EAAA,GACAp8B,EAAA,OAAAA,EACA,EAgBAmT,EAAAmpB,WAAA,SAAA/gG,EAAA0jF,EAAAjf,GAIA,QAHA,IAAAA,IACAA,EAAA,IAEA3oF,GAAAkkB,IAAAlkB,GAAA4nG,GACA,UAAArY,EAAA,oDAEA,IAAAgI,EAAA5O,EACAu8B,EAAA3tB,EAAAlF,OACAA,OAAA,IAAA6yB,EAAA,KAAAA,EACAC,EAAA5tB,EAAAsC,gBACAA,OAAA,IAAAsrB,EAAA,KAAAA,EAMAC,EAp6BA,SAAA/yB,EAAAj4D,EAAApxB,GACA,IAAAq8G,EAAAjH,GAAA/rB,EAAAj4D,EAAApxB,GAKA,OAJAq8G,EAAAt1G,OACAs1G,EAAAjyB,KACAiyB,EAAA7G,eACA6G,EAAAhT,cAEA,CA65BAiT,CALAnsB,GAAAuB,SAAA,CACArI,SACAwH,kBACAc,aAAA,IAEAz2E,EAAA0jF,GACAkI,EAAAsV,EAAA,GACAvE,EAAAuE,EAAA,GACA5G,EAAA4G,EAAA,GACA5U,EAAA4U,EAAA,GACA,OAAA5U,EACA1U,EAAA0U,WAEAoQ,GAAA9Q,EAAA+Q,EAAAl4B,EAAA,UAAAif,EAAA1jF,EAAAs6F,EAEA,EAKA1iB,EAAAypB,WAAA,SAAArhG,EAAA0jF,EAAAjf,GAIA,YAHA,IAAAA,IACAA,EAAA,IAEAmT,EAAAmpB,WAAA/gG,EAAA0jF,EAAAjf,EACA,EAuBAmT,EAAA0pB,QAAA,SAAAthG,EAAAykE,QACA,IAAAA,IACAA,EAAA,IAEA,IAAA88B,EA/9GA,SAAAx8G,GACA,OAAA/L,GAAA+L,EAAA,CAAA6lG,GAAAL,IAAA,CAAAM,GAAAC,IACA,CA69GA0W,CAAAxhG,GAGA,OAAA08F,GAFA6E,EAAA,GACAA,EAAA,GACA98B,EAAA,MAAAzkE,EACA,EAQA43E,EAAA0U,QAAA,SAAAt4F,EAAAooF,GAIA,QAHA,IAAAA,IACAA,EAAA,OAEApoF,EACA,UAAAq3E,EAAA,oDAEA,IAAAihB,EAAAt4F,aAAAmoF,GAAAnoF,EAAA,IAAAmoF,GAAAnoF,EAAAooF,GACA,GAAA1F,GAAAqF,eACA,UAAArR,EAAA4hB,GAEA,WAAA1U,EAAA,CACA0U,WAGA,EAOA1U,EAAA6pB,WAAA,SAAA94B,GACA,OAAAA,KAAAi2B,kBAAA,CACA,EAQAhnB,EAAA8pB,mBAAA,SAAAne,EAAAoe,QACA,IAAAA,IACAA,EAAA,IAEA,IAAAC,EAAA5I,GAAAzV,EAAAtO,GAAA+B,WAAA2qB,IACA,OAAAC,IAAAv1H,KAAA,SAAAirD,GACA,OAAAA,IAAArZ,IAAA,IACA,IAAA9lC,KAAA,IAFA,IAGA,EASAy/F,EAAAiqB,aAAA,SAAAne,EAAAie,GAKA,YAJA,IAAAA,IACAA,EAAA,IAEA5I,GAAAzV,GAAAG,YAAAC,GAAAzO,GAAA+B,WAAA2qB,IACAt1H,KAAA,SAAAirD,GACA,OAAAA,EAAArZ,GACA,IAAA9lC,KAAA,GACA,EACAy/F,EAAA5I,WAAA,WACAouB,QAAA7xH,EACA4yH,GAAA,EACA,EAWA,IAAA3wB,EAAAoK,EAAA1yG,UAgoDA,OA/nDAsoG,EAAAhwG,IAAA,SAAA+Q,GACA,OAAApJ,KAAAoJ,EACA,EAeAi/F,EAAAs0B,mBAAA,WACA,IAAA38H,KAAAiM,SAAAjM,KAAAo/G,cACA,OAAAp/G,MAEA,IAAA48H,EAAA,MACAC,EAAA,IACAvG,EAAArrB,GAAAjrG,KAAArH,GACAmkI,EAAA98H,KAAA+pG,KAAA1tD,OAAAi6E,EAAAsG,GACAG,EAAA/8H,KAAA+pG,KAAA1tD,OAAAi6E,EAAAsG,GACAI,EAAAh9H,KAAA+pG,KAAA1tD,OAAAi6E,EAAAwG,EAAAD,GACApG,EAAAz2H,KAAA+pG,KAAA1tD,OAAAi6E,EAAAyG,EAAAF,GACA,GAAAG,IAAAvG,EACA,OAAAz2H,MAEA,IAAAi9H,EAAA3G,EAAA0G,EAAAH,EACAK,EAAA5G,EAAAG,EAAAoG,EACAzgE,EAAAu6D,GAAAsG,EAAAD,GACA3gE,EAAAs6D,GAAAuG,EAAAzG,GACA,OAAAr6D,EAAA4qC,OAAA3qC,EAAA2qC,MAAA5qC,EAAA6qC,SAAA5qC,EAAA4qC,QAAA7qC,EAAA25B,SAAA15B,EAAA05B,QAAA35B,EAAA8uC,cAAA7uC,EAAA6uC,YACA,CAAAzlD,GAAAzlD,KAAA,CACAuoG,GAAA00B,IACAx3E,GAAAzlD,KAAA,CACAuoG,GAAA20B,KAGA,CAAAl9H,KACA,EAcAqoG,EAAA80B,sBAAA,SAAA79B,QACA,IAAAA,IACAA,EAAA,IAEA,IAAA89B,EAAAjf,GAAAztG,OAAA1Q,KAAA8rG,IAAArmD,MAAA65C,MAAA6J,gBAAAnpG,MAIA,OACAgpG,OAJAo0B,EAAAp0B,OAKAwH,gBAJA4sB,EAAA5sB,gBAKAT,eAJAqtB,EAAA3sB,SAMA,EAYApI,EAAAopB,MAAA,SAAAp1E,EAAAijD,GAOA,YANA,IAAAjjD,IACAA,EAAA,QAEA,IAAAijD,IACAA,EAAA,IAEAt/F,KAAAutG,QAAAiH,GAAAj1G,SAAA88C,GAAAijD,EACA,EAQA+I,EAAAg1B,QAAA,WACA,OAAAr9H,KAAAutG,QAAAgE,GAAAuD,YACA,EAWAzM,EAAAkF,QAAA,SAAAxD,EAAA+H,GACA,IAAAzH,OAAA,IAAAyH,EAAA,GAAAA,EACAwrB,EAAAjzB,EAAAqnB,cACAA,OAAA,IAAA4L,KACAC,EAAAlzB,EAAAmzB,iBACAA,OAAA,IAAAD,KAEA,IADAxzB,EAAA8K,GAAA9K,EAAAwH,GAAAuD,cACArM,OAAAzoG,KAAA+pG,MACA,OAAA/pG,KACA,GAAA+pG,EAAA99F,QAEA,CACA,IAAAwxH,EAAAz9H,KAAAuoG,GACA,GAAAmpB,GAAA8L,EAAA,CACA,IAAAE,EAAA3zB,EAAA1tD,OAAAr8C,KAAAuoG,IAGAk1B,EADAvG,GADAl3H,KAAAsoH,WACAoV,EAAA3zB,GACA,EACA,CACA,OAAAtkD,GAAAzlD,KAAA,CACAuoG,GAAAk1B,EACA1zB,QAEA,CAbA,OAAA0I,EAAA0U,QAAA4O,GAAAhsB,GAcA,EAQA1B,EAAAmhB,YAAA,SAAA0E,GACA,IAAAiB,OAAA,IAAAjB,EAAA,GAAAA,EACAllB,EAAAmmB,EAAAnmB,OACAwH,EAAA2e,EAAA3e,gBACAT,EAAAof,EAAApf,eAMA,OAAAtqD,GAAAzlD,KAAA,CACA8rG,IANA9rG,KAAA8rG,IAAArmD,MAAA,CACAujD,SACAwH,kBACAT,oBAKA,EAQA1H,EAAAs1B,UAAA,SAAA30B,GACA,OAAAhpG,KAAAwpH,YAAA,CACAxgB,UAEA,EAeAX,EAAA3wG,IAAA,SAAAmZ,GACA,IAAA7Q,KAAAiM,QAAA,OAAAjM,KACA,IAgBA49H,EAhBA3hB,EAAAF,GAAAlrG,EAAA2nH,IACAqF,EAAAtkB,GAAA0C,EAAAj8G,KAAA8rG,KACAyM,EAAAslB,EAAAtlB,mBACAH,EAAAylB,EAAAzlB,YACA0lB,GAAAnnH,GAAAslG,EAAAzD,YAAA7hG,GAAAslG,EAAAxD,cAAA9hG,GAAAslG,EAAArV,SACAqzB,GAAAtjH,GAAAslG,EAAAnE,SACAoiB,GAAAvjH,GAAAslG,EAAA1V,MACA4zB,GAAAxjH,GAAAslG,EAAAzV,SAAA7vF,GAAAslG,EAAAxV,KACA2zB,EAAAF,GAAAC,EACAE,EAAApe,EAAAzD,UAAAyD,EAAAxD,WACA,IAAA2hB,GAAAH,IAAAI,EACA,UAAAv0B,EAAA,uEAEA,GAAAq0B,GAAAF,EACA,UAAAn0B,EAAA,0CAGAg4B,EACAF,EAAAhlB,GAAAxV,EAAA,GAAAiV,GAAAr4G,KAAArH,EAAA4/G,EAAAH,GAAA6D,GAAA1D,EAAAH,GACAzhG,GAAAslG,EAAAnE,UAGA8lB,EAAAx6B,EAAA,GAAApjG,KAAAsoH,WAAArM,GAIAtlG,GAAAslG,EAAAxV,OACAm3B,EAAAn3B,IAAA1xF,KAAAsd,IAAA4nF,GAAA2jB,EAAAr3B,KAAAq3B,EAAAp3B,OAAAo3B,EAAAn3B,OAPAm3B,EAAAxkB,GAAAhW,EAAA,GAAA8V,GAAAl5G,KAAArH,GAAAsjH,IAUA,IAAA8hB,EAAA7G,GAAA0G,EAAA59H,KAAAwjG,EAAAxjG,KAAA+pG,MAGA,OAAAtkD,GAAAzlD,KAAA,CACAuoG,GAHAw1B,EAAA,GAIAv6B,EAHAu6B,EAAA,IAKA,EAeA11B,EAAAmF,KAAA,SAAAjmD,GACA,OAAAvnD,KAAAiM,QAEAw5C,GAAAzlD,KAAAm3H,GAAAn3H,KADAumH,GAAAgB,iBAAAhgE,KADAvnD,IAGA,EAQAqoG,EAAA8gB,MAAA,SAAA5hE,GACA,OAAAvnD,KAAAiM,QAEAw5C,GAAAzlD,KAAAm3H,GAAAn3H,KADAumH,GAAAgB,iBAAAhgE,GAAA6hE,WADAppH,IAGA,EAcAqoG,EAAA2jB,QAAA,SAAA5iH,EAAA8lH,GACA,IACA8O,QADA,IAAA9O,EAAA,GAAAA,GACAjD,eACAA,OAAA,IAAA+R,KACA,IAAAh+H,KAAAiM,QAAA,OAAAjM,KACA,IAAAwjG,EAAA,GACAy6B,EAAA1X,GAAAe,cAAAl+G,GACA,OAAA60H,GACA,YACAz6B,EAAAgD,MAAA,EAEA,eACA,aACAhD,EAAAiD,IAAA,EAEA,YACA,WACAjD,EAAAwD,KAAA,EAEA,YACAxD,EAAAyD,OAAA,EAEA,cACAzD,EAAAzN,OAAA,EAEA,cACAyN,EAAA0H,YAAA,EAKA,aAAA+yB,EACA,GAAAhS,EAAA,CACA,IAAA7T,EAAAp4G,KAAA8rG,IAAAqI,iBACAn0G,KAAA4mG,QACAwR,IACA5U,EAAAiV,WAAAz4G,KAAAy4G,WAAA,GAEAjV,EAAAoD,QAAAwR,CACA,MACA5U,EAAAoD,QAAA,EAGA,gBAAAq3B,EAAA,CACA,IAAA5I,EAAAtgH,KAAAskD,KAAAr5D,KAAAwmG,MAAA,GACAhD,EAAAgD,MAAA,GAAA6uB,EAAA,IACA,CACA,OAAAr1H,KAAAtI,IAAA8rG,EACA,EAcA6E,EAAA61B,MAAA,SAAA90H,EAAAk2F,GACA,IAAA6+B,EACA,OAAAn+H,KAAAiM,QAAAjM,KAAAwtG,MAAA2wB,EAAA,GAAAA,EAAA/0H,GAAA,EAAA+0H,IAAAnS,QAAA5iH,EAAAk2F,GAAA6pB,MAAA,GAAAnpH,IACA,EAgBAqoG,EAAA4f,SAAA,SAAA1J,EAAAjf,GAIA,YAHA,IAAAA,IACAA,EAAA,IAEAt/F,KAAAiM,QAAAkyG,GAAAztG,OAAA1Q,KAAA8rG,IAAAsG,cAAA9S,IAAA2f,yBAAAj/G,KAAAu+G,GAAAsX,EACA,EAqBAxtB,EAAA2lB,eAAA,SAAA5P,EAAA9e,GAOA,YANA,IAAA8e,IACAA,EAAA9X,QAEA,IAAAhH,IACAA,EAAA,IAEAt/F,KAAAiM,QAAAkyG,GAAAztG,OAAA1Q,KAAA8rG,IAAArmD,MAAA65C,GAAA8e,GAAAQ,eAAA5+G,MAAA61H,EACA,EAeAxtB,EAAA+1B,cAAA,SAAA9+B,GAIA,YAHA,IAAAA,IACAA,EAAA,IAEAt/F,KAAAiM,QAAAkyG,GAAAztG,OAAA1Q,KAAA8rG,IAAArmD,MAAA65C,MAAAuf,oBAAA7+G,MAAA,EACA,EAgBAqoG,EAAAkgB,MAAA,SAAA+G,GACA,IAAAQ,OAAA,IAAAR,EAAA,GAAAA,EACA+O,EAAAvO,EAAAnwG,OACAA,OAAA,IAAA0+G,EAAA,WAAAA,EACAC,EAAAxO,EAAAlH,gBACAA,OAAA,IAAA0V,KACAC,EAAAzO,EAAAnH,qBACAA,OAAA,IAAA4V,KACAC,EAAA1O,EAAAhH,cACAA,OAAA,IAAA0V,KACAC,EAAA3O,EAAAiI,aACAA,OAAA,IAAA0G,KACA,IAAAz+H,KAAAiM,QACA,YAEA,IAAAyyH,EAAA,aAAA/+G,EACAhnB,EAAAg/H,GAAA33H,KAAA0+H,GAGA,OAFA/lI,GAAA,IACAA,GAAAm/H,GAAA93H,KAAA0+H,EAAA9V,EAAAD,EAAAG,EAAAiP,EAEA,EAUA1vB,EAAA4lB,UAAA,SAAA4B,GACA,IACA8O,QADA,IAAA9O,EAAA,GAAAA,GACAlwG,OACAA,OAAA,IAAAg/G,EAAA,WAAAA,EACA,OAAA3+H,KAAAiM,QAGA0rH,GAAA33H,KAAA,aAAA2f,GAFA,IAGA,EAOA0oF,EAAAu2B,cAAA,WACA,OAAAlH,GAAA13H,KAAA,eACA,EAiBAqoG,EAAAmgB,UAAA,SAAA2H,GACA,IAAAO,OAAA,IAAAP,EAAA,GAAAA,EACA0O,EAAAnO,EAAA/H,qBACAA,OAAA,IAAAkW,KACAC,EAAApO,EAAA9H,gBACAA,OAAA,IAAAkW,KACAC,EAAArO,EAAA5H,cACAA,OAAA,IAAAiW,KACAC,EAAAtO,EAAA7H,cACAA,OAAA,IAAAmW,KACAC,EAAAvO,EAAAqH,aACAA,OAAA,IAAAkH,KACAC,EAAAxO,EAAA/wG,OACAA,OAAA,IAAAu/G,EAAA,WAAAA,EACA,OAAAl/H,KAAAiM,SAGA48G,EAAA,QACAiP,GAAA93H,KAAA,aAAA2f,EAAAipG,EAAAD,EAAAG,EAAAiP,GAHA,IAIA,EAQA1vB,EAAA82B,UAAA,WACA,OAAAzH,GAAA13H,KAAA,mCACA,EAUAqoG,EAAA+2B,OAAA,WACA,OAAA1H,GAAA13H,KAAAyxH,QAAA,kCACA,EAOAppB,EAAAg3B,UAAA,WACA,OAAAr/H,KAAAiM,QAGA0rH,GAAA33H,MAAA,GAFA,IAGA,EAcAqoG,EAAAi3B,UAAA,SAAA7O,GACA,IAAA8O,OAAA,IAAA9O,EAAA,GAAAA,EACA+O,EAAAD,EAAAzW,cACAA,OAAA,IAAA0W,KACAC,EAAAF,EAAAG,YACAA,OAAA,IAAAD,KACAE,EAAAJ,EAAAK,mBAEArhB,EAAA,eAWA,OAVAmhB,GAAA5W,WAFA,IAAA6W,QAIAphB,GAAA,KAEAmhB,EACAnhB,GAAA,IACAuK,IACAvK,GAAA,OAGAmZ,GAAA13H,KAAAu+G,GAAA,EACA,EAcAlW,EAAAw3B,MAAA,SAAAvgC,GAIA,YAHA,IAAAA,IACAA,EAAA,IAEAt/F,KAAAiM,QAGAjM,KAAAq/H,YAAA,IAAAr/H,KAAAs/H,UAAAhgC,GAFA,IAGA,EAMA+I,EAAA53F,SAAA,WACA,OAAAzQ,KAAAiM,QAAAjM,KAAAuoH,QAAAsN,EACA,EAMAxtB,EAAA4e,GAAA,WACA,OAAAjnH,KAAAiM,QACA,kBAAAjM,KAAAuoH,QAAA,WAAAvoH,KAAA+pG,KAAAzxG,KAAA,aAAA0H,KAAAgpG,OAAA,KAEA,+BAAAhpG,KAAAgpH,cAAA,IAEA,EAMA3gB,EAAApE,QAAA,WACA,OAAAjkG,KAAA0oH,UACA,EAMArgB,EAAAqgB,SAAA,WACA,OAAA1oH,KAAAiM,QAAAjM,KAAAuoG,GAAA2B,GACA,EAMA7B,EAAAy3B,UAAA,WACA,OAAA9/H,KAAAiM,QAAAjM,KAAAuoG,GAAA,IAAA2B,GACA,EAMA7B,EAAA03B,cAAA,WACA,OAAA//H,KAAAiM,QAAA8I,KAAAM,MAAArV,KAAAuoG,GAAA,KAAA2B,GACA,EAMA7B,EAAA0gB,OAAA,WACA,OAAA/oH,KAAAuoH,OACA,EAMAlgB,EAAA23B,OAAA,WACA,OAAAhgI,KAAA2tG,UACA,EASAtF,EAAAigB,SAAA,SAAAhpB,GAIA,QAHA,IAAAA,IACAA,EAAA,KAEAt/F,KAAAiM,QAAA,SACA,IAAAkiG,EAAA/K,EAAA,GAAApjG,KAAArH,GAMA,OALA2mG,EAAA2gC,gBACA9xB,EAAA4B,eAAA/vG,KAAA+vG,eACA5B,EAAAqC,gBAAAxwG,KAAA8rG,IAAA0E,gBACArC,EAAAnF,OAAAhpG,KAAA8rG,IAAA9C,QAEAmF,CACA,EAMA9F,EAAAsF,SAAA,WACA,WAAA51G,KAAAiI,KAAAiM,QAAAjM,KAAAuoG,GAAA2B,IACA,EAmBA7B,EAAA6jB,KAAA,SAAAgU,EAAA92H,EAAAk2F,GAOA,QANA,IAAAl2F,IACAA,EAAA,qBAEA,IAAAk2F,IACAA,EAAA,KAEAt/F,KAAAiM,UAAAi0H,EAAAj0H,QACA,OAAAs6G,GAAAY,QAAA,0CAEA,IA3yKAxM,EA2yKAwlB,EAAA/8B,EAAA,CACA4F,OAAAhpG,KAAAgpG,OACAwH,gBAAAxwG,KAAAwwG,iBACAlR,GACAoP,GA/yKAiM,EA+yKAvxG,EA9yKA6I,MAAAiS,QAAAy2F,KAAA,CAAAA,IA8yKAzzG,IAAAq/G,GAAAe,eACA8Y,EAAAF,EAAAj8B,UAAAjkG,KAAAikG,UAGAo8B,EAAA1O,GAFAyO,EAAApgI,KAAAkgI,EACAE,EAAAF,EAAAlgI,KACA0uG,EAAAyxB,GACA,OAAAC,EAAAC,EAAAjX,SAAAiX,CACA,EAUAh4B,EAAAi4B,QAAA,SAAAl3H,EAAAk2F,GAOA,YANA,IAAAl2F,IACAA,EAAA,qBAEA,IAAAk2F,IACAA,EAAA,IAEAt/F,KAAAksH,KAAAzZ,EAAAzT,MAAA51F,EAAAk2F,EACA,EAOA+I,EAAAk4B,MAAA,SAAAL,GACA,OAAAlgI,KAAAiM,QAAAk/G,GAAAE,cAAArrH,KAAAkgI,GAAAlgI,IACA,EAaAqoG,EAAA8jB,QAAA,SAAA+T,EAAA92H,EAAAk2F,GACA,IAAAt/F,KAAAiM,QAAA,SACA,IAAAu0H,EAAAN,EAAAj8B,UACAw8B,EAAAzgI,KAAAutG,QAAA2yB,EAAAn2B,KAAA,CACA2nB,eAAA,IAEA,OAAA+O,EAAAzU,QAAA5iH,EAAAk2F,IAAAkhC,MAAAC,EAAAvC,MAAA90H,EAAAk2F,EACA,EASA+I,EAAAI,OAAA,SAAA6L,GACA,OAAAt0G,KAAAiM,SAAAqoG,EAAAroG,SAAAjM,KAAAikG,YAAAqQ,EAAArQ,WAAAjkG,KAAA+pG,KAAAtB,OAAA6L,EAAAvK,OAAA/pG,KAAA8rG,IAAArD,OAAA6L,EAAAxI,IACA,EAoBAzD,EAAAq4B,WAAA,SAAAv9G,GAIA,QAHA,IAAAA,IACAA,EAAA,KAEAnjB,KAAAiM,QAAA,YACA,IAAAkiG,EAAAhrF,EAAAgrF,MAAAsE,EAAAZ,WAAA,IACA9H,KAAA/pG,KAAA+pG,OAEAjtE,EAAA3Z,EAAA2Z,QAAA98B,KAAAmuG,GAAAhrF,EAAA2Z,QAAA3Z,EAAA2Z,QAAA,EACA4xE,EAAA,sDACAtlG,EAAA+Z,EAAA/Z,KAKA,OAJA6I,MAAAiS,QAAAf,EAAA/Z,QACAslG,EAAAvrF,EAAA/Z,KACAA,OAAAhD,GAEA+yH,GAAAhrB,EAAAnuG,KAAAwtG,KAAA1wE,GAAAsmE,EAAA,GAAAjgF,EAAA,CACAqrF,QAAA,SACAE,QACAtlG,SAEA,EAeAi/F,EAAAs4B,mBAAA,SAAAx9G,GAIA,YAHA,IAAAA,IACAA,EAAA,IAEAnjB,KAAAiM,QACAktH,GAAAh2G,EAAAgrF,MAAAsE,EAAAZ,WAAA,IACA9H,KAAA/pG,KAAA+pG,OACA/pG,KAAAojG,EAAA,GAAAjgF,EAAA,CACAqrF,QAAA,OACAE,MAAA,0BACA0qB,WAAA,KANA,IAQA,EAOA3mB,EAAApgF,IAAA,WACA,QAAAmuF,EAAAt/G,UAAAxI,OAAA8zH,EAAA,IAAAv6G,MAAAuuG,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IACA8L,EAAA9L,GAAAx/G,UAAAw/G,GAEA,IAAA8L,EAAA5wE,MAAA62D,EAAA6pB,YACA,UAAAp2B,EAAA,2CAEA,OAAAqU,GAAAiS,GAAA,SAAA/zH,GACA,OAAAA,EAAAwrG,SACA,GAAAlvF,KAAAsd,IACA,EAOAogF,EAAAt7E,IAAA,WACA,QAAA0pF,EAAA3/G,UAAAxI,OAAA8zH,EAAA,IAAAv6G,MAAA4uG,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IACAyL,EAAAzL,GAAA7/G,UAAA6/G,GAEA,IAAAyL,EAAA5wE,MAAA62D,EAAA6pB,YACA,UAAAp2B,EAAA,2CAEA,OAAAqU,GAAAiS,GAAA,SAAA/zH,GACA,OAAAA,EAAAwrG,SACA,GAAAlvF,KAAAoiB,IACA,EAWAs7E,EAAAmuB,kBAAA,SAAA/lG,EAAA0jF,EAAAp7F,QACA,IAAAA,IACAA,EAAA,IAEA,IAAAmpE,EAAAnpE,EACA09G,EAAAv0C,EAAA0c,OACAA,OAAA,IAAA63B,EAAA,KAAAA,EACAC,EAAAx0C,EAAAkkB,gBACAA,OAAA,IAAAswB,EAAA,KAAAA,EAMA,OAAA/L,GALAjlB,GAAAuB,SAAA,CACArI,SACAwH,kBACAc,aAAA,IAEAz2E,EAAA0jF,EACA,EAKA9L,EAAAsuB,kBAAA,SAAAlmG,EAAA0jF,EAAAp7F,GAIA,YAHA,IAAAA,IACAA,EAAA,IAEAsvF,EAAAmuB,kBAAA/lG,EAAA0jF,EAAAp7F,EACA,EAcAsvF,EAAAuuB,kBAAA,SAAAziB,EAAAp7F,QACA,IAAAA,IACAA,EAAA,IAEA,IAAA89G,EAAA99G,EACA+9G,EAAAD,EAAAj4B,OACAA,OAAA,IAAAk4B,EAAA,KAAAA,EACAC,EAAAF,EAAAzwB,gBACAA,OAAA,IAAA2wB,EAAA,KAAAA,EACAC,EAAAtxB,GAAAuB,SAAA,CACArI,SACAwH,kBACAc,aAAA,IAEA,WAAAyiB,GAAAqN,EAAA7iB,EACA,EAYA9L,EAAA4uB,iBAAA,SAAAxmG,EAAAymG,EAAAhiC,GAIA,QAHA,IAAAA,IACAA,EAAA,IAEA3oF,GAAAkkB,IAAAlkB,GAAA2qH,GACA,UAAAp7B,EAAA,iEAEA,IAAAq7B,EAAAjiC,EACAkiC,EAAAD,EAAAv4B,OACAA,OAAA,IAAAw4B,EAAA,KAAAA,EACAC,EAAAF,EAAA/wB,gBACAA,OAAA,IAAAixB,EAAA,KAAAA,EACAL,EAAAtxB,GAAAuB,SAAA,CACArI,SACAwH,kBACAc,aAAA,IAEA,IAAA8vB,EAAA34B,OAAA64B,EAAAt4B,QACA,UAAA9C,EAAA,4CAAAk7B,EAAA,2CAAAE,EAAAt4B,QAEA,IAAA04B,EAAAJ,EAAAvM,kBAAAl6F,GACAnU,EAAAg7G,EAAAh7G,OACAqjF,EAAA23B,EAAA33B,KACAorB,EAAAuM,EAAAvM,eACAnM,EAAA0Y,EAAA1Y,cACA,OAAAA,EACAvW,EAAA0U,QAAA6B,GAEAuO,GAAA7wG,EAAAqjF,EAAAzK,EAAA,UAAAgiC,EAAA3hH,OAAAkb,EAAAs6F,EAEA,EAQAnyB,EAAAyP,EAAA,EACA7hG,IAAA,UACAvY,IAAA,WACA,cAAA2H,KAAAmnH,OACA,GAMA,CACAv2G,IAAA,gBACAvY,IAAA,WACA,OAAA2H,KAAAmnH,QAAAnnH,KAAAmnH,QAAAt4F,OAAA,IACA,GAMA,CACAje,IAAA,qBACAvY,IAAA,WACA,OAAA2H,KAAAmnH,QAAAnnH,KAAAmnH,QAAAlQ,YAAA,IACA,GAOA,CACArmG,IAAA,SACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAA8rG,IAAA9C,OAAA,IACA,GAOA,CACAp4F,IAAA,kBACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAA8rG,IAAA0E,gBAAA,IACA,GAOA,CACA5/F,IAAA,iBACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAA8rG,IAAAiE,eAAA,IACA,GAMA,CACAn/F,IAAA,OACAvY,IAAA,WACA,OAAA2H,KAAAw5H,KACA,GAMA,CACA5oH,IAAA,WACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAA+pG,KAAAzxG,KAAA,IACA,GAOA,CACAsY,IAAA,OACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAArH,EAAA4tG,KAAA2D,GACA,GAOA,CACAt5F,IAAA,UACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAA8I,KAAAskD,KAAAr5D,KAAArH,EAAA6tG,MAAA,GAAA0D,GACA,GAOA,CACAt5F,IAAA,QACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAArH,EAAA6tG,MAAA0D,GACA,GAOA,CACAt5F,IAAA,MACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAArH,EAAA8tG,IAAAyD,GACA,GAOA,CACAt5F,IAAA,OACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAArH,EAAAquG,KAAAkD,GACA,GAOA,CACAt5F,IAAA,SACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAArH,EAAAsuG,OAAAiD,GACA,GAOA,CACAt5F,IAAA,SACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAArH,EAAAo9F,OAAAmU,GACA,GAOA,CACAt5F,IAAA,cACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAArH,EAAAuyG,YAAAhB,GACA,GAQA,CACAt5F,IAAA,WACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAA+pH,GAAAh2H,MAAAw4G,SAAAtO,GACA,GAQA,CACAt5F,IAAA,aACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAA+pH,GAAAh2H,MAAAy4G,WAAAvO,GACA,GASA,CACAt5F,IAAA,UACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAA+pH,GAAAh2H,MAAA4mG,QAAAsD,GACA,GAMA,CACAt5F,IAAA,YACAvY,IAAA,WACA,OAAA2H,KAAAiM,SAAAjM,KAAA8rG,IAAAuI,iBAAArpD,SAAAhrD,KAAA4mG,QACA,GAQA,CACAh2F,IAAA,eACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAgqH,GAAAj2H,MAAA4mG,QAAAsD,GACA,GAQA,CACAt5F,IAAA,kBACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAgqH,GAAAj2H,MAAAy4G,WAAAvO,GACA,GAOA,CACAt5F,IAAA,gBACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAgqH,GAAAj2H,MAAAw4G,SAAAtO,GACA,GAOA,CACAt5F,IAAA,UACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAitG,GAAAl5G,KAAArH,GAAAm/G,QAAA5N,GACA,GAQA,CACAt5F,IAAA,aACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAqiH,GAAAzf,OAAA,SACAggB,OAAA7uH,KAAA8rG,MACA9rG,KAAAwmG,MAAA,OACA,GAQA,CACA51F,IAAA,YACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAqiH,GAAAzf,OAAA,QACAggB,OAAA7uH,KAAA8rG,MACA9rG,KAAAwmG,MAAA,OACA,GAQA,CACA51F,IAAA,eACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAqiH,GAAAzb,SAAA,SACAgc,OAAA7uH,KAAA8rG,MACA9rG,KAAA4mG,QAAA,OACA,GAQA,CACAh2F,IAAA,cACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAqiH,GAAAzb,SAAA,QACAgc,OAAA7uH,KAAA8rG,MACA9rG,KAAA4mG,QAAA,OACA,GAQA,CACAh2F,IAAA,SACAvY,IAAA,WACA,OAAA2H,KAAAiM,SAAAjM,KAAAwjG,EAAA0G,GACA,GAOA,CACAt5F,IAAA,kBACAvY,IAAA,WACA,OAAA2H,KAAAiM,QACAjM,KAAA+pG,KAAAzB,WAAAtoG,KAAAuoG,GAAA,CACA5oF,OAAA,QACAqpF,OAAAhpG,KAAAgpG,SAGA,IAEA,GAOA,CACAp4F,IAAA,iBACAvY,IAAA,WACA,OAAA2H,KAAAiM,QACAjM,KAAA+pG,KAAAzB,WAAAtoG,KAAAuoG,GAAA,CACA5oF,OAAA,OACAqpF,OAAAhpG,KAAAgpG,SAGA,IAEA,GAMA,CACAp4F,IAAA,gBACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAjM,KAAA+pG,KAAA0kB,YAAA,IACA,GAMA,CACA79G,IAAA,UACAvY,IAAA,WACA,OAAA2H,KAAAo/G,gBAGAp/G,KAAAq8C,OAAAr8C,KAAAtI,IAAA,CACA8uG,MAAA,EACAC,IAAA,IACApqD,QAAAr8C,KAAAq8C,OAAAr8C,KAAAtI,IAAA,CACA8uG,MAAA,IACAnqD,OAEA,GACA,CACAzrC,IAAA,eACAvY,IAAA,WACA,OAAAu/G,GAAA53G,KAAAumG,KACA,GAQA,CACA31F,IAAA,cACAvY,IAAA,WACA,OAAA4hH,GAAAj6G,KAAAumG,KAAAvmG,KAAAwmG,MACA,GAQA,CACA51F,IAAA,aACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAA+sG,GAAAh5G,KAAAumG,MAAA2D,GACA,GASA,CACAt5F,IAAA,kBACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAysG,GAAA14G,KAAAw4G,UAAAtO,GACA,GAQA,CACAt5F,IAAA,uBACAvY,IAAA,WACA,OAAA2H,KAAAiM,QAAAysG,GAAA14G,KAAA05G,cAAA15G,KAAA8rG,IAAAsI,wBAAAp0G,KAAA8rG,IAAAqI,kBAAAjK,GACA,IACA,EACAt5F,IAAA,aACAvY,IAAA,WACA,OAAAiuG,CACA,GAMA,CACA11F,IAAA,WACAvY,IAAA,WACA,OAAAquG,CACA,GAMA,CACA91F,IAAA,wBACAvY,IAAA,WACA,OAAAsuG,CACA,GAMA,CACA/1F,IAAA,YACAvY,IAAA,WACA,OAAAwuG,CACA,GAMA,CACAj2F,IAAA,YACAvY,IAAA,WACA,OAAAyuG,CACA,GAMA,CACAl2F,IAAA,cACAvY,IAAA,WACA,OAAA0uG,CACA,GAMA,CACAn2F,IAAA,oBACAvY,IAAA,WACA,OAAA6uG,CACA,GAMA,CACAt2F,IAAA,yBACAvY,IAAA,WACA,OAAA8uG,CACA,GAMA,CACAv2F,IAAA,wBACAvY,IAAA,WACA,OAAAgvG,CACA,GAMA,CACAz2F,IAAA,iBACAvY,IAAA,WACA,OAAAivG,CACA,GAMA,CACA12F,IAAA,uBACAvY,IAAA,WACA,OAAAmvG,CACA,GAMA,CACA52F,IAAA,4BACAvY,IAAA,WACA,OAAAovG,CACA,GAMA,CACA72F,IAAA,2BACAvY,IAAA,WACA,OAAAqvG,CACA,GAMA,CACA92F,IAAA,iBACAvY,IAAA,WACA,OAAAsvG,CACA,GAMA,CACA/2F,IAAA,8BACAvY,IAAA,WACA,OAAAuvG,CACA,GAMA,CACAh3F,IAAA,eACAvY,IAAA,WACA,OAAAwvG,CACA,GAMA,CACAj3F,IAAA,4BACAvY,IAAA,WACA,OAAAyvG,CACA,GAMA,CACAl3F,IAAA,4BACAvY,IAAA,WACA,OAAA0vG,CACA,GAMA,CACAn3F,IAAA,gBACAvY,IAAA,WACA,OAAA2vG,CACA,GAMA,CACAp3F,IAAA,6BACAvY,IAAA,WACA,OAAA4vG,CACA,GAMA,CACAr3F,IAAA,gBACAvY,IAAA,WACA,OAAA6vG,CACA,GAMA,CACAt3F,IAAA,6BACAvY,IAAA,WACA,OAAA8vG,CACA,KAEAsK,CACA,CA3uEA,CA2uEAl/C,OAAAy3D,IAAA,+BACA,SAAAO,GAAAoW,GACA,GAAAlvB,GAAA6pB,WAAAqF,GACA,OAAAA,EACA,GAAAA,KAAA19B,SAAA+Q,GAAA2sB,EAAA19B,WACA,OAAAwO,GAAAmnB,WAAA+H,GACA,GAAAA,GAAA,iBAAAA,EACA,OAAAlvB,GAAAZ,WAAA8vB,GAEA,UAAAz7B,EAAA,8BAAAy7B,EAAA,oBAAAA,EAEA,CAkBA,OAdAtwE,EAAAohD,YACAphD,EAAAk1D,YACAl1D,EAAAmjD,mBACAnjD,EAAAo4C,WACAp4C,EAAAi9D,QACAj9D,EAAA85D,YACA95D,EAAAujD,eACAvjD,EAAAkgD,YACAlgD,EAAAu3C,aACAv3C,EAAAuwE,QAXA,QAYAvwE,EAAA+2C,OAEAloG,OAAAu7E,eAAApqB,EAAA,cAAA7kD,OAAA,IAEA6kD,CAEA,CAn5QA,CAm5QA,IAGA55D,OAAA,iBAAAmpB,GACA,kBAEA,OAAAA,EAAA6hF,KACA,CACA,CALA,CAKAziG,OAEAvI,OC75QA,2BACA,SACA,QACA,UACA,aACA,SAAA2B,EAAAqpG,EAAAn9F,EAAAm5B,GACA,aAEA,MAAAg0E,YAAAhQ,EAEA,SAAAo/B,EAAA1+G,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA+pB,GAEAnjB,KAAAuF,SAAAI,SAAA,WACA,CA8IA,OA5IAL,EAAA3F,OAAAkiI,EAAAv8H,GAEAu8H,EAAAjoG,SAAA,WAEAioG,EAAA9hI,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA8+B,eACA9+B,KAAA2M,eACA,EAEAk1H,EAAA9hI,UAAA++B,aAAA,WACA,GAAA9+B,KAAA1E,KAAA+jC,OACAr/B,KAAAuF,SAAAqD,YAAA,0BACA61B,EAAAK,aAAA9+B,KAAA,sBACA,CACA,IAAA8hI,EAAArjG,EAAAgB,4BAAAz/B,MAAA,GAEA8hI,GACA9hI,KAAAuF,SAAAqD,YAAA,0BACA61B,EAAAK,aAAA9+B,KAAA,sBAAA8hI,IAIA9hI,KAAAuF,SAAAI,SAAA,yBAEA,CACA,EAEAk8H,EAAA9hI,UAAA8H,OAAA,SAAAtC,GACA,OAAAvF,KAAA8G,qBAAAvB,EACA,EAEAs8H,EAAA9hI,UAAA0H,WAAA,WACAzH,KAAA+hI,eACA,EAIAF,EAAA9hI,UAAAgiI,cAAA,WACA/hI,KAAA8F,KAAApN,SAGAsH,KAAAgiI,YAAAhiI,KAAA8F,KAAA,GACA9F,KAAAgiI,YAAAz8H,SAAAsB,SAAA7G,KAAAuF,UACAvF,KAAAgiI,YAAAznI,OACAyF,KAAAgiI,YAAA5rD,KAAAq8B,EAAAzT,OACA,EAEA6iC,EAAA9hI,UAAAkiI,gBAAA,WACA,OAAA9oI,EAAA+N,IAAAlH,KAAA8F,MAAA,SAAAo8H,GACA,OACAx8H,KAAAw8H,EAAAx8H,KACA9K,GAAAsnI,EAAA5mI,KAAAV,GAEA,GACA,EAEAinI,EAAA9hI,UAAAoiI,aAAA,SAAAC,GACA,IAAAvsE,EAAA18D,EAAAmI,KAAAtB,KAAA8F,MAAA,SAAAo8H,GACA,OAAAA,EAAA5mI,KAAAV,KAAAwnI,CACA,IACApiI,KAAAqiI,SAAAxsE,EACA,EAEAgsE,EAAA9hI,UAAAsiI,SAAA,SAAAxsE,GACA,IAAAysE,EAAAtiI,KAAAgiI,YAAAhiI,KAAAgiI,YAAAO,cAAA9vB,EAAAzT,MACAwjC,EAAAxiI,KAAAgiI,YAAAhiI,KAAAgiI,YAAAS,kBAAA,KAEAziI,KAAAgiI,aACAhiI,KAAAgiI,YAAAz8H,SAAAm9H,SAEA1iI,KAAAgiI,YAAAnsE,EACA71D,KAAAgiI,YAAAz8H,SAAAsB,SAAA7G,KAAAuF,UACAvF,KAAAgiI,YAAA5rD,KAAAksD,GAEAE,EACAxiI,KAAAgiI,YAAAW,gBAAAH,GAEAxiI,KAAAgiI,YAAAY,oBAEA5iI,KAAAgiI,YAAAa,kBACA,EAEAhB,EAAA9hI,UAAAo3C,WAAA,WACAn3C,KAAAgiI,aAEAhiI,KAAAgiI,YAAAY,mBACA,EAEAf,EAAA9hI,UAAA6mC,SAAA,SAAA8M,GACA,GAAA1zC,KAAAgiI,YAAA,CAGA,IAAAh4B,EAAA,SAAA5wG,EAAAsM,KAAAguC,EAAAlnC,OACAimG,EAAAmnB,WAAAlmF,EAAAlnC,OACAimG,EAAAiV,QAAAh0E,EAAAlnC,OACAxM,KAAAgiI,YAAA5rD,KAAA4zB,GACAhqG,KAAAgiI,YAAAW,gBAAA34B,GACAhqG,KAAAgiI,YAAAa,kBAPA,CAQA,EAEAhB,EAAA9hI,UAAA+iI,WAAA,SAAAC,GACA,QAAAtqI,EAAA,EAAAA,EAAAuH,KAAA8F,KAAApN,OAAAD,IACA,GAAAsqI,IAAA/iI,KAAA8F,KAAArN,GAAAiN,KAAA,CACA1F,KAAAqiI,SAAAriI,KAAA8F,KAAArN,IACA,KACA,CAEA,EAEAopI,EAAA9hI,UAAAijI,uBAAA,WACAhjI,KAAAgiI,YAAAnzD,UACA,EAEAgzD,EAAA9hI,UAAAkjI,mBAAA,WACAjjI,KAAAgiI,YAAApvE,MACA,EAEAivE,EAAA9hI,UAAAmjI,oBAAA,WACAljI,KAAAgiI,YAAA5rD,KAAAq8B,EAAAzT,OACAh/F,KAAAgiI,YAAAW,gBAAAlwB,EAAAzT,OACAh/F,KAAAgiI,YAAAa,kBACA,EAEAhB,EAAA9hI,UAAAojI,8BAAA,WACAnjI,KAAA8iI,WAAA,kBACA,EAEAjB,EAAA9hI,UAAAqjI,+BAAA,WACApjI,KAAA8iI,WAAA,mBACA,EAEAjB,EAAA9hI,UAAAsjI,gCAAA,WACArjI,KAAA8iI,WAAA,oBACA,EAEAjB,EAAA9hI,UAAAujI,+BAAA,WACAtjI,KAAA8iI,WAAA,mBACA,EAEAjB,CACA,IACApqI,OC9JA,kDACA,aAEA,OACA8rI,QAAA,SAAAC,GAQA,OAPA,IAAAzrI,UAAAu/G,IACAksB,EAAAnrI,IAAA,QACAmrI,EAAAnrI,IAAA,WACAmrI,EAAAnrI,IAAA,OACAmrI,EAAAnrI,IAAA,QACAmrI,EAAAnrI,IAAA,UACAmrI,EAAAnrI,IAAA,WAEA,EAEA;;;;;ACVA,SAAA+4D,GACA,aAEA,mBAAA35D,eAAA65D,IAGA75D,OAAA,uBAAA25D,GAIAA,EAAAhoC,OAEA,CAZA,EAYA,SAAAhwB,GAGAA,EAAAqqI,GAAArqI,EAAAqqI,IAAA,GAEArqI,EAAAqqI,GAAA7mH,QAAA;;;;;;;;GAAA,IAuBA8mH,EAJAC,EAAA,EACAC,EAAA3xH,MAAAlS,UAAA8yB,eACAgxG,EAAA5xH,MAAAlS,UAAArB,MAEAtF,EAAA0qI,WAAAJ,EAaAtqI,EAAA0qI,UAZA,SAAAC,GACA,IAAAzjI,EAAA0jI,EAAAvrI,EACA,IAAAA,EAAA,SAAAurI,EAAAD,EAAAtrI,SAGA6H,EAAAlH,EAAAo9F,MAAAwtC,EAAA,YACA1jI,EAAAvH,QACAK,EAAA4qI,GAAAlmH,eAAA,UAGA4lH,EAAAK,EACA,GAGA3qI,EAAA6qI,OAAA,SAAA3rI,EAAA61G,EAAApuG,GACA,IAAAmkI,EAAAjkI,EAAAkkI,EAIAC,EAAA,GAEAC,EAAA/rI,EAAAE,MAAA,QAEA,kBADAF,IAAAE,MAAA,UACA,gBAAAF,EACA,OAAAc,EAAAkP,MAAA,wBAAAhQ,GAEA,IAAAgsI,EAAAD,EAAA,IAAA/rI,EAsHA,OApHAyH,IACAA,EAAAouG,EACAA,EAAA/0G,EAAAmrI,QAGAtyH,MAAAiS,QAAAnkB,KACAA,EAAA3G,EAAAuG,OAAAsB,MAAA,UAAAymC,OAAA3nC,KAIA3G,EAAAorI,KAAAC,QAAAH,EAAAhqI,eAAA,SAAA0pI,GACA,QAAA5qI,EAAAkC,KAAA0oI,EAAAM,EACA,EAEAlrI,EAAAirI,GAAAjrI,EAAAirI,IAAA,GACAH,EAAA9qI,EAAAirI,GAAA/rI,GACA2H,EAAA7G,EAAAirI,GAAA/rI,GAAA,SAAA6qB,EAAAvX,GAGA,IAAA5L,YAAA0kI,cACA,WAAAzkI,EAAAkjB,EAAAvX,GAKA1K,UAAAxI,QACAsH,KAAA0kI,cAAAvhH,EAAAvX,EAEA,EAGAxS,EAAAuG,OAAAM,EAAAikI,EAAA,CACAtnH,QAAA7c,EAAA6c,QAIAyrF,OAAAjvG,EAAAuG,OAAA,GAAAI,GAIA4kI,mBAAA,MAGAR,EAAA,IAAAh2B,GAKAhrF,QAAA/pB,EAAA6qI,OAAAtkI,OAAA,GAAAwkI,EAAAhhH,SACA/pB,EAAAgJ,KAAArC,GAAA,SAAA2W,EAAAlK,GAKA43H,EAAA1tH,GAJA,mBAAAlK,EAIA,WACA,SAAAmzE,IACA,OAAAwuB,EAAApuG,UAAA2W,GAAAzV,MAAAjB,KAAAkB,UACA,CAEA,SAAA0jI,EAAA//E,GACA,OAAAspD,EAAApuG,UAAA2W,GAAAzV,MAAAjB,KAAA6kD,EACA,CAEA,kBACA,IAEAggF,EAFAC,EAAA9kI,KAAA2/E,OACAolD,EAAA/kI,KAAA4kI,YAWA,OARA5kI,KAAA2/E,SACA3/E,KAAA4kI,cAEAC,EAAAr4H,EAAAvL,MAAAjB,KAAAkB,WAEAlB,KAAA2/E,OAAAmlD,EACA9kI,KAAA4kI,YAAAG,EAEAF,CACA,CACA,CAxBA,GAHAr4H,CA4BA,IACAvM,EAAAF,UAAA3G,EAAA6qI,OAAAtkI,OAAAwkI,EAAA,CAKAa,kBAAAd,GAAAC,EAAAa,mBAAA1sI,GACA8rI,EAAA,CACAnkI,cACAokI,YACAY,WAAA3sI,EACA4sI,eAAAZ,IAOAJ,GACA9qI,EAAAgJ,KAAA8hI,EAAAS,oBAAA,SAAAlsI,EAAA4wF,GACA,IAAA87C,EAAA97C,EAAAtpF,UAIA3G,EAAA6qI,OAAAkB,EAAAd,UAAA,IAAAc,EAAAF,WAAAhlI,EACAopF,EAAAgf,OACA,WAIA67B,EAAAS,oBAEAx2B,EAAAw2B,mBAAA9jI,KAAAZ,GAGA7G,EAAA6qI,OAAAmB,OAAA9sI,EAAA2H,GAEAA,CACA,EAEA7G,EAAA6qI,OAAAtkI,OAAA,SAAA0kC,GAOA,IANA,IAGAzzB,EACApE,EAJAukC,EAAA8yF,EAAA7+G,KAAA9jB,UAAA,GACAmkI,EAAA,EACAC,EAAAv0F,EAAAr4C,OAIA2sI,EAAAC,EAAAD,IACA,IAAAz0H,KAAAmgC,EAAAs0F,GACA74H,EAAAukC,EAAAs0F,GAAAz0H,GACAgzH,EAAA5+G,KAAA+rB,EAAAs0F,GAAAz0H,SAAAxK,IAAAoG,IAGApT,EAAAmsI,cAAA/4H,GACA63B,EAAAzzB,GAAAxX,EAAAmsI,cAAAlhG,EAAAzzB,IACAxX,EAAA6qI,OAAAtkI,OAAA,GAAA0kC,EAAAzzB,GAAApE,GAGApT,EAAA6qI,OAAAtkI,OAAA,GAAA6M,GAIA63B,EAAAzzB,GAAApE,GAKA,OAAA63B,CACA,EAEAjrC,EAAA6qI,OAAAmB,OAAA,SAAA9sI,EAAA8a,GACA,IAAAkxH,EAAAlxH,EAAArT,UAAAmlI,gBAAA5sI,EACAc,EAAAgmB,GAAA9mB,GAAA,SAAA6qB,GACA,IAAAqiH,EAAA,iBAAAriH,EACA0hC,EAAAg/E,EAAA7+G,KAAA9jB,UAAA,GACA2jI,EAAA7kI,KA4DA,OA1DAwlI,EAIAxlI,KAAAtH,QAAA,aAAAyqB,EAGAnjB,KAAAoC,MAAA,WACA,IAAAqjI,EACAlmI,EAAAnG,EAAAkC,KAAA0E,KAAAskI,GAEA,mBAAAnhH,GACA0hH,EAAAtlI,GACA,GAGAA,EAMA,mBAAAA,EAAA4jB,IACA,MAAAA,EAAAvqB,OAAA,GACAQ,EAAAkP,MAAA,mBAAA6a,EAAA,SAAA7qB,EACA,qBAGAmtI,EAAAlmI,EAAA4jB,GAAAliB,MAAA1B,EAAAslD,MAEAtlD,QAAA6G,IAAAq/H,GACAZ,EAAAY,KAAArwG,OACAyvG,EAAAa,UAAAD,EAAAptI,OACAotI,GACA,QAJA,EAbArsI,EAAAkP,MAAA,0BAAAhQ,EAAA,uDAEA6qB,EAAA,IAiBA,IA/BA0hH,OAAAz+H,GAoCAy+C,EAAAnsD,SACAyqB,EAAA/pB,EAAA6qI,OAAAtkI,OAAAsB,MAAA,MAAAkiB,GAAAukB,OAAAmd,KAGA7kD,KAAAoC,MAAA,WACA,IAAA7C,EAAAnG,EAAAkC,KAAA0E,KAAAskI,GACA/kI,GACAA,EAAA0zC,OAAA9vB,GAAA,IACA5jB,EAAAomI,OACApmI,EAAAomI,SAGAvsI,EAAAkC,KAAA0E,KAAAskI,EAAA,IAAAlxH,EAAA+P,EAAAnjB,MAEA,KAGA6kI,CACA,CACA,EAEAzrI,EAAAmrI,OAAA,aACAnrI,EAAAmrI,OAAAI,mBAAA,GAEAvrI,EAAAmrI,OAAAxkI,UAAA,CACAklI,WAAA,SACAD,kBAAA,GACAY,eAAA,QAEAziH,QAAA,CACA0iH,QAAA,GACAC,UAAA,EAGAp1H,OAAA,MAGAg0H,cAAA,SAAAvhH,EAAAvX,GACAA,EAAAxS,EAAAwS,GAAA5L,KAAA4lI,gBAAA5lI,MAAA,GACAA,KAAA4L,QAAAxS,EAAAwS,GACA5L,KAAA+lI,KAAApC,IACA3jI,KAAAgmI,eAAA,IAAAhmI,KAAAilI,WAAAjlI,KAAA+lI,KAEA/lI,KAAAimI,SAAA7sI,IACA4G,KAAAkmI,UAAA9sI,IACA4G,KAAAmmI,UAAA/sI,IACA4G,KAAAomI,qBAAA,GAEAx6H,IAAA5L,OACA5G,EAAAkC,KAAAsQ,EAAA5L,KAAAklI,eAAAllI,MACAA,KAAAqmI,KAAA,EAAArmI,KAAA4L,QAAA,CACA7S,OAAA,SAAA2H,GACAA,EAAA2jC,SAAAz4B,GACA5L,KAAAkrF,SAEA,IAEAlrF,KAAA9H,SAAAkB,EAAAwS,EAAAqwB,MAGArwB,EAAA8xE,cAGA9xE,EAAA1T,UAAA0T,GACA5L,KAAAnG,OAAAT,EAAA4G,KAAA9H,SAAA,GAAAmuF,aAAArmF,KAAA9H,SAAA,GAAAouI,eAGAtmI,KAAAmjB,QAAA/pB,EAAA6qI,OAAAtkI,OAAA,GACAK,KAAAmjB,QACAnjB,KAAAumI,oBACApjH,GAEAnjB,KAAAwmI,UAEAxmI,KAAAmjB,QAAA2iH,UACA9lI,KAAAymI,mBAAAzmI,KAAAmjB,QAAA2iH,UAGA9lI,KAAA0mI,SAAA,cAAA1mI,KAAA2mI,uBACA3mI,KAAA2lI,OACA,EAEAY,kBAAA,WACA,QACA,EAEAI,oBAAAvtI,EAAA+O,KAEAq+H,QAAAptI,EAAA+O,KAEAw9H,MAAAvsI,EAAA+O,KAEA+iF,QAAA,WACA,IAAA1sE,EAAAxe,KAEAA,KAAA4mI,WACAxtI,EAAAgJ,KAAApC,KAAAomI,sBAAA,SAAAx1H,EAAApE,GACAgS,EAAAqoH,aAAAr6H,EAAAoE,EACA,IAIA5Q,KAAA4L,QACApB,IAAAxK,KAAAgmI,gBACAc,WAAA9mI,KAAAklI,gBACAllI,KAAAikI,SACAz5H,IAAAxK,KAAAgmI,gBACAz+F,WAAA,iBAGAvnC,KAAAimI,SAAAz7H,IAAAxK,KAAAgmI,eACA,EAEAY,SAAAxtI,EAAA+O,KAEA87H,OAAA,WACA,OAAAjkI,KAAA4L,OACA,EAEAqnC,OAAA,SAAAriC,EAAApE,GACA,IACAohG,EACAm5B,EACAtuI,EAHA0qB,EAAAvS,EAKA,OAAA1P,UAAAxI,OAGA,OAAAU,EAAA6qI,OAAAtkI,OAAA,GAAAK,KAAAmjB,SAGA,oBAAAvS,EAMA,GAHAuS,EAAA,GACAyqF,EAAAh9F,EAAApY,MAAA,KACAoY,EAAAg9F,EAAA5uF,QACA4uF,EAAAl1G,OAAA,CAEA,IADAquI,EAAA5jH,EAAAvS,GAAAxX,EAAA6qI,OAAAtkI,OAAA,GAAAK,KAAAmjB,QAAAvS,IACAnY,EAAA,EAAAA,EAAAm1G,EAAAl1G,OAAA,EAAAD,IACAsuI,EAAAn5B,EAAAn1G,IAAAsuI,EAAAn5B,EAAAn1G,KAAA,GACAsuI,IAAAn5B,EAAAn1G,IAGA,GADAmY,EAAAg9F,EAAAr5F,MACA,IAAArT,UAAAxI,OACA,YAAA0N,IAAA2gI,EAAAn2H,GAAA,KAAAm2H,EAAAn2H,GAEAm2H,EAAAn2H,GAAApE,CACA,MACA,OAAAtL,UAAAxI,OACA,YAAA0N,IAAApG,KAAAmjB,QAAAvS,GAAA,KAAA5Q,KAAAmjB,QAAAvS,GAEAuS,EAAAvS,GAAApE,CACA,CAKA,OAFAxM,KAAAgnI,YAAA7jH,GAEAnjB,IACA,EAEAgnI,YAAA,SAAA7jH,GACA,IAAAvS,EAEA,IAAAA,KAAAuS,EACAnjB,KAAAinI,WAAAr2H,EAAAuS,EAAAvS,IAGA,OAAA5Q,IACA,EAEAinI,WAAA,SAAAr2H,EAAApE,GAWA,MAVA,YAAAoE,GACA5Q,KAAAknI,kBAAA16H,GAGAxM,KAAAmjB,QAAAvS,GAAApE,EAEA,aAAAoE,GACA5Q,KAAAymI,mBAAAj6H,GAGAxM,IACA,EAEAknI,kBAAA,SAAA16H,GACA,IAAA26H,EAAAjvD,EAAAkvD,EAEA,IAAAD,KAAA36H,EACA46H,EAAApnI,KAAAomI,qBAAAe,GACA36H,EAAA26H,KAAAnnI,KAAAmjB,QAAA0iH,QAAAsB,IACAC,GACAA,EAAA1uI,SAQAw/E,EAAA9+E,EAAAguI,EAAA/uI,OACA2H,KAAA6mI,aAAAO,EAAAD,GAMAjvD,EAAAvyE,SAAA3F,KAAAqnI,SAAA,CACAz7H,QAAAssE,EACAvoE,KAAAw3H,EACAtB,QAAAr5H,EACA44C,KAAA,KAGA,EAEAqhF,mBAAA,SAAAj6H,GACAxM,KAAAsnI,aAAAtnI,KAAAikI,SAAAjkI,KAAAklI,eAAA,mBAAA14H,GAGAA,IACAxM,KAAA6mI,aAAA7mI,KAAAkmI,UAAA,uBACAlmI,KAAA6mI,aAAA7mI,KAAAmmI,UAAA,uBAEA,EAEAxkC,OAAA,WACA,OAAA3hG,KAAAgnI,YAAA,CAAAlB,UAAA,GACA,EAEAlkC,QAAA,WACA,OAAA5hG,KAAAgnI,YAAA,CAAAlB,UAAA,GACA,EAEAuB,SAAA,SAAAlkH,GACA,IAAAw9F,EAAA,GACAniG,EAAAxe,KAOA,SAAAunI,IACA,IAAAC,EAAA,GAEArkH,EAAAvX,QAAAxJ,MAAA,SAAAjJ,EAAAyS,GACAxS,EAAA8N,IAAAsX,EAAA4nH,sBAAA,SAAAluD,GACA,OAAAA,CACA,IACAG,MAAA,SAAAH,GACA,OAAAA,EAAA5zC,GAAA14B,EACA,KAGA47H,EAAA3mI,KAAA+K,EAEA,IAEA4S,EAAA6nH,IAAAjtI,EAAAouI,GAAA,CACAzuI,OAAA,0BAEA,CAEA,SAAA0uI,EAAA5B,EAAA6B,GACA,IAAAnmI,EAAA9I,EACA,IAAAA,EAAA,EAAAA,EAAAotI,EAAAntI,OAAAD,IACA8I,EAAAid,EAAA4nH,qBAAAP,EAAAptI,KAAAW,IACA+pB,EAAAiiC,KACAmiF,IACAhmI,EAAAnI,IAAAuuI,WAAApmI,EAAAlJ,MAAAqvC,OAAAvkB,EAAAvX,QAAAvT,UAEAkJ,EAAAnI,EAAAmI,EAAAqmI,IAAAzkH,EAAAvX,SAAAvT,OAEAmmB,EAAA4nH,qBAAAP,EAAAptI,IAAA8I,EACAo/G,EAAA9/G,KAAAglI,EAAAptI,IACAivI,GAAAvkH,EAAA0iH,UAAAptI,KACAkoH,EAAA9/G,KAAAsiB,EAAA0iH,UAAAptI,IAGA,CASA,OAnDA0qB,EAAA/pB,EAAAuG,OAAA,CACAiM,QAAA5L,KAAA4L,QACAi6H,QAAA7lI,KAAAmjB,QAAA0iH,SAAA,IACA1iH,IAyCAxT,MACA83H,EAAAtkH,EAAAxT,KAAA+C,MAAA,gBAEAyQ,EAAA2xC,OACA2yE,EAAAtkH,EAAA2xC,MAAApiD,MAAA,aAGAiuG,EAAA3tG,KAAA,IACA,EAEA60H,uBAAA,SAAAnnI,GACA,IAAA8d,EAAAxe,KACA5G,EAAAgJ,KAAAoc,EAAA4nH,sBAAA,SAAAx1H,EAAApE,IACA,IAAApT,EAAA0uB,QAAApnB,EAAA2jC,OAAA73B,KACAgS,EAAA4nH,qBAAAx1H,GAAAxX,EAAAoT,EAAAo7H,IAAAlnI,EAAA2jC,QAAAhsC,OAEA,IAEA2H,KAAA8nI,KAAA1uI,EAAAsH,EAAA2jC,QACA,EAEAwiG,aAAA,SAAAj7H,EAAA+D,EAAAmlD,GACA,OAAA90D,KAAAsnI,aAAA17H,EAAA+D,EAAAmlD,GAAA,EACA,EAEAizE,UAAA,SAAAn8H,EAAA+D,EAAAmlD,GACA,OAAA90D,KAAAsnI,aAAA17H,EAAA+D,EAAAmlD,GAAA,EACA,EAEAwyE,aAAA,SAAA17H,EAAA+D,EAAAmlD,EAAA1P,GACAA,EAAA,kBAAAA,IAAA0P,EACA,IAAA91C,EAAA,iBAAApT,GAAA,OAAAA,EACAuX,EAAA,CACA2xC,MAAA91C,EAAArP,EAAAmlD,EACAnlD,KAAAqP,EAAApT,EAAA+D,EACA/D,QAAAoT,EAAAhf,KAAA4L,UACAw5C,OAGA,OADAjiC,EAAAvX,QAAAo8H,YAAAhoI,KAAAqnI,SAAAlkH,GAAAiiC,GACAplD,IACA,EAEAqmI,IAAA,SAAA4B,EAAAr8H,EAAAkpH,GACA,IAAAoT,EACA3oI,EAAAS,KAGA,kBAAAioI,IACAnT,EAAAlpH,EACAA,EAAAq8H,EACAA,GAAA,GAIAnT,GAKAlpH,EAAAs8H,EAAA9uI,EAAAwS,GACA5L,KAAAimI,SAAAjmI,KAAAimI,SAAA7gF,IAAAx5C,KALAkpH,EAAAlpH,EACAA,EAAA5L,KAAA4L,QACAs8H,EAAAloI,KAAAikI,UAMA7qI,EAAAgJ,KAAA0yH,GAAA,SAAAp0H,EAAAuO,GACA,SAAAk5H,IAKA,GAAAF,IACA,IAAA1oI,EAAA4jB,QAAA2iH,WACA1sI,EAAA4G,MAAAyiC,SAAA,qBAGA,wBAAAxzB,EAAA1P,EAAA0P,MACAhO,MAAA1B,EAAA2B,UACA,CAGA,iBAAA+N,IACAk5H,EAAAl0G,KAAAhlB,EAAAglB,KACAhlB,EAAAglB,MAAAk0G,EAAAl0G,MAAA76B,EAAA66B,QAGA,IAAAvhB,EAAAhS,EAAAgS,MAAA,sBACAzI,EAAAyI,EAAA,GAAAnT,EAAAymI,eACA1/H,EAAAoM,EAAA,GAEApM,EACA4hI,EAAAxsI,GAAAuO,EAAA3D,EAAA6hI,GAEAv8H,EAAAlQ,GAAAuO,EAAAk+H,EAEA,GACA,EAEAL,KAAA,SAAAl8H,EAAA3B,GACAA,MAAA,IAAAzR,MAAA,KAAAwa,KAAAhT,KAAAgmI,eAAA,KACAhmI,KAAAgmI,eACAp6H,EAAApB,IAAAP,GAGAjK,KAAAimI,SAAA7sI,EAAA4G,KAAAimI,SAAA2B,IAAAh8H,GAAAvT,OACA2H,KAAAmmI,UAAA/sI,EAAA4G,KAAAmmI,UAAAyB,IAAAh8H,GAAAvT,OACA2H,KAAAkmI,UAAA9sI,EAAA4G,KAAAkmI,UAAA0B,IAAAh8H,GAAAvT,MACA,EAEA+vI,OAAA,SAAAn5H,EAAA9F,GAKA,IAAA5J,EAAAS,KACA,OAAA2kB,YALA,WACA,wBAAA1V,EAAA1P,EAAA0P,MACAhO,MAAA1B,EAAA2B,UACA,GAEAiI,GAAA,EACA,EAEAk/H,WAAA,SAAAz8H,GACA5L,KAAAkmI,UAAAlmI,KAAAkmI,UAAA9gF,IAAAx5C,GACA5L,KAAAqmI,IAAAz6H,EAAA,CACA08H,WAAA,SAAA5nI,GACAV,KAAA+nI,UAAA3uI,EAAAsH,EAAA6nI,eAAA,sBACA,EACAC,WAAA,SAAA9nI,GACAV,KAAA6mI,aAAAztI,EAAAsH,EAAA6nI,eAAA,sBACA,GAEA,EAEAE,WAAA,SAAA78H,GACA5L,KAAAmmI,UAAAnmI,KAAAmmI,UAAA/gF,IAAAx5C,GACA5L,KAAAqmI,IAAAz6H,EAAA,CACA88H,QAAA,SAAAhoI,GACAV,KAAA+nI,UAAA3uI,EAAAsH,EAAA6nI,eAAA,sBACA,EACAI,SAAA,SAAAjoI,GACAV,KAAA6mI,aAAAztI,EAAAsH,EAAA6nI,eAAA,sBACA,GAEA,EAEA7B,SAAA,SAAAhhI,EAAAhF,EAAApF,GACA,IAAAob,EAAAgtH,EACAtgH,EAAApjB,KAAAmjB,QAAAzd,GAcA,GAZApK,KAAA,IACAoF,EAAAtH,EAAA2yD,MAAArrD,IACAgF,UAAA1F,KAAAglI,kBACAt/H,EACA1F,KAAAglI,kBAAAt/H,GAAApL,cAIAoG,EAAA2jC,OAAArkC,KAAA4L,QAAA,GAGA83H,EAAAhjI,EAAA85B,cAEA,IAAA9jB,KAAAgtH,EACAhtH,KAAAhW,IACAA,EAAAgW,GAAAgtH,EAAAhtH,IAMA,OADA1W,KAAA4L,QAAAV,QAAAxK,EAAApF,KACA,mBAAA8nB,IACA,IAAAA,EAAAniB,MAAAjB,KAAA4L,QAAA,IAAAlL,GAAAgnC,OAAApsC,KACAoF,EAAAkoI,qBACA,GAGAxvI,EAAAgJ,KAAA,CAAA0G,KAAA,SAAAU,KAAA,qBAAAsjB,EAAA+7G,GACAzvI,EAAAmrI,OAAAxkI,UAAA,IAAA+sB,GAAA,SAAAlhB,EAAAuX,EAAAC,GAKA,IAAA0lH,EAJA,iBAAA3lH,IACAA,EAAA,CAAAmvE,OAAAnvE,IAIA,IAAA4lH,EAAA5lH,GAEA,IAAAA,GAAA,iBAAAA,EACA0lH,EACA1lH,EAAAmvE,QAAAu2C,EAHA/7G,EAMA,iBADA3J,KAAA,IAEAA,EAAA,CAAAokC,SAAApkC,IACA,IAAAA,IACAA,EAAA,IAGA2lH,GAAA1vI,EAAAu8B,cAAAxS,GACAA,EAAA0+B,SAAAz+B,EAEAD,EAAAha,OACAyC,EAAAzC,MAAAga,EAAAha,OAGA2/H,GAAA1vI,EAAA65F,SAAA75F,EAAA65F,QAAAX,OAAAy2C,GACAn9H,EAAAkhB,GAAA3J,GACA4lH,IAAAj8G,GAAAlhB,EAAAm9H,GACAn9H,EAAAm9H,GAAA5lH,EAAAokC,SAAApkC,EAAA6lH,OAAA5lH,GAEAxX,EAAA47C,OAAA,SAAAoL,GACAx5D,EAAA4G,MAAA8sB,KACA1J,GACAA,EAAA4B,KAAApZ,EAAA,IAEAgnD,GACA,GAEA,CACA,IAEAx5D,EAAA6qI;;;;;;;;;;IAqBA,WACA,IAAAgF,EACA9xG,EAAApiB,KAAAoiB,IACAriB,EAAAC,KAAAD,IACAo0H,EAAA,oBACAC,EAAA,oBACAC,EAAA,wBACAC,EAAA,OACAC,EAAA,KACAC,EAAAnwI,EAAAgmB,GAAAjb,SAEA,SAAAqlI,EAAAC,EAAAz8H,EAAAmB,GACA,OACAsR,WAAAgqH,EAAA,KAAAH,EAAAnvI,KAAAsvI,EAAA,IAAAz8H,EAAA,OACAyS,WAAAgqH,EAAA,KAAAH,EAAAnvI,KAAAsvI,EAAA,IAAAt7H,EAAA,OAEA,CAEA,SAAAu7H,EAAA99H,EAAA6H,GACA,OAAAyF,SAAA9f,EAAAwM,IAAAgG,EAAA6H,GAAA,MACA,CAEA,SAAAk2H,EAAAvpI,GACA,aAAAA,SAAAvG,MACA,CAgCAT,EAAA+K,SAAA,CACAylI,eAAA,WACA,QAAAxjI,IAAA6iI,EACA,OAAAA,EAEA,IAAAY,EAAAC,EACAC,EAAA3wI,EAAA,6IAGA4wI,EAAAD,EAAArnG,WAAA,GAcA,OAZAtpC,EAAA,QAAAyyC,OAAAk+F,GACAF,EAAAG,EAAApmG,YACAmmG,EAAAnkI,IAAA,qBAIAikI,KAFAC,EAAAE,EAAApmG,eAGAkmG,EAAAC,EAAA,GAAApxH,aAGAoxH,EAAAhxI,SAEAkwI,EAAAY,EAAAC,CACA,EACAG,cAAA,SAAAC,GACA,IAAAlzD,EAAAkzD,EAAAP,UAAAO,EAAAC,WAAA,GACAD,EAAAt+H,QAAAhG,IAAA,cACAqxE,EAAAizD,EAAAP,UAAAO,EAAAC,WAAA,GACAD,EAAAt+H,QAAAhG,IAAA,cACAwkI,EAAA,WAAApzD,GACA,SAAAA,GAAAkzD,EAAAl9H,MAAAk9H,EAAAt+H,QAAA,GAAAi4B,YAGA,OACA72B,MAHA,WAAAiqE,GACA,SAAAA,GAAAizD,EAAA/7H,OAAA+7H,EAAAt+H,QAAA,GAAA+3B,aAEAvqC,EAAA+K,SAAAylI,iBAAA,EACAz7H,OAAAi8H,EAAAhxI,EAAA+K,SAAAylI,iBAAA,EAEA,EACAS,cAAA,SAAAz+H,GACA,IAAA0+H,EAAAlxI,EAAAwS,GAAA/R,QACA0wI,EAAAZ,EAAAW,EAAA,IACAH,IAAAG,EAAA,QAAAA,EAAA,GAAA94F,SAEA,OACA5lC,QAAA0+H,EACAX,SAAAY,EACAJ,aACA9tF,QALAkuF,IAAAJ,EAKA/wI,EAAAwS,GAAAywC,SAAA,CAAA51C,KAAA,EAAAC,IAAA,GACA0/B,WAAAkkG,EAAAlkG,aACAt4B,UAAAw8H,EAAAx8H,YACAd,MAAAs9H,EAAA1yH,aACAzJ,OAAAm8H,EAAAzyH,cAEA,GAGAze,EAAAgmB,GAAAjb,SAAA,SAAAgf,GACA,IAAAA,MAAAqnH,GACA,OAAAjB,EAAAtoI,MAAAjB,KAAAkB,WAMA,IAAAupI,EAAAC,EAAAC,EAAAC,EAAAC,EAAAxpC,EA/FA2iC,EACA8G,EAiGAzmG,EAAA,iBALAlhB,EAAA/pB,EAAAuG,OAAA,GAAAwjB,IAKAqnH,GACApxI,EAAAlB,UAAAoJ,KAAA6hB,EAAAqnH,IACApxI,EAAA+pB,EAAAqnH,IAEAN,EAAA9wI,EAAA+K,SAAAkmI,cAAAlnH,EAAA+mH,QACAa,EAAA3xI,EAAA+K,SAAA8lI,cAAAC,GACAc,GAAA7nH,EAAA6nH,WAAA,QAAAxyI,MAAA,KACAixI,EAAA,GAoEA,OAlEApoC,EAzGA,KADAypC,GADA9G,EA2GA3/F,GA1GA,IACAmN,SACA,CACAxkC,MAAAg3H,EAAAh3H,QACAmB,OAAA61H,EAAA71H,SACAkuC,OAAA,CAAA31C,IAAA,EAAAD,KAAA,IAGAkjI,EAAAmB,GACA,CACA99H,MAAAg3H,EAAAh3H,QACAmB,OAAA61H,EAAA71H,SACAkuC,OAAA,CAAA31C,IAAAs9H,EAAAl2H,YAAArH,KAAAu9H,EAAA59F,eAGA0kG,EAAAvmG,eACA,CACAv3B,MAAA,EACAmB,OAAA,EACAkuC,OAAA,CAAA31C,IAAAokI,EAAAt/H,MAAA/E,KAAAqkI,EAAAv/H,QAGA,CACAyB,MAAAg3H,EAAApsH,aACAzJ,OAAA61H,EAAAnsH,cACAwkC,OAAA2nF,EAAA3nF,UAkFAhY,EAAA,GAAAE,iBAGAphB,EAAA8nH,GAAA,YAEAP,EAAArpC,EAAAr0F,MACA29H,EAAAtpC,EAAAlzF,OACAy8H,EAAAvpC,EAAAhlD,OAGAwuF,EAAAzxI,EAAAuG,OAAA,GAAAirI,GAIAxxI,EAAAgJ,KAAA,wBACA,IACA8oI,EACAC,EAFA1/E,GAAAtoC,EAAAnjB,OAAA,IAAAxH,MAAA,KAIA,IAAAizD,EAAA/yD,SACA+yD,EAAAy9E,EAAA/uI,KAAAsxD,EAAA,IACAA,EAAA/jB,OAAA,YACAyhG,EAAAhvI,KAAAsxD,EAAA,IACA,WAAA/jB,OAAA+jB,GACA,qBAEAA,EAAA,GAAAy9E,EAAA/uI,KAAAsxD,EAAA,IAAAA,EAAA,YACAA,EAAA,GAAA09E,EAAAhvI,KAAAsxD,EAAA,IAAAA,EAAA,YAGAy/E,EAAA9B,EAAA5pH,KAAAisC,EAAA,IACA0/E,EAAA/B,EAAA5pH,KAAAisC,EAAA,IACAg+E,EAAAzpI,MAAA,CACAkrI,IAAA,KACAC,IAAA,MAIAhoH,EAAAnjB,MAAA,CACAqpI,EAAA7pH,KAAAisC,EAAA,OACA49E,EAAA7pH,KAAAisC,EAAA,OAEA,IAGA,IAAAu/E,EAAAtyI,SACAsyI,EAAA,GAAAA,EAAA,IAGA,UAAA7nH,EAAA8nH,GAAA,GACAJ,EAAApkI,MAAAikI,EACA,WAAAvnH,EAAA8nH,GAAA,KACAJ,EAAApkI,MAAAikI,EAAA,GAGA,WAAAvnH,EAAA8nH,GAAA,GACAJ,EAAAnkI,KAAAikI,EACA,WAAAxnH,EAAA8nH,GAAA,KACAJ,EAAAnkI,KAAAikI,EAAA,GAGAF,EAAAjB,EAAAC,EAAAwB,GAAAP,EAAAC,GACAE,EAAApkI,MAAAgkI,EAAA,GACAI,EAAAnkI,KAAA+jI,EAAA,GAEAzqI,KAAAoC,MAAA,WACA,IAAAgpI,EAAAC,EACArH,EAAA5qI,EAAA4G,MACAsrI,EAAAtH,EAAApsH,aACA2zH,EAAAvH,EAAAnsH,cACA3K,EAAAw8H,EAAA1pI,KAAA,cACA4zE,EAAA81D,EAAA1pI,KAAA,aACAwrI,EAAAF,EAAAp+H,EAAAw8H,EAAA1pI,KAAA,eACA+qI,EAAA/9H,MACAy+H,EAAAF,EAAA33D,EAAA81D,EAAA1pI,KAAA,gBACA+qI,EAAA58H,OACAhK,EAAA/K,EAAAuG,OAAA,GAAAkrI,GACAa,EAAAlC,EAAAC,EAAAkC,GAAA3H,EAAApsH,aAAAosH,EAAAnsH,eAEA,UAAAsL,EAAAwoH,GAAA,GACAxnI,EAAAsC,MAAA6kI,EACA,WAAAnoH,EAAAwoH,GAAA,KACAxnI,EAAAsC,MAAA6kI,EAAA,GAGA,WAAAnoH,EAAAwoH,GAAA,GACAxnI,EAAAuC,KAAA6kI,EACA,WAAApoH,EAAAwoH,GAAA,KACAxnI,EAAAuC,KAAA6kI,EAAA,GAGApnI,EAAAsC,MAAAilI,EAAA,GACAvnI,EAAAuC,KAAAglI,EAAA,GAEAN,EAAA,CACAl+H,aACA0mE,aAGAx6E,EAAAgJ,KAAA,yBAAA3J,EAAAmzI,GACAxyI,EAAAqqI,GAAAt/H,SAAA6mI,EAAAvyI,KACAW,EAAAqqI,GAAAt/H,SAAA6mI,EAAAvyI,IAAAmzI,GAAAznI,EAAA,CACAumI,cACAC,eACAW,YACAC,aACAH,oBACAI,iBACAC,kBACApvF,OAAA,CAAAouF,EAAA,GAAAiB,EAAA,GAAAjB,EAAA,GAAAiB,EAAA,IACAC,GAAAxoH,EAAAwoH,GACAV,GAAA9nH,EAAA8nH,GACAf,SACAlG,QAGA,IAEA7gH,EAAAkoH,QAGAA,EAAA,SAAA1oC,GACA,IAAAl8F,EAAAmkI,EAAAnkI,KAAAtC,EAAAsC,KACAE,EAAAF,EAAAikI,EAAAY,EACA5kI,EAAAkkI,EAAAlkI,IAAAvC,EAAAuC,IACAE,EAAAF,EAAAikI,EAAAY,EACAM,EAAA,CACAxnG,OAAA,CACAz4B,QAAAy4B,EACA59B,KAAAmkI,EAAAnkI,KACAC,IAAAkkI,EAAAlkI,IACAsG,MAAA09H,EACAv8H,OAAAw8H,GAEA/+H,QAAA,CACAA,QAAAo4H,EACAv9H,KAAAtC,EAAAsC,KACAC,IAAAvC,EAAAuC,IACAsG,MAAAs+H,EACAn9H,OAAAo9H,GAEAO,WAAAnlI,EAAA,SAAAF,EAAA,mBACAslI,SAAAnlI,EAAA,QAAAF,EAAA,qBAEAgkI,EAAAY,GAAAx2H,EAAArO,EAAAE,GAAA+jI,IACAmB,EAAAC,WAAA,UAEAnB,EAAAY,GAAAz2H,EAAApO,EAAAE,GAAA+jI,IACAkB,EAAAE,SAAA,UAEA50G,EAAAriB,EAAArO,GAAAqO,EAAAnO,IAAAwwB,EAAAriB,EAAApO,GAAAoO,EAAAlO,IACAilI,EAAAG,UAAA,aAEAH,EAAAG,UAAA,WAEA7oH,EAAAkoH,MAAArmH,KAAAhlB,KAAA2iG,EAAAkpC,EACA,GAGA7H,EAAA3nF,OAAAjjD,EAAAuG,OAAAwE,EAAA,CAAAknI,UACA,GACA,EAEAjyI,EAAAqqI,GAAAt/H,SAAA,CACA8nI,IAAA,CACAxlI,KAAA,SAAAtC,EAAA7I,GACA,IAMA4wI,EANAhC,EAAA5uI,EAAA4uI,OACAiC,EAAAjC,EAAAP,SAAAO,EAAA9jG,WAAA8jG,EAAA7tF,OAAA51C,KACAmR,EAAAsyH,EAAAl9H,MACAo/H,EAAAjoI,EAAAsC,KAAAnL,EAAA8vI,kBAAAl+H,WACAm/H,EAAAF,EAAAC,EACAE,EAAAF,EAAA9wI,EAAAkwI,eAAA5zH,EAAAu0H,EAIA7wI,EAAAkwI,eAAA5zH,EAGAy0H,EAAA,GAAAC,GAAA,GACAJ,EAAA/nI,EAAAsC,KAAA4lI,EAAA/wI,EAAAkwI,eAAA5zH,EACAu0H,EACAhoI,EAAAsC,MAAA4lI,EAAAH,GAIA/nI,EAAAsC,KADA6lI,EAAA,GAAAD,GAAA,EACAF,EAIAE,EAAAC,EACAH,EAAAv0H,EAAAtc,EAAAkwI,eAEAW,EAKAE,EAAA,EACAloI,EAAAsC,MAAA4lI,EAGAC,EAAA,EACAnoI,EAAAsC,MAAA6lI,EAIAnoI,EAAAsC,KAAA0wB,EAAAhzB,EAAAsC,KAAA2lI,EAAAjoI,EAAAsC,KAEA,EACAC,IAAA,SAAAvC,EAAA7I,GACA,IAMAixI,EANArC,EAAA5uI,EAAA4uI,OACAiC,EAAAjC,EAAAP,SAAAO,EAAAp8H,UAAAo8H,EAAA7tF,OAAA31C,IACAmR,EAAAvc,EAAA4uI,OAAA/7H,OACAq+H,EAAAroI,EAAAuC,IAAApL,EAAA8vI,kBAAAx3D,UACA64D,EAAAN,EAAAK,EACAE,EAAAF,EAAAlxI,EAAAmwI,gBAAA5zH,EAAAs0H,EAIA7wI,EAAAmwI,gBAAA5zH,EAGA40H,EAAA,GAAAC,GAAA,GACAH,EAAApoI,EAAAuC,IAAA+lI,EAAAnxI,EAAAmwI,gBAAA5zH,EACAs0H,EACAhoI,EAAAuC,KAAA+lI,EAAAF,GAIApoI,EAAAuC,IADAgmI,EAAA,GAAAD,GAAA,EACAN,EAIAM,EAAAC,EACAP,EAAAt0H,EAAAvc,EAAAmwI,gBAEAU,EAKAM,EAAA,EACAtoI,EAAAuC,KAAA+lI,EAGAC,EAAA,EACAvoI,EAAAuC,KAAAgmI,EAIAvoI,EAAAuC,IAAAywB,EAAAhzB,EAAAuC,IAAA8lI,EAAAroI,EAAAuC,IAEA,GAEAimI,KAAA,CACAlmI,KAAA,SAAAtC,EAAA7I,GACA,IAkBA4wI,EACAU,EAnBA1C,EAAA5uI,EAAA4uI,OACAiC,EAAAjC,EAAA7tF,OAAA51C,KAAAyjI,EAAA9jG,WACAxuB,EAAAsyH,EAAAl9H,MACAm5C,EAAA+jF,EAAAP,SAAAO,EAAA9jG,WAAA8jG,EAAA7tF,OAAA51C,KACA2lI,EAAAjoI,EAAAsC,KAAAnL,EAAA8vI,kBAAAl+H,WACAm/H,EAAAD,EAAAjmF,EACAmmF,EAAAF,EAAA9wI,EAAAkwI,eAAA5zH,EAAAuuC,EACAulF,EAAA,SAAApwI,EAAAqwI,GAAA,IACArwI,EAAAgwI,UACA,UAAAhwI,EAAAqwI,GAAA,GACArwI,EAAAgwI,UACA,EACAb,EAAA,SAAAnvI,EAAA2vI,GAAA,GACA3vI,EAAAovI,YACA,UAAApvI,EAAA2vI,GAAA,IACA3vI,EAAAovI,YACA,EACAruF,GAAA,EAAA/gD,EAAA+gD,OAAA,GAIAgwF,EAAA,IACAH,EAAA/nI,EAAAsC,KAAAilI,EAAAjB,EAAApuF,EAAA/gD,EAAAkwI,eACA5zH,EAAAu0H,GACA,GAAAD,EAAAp3H,EAAAu3H,MACAloI,EAAAsC,MAAAilI,EAAAjB,EAAApuF,GAEAiwF,EAAA,KACAM,EAAAzoI,EAAAsC,KAAAnL,EAAA8vI,kBAAAl+H,WAAAw+H,EACAjB,EAAApuF,EAAA8J,GACA,GAAArxC,EAAA83H,GAAAN,KACAnoI,EAAAsC,MAAAilI,EAAAjB,EAAApuF,EAGA,EACA31C,IAAA,SAAAvC,EAAA7I,GACA,IAmBAuxI,EACAN,EApBArC,EAAA5uI,EAAA4uI,OACAiC,EAAAjC,EAAA7tF,OAAA31C,IAAAwjI,EAAAp8H,UACA+J,EAAAqyH,EAAA/7H,OACA+3C,EAAAgkF,EAAAP,SAAAO,EAAAp8H,UAAAo8H,EAAA7tF,OAAA31C,IACA8lI,EAAAroI,EAAAuC,IAAApL,EAAA8vI,kBAAAx3D,UACA64D,EAAAD,EAAAtmF,EACAwmF,EAAAF,EAAAlxI,EAAAmwI,gBAAA5zH,EAAAquC,EAEAwlF,EADA,QAAApwI,EAAAqwI,GAAA,IAEArwI,EAAAiwI,WACA,WAAAjwI,EAAAqwI,GAAA,GACArwI,EAAAiwI,WACA,EACAd,EAAA,QAAAnvI,EAAA2vI,GAAA,GACA3vI,EAAAqvI,aACA,WAAArvI,EAAA2vI,GAAA,IACA3vI,EAAAqvI,aACA,EACAtuF,GAAA,EAAA/gD,EAAA+gD,OAAA,GAGAowF,EAAA,IACAF,EAAApoI,EAAAuC,IAAAglI,EAAAjB,EAAApuF,EAAA/gD,EAAAmwI,gBACA5zH,EAAAs0H,GACA,GAAAI,EAAAz3H,EAAA23H,MACAtoI,EAAAuC,KAAAglI,EAAAjB,EAAApuF,GAEAqwF,EAAA,KACAG,EAAA1oI,EAAAuC,IAAApL,EAAA8vI,kBAAAx3D,UAAA83D,EAAAjB,EACApuF,EAAA6J,GACA,GAAApxC,EAAA+3H,GAAAH,KACAvoI,EAAAuC,KAAAglI,EAAAjB,EAAApuF,EAGA,GAEAywF,QAAA,CACArmI,KAAA,WACArN,EAAAqqI,GAAAt/H,SAAAwoI,KAAAlmI,KAAAxF,MAAAjB,KAAAkB,WACA9H,EAAAqqI,GAAAt/H,SAAA8nI,IAAAxlI,KAAAxF,MAAAjB,KAAAkB,UACA,EACAwF,IAAA,WACAtN,EAAAqqI,GAAAt/H,SAAAwoI,KAAAjmI,IAAAzF,MAAAjB,KAAAkB,WACA9H,EAAAqqI,GAAAt/H,SAAA8nI,IAAAvlI,IAAAzF,MAAAjB,KAAAkB,UACA,GAIA,CA1dA,GA4dA9H,EAAAqqI,GAAAt/H,SAkBA/K,EAAAuG,OAAAvG,EAAAorI,KAAAC,QAAA,CACAnpI,KAAAlC,EAAAorI,KAAAuI,cAAA,SAAAC,GACA,gBAAAhJ,GACA,QAAA5qI,EAAAkC,KAAA0oI,EAAAgJ,EACA,CACA,MAmBA5zI,EAAAgmB,GAAAzf,OAAA,CACAstI,kBACAC,EAAA,kBAAAh1I,SAAAoqB,cAAA,OACA,cACA,YAEA,WACA,OAAAtiB,KAAAtE,GAAAwxI,EAAA,iCAAAxsI,GACAA,EAAA6jC,gBACA,GACA,GAGA4oG,gBAAA,WACA,OAAAntI,KAAAwK,IAAA,uBACA;;;;;;;;GAzDA,IA4CA0iI,EAmKAE,EA7IAhkH,EAAAhwB,EAkBAi0I,EAAA,GACA58H,EAAA48H,EAAA58H,SAGA68H,EAAA,0BAGAC,EAAA,EACAC,GAAA,sFACA35H,MAAA,SAAA45H,GACA,OACAA,EAAA,GACAA,EAAA,GACAA,EAAA,GACAA,EAAA,GAEA,GACA,CACAD,GAAA,8GACA35H,MAAA,SAAA45H,GACA,OACA,KAAAA,EAAA,GACA,KAAAA,EAAA,GACA,KAAAA,EAAA,GACAA,EAAA,GAEA,GACA,CAGAD,GAAA,yDACA35H,MAAA,SAAA45H,GACA,OACAv0H,SAAAu0H,EAAA,OACAv0H,SAAAu0H,EAAA,OACAv0H,SAAAu0H,EAAA,OACAA,EAAA,IACAv0H,SAAAu0H,EAAA,YAAAn4H,QAAA,GACA,EAEA,GACA,CAGAk4H,GAAA,6CACA35H,MAAA,SAAA45H,GACA,OACAv0H,SAAAu0H,EAAA,GAAAA,EAAA,OACAv0H,SAAAu0H,EAAA,GAAAA,EAAA,OACAv0H,SAAAu0H,EAAA,GAAAA,EAAA,OACAA,EAAA,IACAv0H,SAAAu0H,EAAA,GAAAA,EAAA,YACAn4H,QAAA,GACA,EAEA,GACA,CACAk4H,GAAA,4GACAE,MAAA,OACA75H,MAAA,SAAA45H,GACA,OACAA,EAAA,GACAA,EAAA,OACAA,EAAA,OACAA,EAAA,GAEA,IAIAvxG,EAAA9S,EAAAukH,MAAA,SAAAzxG,EAAAmoC,EAAAD,EAAAD,GACA,WAAA/6C,EAAAukH,MAAAvuH,GAAAvL,MAAAqoB,EAAAmoC,EAAAD,EAAAD,EACA,EACAypE,EAAA,CACArsF,KAAA,CACAohD,MAAA,CACAr+B,IAAA,CACAuoD,IAAA,EACAnnH,KAAA,QAEA2+D,MAAA,CACAwoD,IAAA,EACAnnH,KAAA,QAEA0+D,KAAA,CACAyoD,IAAA,EACAnnH,KAAA,UAKAs/D,KAAA,CACA29B,MAAA,CACA/9B,IAAA,CACAioD,IAAA,EACAnnH,KAAA,WAEAo/D,WAAA,CACA+nD,IAAA,EACAnnH,KAAA,WAEAq/D,UAAA,CACA8nD,IAAA,EACAnnH,KAAA,cAKAmoI,EAAA,CACAC,KAAA,CACAz4H,OAAA,EACA8hB,IAAA,KAEA42G,QAAA,CACA52G,IAAA,GAEA62G,QAAA,CACAC,IAAA,IACA54H,OAAA,IAQAjT,EAAAgnB,EAAAhnB,KAmBA,SAAA8rI,EAAA9tI,GACA,aAAAA,EACAA,EAAA,GAGA,iBAAAA,EACAitI,EAAA58H,EAAAuU,KAAA5kB,KAAA,gBACAA,CACA,CAEA,SAAA+tI,EAAA3hI,EAAAkK,EAAA03H,GACA,IAAA1oI,EAAAmoI,EAAAn3H,EAAAhR,OAAA,GAEA,aAAA8G,EACA4hI,IAAA13H,EAAA23H,IAAA,KAAA33H,EAAA23H,KAIA7hI,EAAA9G,EAAA2P,QAAA7I,EAAAiT,WAAAjT,GAEA9G,EAAAuoI,KAIAzhI,EAAA9G,EAAAuoI,KAAAvoI,EAAAuoI,IAIAl5H,KAAAsd,IAAA3sB,EAAAyxB,IAAApiB,KAAAoiB,IAAA,EAAA3qB,IACA,CAEA,SAAA8hI,EAAAh9H,GACA,IAAA6kH,EAAAj6F,IACAqlB,EAAA40E,EAAAoY,MAAA,GAwBA,OAtBAj9H,IAAAhX,cAEA8H,EAAAmrI,GAAA,SAAAv4E,EAAArxC,GACA,IAAA+mF,EACAh4F,EAAAiR,EAAA6pH,GAAAhuH,KAAAlO,GACAT,EAAA6B,GAAAiR,EAAA9P,MAAAnB,GACA87H,EAAA7qH,EAAA+pH,OAAA,OAEA,GAAA78H,EASA,OARA65F,EAAAyrB,EAAAqY,GAAA39H,GAIAslH,EAAAyX,EAAAY,GAAA3tH,OAAA6pF,EAAAkjC,EAAAY,GAAA3tH,OACA0gC,EAAA40E,EAAAoY,MAAA7jC,EAAA6jC,OAGA,CAEA,IAGAhtF,EAAA7oD,QAIA,YAAA6oD,EAAAvuC,QACAoW,EAAAzpB,OAAA4hD,EAAA6rF,EAAAqB,aAEAtY,GAIAiX,EAAA97H,EACA,CA+NA,SAAAmzD,EAAA5S,EAAAwjE,EAAAphE,GAEA,UADAA,KAAA,MACA,EACApC,GAAAwjE,EAAAxjE,GAAAoC,EAAA,EAEA,EAAAA,EAAA,EACAohE,EAEA,EAAAphE,EAAA,EACApC,GAAAwjE,EAAAxjE,IAAA,IAAAoC,GAAA,EAEApC,CACA,CA/TAzvD,EAAAwrI,GAAA,SAAAY,EAAAd,GACAA,EAAA7sH,MAAA,IAAA2tH,EACAd,EAAA/qC,MAAAx+B,MAAA,CACA0oD,IAAA,EACAnnH,KAAA,UACA2oI,IAAA,EAEA,IAGAjlH,EAAAhnB,KAAA,uEAAA5J,MAAA,MACA,SAAAw8D,EAAA18D,GACA+0I,EAAA,WAAA/0I,EAAA,KAAAA,EAAAgC,aACA,IAyEA4hC,EAAA9c,GAAAgK,EAAAzpB,OAAAu8B,EAAAn8B,UAAA,CACA8T,MAAA,SAAAywD,EAAAD,EAAAD,EAAAD,GACA,QAAA/9D,IAAAk+D,EAEA,OADAtkE,KAAAuuI,MAAA,sBACAvuI,MAEAskE,EAAAlvC,QAAAkvC,EAAA9yB,YACA8yB,EAAAl7C,EAAAk7C,GAAA1+D,IAAAy+D,GACAA,OAAAj+D,GAGA,IAAA+vH,EAAAn2H,KACA0F,EAAAwoI,EAAA5pE,GACA/iB,EAAAvhD,KAAAuuI,MAAA,GAQA,YALAnoI,IAAAi+D,IACAC,EAAA,CAAAA,EAAAD,EAAAD,EAAAD,GACAz+D,EAAA,SAGA,WAAAA,EACA1F,KAAA6T,MAAAy6H,EAAAhqE,IAAA8oE,EAAAsB,UAGA,UAAAhpI,GACAtD,EAAAwrI,EAAArsF,KAAAohD,OAAA,SAAA+d,EAAAhqG,GACA6qC,EAAA7qC,EAAAm2G,KAAAshB,EAAA7pE,EAAA5tD,EAAAm2G,KAAAn2G,EACA,IACA1W,MAGA,WAAA0F,GAEAtD,EAAAwrI,EADAtpE,aAAApoC,EACA,SAAAyyG,EAAAjB,GACAppE,EAAAopE,EAAA7sH,SACAs1G,EAAAuX,EAAA7sH,OAAAyjD,EAAAopE,EAAA7sH,OAAAniB,QAEA,EAEA,SAAAiwI,EAAAjB,GACA,IAAA7sH,EAAA6sH,EAAA7sH,MACAze,EAAAsrI,EAAA/qC,OAAA,SAAA/xF,EAAA8F,GAGA,IAAAy/G,EAAAt1G,IAAA6sH,EAAA/5E,GAAA,CAIA,aAAA/iD,GAAA,MAAA0zD,EAAA1zD,GACA,OAEAulH,EAAAt1G,GAAA6sH,EAAA/5E,GAAAwiE,EAAAoY,MACA,CAIApY,EAAAt1G,GAAAnK,EAAAm2G,KAAAshB,EAAA7pE,EAAA1zD,GAAA8F,GAAA,EACA,IAGAy/G,EAAAt1G,IAAAuI,EAAAtB,QACA,KACAquG,EAAAt1G,GAAAniB,MAAA,MACA,IAGA,MAAAy3H,EAAAt1G,GAAA,KACAs1G,EAAAt1G,GAAA,MAGA6sH,EAAA95E,OACAuiE,EAAAoY,MAAAb,EAAA95E,KAAAuiE,EAAAt1G,KAGA,GAEA7gB,WA7CA,CA+CA,EACAskC,GAAA,SAAAk2E,GACA,IAAAl2E,EAAApI,EAAAs+E,GACAo0B,GAAA,EACAzY,EAAAn2H,KAgBA,OAdAoC,EAAAwrI,GAAA,SAAAz0I,EAAAu0I,GACA,IAAAmB,EACAC,EAAAxqG,EAAAopG,EAAA7sH,OAUA,OATAiuH,IACAD,EAAA1Y,EAAAuX,EAAA7sH,QAAA6sH,EAAA/5E,IAAA+5E,EAAA/5E,GAAAwiE,EAAAoY,QAAA,GACAnsI,EAAAsrI,EAAA/qC,OAAA,SAAAxpG,EAAAud,GACA,SAAAo4H,EAAAp4H,EAAAm2G,KAEA,OADA+hB,EAAAE,EAAAp4H,EAAAm2G,OAAAgiB,EAAAn4H,EAAAm2G,IAGA,KAEA+hB,CACA,IACAA,CACA,EACAG,OAAA,WACA,IAAAC,EAAA,GACA7Y,EAAAn2H,KAMA,OALAoC,EAAAwrI,GAAA,SAAAY,EAAAd,GACAvX,EAAAuX,EAAA7sH,QACAmuH,EAAAnuI,KAAA2tI,EAEA,IACAQ,EAAAz6H,KACA,EACA06H,WAAA,SAAA36B,EAAA5uD,GACA,IAAA8C,EAAAtsB,EAAAo4E,GACAk6B,EAAAhmF,EAAAumF,SACArB,EAAAE,EAAAY,GACAU,EAAA,IAAAlvI,KAAAmkE,QAAAjoC,EAAA,eAAAl8B,KACAkhB,EAAAguH,EAAAxB,EAAA7sH,QAAA6sH,EAAA/5E,GAAAu7E,EAAAX,OACA7nH,EAAAxF,EAAAxiB,QA4BA,OA1BA8pD,IAAAklF,EAAA7sH,OACAze,EAAAsrI,EAAA/qC,OAAA,SAAA+d,EAAAhqG,GACA,IAAAlV,EAAAkV,EAAAm2G,IACAsiB,EAAAjuH,EAAA1f,GACA4tI,EAAA5mF,EAAAhnD,GACAkE,EAAAmoI,EAAAn3H,EAAAhR,OAAA,GAGA,OAAA0pI,IAKA,OAAAD,EACAzoH,EAAAllB,GAAA4tI,GAEA1pI,EAAAuoI,MACAmB,EAAAD,EAAAzpI,EAAAuoI,IAAA,EACAkB,GAAAzpI,EAAAuoI,IACAkB,EAAAC,EAAA1pI,EAAAuoI,IAAA,IACAkB,GAAAzpI,EAAAuoI,MAGAvnH,EAAAllB,GAAA2sI,GAAAiB,EAAAD,GAAAzpF,EAAAypF,EAAAz4H,IAEA,IACA1W,KAAAwuI,GAAA9nH,EACA,EACA2oH,MAAA,SAAAC,GAGA,OAAAtvI,KAAAuuI,MAAA,GACA,OAAAvuI,KAGA,IAAAwhD,EAAAxhD,KAAAuuI,MAAA7vI,QACAg0B,EAAA8uB,EAAAjtC,MACA86H,EAAAnzG,EAAAozG,GAAAf,MAEA,OAAAryG,EAAA9S,EAAAliB,IAAAs6C,GAAA,SAAA6D,EAAA5sD,GACA,SAAAi6B,GAAA28G,EAAA52I,GAAAi6B,EAAA2yB,CACA,IACA,EACAkqF,aAAA,WACA,IAAAjwG,EAAA,QACAiiB,EAAAn4B,EAAAliB,IAAAlH,KAAAuuI,OAAA,SAAAlpF,EAAA5sD,GACA,aAAA4sD,EACAA,EAEA5sD,EAAA,KACA,IAOA,OALA,IAAA8oD,EAAA,KACAA,EAAAhtC,MACA+qB,EAAA,QAGAA,EAAAiiB,EAAAvuC,KAAA,SACA,EACAw8H,aAAA,WACA,IAAAlwG,EAAA,QACA0lC,EAAA57C,EAAAliB,IAAAlH,KAAAglE,QAAA,SAAA3f,EAAA5sD,GASA,OARA,MAAA4sD,IACAA,EAAA5sD,EAAA,OAIAA,KAAA,IACA4sD,EAAAtwC,KAAA81C,MAAA,IAAAxF,GAAA,KAEAA,CACA,IAMA,OAJA,IAAA2f,EAAA,KACAA,EAAAzwD,MACA+qB,EAAA,QAEAA,EAAA0lC,EAAAhyD,KAAA,SACA,EACAy8H,YAAA,SAAAC,GACA,IAAAnuF,EAAAvhD,KAAAuuI,MAAA7vI,QACAylE,EAAA5iB,EAAAhtC,MAMA,OAJAm7H,GACAnuF,EAAA1gD,QAAA,IAAAsjE,IAGA,IAAA/6C,EAAAliB,IAAAq6C,GAAA,SAAA8D,GAGA,YAAAA,GAAA,GAAA50C,SAAA,KAAA0F,QAAA,EACA,IAAAnD,KAAA,GACA,EACAvC,SAAA,WACA,OAAAzQ,KAAAuvI,cACA,IAEArzG,EAAA9c,GAAAvL,MAAA9T,UAAAm8B,EAAA9c,GAmBAwuH,EAAA5oE,KAAArR,GAAA,SAAApS,GACA,SAAAA,EAAA,UAAAA,EAAA,UAAAA,EAAA,GACA,sBAAAA,EAAA,IAEA,IASA0S,EAAAr0C,EATA8pB,EAAA6X,EAAA,OACA/oC,EAAA+oC,EAAA,OACAmQ,EAAAnQ,EAAA,OACA7uB,EAAA6uB,EAAA,GACApqB,EAAApiB,KAAAoiB,IAAAuS,EAAAlxB,EAAAk5C,GACAr/B,EAAAtd,KAAAsd,IAAAqX,EAAAlxB,EAAAk5C,GACAw6D,EAAA/0F,EAAA9E,EACA+yB,EAAAjuB,EAAA9E,EACA0hC,EAAA,GAAA3O,EAsBA,OAlBA6O,EADA5hC,IAAA8E,EACA,EACAuS,IAAAvS,EACA,IAAA3e,EAAAk5C,GAAAw6D,EAAA,IACA1zG,IAAA2e,EACA,IAAAu6B,EAAAhoB,GAAAwiF,EAAA,IAEA,IAAAxiF,EAAAlxB,GAAA0zG,EAAA,IAMAtsG,EADA,IAAAssG,EACA,EACAn4D,GAAA,GACAm4D,EAAA9mE,EAEA8mE,GAAA,EAAA9mE,GAEA,CAAArwC,KAAA81C,MAAAoJ,GAAA,IAAAr0C,EAAAm0C,EAAA,MAAArhC,EAAA,EAAAA,EACA,EAEAk7G,EAAA5oE,KAAApR,KAAA,SAAAoR,GACA,SAAAA,EAAA,UAAAA,EAAA,UAAAA,EAAA,GACA,sBAAAA,EAAA,IAEA,IAAA/Q,EAAA+Q,EAAA,OACAplD,EAAAolD,EAAA,GACAjR,EAAAiR,EAAA,GACAtyC,EAAAsyC,EAAA,GACAqwD,EAAAthE,GAAA,GAAAA,GAAA,EAAAn0C,GAAAm0C,EAAAn0C,EAAAm0C,EAAAn0C,EACAiyC,EAAA,EAAAkC,EAAAshE,EAEA,OACAtgH,KAAA81C,MAAA,IAAA4Z,EAAA5S,EAAAwjE,EAAAphE,EAAA,MACAl/C,KAAA81C,MAAA,IAAA4Z,EAAA5S,EAAAwjE,EAAAphE,IACAl/C,KAAA81C,MAAA,IAAA4Z,EAAA5S,EAAAwjE,EAAAphE,EAAA,MACAvhC,EAEA,EAGAtwB,EAAAwrI,GAAA,SAAAY,EAAAd,GACA,IAAA/qC,EAAA+qC,EAAA/qC,MACA9hF,EAAA6sH,EAAA7sH,MACA8yC,EAAA+5E,EAAA/5E,GACAC,EAAA85E,EAAA95E,KAGA13B,EAAA9c,GAAAovH,GAAA,SAAAhiI,GAMA,GAHAmnD,IAAA3zD,KAAA6gB,KACA7gB,KAAA6gB,GAAA8yC,EAAA3zD,KAAAuuI,aAEAnoI,IAAAoG,EACA,OAAAxM,KAAA6gB,GAAAniB,QAGA,IAAAmjH,EACAn8G,EAAAwoI,EAAA1hI,GACA+nB,EAAA,UAAA7uB,GAAA,WAAAA,EAAA8G,EAAAtL,UACAuhH,EAAAziH,KAAA6gB,GAAAniB,QAUA,OARA0D,EAAAugG,GAAA,SAAA/xF,EAAA8F,GACA,IAAAoiC,EAAAvkB,EAAA,WAAA7uB,EAAAkL,EAAA8F,EAAAm2G,KACA,MAAA/zE,IACAA,EAAA2pE,EAAA/rG,EAAAm2G,MAEApK,EAAA/rG,EAAAm2G,KAAAshB,EAAAr1F,EAAApiC,EACA,IAEAk9C,IACAiuD,EAAA3lF,EAAA03B,EAAA6uD,KACA5hG,GAAA4hG,EACAZ,GAEA3lF,EAAAumF,EAEA,EAGArgH,EAAAugG,GAAA,SAAA/xF,EAAA8F,GAGAwlB,EAAA9c,GAAAxO,KAGAsrB,EAAA9c,GAAAxO,GAAA,SAAApE,GACA,IAAAi2G,EAAAktB,EAAAj9H,EAAA0M,EACAwwH,EAAA1B,EAAA1hI,GAUA,OAFAmjI,GADAltB,EAAAziH,KAJAof,EADA,UAAAxO,EACA5Q,KAAA6vI,MAAA,cAEArB,MAGA93H,EAAAm2G,KAEA,cAAA+iB,EACAD,GAGA,aAAAC,IAEAA,EAAA1B,EADA1hI,IAAAwY,KAAAhlB,KAAA2vI,KAGA,MAAAnjI,GAAAkK,EAAA+jC,MACAz6C,MAEA,WAAA4vI,IACAl9H,EAAA46H,EAAA9tH,KAAAhT,MAEAA,EAAAmjI,EAAAlwH,WAAA/M,EAAA,WAAAA,EAAA,UAGA+vG,EAAA/rG,EAAAm2G,KAAArgH,EACAxM,KAAAof,GAAAqjG,IACA,EACA,GACA,IAIAvmF,EAAA4zG,KAAA,SAAAA,GACA,IAAAC,EAAAD,EAAAt3I,MAAA,KACA4J,EAAA2tI,GAAA,SAAA/6E,EAAA86E,GACA1mH,EAAA4mH,SAAAF,GAAA,CACAp4I,IAAA,SAAAssI,EAAAx3H,GACA,IAAAk+F,EAEA,gBAAAl+F,GACA,WAAA0hI,EAAA1hI,MACAk+F,EAAA4jC,EAAA9hI,MAEAA,GADAA,EAAA0vB,EAAAwuE,GAAAl+F,IACA+iI,gBAEAvL,EAAA/nG,MAAA6zG,GAAAtjI,CACA,GAEA4c,EAAA6mH,GAAAt9E,KAAAm9E,GAAA,SAAAG,GACAA,EAAAC,YACAD,EAAA/uH,MAAAgb,EAAA+zG,EAAAjM,KAAA8L,GACAG,EAAAznF,IAAAtsB,EAAA+zG,EAAAznF,KACAynF,EAAAC,WAAA,GAEA9mH,EAAA4mH,SAAAF,GAAAp4I,IAAAu4I,EAAAjM,KAAAiM,EAAA/uH,MAAA+tH,WAAAgB,EAAAznF,IAAAynF,EAAAxkF,KACA,CACA,GAEA,EAEAvvB,EAAA4zG,KA9mBA,8JAgnBA1mH,EAAA4mH,SAAAnvG,YAAA,CACAsvG,OAAA,SAAA3jI,GACA,IAAA4jI,EAAA,GAKA,OAHAhuI,EAAA,0CAAA4yD,EAAA64C,GACAuiC,EAAA,SAAAviC,EAAA,SAAArhG,CACA,IACA4jI,CACA,GAMAhD,EAAAhkH,EAAAukH,MAAA0C,MAAA,CAGAC,KAAA,UACAC,MAAA,UACAnsE,KAAA,UACAosE,QAAA,UACAC,KAAA,UACApsE,MAAA,UACAqsE,KAAA,UACAC,OAAA,UACAC,KAAA,UACAC,MAAA,UACAC,OAAA,UACAxsE,IAAA,UACAysE,OAAA,UACAC,KAAA,UACAC,MAAA,UACAC,OAAA,UAGAzC,YAAA,mBAEAC,SAAA;;;;;;;;;AAsBA,IAi2BAyC,EAj2BAC,EAAA,cACAC,EAAA,mBACAC,EAAA,sBAEAl4I,EAAA65F,QAAA,CACAX,OAAA,IAMA,WAEA,IAAAi/C,EAAA,0BACAC,EAAA,CACAx1G,OAAA,EACAy1G,aAAA,EACA5wG,YAAA,EACA6wG,WAAA,EACAC,YAAA,EACAC,UAAA,EACAC,YAAA,EACA5kI,OAAA,EACA6vB,QAAA,GAqBA,SAAAg1G,EAAA9N,GACA,IAAApzH,EAAA+nD,EAPArnD,EAQA2qB,EAAA+nG,EAAAtmD,cAAA2I,YAAAlO,iBAAA6rD,GACA3kG,EAAA,GAGA,IADAs5B,EAAA18B,EAAAvjC,OACAigE,KAEA,iBAAA18B,EADArrB,EAAAqrB,EAAA08B,MAEAt5B,GAfA/tB,EAeAV,EAdAU,EAAAuO,QAAA,yBAAAtY,EAAA8wF,GACA,OAAAA,EAAAt0B,aACA,MAYA9nC,EAAArrB,IAIA,OAAAyuB,CACA,CAhCAjmC,EAAAgJ,KACA,6EACA,SAAAjJ,EAAAud,GACAtd,EAAA62I,GAAAt9E,KAAAj8C,GAAA,SAAAu5H,IACA,SAAAA,EAAAznF,MAAAynF,EAAA8B,SAAA,IAAA9B,EAAAxkF,MAAAwkF,EAAA8B,WACA3oH,EAAA6S,MAAAg0G,EAAAjM,KAAAttH,EAAAu5H,EAAAznF,KACAynF,EAAA8B,SAAA,EAEA,CACA,IA2CA34I,EAAA65F,QAAA++C,aAAA,SAAAxlI,EAAA+6C,EAAAyhF,EAAA5lH,GACA,IAAAogF,EAAApqG,EAAA64I,MAAA1qF,EAAAyhF,EAAA5lH,GAEA,OAAApjB,KAAAwnD,OAAA,WACA,IAEA0qF,EAFAC,EAAA/4I,EAAA4G,MACAoyI,EAAAD,EAAAlqG,KAAA,aAEAoqG,EAAA7uC,EAAA9gE,SAAAyvG,EAAA7wI,KAAA,KAAAqhC,UAAAwvG,EAGAE,IAAAnrI,KAAA,WAEA,OACAorI,GAFAl5I,EAAA4G,MAGAkhB,MAAA4wH,EAAA9xI,MAEA,KAGAkyI,EAAA,WACA94I,EAAAgJ,KAAAmvI,GAAA,SAAA94I,EAAA+3C,GACAhkC,EAAAgkC,IACA2hG,EAAA3hG,EAAA,SAAAhkC,EAAAgkC,GAEA,GACA,KAIA6hG,IAAAnrI,KAAA,WAGA,OAFAlH,KAAAwoD,IAAAspF,EAAA9xI,KAAAsyI,GAAA,IACAtyI,KAAAksH,KAjDA,SAAAqmB,EAAAC,GACA,IACAl6I,EAAAkU,EADA0/G,EAAA,GAGA,IAAA5zH,KAAAk6I,EACAhmI,EAAAgmI,EAAAl6I,GACAi6I,EAAAj6I,KAAAkU,IACAglI,EAAAl5I,KACAc,EAAA62I,GAAAt9E,KAAAr6D,IAAA2xG,MAAAxqF,WAAAjT,MACA0/G,EAAA5zH,GAAAkU,IAMA,OAAA0/G,CACA,CAiCAumB,CAAAzyI,KAAAkhB,MAAAlhB,KAAAwoD,KACAxoD,IACA,IAGAmyI,EAAAlqG,KAAA,QAAAmqG,GAGAC,IAAAnrI,KAAA,WACA,IAAAwrI,EAAA1yI,KACA2yI,EAAAv5I,EAAAsqB,WACA47E,EAAAlmG,EAAAuG,OAAA,GAAA6jG,EAAA,CACAh8C,OAAA,EACA3F,SAAA,WACA8wF,EAAAruH,QAAAouH,EACA,IAIA,OADA1yI,KAAAsyI,GAAAhrF,QAAAtnD,KAAAksH,KAAA5sB,GACAqzC,EAAAtuH,SACA,IAGAjrB,EAAAoJ,KAAAvB,MAAA7H,EAAAi5I,EAAAh6I,OAAAk0C,MAAA,WAGA2lG,IAIA94I,EAAAgJ,KAAAlB,WAAA,WACA,IAAAoxI,EAAAtyI,KAAAsyI,GACAl5I,EAAAgJ,KAAApC,KAAAksH,MAAA,SAAAt7G,GACA0hI,EAAA1sI,IAAAgL,EAAA,GACA,GACA,IAIA4yF,EAAA3hD,SAAA78B,KAAAmtH,EAAA,GACA,GACA,GACA,EAEA/4I,EAAAgmB,GAAAzf,OAAA,CACAgG,SAAA,SAAA+9H,GACA,gBAAAkP,EAAAX,EAAAjJ,EAAA5lH,GACA,OAAA6uH,EACA74I,EAAA65F,QAAA++C,aAAAhtH,KAAAhlB,KACA,CAAAolD,IAAAwtF,GAAAX,EAAAjJ,EAAA5lH,GACAsgH,EAAAziI,MAAAjB,KAAAkB,UACA,CACA,CAPA,CAOA9H,EAAAgmB,GAAAzZ,UAEAiD,YAAA,SAAA86H,GACA,gBAAAkP,EAAAX,EAAAjJ,EAAA5lH,GACA,OAAAliB,UAAAxI,OAAA,EACAU,EAAA65F,QAAA++C,aAAAhtH,KAAAhlB,KACA,CAAAjH,OAAA65I,GAAAX,EAAAjJ,EAAA5lH,GACAsgH,EAAAziI,MAAAjB,KAAAkB,UACA,CACA,CAPA,CAOA9H,EAAAgmB,GAAAxW,aAEAo/H,YAAA,SAAAtE,GACA,gBAAAkP,EAAAlvB,EAAAuuB,EAAAjJ,EAAA5lH,GACA,wBAAAsgG,QAAAt9G,IAAAs9G,EACAuuB,EAKA74I,EAAA65F,QAAA++C,aAAAhtH,KAAAhlB,KACA0jH,EAAA,CAAAt+D,IAAAwtF,GAAA,CAAA75I,OAAA65I,GACAX,EAAAjJ,EAAA5lH,GAJAsgH,EAAAziI,MAAAjB,KAAAkB,WASA9H,EAAA65F,QAAA++C,aAAAhtH,KAAAhlB,KACA,CAAA6J,OAAA+oI,GAAAlvB,EAAAuuB,EAAAjJ,EAEA,CACA,CAnBA,CAmBA5vI,EAAAgmB,GAAA4oH,aAEA6K,YAAA,SAAA95I,EAAAqsD,EAAA6sF,EAAAjJ,EAAA5lH,GACA,OAAAhqB,EAAA65F,QAAA++C,aAAAhtH,KAAAhlB,KAAA,CACAolD,MACArsD,UACAk5I,EAAAjJ,EAAA5lH,EACA,GAGA,CA9LA,GAoMA,WAkVA,SAAA0vH,EAAAxgD,EAAAnvE,EAAA8uH,EAAA7uH,GAiDA,OA9CAhqB,EAAAmsI,cAAAjzC,KACAnvE,EAAAmvE,EACAA,YAIAA,EAAA,CAAAA,UAGA,MAAAnvE,IACAA,EAAA,IAIA,mBAAAA,IACAC,EAAAD,EACA8uH,EAAA,KACA9uH,EAAA,KAIA,iBAAAA,GAAA/pB,EAAA62I,GAAA8C,OAAA5vH,MACAC,EAAA6uH,EACAA,EAAA9uH,EACAA,EAAA,IAIA,mBAAA8uH,IACA7uH,EAAA6uH,EACAA,EAAA,MAIA9uH,GACA/pB,EAAAuG,OAAA2yF,EAAAnvE,GAGA8uH,KAAA9uH,EAAAokC,SACA+qC,EAAA/qC,SAAAnuD,EAAA62I,GAAAzlI,IAAA,EACA,iBAAAynI,IACAA,KAAA74I,EAAA62I,GAAA8C,OAAA35I,EAAA62I,GAAA8C,OAAAd,GACA74I,EAAA62I,GAAA8C,OAAArE,SAEAp8C,EAAAzwC,SAAAz+B,GAAAD,EAAA0+B,SAEAywC,CACA,CAEA,SAAA0gD,EAAA//F,GAGA,QAAAA,GAAA,iBAAAA,IAAA75C,EAAA62I,GAAA8C,OAAA9/F,MAKA,iBAAAA,IAAA75C,EAAA65F,QAAAX,OAAAr/C,KAKA,mBAAAA,GAKA,iBAAAA,MAAAq/C,QAMA,CA2MA,SAAA2gD,EAAAriG,EAAAhlC,GACA,IAAAgM,EAAAhM,EAAAgM,aACAC,EAAAjM,EAAAiM,cAEAhH,EADA,wIACA2O,KAAAoxB,IAAA,MAAAh5B,EAAAC,EAAA,GAEA,OACAnR,IAAA+Y,WAAA5O,EAAA,OACAlK,MAAA,SAAAkK,EAAA,GAAA+G,EAAA6H,WAAA5O,EAAA,IACAjK,OAAA,SAAAiK,EAAA,GAAAgH,EAAA4H,WAAA5O,EAAA,IACApK,KAAAgZ,WAAA5O,EAAA,OAEA,CAnnBAzX,EAAAorI,MAAAprI,EAAAorI,KAAAC,SAAArrI,EAAAorI,KAAAC,QAAA0N,WACA/4I,EAAAorI,KAAAC,QAAA0N,SAAA,SAAAzO,GACA,gBAAAM,GACA,QAAA5qI,EAAA4qI,GAAA1oI,KAAAg2I,IAAA5N,EAAAM,EACA,CACA,CAJA,CAIA5qI,EAAAorI,KAAAC,QAAA0N,YAGA,IAAA/4I,EAAA85I,cACA95I,EAAAuG,OAAAvG,EAAA65F,QAAA,CAGAsE,KAAA,SAAA3rF,EAAAlU,GAEA,IADA,IAAAe,EAAA,EAAAC,EAAAhB,EAAAgB,OACAD,EAAAC,EAAAD,IACA,OAAAf,EAAAe,IACAmT,EAAAtQ,KAAA81I,EAAA15I,EAAAe,GAAAmT,EAAA,GAAAqwB,MAAAvkC,EAAAe,IAGA,EAGAm/F,QAAA,SAAAhsF,EAAAlU,GAEA,IADA,IAAAohD,EAAArgD,EAAA,EAAAC,EAAAhB,EAAAgB,OACAD,EAAAC,EAAAD,IACA,OAAAf,EAAAe,KACAqgD,EAAAltC,EAAAtQ,KAAA81I,EAAA15I,EAAAe,IACAmT,EAAAhG,IAAAlO,EAAAe,GAAAqgD,GAGA,EAEAq6F,QAAA,SAAAb,EAAArmC,GAIA,MAHA,WAAAA,IACAA,EAAAqmC,EAAAhuG,GAAA,0BAEA2nE,CACA,EAGAmnC,cAAA,SAAAxnI,GAGA,GAAAA,EAAA/F,SAAAy+B,GAAA,uBACA,OAAA14B,EAAA/F,SAIA,IAAA88F,EAAA,CACA31F,MAAApB,EAAAgM,YAAA,GACAzJ,OAAAvC,EAAAiM,aAAA,GACAw4B,MAAAzkC,EAAAhG,IAAA,UAEA+3E,EAAAvkF,EAAA,eACAuM,SAAA,sBACAC,IAAA,CACAs7B,SAAA,OACArE,WAAA,cACAb,OAAA,OACA/uB,OAAA,EACA6vB,QAAA,IAIAx4B,EAAA,CACA0I,MAAApB,EAAAoB,QACAmB,OAAAvC,EAAAuC,UAEAklI,EAAAn7I,SAAA+yD,cAKA,IAEAooF,EAAAz4I,EACA,OAAA0d,GACA+6H,EAAAn7I,SAAAi4B,IACA,CAsCA,OApCAvkB,EAAA0nI,KAAA31D,IAGA/xE,EAAA,KAAAynI,GAAAj6I,EAAA2I,SAAA6J,EAAA,GAAAynI,KACAj6I,EAAAi6I,GAAAnoI,QAAA,SAKAyyE,EAAA/xE,EAAA/F,SAGA,WAAA+F,EAAAhG,IAAA,aACA+3E,EAAA/3E,IAAA,CAAAzB,SAAA,aACAyH,EAAAhG,IAAA,CAAAzB,SAAA,eAEA/K,EAAAuG,OAAAgjG,EAAA,CACAx+F,SAAAyH,EAAAhG,IAAA,YACArB,OAAAqH,EAAAhG,IAAA,aAEAxM,EAAAgJ,KAAA,0CAAA3J,EAAAgzD,GACAk3C,EAAAl3C,GAAA7/C,EAAAhG,IAAA6lD,GACAw+C,MAAA/wF,SAAAypF,EAAAl3C,GAAA,OACAk3C,EAAAl3C,GAAA,OAEA,IACA7/C,EAAAhG,IAAA,CACAzB,SAAA,WACAuC,IAAA,EACAD,KAAA,EACAE,MAAA,OACAC,OAAA,UAGAgF,EAAAhG,IAAAtB,GAEAq5E,EAAA/3E,IAAA+8F,GAAA75F,MACA,EAEAyqI,cAAA,SAAA3nI,GACA,IAAAynI,EAAAn7I,SAAA+yD,cAWA,OATAr/C,EAAA/F,SAAAy+B,GAAA,yBACA14B,EAAA/F,SAAA2tI,YAAA5nI,IAGAA,EAAA,KAAAynI,GAAAj6I,EAAA2I,SAAA6J,EAAA,GAAAynI,KACAj6I,EAAAi6I,GAAAnoI,QAAA,UAIAU,CACA,IAIAxS,EAAAuG,OAAAvG,EAAA65F,QAAA,CACAr2E,QAAA,SAEAnlB,OAAA,SAAAa,EAAA2zG,EAAA3Z,GASA,OARAA,IACAA,EAAA2Z,EACAA,EAAA,UAGA7yG,EAAA65F,QAAAX,OAAAh6F,GAAAg6F,EACAl5F,EAAA65F,QAAAX,OAAAh6F,GAAA2zG,OAEA3Z,CACA,EAEAmhD,iBAAA,SAAA7nI,EAAAmiI,EAAA/6D,GACA,OAAA+6D,EACA,OACA5/H,OAAA,EACAnB,MAAA,EACA6K,YAAA,EACAD,WAAA,GAIA,IAAAxT,EAAA,eAAA4uE,GAAA+6D,GAAA,WACA1pI,EAAA,aAAA2uE,GAAA+6D,GAAA,WAEA,OACA5/H,OAAAvC,EAAAuC,SAAA9J,EACA2I,MAAApB,EAAAoB,QAAA5I,EACAyT,YAAAjM,EAAAiM,cAAAxT,EACAuT,WAAAhM,EAAAgM,aAAAxT,EAGA,EAEAsvI,UAAA,SAAA3qI,GACA,OACAiE,MAAAjE,EAAA4uF,KAAAhxF,MAAAoC,EAAA4uF,KAAAlxF,KACA0H,OAAApF,EAAA4uF,KAAA/wF,OAAAmC,EAAA4uF,KAAAjxF,IACAD,KAAAsC,EAAA4uF,KAAAlxF,KACAC,IAAAqC,EAAA4uF,KAAAjxF,IAEA,EAGAm1C,QAAA,SAAAjwC,EAAA+nI,EAAAxlH,GACA,IAAAq5B,EAAA57C,EAAA47C,QAEAmsF,EAAA,GACAnsF,EAAA/lD,OAAAR,MAAAumD,EACA,MAAA9f,OAAA8f,EAAA/lD,OAAAkyI,EAAAxlH,KAEAviB,EAAAgoI,SACA,EAEAC,UAAA,SAAAjoI,GACAA,EAAAtQ,KAAA+1I,EAAAzlI,EAAA,GAAAqwB,MAAAqsD,QACA,EAEAwrD,aAAA,SAAAloI,GACAA,EAAA,GAAAqwB,MAAAqsD,QAAA18E,EAAAtQ,KAAA+1I,IAAA,GACAzlI,EAAAk7H,WAAAuK,EACA,EAEAplC,KAAA,SAAArgG,EAAAqgG,GACA,IAAA1iG,EAAAqC,EAAA04B,GAAA,WAQA,MANA,WAAA2nE,IACAA,EAAA1iG,EAAA,gBAEAA,EAAA,SAAA0iG,EAAA,SAAAA,KACAA,EAAA,QAEAA,CACA,EAGA8nC,YAAA,SAAAp1I,EAAAq1I,GACA,IAAA3vI,EAAAD,EAEA,OAAAzF,EAAA,IACA,UACA0F,EAAA,EACA,MACA,aACAA,EAAA,GACA,MACA,aACAA,EAAA,EACA,MACA,QACAA,EAAA1F,EAAA,GAAAq1I,EAAA7lI,OAGA,OAAAxP,EAAA,IACA,WACAyF,EAAA,EACA,MACA,aACAA,EAAA,GACA,MACA,YACAA,EAAA,EACA,MACA,QACAA,EAAAzF,EAAA,GAAAq1I,EAAAhnI,MAGA,OACA5I,IACAC,IAEA,EAGA4vI,kBAAA,SAAAroI,GACA,IAAAk1E,EACAozD,EAAAtoI,EAAAhG,IAAA,YACAzB,EAAAyH,EAAAzH,WA+CA,OAzCAyH,EAAAhG,IAAA,CACAguE,UAAAhoE,EAAAhG,IAAA,aACAiuE,aAAAjoE,EAAAhG,IAAA,gBACAsH,WAAAtB,EAAAhG,IAAA,cACAuH,YAAAvB,EAAAhG,IAAA,iBAEAgS,WAAAhM,EAAAgM,cACAC,YAAAjM,EAAAiM,eAEA,qBAAA1d,KAAA+5I,KACAA,EAAA,WAEApzD,EAAA1nF,EAAA,IAAAwS,EAAA,GAAAu7E,SAAA,KAAAgtD,YAAAvoI,GAAAhG,IAAA,CAIAiH,QAAA,iBAAA1S,KAAAyR,EAAAhG,IAAA,YACA,eACA,QACA6lC,WAAA,SAGAmoC,UAAAhoE,EAAAhG,IAAA,aACAiuE,aAAAjoE,EAAAhG,IAAA,gBACAsH,WAAAtB,EAAAhG,IAAA,cACAuH,YAAAvB,EAAAhG,IAAA,eACAyqC,MAAAzkC,EAAAhG,IAAA,WAEAgS,WAAAhM,EAAAgM,cACAC,YAAAjM,EAAAiM,eACAlS,SAAA,0BAEAiG,EAAAtQ,KAAA81I,EAAA,cAAAtwD,IAGAl1E,EAAAhG,IAAA,CACAzB,SAAA+vI,EACAztI,KAAAtC,EAAAsC,KACAC,IAAAvC,EAAAuC,MAGAo6E,CACA,EAEAszD,kBAAA,SAAAxoI,GACA,IAAAyoI,EAAAjD,EAAA,cACAtwD,EAAAl1E,EAAAtQ,KAAA+4I,GAEAvzD,IACAA,EAAA/nF,SACA6S,EAAAk7H,WAAAuN,GAEA,EAIAC,QAAA,SAAA1oI,GACAxS,EAAA65F,QAAA6gD,aAAAloI,GACAxS,EAAA65F,QAAAmhD,kBAAAxoI,EACA,EAEA2oI,cAAA,SAAA3oI,EAAA4oI,EAAAzmI,EAAAvB,GAQA,OAPAA,KAAA,GACApT,EAAAgJ,KAAAoyI,GAAA,SAAA/7I,EAAA2L,GACA,IAAAgF,EAAAwC,EAAA6oI,QAAArwI,GACAgF,EAAA,OACAoD,EAAApI,GAAAgF,EAAA,GAAA2E,EAAA3E,EAAA,GAEA,IACAoD,CACA,IAkFApT,EAAAgmB,GAAAzf,OAAA,CACA2yF,OAAA,WACA,IAAAztC,EAAAiuF,EAAA7xI,MAAAjB,KAAAkB,WACAwzI,EAAAt7I,EAAA65F,QAAAX,OAAAztC,EAAAytC,QACAqiD,EAAAD,EAAAzoC,KACAzkD,EAAA3C,EAAA2C,MACAotF,EAAAptF,GAAA,KACA3F,EAAAgD,EAAAhD,SACAoqD,EAAApnD,EAAAonD,KACA4oC,EAAA,GACAC,EAAA,SAAAliF,GACA,IAAA0/E,EAAAl5I,EAAA4G,MACA+0I,EAAA37I,EAAA65F,QAAAgZ,KAAAqmC,EAAArmC,IAAA0oC,EAGArC,EAAAh3I,KAAAg2I,GAAA,GAKAuD,EAAAh0I,KAAAk0I,GAGAJ,IAAA,SAAAI,GACAA,IAAAJ,GAAA,SAAAI,IACAzC,EAAAxpI,OAGA6rI,GAAA,SAAAI,GACA37I,EAAA65F,QAAA4gD,UAAAvB,GAGA,mBAAA1/E,GACAA,GAEA,EAEA,GAAAx5D,EAAA62I,GAAAzlI,MAAAkqI,EAGA,OAAAzoC,EACAjsG,KAAAisG,GAAApnD,EAAA0C,SAAA1F,GAEA7hD,KAAAoC,MAAA,WACAy/C,GACAA,EAAA78B,KAAAhlB,KAEA,IAIA,SAAAg1I,EAAApiF,GACA,IAAAoxE,EAAA5qI,EAAA4G,MAcA,SAAAusC,IACA,mBAAAsV,GACAA,EAAA78B,KAAAg/G,EAAA,IAGA,mBAAApxE,GACAA,GAEA,CAIA/N,EAAAonD,KAAA4oC,EAAA71H,SAEA,IAAA5lB,EAAA85I,cAAAyB,EAUA,SAAA9vF,EAAAonD,MAGA+3B,EAAA/3B,KACA1/D,KAEAmoG,EAAA1vH,KAAAg/G,EAAA,GAAAn/E,GA1CA,WACAm/E,EAAA8C,WAAAwK,GAEAl4I,EAAA65F,QAAAqhD,QAAAtQ,GAEA,SAAAn/E,EAAAonD,MACA+3B,EAAAx6H,OAGA+iC,GACA,KAiBAy3F,EAAA1/F,GAAA,oBAAA2nE,EAAA,SAAAA,IAGA+3B,EAAA/3B,KACA1/D,KAEAmoG,EAAA1vH,KAAAg/G,EAAA,GAAAn/E,EAAAtY,EAYA,CAKA,WAAAib,EACAxnD,KAAAoC,KAAA0yI,GAAA1yI,KAAA4yI,GACAh1I,KAAAwnD,MAAAotF,EAAAE,GAAAttF,MAAAotF,EAAAI,EACA,EAEAlsI,KAAA,SAAA46H,GACA,gBAAAzwF,GACA,GAAA+/F,EAAA//F,GACA,OAAAywF,EAAAziI,MAAAjB,KAAAkB,WAEA,IAAA2jD,EAAAiuF,EAAA7xI,MAAAjB,KAAAkB,WAEA,OADA2jD,EAAAonD,KAAA,OACAjsG,KAAAsyF,OAAAttE,KAAAhlB,KAAA6kD,EAEA,CACA,CAVA,CAUAzrD,EAAAgmB,GAAAtW,MAEAU,KAAA,SAAAk6H,GACA,gBAAAzwF,GACA,GAAA+/F,EAAA//F,GACA,OAAAywF,EAAAziI,MAAAjB,KAAAkB,WAEA,IAAA2jD,EAAAiuF,EAAA7xI,MAAAjB,KAAAkB,WAEA,OADA2jD,EAAAonD,KAAA,OACAjsG,KAAAsyF,OAAAttE,KAAAhlB,KAAA6kD,EAEA,CACA,CAVA,CAUAzrD,EAAAgmB,GAAA5V,MAEAK,OAAA,SAAA65H,GACA,gBAAAzwF,GACA,GAAA+/F,EAAA//F,IAAA,kBAAAA,EACA,OAAAywF,EAAAziI,MAAAjB,KAAAkB,WAEA,IAAA2jD,EAAAiuF,EAAA7xI,MAAAjB,KAAAkB,WAEA,OADA2jD,EAAAonD,KAAA,SACAjsG,KAAAsyF,OAAAttE,KAAAhlB,KAAA6kD,EAEA,CACA,CAVA,CAUAzrD,EAAAgmB,GAAAvV,QAEA4qI,QAAA,SAAA7jI,GACA,IAAAqrB,EAAAj8B,KAAA4F,IAAAgL,GACAkoC,EAAA,GAOA,OALA1/C,EAAAgJ,KAAA,+BAAA3J,EAAA2Q,GACA6yB,EAAAnjC,QAAAsQ,GAAA,IACA0vC,EAAA,CAAAr5B,WAAAwc,GAAA7yB,GAEA,IACA0vC,CACA,EAEAm8F,QAAA,SAAAC,GACA,OAAAA,EACAl1I,KAAA4F,IAAA,eAAAsvI,EAAAxuI,IAAA,MAAAwuI,EAAAvuI,MAAA,MACAuuI,EAAAtuI,OAAA,MAAAsuI,EAAAzuI,KAAA,OAEAwsI,EAAAjzI,KAAA4F,IAAA,QAAA5F,KACA,EAEAm1I,SAAA,SAAAhyH,EAAAopB,GACA,IAAA3gC,EAAAxS,EAAA4G,MACAqkC,EAAAjrC,EAAA+pB,EAAAwwC,IACAyhF,EAAA,UAAA/wG,EAAAz+B,IAAA,YACAuqB,EAAA/2B,EAAA,QACAi8I,EAAAD,EAAAjlH,EAAAriB,YAAA,EACAwnI,EAAAF,EAAAjlH,EAAAiW,aAAA,EACAmvG,EAAAlxG,EAAAgY,SACAtzC,EAAA,CACArC,IAAA6uI,EAAA7uI,IAAA2uI,EACA5uI,KAAA8uI,EAAA9uI,KAAA6uI,EACAnnI,OAAAk2B,EAAAzrB,cACA5L,MAAAq3B,EAAA3rB,cAEA88H,EAAA5pI,EAAAywC,SACA84F,EAAA/7I,EAAA,2CAEA+7I,EACAtuI,SAAA,QACAlB,SAAAwd,EAAA2c,WACAl6B,IAAA,CACAc,IAAA8uI,EAAA9uI,IAAA2uI,EACA5uI,KAAA+uI,EAAA/uI,KAAA6uI,EACAnnI,OAAAvC,EAAAgN,cACA5L,MAAApB,EAAA8M,aACAvU,SAAAixI,EAAA,qBAEA9tF,QAAAv+C,EAAAoa,EAAAokC,SAAApkC,EAAA6lH,QAAA,WACAmM,EAAAp8I,SACA,mBAAAwzC,GACAA,GAEA,GACA,IAiBAnzC,EAAA62I,GAAAt9E,KAAAglC,KAAA,SAAAs4C,GACAA,EAAAwF,WACAxF,EAAA/uH,MAAA9nB,EAAA62I,EAAAjM,MAAAiR,UACA,iBAAAhF,EAAAznF,MACAynF,EAAAznF,IAAAyqF,EAAAhD,EAAAznF,IAAAynF,EAAAjM,OAEAiM,EAAAwF,UAAA,GAGAr8I,EAAA62I,EAAAjM,MAAAiR,QAAA,CACAvuI,IAAAupI,EAAAxkF,KAAAwkF,EAAAznF,IAAA9hD,IAAAupI,EAAA/uH,MAAAxa,KAAAupI,EAAA/uH,MAAAxa,IACAC,MAAAspI,EAAAxkF,KAAAwkF,EAAAznF,IAAA7hD,MAAAspI,EAAA/uH,MAAAva,OAAAspI,EAAA/uH,MAAAva,MACAC,OAAAqpI,EAAAxkF,KAAAwkF,EAAAznF,IAAA5hD,OAAAqpI,EAAA/uH,MAAAta,QAAAqpI,EAAA/uH,MAAAta,OACAH,KAAAwpI,EAAAxkF,KAAAwkF,EAAAznF,IAAA/hD,KAAAwpI,EAAA/uH,MAAAza,MAAAwpI,EAAA/uH,MAAAza,MAEA,CAEA,CAxoBA,GAkpBA0qI,EAAA,GAEA/3I,EAAAgJ,KAAA,kDAAA3J,EAAAH,GACA64I,EAAA74I,GAAA,SAAAu5D,GACA,OAAA98C,KAAAud,IAAAu/B,EAAAp5D,EAAA,EACA,CACA,IAEAW,EAAAuG,OAAAwxI,EAAA,CACAuE,KAAA,SAAA7jF,GACA,SAAA98C,KAAAytB,IAAAqvB,EAAA98C,KAAAspB,GAAA,EACA,EACAs3G,KAAA,SAAA9jF,GACA,SAAA98C,KAAA6wC,KAAA,EAAAiM,IACA,EACA+jF,QAAA,SAAA/jF,GACA,WAAAA,GAAA,IAAAA,KACA98C,KAAAud,IAAA,KAAAu/B,EAAA,IAAA98C,KAAAwtB,KAAA,IAAAsvB,EAAA,QAAA98C,KAAAspB,GAAA,GACA,EACAw3G,KAAA,SAAAhkF,GACA,OAAAA,KAAA,EAAAA,EAAA,EACA,EACAikF,OAAA,SAAAjkF,GAIA,IAHA,IAAAkkF,EACAC,EAAA,EAEAnkF,IAAAkkF,EAAAhhI,KAAAud,IAAA,IAAA0jH,IAAA,QACA,SAAAjhI,KAAAud,IAAA,IAAA0jH,GAAA,OAAAjhI,KAAAud,KAAA,EAAAyjH,EAAA,MAAAlkF,EAAA,EACA,IAGAz4D,EAAAgJ,KAAA+uI,GAAA,SAAA74I,EAAA29I,GACA78I,EAAA4vI,OAAA,SAAA1wI,GAAA29I,EACA78I,EAAA4vI,OAAA,UAAA1wI,GAAA,SAAAu5D,GACA,SAAAokF,EAAA,EAAApkF,EACA,EACAz4D,EAAA4vI,OAAA,YAAA1wI,GAAA,SAAAu5D,GACA,OAAAA,EAAA,GACAokF,EAAA,EAAApkF,GAAA,EACA,EAAAokF,GAAA,EAAApkF,EAAA,IACA,CACA,IAIAz4D,EAAA65F,QAmBA75F,EAAA65F,QAAAx7F,OAAA,yBAAA0rB,EAAAopB,GACA,IAAArlC,EAAA,CACAgvI,GAAA,iBACAnK,SAAA,iBACAoK,KAAA,iBACA1vI,KAAA,iBACAqlI,WAAA,iBACAnlI,MAAA,kBAEAiF,EAAAxS,EAAA4G,MACAgzE,EAAA7vD,EAAA6vD,WAAA,KACA9xD,EAAAtV,EAAAqpI,UACA3tF,EAAA,CAAAqwC,KAAAv+F,EAAAuG,OAAA,GAAAuhB,IACA4/D,EAAA1nF,EAAA65F,QAAAghD,kBAAAroI,GAEA07C,EAAAqwC,KAAAzwF,EAAA8rE,GAAA,IAAA1rB,EAAAqwC,KAAAzwF,EAAA8rE,GAAA,IAEA,SAAA7vD,EAAA8oF,OACArgG,EAAAqpI,QAAA3tF,EAAAqwC,MACA7W,GACAA,EAAAl7E,IAAAxM,EAAA65F,QAAAygD,UAAApsF,IAGAA,EAAAqwC,KAAAz2E,GAGA4/D,GACAA,EAAAx5B,QAAAluD,EAAA65F,QAAAygD,UAAApsF,GAAAnkC,EAAAokC,SAAApkC,EAAA6lH,QAGAp9H,EAAA07C,UAAA,CACAE,OAAA,EACAD,SAAApkC,EAAAokC,SACAyhF,OAAA7lH,EAAA6lH,OACAnnF,SAAAtV,GAEA,IAmBAnzC,EAAA65F,QAAAx7F,OAAA,mBAAA0rB,EAAAopB,GACA,IAAA6pG,EAAAC,EAAAC,EACA1qI,EAAAxS,EAAA4G,MAGAisG,EAAA9oF,EAAA8oF,KACAziG,EAAA,SAAAyiG,EACAnjG,EAAA,SAAAmjG,EACAj5B,EAAA7vD,EAAA6vD,WAAA,KACAttB,EAAAviC,EAAAuiC,SACA6wF,EAAApzH,EAAAozH,OAAA,EAGAC,EAAA,EAAAD,GAAAztI,GAAAU,EAAA,KACAyoI,EAAA9uH,EAAAokC,SAAAivF,EACAxN,EAAA7lH,EAAA6lH,OAGAyN,EAAA,OAAAzjE,GAAA,SAAAA,EAAA,aACA0jE,EAAA,OAAA1jE,GAAA,SAAAA,EACAv6E,EAAA,EAEAk+I,EAAA/qI,EAAA47C,QAAA9uD,OAgCA,IA9BAU,EAAA65F,QAAAghD,kBAAAroI,GAEA0qI,EAAA1qI,EAAAhG,IAAA6wI,GAGA/wF,IACAA,EAAA95C,EAAA,QAAA6qI,EAAA,iCAGA3tI,KACAutI,EAAA,CAAAj5G,QAAA,IACAq5G,GAAAH,EAIA1qI,EACAhG,IAAA,aACAA,IAAA6wI,EAAAC,EAAA,GAAAhxF,EAAA,EAAAA,GACA4B,QAAA+uF,EAAApE,EAAAjJ,IAIAx/H,IACAk8C,GAAA3wC,KAAAud,IAAA,EAAAikH,EAAA,KAGAF,EAAA,IACAI,GAAAH,EAGA79I,EAAA89I,EAAA99I,KACA29I,EAAA,IACAK,IAAAC,EAAA,WAAAhxF,EAEA95C,EACA07C,QAAA8uF,EAAAnE,EAAAjJ,GACA1hF,QAAA+uF,EAAApE,EAAAjJ,GAEAtjF,EAAAl8C,EAAA,EAAAk8C,IAAA,EAIAl8C,KACA4sI,EAAA,CAAAh5G,QAAA,IACAq5G,IAAAC,EAAA,WAAAhxF,EAEA95C,EAAA07C,QAAA8uF,EAAAnE,EAAAjJ,IAGAp9H,EAAA47C,MAAAjb,GAEAnzC,EAAA65F,QAAAp3C,QAAAjwC,EAAA+qI,EAAAH,EAAA,EACA,IAmBAp9I,EAAA65F,QAAAx7F,OAAA,wBAAA0rB,EAAAopB,GACA,IAAArrB,EACAomC,EAAA,GACA17C,EAAAxS,EAAA4G,MACAgzE,EAAA7vD,EAAA6vD,WAAA,WACA4jE,EAAA,SAAA5jE,EACA84D,EAAA8K,GAAA,eAAA5jE,EACA+4D,EAAA6K,GAAA,aAAA5jE,EAEA9xD,EAAAtV,EAAAqpI,UACA3tF,EAAAqwC,KAAA,CACAjxF,IAAAqlI,GAAA7qH,EAAAta,OAAAsa,EAAAxa,KAAA,EAAAwa,EAAAxa,IACAC,MAAAmlI,GAAA5qH,EAAAva,MAAAua,EAAAza,MAAA,EAAAya,EAAAva,MACAC,OAAAmlI,GAAA7qH,EAAAta,OAAAsa,EAAAxa,KAAA,EAAAwa,EAAAta,OACAH,KAAAqlI,GAAA5qH,EAAAva,MAAAua,EAAAza,MAAA,EAAAya,EAAAza,MAGArN,EAAA65F,QAAAghD,kBAAAroI,GAEA,SAAAuX,EAAA8oF,OACArgG,EAAAqpI,QAAA3tF,EAAAqwC,MACArwC,EAAAqwC,KAAAz2E,GAGAtV,EAAA07C,UAAA,CACAE,OAAA,EACAD,SAAApkC,EAAAokC,SACAyhF,OAAA7lH,EAAA6lH,OACAnnF,SAAAtV,GAGA,IAmBAnzC,EAAA65F,QAAAx7F,OAAA,wBAAA0rB,EAAAopB,GAEA,IAAAmZ,EACA95C,EAAAxS,EAAA4G,MAEA8I,EAAA,SADAqa,EAAA8oF,KAEAj5B,EAAA7vD,EAAA6vD,WAAA,OACAyjE,EAAA,OAAAzjE,GAAA,SAAAA,EAAA,aACA0jE,EAAA,OAAA1jE,GAAA,SAAAA,EAAA,UACA6jE,EAAA,OAAAH,EAAA,UACA3tI,EAAA,CACAq0B,QAAA,GAGAhkC,EAAA65F,QAAAghD,kBAAAroI,GAEA85C,EAAAviC,EAAAuiC,UACA95C,EAAA,QAAA6qI,EAAA,kCAEA1tI,EAAA0tI,GAAAC,EAAAhxF,EAEA58C,IACA8C,EAAAhG,IAAAmD,GAEAA,EAAA0tI,GAAAI,EAAAnxF,EACA38C,EAAAq0B,QAAA,GAIAxxB,EAAA07C,QAAAv+C,EAAA,CACAy+C,OAAA,EACAD,SAAApkC,EAAAokC,SACAyhF,OAAA7lH,EAAA6lH,OACAnnF,SAAAtV,GAEA,IAqBAnzC,EAAA65F,QAAAx7F,OAAA,2BAAA0rB,EAAAopB,GAEA,IAAA9zC,EAAA07B,EAAA1tB,EAAAC,EAAAowI,EAAAnL,EACAoL,EAAA5zH,EAAA6zH,OAAAjiI,KAAA81C,MAAA91C,KAAA6wC,KAAAziC,EAAA6zH,SAAA,EACAC,EAAAF,EACAnrI,EAAAxS,EAAA4G,MAEA8I,EAAA,SADAqa,EAAA8oF,KAIA5vD,EAAAzwC,EAAA9C,OAAAlD,IAAA,uBAAAy2C,SAGArvC,EAAA+H,KAAAskD,KAAAztD,EAAAgM,aAAAq/H,GACA9oI,EAAA4G,KAAAskD,KAAAztD,EAAAiM,cAAAk/H,GACAC,EAAA,GAGA,SAAAE,IACAF,EAAAn2I,KAAAb,MACAg3I,EAAAt+I,SAAAq+I,EAAAE,IAiDArrI,EAAAhG,IAAA,CACA6lC,WAAA,YAEAryC,EAAA49I,GAAAj+I,SACAwzC,IAlDA,CAGA,IAAA9zC,EAAA,EAAAA,EAAAs+I,EAAAt+I,IAIA,IAHAiO,EAAA21C,EAAA31C,IAAAjO,EAAA0V,EACAw9H,EAAAlzI,GAAAs+I,EAAA,KAEA5iH,EAAA,EAAAA,EAAA8iH,EAAA9iH,IACA1tB,EAAA41C,EAAA51C,KAAA0tB,EAAAnnB,EACA8pI,EAAA3iH,GAAA8iH,EAAA,KAIArrI,EACA65C,QACA5+C,SAAA,QACAysI,KAAA,eACA1tI,IAAA,CACAzB,SAAA,WACAsnC,WAAA,UACAhlC,MAAA0tB,EAAAnnB,EACAtG,KAAAjO,EAAA0V,IAKAtI,SACAF,SAAA,sBACAC,IAAA,CACAzB,SAAA,WACA6yC,SAAA,SACAhqC,QACAmB,SACA1H,QAAAqC,EAAAguI,EAAA9pI,EAAA,GACAtG,OAAAoC,EAAA6iI,EAAAx9H,EAAA,GACAivB,QAAAt0B,EAAA,MAEAw+C,QAAA,CACA7gD,QAAAqC,EAAA,EAAAguI,EAAA9pI,GACAtG,OAAAoC,EAAA,EAAA6iI,EAAAx9H,GACAivB,QAAAt0B,EAAA,KACAqa,EAAAokC,UAAA,IAAApkC,EAAA6lH,OAAAkO,EAWA,IAmBA99I,EAAA65F,QAAAx7F,OAAA,0BAAA0rB,EAAAopB,GACA,IAAAzjC,EAAA,SAAAqa,EAAA8oF,KAEA7yG,EAAA4G,MACA4F,IAAA,UAAAkD,EAAA,KACAw+C,QAAA,CACAlqB,QAAAt0B,EAAA,KACA,CACA0+C,OAAA,EACAD,SAAApkC,EAAAokC,SACAyhF,OAAA7lH,EAAA6lH,OACAnnF,SAAAtV,GAEA,IAmBAnzC,EAAA65F,QAAAx7F,OAAA,wBAAA0rB,EAAAopB,GAGA,IAAA3gC,EAAAxS,EAAA4G,MACAisG,EAAA9oF,EAAA8oF,KACAnjG,EAAA,SAAAmjG,EACAziG,EAAA,SAAAyiG,EACA3nG,EAAA6e,EAAA7e,MAAA,GACAypI,EAAA,YAAAvuH,KAAAlb,GAEAmyI,IADAtzH,EAAAg0H,WACA,sCACA5vF,EAAApkC,EAAAokC,SAAA,EAEAu5B,EAAA1nF,EAAA65F,QAAAghD,kBAAAroI,GAEAsV,EAAAtV,EAAAqpI,UACAmC,EAAA,CAAAz/C,KAAAv+F,EAAAuG,OAAA,GAAAuhB,IACAm2H,EAAA,CAAA1/C,KAAAv+F,EAAAuG,OAAA,GAAAuhB,IAEAwkC,EAAA,CAAAxkC,EAAAu1H,EAAA,IAAAv1H,EAAAu1H,EAAA,KAEAE,EAAA/qI,EAAA47C,QAAA9uD,OAEAq1I,IACAzpI,EAAA4U,SAAA60H,EAAA,WAAAroF,EAAAl8C,EAAA,MAEA4tI,EAAAz/C,KAAA8+C,EAAA,IAAAnyI,EACA+yI,EAAA1/C,KAAA8+C,EAAA,IAAAnyI,EACA+yI,EAAA1/C,KAAA8+C,EAAA,MAEA3tI,IACA8C,EAAAqpI,QAAAoC,EAAA1/C,MACA7W,GACAA,EAAAl7E,IAAAxM,EAAA65F,QAAAygD,UAAA2D,IAGAA,EAAA1/C,KAAAz2E,GAIAtV,EACA47C,OAAA,SAAAoL,GACAkuB,GACAA,EACAx5B,QAAAluD,EAAA65F,QAAAygD,UAAA0D,GAAA7vF,EAAApkC,EAAA6lH,QACA1hF,QAAAluD,EAAA65F,QAAAygD,UAAA2D,GAAA9vF,EAAApkC,EAAA6lH,QAGAp2E,GACA,IACAtL,QAAA8vF,EAAA7vF,EAAApkC,EAAA6lH,QACA1hF,QAAA+vF,EAAA9vF,EAAApkC,EAAA6lH,QACAxhF,MAAAjb,GAEAnzC,EAAA65F,QAAAp3C,QAAAjwC,EAAA+qI,EAAA,EACA,IAmBAv9I,EAAA65F,QAAAx7F,OAAA,6BAAA0rB,EAAAopB,GACA,IAAA3gC,EAAAxS,EAAA4G,MACA+I,EAAA,CACAwlE,gBAAA3iE,EAAAhG,IAAA,oBAGA,SAAAud,EAAA8oF,OACAljG,EAAAq0B,QAAA,GAGAhkC,EAAA65F,QAAA4gD,UAAAjoI,GAEAA,EACAhG,IAAA,CACA83B,gBAAA,OACA6wC,gBAAAprD,EAAA+Y,OAAA,YAEAorB,QAAAv+C,EAAA,CACAy+C,OAAA,EACAD,SAAApkC,EAAAokC,SACAyhF,OAAA7lH,EAAA6lH,OACAnnF,SAAAtV,GAEA,IAmBAnzC,EAAA65F,QAAAx7F,OAAA,iBAAA0rB,EAAAopB,GAGA,IAAAqqD,EAAA7oF,EAAAupI,EACA1rI,EAAAxS,EAAA4G,MAGAu3I,EAAA,aACAC,EAAA,oEACAC,EAAA,oEAGAxrC,EAAA9oF,EAAA8oF,KACArU,EAAA,WAAAqU,EACA/jE,EAAA/kB,EAAA+kB,OAAA,OACAvpC,EAAAwkB,EAAAxkB,QAAA,oBACAwF,EAAAyH,EAAAhG,IAAA,YACA6lD,EAAA7/C,EAAAzH,WACA6vI,EAAA56I,EAAA65F,QAAAwgD,iBAAA7nI,GACAgoD,EAAAzwC,EAAAywC,MAAAogF,EACArgF,EAAAxwC,EAAAwwC,IAAAv6D,EAAA65F,QAAAwgD,iBAAA7nI,EAAA,GAEAxS,EAAA65F,QAAAghD,kBAAAroI,GAEA,SAAAqgG,IACAqrC,EAAA1jF,EACAA,EAAAD,EACAA,EAAA2jF,GAIAvpI,EAAA,CACA6lD,KAAA,CACAvvD,EAAAuvD,EAAAzlD,OAAA6lI,EAAA7lI,OACA/J,EAAAwvD,EAAA5mD,MAAAgnI,EAAAhnI,OAEA2mD,GAAA,CACAtvD,EAAAsvD,EAAAxlD,OAAA6lI,EAAA7lI,OACA/J,EAAAuvD,EAAA3mD,MAAAgnI,EAAAhnI,QAKA,QAAAk7B,GAAA,SAAAA,IAGAn6B,EAAA6lD,KAAAvvD,IAAA0J,EAAA4lD,GAAAtvD,IACAuvD,EAAAx6D,EAAA65F,QAAAshD,cAAA3oI,EAAA4rI,EAAAzpI,EAAA6lD,KAAAvvD,EAAAuvD,GACAD,EAAAv6D,EAAA65F,QAAAshD,cAAA3oI,EAAA4rI,EAAAzpI,EAAA4lD,GAAAtvD,EAAAsvD,IAIA5lD,EAAA6lD,KAAAxvD,IAAA2J,EAAA4lD,GAAAvvD,IACAwvD,EAAAx6D,EAAA65F,QAAAshD,cAAA3oI,EAAA6rI,EAAA1pI,EAAA6lD,KAAAxvD,EAAAwvD,GACAD,EAAAv6D,EAAA65F,QAAAshD,cAAA3oI,EAAA6rI,EAAA1pI,EAAA4lD,GAAAvvD,EAAAuvD,KAKA,YAAAzrB,GAAA,SAAAA,GAGAn6B,EAAA6lD,KAAAvvD,IAAA0J,EAAA4lD,GAAAtvD,IACAuvD,EAAAx6D,EAAA65F,QAAAshD,cAAA3oI,EAAA2rI,EAAAxpI,EAAA6lD,KAAAvvD,EAAAuvD,GACAD,EAAAv6D,EAAA65F,QAAAshD,cAAA3oI,EAAA2rI,EAAAxpI,EAAA4lD,GAAAtvD,EAAAsvD,IAKAh1D,IACAi4F,EAAAx9F,EAAA65F,QAAA8gD,YAAAp1I,EAAAq1I,GACApgF,EAAAltD,KAAAstI,EAAAn8H,YAAA+7C,EAAA/7C,aAAA++E,EAAAvyF,EAAAonD,EAAA/kD,IACAktD,EAAAntD,MAAAutI,EAAAp8H,WAAAg8C,EAAAh8C,YAAAg/E,EAAAxyF,EAAAqnD,EAAAhlD,KACAktD,EAAAjtD,KAAAstI,EAAAn8H,YAAA87C,EAAA97C,aAAA++E,EAAAvyF,EAAAonD,EAAA/kD,IACAitD,EAAAltD,MAAAutI,EAAAp8H,WAAA+7C,EAAA/7C,YAAAg/E,EAAAxyF,EAAAqnD,EAAAhlD,aAEAmtD,EAAA/7C,mBACA+7C,EAAAh8C,WACAhM,EAAAhG,IAAAguD,GAGA,YAAA1rB,GAAA,SAAAA,IAEAsvG,IAAA9vG,OAAA,8BAAAA,OAAA6vG,GACAE,IAAA/vG,OAAA,8BAIA97B,EAAAtK,KAAA,YAAAc,MAAA,WACA,IAAAinF,EAAAjwF,EAAA4G,MACA03I,EAAAt+I,EAAA65F,QAAAwgD,iBAAApqD,GACAsuD,EAAA,CACAxpI,OAAAupI,EAAAvpI,OAAAJ,EAAA6lD,KAAAvvD,EACA2I,MAAA0qI,EAAA1qI,MAAAe,EAAA6lD,KAAAxvD,EACAyT,YAAA6/H,EAAA7/H,YAAA9J,EAAA6lD,KAAAvvD,EACAuT,WAAA8/H,EAAA9/H,WAAA7J,EAAA6lD,KAAAxvD,GAEAwzI,EAAA,CACAzpI,OAAAupI,EAAAvpI,OAAAJ,EAAA4lD,GAAAtvD,EACA2I,MAAA0qI,EAAA1qI,MAAAe,EAAA4lD,GAAAvvD,EACAyT,YAAA6/H,EAAAvpI,OAAAJ,EAAA4lD,GAAAtvD,EACAuT,WAAA8/H,EAAA1qI,MAAAe,EAAA4lD,GAAAvvD,GAIA2J,EAAA6lD,KAAAvvD,IAAA0J,EAAA4lD,GAAAtvD,IACAszI,EAAAv+I,EAAA65F,QAAAshD,cAAAlrD,EAAAmuD,EAAAzpI,EAAA6lD,KAAAvvD,EAAAszI,GACAC,EAAAx+I,EAAA65F,QAAAshD,cAAAlrD,EAAAmuD,EAAAzpI,EAAA4lD,GAAAtvD,EAAAuzI,IAIA7pI,EAAA6lD,KAAAxvD,IAAA2J,EAAA4lD,GAAAvvD,IACAuzI,EAAAv+I,EAAA65F,QAAAshD,cAAAlrD,EAAAouD,EAAA1pI,EAAA6lD,KAAAxvD,EAAAuzI,GACAC,EAAAx+I,EAAA65F,QAAAshD,cAAAlrD,EAAAouD,EAAA1pI,EAAA4lD,GAAAvvD,EAAAwzI,IAGAhgD,GACAx+F,EAAA65F,QAAA4gD,UAAAxqD,GAIAA,EAAAzjF,IAAA+xI,GACAtuD,EAAA/hC,QAAAswF,EAAAz0H,EAAAokC,SAAApkC,EAAA6lH,QAAA,WAGApxC,GACAx+F,EAAA65F,QAAA6gD,aAAAzqD,EAEA,GACA,KAIAz9E,EAAA07C,QAAAqM,EAAA,CACAnM,OAAA,EACAD,SAAApkC,EAAAokC,SACAyhF,OAAA7lH,EAAA6lH,OACAnnF,SAAA,WAEA,IAAAxF,EAAAzwC,EAAAywC,SAEA,IAAAsX,EAAAv2B,SACAxxB,EAAAhG,IAAA,UAAAguD,EAAAx2B,SAGAw6D,IACAhsF,EACAhG,IAAA,sBAAAzB,EAAA,WAAAA,GACAk4C,UAIAjjD,EAAA65F,QAAA4gD,UAAAjoI,IAGA2gC,GACA,GAGA,IAmBAnzC,EAAA65F,QAAAx7F,OAAA,kBAAA0rB,EAAAopB,GAGA,IAAA+lG,EAAAl5I,EAAA4G,MACAisG,EAAA9oF,EAAA8oF,KACA8hC,EAAA70H,SAAAiK,EAAA4qH,QAAA,MACA,IAAA70H,SAAAiK,EAAA4qH,QAAA,gBAAA9hC,EAAA,OAEA4rC,EAAAz+I,EAAAuG,QAAA,GACAi0D,KAAAx6D,EAAA65F,QAAAwgD,iBAAAnB,GACA3+E,GAAAv6D,EAAA65F,QAAAwgD,iBAAAnB,EAAAvE,EAAA5qH,EAAA6vD,WAAA,QACAr0E,OAAAwkB,EAAAxkB,QAAA,qBACAwkB,GAGAA,EAAA20H,OACAD,EAAAjkF,KAAAx2B,QAAA,EACAy6G,EAAAlkF,GAAAv2B,QAAA,GAGAhkC,EAAA65F,QAAAX,OAAAhuF,KAAA0gB,KAAAhlB,KAAA63I,EAAAtrG,EACA,IAmBAnzC,EAAA65F,QAAAx7F,OAAA,wBAAA0rB,EAAAopB,GACA,IAAAsrG,EAAAz+I,EAAAuG,QAAA,KAAAwjB,EAAA,CACA20H,MAAA,EACA/J,QAAA70H,SAAAiK,EAAA4qH,QAAA,WAGA30I,EAAA65F,QAAAX,OAAApqD,MAAAljB,KAAAhlB,KAAA63I,EAAAtrG,EACA,IAmBAnzC,EAAA65F,QAAAx7F,OAAA,2BAAA0rB,EAAAopB,GACA,IAAA3gC,EAAAxS,EAAA4G,MACAisG,EAAA9oF,EAAA8oF,KACAnjG,EAAA,SAAAmjG,EAEA8rC,EAAAjvI,GADA,SAAAmjG,EAIAuqC,EAAA,GAAArzH,EAAAozH,OAAA,IAAAwB,EAAA,KACAxwF,EAAApkC,EAAAokC,SAAAivF,EACAwB,EAAA,EACAv/I,EAAA,EACAk+I,EAAA/qI,EAAA47C,QAAA9uD,OAQA,KANAoQ,GAAA8C,EAAA04B,GAAA,cACA14B,EAAAhG,IAAA,aAAAkD,OACAkvI,EAAA,GAIAv/I,EAAA+9I,EAAA/9I,IACAmT,EAAA07C,QAAA,CAAAlqB,QAAA46G,GAAAzwF,EAAApkC,EAAA6lH,QACAgP,EAAA,EAAAA,EAGApsI,EAAA07C,QAAA,CAAAlqB,QAAA46G,GAAAzwF,EAAApkC,EAAA6lH,QAEAp9H,EAAA47C,MAAAjb,GAEAnzC,EAAA65F,QAAAp3C,QAAAjwC,EAAA+qI,EAAAH,EAAA,EACA,IAmBAp9I,EAAA65F,QAAAx7F,OAAA,kBAAA0rB,EAAAopB,GAEA,IAAA9zC,EAAA,EACAmT,EAAAxS,EAAA4G,MACAgzE,EAAA7vD,EAAA6vD,WAAA,OACAttB,EAAAviC,EAAAuiC,UAAA,GACA6wF,EAAApzH,EAAAozH,OAAA,EACAC,EAAA,EAAAD,EAAA,EACAtE,EAAAl9H,KAAA81C,MAAA1nC,EAAAokC,SAAAivF,GACAC,EAAA,OAAAzjE,GAAA,SAAAA,EAAA,aACAilE,EAAA,OAAAjlE,GAAA,SAAAA,EACAjqE,EAAA,GACAquI,EAAA,GACAC,EAAA,GAEAV,EAAA/qI,EAAA47C,QAAA9uD,OAaA,IAXAU,EAAA65F,QAAAghD,kBAAAroI,GAGA7C,EAAA0tI,IAAAwB,EAAA,WAAAvyF,EACA0xF,EAAAX,IAAAwB,EAAA,aAAAvyF,EACA2xF,EAAAZ,IAAAwB,EAAA,aAAAvyF,EAGA95C,EAAA07C,QAAAv+C,EAAAkpI,EAAA9uH,EAAA6lH,QAGAvwI,EAAA89I,EAAA99I,IACAmT,EACA07C,QAAA8vF,EAAAnF,EAAA9uH,EAAA6lH,QACA1hF,QAAA+vF,EAAApF,EAAA9uH,EAAA6lH,QAGAp9H,EACA07C,QAAA8vF,EAAAnF,EAAA9uH,EAAA6lH,QACA1hF,QAAAv+C,EAAAkpI,EAAA,EAAA9uH,EAAA6lH,QACAxhF,MAAAjb,GAEAnzC,EAAA65F,QAAAp3C,QAAAjwC,EAAA+qI,EAAAH,EAAA,EACA,IAmBAp9I,EAAA65F,QAAAx7F,OAAA,yBAAA0rB,EAAAopB,GACA,IAAA2rG,EAAAC,EACAvsI,EAAAxS,EAAA4G,MACAkH,EAAA,CACAgvI,GAAA,iBACAC,KAAA,iBACA1vI,KAAA,iBACAE,MAAA,kBAEAslG,EAAA9oF,EAAA8oF,KACAj5B,EAAA7vD,EAAA6vD,WAAA,OACAyjE,EAAA,OAAAzjE,GAAA,SAAAA,EAAA,aACAilE,EAAA,OAAAjlE,GAAA,SAAAA,EACAttB,EAAAviC,EAAAuiC,UACA95C,EAAA,QAAA6qI,EAAA,gCACA1tI,EAAA,GAEA3P,EAAA65F,QAAAghD,kBAAAroI,GAEAssI,EAAAtsI,EAAAqpI,UACAkD,EAAAvsI,EAAAzH,WAAAsyI,GAGA1tI,EAAA0tI,IAAAwB,GAAA,KAAAvyF,EAAAyyF,EACApvI,EAAA4uF,KAAA/rF,EAAAqpI,UACAlsI,EAAA4uF,KAAAzwF,EAAA8rE,GAAA,IAAAjqE,EAAA4uF,KAAAzwF,EAAA8rE,GAAA,IAGA,SAAAi5B,IACArgG,EAAAqpI,QAAAlsI,EAAA4uF,MACA/rF,EAAAhG,IAAA6wI,EAAA1tI,EAAA0tI,IACA1tI,EAAA4uF,KAAAugD,EACAnvI,EAAA0tI,GAAA0B,GAIAvsI,EAAA07C,QAAAv+C,EAAA,CACAy+C,OAAA,EACAD,SAAApkC,EAAAokC,SACAyhF,OAAA7lH,EAAA6lH,OACAnnF,SAAAtV,GAEA;;;;;;;;IAoBA,IAAAnzC,EAAA85I,cACA95I,EAAA65F,QAAAx7F,OAAA,qBAAA0rB,EAAAopB,GACAnzC,EAAA4G,MAAAm1I,SAAAhyH,EAAAopB,EACA;;;;;;;;;AAqBAnzC,EAAAqqI,GAAA0C,UAAA,SAAAv6H,EAAAwsI,GACA,IAAAlxI,EAAAmxI,EAAA39D,EAAA49D,EAAAC,EACApxD,EAAAv7E,EAAAu7E,SAAA7sF,cAEA,eAAA6sF,GAEAkxD,GADAnxI,EAAA0E,EAAAulB,YACA74B,QACAsT,EAAA2W,OAAA81H,GAAA,QAAAnxI,EAAAigF,SAAA7sF,kBAGAogF,EAAAthF,EAAA,gBAAAi/I,EAAA,OACA3/I,OAAA,GAAAgiF,EAAAp2C,GAAA,eAGA,0CAAAnqC,KAAAgtF,IACAmxD,GAAA1sI,EAAAk6H,YAQAyS,EAAAn/I,EAAAwS,GAAAkkE,QAAA,kBAEAwoE,GAAAC,EAAAzS,UAIAwS,EADA,MAAAnxD,GACAv7E,EAAA2W,MAEA61H,EAGAE,GAAAl/I,EAAAwS,GAAA04B,GAAA,aACA,YAAAlrC,EAAAwS,GAAAhG,IAAA,cACA,EAEAxM,EAAAuG,OAAAvG,EAAAorI,KAAAC,QAAA,CACA0B,UAAA,SAAAv6H,GACA,OAAAxS,EAAAqqI,GAAA0C,UAAAv6H,EAAA,MAAAxS,EAAA6uC,KAAAr8B,EAAA,YACA,IAGAxS,EAAAqqI,GAAA0C,UAkBA/sI,EAAAqqI,GAAA+U,eAAA,CACAC,kBAAA,WACA,IAAAC,EAAAt/I,EAAA4G,MAGA2kB,YAAA,WACA,IAAAs6E,EAAAy5C,EAAAp9I,KAAA,2BACAlC,EAAAgJ,KAAA68F,GAAA,WACAj/F,KAAA24I,SACA,GACA,GACA,EAEAC,sBAAA,WAEA,GADA54I,KAAA04I,KAAAt/I,EAAA4G,KAAA4L,QAAA8K,KAAA,SACA1W,KAAA04I,KAAAhgJ,OAAA,CAIA,IAAAumG,EAAAj/F,KAAA04I,KAAAp9I,KAAA,+BACA2jG,EAAAvmG,QAGAsH,KAAA04I,KAAAh9I,GAAA,sBAAAsE,KAAAy4I,mBAEAx5C,EAAAp+F,KAAAb,MACAA,KAAA04I,KAAAp9I,KAAA,0BAAA2jG,EATA,CAUA,EAEA45C,wBAAA,WACA,GAAA74I,KAAA04I,KAAAhgJ,OAAA,CAIA,IAAAumG,EAAAj/F,KAAA04I,KAAAp9I,KAAA,2BACA2jG,EAAAx9F,OAAArI,EAAA0uB,QAAA9nB,KAAAi/F,GAAA,GACAA,EAAAvmG,OACAsH,KAAA04I,KAAAp9I,KAAA,0BAAA2jG,GAEAj/F,KAAA04I,KACA5R,WAAA,2BACAt8H,IAAA,sBATA,CAWA;;;;;;;;;;;;;;;;;;AAsBApR,EAAA0/I,iBACA1/I,EAAA0/I,eAAA,SAAAl+I,GACA,OAAAm+I,IAAArmG,OAAA93C,EAAA,GACA,GAKAxB,EAAAgmB,GAAA45H,MAAA5/I,EAAAgmB,GAAA65H,KACA7/I,EAAAgmB,GAAAzf,OAAA,CACAq5I,KAAA,WACA,OAAAh5I,KAAAma,QAAA,SAAA1hB,GACA,OAAAA,EAAA,IACA,GACA,EACAwgJ,IAAA,WACA,OAAAj5I,KAAAma,QAAA,SAAA1hB,GACA,OAAAA,EAAA,IACA,GACA;;;;;;;;;AAoBA,IAqJAstI;;;;;;;;GArJA3sI,EAAAqqI,GAAAn9E,QAAA,CACA4yF,UAAA,EACAC,MAAA,IACAC,OAAA,GACAC,KAAA,GACAC,IAAA,GACAC,MAAA,GACAC,OAAA,GACAC,KAAA,GACAC,KAAA,GACAC,UAAA,GACAC,QAAA,GACAC,OAAA,IACAC,MAAA,GACAC,MAAA,GACAC,IAAA,EACAC,GAAA,IAmBA7gJ,EAAAgmB,GAAA86H,OAAA,WACA,IAAAC,EAAA7zI,EAAA1L,EAAAs/I,EAAAE,EAEA,OAAAp6I,KAAAtH,OAKAsH,KAAA,GAAAk6I,QAAAl6I,KAAA,GAAAk6I,OAAAxhJ,OACAsH,KAAA0lI,UAAA1lI,KAAA,GAAAk6I,SAKAA,EAAAl6I,KAAA+6C,GAAA,GAAAs/F,QAAA,UAGAz/I,EAAAoF,KAAAioC,KAAA,SAQAmyG,GAHAD,EAAAn6I,KAAA+6C,GAAA,GAAAs/F,UAAA//H,QAGA8qC,IAAA+0F,EAAAzhJ,OAAAyhJ,EAAAG,WAAAt6I,KAAAs6I,YAGAh0I,EAAA,cAAAyyI,IAAArmG,OAAA93C,GAAA,KAEAs/I,IAAA90F,IAAAg1F,EAAA94I,KAAAgF,GAAAq8B,QAAAr8B,KAKAtG,KAAA0lI,UAAAwU,IA/BAl6I,KAAA0lI,UAAA,GAgCA,EAkBAtsI,EAAAgmB,GAAAm7H,aAAA,SAAAC,GACA,IAAAr2I,EAAAnE,KAAA4F,IAAA,YACA60I,EAAA,aAAAt2I,EACAu2I,EAAAF,EAAA,uCACAD,EAAAv6I,KAAAq6I,UAAAlgI,QAAA,WACA,IAAAtU,EAAAzM,EAAA4G,MACA,QAAAy6I,GAAA,WAAA50I,EAAAD,IAAA,cAGA80I,EAAAvgJ,KAAA0L,EAAAD,IAAA,YAAAC,EAAAD,IAAA,cACAC,EAAAD,IAAA,cACA,IAAAm1C,GAAA,GAEA,gBAAA52C,GAAAo2I,EAAA7hJ,OAEA6hJ,EADAnhJ,EAAA4G,KAAA,GAAA09E,eAAAxlF,SAEA,EAkBAkB,EAAAuG,OAAAvG,EAAAorI,KAAAC,QAAA,CACAkW,SAAA,SAAA/uI,GACA,IAAA4rC,EAAAp+C,EAAA6uC,KAAAr8B,EAAA,YACAwsI,EAAA,MAAA5gG,EACA,QAAA4gG,GAAA5gG,GAAA,IAAAp+C,EAAAqqI,GAAA0C,UAAAv6H,EAAAwsI,EACA,IAmBAh/I,EAAAgmB,GAAAzf,OAAA,CACA+5C,UACAqsF,EAAA,EAEA,WACA,OAAA/lI,KAAAoC,MAAA,WACApC,KAAApF,KACAoF,KAAApF,GAAA,YAAAmrI,EAEA,GACA,GAGA6U,eAAA,WACA,OAAA56I,KAAAoC,MAAA,WACA,cAAAjI,KAAA6F,KAAApF,KACAxB,EAAA4G,MAAAunC,WAAA,KAEA,GACA,IAyBAnuC,EAAA6qI,OAAA,gBACArnH,QAAA,SACAuG,QAAA,CACAkwH,OAAA,EACA/rF,QAAA,GACAu+E,QAAA,CACA,sCACA,gDACA,2CAEAgV,aAAA,EACAn6I,MAAA,QACAo6I,OAAA,SAAA9W,GACA,OAAAA,EACA1iI,KAAA,uBACA8jD,IACA4+E,EAAA1iI,KAAA,cAIA6Y,QAAA,SAAA1hB,GACA,OAAAA,EAAA,IACA,IAEA,EACAsiJ,YAAA,OACAC,MAAA,CACAC,aAAA,uBACAH,OAAA,wBAIAI,SAAA,KACAC,eAAA,MAGAC,UAAA,CACAt6G,eAAA,OACAC,kBAAA,OACA1zB,WAAA,OACAC,cAAA,OACAa,OAAA,QAGAktI,UAAA,CACAv6G,eAAA,OACAC,kBAAA,OACA1zB,WAAA,OACAC,cAAA,OACAa,OAAA,QAGAq4H,QAAA,WACA,IAAArjH,EAAAnjB,KAAAmjB,QAEAnjB,KAAAs7I,SAAAt7I,KAAAu7I,SAAAniJ,IACA4G,KAAA+nI,UAAA,4CACA/nI,KAAA4L,QAAAq8B,KAAA,kBAGA9kB,EAAA03H,cAAA,IAAA13H,EAAAkwH,QAAA,MAAAlwH,EAAAkwH,SACAlwH,EAAAkwH,OAAA,GAGArzI,KAAAw7I,iBAGAr4H,EAAAkwH,OAAA,IACAlwH,EAAAkwH,QAAArzI,KAAAumB,QAAA7tB,QAEAsH,KAAAy7I,UACA,EAEA9U,oBAAA,WACA,OACAmU,OAAA96I,KAAAqzI,OACAqI,MAAA17I,KAAAqzI,OAAA36I,OAAAsH,KAAAqzI,OAAAzgF,OAAAx5D,IAEA,EAEAuiJ,aAAA,WACA,IAAA15C,EAAAv/D,EACAs4G,EAAAh7I,KAAAmjB,QAAA63H,MAEAA,IACA/4C,EAAA7oG,EAAA,UACA4G,KAAA+nI,UAAA9lC,EAAA,sCAAA+4C,EAAAF,QACA74C,EAAA25C,UAAA57I,KAAAumB,SACAmc,EAAA1iC,KAAAqzI,OAAA3wG,SAAA,6BACA1iC,KAAA6mI,aAAAnkG,EAAAs4G,EAAAF,QACA/S,UAAArlG,EAAA,KAAAs4G,EAAAC,cACAlT,UAAA/nI,KAAAumB,QAAA,sBAEA,EAEAs1H,cAAA,WACA77I,KAAA6mI,aAAA7mI,KAAAumB,QAAA,sBACAvmB,KAAAumB,QAAAmc,SAAA,6BAAA3pC,QACA,EAEA6tI,SAAA,WACA,IAAAkV,EAGA97I,KAAA4L,QAAA27B,WAAA,QAGAvnC,KAAAumB,QACAghB,WAAA,2DACAqzG,iBAEA56I,KAAA67I,gBAGAC,EAAA97I,KAAAumB,QAAAqsC,OACAhtD,IAAA,cACA2hC,WAAA,oCACAqzG,iBAEA,YAAA56I,KAAAmjB,QAAA43H,aACAe,EAAAl2I,IAAA,YAEA,EAEAqhI,WAAA,SAAAr2H,EAAApE,GACA,WAAAoE,GAOA,UAAAA,IACA5Q,KAAAmjB,QAAAziB,OACAV,KAAA8nI,KAAA9nI,KAAAumB,QAAAvmB,KAAAmjB,QAAAziB,OAEAV,KAAA+7I,aAAAvvI,IAGAxM,KAAA2/E,OAAA/uE,EAAApE,GAGA,gBAAAoE,GAAApE,IAAA,IAAAxM,KAAAmjB,QAAAkwH,QACArzI,KAAAg8I,UAAA,GAGA,UAAAprI,IACA5Q,KAAA67I,gBACArvI,GACAxM,KAAA27I,iBArBA37I,KAAAg8I,UAAAxvI,EAwBA,EAEAi6H,mBAAA,SAAAj6H,GACAxM,KAAA2/E,OAAAnzE,GAEAxM,KAAA4L,QAAAq8B,KAAA,gBAAAz7B,GACAxM,KAAAsnI,aAAA,2BAAA96H,EACA,EAEAyvI,SAAA,SAAAv7I,GACA,IAAAA,EAAAw7I,SAAAx7I,EAAAy7I,QAAA,CAIA,IAAA71F,EAAAltD,EAAAqqI,GAAAn9E,QACA5tD,EAAAsH,KAAAumB,QAAA7tB,OACAqhE,EAAA/5D,KAAAumB,QAAA/kB,MAAAd,EAAA2jC,QACA+3G,GAAA,EAEA,OAAA17I,EAAA4lD,SACA,KAAAA,EAAAwzF,MACA,KAAAxzF,EAAA+yF,KACA+C,EAAAp8I,KAAAumB,SAAAwzC,EAAA,GAAArhE,GACA,MACA,KAAA4tD,EAAAozF,KACA,KAAApzF,EAAA2zF,GACAmC,EAAAp8I,KAAAumB,SAAAwzC,EAAA,EAAArhE,MACA,MACA,KAAA4tD,EAAAyzF,MACA,KAAAzzF,EAAAizF,MACAv5I,KAAAq8I,cAAA37I,GACA,MACA,KAAA4lD,EAAAmzF,KACA2C,EAAAp8I,KAAAumB,QAAA,GACA,MACA,KAAA+/B,EAAAgzF,IACA8C,EAAAp8I,KAAAumB,QAAA7tB,EAAA,GAIA0jJ,IACAhjJ,EAAAsH,EAAA2jC,QAAA4D,KAAA,eACA7uC,EAAAgjJ,GAAAn0G,KAAA,cACA7uC,EAAAgjJ,GAAAlxI,QAAA,SACAxK,EAAA6jC,iBAhCA,CAkCA,EAEA+3G,cAAA,SAAA57I,GACAA,EAAA4lD,UAAAltD,EAAAqqI,GAAAn9E,QAAA2zF,IAAAv5I,EAAAy7I,SACA/iJ,EAAAsH,EAAA6nI,eAAAtuE,OAAA/uD,QAAA,QAEA,EAEAytI,QAAA,WACA,IAAAx1H,EAAAnjB,KAAAmjB,QACAnjB,KAAAw7I,kBAGA,IAAAr4H,EAAAkwH,SAAA,IAAAlwH,EAAA03H,cACA76I,KAAAumB,QAAA7tB,QACAyqB,EAAAkwH,QAAA,EACArzI,KAAAqzI,OAAAj6I,MAGA,IAAA+pB,EAAAkwH,OACArzI,KAAAg8I,UAAA,GAGAh8I,KAAAqzI,OAAA36I,SAAAU,EAAA2I,SAAA/B,KAAA4L,QAAA,GAAA5L,KAAAqzI,OAAA,IAGArzI,KAAAumB,QAAA7tB,SAAAsH,KAAAumB,QAAAjlB,KAAA,sBAAA5I,QACAyqB,EAAAkwH,QAAA,EACArzI,KAAAqzI,OAAAj6I,KAIA4G,KAAAg8I,UAAAjnI,KAAAoiB,IAAA,EAAAhU,EAAAkwH,OAAA,IAOAlwH,EAAAkwH,OAAArzI,KAAAumB,QAAA/kB,MAAAxB,KAAAqzI,QAGArzI,KAAA67I,gBAEA77I,KAAAy7I,UACA,EAEAD,eAAA,WACA,IAAAe,EAAAv8I,KAAAumB,QACAi2H,EAAAx8I,KAAAy8I,OAEA,mBAAAz8I,KAAAmjB,QAAA23H,OACA96I,KAAAumB,QAAAvmB,KAAAmjB,QAAA23H,OAAA96I,KAAA4L,SAEA5L,KAAAumB,QAAAvmB,KAAA4L,QAAAtK,KAAAtB,KAAAmjB,QAAA23H,QAEA96I,KAAA+nI,UAAA/nI,KAAAumB,QAAA,oDACA,oBAEAvmB,KAAAy8I,OAAAz8I,KAAAumB,QAAAqsC,OAAAz4C,OAAA,sCAAA3Q,OACAxJ,KAAA+nI,UAAA/nI,KAAAy8I,OAAA,4DAGAD,IACAx8I,KAAA8nI,KAAAyU,EAAA3U,IAAA5nI,KAAAumB,UACAvmB,KAAA8nI,KAAA0U,EAAA5U,IAAA5nI,KAAAy8I,SAEA,EAEAhB,SAAA,WACA,IAAAiB,EACAv5H,EAAAnjB,KAAAmjB,QACA43H,EAAA53H,EAAA43H,YACAl1I,EAAA7F,KAAA4L,QAAA/F,SAEA7F,KAAAqzI,OAAArzI,KAAA28I,YAAAx5H,EAAAkwH,QACArzI,KAAA+nI,UAAA/nI,KAAAqzI,OAAA,gDACAxM,aAAA7mI,KAAAqzI,OAAA,iCACArzI,KAAA+nI,UAAA/nI,KAAAqzI,OAAAzgF,OAAA,+BACA5yD,KAAAqzI,OAAAzgF,OAAA9pD,OAEA9I,KAAAumB,QACA0hB,KAAA,cACA7lC,MAAA,WACA,IAAA04I,EAAA1hJ,EAAA4G,MACA48I,EAAA9B,EAAAphG,WAAAzR,KAAA,MACAyzG,EAAAZ,EAAAloF,OACAiqF,EAAAnB,EAAAhiG,WAAAzR,KAAA,MACA6yG,EAAA7yG,KAAA,gBAAA40G,GACAnB,EAAAzzG,KAAA,kBAAA20G,EACA,IACAhqF,OACA3qB,KAAA,mBAEAjoC,KAAAumB,QACAqhH,IAAA5nI,KAAAqzI,QACAprG,KAAA,CACA,wBACA,wBACAuP,UAAA,IAEAob,OACA3qB,KAAA,CACA,uBAEAz+B,OAGAxJ,KAAAqzI,OAAA36I,OAGAsH,KAAAqzI,OAAAprG,KAAA,CACA,uBACA,uBACAuP,SAAA,IAEAob,OACA3qB,KAAA,CACA,wBATAjoC,KAAAumB,QAAAw0B,GAAA,GAAA9S,KAAA,cAaAjoC,KAAA27I,eAEA37I,KAAA+7I,aAAA54H,EAAAziB,OAEA,SAAAq6I,GACA2B,EAAA72I,EAAAsI,SACAnO,KAAA4L,QAAA0uI,SAAA,YAAAl4I,MAAA,WACA,IAAA4hI,EAAA5qI,EAAA4G,MACAmE,EAAA6/H,EAAAp+H,IAAA,YAEA,aAAAzB,GAAA,UAAAA,IAGAu4I,GAAA1Y,EAAAnsH,aAAA,GACA,IAEA7X,KAAAumB,QAAAnkB,MAAA,WACAs6I,GAAAtjJ,EAAA4G,MAAA6X,aAAA,EACA,IAEA7X,KAAAumB,QAAAqsC,OACAxwD,MAAA,WACAhJ,EAAA4G,MAAAmO,OAAA4G,KAAAoiB,IAAA,EAAAulH,EACAtjJ,EAAA4G,MAAA4Y,cAAAxf,EAAA4G,MAAAmO,UACA,IACAvI,IAAA,oBACA,SAAAm1I,IACA2B,EAAA,EACA18I,KAAAumB,QAAAqsC,OACAxwD,MAAA,WACA,IAAAqG,EAAArP,EAAA4G,MAAAskC,GAAA,YACA77B,GACArP,EAAA4G,MAAA8I,OAEA4zI,EAAA3nI,KAAAoiB,IAAAulH,EAAAtjJ,EAAA4G,MAAA4F,IAAA,aAAAuI,UACA1F,GACArP,EAAA4G,MAAAwJ,MAEA,IACA2E,OAAAuuI,GAEA,EAEAV,UAAA,SAAAx6I,GACA,IAAA6xI,EAAArzI,KAAA28I,YAAAn7I,GAAA,GAGA6xI,IAAArzI,KAAAqzI,OAAA,KAKAA,KAAArzI,KAAAqzI,OAAA,GAEArzI,KAAAq8I,cAAA,CACAh4G,OAAAgvG,EACA9K,cAAA8K,EACA9uG,eAAAnrC,EAAA+O,OAEA,EAEAw0I,YAAA,SAAAr2I,GACA,uBAAAA,EAAAtG,KAAAumB,QAAAw0B,GAAAz0C,GAAAlN,GACA,EAEA2iJ,aAAA,SAAAr7I,GACA,IAAAJ,EAAA,CACAw8I,QAAA,YAEAp8I,GACAtH,EAAAgJ,KAAA1B,EAAAlI,MAAA,eAAAgJ,EAAAyI,GACA3J,EAAA2J,GAAA,eACA,IAGAjK,KAAA8nI,KAAA9nI,KAAAumB,QAAA6+B,IAAAplD,KAAAumB,QAAAqsC,SACA5yD,KAAAqmI,IAAArmI,KAAAumB,QAAAjmB,GACAN,KAAAqmI,IAAArmI,KAAAumB,QAAAqsC,OAAA,CAAAkqF,QAAA,kBACA98I,KAAAqoI,WAAAroI,KAAAumB,SACAvmB,KAAAyoI,WAAAzoI,KAAAumB,QACA,EAEA81H,cAAA,SAAA37I,GACA,IAAAq8I,EAAAC,EACA75H,EAAAnjB,KAAAmjB,QACAkwH,EAAArzI,KAAAqzI,OACAtxC,EAAA3oG,EAAAsH,EAAA6nI,eACA0U,EAAAl7C,EAAA,KAAAsxC,EAAA,GACA6J,EAAAD,GAAA95H,EAAA03H,YACAsC,EAAAD,EAAA9jJ,IAAA2oG,EAAAnvC,OACAwqF,EAAA/J,EAAAzgF,OACAtoD,EAAA,CACA+yI,UAAAhK,EACAiK,SAAAF,EACAG,UAAAL,EAAA9jJ,IAAA2oG,EACAy7C,SAAAL,GAGAz8I,EAAA6jC,iBAKA04G,IAAA95H,EAAA03H,cAGA,IAAA76I,KAAA0mI,SAAA,iBAAAhmI,EAAA4J,KAIA6Y,EAAAkwH,QAAA6J,GAAAl9I,KAAAumB,QAAA/kB,MAAAugG,GAIA/hG,KAAAqzI,OAAA4J,EAAA7jJ,IAAA2oG,EACA/hG,KAAAy9I,QAAAnzI,GAIAtK,KAAA6mI,aAAAwM,EAAA,gDACAlwH,EAAA63H,QACA+B,EAAA1J,EAAA3wG,SAAA,6BACA1iC,KAAA6mI,aAAAkW,EAAA,KAAA55H,EAAA63H,MAAAC,cACAlT,UAAAgV,EAAA,KAAA55H,EAAA63H,MAAAF,SAGAmC,IACAj9I,KAAA6mI,aAAA9kC,EAAA,iCACAgmC,UAAAhmC,EAAA,gDACA5+E,EAAA63H,QACAgC,EAAAj7C,EAAAr/D,SAAA,6BACA1iC,KAAA6mI,aAAAmW,EAAA,KAAA75H,EAAA63H,MAAAF,QACA/S,UAAAiV,EAAA,KAAA75H,EAAA63H,MAAAC,eAGAj7I,KAAA+nI,UAAAhmC,EAAAnvC,OAAA,gCAEA,EAEA6qF,QAAA,SAAAniJ,GACA,IAAA6hJ,EAAA7hJ,EAAAkiJ,SACAJ,EAAAp9I,KAAAs7I,SAAA5iJ,OAAAsH,KAAAs7I,SAAAhgJ,EAAAgiJ,SAGAt9I,KAAAs7I,SAAAl2F,IAAAplD,KAAAu7I,UAAA72H,MAAA,MACA1kB,KAAAs7I,SAAA6B,EACAn9I,KAAAu7I,SAAA6B,EAEAp9I,KAAAmjB,QAAAmkC,QACAtnD,KAAA09I,SAAAP,EAAAC,EAAA9hJ,IAEA8hJ,EAAA5zI,OACA2zI,EAAAr0I,OACA9I,KAAA29I,gBAAAriJ,IAGA8hJ,EAAAn1G,KAAA,CACA,uBAEAm1G,EAAAnjF,OAAAhyB,KAAA,CACA,wBACA,0BAMAk1G,EAAAzkJ,QAAA0kJ,EAAA1kJ,OACA0kJ,EAAAnjF,OAAAhyB,KAAA,CACAuP,UAAA,EACA,0BAEA2lG,EAAAzkJ,QACAsH,KAAAumB,QAAApM,QAAA,WACA,WAAAjB,SAAA9f,EAAA4G,MAAAioC,KAAA,eACA,IACAA,KAAA,eAGAk1G,EACAl1G,KAAA,uBACAgyB,OACAhyB,KAAA,CACA,uBACA,uBACAuP,SAAA,GAEA,EAEAkmG,SAAA,SAAAP,EAAAC,EAAA9hJ,GACA,IAAAsiJ,EAAA5U,EAAAzhF,EACA/oC,EAAAxe,KACA69I,EAAA,EACAC,EAAAX,EAAAv3I,IAAA,cACAuwI,EAAAgH,EAAAzkJ,UACA0kJ,EAAA1kJ,QAAAykJ,EAAA37I,QAAA47I,EAAA57I,SACA8lD,EAAAtnD,KAAAmjB,QAAAmkC,SAAA,GACAnkC,EAAAgzH,GAAA7uF,EAAA6uF,MAAA7uF,EACAzF,EAAA,WACArjC,EAAAm/H,gBAAAriJ,EACA,EAaA,MAXA,iBAAA6nB,IACAokC,EAAApkC,GAEA,iBAAAA,IACA6lH,EAAA7lH,GAIA6lH,KAAA7lH,EAAA6lH,QAAA1hF,EAAA0hF,OACAzhF,KAAApkC,EAAAokC,UAAAD,EAAAC,SAEA61F,EAAA1kJ,OAGAykJ,EAAAzkJ,QAIAklJ,EAAAT,EAAAr0I,OAAA+O,cACAulI,EAAA91F,QAAAtnD,KAAAo7I,UAAA,CACA7zF,WACAyhF,SACAr2E,KAAA,SAAAqsC,EAAAixC,GACAA,EAAAjxC,IAAAjqF,KAAA81C,MAAAm0C,EACA,SAEAm+C,EACA3zI,OACA89C,QAAAtnD,KAAAq7I,UAAA,CACA9zF,WACAyhF,SACAnnF,WACA8Q,KAAA,SAAAqsC,EAAAixC,GACAA,EAAAjxC,IAAAjqF,KAAA81C,MAAAm0C,GACA,WAAAixC,EAAAv5H,KACA,gBAAAonI,IACAD,GAAA5N,EAAAjxC,KAEA,YAAAxgF,EAAA2E,QAAA43H,cACA9K,EAAAjxC,IAAAjqF,KAAA81C,MAAA+yF,EAAAR,EAAAvlI,cAAAgmI,GACAA,EAAA,EAEA,KA3BAT,EAAA91F,QAAAtnD,KAAAo7I,UAAA7zF,EAAAyhF,EAAAnnF,GAHAs7F,EAAA71F,QAAAtnD,KAAAq7I,UAAA9zF,EAAAyhF,EAAAnnF,EAgCA,EAEA87F,gBAAA,SAAAriJ,GACA,IAAA8hJ,EAAA9hJ,EAAAgiJ,SACArjF,EAAAmjF,EAAAnjF,OAEAj6D,KAAA6mI,aAAAuW,EAAA,+BACAp9I,KAAA6mI,aAAA5sE,EAAA,8BACA8tE,UAAA9tE,EAAA,iCAEAj6D,KAAA0mI,SAAA,gBAAAprI,EACA,IAuBAlC,EAAA6qI,OAAA,WACArnH,QAAA,SACAgpH,eAAA,OACAz8H,MAAA,IACAga,QAAA,CACA63H,MAAA,CACA+C,QAAA,qBAEAzjH,MAAA,MACA0jH,MAAA,KACA75I,SAAA,CACAwnI,GAAA,WACAV,GAAA,aAEA/qG,KAAA,OAGAlD,KAAA,KACA2c,MAAA,KACAskG,OAAA,MAGAzX,QAAA,WACAxmI,KAAAk+I,WAAAl+I,KAAA4L,QAIA5L,KAAAm+I,cAAA,EACAn+I,KAAAo+I,kBAAA,CAAAh6I,EAAA,KAAAC,EAAA,MACArE,KAAA4L,QACA8tC,WACAzR,KAAA,CACA/H,KAAAlgC,KAAAmjB,QAAA+c,KACAsX,SAAA,IAGAx3C,KAAA+nI,UAAA,yCACA/nI,KAAAqmI,IAAA,CAIA,mCAAA3lI,GACAA,EAAA6jC,iBAEAvkC,KAAAq+I,cAAA39I,EACA,EACA,+BAAAA,GACA,IAAA2jC,EAAAjrC,EAAAsH,EAAA2jC,QACAgvG,EAAAj6I,EAAA4G,KAAA9H,SAAA,GAAA+yD,gBACAjrD,KAAAm+I,cAAA95G,EAAAujG,IAAA,sBAAAlvI,SACAsH,KAAAi+I,OAAAv9I,GAGAA,EAAA49I,yBACAt+I,KAAAm+I,cAAA,GAIA95G,EAAAlG,IAAA,YAAAzlC,OACAsH,KAAAmwI,OAAAzvI,IACAV,KAAA4L,QAAA04B,GAAA,WACA+uG,EAAAvjE,QAAA,YAAAp3E,SAGAsH,KAAA4L,QAAAV,QAAA,cAIAlL,KAAAqzI,QAAA,IAAArzI,KAAAqzI,OAAAgH,QAAA,YAAA3hJ,QACAmsB,aAAA7kB,KAAAu+I,QAIA,EACA,2CACA,0CACA/V,WAAA,cACA,oCACA7uF,MAAA,SAAAj5C,EAAA89I,GAIA,IAAArsI,EAAAnS,KAAAqzI,QAAArzI,KAAAy+I,aAAAlkI,QAEAikI,GACAx+I,KAAA25C,MAAAj5C,EAAAyR,EAEA,EACA6qB,KAAA,SAAAt8B,GACAV,KAAAooI,QAAA,YACAhvI,EAAA2I,SACA/B,KAAA4L,QAAA,GACA5L,KAAA9H,SAAA,GAAA+yD,gBAGAjrD,KAAA0+I,YAAAh+I,EAEA,GACA,EACAo8I,QAAA,aAGA98I,KAAA24I,UAGA34I,KAAAqmI,IAAArmI,KAAA9H,SAAA,CACAiyD,MAAA,SAAAzpD,GACAV,KAAA2+I,sBAAAj+I,IACAV,KAAA0+I,YAAAh+I,GAAA,GAIAV,KAAAm+I,cAAA,CACA,GAEA,EAEAE,cAAA,SAAA39I,GAKA,IAAAV,KAAA4+I,iBAKAl+I,EAAAyK,UAAAnL,KAAAo+I,kBAAAh6I,GACA1D,EAAA0K,UAAApL,KAAAo+I,kBAAA/5I,GADA,CAKArE,KAAAo+I,kBAAA,CACAh6I,EAAA1D,EAAAyK,QACA9G,EAAA3D,EAAA0K,SAGA,IAAAyzI,EAAAzlJ,EAAAsH,EAAA2jC,QAAAyrC,QAAA,iBACAzrC,EAAAjrC,EAAAsH,EAAA6nI,eAGAsW,EAAA,KAAAx6G,EAAA,KAKAA,EAAAC,GAAA,sBAMAtkC,KAAA6mI,aAAAxiG,EAAAi2G,WAAA53G,SAAA,oBACA,wBACA1iC,KAAA25C,MAAAj5C,EAAA2jC,IAxBA,CAyBA,EAEAuiG,SAAA,WACA,IAEAkY,EAFA9+I,KAAA4L,QAAAtK,KAAA,iBACAimC,WAAA,sBACA7E,SAAA,yBACAk4G,iBACArzG,WAAA,+BAGAvnC,KAAA4L,QACA27B,WAAA,yBACAjmC,KAAA,YAAAqhC,UACA4E,WAAA,yEAEAqzG,iBACA9xI,OAEAg2I,EAAAp8G,WAAAtgC,MAAA,WACA,IAAA4hI,EAAA5qI,EAAA4G,MACAgkI,EAAA1oI,KAAA,0BACA0oI,EAAAjrI,QAEA,GACA,EAEAkjJ,SAAA,SAAAv7I,GACA,IAAAgS,EAAAunD,EAAA8kF,EAAAC,EACAz6G,GAAA,EAEA,OAAA7jC,EAAA4lD,SACA,KAAAltD,EAAAqqI,GAAAn9E,QAAAszF,QACA55I,KAAAi/I,aAAAv+I,GACA,MACA,KAAAtH,EAAAqqI,GAAAn9E,QAAAqzF,UACA35I,KAAAk/I,SAAAx+I,GACA,MACA,KAAAtH,EAAAqqI,GAAAn9E,QAAAmzF,KACAz5I,KAAAm/I,MAAA,gBAAAz+I,GACA,MACA,KAAAtH,EAAAqqI,GAAAn9E,QAAAgzF,IACAt5I,KAAAm/I,MAAA,cAAAz+I,GACA,MACA,KAAAtH,EAAAqqI,GAAAn9E,QAAA2zF,GACAj6I,KAAA6uE,SAAAnuE,GACA,MACA,KAAAtH,EAAAqqI,GAAAn9E,QAAA+yF,KACAr5I,KAAA4yD,KAAAlyD,GACA,MACA,KAAAtH,EAAAqqI,GAAAn9E,QAAAozF,KACA15I,KAAAo/I,SAAA1+I,GACA,MACA,KAAAtH,EAAAqqI,GAAAn9E,QAAAwzF,MACA95I,KAAAqzI,SAAArzI,KAAAqzI,OAAA/uG,GAAA,uBACAtkC,KAAAmwI,OAAAzvI,GAEA,MACA,KAAAtH,EAAAqqI,GAAAn9E,QAAAizF,MACA,KAAAngJ,EAAAqqI,GAAAn9E,QAAAyzF,MACA/5I,KAAAg8I,UAAAt7I,GACA,MACA,KAAAtH,EAAAqqI,GAAAn9E,QAAAkzF,OACAx5I,KAAAo/I,SAAA1+I,GACA,MACA,QACA6jC,GAAA,EACA01B,EAAAj6D,KAAA4+I,gBAAA,GACAI,GAAA,EAGAD,EAAAr+I,EAAA4lD,SAAA,IAAA5lD,EAAA4lD,SAAA,KACA5lD,EAAA4lD,QAAA,IAAA71C,WAAAkiC,OAAAyiB,aAAA10D,EAAA4lD,SAEAzhC,aAAA7kB,KAAAq/I,aAEAN,IAAA9kF,EACA+kF,GAAA,EAEAD,EAAA9kF,EAAA8kF,EAGArsI,EAAA1S,KAAAs/I,iBAAAP,IACArsI,EAAAssI,IAAA,IAAAtsI,EAAAlR,MAAAxB,KAAAqzI,OAAAzgF,QACA5yD,KAAAqzI,OAAAkM,QAAA,iBACA7sI,GAIAha,SACAqmJ,EAAApsG,OAAAyiB,aAAA10D,EAAA4lD,SACA5zC,EAAA1S,KAAAs/I,iBAAAP,IAGArsI,EAAAha,QACAsH,KAAA25C,MAAAj5C,EAAAgS,GACA1S,KAAA4+I,eAAAG,EACA/+I,KAAAq/I,YAAAr/I,KAAAooI,QAAA,kBACApoI,KAAA4+I,cACA,gBAEA5+I,KAAA4+I,eAIAr6G,GACA7jC,EAAA6jC,gBAEA,EAEAy3G,UAAA,SAAAt7I,GACAV,KAAAqzI,SAAArzI,KAAAqzI,OAAA/uG,GAAA,wBACAtkC,KAAAqzI,OAAA3wG,SAAA,0BAAAhqC,OACAsH,KAAAmwI,OAAAzvI,GAEAV,KAAAi+I,OAAAv9I,GAGA,EAEAi4I,QAAA,WACA,IAAAr+G,EAAAklH,EAAAC,EAAAC,EACAlhI,EAAAxe,KACAiiG,EAAAjiG,KAAAmjB,QAAA63H,MAAA+C,QACAe,EAAA9+I,KAAA4L,QAAAtK,KAAAtB,KAAAmjB,QAAA66H,OAEAh+I,KAAAsnI,aAAA,uBAAAtnI,KAAA4L,QAAAtK,KAAA,YAAA5I,QAGA8mJ,EAAAV,EAAA3kI,OAAA,kBACA3Q,OACAy+B,KAAA,CACA/H,KAAAlgC,KAAAmjB,QAAA+c,KACA,qBACA,0BAEA99B,MAAA,WACA,IAAAu9I,EAAAvmJ,EAAA4G,MACAmS,EAAAwtI,EAAA1lF,OACA2lF,EAAAxmJ,EAAA,UAAAkC,KAAA,4BAEAkjB,EAAAupH,UAAA6X,EAAA,0BAAA39C,GACA9vF,EACA81B,KAAA,wBACAoP,QAAAuoG,GACAD,EAAA13G,KAAA,kBAAA91B,EAAA81B,KAAA,MACA,IAEAjoC,KAAA+nI,UAAAyX,EAAA,mDAGAllH,EADAwkH,EAAA15F,IAAAplD,KAAA4L,SACAtK,KAAAtB,KAAAmjB,QAAAmX,QAGAstG,IAAA,iBAAAxlI,MAAA,WACA,IAAA+P,EAAA/Y,EAAA4G,MACAwe,EAAAqhI,WAAA1tI,IACAqM,EAAAupH,UAAA51H,EAAA,sCAEA,IAIAutI,GADAD,EAAAnlH,EAAAstG,IAAA,oCACAllG,WACAklG,IAAA,YACAluF,WACAzR,KAAA,CACAuP,UAAA,EACAtX,KAAAlgC,KAAA8/I,cAEA9/I,KAAA+nI,UAAA0X,EAAA,gBACA1X,UAAA2X,EAAA,wBAGAplH,EAAAngB,OAAA,sBAAA8tB,KAAA,wBAGAjoC,KAAAqzI,SAAAj6I,EAAA2I,SAAA/B,KAAA4L,QAAA,GAAA5L,KAAAqzI,OAAA,KACArzI,KAAAg9B,MAEA,EAEA8iH,UAAA,WACA,OACAH,KAAA,WACAI,QAAA,UACA//I,KAAAmjB,QAAA+c,KACA,EAEA+mG,WAAA,SAAAr2H,EAAApE,GACA,aAAAoE,EAAA,CACA,IAAAoqI,EAAAh7I,KAAA4L,QAAAtK,KAAA,iBACAtB,KAAA6mI,aAAAmU,EAAA,KAAAh7I,KAAAmjB,QAAA63H,MAAA+C,SACAhW,UAAAiT,EAAA,KAAAxuI,EAAAuxI,QACA,CACA/9I,KAAA2/E,OAAA/uE,EAAApE,EACA,EAEAi6H,mBAAA,SAAAj6H,GACAxM,KAAA2/E,OAAAnzE,GAEAxM,KAAA4L,QAAAq8B,KAAA,gBAAA0K,OAAAnmC,IACAxM,KAAAsnI,aAAA,2BAAA96H,EACA,EAEAmtC,MAAA,SAAAj5C,EAAAyR,GACA,IAAA6tI,EAAA5qG,EAAA6qG,EACAjgJ,KAAAg9B,KAAAt8B,KAAA,UAAAA,EAAAgF,MAEA1F,KAAAkgJ,gBAAA/tI,GAEAnS,KAAAqzI,OAAAlhI,EAAAoI,QAEA66B,EAAAp1C,KAAAqzI,OAAA3wG,SAAA,yBACA1iC,KAAA+nI,UAAA3yF,EAAA,wBAIAp1C,KAAAmjB,QAAA+c,MACAlgC,KAAA4L,QAAAq8B,KAAA,wBAAAmN,EAAAnN,KAAA,OAIAg4G,EAAAjgJ,KAAAqzI,OACAxtI,SACAiqE,QAAA,iBACAptC,SAAA,yBACA1iC,KAAA+nI,UAAAkY,EAAA,wBAEAv/I,GAAA,YAAAA,EAAAgF,KACA1F,KAAAmgJ,SAEAngJ,KAAAu+I,MAAAv+I,KAAAooI,QAAA,WACApoI,KAAAmgJ,QACA,GAAAngJ,KAAAmJ,QAGA62I,EAAA7tI,EAAAuwB,SAAA,aACAhqC,QAAAgI,GAAA,SAAAvG,KAAAuG,EAAAgF,OACA1F,KAAAogJ,cAAAJ,GAEAhgJ,KAAAk+I,WAAA/rI,EAAAtM,SAEA7F,KAAA0mI,SAAA,QAAAhmI,EAAA,CAAAyR,QACA,EAEA+tI,gBAAA,SAAA/tI,GACA,IAAAy/H,EAAAvkI,EAAAgvC,EAAAgkG,EAAAC,EAAAC,EACAvgJ,KAAAwgJ,eACA5O,EAAAnyH,WAAArmB,EAAAwM,IAAA5F,KAAAk+I,WAAA,yBACA7wI,EAAAoS,WAAArmB,EAAAwM,IAAA5F,KAAAk+I,WAAA,qBACA7hG,EAAAlqC,EAAAkqC,SAAA31C,IAAA1G,KAAAk+I,WAAA7hG,SAAA31C,IAAAkrI,EAAAvkI,EACAgzI,EAAArgJ,KAAAk+I,WAAApwI,YACAwyI,EAAAtgJ,KAAAk+I,WAAA/vI,SACAoyI,EAAApuI,EAAA0F,cAEAwkC,EAAA,EACAr8C,KAAAk+I,WAAApwI,UAAAuyI,EAAAhkG,GACAA,EAAAkkG,EAAAD,GACAtgJ,KAAAk+I,WAAApwI,UAAAuyI,EAAAhkG,EAAAikG,EAAAC,GAGA,EAEAvjH,KAAA,SAAAt8B,EAAA+/I,GACAA,GACA57H,aAAA7kB,KAAAu+I,OAGAv+I,KAAAqzI,SAIArzI,KAAA6mI,aAAA7mI,KAAAqzI,OAAA3wG,SAAA,yBACA,wBAEA1iC,KAAA0mI,SAAA,OAAAhmI,EAAA,CAAAyR,KAAAnS,KAAAqzI,SACArzI,KAAAqzI,OAAA,KACA,EAEA+M,cAAA,SAAArC,GACAl5H,aAAA7kB,KAAAu+I,OAIA,SAAAR,EAAA91G,KAAA,iBAIAjoC,KAAAu+I,MAAAv+I,KAAAooI,QAAA,WACApoI,KAAAmgJ,SACAngJ,KAAA0gJ,MAAA3C,EACA,GAAA/9I,KAAAmJ,OACA,EAEAu3I,MAAA,SAAA3C,GACA,IAAA55I,EAAA/K,EAAAuG,OAAA,CACA6qI,GAAAxqI,KAAAqzI,QACArzI,KAAAmjB,QAAAhf,UAEA0gB,aAAA7kB,KAAAu+I,OACAv+I,KAAA4L,QAAAtK,KAAA,YAAAsmI,IAAAmW,EAAA1D,QAAA,aACA7wI,OACAy+B,KAAA,sBAEA81G,EACAj1I,OACAy+B,WAAA,eACAU,KAAA,wBACA9jC,WACA,EAEAu6I,YAAA,SAAAh+I,EAAA6G,GACAsd,aAAA7kB,KAAAu+I,OACAv+I,KAAAu+I,MAAAv+I,KAAAooI,QAAA,WAGA,IAAAuY,EAAAp5I,EAAAvH,KAAA4L,QACAxS,EAAAsH,KAAA2jC,QAAAyrC,QAAA9vE,KAAA4L,QAAAtK,KAAA,aAIAq/I,EAAAjoJ,SACAioJ,EAAA3gJ,KAAA4L,SAGA5L,KAAAmgJ,OAAAQ,GAEA3gJ,KAAAg9B,KAAAt8B,GAGAV,KAAA6mI,aAAA8Z,EAAAr/I,KAAA,4CAEAtB,KAAAk+I,WAAAyC,CACA,GAAAp5I,EAAA,EAAAvH,KAAAmJ,MACA,EAIAg3I,OAAA,SAAAS,GACAA,IACAA,EAAA5gJ,KAAAqzI,OAAArzI,KAAAqzI,OAAAxtI,SAAA7F,KAAA4L,SAGAg1I,EAAAt/I,KAAA,YACAkI,OACAy+B,KAAA,sBACAA,KAAA,wBACA,EAEA02G,sBAAA,SAAAj+I,GACA,OAAAtH,EAAAsH,EAAA2jC,QAAAyrC,QAAA,YAAAp3E,MACA,EAEAmnJ,WAAA,SAAA1tI,GAGA,6BAAAhY,KAAAgY,EAAA0oB,OACA,EAEAukH,SAAA,SAAA1+I,GACA,IAAAmgJ,EAAA7gJ,KAAAqzI,QACArzI,KAAAqzI,OAAAxtI,SAAAiqE,QAAA,gBAAA9vE,KAAA4L,SACAi1I,KAAAnoJ,SACAsH,KAAAmgJ,SACAngJ,KAAA25C,MAAAj5C,EAAAmgJ,GAEA,EAEA1Q,OAAA,SAAAzvI,GACA,IAAAmgJ,EAAA7gJ,KAAAqzI,QAAArzI,KAAAy+I,WAAAz+I,KAAAqzI,OAAA3wG,SAAA,aAAAnoB,QAEAsmI,KAAAnoJ,SACAsH,KAAA0gJ,MAAAG,EAAAh7I,UAGA7F,KAAAooI,QAAA,WACApoI,KAAA25C,MAAAj5C,EAAAmgJ,EACA,IAEA,EAEAjuF,KAAA,SAAAlyD,GACAV,KAAAm/I,MAAA,eAAAz+I,EACA,EAEAmuE,SAAA,SAAAnuE,GACAV,KAAAm/I,MAAA,cAAAz+I,EACA,EAEAogJ,YAAA,WACA,OAAA9gJ,KAAAqzI,SAAArzI,KAAAqzI,OAAA0N,QAAA,iBAAAroJ,MACA,EAEAsoJ,WAAA,WACA,OAAAhhJ,KAAAqzI,SAAArzI,KAAAqzI,OAAAkM,QAAA,iBAAA7mJ,MACA,EAEA+lJ,WAAA,SAAAkB,GACA,OAAAA,GAAA3/I,KAAA4L,SACAtK,KAAAtB,KAAAmjB,QAAAmX,OACAngB,OAAA,gBACA,EAEAglI,MAAA,SAAAnsE,EAAA74D,EAAAzZ,GACA,IAAAkyD,EACA5yD,KAAAqzI,SAEAzgF,EADA,UAAAogB,GAAA,SAAAA,EACAhzE,KAAAqzI,OACA,UAAArgE,EAAA,sCACA14D,OAEAta,KAAAqzI,OACArgE,EAAA,wBACAz4D,SAGAq4C,KAAAl6D,QAAAsH,KAAAqzI,SACAzgF,EAAA5yD,KAAAy+I,WAAAz+I,KAAAk+I,YAAA/jI,MAGAna,KAAA25C,MAAAj5C,EAAAkyD,EACA,EAEAssF,SAAA,SAAAx+I,GACA,IAAAyR,EAAAg8F,EAAAhgG,EAEAnO,KAAAqzI,OAIArzI,KAAAghJ,eAGAhhJ,KAAAwgJ,cACAryC,EAAAnuG,KAAAqzI,OAAAh3F,SAAA31C,IACAyH,EAAAnO,KAAA4L,QAAAgN,cAGA,IAAAxf,EAAAgmB,GAAAgW,OAAAt8B,QAAA,UACAqV,GAAAnO,KAAA4L,QAAA,GAAA83B,aAAA1jC,KAAA4L,QAAAiM,eAGA7X,KAAAqzI,OAAAkM,QAAA,iBAAAn9I,MAAA,WAEA,OADA+P,EAAA/Y,EAAA4G,OACAq8C,SAAA31C,IAAAynG,EAAAhgG,EAAA,CACA,IAEAnO,KAAA25C,MAAAj5C,EAAAyR,IAEAnS,KAAA25C,MAAAj5C,EAAAV,KAAAy+I,WAAAz+I,KAAAk+I,YACAl+I,KAAAqzI,OAAA,oBAvBArzI,KAAA4yD,KAAAlyD,EAyBA,EAEAu+I,aAAA,SAAAv+I,GACA,IAAAyR,EAAAg8F,EAAAhgG,EACAnO,KAAAqzI,OAIArzI,KAAA8gJ,gBAGA9gJ,KAAAwgJ,cACAryC,EAAAnuG,KAAAqzI,OAAAh3F,SAAA31C,IACAyH,EAAAnO,KAAA4L,QAAAgN,cAGA,IAAAxf,EAAAgmB,GAAAgW,OAAAt8B,QAAA,UACAqV,GAAAnO,KAAA4L,QAAA,GAAA83B,aAAA1jC,KAAA4L,QAAAiM,eAGA7X,KAAAqzI,OAAA0N,QAAA,iBAAA3+I,MAAA,WAEA,OADA+P,EAAA/Y,EAAA4G,OACAq8C,SAAA31C,IAAAynG,EAAAhgG,EAAA,CACA,IAEAnO,KAAA25C,MAAAj5C,EAAAyR,IAEAnS,KAAA25C,MAAAj5C,EAAAV,KAAAy+I,WAAAz+I,KAAAk+I,YAAA3jI,UAtBAva,KAAA4yD,KAAAlyD,EAwBA,EAEA8/I,WAAA,WACA,OAAAxgJ,KAAA4L,QAAAiM,cAAA7X,KAAA4L,QAAA8K,KAAA,eACA,EAEAunI,OAAA,SAAAv9I,GAIAV,KAAAqzI,OAAArzI,KAAAqzI,QAAAj6I,EAAAsH,EAAA2jC,QAAAyrC,QAAA,iBACA,IAAA2zD,EAAA,CAAAtxH,KAAAnS,KAAAqzI,QACArzI,KAAAqzI,OAAAl1G,IAAA,YAAAzlC,QACAsH,KAAA0+I,YAAAh+I,GAAA,GAEAV,KAAA0mI,SAAA,SAAAhmI,EAAA+iI,EACA,EAEA6b,iBAAA,SAAAP,GACA,IAAAkC,EAAAlC,EAAAl/H,QAAA,sCACA2hG,EAAA,IAAAjvG,OAAA,IAAA0uI,EAAA,KAEA,OAAAjhJ,KAAAk+I,WACA58I,KAAAtB,KAAAmjB,QAAAmX,OAGAngB,OAAA,iBACAA,QAAA,WACA,OAAAqnG,EAAArnH,KACAw4C,OAAA5yC,UAAAsiB,KAAA2C,KACA5rB,EAAA4G,MAAA0iC,SAAA,yBAAA7H,QACA,GACA;;;;;;;;;AAuBAzhC,EAAA6qI,OAAA,mBACArnH,QAAA,SACAgpH,eAAA,UACAziH,QAAA,CACAtc,SAAA,KACAq6I,WAAA,EACA/3I,MAAA,IACAg4I,UAAA,EACAh9I,SAAA,CACAwnI,GAAA,WACAV,GAAA,cACAD,UAAA,QAEAr/H,OAAA,KAGAy1I,OAAA,KACAryH,MAAA,KACA4qB,MAAA,KACAy8B,KAAA,KACAr0D,SAAA,KACAhoB,OAAA,KACAkkJ,OAAA,MAGAoD,aAAA,EACAC,QAAA,EACAC,gBAAA,KAEA/a,QAAA,WASA,IAAAgb,EAAAC,EAAAC,EACAv6D,EAAAnnF,KAAA4L,QAAA,GAAAu7E,SAAA7sF,cACAqnJ,EAAA,aAAAx6D,EACAy6D,EAAA,UAAAz6D,EAKAnnF,KAAA6hJ,YAAAF,IACAC,GAAA,SAAA5hJ,KAAA4L,QAAA8K,KAAA,mBAEA1W,KAAA8hJ,YAAA9hJ,KAAA4L,QAAA+1I,GAAAC,EAAA,cACA5hJ,KAAA+hJ,WAAA,EAEA/hJ,KAAA+nI,UAAA,yBACA/nI,KAAA4L,QAAAq8B,KAAA,sBAEAjoC,KAAAqmI,IAAArmI,KAAA4L,QAAA,CACAkxI,QAAA,SAAAp8I,GACA,GAAAV,KAAA4L,QAAA8K,KAAA,YAIA,OAHA8qI,GAAA,EACAE,GAAA,OACAD,GAAA,GAIAD,GAAA,EACAE,GAAA,EACAD,GAAA,EACA,IAAAn7F,EAAAltD,EAAAqqI,GAAAn9E,QACA,OAAA5lD,EAAA4lD,SACA,KAAAA,EAAAszF,QACA4H,GAAA,EACAxhJ,KAAAm/I,MAAA,eAAAz+I,GACA,MACA,KAAA4lD,EAAAqzF,UACA6H,GAAA,EACAxhJ,KAAAm/I,MAAA,WAAAz+I,GACA,MACA,KAAA4lD,EAAA2zF,GACAuH,GAAA,EACAxhJ,KAAAgiJ,UAAA,WAAAthJ,GACA,MACA,KAAA4lD,EAAA+yF,KACAmI,GAAA,EACAxhJ,KAAAgiJ,UAAA,OAAAthJ,GACA,MACA,KAAA4lD,EAAAizF,MAGAv5I,KAAA2/I,KAAAtM,SAIAmO,GAAA,EACA9gJ,EAAA6jC,iBACAvkC,KAAA2/I,KAAA1B,OAAAv9I,IAEA,MACA,KAAA4lD,EAAA0zF,IACAh6I,KAAA2/I,KAAAtM,QACArzI,KAAA2/I,KAAA1B,OAAAv9I,GAEA,MACA,KAAA4lD,EAAAkzF,OACAx5I,KAAA2/I,KAAA/zI,QAAA04B,GAAA,cACAtkC,KAAA6hJ,aACA7hJ,KAAAy+D,OAAAz+D,KAAAiiJ,MAEAjiJ,KAAA+uB,MAAAruB,GAIAA,EAAA6jC,kBAEA,MACA,QACAk9G,GAAA,EAGAzhJ,KAAAkiJ,eAAAxhJ,GAGA,EACAyhJ,SAAA,SAAAzhJ,GACA,GAAA8gJ,EAKA,OAJAA,GAAA,OACAxhJ,KAAA6hJ,cAAA7hJ,KAAA2/I,KAAA/zI,QAAA04B,GAAA,aACA5jC,EAAA6jC,kBAIA,IAAAk9G,EAAA,CAKA,IAAAn7F,EAAAltD,EAAAqqI,GAAAn9E,QACA,OAAA5lD,EAAA4lD,SACA,KAAAA,EAAAszF,QACA55I,KAAAm/I,MAAA,eAAAz+I,GACA,MACA,KAAA4lD,EAAAqzF,UACA35I,KAAAm/I,MAAA,WAAAz+I,GACA,MACA,KAAA4lD,EAAA2zF,GACAj6I,KAAAgiJ,UAAA,WAAAthJ,GACA,MACA,KAAA4lD,EAAA+yF,KACAr5I,KAAAgiJ,UAAA,OAAAthJ,GAfA,CAkBA,EACAqwC,MAAA,SAAArwC,GACA,GAAAghJ,EAGA,OAFAA,GAAA,OACAhhJ,EAAA6jC,iBAGAvkC,KAAAkiJ,eAAAxhJ,EACA,EACAi5C,MAAA,WACA35C,KAAAq1C,aAAA,KACAr1C,KAAA6uE,SAAA7uE,KAAAy+D,QACA,EACAzhC,KAAA,SAAAt8B,GACAmkB,aAAA7kB,KAAAoiJ,WACApiJ,KAAA+uB,MAAAruB,GACAV,KAAAqiJ,QAAA3hJ,EACA,IAGAV,KAAAsiJ,cACAtiJ,KAAA2/I,KAAAvmJ,EAAA,QACAyN,SAAA7G,KAAAuiJ,aACA5C,KAAA,CAGAz/G,KAAA,OAEA12B,OACAm2I,KAAA,YAEA3/I,KAAA+nI,UAAA/nI,KAAA2/I,KAAA/zI,QAAA,8BACA5L,KAAAqmI,IAAArmI,KAAA2/I,KAAA/zI,QAAA,CACA42I,UAAA,SAAA9hJ,GAGAA,EAAA6jC,gBACA,EACAk+G,UAAA,SAAA/hJ,EAAA+iI,GACA,IAAAzwE,EAAA7gD,EAIA,GAAAnS,KAAA+hJ,YACA/hJ,KAAA+hJ,WAAA,EACArhJ,EAAA85B,eAAA,SAAArgC,KAAAuG,EAAA85B,cAAA90B,OAOA,OANA1F,KAAA2/I,KAAA3iH,YAEAh9B,KAAA9H,SAAAmR,IAAA,wBACAjQ,EAAAsH,EAAA2jC,QAAAn5B,QAAAxK,EAAA85B,cACA,IAMAroB,EAAAsxH,EAAAtxH,KAAA7W,KAAA,yBACA,IAAA0E,KAAA0mI,SAAA,QAAAhmI,EAAA,CAAAyR,UAGAzR,EAAA85B,eAAA,OAAArgC,KAAAuG,EAAA85B,cAAA90B,OACA1F,KAAAy+D,OAAAtsD,EAAA3F,QAKAwmD,EAAAywE,EAAAtxH,KAAA81B,KAAA,eAAA91B,EAAA3F,QACAmmC,OAAA5yC,UAAAsiB,KAAA2C,KAAAguC,GAAAt6D,SACAmsB,aAAA7kB,KAAAuhJ,iBACAvhJ,KAAAuhJ,gBAAAvhJ,KAAAooI,QAAA,WACApoI,KAAA0iJ,WAAA79G,KAAAzrC,EAAA,SAAAyhC,KAAAm4B,GACA,QAEA,EACA2vF,WAAA,SAAAjiJ,EAAA+iI,GACA,IAAAtxH,EAAAsxH,EAAAtxH,KAAA7W,KAAA,wBACAuzE,EAAA7uE,KAAA6uE,SAGA7uE,KAAA4L,QAAA,KAAA5L,KAAA9H,SAAA,GAAA+yD,gBACAjrD,KAAA4L,QAAAV,QAAA,SACAlL,KAAA6uE,aAGA,IAAA7uE,KAAA0mI,SAAA,SAAAhmI,EAAA,CAAAyR,UACAnS,KAAAy+D,OAAAtsD,EAAA3F,OAKAxM,KAAAiiJ,KAAAjiJ,KAAAy+D,SAEAz+D,KAAA+uB,MAAAruB,GACAV,KAAAq1C,aAAAljC,CACA,IAGAnS,KAAA0iJ,WAAAtpJ,EAAA,SACA8mC,KAAA,SACA,wBACA,8BAEAr5B,SAAA7G,KAAA9H,SAAA,GAAAi4B,MAEAnwB,KAAA+nI,UAAA/nI,KAAA0iJ,WAAA,oCAKA1iJ,KAAAqmI,IAAArmI,KAAAnG,OAAA,CACA+oJ,aAAA,WACA5iJ,KAAA4L,QAAA27B,WAAA,eACA,GAEA,EAEAq/F,SAAA,WACA/hH,aAAA7kB,KAAAoiJ,WACApiJ,KAAA4L,QAAA27B,WAAA,gBACAvnC,KAAA2/I,KAAA/zI,QAAA7S,SACAiH,KAAA0iJ,WAAA3pJ,QACA,EAEAkuI,WAAA,SAAAr2H,EAAApE,GACAxM,KAAA2/E,OAAA/uE,EAAApE,GACA,WAAAoE,GACA5Q,KAAAsiJ,cAEA,aAAA1xI,GACA5Q,KAAA2/I,KAAA/zI,QAAA/E,SAAA7G,KAAAuiJ,aAEA,aAAA3xI,GAAApE,GAAAxM,KAAA4qB,KACA5qB,KAAA4qB,IAAAlC,OAEA,EAEAm6H,uBAAA,SAAAniJ,GACA,IAAAoiJ,EAAA9iJ,KAAA2/I,KAAA/zI,QAAA,GAEA,OAAAlL,EAAA2jC,SAAArkC,KAAA4L,QAAA,IACAlL,EAAA2jC,SAAAy+G,GACA1pJ,EAAA2I,SAAA+gJ,EAAApiJ,EAAA2jC,OACA,EAEA0+G,qBAAA,SAAAriJ,GACAV,KAAA6iJ,uBAAAniJ,IACAV,KAAA+uB,OAEA,EAEAwzH,UAAA,WACA,IAAA32I,EAAA5L,KAAAmjB,QAAAtc,SAgBA,OAdA+E,IACAA,IAAAwpB,QAAAxpB,EAAA4lC,SACAp4C,EAAAwS,GACA5L,KAAA9H,SAAAoJ,KAAAsK,GAAAmvC,GAAA,IAGAnvC,KAAA,KACAA,EAAA5L,KAAA4L,QAAAkkE,QAAA,sBAGAlkE,EAAAlT,SACAkT,EAAA5L,KAAA9H,SAAA,GAAAi4B,MAGAvkB,CACA,EAEA02I,YAAA,WACA,IAAAU,EAAAhvI,EACAwK,EAAAxe,KACAiS,MAAAiS,QAAAlkB,KAAAmjB,QAAAxX,SACAq3I,EAAAhjJ,KAAAmjB,QAAAxX,OACA3L,KAAA2L,OAAA,SAAAs3I,EAAAlhI,GACAA,EAAA3oB,EAAAqqI,GAAAyf,aAAA/oI,OAAA6oI,EAAAC,EAAAhB,MACA,GACA,iBAAAjiJ,KAAAmjB,QAAAxX,QACAqI,EAAAhU,KAAAmjB,QAAAxX,OACA3L,KAAA2L,OAAA,SAAAs3I,EAAAlhI,GACAvD,EAAAoM,KACApM,EAAAoM,IAAAlC,QAEAlK,EAAAoM,IAAAxxB,EAAAqtB,KAAA,CACAzS,MACA1Y,KAAA2nJ,EACAt4H,SAAA,OACAtE,QAAA,SAAA/qB,GACAymB,EAAAzmB,EACA,EACAgN,MAAA,WACAyZ,EAAA,GACA,GAEA,GAEA/hB,KAAA2L,OAAA3L,KAAAmjB,QAAAxX,MAEA,EAEAu2I,eAAA,SAAAxhJ,GACAmkB,aAAA7kB,KAAAoiJ,WACApiJ,KAAAoiJ,UAAApiJ,KAAAooI,QAAA,WAGA,IAAA+a,EAAAnjJ,KAAAiiJ,OAAAjiJ,KAAAy+D,SACA2kF,EAAApjJ,KAAA2/I,KAAA/zI,QAAA04B,GAAA,YACA++G,EAAA3iJ,EAAAw7I,QAAAx7I,EAAAy7I,SAAAz7I,EAAA4iJ,SAAA5iJ,EAAA6iJ,SAEAJ,QAAAC,GAAAC,KACArjJ,KAAAq1C,aAAA,KACAr1C,KAAAjG,OAAA,KAAA2G,GAEA,GAAAV,KAAAmjB,QAAAha,MACA,EAEApP,OAAA,SAAAyS,EAAA9L,GAMA,OALA8L,EAAA,MAAAA,IAAAxM,KAAAy+D,SAGAz+D,KAAAiiJ,KAAAjiJ,KAAAy+D,SAEAjyD,EAAA9T,OAAAsH,KAAAmjB,QAAAg+H,UACAnhJ,KAAA+uB,MAAAruB,IAGA,IAAAV,KAAA0mI,SAAA,SAAAhmI,GAIAV,KAAAwjJ,QAAAh3I,QAJA,CAKA,EAEAg3I,QAAA,SAAAh3I,GACAxM,KAAAshJ,UACAthJ,KAAA+nI,UAAA,2BACA/nI,KAAAyjJ,cAAA,EAEAzjJ,KAAA2L,OAAA,CAAAs2I,KAAAz1I,GAAAxM,KAAA0jJ,YACA,EAEAA,UAAA,WACA,IAAAliJ,IAAAxB,KAAAqhJ,aAEA,gBAAA7rE,GACAh0E,IAAAxB,KAAAqhJ,cACArhJ,KAAA2jJ,WAAAnuE,GAGAx1E,KAAAshJ,UACAthJ,KAAAshJ,SACAthJ,KAAA6mI,aAAA,0BAEA,EAAAtkI,KAAAvC,KACA,EAEA2jJ,WAAA,SAAAnuE,GACAA,IACAA,EAAAx1E,KAAA4jJ,WAAApuE,IAEAx1E,KAAA0mI,SAAA,iBAAAlxD,aACAx1E,KAAAmjB,QAAA2iH,UAAAtwD,KAAA98E,SAAAsH,KAAAyjJ,cACAzjJ,KAAA6jJ,SAAAruE,GACAx1E,KAAA0mI,SAAA,SAIA1mI,KAAAmgJ,QAEA,EAEApxH,MAAA,SAAAruB,GACAV,KAAAyjJ,cAAA,EACAzjJ,KAAAmgJ,OAAAz/I,EACA,EAEAy/I,OAAA,SAAAz/I,GAGAV,KAAA8nI,KAAA9nI,KAAA9H,SAAA,aAEA8H,KAAA2/I,KAAA/zI,QAAA04B,GAAA,cACAtkC,KAAA2/I,KAAA/zI,QAAApC,OACAxJ,KAAA2/I,KAAA3iH,OACAh9B,KAAA+hJ,WAAA,EACA/hJ,KAAA0mI,SAAA,QAAAhmI,GAEA,EAEA2hJ,QAAA,SAAA3hJ,GACAV,KAAA6uE,WAAA7uE,KAAAy+D,UACAz+D,KAAA0mI,SAAA,SAAAhmI,EAAA,CAAAyR,KAAAnS,KAAAq1C,cAEA,EAEAuuG,WAAA,SAAAtpH,GAGA,OAAAA,EAAA5hC,QAAA4hC,EAAA,GAAA04B,OAAA14B,EAAA,GAAA9tB,MACA8tB,EAEAlhC,EAAA8N,IAAAozB,GAAA,SAAAnoB,GACA,uBAAAA,EACA,CACA6gD,MAAA7gD,EACA3F,MAAA2F,GAGA/Y,EAAAuG,OAAA,GAAAwS,EAAA,CACA6gD,MAAA7gD,EAAA6gD,OAAA7gD,EAAA3F,MACAA,MAAA2F,EAAA3F,OAAA2F,EAAA6gD,OAEA,GACA,EAEA6wF,SAAA,SAAAvpH,GACA,IAAAwpH,EAAA9jJ,KAAA2/I,KAAA/zI,QAAA6uC,QACAz6C,KAAA+jJ,YAAAD,EAAAxpH,GACAt6B,KAAA+hJ,WAAA,EACA/hJ,KAAA2/I,KAAAhH,UAGAmL,EAAAh7I,OACA9I,KAAAgkJ,cACAF,EAAA3/I,SAAA/K,EAAAuG,OAAA,CACA6qI,GAAAxqI,KAAA4L,SACA5L,KAAAmjB,QAAAhf,WAEAnE,KAAAmjB,QAAA+9H,WACAlhJ,KAAA2/I,KAAA/sF,OAIA5yD,KAAAqmI,IAAArmI,KAAA9H,SAAA,CACAsqJ,UAAA,wBAEA,EAEAwB,YAAA,WACA,IAAAF,EAAA9jJ,KAAA2/I,KAAA/zI,QACAk4I,EAAAlsI,WAAA7C,KAAAoiB,IAIA2sH,EAAA92I,MAAA,IAAA4K,aAAA,EACA5X,KAAA4L,QAAAgM,cAEA,EAEAmsI,YAAA,SAAAD,EAAAxpH,GACA,IAAA9b,EAAAxe,KACA5G,EAAAgJ,KAAAk4B,GAAA,SAAA94B,EAAA2Q,GACAqM,EAAAylI,gBAAAH,EAAA3xI,EACA,GACA,EAEA8xI,gBAAA,SAAAH,EAAA3xI,GACA,OAAAnS,KAAAkkJ,YAAAJ,EAAA3xI,GAAA7W,KAAA,uBAAA6W,EACA,EAEA+xI,YAAA,SAAAJ,EAAA3xI,GACA,OAAA/Y,EAAA,QACAyyC,OAAAzyC,EAAA,SAAAyhC,KAAA1oB,EAAA6gD,QACAnsD,SAAAi9I,EACA,EAEA3E,MAAA,SAAAnsE,EAAAtyE,GACA,GAAAV,KAAA2/I,KAAA/zI,QAAA04B,GAAA,YAIA,OAAAtkC,KAAA2/I,KAAAmB,eAAA,YAAA3mJ,KAAA64E,IACAhzE,KAAA2/I,KAAAqB,cAAA,QAAA7mJ,KAAA64E,IAEAhzE,KAAA6hJ,aACA7hJ,KAAAy+D,OAAAz+D,KAAAiiJ,WAGAjiJ,KAAA2/I,KAAA3iH,aAGAh9B,KAAA2/I,KAAA3sE,GAAAtyE,GAbAV,KAAAjG,OAAA,KAAA2G,EAcA,EAEAujI,OAAA,WACA,OAAAjkI,KAAA2/I,KAAA/zI,OACA,EAEA6yD,OAAA,WACA,OAAAz+D,KAAA8hJ,YAAA7gJ,MAAAjB,KAAA4L,QAAA1K,UACA,EAEA8gJ,UAAA,SAAAmC,EAAAzjJ,GACAV,KAAA6hJ,cAAA7hJ,KAAA2/I,KAAA/zI,QAAA04B,GAAA,cACAtkC,KAAAm/I,MAAAgF,EAAAzjJ,GAGAA,EAAA6jC,iBAEA,IAGAnrC,EAAAuG,OAAAvG,EAAAqqI,GAAAyf,aAAA,CACAkB,YAAA,SAAA53I,GACA,OAAAA,EAAAqT,QAAA,qCACA,EACA1F,OAAA,SAAA6oI,EAAAf,GACA,IAAAoC,EAAA,IAAA9xI,OAAAnZ,EAAAqqI,GAAAyf,aAAAkB,YAAAnC,GAAA,KACA,OAAA7oJ,EAAAkrJ,KAAAtB,GAAA,SAAAx2I,GACA,OAAA63I,EAAAlqJ,KAAAqS,EAAAwmD,OAAAxmD,WACA,GACA,IAMApT,EAAA6qI,OAAA,kBAAA7qI,EAAAqqI,GAAAyf,aAAA,CACA//H,QAAA,CACAohI,SAAA,CACAC,UAAA,qBACArsH,QAAA,SAAAuoC,GACA,OAAAA,KAAA,+BACA,qDACA,IAIAijF,WAAA,SAAAnuE,GACA,IAAA72D,EACA3e,KAAA4kI,YAAA1jI,WACAlB,KAAAmjB,QAAA2iH,UAAA9lI,KAAAyjJ,eAIA9kI,EADA62D,KAAA98E,OACAsH,KAAAmjB,QAAAohI,SAAApsH,QAAAq9C,EAAA98E,QAEAsH,KAAAmjB,QAAAohI,SAAAC,UAEA3/H,aAAA7kB,KAAAuhJ,iBACAvhJ,KAAAuhJ,gBAAAvhJ,KAAAooI,QAAA,WACApoI,KAAA0iJ,WAAA79G,KAAAzrC,EAAA,SAAAyhC,KAAAlc,GACA,QACA,IAGAvlB,EAAAqqI,GAAAyf;;;;;;;;GAAA,IAsBAuB,EAAA,0BAEArrJ,EAAA6qI,OAAA,mBACArnH,QAAA,SACAgpH,eAAA,QACAziH,QAAA,CACA6vD,UAAA,aACA8yD,SAAA,KACA4e,aAAA,EACApqH,MAAA,CACAqqH,OAAA,uEACAC,kBAAA,yBACAC,cAAA,8CACAC,WAAA,SACAC,QAAA,sBAIAve,QAAA,WACAxmI,KAAAglJ,UACA,EAGAA,SAAA,WACAhlJ,KAAA4L,QAAAq8B,KAAA,kBACAjoC,KAAA24I,SACA,EAEA/R,SAAA,WACA5mI,KAAAilJ,iBAAA,WACAjlJ,KAAAklJ,aAAApe,WAAA,wBACA9mI,KAAA4L,QAAA27B,WAAA,QACAvnC,KAAAmjB,QAAAmX,MAAAsqH,mBACA5kJ,KAAA4L,QACAtK,KAAAtB,KAAAmjB,QAAAmX,MAAAsqH,mBACAtjJ,KAAA,mCACAw6I,WAAAqJ,QAEA,EAEAC,aAAA,WACA,IAAA5mI,EAAAxe,KACAklJ,EAAA,GAGA9rJ,EAAAgJ,KAAApC,KAAAmjB,QAAAmX,OAAA,SAAA2pG,EAAA39H,GACA,IAAA4zI,EACA/2H,EAAA,GAGA,GAAA7c,EAIA,4BAAA29H,IACAiW,EAAA17H,EAAA5S,QAAAtK,KAAAgF,IACAlE,MAAA,WACA,IAAAwJ,EAAAxS,EAAA4G,MAEA4L,EAAA82B,SAAA,mCAAAhqC,QAGAkT,EAAAkwI,WACAuJ,QAAA,uDACA,IACA7mI,EAAAupH,UAAAmS,EAAA,0DACAgL,IAAAx9G,OAAAwyG,EAAA7hJ,cAKAe,EAAAgmB,GAAA6kH,KAOA9gH,EADA3E,EAAA,IAAAylH,EAAA,WACAzlH,EAAA,IAAAylH,EAAA,qBAEA,CAAA4B,QAAA,IAIArnH,EAAA5S,QACAtK,KAAAgF,GACAlE,MAAA,WACA,IAAAwJ,EAAAxS,EAAA4G,MACAT,EAAAqM,EAAAq4H,GAAA,YAIAqhB,EAAAlsJ,EAAA6qI,OAAAtkI,OAAA,GAAAwjB,GAIA,cAAA8gH,IAAAr4H,EAAA/F,OAAA,eAAAnN,OAAA,CAKA6G,IACAA,EAAAqM,EAAAq4H,QAAA,aAEA1kI,IACA+lJ,EAAAzf,QACArnH,EAAA+mI,sBAAAD,EAAAzf,QAAAtmI,IAEAqM,EAAAq4H,GAAAqhB,GAIA,IAAAE,EAAA55I,EAAAq4H,GAAA,UACA7qI,EAAAkC,KAAAkqJ,EAAA,0BACAjmJ,GAAAqM,EAAAq4H,GAAA,aAEAihB,EAAArkJ,KAAA2kJ,EAAA,GAlBA,CAmBA,KACA,IAEAxlJ,KAAAklJ,aAAA9rJ,IAAAuuI,WAAAud,IACAllJ,KAAA+nI,UAAA/nI,KAAAklJ,aAAA,uBACA,EAEAD,iBAAA,SAAAn4H,GACA9sB,KAAAklJ,aAAA9iJ,MAAA,WACA,IACA9G,EADAlC,EAAA4G,MACA1E,KAAA,wBACAA,KAAAwxB,IACAxxB,EAAAwxB,IAEA,GACA,EAEA24H,mBAAA,SAAA75I,EAAAzH,GACA,IACAihD,EAAAplD,KAAA0lJ,oBAAAvhJ,EAAA,SAAA0hI,QAAA7yE,MAEAhzD,KAAA6mI,aAAAj7H,EAAA,KAHA,+EAIA5L,KAAA+nI,UAAAn8H,EAAA,KAAAw5C,EACA,EAEAsgG,oBAAA,SAAAvhJ,EAAAyM,GACA,IAAAoiE,EAAA,aAAAhzE,KAAAmjB,QAAA6vD,UACAtsD,EAAA,CACAm/G,QAAA,IASA,OAPAn/G,EAAAm/G,QAAAj1H,GAAA,CACAimF,OAAA,GACAt8E,MAAA,cAAAy4D,EAAA,cACA14D,KAAA,cAAA04D,EAAA,kBACA2yE,KAAA,iBACAxhJ,GAEAuiB,CACA,EAEAk/H,gBAAA,SAAAzhJ,GACA,IAAAgf,EAAAnjB,KAAA0lJ,oBAAAvhJ,EAAA,cAKA,OAHAgf,EAAA0iH,QAAA,oBACA1iH,EAAA0iH,QAAA,sBAEA1iH,CACA,EAEA0iI,eAAA,SAAA1hJ,GACA,OAAAnE,KAAA0lJ,oBAAAvhJ,EAAA,YACA,EAEA2hJ,sBAAA,SAAA3hJ,GACA,OAAAnE,KAAA0lJ,oBAAAvhJ,EAAA,yBACA,EAEA4hJ,mBAAA,SAAA5hJ,GACA,IAAA6uE,EAAA,aAAAhzE,KAAAmjB,QAAA6vD,UACA,OACAhmE,QAAAgmE,GAAA,OACA6yD,QAAA,CACAhvC,OAAA,CACA,+BACA,kCAEAt8E,MAAA,CACA,0CAAAy4D,EAAA,YACA,4CAAAA,EAAA,eAEA14D,KAAA,CACA,4BAAA04D,EAAA,kBACA,4CAAAA,EAAA,mBAEA2yE,KAAA,CACA,4CACA,gDAGAxhJ,GAEA,EAEAohJ,sBAAA,SAAA1f,EAAAtmI,GACA,IAAAmnB,EAAA,GAMA,OALAttB,EAAAgJ,KAAAyjI,GAAA,SAAAj1H,GACA,IAAArP,EAAAhC,EAAA4jB,QAAA0iH,QAAAj1H,IAAA,GACArP,EAAAoxC,OAAA5yC,UAAAsiB,KAAA2C,KAAAzjB,EAAAse,QAAA4kI,EAAA,KACA/9H,EAAA9V,IAAArP,EAAA,IAAAskI,EAAAj1H,IAAAiP,QAAA,WACA,IACA6G,CACA,EAEAugH,WAAA,SAAAr2H,EAAApE,GACA,cAAAoE,GACA5Q,KAAA6mI,aAAA,mBAAA7mI,KAAAmjB,QAAA6vD,WAGAhzE,KAAA2/E,OAAA/uE,EAAApE,GACA,aAAAoE,EAKA5Q,KAAA24I,UAJA34I,KAAAilJ,iBAAAz4I,EAAA,mBAKA,EAEAmsI,QAAA,WACA,IAAAj2G,EACAlkB,EAAAxe,KAEAA,KAAA+nI,UAAA,mCAAA/nI,KAAAmjB,QAAA6vD,WAEA,eAAAhzE,KAAAmjB,QAAA6vD,WACAhzE,KAAA+nI,UAAA,2BAEA/nI,KAAAolJ,eAEA1iH,EAAA1iC,KAAAklJ,aAGAllJ,KAAAmjB,QAAAuhI,cACAhiH,IAAAvoB,OAAA,aAGAuoB,EAAAhqC,SAIAU,EAAAgJ,KAAA,2BAAAZ,EAAAgL,GACA,IAAAjN,EAAAmjC,EAAAl2B,KAAAlR,KAAA,wBAEA,GAAAiE,GAAAif,EAAA,IAAAjf,EAAA0lI,WAAA,YACA,IAAA9hH,EAAA3E,EAAA,IAAAjf,EAAA0lI,WAAA,WACA,IAAAviG,EAAAhqC,OAAA,OAAA8T,GAEA2W,EAAA0iH,QAAArnH,EAAA+mI,sBAAApiI,EAAA0iH,QAAAtmI,GACAA,EAAAqM,QAAArM,EAAA0lI,YAAA9hH,EACA,MACA3E,EAAAinI,mBAAA/iH,EAAAl2B,OAEA,IAGAxM,KAAAilJ,iBAAA,WAEA;;;;;;;;;AAuBA7rJ,EAAA6qI,OAAA,oBAAA7qI,EAAAqqI,GAAA+U,eAAA,CACA57H,QAAA,SACAuG,QAAA,CACA2iH,SAAA,KACA9yE,MAAA,KACAivC,MAAA,EACA4jC,QAAA,CACA,yCACA,0CAIAU,kBAAA,WACA,IAAAT,EAAAoU,EAAA8L,EACA7iI,EAAAnjB,KAAA2/E,UAAA,GAyCA,OApCA3/E,KAAAimJ,YAEA/L,EAAAl6I,KAAA4L,QAAAsuI,SAGAl6I,KAAAgzD,MAAA55D,EAAA8gJ,IAAAxhJ,OAAA,IACAsH,KAAAgzD,MAAAt6D,QACAU,EAAAkP,MAAA,2CAGAtI,KAAAkmJ,cAAA,IAOAF,EAAAhmJ,KAAAgzD,MAAA8oF,WAAAlU,IAAA5nI,KAAA4L,QAAA,KAEAlT,SACAsH,KAAAkmJ,eAAAF,EACAvgG,QACA4/F,QAAA,eACAx/I,SACAg/B,QAIA7kC,KAAAkmJ,gBACA/iI,EAAA6vC,MAAAhzD,KAAAkmJ,eAIA,OADApgB,EAAA9lI,KAAA4L,QAAA,GAAAk6H,YAEA3iH,EAAA2iH,YAEA3iH,CACA,EAEAqjH,QAAA,WACA,IAAA3lD,EAAA7gF,KAAA4L,QAAA,GAAAi1E,QAEA7gF,KAAA44I,wBAEA,MAAA54I,KAAAmjB,QAAA2iH,WACA9lI,KAAAmjB,QAAA2iH,SAAA9lI,KAAA4L,QAAA,GAAAk6H,UAGA9lI,KAAAinI,WAAA,WAAAjnI,KAAAmjB,QAAA2iH,UACA9lI,KAAA+nI,UAAA,kDACA/nI,KAAA+nI,UAAA/nI,KAAAgzD,MAAA,gDAEA,UAAAhzD,KAAA0F,MACA1F,KAAA+nI,UAAA/nI,KAAAgzD,MAAA,gCAGAhzD,KAAAmjB,QAAA6vC,OAAAhzD,KAAAmjB,QAAA6vC,QAAAhzD,KAAAkmJ,cACAlmJ,KAAAmmJ,eACAnmJ,KAAAkmJ,gBACAlmJ,KAAAmjB,QAAA6vC,MAAAhzD,KAAAkmJ,eAGAlmJ,KAAAglJ,WAEAnkE,GACA7gF,KAAA+nI,UAAA/nI,KAAAgzD,MAAA,8CAGAhzD,KAAAqmI,IAAA,CACA+a,OAAA,iBACAznG,MAAA,WACA35C,KAAA+nI,UAAA/nI,KAAAgzD,MAAA,sCACA,EACAh2B,KAAA,WACAh9B,KAAA6mI,aAAA7mI,KAAAgzD,MAAA,sCACA,GAEA,EAEAizF,UAAA,WACA,IAAA9+D,EAAAnnF,KAAA4L,QAAA,GAAAu7E,SAAA7sF,cACA0F,KAAA0F,KAAA1F,KAAA4L,QAAA,GAAAlG,KACA,UAAAyhF,GAAA,iBAAAhtF,KAAA6F,KAAA0F,OACAtM,EAAAkP,MAAA,kDAAA6+E,EACA,qBAAAnnF,KAAA0F,KAEA,EAGAs/I,SAAA,WACAhlJ,KAAAomJ,YAAApmJ,KAAA4L,QAAA,GAAAi1E,QACA,EAEAojD,OAAA,WACA,OAAAjkI,KAAAgzD,KACA,EAEAqzF,eAAA,WACA,IACA/tJ,EAAA0H,KAAA4L,QAAA,GAAAtT,KACAguJ,EAAA,eAAAvN,IAAArmG,OAAAp6C,GAAA,KAEA,OAAAA,GAIA0H,KAAA04I,KAAAhgJ,OACAU,EAAA4G,KAAA04I,KAAA,GAAAxgE,UAAA/9D,OAAAmsI,GAIAltJ,EAAAktJ,GAAAnsI,QAAA,WACA,WAAA/gB,IAAA4G,MAAA0W,KAAA,SAAAhe,MACA,KAGAkvI,IAAA5nI,KAAA4L,SAbAxS,EAAA,GAcA,EAEAmtJ,eAAA,WACA,IAAA1lE,EAAA7gF,KAAA4L,QAAA,GAAAi1E,QACA7gF,KAAAsnI,aAAAtnI,KAAAgzD,MAAA,6CAAA6tB,GAEA7gF,KAAAmjB,QAAA8+E,MAAA,aAAAjiG,KAAA0F,MACA1F,KAAAsnI,aAAAtnI,KAAAiiG,KAAA,sCAAAphB,GACAymD,aAAAtnI,KAAAiiG,KAAA,sBAAAphB,GAGA,UAAA7gF,KAAA0F,MACA1F,KAAAqmJ,iBACAjkJ,MAAA,WACA,IAAA7C,EAAAnG,EAAA4G,MAAA6kJ,cAAA,YAEAtlJ,GACAA,EAAAsnI,aAAAtnI,EAAAyzD,MACA,6CAEA,GAEA,EAEA4zE,SAAA,WACA5mI,KAAA64I,0BAEA74I,KAAAiiG,OACAjiG,KAAAiiG,KAAAlpG,SACAiH,KAAAwmJ,UAAAztJ,SAEA,EAEAkuI,WAAA,SAAAr2H,EAAApE,GAGA,aAAAoE,GAAApE,EAAA,CAMA,GAFAxM,KAAA2/E,OAAA/uE,EAAApE,GAEA,aAAAoE,EAKA,OAJA5Q,KAAAsnI,aAAAtnI,KAAAgzD,MAAA,yBAAAxmD,QACAxM,KAAA4L,QAAA,GAAAk6H,SAAAt5H,GAKAxM,KAAA24I,SAXA,CAYA,EAEAyN,YAAA,SAAAvlE,GACA,IAAA4lE,EAAA,8BAEAzmJ,KAAAmjB,QAAA8+E,MACAjiG,KAAAiiG,OACAjiG,KAAAiiG,KAAA7oG,EAAA,UACA4G,KAAAwmJ,UAAAptJ,EAAA,kBACA4G,KAAA+nI,UAAA/nI,KAAAwmJ,UAAA,gCAGA,aAAAxmJ,KAAA0F,MACA+gJ,GAAA5lE,EAAA,iDACA7gF,KAAA6mI,aAAA7mI,KAAAiiG,KAAA,KAAAphB,EAAA,kCAEA4lE,GAAA,gBAEAzmJ,KAAA+nI,UAAA/nI,KAAAiiG,KAAA,wBAAAwkD,GACA5lE,GACA7gF,KAAA6mI,aAAA7mI,KAAAiiG,KAAA,uCAEAjiG,KAAAiiG,KAAA25C,UAAA57I,KAAAgzD,OAAAm3B,MAAAnqF,KAAAwmJ,iBACApgJ,IAAApG,KAAAiiG,OACAjiG,KAAAiiG,KAAAlpG,SACAiH,KAAAwmJ,UAAAztJ,gBACAiH,KAAAiiG,KAEA,EAEAkkD,aAAA,WAGA,IAAArK,EAAA97I,KAAAgzD,MAAA8oF,WAAAlU,IAAA5nI,KAAA4L,QAAA,IACA5L,KAAAiiG,OACA65C,IAAAlU,IAAA5nI,KAAAiiG,KAAA,KAEAjiG,KAAAwmJ,YACA1K,IAAAlU,IAAA5nI,KAAAwmJ,UAAA,KAEA1K,EAAA/iJ,SAEAiH,KAAAgzD,MAAAnnB,OAAA7rC,KAAAmjB,QAAA6vC,MACA,EAEA2lF,QAAA,WACA,IAAA93D,EAAA7gF,KAAA4L,QAAA,GAAAi1E,QACA6lE,EAAA1mJ,KAAA4L,QAAA,GAAAk6H,SAEA9lI,KAAAomJ,YAAAvlE,GACA7gF,KAAAsnI,aAAAtnI,KAAAgzD,MAAA,6CAAA6tB,GACA,OAAA7gF,KAAAmjB,QAAA6vC,OACAhzD,KAAAmmJ,eAGAO,IAAA1mJ,KAAAmjB,QAAA2iH,UACA9lI,KAAAgnI,YAAA,CAAAlB,SAAA4gB,GAEA,KAIAttJ,EAAAqqI,GAAAohB;;;;;;;;GAsBAzrJ,EAAA6qI,OAAA,aACArnH,QAAA,SACAgpH,eAAA,WACAziH,QAAA,CACA0iH,QAAA,CACA,6BAEAC,SAAA,KACA7jC,KAAA,KACA0kD,aAAA,YACA3zF,MAAA,KACA4zF,WAAA,GAGArgB,kBAAA,WACA,IAAAT,EAIA3iH,EAAAnjB,KAAA2/E,UAAA,GAcA,OAZA3/E,KAAA4hJ,QAAA5hJ,KAAA4L,QAAA04B,GAAA,SAGA,OADAwhG,EAAA9lI,KAAA4L,QAAA,GAAAk6H,YAEA3iH,EAAA2iH,YAGA9lI,KAAAkmJ,cAAAlmJ,KAAA4hJ,QAAA5hJ,KAAA4L,QAAAktC,MAAA94C,KAAA4L,QAAAi5B,OACA7kC,KAAAkmJ,gBACA/iI,EAAA6vC,MAAAhzD,KAAAkmJ,eAGA/iI,CACA,EAEAqjH,QAAA,YACAxmI,KAAAizC,OAAA2zG,WAAA5mJ,KAAAmjB,QAAA8+E,OACAjiG,KAAAmjB,QAAAyjI,WAAA,GAMA,MAAA5mJ,KAAAmjB,QAAA2iH,WACA9lI,KAAAmjB,QAAA2iH,SAAA9lI,KAAA4L,QAAA,GAAAk6H,WAAA,GAGA9lI,KAAA6mJ,WAAA7mJ,KAAA4L,QAAAq8B,KAAA,SAGAjoC,KAAAmjB,QAAA6vC,OAAAhzD,KAAAmjB,QAAA6vC,QAAAhzD,KAAAkmJ,gBACAlmJ,KAAA4hJ,QACA5hJ,KAAA4L,QAAAktC,IAAA94C,KAAAmjB,QAAA6vC,OAEAhzD,KAAA4L,QAAAi5B,KAAA7kC,KAAAmjB,QAAA6vC,QAGAhzD,KAAA+nI,UAAA,yBACA/nI,KAAAinI,WAAA,WAAAjnI,KAAAmjB,QAAA2iH,UACA9lI,KAAAglJ,WAEAhlJ,KAAA4L,QAAA04B,GAAA,MACAtkC,KAAAqmI,IAAA,CACAygB,MAAA,SAAApmJ,GACAA,EAAA4lD,UAAAltD,EAAAqqI,GAAAn9E,QAAAyzF,QACAr5I,EAAA6jC,iBAKAvkC,KAAA4L,QAAA,GAAAu+C,MACAnqD,KAAA4L,QAAA,GAAAu+C,QAEAnqD,KAAA4L,QAAAV,QAAA,SAGA,GAGA,EAEA85I,SAAA,WACAhlJ,KAAA4L,QAAA04B,GAAA,WACAtkC,KAAA4L,QAAAq8B,KAAA,iBAGAjoC,KAAAmjB,QAAA8+E,OACAjiG,KAAAomJ,YAAA,OAAApmJ,KAAAmjB,QAAA8+E,MACAjiG,KAAA+mJ,iBAEA,EAEAA,eAAA,WACA/mJ,KAAAmwC,MAAAnwC,KAAA4L,QAAAq8B,KAAA,SAEAjoC,KAAAmjB,QAAAyjI,WAAA5mJ,KAAAmwC,OACAnwC,KAAA4L,QAAAq8B,KAAA,QAAAjoC,KAAAmjB,QAAA6vC,MAEA,EAEAozF,YAAA,SAAAnzG,EAAAzmC,GACA,IAAAy1F,EAAA,iBAAAhvD,EACA9uC,EAAA89F,EAAAjiG,KAAAmjB,QAAAwjI,aAAAn6I,EACAw6I,EAAA,QAAA7iJ,GAAA,WAAAA,EAGAnE,KAAAiiG,KAQAA,GAGAjiG,KAAA6mI,aAAA7mI,KAAAiiG,KAAA,KAAAjiG,KAAAmjB,QAAA8+E,OAVAjiG,KAAAiiG,KAAA7oG,EAAA,UAEA4G,KAAA+nI,UAAA/nI,KAAAiiG,KAAA,4BAEAjiG,KAAAmjB,QAAAyjI,WACA5mJ,KAAA+nI,UAAA,wBASA9lC,GACAjiG,KAAA+nI,UAAA/nI,KAAAiiG,KAAA,KAAAz1F,GAGAxM,KAAAinJ,YAAA9iJ,GAIA6iJ,GACAhnJ,KAAA+nI,UAAA/nI,KAAAiiG,KAAA,6BACAjiG,KAAAwmJ,WACAxmJ,KAAAwmJ,UAAAztJ,WAMAiH,KAAAwmJ,YACAxmJ,KAAAwmJ,UAAAptJ,EAAA,kBACA4G,KAAA+nI,UAAA/nI,KAAAwmJ,UAAA,yBAEAxmJ,KAAA6mI,aAAA7mI,KAAAiiG,KAAA,4BACAjiG,KAAAknJ,iBAAA/iJ,GAEA,EAEAyiI,SAAA,WACA5mI,KAAA4L,QAAA27B,WAAA,QAEAvnC,KAAAiiG,MACAjiG,KAAAiiG,KAAAlpG,SAEAiH,KAAAwmJ,WACAxmJ,KAAAwmJ,UAAAztJ,SAEAiH,KAAA6mJ,UACA7mJ,KAAA4L,QAAA27B,WAAA,QAEA,EAEA2/G,iBAAA,SAAAP,GACA3mJ,KAAAiiG,KAAA,kBAAA9nG,KAAAwsJ,GAAA,kBAAA3mJ,KAAAwmJ,UACA,EAEAS,YAAA,SAAAN,GACA3mJ,KAAA4L,QAAA,kBAAAzR,KAAAwsJ,GAAA,oBAAA3mJ,KAAAiiG,KACA,EAEA+kC,YAAA,SAAA7jH,GACA,IAAAgkI,OAAA/gJ,IAAA+c,EAAAyjI,UACA5mJ,KAAAmjB,QAAAyjI,UACAzjI,EAAAyjI,UACAQ,OAAAhhJ,IAAA+c,EAAA8+E,KAAAjiG,KAAAmjB,QAAA8+E,KAAA9+E,EAAA8+E,KAEAklD,GAAAC,IACAjkI,EAAAyjI,WAAA,GAEA5mJ,KAAA2/E,OAAAx8D,EACA,EAEA8jH,WAAA,SAAAr2H,EAAApE,GACA,SAAAoE,IACApE,EACAxM,KAAAomJ,YAAAx1I,EAAApE,GACAxM,KAAAiiG,OACAjiG,KAAAiiG,KAAAlpG,SACAiH,KAAAwmJ,WACAxmJ,KAAAwmJ,UAAAztJ,WAKA,iBAAA6X,GACA5Q,KAAAomJ,YAAAx1I,EAAApE,GAIA,cAAAoE,IACA5Q,KAAAsnI,aAAA,4BAAA96H,GACAxM,KAAA+mJ,kBAGA,UAAAn2I,IACA5Q,KAAA4hJ,QACA5hJ,KAAA4L,QAAAktC,IAAAtsC,IAKAxM,KAAA4L,QAAAi5B,KAAAr4B,GACAxM,KAAAiiG,OACAjiG,KAAAinJ,YAAAjnJ,KAAAmjB,QAAAwjI,cACA3mJ,KAAAknJ,iBAAAlnJ,KAAAmjB,QAAAwjI,iBAKA3mJ,KAAA2/E,OAAA/uE,EAAApE,GAEA,aAAAoE,IACA5Q,KAAAsnI,aAAA,yBAAA96H,GACAxM,KAAA4L,QAAA,GAAAk6H,SAAAt5H,EACAA,GACAxM,KAAA4L,QAAAV,QAAA,QAGA,EAEAytI,QAAA,WAIA,IAAA+N,EAAA1mJ,KAAA4L,QAAA04B,GAAA,iBACAtkC,KAAA4L,QAAA,GAAAk6H,SAAA9lI,KAAA4L,QAAA62B,SAAA,sBAEAikH,IAAA1mJ,KAAAmjB,QAAA2iH,UACA9lI,KAAAgnI,YAAA,CAAAlB,SAAA4gB,IAGA1mJ,KAAA+mJ,gBACA,KAIA,IAAA3tJ,EAAA85I,eAGA95I,EAAA6qI,OAAA,YAAA7qI,EAAAqqI,GAAAkhB,OAAA,CACAxhI,QAAA,CACA0X,MAAA,EACAmgH,MAAA,CACAqM,QAAA,KACAC,UAAA,OAIA9gB,QAAA,WACAxmI,KAAAmjB,QAAAyjI,YAAA5mJ,KAAAmjB,QAAA0X,OACA76B,KAAAmjB,QAAAyjI,UAAA5mJ,KAAAmjB,QAAA0X,OAEA76B,KAAAmjB,QAAAyjI,WAAA5mJ,KAAAmjB,QAAA0X,OACA76B,KAAAmjB,QAAA0X,KAAA76B,KAAAmjB,QAAAyjI,WAEA5mJ,KAAAmjB,QAAA8+E,OAAAjiG,KAAAmjB,QAAA63H,MAAAqM,UACArnJ,KAAAmjB,QAAA63H,MAAAsM,UAOAtnJ,KAAAmjB,QAAA8+E,OACAjiG,KAAAmjB,QAAA63H,MAAAqM,QAAArnJ,KAAAmjB,QAAA8+E,MAPAjiG,KAAAmjB,QAAA63H,MAAAqM,QACArnJ,KAAAmjB,QAAA8+E,KAAAjiG,KAAAmjB,QAAA63H,MAAAqM,SAEArnJ,KAAAmjB,QAAA8+E,KAAAjiG,KAAAmjB,QAAA63H,MAAAsM,UACAtnJ,KAAAmjB,QAAAwjI,aAAA,OAKA3mJ,KAAA2/E,QACA,EAEAsnD,WAAA,SAAAr2H,EAAApE,GACA,SAAAoE,GAIA,cAAAA,IACA5Q,KAAAmjB,QAAA0X,KAAAruB,GAEA,SAAAoE,IACA5Q,KAAAmjB,QAAA63H,MAAAqM,QAAA76I,GAEA,UAAAoE,IACApE,EAAA66I,SACArnJ,KAAA2/E,OAAA,OAAAnzE,EAAA66I,SACArnJ,KAAA2/E,OAAA,6BACAnzE,EAAA86I,YACAtnJ,KAAA2/E,OAAA,OAAAnzE,EAAA86I,WACAtnJ,KAAA2/E,OAAA,wBAGA3/E,KAAA4kI,YAAA1jI,YAlBAlB,KAAA2/E,OAAA,YAAAnzE,EAmBA,IAGApT,EAAAgmB,GAAAulI,OAAA,SAAAjhB,GACA,gBAAAvgH,GACA,IAAAqiH,EAAA,iBAAAriH,EACA0hC,EAAA5yC,MAAAlS,UAAArB,MAAAsmB,KAAA9jB,UAAA,GACA2jI,EAAA7kI,KAwEA,OAtEAwlI,EAIAxlI,KAAAtH,QAAA,aAAAyqB,EAGAnjB,KAAAoC,MAAA,WACA,IAAAqjI,EACA//H,EAAAtM,EAAA4G,MAAAioC,KAAA,QACA3vC,EAAA,aAAAoN,GAAA,UAAAA,EACA,SACA,gBACAnG,EAAAnG,EAAAkC,KAAA0E,KAAA,MAAA1H,GAEA,mBAAA6qB,GACA0hH,EAAAtlI,GACA,GAGAA,EAMA,mBAAAA,EAAA4jB,IACA,MAAAA,EAAAvqB,OAAA,GACAQ,EAAAkP,MAAA,mBAAA6a,EAAA,iCAIAsiH,EAAAlmI,EAAA4jB,GAAAliB,MAAA1B,EAAAslD,MAEAtlD,QAAA6G,IAAAq/H,GACAZ,EAAAY,KAAArwG,OACAyvG,EAAAa,UAAAD,EAAAptI,OACAotI,GACA,QAJA,EAbArsI,EAAAkP,MAAA,oFAEA6a,EAAA,IAiBA,IAnCA0hH,OAAAz+H,GAwCAy+C,EAAAnsD,SACAyqB,EAAA/pB,EAAA6qI,OAAAtkI,OAAAsB,MAAA,MAAAkiB,GAAAukB,OAAAmd,KAGA7kD,KAAAoC,MAAA,WACA,IAAAsD,EAAAtM,EAAA4G,MAAAioC,KAAA,QACA3vC,EAAA,aAAAoN,GAAA,UAAAA,EAAA,yBACAnG,EAAAnG,EAAAkC,KAAA0E,KAAA,MAAA1H,GAEA,GAAAiH,EACAA,EAAA0zC,OAAA9vB,GAAA,IACA5jB,EAAAomI,OACApmI,EAAAomI,YAEA,CACA,cAAArtI,EAEA,YADAorI,EAAA1+G,KAAA5rB,EAAA4G,MAAAmjB,GAIA/pB,EAAA4G,MAAA6kJ,cAAAzrJ,EAAAuG,OAAA,CAAAsiG,MAAA,GAAA9+E,GACA,CACA,KAGA0hH,CACA,CACA,CA9EA,CA8EAzrI,EAAAgmB,GAAAulI,QAEAvrJ,EAAAgmB,GAAAmoI,UAAA,WAIA,OAHAnuJ,EAAAqqI,GAAA+jB,cACApuJ,EAAAkP,MAAA,+BAEA,WAAApH,UAAA,cAAAA,UAAA,IAAAA,UAAA,GACAlB,KAAAwnJ,aAAAvmJ,MAAAjB,KACA,CAAAkB,UAAA,kBAAAA,UAAA,KAEA,WAAAA,UAAA,cAAAA,UAAA,GACAlB,KAAAwnJ,aAAAvmJ,MAAAjB,KAAA,CAAAkB,UAAA,qBAEA,iBAAAA,UAAA,IAAAA,UAAA,GAAAo5B,QACAp5B,UAAA,GAAAo5B,MAAA,CACAqqH,OAAAzjJ,UAAA,GAAAo5B,QAGAt6B,KAAAwnJ,aAAAvmJ,MAAAjB,KAAAkB,WACA,GAGA,IAyBAumJ;;;;;;;;GAzBAruJ,EAAAqqI,GAAAkhB,OAyDA,SAAA+C,IACA1nJ,KAAA2nJ,SAAA,KACA3nJ,KAAAgiJ,WAAA,EACAhiJ,KAAA4nJ,gBAAA,GACA5nJ,KAAA6nJ,oBAAA,EACA7nJ,KAAA8nJ,WAAA,EACA9nJ,KAAA+nJ,WAAA,oBACA/nJ,KAAAgoJ,aAAA,uBACAhoJ,KAAAioJ,aAAA,uBACAjoJ,KAAAkoJ,cAAA,wBACAloJ,KAAAmoJ,aAAA,uBACAnoJ,KAAAooJ,cAAA,yBACApoJ,KAAAqoJ,mBAAA,6BACAroJ,KAAAsoJ,cAAA,4BACAtoJ,KAAAuoJ,cAAA,+BACAvoJ,KAAAwoJ,SAAA,GACAxoJ,KAAAwoJ,SAAA,KACAC,UAAA,OACAC,SAAA,OACAC,SAAA,OACAC,YAAA,QACAC,WAAA,mDACA,6DACAC,gBAAA,0EACAC,SAAA,yEACAC,cAAA,4CACAC,YAAA,qCACAC,WAAA,KACAvkJ,WAAA,WACAgrG,SAAA,EACAw5C,OAAA,EACAC,oBAAA,EACAC,WAAA,GACAC,iBAAA,eACAC,gBAAA,eAEAvpJ,KAAAwpJ,UAAA,CACAC,OAAA,QAEAC,SAAA,SACAC,YAAA,GACAC,YAAA,KAEAC,WAAA,GACAC,WAAA,MACAC,YAAA,GACAC,iBAAA,EACAC,kBAAA,EAEAC,wBAAA,EACAC,aAAA,EACAC,aAAA,EACAC,YAAA,EACAC,UAAA,YAGAC,iBAAA,EACAC,mBAAA,EACAC,UAAA,EACAC,cAAA1qJ,KAAA2qJ,YAEAC,gBAAA,MAGAC,QAAA,KACAC,QAAA,KACAvjG,SAAA,OACAwjG,cAAA,KAGAC,WAAA,KAEAC,SAAA,KACAC,kBAAA,KACAC,QAAA,KACAC,mBAAA,KACAC,eAAA,EACAC,iBAAA,EACAC,WAAA,EACAC,cAAA,GACAC,SAAA,GACAC,UAAA,GACAC,gBAAA,EACAC,iBAAA,EACAC,UAAA,EACA/lB,UAAA,GAEA1sI,EAAAuG,OAAAK,KAAAwpJ,UAAAxpJ,KAAAwoJ,SAAA,KACAxoJ,KAAAwoJ,SAAAsD,GAAA1yJ,EAAAuG,QAAA,KAAAK,KAAAwoJ,SAAA,KACAxoJ,KAAAwoJ,SAAA,SAAApvJ,EAAAuG,QAAA,KAAAK,KAAAwoJ,SAAAsD,IACA9rJ,KAAA+rJ,MAAAC,EAAA5yJ,EAAA,YAAA4G,KAAA+nJ,WAAA,+FACA,CAm8DA,SAAAiE,EAAAD,GACA,IAAAzlJ,EAAA,iFACA,OAAAylJ,EAAArwJ,GAAA,WAAA4K,GAAA,WACAlN,EAAA4G,MAAA4I,YAAA,mBACA,IAAA5I,KAAA8/B,UAAAhnC,QAAA,uBACAM,EAAA4G,MAAA4I,YAAA,6BAEA,IAAA5I,KAAA8/B,UAAAhnC,QAAA,uBACAM,EAAA4G,MAAA4I,YAAA,2BAEA,IACAlN,GAAA,YAAA4K,EAAA2lJ,EACA,CAEA,SAAAA,IACA7yJ,EAAA8yJ,WAAAC,sBAAA1E,EAAA2E,OAAA3E,EAAAsE,MAAAlmJ,SAAA,GAAA4hJ,EAAA12G,MAAA,MACA33C,EAAA4G,MAAAq6I,QAAA,2BAAA/4I,KAAA,KAAAsH,YAAA,kBACAxP,EAAA4G,MAAA2F,SAAA,mBACA,IAAA3F,KAAA8/B,UAAAhnC,QAAA,uBACAM,EAAA4G,MAAA2F,SAAA,6BAEA,IAAA3F,KAAA8/B,UAAAhnC,QAAA,uBACAM,EAAA4G,MAAA2F,SAAA,4BAGA,CAGA,SAAA0mJ,EAAAhoH,EAAAs+D,GAEA,QAAArqG,KADAc,EAAAuG,OAAA0kC,EAAAs+D,GACAA,EACA,MAAAA,EAAArqG,KACA+rC,EAAA/rC,GAAAqqG,EAAArqG,IAGA,OAAA+rC,CACA,CApmEAjrC,EAAAuG,OAAAvG,EAAAqqI,GAAA,CAAAyoB,WAAA,CAAAtvI,QAAA,YA+HAxjB,EAAAuG,OAAA+nJ,EAAA3nJ,UAAA,CAGAusJ,gBAAA,gBAGAC,QAAA,EAGAC,kBAAA,WACA,OAAAxsJ,KAAA+rJ,KACA,EAMAU,YAAA,SAAAj5H,GAEA,OADA64H,EAAArsJ,KAAAwpJ,UAAAh2H,GAAA,IACAxzB,IACA,EAMA0sJ,kBAAA,SAAAroH,EAAA7Q,GACA,IAAA2zD,EAAAilE,EAAAj2B,EAEAi2B,EAAA,SADAjlE,EAAA9iD,EAAA8iD,SAAA7sF,gBACA,SAAA6sF,EACA9iD,EAAAzpC,KACAoF,KAAA+lI,MAAA,EACA1hG,EAAAzpC,GAAA,KAAAoF,KAAA+lI,OAEA5P,EAAAn2H,KAAA2sJ,SAAAvzJ,EAAAirC,GAAA+nH,IACA54H,SAAAp6B,EAAAuG,OAAA,GAAA6zB,GAAA,IACA,UAAA2zD,EACAnnF,KAAA4sJ,mBAAAvoH,EAAA8xF,GACAi2B,GACApsJ,KAAA6sJ,kBAAAxoH,EAAA8xF,EAEA,EAGAw2B,SAAA,SAAAtoH,EAAA+nH,GAEA,OAAAxxJ,GADAypC,EAAA,GAAAzpC,GAAAilB,QAAA,+BACAkxB,MAAA1M,EACAyoH,YAAA,EAAAC,cAAA,EAAAC,aAAA,EACAC,UAAA,EAAAC,SAAA,EACAd,SACAL,MAAAK,EACAJ,EAAA5yJ,EAAA,eAAA4G,KAAAgoJ,aAAA,wFADAhoJ,KAAA+rJ,MAEA,EAGAa,mBAAA,SAAAvoH,EAAA8xF,GACA,IAAAplF,EAAA33C,EAAAirC,GACA8xF,EAAAtqF,OAAAzyC,EAAA,IACA+8H,EAAAjrH,QAAA9R,EAAA,IACA23C,EAAAtO,SAAAziC,KAAAssJ,mBAGAtsJ,KAAAmtJ,aAAAp8G,EAAAolF,GACAplF,EAAAprC,SAAA3F,KAAAssJ,iBAAA5wJ,GAAA,UAAAsE,KAAAotJ,YACA1xJ,GAAA,WAAAsE,KAAAqtJ,aAAA3xJ,GAAA,QAAAsE,KAAAstJ,UACAttJ,KAAAutJ,UAAAp3B,GACA/8H,EAAAkC,KAAA+oC,EAAA,aAAA8xF,GAGAA,EAAA3iG,SAAAsyG,UACA9lI,KAAAwtJ,mBAAAnpH,GAEA,EAGA8oH,aAAA,SAAAp8G,EAAAolF,GACA,IAAAszB,EAAAK,EAAAC,EACAF,EAAA7pJ,KAAAytJ,KAAAt3B,EAAA,cACAgzB,EAAAnpJ,KAAAytJ,KAAAt3B,EAAA,SAEAA,EAAAtqF,QACAsqF,EAAAtqF,OAAA9yC,SAEA8wJ,IACA1zB,EAAAtqF,OAAAzyC,EAAA,UACAuM,SAAA3F,KAAAioJ,cACAptH,KAAAgvH,GACA94G,EAAAo4G,EAAA,kBAAAhzB,EAAAtqF,SAGAkF,EAAAvmC,IAAA,QAAAxK,KAAA0tJ,iBAEAv3B,EAAAjrH,SACAirH,EAAAjrH,QAAAnS,SAIA,WADA0wJ,EAAAzpJ,KAAAytJ,KAAAt3B,EAAA,YACA,SAAAszB,GACA14G,EAAAr1C,GAAA,QAAAsE,KAAA0tJ,iBAEA,WAAAjE,GAAA,SAAAA,IACAK,EAAA9pJ,KAAAytJ,KAAAt3B,EAAA,cACA4zB,EAAA/pJ,KAAAytJ,KAAAt3B,EAAA,eAEAn2H,KAAAytJ,KAAAt3B,EAAA,mBACAA,EAAAjrH,QAAA9R,EAAA,SACAuM,SAAA3F,KAAAkoJ,eACAjgH,KAAA,CACAtX,IAAAo5H,EACA4D,IAAA7D,EACA35G,MAAA25G,KAGA3zB,EAAAjrH,QAAA9R,EAAA,0BACAuM,SAAA3F,KAAAkoJ,eACA6B,EACA5zB,EAAAjrH,QAAA25B,KACAzrC,EAAA,SACA6uC,KAAA,CACAtX,IAAAo5H,EACA4D,IAAA7D,EACA35G,MAAA25G,KAIA3zB,EAAAjrH,QAAA2vB,KAAAivH,IAIA/4G,EAAAo4G,EAAA,kBAAAhzB,EAAAjrH,SACAirH,EAAAjrH,QAAAxP,GAAA,oBASA,OARAtC,EAAA8yJ,WAAArE,oBAAAzuJ,EAAA8yJ,WAAA0B,aAAA78G,EAAA,GACA33C,EAAA8yJ,WAAA2B,kBACAz0J,EAAA8yJ,WAAArE,oBAAAzuJ,EAAA8yJ,WAAA0B,aAAA78G,EAAA,IACA33C,EAAA8yJ,WAAA2B,kBACAz0J,EAAA8yJ,WAAAwB,gBAAA38G,EAAA,KAEA33C,EAAA8yJ,WAAAwB,gBAAA38G,EAAA,KAEA,CACA,IAEA,EAGAw8G,UAAA,SAAAp3B,GACA,GAAAn2H,KAAAytJ,KAAAt3B,EAAA,cAAAA,EAAAi2B,OAAA,CACA,IAAA0B,EAAA32H,EAAA42H,EAAAt1J,EACAuxG,EAAA,IAAAjyG,KAAA,YACA4M,EAAA3E,KAAAytJ,KAAAt3B,EAAA,cAEAxxH,EAAA+N,MAAA,UACAo7I,EAAA,SAAAzd,GAGA,IAFAl5G,EAAA,EACA42H,EAAA,EACAt1J,EAAA,EAAAA,EAAA43I,EAAA33I,OAAAD,IACA43I,EAAA53I,GAAAC,OAAAy+B,IACAA,EAAAk5G,EAAA53I,GAAAC,OACAq1J,EAAAt1J,GAGA,OAAAs1J,CACA,EACA/jD,EAAAgkD,SAAAF,EAAA9tJ,KAAAytJ,KAAAt3B,EAAAxxH,EAAA+N,MAAA,MACA,kCACAs3F,EAAAhyG,QAAA81J,EAAA9tJ,KAAAytJ,KAAAt3B,EAAAxxH,EAAA+N,MAAA,MACA,gCAAAs3F,EAAAikD,WAEA93B,EAAAplF,MAAA9I,KAAA,OAAAjoC,KAAAkuJ,YAAA/3B,EAAAnsB,GAAAtxG,OACA,CACA,EAGAm0J,kBAAA,SAAAxoH,EAAA8xF,GACA,IAAAg4B,EAAA/0J,EAAAirC,GACA8pH,EAAA1rH,SAAAziC,KAAAssJ,mBAGA6B,EAAAxoJ,SAAA3F,KAAAssJ,iBAAAzgH,OAAAsqF,EAAA41B,OACA3yJ,EAAAkC,KAAA+oC,EAAA,aAAA8xF,GACAn2H,KAAAouJ,SAAAj4B,EAAAn2H,KAAAquJ,gBAAAl4B,IAAA,GACAn2H,KAAAsuJ,kBAAAn4B,GACAn2H,KAAAuuJ,iBAAAp4B,GAGAA,EAAA3iG,SAAAsyG,UACA9lI,KAAAwtJ,mBAAAnpH,GAKA8xF,EAAA41B,MAAAnmJ,IAAA,mBACA,EAYA4oJ,kBAAA,SAAAz9G,EAAAi5D,EAAAihD,EAAAz3H,EAAAi4B,GACA,IAAA7wD,EAAA6zJ,EAAAC,EAAAtoE,EAAAG,EACA4vC,EAAAn2H,KAAA2uJ,YAqCA,OAnCAx4B,IACAn2H,KAAA+lI,MAAA,EACAnrI,EAAA,KAAAoF,KAAA+lI,KACA/lI,KAAA4uJ,aAAAx1J,EAAA,0BAAAwB,EACA,4DACAoF,KAAA4uJ,aAAAlzJ,GAAA,UAAAsE,KAAAotJ,YACAh0J,EAAA,QAAAyyC,OAAA7rC,KAAA4uJ,eACAz4B,EAAAn2H,KAAA2uJ,YAAA3uJ,KAAA2sJ,SAAA3sJ,KAAA4uJ,cAAA,IACAp7H,SAAA,GACAp6B,EAAAkC,KAAA0E,KAAA4uJ,aAAA,gBAAAz4B,IAEAk2B,EAAAl2B,EAAA3iG,YAAA,IACAw2E,OAAA/pG,cAAAlI,KAAAiI,KAAAkuJ,YAAA/3B,EAAAnsB,KACAhqG,KAAA4uJ,aAAA91G,IAAAkxD,GAEAhqG,KAAA6uJ,KAAApjG,IAAA/yD,OAAA+yD,EAAA,CAAAA,EAAAlgD,MAAAkgD,EAAAjgD,OAAA,KACAxL,KAAA6uJ,OACAJ,EAAAv2J,SAAAqgB,gBAAAI,YACA+1I,EAAAx2J,SAAAqgB,gBAAAM,aACAutE,EAAAluF,SAAAqgB,gBAAA6tB,YAAAluC,SAAAi4B,KAAAiW,WACAmgD,EAAAruF,SAAAqgB,gBAAAzK,WAAA5V,SAAAi4B,KAAAriB,UACA9N,KAAA6uJ,KACA,CAAAJ,EAAA,MAAAroE,EAAAsoE,EAAA,MAAAnoE,IAIAvmF,KAAA4uJ,aAAAhpJ,IAAA,OAAA5F,KAAA6uJ,KAAA,YAAAjpJ,IAAA,MAAA5F,KAAA6uJ,KAAA,SACA14B,EAAA3iG,SAAAy3H,WACAjrJ,KAAA8nJ,WAAA,EACA9nJ,KAAA+rJ,MAAApmJ,SAAA3F,KAAAmoJ,cACAnoJ,KAAA0tJ,gBAAA1tJ,KAAA4uJ,aAAA,IACAx1J,EAAA01J,SACA11J,EAAA01J,QAAA9uJ,KAAA+rJ,OAEA3yJ,EAAAkC,KAAA0E,KAAA4uJ,aAAA,gBAAAz4B,GACAn2H,IACA,EAKA+uJ,mBAAA,SAAA1qH,GACA,IAAA8iD,EACA/8E,EAAAhR,EAAAirC,GACA8xF,EAAA/8H,EAAAkC,KAAA+oC,EAAA,cAEAj6B,EAAAq4B,SAAAziC,KAAAssJ,mBAIAnlE,EAAA9iD,EAAA8iD,SAAA7sF,cACAlB,EAAA0tI,WAAAziG,EAAA,cACA,UAAA8iD,GACAgvC,EAAAtqF,OAAA9yC,SACAo9H,EAAAjrH,QAAAnS,SACAqR,EAAAxB,YAAA5I,KAAAssJ,iBACA9hJ,IAAA,QAAAxK,KAAA0tJ,iBACAljJ,IAAA,UAAAxK,KAAAotJ,YACA5iJ,IAAA,WAAAxK,KAAAqtJ,aACA7iJ,IAAA,QAAAxK,KAAAstJ,WACA,QAAAnmE,GAAA,SAAAA,GACA/8E,EAAAxB,YAAA5I,KAAAssJ,iBAAA7xG,QAGArhD,EAAA8yJ,WAAA2B,kBACApG,IAAAtxB,IACAsxB,EAAA,KACAznJ,KAAA2nJ,SAAA,MAEA,EAKAqH,kBAAA,SAAA3qH,GACA,IAAA8iD,EAAAilE,EACAhiJ,EAAAhR,EAAAirC,GACA8xF,EAAA/8H,EAAAkC,KAAA+oC,EAAA,cAEAj6B,EAAAq4B,SAAAziC,KAAAssJ,mBAKA,WADAnlE,EAAA9iD,EAAA8iD,SAAA7sF,gBAEA+pC,EAAAyhG,UAAA,EACA3P,EAAAjrH,QAAAiP,OAAA,UACA/X,MAAA,WACApC,KAAA8lI,UAAA,CACA,IAAAt9E,MACAruC,OAAA,OAAAvU,IAAA,CAAAw3B,QAAA,MAAA8kB,OAAA,MACA,QAAAilC,GAAA,SAAAA,KACAilE,EAAAhiJ,EAAAs4B,SAAA,IAAA1iC,KAAAgoJ,eACAtlH,WAAA95B,YAAA,qBACAwjJ,EAAA9qJ,KAAA,yDACAoV,KAAA,gBAEA1W,KAAA4nJ,gBAAAxuJ,EAAA8N,IAAAlH,KAAA4nJ,iBAGA,SAAAp7I,GACA,OAAAA,IAAA63B,EAAA,KAAA73B,CACA,IACA,EAKAghJ,mBAAA,SAAAnpH,GACA,IAAA8iD,EAAAilE,EACAhiJ,EAAAhR,EAAAirC,GACA8xF,EAAA/8H,EAAAkC,KAAA+oC,EAAA,cAEAj6B,EAAAq4B,SAAAziC,KAAAssJ,mBAKA,WADAnlE,EAAA9iD,EAAA8iD,SAAA7sF,gBAEA+pC,EAAAyhG,UAAA,EACA3P,EAAAjrH,QAAAiP,OAAA,UACA/X,MAAA,WACApC,KAAA8lI,UAAA,CACA,IAAAt9E,MACAruC,OAAA,OAAAvU,IAAA,CAAAw3B,QAAA,MAAA8kB,OAAA,aACA,QAAAilC,GAAA,SAAAA,KACAilE,EAAAhiJ,EAAAs4B,SAAA,IAAA1iC,KAAAgoJ,eACAtlH,WAAA/8B,SAAA,qBACAymJ,EAAA9qJ,KAAA,yDACAoV,KAAA,gBAEA1W,KAAA4nJ,gBAAAxuJ,EAAA8N,IAAAlH,KAAA4nJ,iBAGA,SAAAp7I,GACA,OAAAA,IAAA63B,EAAA,KAAA73B,CACA,IACAxM,KAAA4nJ,gBAAA5nJ,KAAA4nJ,gBAAAlvJ,QAAA2rC,EACA,EAMA8nH,sBAAA,SAAA9nH,GACA,IAAAA,EACA,SAEA,QAAA5rC,EAAA,EAAAA,EAAAuH,KAAA4nJ,gBAAAlvJ,OAAAD,IACA,GAAAuH,KAAA4nJ,gBAAAnvJ,KAAA4rC,EACA,SAGA,QACA,EAOA4qH,SAAA,SAAA5qH,GACA,IACA,OAAAjrC,EAAAkC,KAAA+oC,EAAA,aACA,OAAA1e,GACA,gDACA,CACA,EAWAupI,kBAAA,SAAA7qH,EAAA/rC,EAAAkU,GACA,IAAAgnB,EAAAw2E,EAAA6gD,EAAAC,EACA30B,EAAAn2H,KAAAivJ,SAAA5qH,GAEA,OAAAnjC,UAAAxI,QAAA,iBAAAJ,EACA,mBAAAA,EAAAc,EAAAuG,OAAA,GAAAvG,EAAA8yJ,WAAA1C,WACArzB,EAAA,QAAA79H,EAAAc,EAAAuG,OAAA,GAAAw2H,EAAA3iG,UACAxzB,KAAAytJ,KAAAt3B,EAAA79H,GAAA,KAGAk7B,EAAAl7B,GAAA,GACA,iBAAAA,KACAk7B,EAAA,IACAl7B,GAAAkU,GAGA2pH,IACAn2H,KAAA2nJ,WAAAxxB,GACAn2H,KAAA6tJ,kBAGA7jD,EAAAhqG,KAAAmvJ,mBAAA9qH,GAAA,GACAwmH,EAAA7qJ,KAAAovJ,eAAAj5B,EAAA,OACA20B,EAAA9qJ,KAAAovJ,eAAAj5B,EAAA,OACAk2B,EAAAl2B,EAAA3iG,YAGA,OAAAq3H,QAAAzkJ,IAAAotB,EAAA7uB,iBAAAyB,IAAAotB,EAAAq3H,UACA10B,EAAA3iG,SAAAq3H,QAAA7qJ,KAAAkuJ,YAAA/3B,EAAA00B,IAEA,OAAAC,QAAA1kJ,IAAAotB,EAAA7uB,iBAAAyB,IAAAotB,EAAAs3H,UACA30B,EAAA3iG,SAAAs3H,QAAA9qJ,KAAAkuJ,YAAA/3B,EAAA20B,IAEA,aAAAt3H,IACAA,EAAAsyG,SACA9lI,KAAAwtJ,mBAAAnpH,GAEArkC,KAAAgvJ,kBAAA3qH,IAGArkC,KAAAmtJ,aAAA/zJ,EAAAirC,GAAA8xF,GACAn2H,KAAAutJ,UAAAp3B,GACAn2H,KAAAouJ,SAAAj4B,EAAAnsB,GACAhqG,KAAAuuJ,iBAAAp4B,GACAn2H,KAAAsuJ,kBAAAn4B,GAEA,EAGAk5B,kBAAA,SAAAhrH,EAAA/rC,EAAAkU,GACAxM,KAAAkvJ,kBAAA7qH,EAAA/rC,EAAAkU,EACA,EAKA8iJ,mBAAA,SAAAjrH,GACA,IAAA8xF,EAAAn2H,KAAAivJ,SAAA5qH,GACA8xF,GACAn2H,KAAAsuJ,kBAAAn4B,EAEA,EAMAo5B,mBAAA,SAAAlrH,EAAA2lE,GACA,IAAAmsB,EAAAn2H,KAAAivJ,SAAA5qH,GACA8xF,IACAn2H,KAAAouJ,SAAAj4B,EAAAnsB,GACAhqG,KAAAsuJ,kBAAAn4B,GACAn2H,KAAAuuJ,iBAAAp4B,GAEA,EAOAg5B,mBAAA,SAAA9qH,EAAAmrH,GACA,IAAAr5B,EAAAn2H,KAAAivJ,SAAA5qH,GAIA,OAHA8xF,MAAAi2B,QACApsJ,KAAAyvJ,kBAAAt5B,EAAAq5B,GAEAr5B,EAAAn2H,KAAA0vJ,SAAAv5B,GAAA,IACA,EAGAi3B,WAAA,SAAA1sJ,GACA,IAAAuqJ,EAAA0E,EAAAC,EACAz5B,EAAA/8H,EAAA8yJ,WAAA+C,SAAAvuJ,EAAA2jC,QACA+H,GAAA,EACA+8G,EAAAhzB,EAAA41B,MAAAznH,GAAA,sBAGA,GADA6xF,EAAA6rB,WAAA,EACA5oJ,EAAA8yJ,WAAArE,mBACA,OAAAnnJ,EAAA4lD,SACA,OAAAltD,EAAA8yJ,WAAA2B,kBACAzhH,GAAA,EACA,MACA,QAgBA,OAhBAwjH,EAAAx2J,EAAA,MAAAA,EAAA8yJ,WAAA3D,cAAA,SACAnvJ,EAAA8yJ,WAAA5D,cAAA,IAAAnyB,EAAA41B,QACA,IACA3yJ,EAAA8yJ,WAAA2D,WAAAnvJ,EAAA2jC,OAAA8xF,EAAA42B,cAAA52B,EAAA62B,aAAA4C,EAAA,KAGA3E,EAAA7xJ,EAAA8yJ,WAAAuB,KAAAt3B,EAAA,cAEAw5B,EAAAv2J,EAAA8yJ,WAAAgC,YAAA/3B,GAGA80B,EAAAhqJ,MAAAk1H,EAAAplF,MAAAolF,EAAAplF,MAAA,SAAA4+G,EAAAx5B,KAEA/8H,EAAA8yJ,WAAA2B,mBAGA,EACA,QAAAz0J,EAAA8yJ,WAAA2B,kBACA,MACA,QAAAz0J,EAAA8yJ,WAAA4D,YAAApvJ,EAAA2jC,OAAA3jC,EAAAy7I,SACA/iJ,EAAA8yJ,WAAAuB,KAAAt3B,EAAA,kBACA/8H,EAAA8yJ,WAAAuB,KAAAt3B,EAAA,mBACA,MACA,QAAA/8H,EAAA8yJ,WAAA4D,YAAApvJ,EAAA2jC,OAAA3jC,EAAAy7I,SACA/iJ,EAAA8yJ,WAAAuB,KAAAt3B,EAAA,kBACA/8H,EAAA8yJ,WAAAuB,KAAAt3B,EAAA,mBACA,MACA,SAAAz1H,EAAAy7I,SAAAz7I,EAAA4iJ,UACAlqJ,EAAA8yJ,WAAA6D,WAAArvJ,EAAA2jC,QAEA+H,EAAA1rC,EAAAy7I,SAAAz7I,EAAA4iJ,QACA,MACA,SAAA5iJ,EAAAy7I,SAAAz7I,EAAA4iJ,UACAlqJ,EAAA8yJ,WAAA8D,WAAAtvJ,EAAA2jC,QAEA+H,EAAA1rC,EAAAy7I,SAAAz7I,EAAA4iJ,QACA,MACA,SAAA5iJ,EAAAy7I,SAAAz7I,EAAA4iJ,UACAlqJ,EAAA8yJ,WAAA4D,YAAApvJ,EAAA2jC,OAAA8kH,EAAA,UAEA/8G,EAAA1rC,EAAAy7I,SAAAz7I,EAAA4iJ,QAGA5iJ,EAAA85B,cAAA0hH,QACA9iJ,EAAA8yJ,WAAA4D,YAAApvJ,EAAA2jC,OAAA3jC,EAAAy7I,SACA/iJ,EAAA8yJ,WAAAuB,KAAAt3B,EAAA,kBACA/8H,EAAA8yJ,WAAAuB,KAAAt3B,EAAA,mBAIA,MACA,SAAAz1H,EAAAy7I,SAAAz7I,EAAA4iJ,UACAlqJ,EAAA8yJ,WAAA4D,YAAApvJ,EAAA2jC,QAAA,OAEA+H,EAAA1rC,EAAAy7I,SAAAz7I,EAAA4iJ,QACA,MACA,SAAA5iJ,EAAAy7I,SAAAz7I,EAAA4iJ,UACAlqJ,EAAA8yJ,WAAA4D,YAAApvJ,EAAA2jC,OAAA8kH,GAAA,SAEA/8G,EAAA1rC,EAAAy7I,SAAAz7I,EAAA4iJ,QAGA5iJ,EAAA85B,cAAA0hH,QACA9iJ,EAAA8yJ,WAAA4D,YAAApvJ,EAAA2jC,OAAA3jC,EAAAy7I,SACA/iJ,EAAA8yJ,WAAAuB,KAAAt3B,EAAA,kBACA/8H,EAAA8yJ,WAAAuB,KAAAt3B,EAAA,mBAIA,MACA,SAAAz1H,EAAAy7I,SAAAz7I,EAAA4iJ,UACAlqJ,EAAA8yJ,WAAA4D,YAAApvJ,EAAA2jC,OAAA,OAEA+H,EAAA1rC,EAAAy7I,SAAAz7I,EAAA4iJ,QACA,MACA,QAAAl3G,GAAA,OAEA,KAAA1rC,EAAA4lD,SAAA5lD,EAAAy7I,QACA/iJ,EAAA8yJ,WAAAwB,gBAAA1tJ,MAEAosC,GAAA,EAGAA,IACA1rC,EAAA6jC,iBACA7jC,EAAA4qD,kBAEA,EAGA+hG,YAAA,SAAA3sJ,GACA,IAAAo4E,EAAAm3E,EACA95B,EAAA/8H,EAAA8yJ,WAAA+C,SAAAvuJ,EAAA2jC,QAEA,GAAAjrC,EAAA8yJ,WAAAuB,KAAAt3B,EAAA,kBAGA,OAFAr9C,EAAA1/E,EAAA8yJ,WAAAgE,eAAA92J,EAAA8yJ,WAAAuB,KAAAt3B,EAAA,eACA85B,EAAAt9G,OAAAyiB,aAAA,MAAA10D,EAAAyvJ,SAAAzvJ,EAAA4lD,QAAA5lD,EAAAyvJ,UACAzvJ,EAAAy7I,SAAAz7I,EAAA4iJ,SAAA2M,EAAA,MAAAn3E,KAAAhgF,QAAAm3J,IAAA,CAEA,EAGA3C,SAAA,SAAA5sJ,GACA,IACAy1H,EAAA/8H,EAAA8yJ,WAAA+C,SAAAvuJ,EAAA2jC,QAEA,GAAA8xF,EAAAplF,MAAA+H,QAAAq9E,EAAAi6B,QACA,IACAh3J,EAAA8yJ,WAAAmE,UAAAj3J,EAAA8yJ,WAAAuB,KAAAt3B,EAAA,cACAA,EAAAplF,MAAAolF,EAAAplF,MAAA+H,MAAA,KACA1/C,EAAA8yJ,WAAAoE,iBAAAn6B,MAGA/8H,EAAA8yJ,WAAAuD,kBAAAt5B,GACA/8H,EAAA8yJ,WAAAqC,iBAAAp4B,GACA/8H,EAAA8yJ,WAAAoC,kBAAAn4B,GAEA,OAAAxwG,GACA,CAEA,QACA,EAOA+nI,gBAAA,SAAA38G,GAUA,IAAAolF,EAAA60B,EAAAuF,EAAAC,EACAn0G,EAAAqtG,EAAAniG,GATA,WADAxW,IAAA1M,QAAA0M,GACAo2C,SAAA7sF,gBACAy2C,EAAA33C,EAAA,QAAA23C,EAAA5f,YAAA,IAGA/3B,EAAA8yJ,WAAAC,sBAAAp7G,IAAA33C,EAAA8yJ,WAAA0B,aAAA78G,KAOAolF,EAAA/8H,EAAA8yJ,WAAA+C,SAAAl+G,GACA33C,EAAA8yJ,WAAAvE,UAAAvuJ,EAAA8yJ,WAAAvE,WAAAxxB,IACA/8H,EAAA8yJ,WAAAvE,SAAAoE,MAAArnI,MAAA,MACAyxG,GAAA/8H,EAAA8yJ,WAAArE,oBACAzuJ,EAAA8yJ,WAAA2B,gBAAAz0J,EAAA8yJ,WAAAvE,SAAA52G,MAAA,MAMA,KADAw/G,GADAvF,EAAA5xJ,EAAA8yJ,WAAAuB,KAAAt3B,EAAA,eACA60B,EAAA/pJ,MAAA8vC,EAAA,CAAAA,EAAAolF,IAAA,MAIAk2B,EAAAl2B,EAAA3iG,SAAA+8H,GAEAp6B,EAAAi6B,QAAA,KACAh3J,EAAA8yJ,WAAA0B,WAAA78G,EACA33C,EAAA8yJ,WAAAuD,kBAAAt5B,GAEA/8H,EAAA8yJ,WAAApE,YACA/2G,EAAAvkC,MAAA,IAEApT,EAAA8yJ,WAAA2C,OACAz1J,EAAA8yJ,WAAA2C,KAAAz1J,EAAA8yJ,WAAAuE,SAAA1/G,GACA33C,EAAA8yJ,WAAA2C,KAAA,IAAA99G,EAAArN,cAGA8sH,GAAA,EACAp3J,EAAA23C,GAAAspG,UAAAj4I,MAAA,WAEA,QADAouJ,GAAA,UAAAp3J,EAAA4G,MAAA4F,IAAA,YAEA,IAEAy2C,EAAA,CAAA51C,KAAArN,EAAA8yJ,WAAA2C,KAAA,GAAAnoJ,IAAAtN,EAAA8yJ,WAAA2C,KAAA,IACAz1J,EAAA8yJ,WAAA2C,KAAA,KAGA14B,EAAA41B,MAAAtxG,QAGA07E,EAAA41B,MAAAnmJ,IAAA,CAAAzB,SAAA,WAAA0I,QAAA,QAAAnG,IAAA,YACAtN,EAAA8yJ,WAAAoC,kBAAAn4B,GAIA95E,EAAAjjD,EAAA8yJ,WAAAwE,aAAAv6B,EAAA95E,EAAAm0G,GACAr6B,EAAA41B,MAAAnmJ,IAAA,CAAAzB,SAAA/K,EAAA8yJ,WAAApE,WAAA1uJ,EAAA01J,QACA,SAAA0B,EAAA,mBAAA3jJ,QAAA,OACApG,KAAA41C,EAAA51C,KAAA,KAAAC,IAAA21C,EAAA31C,IAAA,OAEAyvH,EAAAi2B,SACA1C,EAAAtwJ,EAAA8yJ,WAAAuB,KAAAt3B,EAAA,YACA5uE,EAAAnuD,EAAA8yJ,WAAAuB,KAAAt3B,EAAA,YACAA,EAAA41B,MAAAnmJ,IAAA,UAryBA,SAAAo+H,GAEA,IADA,IAAA7/H,EAAAqI,EACAw3H,EAAAtrI,QAAAsrI,EAAA,KAAA9rI,UAAA,CAMA,kBADAiM,EAAA6/H,EAAAp+H,IAAA,cACA,aAAAzB,GAAA,UAAAA,KAMAqI,EAAA0M,SAAA8qH,EAAAp+H,IAAA,eACAqkG,MAAAz9F,IAAA,IAAAA,GACA,OAAAA,EAGAw3H,IAAAn+H,QACA,CAEA,QACA,CA8wBA8qJ,CAAAv3J,EAAA23C,IAAA,GACA33C,EAAA8yJ,WAAArE,oBAAA,EAEAzuJ,EAAA65F,SAAA75F,EAAA65F,QAAAX,OAAAo3D,GACAvzB,EAAA41B,MAAAjjJ,KAAA4gJ,EAAAtwJ,EAAA8yJ,WAAAuB,KAAAt3B,EAAA,eAAA5uE,GAEA4uE,EAAA41B,MAAArC,GAAA,QAAAA,EAAAniG,EAAA,MAGAnuD,EAAA8yJ,WAAA0E,kBAAAz6B,IACAA,EAAAplF,MAAA7lC,QAAA,SAGA9R,EAAA8yJ,WAAAvE,SAAAxxB,IAEA,EAGAm4B,kBAAA,SAAAn4B,GACAn2H,KAAAusJ,QAAA,EACA9E,EAAAtxB,EACAA,EAAA41B,MAAAtxG,QAAA5O,OAAA7rC,KAAA6wJ,cAAA16B,IACAn2H,KAAA8wJ,gBAAA36B,GAEA,IAAA46B,EACAC,EAAAhxJ,KAAAixJ,mBAAA96B,GACA+6B,EAAAF,EAAA,GAEAG,EAAAh7B,EAAA41B,MAAAzqJ,KAAA,IAAAtB,KAAAuoJ,cAAA,MACA6C,EAAAhyJ,EAAA8yJ,WAAAuB,KAAAt3B,EAAA,sBAEAg7B,EAAAz4J,OAAA,GACAuzJ,EAAAhrJ,MAAAkwJ,EAAA94J,IAAA,IAGA89H,EAAA41B,MAAAnjJ,YAAA,qEAAAoE,MAAA,IACAkkJ,EAAA,GACA/6B,EAAA41B,MAAApmJ,SAAA,uBAAAurJ,GAAAtrJ,IAAA,QAVA,GAUAsrJ,EAAA,MAEA/6B,EAAA41B,OAAA,IAAAiF,EAAA,QAAAA,EAAA,mBACA,gCACA76B,EAAA41B,OAAA/rJ,KAAAytJ,KAAAt3B,EAAA,yBACA,8BAEAA,IAAA/8H,EAAA8yJ,WAAAvE,UAAAvuJ,EAAA8yJ,WAAArE,oBAAAzuJ,EAAA8yJ,WAAA0E,kBAAAz6B,IACAA,EAAAplF,MAAA7lC,QAAA,SAIAirH,EAAAi7B,YACAL,EAAA56B,EAAAi7B,UACAzsI,YAAA,WAGAosI,IAAA56B,EAAAi7B,WAAAj7B,EAAAi7B,WACAj7B,EAAA41B,MAAAzqJ,KAAA,6BAAAiZ,QAAAi5H,YAAArd,EAAAi7B,WAEAL,EAAA56B,EAAAi7B,UAAA,IACA,OAGAhG,GACAA,EAAAnqJ,MAAAk1H,EAAAplF,MAAAolF,EAAAplF,MAAA,SAAAolF,GAEA,EAEAy6B,kBAAA,SAAAz6B,GACA,OAAAA,EAAAplF,OAAAolF,EAAAplF,MAAAzM,GAAA,cAAA6xF,EAAAplF,MAAAzM,GAAA,YACA,EAGAosH,aAAA,SAAAv6B,EAAA95E,EAAAm0G,GACA,IAAAa,EAAAl7B,EAAA41B,MAAAn0I,aACA05I,EAAAn7B,EAAA41B,MAAAl0I,cACA05I,EAAAp7B,EAAAplF,MAAAolF,EAAAplF,MAAAn5B,aAAA,EACA45I,EAAAr7B,EAAAplF,MAAAolF,EAAAplF,MAAAl5B,cAAA,EACA45I,EAAAv5J,SAAAqgB,gBAAAI,aAAA63I,EAAA,EAAAp3J,EAAAlB,UAAAkuC,cACAsrH,EAAAx5J,SAAAqgB,gBAAAM,cAAA23I,EAAA,EAAAp3J,EAAAlB,UAAA4V,aAYA,OAVAuuC,EAAA51C,MAAAzG,KAAAytJ,KAAAt3B,EAAA,SAAAk7B,EAAAE,EAAA,EACAl1G,EAAA51C,MAAA+pJ,GAAAn0G,EAAA51C,OAAA0vH,EAAAplF,MAAAsL,SAAA51C,KAAArN,EAAAlB,UAAAkuC,aAAA,EACAiW,EAAA31C,KAAA8pJ,GAAAn0G,EAAA31C,MAAAyvH,EAAAplF,MAAAsL,SAAA31C,IAAA8qJ,EAAAp4J,EAAAlB,UAAA4V,YAAA,EAGAuuC,EAAA51C,MAAAsO,KAAAsd,IAAAgqB,EAAA51C,KAAA41C,EAAA51C,KAAA4qJ,EAAAI,KAAAJ,EACAt8I,KAAAD,IAAAunC,EAAA51C,KAAA4qJ,EAAAI,GAAA,GACAp1G,EAAA31C,KAAAqO,KAAAsd,IAAAgqB,EAAA31C,IAAA21C,EAAA31C,IAAA4qJ,EAAAI,KAAAJ,EACAv8I,KAAAD,IAAAw8I,EAAAE,GAAA,GAEAn1G,CACA,EAGAo0G,SAAA,SAAArwJ,GAKA,IAJA,IAAA+D,EACAgyH,EAAAn2H,KAAAivJ,SAAA7uJ,GACA+oJ,EAAAnpJ,KAAAytJ,KAAAt3B,EAAA,SAEA/1H,IAAA,WAAAA,EAAAsF,MAAA,IAAAtF,EAAAoxC,UAAAp4C,EAAAorI,KAAAC,QAAAl7H,OAAAnJ,KACAA,IAAA+oJ,EAAA,iCAIA,QADAhlJ,EAAA/K,EAAAgH,GAAAi8C,UACA51C,KAAAtC,EAAAuC,IACA,EAKAmnJ,gBAAA,SAAA98G,GACA,IAAA24G,EAAAniG,EAAAoqG,EAAAxG,EACAh1B,EAAAn2H,KAAA2nJ,UAEAxxB,GAAAplF,GAAAolF,IAAA/8H,EAAAkC,KAAAy1C,EAAA,eAIA/wC,KAAA6nJ,qBACA6B,EAAA1pJ,KAAAytJ,KAAAt3B,EAAA,YACA5uE,EAAAvnD,KAAAytJ,KAAAt3B,EAAA,YACAw7B,EAAA,WACAv4J,EAAA8yJ,WAAA0F,YAAAz7B,EACA,EAEA/8H,EAAA65F,SAAA75F,EAAA65F,QAAAX,OAAAo3D,GACAvzB,EAAA41B,MAAAviJ,KAAAkgJ,EAAAtwJ,EAAA8yJ,WAAAuB,KAAAt3B,EAAA,eAAA5uE,EAAAoqG,GAEAx7B,EAAA41B,MAAA,cAAArC,EAAA,UACA,WAAAA,EAAA,kBAAAA,EAAAniG,EAAA,KAAAoqG,GAGAjI,GACAiI,IAEA3xJ,KAAA6nJ,oBAAA,GAEAsD,EAAAnrJ,KAAAytJ,KAAAt3B,EAAA,aAEAg1B,EAAAlqJ,MAAAk1H,EAAAplF,MAAAolF,EAAAplF,MAAA,SAAAolF,EAAAplF,MAAAolF,EAAAplF,MAAA+H,MAAA,GAAAq9E,IAGAn2H,KAAA4tJ,WAAA,KACA5tJ,KAAA8nJ,YACA9nJ,KAAA4uJ,aAAAhpJ,IAAA,CAAAzB,SAAA,WAAAsC,KAAA,IAAAC,IAAA,WACAtN,EAAA01J,UACA11J,EAAAy4J,YACAz4J,EAAA,QAAAyyC,OAAA7rC,KAAA+rJ,SAGA/rJ,KAAA8nJ,WAAA,EAEA,EAGA8J,YAAA,SAAAz7B,GACAA,EAAA41B,MAAAnjJ,YAAA5I,KAAAmoJ,cAAA39I,IAAA,0BACA,EAGAsnJ,oBAAA,SAAApxJ,GACA,GAAAtH,EAAA8yJ,WAAAvE,SAAA,CAIA,IAAAv9I,EAAAhR,EAAAsH,EAAA2jC,QACA8xF,EAAA/8H,EAAA8yJ,WAAA+C,SAAA7kJ,EAAA,KAEAA,EAAA,GAAAxP,KAAAxB,EAAA8yJ,WAAAnE,YACA,IAAA39I,EAAAiwI,QAAA,IAAAjhJ,EAAA8yJ,WAAAnE,YAAArvJ,QACA0R,EAAAq4B,SAAArpC,EAAA8yJ,WAAAI,kBACAliJ,EAAA0lE,QAAA,IAAA12E,EAAA8yJ,WAAAhE,eAAAxvJ,SACAU,EAAA8yJ,WAAArE,oBAAAzuJ,EAAA8yJ,WAAApE,WAAA1uJ,EAAA01J,YACA1kJ,EAAAq4B,SAAArpC,EAAA8yJ,WAAAI,kBAAAlzJ,EAAA8yJ,WAAAvE,WAAAxxB,IACA/8H,EAAA8yJ,WAAA2B,iBAXA,CAaA,EAGAiC,YAAA,SAAAl1J,EAAAyhD,EAAA01G,GACA,IAAA1tH,EAAAjrC,EAAAwB,GACAu7H,EAAAn2H,KAAAivJ,SAAA5qH,EAAA,IAEArkC,KAAAmsJ,sBAAA9nH,EAAA,MAGArkC,KAAAgyJ,gBAAA77B,EAAA95E,EAAA01G,GACA/xJ,KAAAsuJ,kBAAAn4B,GACA,EAGA65B,WAAA,SAAAp1J,GACA,IAAAovG,EACA3lE,EAAAjrC,EAAAwB,GACAu7H,EAAAn2H,KAAAivJ,SAAA5qH,EAAA,IAEArkC,KAAAytJ,KAAAt3B,EAAA,gBAAAA,EAAA87B,YACA97B,EAAA22B,YAAA32B,EAAA87B,WACA97B,EAAA82B,UAAA92B,EAAA42B,cAAA52B,EAAA+7B,aACA/7B,EAAA+2B,SAAA/2B,EAAA62B,aAAA72B,EAAAg8B,cAEAnoD,EAAA,IAAAjyG,KACAo+H,EAAA22B,YAAA9iD,EAAA/xG,UACAk+H,EAAA82B,UAAA92B,EAAA42B,cAAA/iD,EAAAooD,WACAj8B,EAAA+2B,SAAA/2B,EAAA62B,aAAAhjD,EAAAqoD,eAEAryJ,KAAAsyJ,cAAAn8B,GACAn2H,KAAA8vJ,YAAAzrH,EACA,EAGAkuH,iBAAA,SAAA33J,EAAAqjJ,EAAA8T,GACA,IAAA1tH,EAAAjrC,EAAAwB,GACAu7H,EAAAn2H,KAAAivJ,SAAA5qH,EAAA,IAEA8xF,EAAA,kBAAA47B,EAAA,iBACA57B,EAAA,cAAA47B,EAAA,iBACA74I,SAAA+kI,EAAA96H,QAAA86H,EAAAj9D,eAAAx0E,MAAA,IAEAxM,KAAAsyJ,cAAAn8B,GACAn2H,KAAA8vJ,YAAAzrH,EACA,EAGAwrH,WAAA,SAAAj1J,EAAA4rG,EAAAD,EAAAisD,GACA,IAAAr8B,EACA9xF,EAAAjrC,EAAAwB,GAEAxB,EAAAo5J,GAAA/vH,SAAAziC,KAAAqoJ,qBAAAroJ,KAAAmsJ,sBAAA9nH,EAAA,OAIA8xF,EAAAn2H,KAAAivJ,SAAA5qH,EAAA,KACAyoH,YAAA32B,EAAA87B,WAAA/4I,SAAA9f,EAAA,IAAAo5J,GAAAvqH,KAAA,cACAkuF,EAAA42B,cAAA52B,EAAA+7B,aAAA1rD,EACA2vB,EAAA62B,aAAA72B,EAAAg8B,YAAA5rD,EACAvmG,KAAAyyJ,YAAA73J,EAAAoF,KAAAkuJ,YAAA/3B,EACAA,EAAA87B,WAAA97B,EAAA+7B,aAAA/7B,EAAAg8B,cACA,EAGApC,WAAA,SAAAn1J,GACA,IAAAypC,EAAAjrC,EAAAwB,GACAoF,KAAAyyJ,YAAApuH,EAAA,GACA,EAGAouH,YAAA,SAAA73J,EAAA+0J,GACA,IAAA1E,EACA5mH,EAAAjrC,EAAAwB,GACAu7H,EAAAn2H,KAAAivJ,SAAA5qH,EAAA,IAEAsrH,EAAA,MAAAA,IAAA3vJ,KAAAkuJ,YAAA/3B,GACAA,EAAAplF,OACAolF,EAAAplF,MAAA+H,IAAA62G,GAEA3vJ,KAAAuuJ,iBAAAp4B,IAEA80B,EAAAjrJ,KAAAytJ,KAAAt3B,EAAA,aAEA80B,EAAAhqJ,MAAAk1H,EAAAplF,MAAAolF,EAAAplF,MAAA,SAAA4+G,EAAAx5B,IACAA,EAAAplF,OACAolF,EAAAplF,MAAA7lC,QAAA,UAGAirH,EAAAi2B,OACApsJ,KAAAsuJ,kBAAAn4B,IAEAn2H,KAAA6tJ,kBACA7tJ,KAAA4tJ,WAAAz3B,EAAAplF,MAAA,GACA,iBAAAolF,EAAAplF,MAAA,IACAolF,EAAAplF,MAAA7lC,QAAA,SAEAlL,KAAA4tJ,WAAA,KAEA,EAGAW,iBAAA,SAAAp4B,GACA,IAAAu1B,EAAA1hD,EAAA2lD,EACAlE,EAAAzrJ,KAAAytJ,KAAAt3B,EAAA,YAEAs1B,IACAC,EAAA1rJ,KAAAytJ,KAAAt3B,EAAA,cAAAn2H,KAAAytJ,KAAAt3B,EAAA,cACAnsB,EAAAhqG,KAAA0vJ,SAAAv5B,GACAw5B,EAAA3vJ,KAAA0yJ,WAAAhH,EAAA1hD,EAAAhqG,KAAAswJ,iBAAAn6B,IACA/8H,EAAAlB,UAAAoJ,KAAAmqJ,GAAA3yG,IAAA62G,GAEA,EAMAgD,WAAA,SAAA3oD,GACA,IAAAvD,EAAAuD,EAAAikD,SACA,OAAAxnD,EAAA,GAAAA,EAAA,KACA,EAMAkkD,YAAA,SAAA3gD,GACA,IAAA90B,EACA09E,EAAA,IAAA76J,KAAAiyG,EAAAxoF,WAQA,OALAoxI,EAAA56J,QAAA46J,EAAA36J,UAAA,GAAA26J,EAAA3E,UAAA,IAEA/4E,EAAA09E,EAAApxI,UACAoxI,EAAA5E,SAAA,GACA4E,EAAA56J,QAAA,GACA+c,KAAAM,MAAAN,KAAA81C,OAAAqqB,EAAA09E,GAAA,WACA,EAeAvC,UAAA,SAAA1wI,EAAAnT,EAAAgnB,GACA,SAAA7T,GAAA,MAAAnT,EACA,yBAIA,SADAA,EAAA,iBAAAA,IAAAiE,WAAAjE,EAAA,IAEA,YAGA,IAAAqmJ,EAAAC,EAAAh+F,EAcAk1C,EAbA+oD,EAAA,EACAC,GAAAx/H,IAAAo3H,gBAAA,OAAA5qJ,KAAAwpJ,UAAAoB,gBACAA,EAAA,iBAAAoI,KACA,IAAAj7J,MAAAs6J,cAAA,IAAAn5I,SAAA85I,EAAA,IACAhK,GAAAx1H,IAAAw1H,cAAA,OAAAhpJ,KAAAwpJ,UAAAR,cACAD,GAAAv1H,IAAAu1H,SAAA,OAAA/oJ,KAAAwpJ,UAAAT,SACAD,GAAAt1H,IAAAs1H,gBAAA,OAAA9oJ,KAAAwpJ,UAAAV,gBACAD,GAAAr1H,IAAAq1H,WAAA,OAAA7oJ,KAAAwpJ,UAAAX,WACAtiD,GAAA,EACAC,GAAA,EACAC,GAAA,EACAwsD,GAAA,EACA91C,GAAA,EAIA+1C,EAAA,SAAAxgJ,GACA,IAAA2E,EAAAw7I,EAAA,EAAAlzI,EAAAjnB,QAAAinB,EAAA/mB,OAAAi6J,EAAA,KAAAngJ,EAIA,OAHA2E,GACAw7I,IAEAx7I,CACA,EAGA87I,EAAA,SAAAzgJ,GACA,IAAA0gJ,EAAAF,EAAAxgJ,GACApO,EAAA,MAAAoO,EAAA,SAAAA,EAAA,GACA,MAAAA,GAAA0gJ,EAAA,QAAA1gJ,EAAA,IAEAutD,EAAA,IAAA1tD,OAAA,SADA,MAAAG,EAAApO,EAAA,GACA,IAAAA,EAAA,KACA06G,EAAAxyG,EAAA3T,UAAAk6J,GAAArgJ,MAAAutD,GACA,IAAA++C,EACA,mCAAA+zC,EAGA,OADAA,GAAA/zC,EAAA,GAAAtmH,OACAwgB,SAAA8lG,EAAA,MACA,EAGAq0C,EAAA,SAAA3gJ,EAAA4gJ,EAAAC,GACA,IAAA/xJ,GAAA,EACA6uI,EAAAj3I,EAAA8N,IAAAgsJ,EAAAxgJ,GAAA6gJ,EAAAD,GAAA,SAAAjuG,EAAA82D,GACA,QAAAA,EAAA92D,GACA,IAAAqnE,MAAA,SAAAh6F,EAAAg/B,GACA,QAAAh/B,EAAA,GAAAh6B,OAAAg5D,EAAA,GAAAh5D,OACA,IAUA,GARAU,EAAAgJ,KAAAiuI,GAAA,SAAA53I,EAAAiiH,GACA,IAAApiH,EAAAoiH,EAAA,GACA,GAAAluG,EAAA2J,OAAA48I,EAAAz6J,EAAAI,QAAA4B,gBAAAhC,EAAAgC,cAGA,OAFAkH,EAAAk5G,EAAA,GACAq4C,GAAAz6J,EAAAI,QACA,CAEA,KACA,IAAA8I,EACA,OAAAA,EAAA,EAEA,iCAAAuxJ,CAEA,EAGAS,EAAA,WACA,GAAAhnJ,EAAA5T,OAAAm6J,KAAApzI,EAAA/mB,OAAAi6J,GACA,uCAAAE,EAEAA,GACA,EAEA,IAAAF,EAAA,EAAAA,EAAAlzI,EAAAjnB,OAAAm6J,IACA,GAAA11C,EACA,MAAAx9F,EAAA/mB,OAAAi6J,IAAAK,EAAA,KAGAM,IAFAr2C,GAAA,OAKA,OAAAx9F,EAAA/mB,OAAAi6J,IACA,QACApsD,EAAA0sD,EAAA,KACA,MACA,QACAE,EAAA,IAAArK,EAAAD,GACA,MACA,QACAkK,EAAAE,EAAA,KACA,MACA,QACA3sD,EAAA2sD,EAAA,KACA,MACA,QACA3sD,EAAA6sD,EAAA,IAAAvK,EAAAD,GACA,MACA,QACAtiD,EAAA4sD,EAAA,KACA,MACA,QAEA5sD,GADAyD,EAAA,IAAAjyG,KAAAo7J,EAAA,OACAd,cACA7rD,EAAAwD,EAAAooD,WAAA,EACA3rD,EAAAuD,EAAA/xG,UACA,MACA,QAEAsuG,GADAyD,EAAA,IAAAjyG,MAAAo7J,EAAA,KAAAnzJ,KAAAyzJ,cAAA,MACApB,cACA7rD,EAAAwD,EAAAooD,WAAA,EACA3rD,EAAAuD,EAAA/xG,UACA,MACA,QACAi7J,EAAA,KACAM,IAEAr2C,GAAA,EAEA,MACA,QACAq2C,IAKA,GAAAT,EAAAvmJ,EAAA9T,SACAo8D,EAAAtoD,EAAA2J,OAAA48I,IACA,OAAA54J,KAAA26D,IACA,iDAAAA,EAWA,IAPA,IAAAyxC,EACAA,GAAA,IAAAxuG,MAAAs6J,cACA9rD,EAAA,MACAA,IAAA,IAAAxuG,MAAAs6J,eAAA,IAAAt6J,MAAAs6J,cAAA,KACA9rD,GAAAqkD,EAAA,SAGAqI,GAAA,EAGA,IAFAzsD,EAAA,EACAC,EAAAwsD,IACA,CAEA,GAAAxsD,IADAqsD,EAAA9yJ,KAAA0zJ,gBAAAntD,EAAAC,EAAA,IAEA,MAEAA,IACAC,GAAAqsD,CACA,CAIA,IADA9oD,EAAAhqG,KAAA2zJ,sBAAA,IAAA57J,KAAAwuG,EAAAC,EAAA,EAAAC,KACA4rD,gBAAA9rD,GAAAyD,EAAAooD,WAAA,IAAA5rD,GAAAwD,EAAA/xG,YAAAwuG,EACA,oBAEA,OAAAuD,CACA,EAGA4pD,KAAA,WACAC,OAAA,aACAC,SAAA,WACAC,QAAA,WACAC,QAAA,aACAC,SAAA,WACAC,SAAA,YACAC,SAAA,YACAC,IAAA,WACAC,MAAA,IACAC,UAAA,IACAC,IAAA,WAEAd,aACA,IADA,OAAA1+I,KAAAM,MAAA,OAAAN,KAAAM,MAAA,MACAN,KAAAM,MAAA,kBA8BAq9I,WAAA,SAAA/yI,EAAAqqF,EAAAx2E,GACA,IAAAw2E,EACA,SAGA,IAAA6oD,EACA7J,GAAAx1H,IAAAw1H,cAAA,OAAAhpJ,KAAAwpJ,UAAAR,cACAD,GAAAv1H,IAAAu1H,SAAA,OAAA/oJ,KAAAwpJ,UAAAT,SACAD,GAAAt1H,IAAAs1H,gBAAA,OAAA9oJ,KAAAwpJ,UAAAV,gBACAD,GAAAr1H,IAAAq1H,WAAA,OAAA7oJ,KAAAwpJ,UAAAX,WAGAqK,EAAA,SAAAxgJ,GACA,IAAA2E,EAAAw7I,EAAA,EAAAlzI,EAAAjnB,QAAAinB,EAAA/mB,OAAAi6J,EAAA,KAAAngJ,EAIA,OAHA2E,GACAw7I,IAEAx7I,CACA,EAGAm9I,EAAA,SAAA9hJ,EAAAlG,EAAAmsD,GACA,IAAAqmD,EAAA,GAAAxyG,EACA,GAAA0mJ,EAAAxgJ,GACA,KAAAssG,EAAAtmH,OAAAigE,GACAqmD,EAAA,IAAAA,EAGA,OAAAA,CACA,EAGAy1C,EAAA,SAAA/hJ,EAAAlG,EAAA8mJ,EAAAC,GACA,OAAAL,EAAAxgJ,GAAA6gJ,EAAA/mJ,GAAA8mJ,EAAA9mJ,EACA,EACAkoJ,EAAA,GACAv3C,GAAA,EAEA,GAAAnT,EACA,IAAA6oD,EAAA,EAAAA,EAAAlzI,EAAAjnB,OAAAm6J,IACA,GAAA11C,EACA,MAAAx9F,EAAA/mB,OAAAi6J,IAAAK,EAAA,KAGAwB,GAAA/0I,EAAA/mB,OAAAi6J,GAFA11C,GAAA,OAKA,OAAAx9F,EAAA/mB,OAAAi6J,IACA,QACA6B,GAAAF,EAAA,IAAAxqD,EAAA/xG,UAAA,GACA,MACA,QACAy8J,GAAAD,EAAA,IAAAzqD,EAAAikD,SAAAjF,EAAAD,GACA,MACA,QACA2L,GAAAF,EAAA,IACAz/I,KAAA81C,OAAA,IAAA9yD,KAAAiyG,EAAAqoD,cAAAroD,EAAAooD,WAAApoD,EAAA/xG,WAAAupB,UAAA,IAAAzpB,KAAAiyG,EAAAqoD,cAAA,KAAA7wI,WAAA,UACA,MACA,QACAkzI,GAAAF,EAAA,IAAAxqD,EAAAooD,WAAA,KACA,MACA,QACAsC,GAAAD,EAAA,IAAAzqD,EAAAooD,WAAAtJ,EAAAD,GACA,MACA,QACA6L,GAAAxB,EAAA,KAAAlpD,EAAAqoD,eACAroD,EAAAqoD,cAAA,eAAAroD,EAAAqoD,cAAA,IACA,MACA,QACAqC,GAAA1qD,EAAAxoF,UACA,MACA,QACAkzI,GAAA,IAAA1qD,EAAAxoF,UAAAxhB,KAAAyzJ,aACA,MACA,QACAP,EAAA,KACAwB,GAAA,IAEAv3C,GAAA,EAEA,MACA,QACAu3C,GAAA/0I,EAAA/mB,OAAAi6J,GAKA,OAAA6B,CACA,EAGAxE,eAAA,SAAAvwI,GACA,IAAAkzI,EACA/5E,EAAA,GACAqkC,GAAA,EAGA+1C,EAAA,SAAAxgJ,GACA,IAAA2E,EAAAw7I,EAAA,EAAAlzI,EAAAjnB,QAAAinB,EAAA/mB,OAAAi6J,EAAA,KAAAngJ,EAIA,OAHA2E,GACAw7I,IAEAx7I,CACA,EAEA,IAAAw7I,EAAA,EAAAA,EAAAlzI,EAAAjnB,OAAAm6J,IACA,GAAA11C,EACA,MAAAx9F,EAAA/mB,OAAAi6J,IAAAK,EAAA,KAGAp6E,GAAAn5D,EAAA/mB,OAAAi6J,GAFA11C,GAAA,OAKA,OAAAx9F,EAAA/mB,OAAAi6J,IACA,gCACA/5E,GAAA,aACA,MACA,gBACA,YACA,QACAo6E,EAAA,KACAp6E,GAAA,IAEAqkC,GAAA,EAEA,MACA,QACArkC,GAAAn5D,EAAA/mB,OAAAi6J,GAIA,OAAA/5E,CACA,EAGA20E,KAAA,SAAAt3B,EAAA79H,GACA,YAAA8N,IAAA+vH,EAAA3iG,SAAAl7B,GACA69H,EAAA3iG,SAAAl7B,GAAA0H,KAAAwpJ,UAAAlxJ,EACA,EAGAm3J,kBAAA,SAAAt5B,EAAAq5B,GACA,GAAAr5B,EAAAplF,MAAA+H,QAAAq9E,EAAAi6B,QAAA,CAIA,IAAAzrJ,EAAA3E,KAAAytJ,KAAAt3B,EAAA,cACAw+B,EAAAx+B,EAAAi6B,QAAAj6B,EAAAplF,MAAAolF,EAAAplF,MAAA+H,MAAA,KACA8wG,EAAA5pJ,KAAAquJ,gBAAAl4B,GACAnsB,EAAA4/C,EACAp2H,EAAAxzB,KAAAswJ,iBAAAn6B,GAEA,IACAnsB,EAAAhqG,KAAAqwJ,UAAA1rJ,EAAAgwJ,EAAAnhI,IAAAo2H,CACA,OAAAlpJ,GACAi0J,EAAAnF,EAAA,GAAAmF,CACA,CACAx+B,EAAA22B,YAAA9iD,EAAA/xG,UACAk+H,EAAA82B,UAAA92B,EAAA42B,cAAA/iD,EAAAooD,WACAj8B,EAAA+2B,SAAA/2B,EAAA62B,aAAAhjD,EAAAqoD,cACAl8B,EAAA87B,WAAA0C,EAAA3qD,EAAA/xG,UAAA,EACAk+H,EAAA+7B,aAAAyC,EAAA3qD,EAAAooD,WAAA,EACAj8B,EAAAg8B,YAAAwC,EAAA3qD,EAAAqoD,cAAA,EACAryJ,KAAAgyJ,gBAAA77B,EAnBA,CAoBA,EAGAk4B,gBAAA,SAAAl4B,GACA,OAAAn2H,KAAA40J,gBAAAz+B,EACAn2H,KAAA60J,eAAA1+B,EAAAn2H,KAAAytJ,KAAAt3B,EAAA,mBAAAp+H,MACA,EAGA88J,eAAA,SAAA1+B,EAAAnsB,EAAA4/C,GACA,IAyCAkL,EAAA,MAAA9qD,GAAA,KAAAA,EAAA4/C,EAAA,iBAAA5/C,EApCA,SAAA3tD,GACA,IACA,OAAAjjD,EAAA8yJ,WAAAmE,UAAAj3J,EAAA8yJ,WAAAuB,KAAAt3B,EAAA,cACA95E,EAAAjjD,EAAA8yJ,WAAAoE,iBAAAn6B,GACA,OAAA79G,GAGA,CAUA,IARA,IAAA0xF,GAAA3tD,EAAA/hD,cAAAoY,MAAA,MACAtZ,EAAA8yJ,WAAAwD,SAAAv5B,GAAA,WAAAp+H,KACAwuG,EAAAyD,EAAAqoD,cACA7rD,EAAAwD,EAAAooD,WACA3rD,EAAAuD,EAAA/xG,UACA8iG,EAAA,uCACA1jF,EAAA0jF,EAAAv7E,KAAA68B,GAEAhlC,GAAA,CACA,OAAAA,EAAA,SACA,gBACAovF,GAAAvtF,SAAA7B,EAAA,aACA,gBACAovF,GAAA,EAAAvtF,SAAA7B,EAAA,aACA,gBACAmvF,GAAAttF,SAAA7B,EAAA,OACAovF,EAAA1xF,KAAAsd,IAAAo0E,EAAArtG,EAAA8yJ,WAAAwH,gBAAAntD,EAAAC,IACA,MACA,gBACAD,GAAArtF,SAAA7B,EAAA,OACAovF,EAAA1xF,KAAAsd,IAAAo0E,EAAArtG,EAAA8yJ,WAAAwH,gBAAAntD,EAAAC,IAGAnvF,EAAA0jF,EAAAv7E,KAAA68B,EACA,CACA,WAAAtkD,KAAAwuG,EAAAC,EAAAC,EACA,CACAsuD,CAAA/qD,GACA,iBAAAA,EAAAC,MAAAD,GAAA4/C,EA1CA,SAAAvtG,GACA,IAAA2tD,EAAA,IAAAjyG,KAEA,OADAiyG,EAAAhyG,QAAAgyG,EAAA/xG,UAAAokD,GACA2tD,CACA,CAsCAgrD,CAAAhrD,GAAA,IAAAjyG,KAAAiyG,EAAAxoF,WASA,OAPAszI,KAAA,iBAAAA,EAAArkJ,WAAAm5I,EAAAkL,KAEAA,EAAAG,SAAA,GACAH,EAAAI,WAAA,GACAJ,EAAAK,WAAA,GACAL,EAAAM,gBAAA,IAEAp1J,KAAA2zJ,sBAAAmB,EACA,EASAnB,sBAAA,SAAA3pD,GACA,OAAAA,GAGAA,EAAAirD,SAAAjrD,EAAAqrD,WAAA,GAAArrD,EAAAqrD,WAAA,KACArrD,GAHA,IAIA,EAGAokD,SAAA,SAAAj4B,EAAAnsB,EAAAsrD,GACA,IAAAr2I,GAAA+qF,EACAurD,EAAAp/B,EAAA42B,cACAyI,EAAAr/B,EAAA62B,aACA8H,EAAA90J,KAAA40J,gBAAAz+B,EAAAn2H,KAAA60J,eAAA1+B,EAAAnsB,EAAA,IAAAjyG,OAEAo+H,EAAA22B,YAAA32B,EAAA87B,WAAA6C,EAAA78J,UACAk+H,EAAA82B,UAAA92B,EAAA42B,cAAA52B,EAAA+7B,aAAA4C,EAAA1C,WACAj8B,EAAA+2B,SAAA/2B,EAAA62B,aAAA72B,EAAAg8B,YAAA2C,EAAAzC,cACAkD,IAAAp/B,EAAA42B,eAAAyI,IAAAr/B,EAAA62B,cAAAsI,GACAt1J,KAAAsyJ,cAAAn8B,GAEAn2H,KAAAgyJ,gBAAA77B,GACAA,EAAAplF,OACAolF,EAAAplF,MAAA+H,IAAA75B,EAAA,GAAAjf,KAAAkuJ,YAAA/3B,GAEA,EAGAu5B,SAAA,SAAAv5B,GAIA,OAHAA,EAAAg8B,aAAAh8B,EAAAplF,OAAA,KAAAolF,EAAAplF,MAAA+H,MAAA,KACA94C,KAAA2zJ,sBAAA,IAAA57J,KACAo+H,EAAAg8B,YAAAh8B,EAAA+7B,aAAA/7B,EAAA87B,YAEA,EAKAnB,gBAAA,SAAA36B,GACA,IAAAo1B,EAAAvrJ,KAAAytJ,KAAAt3B,EAAA,cACAv7H,EAAA,IAAAu7H,EAAAv7H,GAAAilB,QAAA,cACAs2G,EAAA41B,MAAAzqJ,KAAA,kBAAA4F,KAAA,WACA,IAAA+H,EAAA,CACAgrD,KAAA,WACA7gE,EAAA8yJ,WAAA4D,YAAAl1J,GAAA2wJ,EAAA,IACA,EACA34F,KAAA,WACAx5D,EAAA8yJ,WAAA4D,YAAAl1J,GAAA2wJ,EAAA,IACA,EACA/hJ,KAAA,WACApQ,EAAA8yJ,WAAA2B,iBACA,EACA4H,MAAA,WACAr8J,EAAA8yJ,WAAA8D,WAAAp1J,EACA,EACA86J,UAAA,WAEA,OADAt8J,EAAA8yJ,WAAA2D,WAAAj1J,GAAAoF,KAAA83E,aAAA,eAAA93E,KAAA83E,aAAA,aAAA93E,OACA,CACA,EACA21J,YAAA,WAEA,OADAv8J,EAAA8yJ,WAAAqG,iBAAA33J,EAAAoF,KAAA,MACA,CACA,EACA41J,WAAA,WAEA,OADAx8J,EAAA8yJ,WAAAqG,iBAAA33J,EAAAoF,KAAA,MACA,CACA,GAEA5G,EAAA4G,MAAAtE,GAAAsE,KAAA83E,aAAA,cAAA7oE,EAAAjP,KAAA83E,aAAA,iBACA,GACA,EAGA+4E,cAAA,SAAA16B,GACA,IAAA0/B,EAAAnN,EAAAzuF,EAAA0uF,EAAA/1F,EAAAg2F,EAAAkN,EACA5lH,EAAA6lH,EAAApmD,EAAA86C,EAAA1B,EAAAE,EACAJ,EAAAC,EAAAiC,EAAAR,EACAC,EAAAZ,EAAA/kH,EAAAmxH,EAAA55G,EAAA65G,EAAAC,EAAA1zB,EACA2zB,EAAAC,EAAAC,EAAA5vD,EAAAwT,EAAAq8C,EAAAC,EAAAC,EACAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACAC,EAAA,IAAAh/J,KACA09J,EAAAz1J,KAAA2zJ,sBACA,IAAA57J,KAAAg/J,EAAA1E,cAAA0E,EAAA3E,WAAA2E,EAAA9+J,YACAkxJ,EAAAnpJ,KAAAytJ,KAAAt3B,EAAA,SACAy1B,EAAA5rJ,KAAAytJ,KAAAt3B,EAAA,mBACA8zB,EAAAjqJ,KAAAytJ,KAAAt3B,EAAA,oBACA+zB,EAAAlqJ,KAAAytJ,KAAAt3B,EAAA,0BACA66B,EAAAhxJ,KAAAixJ,mBAAA96B,GACAm1B,EAAAtrJ,KAAAytJ,KAAAt3B,EAAA,oBACAo1B,EAAAvrJ,KAAAytJ,KAAAt3B,EAAA,cACA6gC,EAAA,IAAAhG,EAAA,QAAAA,EAAA,GACAiG,EAAAj3J,KAAA2zJ,sBAAAx9B,EAAA87B,WACA,IAAAl6J,KAAAo+H,EAAAg8B,YAAAh8B,EAAA+7B,aAAA/7B,EAAA87B,YADA,IAAAl6J,KAAA,WAEA8yJ,EAAA7qJ,KAAAovJ,eAAAj5B,EAAA,OACA20B,EAAA9qJ,KAAAovJ,eAAAj5B,EAAA,OACA82B,GAAA92B,EAAA82B,UAAA3B,EACA4B,GAAA/2B,EAAA+2B,SAMA,GAJAD,GAAA,IACAA,IAAA,GACAC,MAEApC,EAIA,IAHA+K,EAAA71J,KAAA2zJ,sBAAA,IAAA57J,KAAA+yJ,EAAAuH,cACAvH,EAAAsH,WAAApB,EAAA,GAAAA,EAAA,KAAAlG,EAAA7yJ,YACA49J,EAAAhL,GAAAgL,EAAAhL,IAAAgL,EACA71J,KAAA2zJ,sBAAA,IAAA57J,KAAAm1J,GAAAD,GAAA,IAAA4I,KACA5I,GACA,IACAA,GAAA,GACAC,MA6HA,IAzHA/2B,EAAA82B,aACA92B,EAAA+2B,YAEAxE,EAAA1oJ,KAAAytJ,KAAAt3B,EAAA,YACAuyB,EAAAwB,EAAAlqJ,KAAA0yJ,WAAAhK,EACA1oJ,KAAA2zJ,sBAAA,IAAA57J,KAAAm1J,GAAAD,GAAA1B,EAAA,IACAvrJ,KAAAswJ,iBAAAn6B,IAFAuyB,EAKAzuF,EADAj6D,KAAAk3J,gBAAA/gC,GAAA,EAAA+2B,GAAAD,IACA7zJ,EAAA,OACA6uC,KAAA,CACAkvH,MAAA,mCACA,sBACA,qBACAhnH,MAAAu4G,IAEA78G,OACAzyC,EAAA,UACAuM,SAAA,oCACAwjJ,EAAA,UACAtuH,KAAA6tH,IACA,GAAA0O,UACAnN,EACA,GAEA7wJ,EAAA,OACA6uC,KAAA,CACAkvH,MAAA,qDACAhnH,MAAAu4G,IAEA78G,OACAzyC,EAAA,UACAuM,SAAA,oCACAwjJ,EAAA,UACAtuH,KAAA6tH,IACA,GAAA0O,UAGAzO,EAAA3oJ,KAAAytJ,KAAAt3B,EAAA,YACAwyB,EAAAuB,EAAAlqJ,KAAA0yJ,WAAA/J,EACA3oJ,KAAA2zJ,sBAAA,IAAA57J,KAAAm1J,GAAAD,GAAA1B,EAAA,IACAvrJ,KAAAswJ,iBAAAn6B,IAFAwyB,EAKA/1F,EADA5yD,KAAAk3J,gBAAA/gC,EAAA,EAAA+2B,GAAAD,IACA7zJ,EAAA,OACA6uC,KAAA,CACAkvH,MAAA,mCACA,sBACA,qBACAhnH,MAAAw4G,IAEA98G,OACAzyC,EAAA,UACAuM,SAAA,oCACAwjJ,EAAA,UACAtuH,KAAA8tH,IACA,GAAAyO,UACAnN,EACA,GAEA7wJ,EAAA,OACA6uC,KAAA,CACAkvH,MAAA,qDACAhnH,MAAAw4G,IAEA98G,OACAzyC,EAAA,UACA6uC,KAAA,4CACAkhH,EAAA,UACAtuH,KAAA8tH,IACA,GAAAyO,UAGAxO,EAAA5oJ,KAAAytJ,KAAAt3B,EAAA,eACA2/B,EAAA91J,KAAAytJ,KAAAt3B,EAAA,gBAAAA,EAAA87B,WAAAgF,EAAAxB,EACA7M,EAAAsB,EACAlqJ,KAAA0yJ,WAAA9J,EAAAkN,EAAA91J,KAAAswJ,iBAAAn6B,IADAyyB,EAGA14G,EAAA,GACAimF,EAAAi2B,SACAl8G,EAAA92C,EAAA,YACA6uC,KAAA,CACAviC,KAAA,SACAyxJ,MAAA,yEACA,sBACA,uBAEAt8H,KAAA76B,KAAAytJ,KAAAt3B,EAAA,iBAAAihC,WAGArB,EAAA,GACAnK,IACAmK,EAAA38J,EAAA,4DACAyyC,OAAAs9G,EAAAj5G,EAAA,IACArE,OAAA7rC,KAAAq3J,WAAAlhC,EAAA2/B,GACA18J,EAAA,YACA6uC,KAAA,CACAviC,KAAA,SACAyxJ,MAAA,6EACA,uBACA,uBAEAt8H,KAAA+tH,GACA,IACA/8G,OAAAs9G,EAAA,GAAAj5G,GAAA,GAAAknH,WAGAznD,EAAAz2F,SAAAlZ,KAAAytJ,KAAAt3B,EAAA,gBACAxmB,EAAA1F,MAAA0F,GAAA,EAAAA,EAEA86C,EAAAzqJ,KAAAytJ,KAAAt3B,EAAA,YACA4yB,EAAA/oJ,KAAAytJ,KAAAt3B,EAAA,YACA8yB,EAAAjpJ,KAAAytJ,KAAAt3B,EAAA,eACA0yB,EAAA7oJ,KAAAytJ,KAAAt3B,EAAA,cACA2yB,EAAA9oJ,KAAAytJ,KAAAt3B,EAAA,mBACA40B,EAAA/qJ,KAAAytJ,KAAAt3B,EAAA,iBACAo0B,EAAAvqJ,KAAAytJ,KAAAt3B,EAAA,mBACAq0B,EAAAxqJ,KAAAytJ,KAAAt3B,EAAA,qBACAyzB,EAAA5pJ,KAAAquJ,gBAAAl4B,GACAtxF,EAAA,GAEAuX,EAAA,EAAAA,EAAA40G,EAAA,GAAA50G,IAAA,CAGA,IAFA65G,EAAA,GACAj2J,KAAAusJ,QAAA,EACA2J,EAAA,EAAAA,EAAAlF,EAAA,GAAAkF,IAAA,CAIA,GAHA1zB,EAAAxiI,KAAA2zJ,sBAAA,IAAA57J,KAAAm1J,GAAAD,GAAA92B,EAAA22B,cACAqJ,EAAA,iBACAC,EAAA,GACAY,EAAA,CAEA,GADAZ,GAAA,kCACApF,EAAA,KACA,OAAAkF,GACA,OAAAE,GAAA,6BACAD,EAAA,eAAAhN,EAAA,sBACA,KAAA6H,EAAA,KAAAoF,GAAA,4BACAD,EAAA,eAAAhN,EAAA,sBACA,QAAAiN,GAAA,8BAAAD,EAAA,GAGAC,GAAA,IACA,CASA,IARAA,GAAA,uEAAAD,EAAA,MACA,WAAAh8J,KAAAg8J,IAAA,IAAA/5G,EAAA+sG,EAAAv2F,EAAAqH,EAAA,KACA,YAAA9/D,KAAAg8J,IAAA,IAAA/5G,EAAA+sG,EAAAlvF,EAAArH,EAAA,IACA5yD,KAAAs3J,yBAAAnhC,EAAA82B,GAAAC,GAAArC,EAAAC,EACA1uG,EAAA,GAAA85G,EAAA,EAAArN,EAAAC,GAJA,0DAOAuN,EAAA5L,EAAA,sCAAAzqJ,KAAAytJ,KAAAt3B,EAAA,yBACA6/B,EAAA,EAAAA,EAAA,EAAAA,IAEAK,GAAA,oBAAAL,EAAArmD,EAAA,+DACAo5C,EAFAtiD,GAAAuvD,EAAArmD,GAAA,GAEA,KAAAs5C,EAAAxiD,GAAA,eAYA,IAVA2vD,GAAAC,EAAA,uBACAp8C,EAAAj6G,KAAA0zJ,gBAAAxG,GAAAD,IACAC,KAAA/2B,EAAA62B,cAAAC,KAAA92B,EAAA42B,gBACA52B,EAAA22B,YAAA/3I,KAAAsd,IAAA8jG,EAAA22B,YAAA7yC,IAEAq8C,GAAAt2J,KAAAu3J,oBAAArK,GAAAD,IAAAt9C,EAAA,KACA4mD,EAAAxhJ,KAAAskD,MAAAi9F,EAAAr8C,GAAA,GACAu8C,EAAAQ,GAAAh3J,KAAAusJ,QAAAgK,EAAAv2J,KAAAusJ,QAAAgK,EACAv2J,KAAAusJ,QAAAiK,EACAC,EAAAz2J,KAAA2zJ,sBAAA,IAAA57J,KAAAm1J,GAAAD,GAAA,EAAAqJ,IACAI,EAAA,EAAAA,EAAAF,EAAAE,IAAA,CAIA,IAHAN,GAAA,OACAO,EAAAlM,EAAA,sCACAzqJ,KAAAytJ,KAAAt3B,EAAA,gBAAAn2H,CAAAy2J,GAAA,QADA,GAEAT,EAAA,EAAAA,EAAA,EAAAA,IACAY,EAAA7L,EACAA,EAAA9pJ,MAAAk1H,EAAAplF,MAAAolF,EAAAplF,MAAA,SAAA0lH,IAAA,QAEAK,GADAD,EAAAJ,EAAArE,aAAAnF,MACAzC,IAAAoM,EAAA,IACA/L,GAAA4L,EAAA5L,GAAAC,GAAA2L,EAAA3L,EACA6L,GAAA,gBACAX,EAAArmD,EAAA,uCACAknD,EAAA,kCACAJ,EAAAj1I,YAAAghH,EAAAhhH,WAAAyrI,KAAA92B,EAAA42B,eAAA52B,EAAA6rB,WACA4H,EAAApoI,YAAAi1I,EAAAj1I,WAAAooI,EAAApoI,YAAAghH,EAAAhhH,UAGA,IAAAxhB,KAAAuoJ,cAAA,KACAuO,EAAA,IAAA92J,KAAAqoJ,mBAAA,0BACAwO,IAAAtM,EAAA,OAAAqM,EAAA,IACAH,EAAAj1I,YAAAy1I,EAAAz1I,UAAA,IAAAxhB,KAAAsoJ,cAAA,KACAmO,EAAAj1I,YAAAi0I,EAAAj0I,UAAA,iCACAq1I,IAAAtM,IAAAqM,EAAA,iBAAAA,EAAA,GAAA/2I,QAAA,oBACAi3I,EAAA,+DAAAL,EAAArE,WAAA,gBAAAqE,EAAApE,cAAA,UACAwE,IAAAtM,EAAA,SACAuM,EAAA,kCAAAL,EAAAx+J,UAAA,wCACAw+J,EAAAj1I,YAAAi0I,EAAAj0I,UAAA,2BACAi1I,EAAAj1I,YAAAy1I,EAAAz1I,UAAA,wBACAq1I,EAAA,6BACA,6BAAAJ,EAAAj1I,YAAAy1I,EAAAz1I,UAAA,gBACA,gBAAAi1I,EAAAx+J,UACA,KAAAw+J,EAAAx+J,UAAA,gBACAw+J,EAAAz+J,QAAAy+J,EAAAx+J,UAAA,GACAw+J,EAAAz2J,KAAA2zJ,sBAAA8C,GAEAL,GAAAO,EAAA,OACA,GACA1J,GACA,KACAA,GAAA,EACAC,MAIA+I,GAFAG,GAAA,oBAAAY,EAAA,UACAhG,EAAA,MAAAkF,IAAAlF,EAAA,0DAEA,CACAnsH,GAAAoxH,CACA,CAGA,OAFApxH,GAAAkxH,EACA5/B,EAAA6rB,WAAA,EACAn9G,CACA,EAGAyyH,yBAAA,SAAAnhC,EAAA82B,EAAAC,EAAArC,EAAAC,EACAxD,EAAAuB,EAAAC,GAEA,IAAA0O,EAAAC,EAAAjxD,EAAAmI,EAAA+oD,EAAAC,EAAApxD,EAAAqxD,EACAxN,EAAApqJ,KAAAytJ,KAAAt3B,EAAA,eACAk0B,EAAArqJ,KAAAytJ,KAAAt3B,EAAA,cACAizB,EAAAppJ,KAAAytJ,KAAAt3B,EAAA,sBACAmzB,EAAAtpJ,KAAAytJ,KAAAt3B,EAAA,oBACAozB,EAAAvpJ,KAAAytJ,KAAAt3B,EAAA,mBACAtxF,EAAA,oCACAgzH,EAAA,GAGA,GAAAvQ,IAAA8C,EACAyN,GAAA,qCAAAhP,EAAAoE,GAAA,cACA,CAIA,IAHAuK,EAAA3M,KAAAwH,gBAAAnF,EACAuK,EAAA3M,KAAAuH,gBAAAnF,EACA2K,GAAA,mDAAAvO,EAAA,oDACA9iD,EAAA,EAAAA,EAAA,GAAAA,MACAgxD,GAAAhxD,GAAAqkD,EAAAuH,eAAAqF,GAAAjxD,GAAAskD,EAAAsH,cACAyF,GAAA,kBAAArxD,EAAA,KACAA,IAAAymD,EAAA,2BACA,IAAAnE,EAAAtiD,GAAA,aAGAqxD,GAAA,WACA,CAOA,GALAzO,IACAvkH,GAAAgzH,IAAAvQ,GAAA8C,GAAAC,EAAA,eAIAl0B,EAAAi7B,UAEA,GADAj7B,EAAAi7B,UAAA,GACA9J,IAAA+C,EACAxlH,GAAA,oCAAAqoH,EAAA,cACA,CAgBA,IAbAv+C,EAAA3uG,KAAAytJ,KAAAt3B,EAAA,aAAA39H,MAAA,KACAk/J,GAAA,IAAA3/J,MAAAs6J,cACAsF,EAAA,SAAAnrJ,GACA,IAAA+5F,EAAA/5F,EAAAkG,MAAA,YAAAw6I,EAAAh0I,SAAA1M,EAAA3T,UAAA,OACA2T,EAAAkG,MAAA,WAAAglJ,EAAAx+I,SAAA1M,EAAA,IACA0M,SAAA1M,EAAA,IACA,OAAAy9F,MAAA1D,GAAAmxD,EAAAnxD,CACA,EACAA,EAAAoxD,EAAAhpD,EAAA,IACAipD,EAAA7iJ,KAAAoiB,IAAAovE,EAAAoxD,EAAAhpD,EAAA,SACApI,EAAAskD,EAAA91I,KAAAoiB,IAAAovE,EAAAskD,EAAAwH,eAAA9rD,EACAqxD,EAAA9M,EAAA/1I,KAAAsd,IAAAulI,EAAA9M,EAAAuH,eAAAuF,EACAzhC,EAAAi7B,WAAA,kDAAA7H,EAAA,mDACAhjD,GAAAqxD,EAAArxD,IACA4vB,EAAAi7B,WAAA,kBAAA7qD,EAAA,KACAA,IAAA2mD,EAAA,2BACA,IAAA3mD,EAAA,YAEA4vB,EAAAi7B,WAAA,YAEAvsH,GAAAsxF,EAAAi7B,UACAj7B,EAAAi7B,UAAA,IACA,CAQA,OALAvsH,GAAA7kC,KAAAytJ,KAAAt3B,EAAA,cACAizB,IACAvkH,KAAAyiH,GAAA8C,GAAAC,EAAA,aAAAwN,GAEAhzH,GAAA,QAEA,EAGAmtH,gBAAA,SAAA77B,EAAA95E,EAAA01G,GACA,IAAAxrD,EAAA4vB,EAAA62B,cAAA,MAAA+E,EAAA11G,EAAA,GACAmqD,EAAA2vB,EAAA42B,eAAA,MAAAgF,EAAA11G,EAAA,GACAoqD,EAAA1xF,KAAAsd,IAAA8jG,EAAA22B,YAAA9sJ,KAAA0zJ,gBAAAntD,EAAAC,KAAA,MAAAurD,EAAA11G,EAAA,GACA2tD,EAAAhqG,KAAA40J,gBAAAz+B,EAAAn2H,KAAA2zJ,sBAAA,IAAA57J,KAAAwuG,EAAAC,EAAAC,KAEA0vB,EAAA22B,YAAA9iD,EAAA/xG,UACAk+H,EAAA82B,UAAA92B,EAAA42B,cAAA/iD,EAAAooD,WACAj8B,EAAA+2B,SAAA/2B,EAAA62B,aAAAhjD,EAAAqoD,cACA,MAAAN,GAAA,MAAAA,GACA/xJ,KAAAsyJ,cAAAn8B,EAEA,EAGAy+B,gBAAA,SAAAz+B,EAAAnsB,GACA,IAAA6gD,EAAA7qJ,KAAAovJ,eAAAj5B,EAAA,OACA20B,EAAA9qJ,KAAAovJ,eAAAj5B,EAAA,OACA2+B,EAAAjK,GAAA7gD,EAAA6gD,IAAA7gD,EACA,OAAA8gD,GAAAgK,EAAAhK,IAAAgK,CACA,EAGAxC,cAAA,SAAAn8B,GACA,IAAA2hC,EAAA93J,KAAAytJ,KAAAt3B,EAAA,qBACA2hC,GACAA,EAAA72J,MAAAk1H,EAAAplF,MAAAolF,EAAAplF,MAAA,QACA,CAAAolF,EAAA62B,aAAA72B,EAAA42B,cAAA,EAAA52B,GAEA,EAGA86B,mBAAA,SAAA96B,GACA,IAAA66B,EAAAhxJ,KAAAytJ,KAAAt3B,EAAA,kBACA,aAAA66B,EAAA,uBAAAA,EAAA,GAAAA,IACA,EAGA5B,eAAA,SAAAj5B,EAAA4hC,GACA,OAAA/3J,KAAA60J,eAAA1+B,EAAAn2H,KAAAytJ,KAAAt3B,EAAA4hC,EAAA,aACA,EAGArE,gBAAA,SAAAntD,EAAAC,GACA,UAAAxmG,KAAA2zJ,sBAAA,IAAA57J,KAAAwuG,EAAAC,EAAA,KAAAvuG,SACA,EAGAs/J,oBAAA,SAAAhxD,EAAAC,GACA,WAAAzuG,KAAAwuG,EAAAC,EAAA,GAAAynD,QACA,EAGAiJ,gBAAA,SAAA/gC,EAAA95E,EAAA27G,EAAAC,GACA,IAAAjH,EAAAhxJ,KAAAixJ,mBAAA96B,GACAnsB,EAAAhqG,KAAA2zJ,sBAAA,IAAA57J,KAAAigK,EACAC,GAAA57G,EAAA,EAAAA,EAAA20G,EAAA,GAAAA,EAAA,QAKA,OAHA30G,EAAA,GACA2tD,EAAAhyG,QAAAgI,KAAA0zJ,gBAAA1pD,EAAAqoD,cAAAroD,EAAAooD,aAEApyJ,KAAAq3J,WAAAlhC,EAAAnsB,EACA,EAGAqtD,WAAA,SAAAlhC,EAAAnsB,GACA,IAAAkuD,EAAA/F,EACAtH,EAAA7qJ,KAAAovJ,eAAAj5B,EAAA,OACA20B,EAAA9qJ,KAAAovJ,eAAAj5B,EAAA,OACAgiC,EAAA,KACAC,EAAA,KACAzpD,EAAA3uG,KAAAytJ,KAAAt3B,EAAA,aAcA,OAbAxnB,IACAupD,EAAAvpD,EAAAn2G,MAAA,KACA25J,GAAA,IAAAp6J,MAAAs6J,cACA8F,EAAAj/I,SAAAg/I,EAAA,OACAE,EAAAl/I,SAAAg/I,EAAA,OACAA,EAAA,GAAAxlJ,MAAA,aACAylJ,GAAAhG,GAEA+F,EAAA,GAAAxlJ,MAAA,aACA0lJ,GAAAjG,MAIAtH,GAAA7gD,EAAAxoF,WAAAqpI,EAAArpI,cACAspI,GAAA9gD,EAAAxoF,WAAAspI,EAAAtpI,cACA22I,GAAAnuD,EAAAqoD,eAAA8F,MACAC,GAAApuD,EAAAqoD,eAAA+F,EACA,EAGA9H,iBAAA,SAAAn6B,GACA,IAAAy0B,EAAA5qJ,KAAAytJ,KAAAt3B,EAAA,mBAGA,OAAAy0B,gBAFAA,EAAA,iBAAAA,KACA,IAAA7yJ,MAAAs6J,cAAA,IAAAn5I,SAAA0xI,EAAA,IAEA5B,cAAAhpJ,KAAAytJ,KAAAt3B,EAAA,iBAAA4yB,SAAA/oJ,KAAAytJ,KAAAt3B,EAAA,YACA2yB,gBAAA9oJ,KAAAytJ,KAAAt3B,EAAA,mBAAA0yB,WAAA7oJ,KAAAytJ,KAAAt3B,EAAA,cACA,EAGA+3B,YAAA,SAAA/3B,EAAA1vB,EAAAD,EAAAD,GACAE,IACA0vB,EAAA87B,WAAA97B,EAAA22B,YACA32B,EAAA+7B,aAAA/7B,EAAA42B,cACA52B,EAAAg8B,YAAAh8B,EAAA62B,cAEA,IAAAhjD,EAAAvD,EAAA,iBAAAA,IACAzmG,KAAA2zJ,sBAAA,IAAA57J,KAAAwuG,EAAAC,EAAAC,IACAzmG,KAAA2zJ,sBAAA,IAAA57J,KAAAo+H,EAAAg8B,YAAAh8B,EAAA+7B,aAAA/7B,EAAA87B,aACA,OAAAjyJ,KAAA0yJ,WAAA1yJ,KAAAytJ,KAAAt3B,EAAA,cAAAnsB,EAAAhqG,KAAAswJ,iBAAAn6B,GACA,IAkDA/8H,EAAAgmB,GAAA8sI,WAAA,SAAA/oI,GAGA,IAAAnjB,KAAAtH,OACA,OAAAsH,KAIA5G,EAAA8yJ,WAAAmM,cACAj/J,EAAAlB,UAAAwD,GAAA,YAAAtC,EAAA8yJ,WAAA4F,qBACA14J,EAAA8yJ,WAAAmM,aAAA,GAIA,IAAAj/J,EAAA,IAAAA,EAAA8yJ,WAAAnE,YAAArvJ,QACAU,EAAA,QAAAyyC,OAAAzyC,EAAA8yJ,WAAAH,OAGA,IAAAuM,EAAArmJ,MAAAlS,UAAArB,MAAAsmB,KAAA9jB,UAAA,GACA,uBAAAiiB,GAAA,eAAAA,GAAA,YAAAA,GAAA,WAAAA,EAIA,WAAAA,GAAA,IAAAjiB,UAAAxI,QAAA,iBAAAwI,UAAA,GACA9H,EAAA8yJ,WAAA,IAAA/oI,EAAA,cACAliB,MAAA7H,EAAA8yJ,WAAA,CAAAlsJ,KAAA,IAAA0nC,OAAA4wH,IAEAt4J,KAAAoC,MAAA,WACA,iBAAA+gB,EACA/pB,EAAA8yJ,WAAA,IAAA/oI,EAAA,cACAliB,MAAA7H,EAAA8yJ,WAAA,CAAAlsJ,MAAA0nC,OAAA4wH,IAEAl/J,EAAA8yJ,WAAAQ,kBAAA1sJ,KAAAmjB,EAEA,IAdA/pB,EAAA8yJ,WAAA,IAAA/oI,EAAA,cACAliB,MAAA7H,EAAA8yJ,WAAA,CAAAlsJ,KAAA,IAAA0nC,OAAA4wH,GAcA,EAEAl/J,EAAA8yJ,WAAA,IAAAxE,EACAtuJ,EAAA8yJ,WAAAmM,aAAA,EACAj/J,EAAA8yJ,WAAAnmB,MAAA,IAAAhuI,MAAAypB,UACApoB,EAAA8yJ,WAAAtvI,QAAA,SAEAxjB,EAAA8yJ;;;;;;;;GAAA,IAkBA/N,GAAA,EACA/kJ,EAAAlB,UAAAwD,GAAA,sBACAyiJ,GAAA,CACA,IAEA/kJ,EAAA6qI,OAAA,YACArnH,QAAA,SACAuG,QAAA,CACAmN,OAAA,0CACAo1B,SAAA,EACAv8C,MAAA,GAEAovJ,WAAA,WACA,IAAA/5I,EAAAxe,KAEAA,KAAA4L,QACAlQ,GAAA,aAAAsE,KAAAilI,YAAA,SAAAvkI,GACA,OAAA8d,EAAAg6I,WAAA93J,EACA,IACAhF,GAAA,SAAAsE,KAAAilI,YAAA,SAAAvkI,GACA,QAAAtH,EAAAkC,KAAAoF,EAAA2jC,OAAA7lB,EAAAymH,WAAA,sBAGA,OAFA7rI,EAAA0tI,WAAApmI,EAAA2jC,OAAA7lB,EAAAymH,WAAA,sBACAvkI,EAAA+3J,4BACA,CAEA,IAEAz4J,KAAAqxB,SAAA,CACA,EAIAqnI,cAAA,WACA14J,KAAA4L,QAAApB,IAAA,IAAAxK,KAAAilI,YACAjlI,KAAA24J,oBACA34J,KAAA9H,SACAsS,IAAA,aAAAxK,KAAAilI,WAAAjlI,KAAA24J,oBACAnuJ,IAAA,WAAAxK,KAAAilI,WAAAjlI,KAAA44J,iBAEA,EAEAJ,WAAA,SAAA93J,GAGA,IAAAy9I,EAAA,CAIAn+I,KAAA64J,aAAA,EAGA74J,KAAA84J,eACA94J,KAAA+4J,SAAAr4J,GAGAV,KAAAg5J,gBAAAt4J,EAEA,IAAA8d,EAAAxe,KACAi5J,EAAA,IAAAv4J,EAAA0jC,MACA80H,EAAA,iBAAAl5J,KAAAmjB,QAAAmN,QACAl3B,EAAAsH,EAAA2jC,QAAAyrC,QAAA9vE,KAAAmjB,QAAAmN,QAAA53B,OAEA,QAAAugK,IAAAC,GAAAl5J,KAAAm5J,cAAAz4J,MAIAV,KAAAo5J,eAAAp5J,KAAAmjB,QAAAha,MACAnJ,KAAAo5J,gBACAp5J,KAAAq5J,iBAAA10I,YAAA,WACAnG,EAAA46I,eAAA,CACA,GAAAp5J,KAAAmjB,QAAAha,QAGAnJ,KAAAs5J,kBAAA54J,IAAAV,KAAAu5J,eAAA74J,KACAV,KAAA84J,eAAA,IAAA94J,KAAAw5J,YAAA94J,IACAV,KAAA84J,gBACAp4J,EAAA6jC,kBACA,KAKA,IAAAnrC,EAAAkC,KAAAoF,EAAA2jC,OAAArkC,KAAAilI,WAAA,uBACA7rI,EAAA0tI,WAAApmI,EAAA2jC,OAAArkC,KAAAilI,WAAA,sBAIAjlI,KAAA24J,mBAAA,SAAAj4J,GACA,OAAA8d,EAAAi7I,WAAA/4J,EACA,EACAV,KAAA44J,iBAAA,SAAAl4J,GACA,OAAA8d,EAAAu6I,SAAAr4J,EACA,EAEAV,KAAA9H,SACAwD,GAAA,aAAAsE,KAAAilI,WAAAjlI,KAAA24J,oBACAj9J,GAAA,WAAAsE,KAAAilI,WAAAjlI,KAAA44J,kBAEAl4J,EAAA6jC,iBAEA45G,GAAA,GACA,GAvDA,CAwDA,EAEAsb,WAAA,SAAA/4J,GAIA,GAAAV,KAAA64J,cAAAn4J,EAAA0jC,MAKA,GAAA1jC,EAAA85B,cAAA0hH,QAAAx7I,EAAA85B,cAAA2hH,SACAz7I,EAAA85B,cAAA8oH,SAAA5iJ,EAAA85B,cAAA+oH,SACAvjJ,KAAA05J,oBAAA,OACA,IAAA15J,KAAA05J,mBACA,OAAA15J,KAAA+4J,SAAAr4J,GAQA,OAJAA,EAAA0jC,OAAA1jC,EAAAikJ,UACA3kJ,KAAA64J,aAAA,GAGA74J,KAAA84J,eACA94J,KAAA25J,WAAAj5J,GACAA,EAAA6jC,mBAGAvkC,KAAAs5J,kBAAA54J,IAAAV,KAAAu5J,eAAA74J,KACAV,KAAA84J,eACA,IAAA94J,KAAAw5J,YAAAx5J,KAAAg5J,gBAAAt4J,GACAV,KAAA84J,cACA94J,KAAA25J,WAAAj5J,GAEAV,KAAA+4J,SAAAr4J,KAIAV,KAAA84J,cACA,EAEAC,SAAA,SAAAr4J,GACAV,KAAA9H,SACAsS,IAAA,aAAAxK,KAAAilI,WAAAjlI,KAAA24J,oBACAnuJ,IAAA,WAAAxK,KAAAilI,WAAAjlI,KAAA44J,kBAEA54J,KAAA84J,gBACA94J,KAAA84J,eAAA,EAEAp4J,EAAA2jC,SAAArkC,KAAAg5J,gBAAA30H,QACAjrC,EAAAkC,KAAAoF,EAAA2jC,OAAArkC,KAAAilI,WAAA,yBAGAjlI,KAAA45J,WAAAl5J,IAGAV,KAAAq5J,mBACAx0I,aAAA7kB,KAAAq5J,yBACAr5J,KAAAq5J,kBAGAr5J,KAAA05J,oBAAA,EACAvb,GAAA,EACAz9I,EAAA6jC,gBACA,EAEA+0H,kBAAA,SAAA54J,GACA,OAAAqU,KAAAoiB,IACApiB,KAAAD,IAAA9U,KAAAg5J,gBAAAztJ,MAAA7K,EAAA6K,OACAwJ,KAAAD,IAAA9U,KAAAg5J,gBAAAxtJ,MAAA9K,EAAA8K,SACAxL,KAAAmjB,QAAAuiC,QAEA,EAEA6zG,eAAA,WACA,OAAAv5J,KAAAo5J,aACA,EAGAI,YAAA,aACAG,WAAA,aACAC,WAAA,aACAT,cAAA,WACA,QACA,IAMA//J,EAAAqqI,GAAAo2B,OAAA,CACAz0G,IAAA,SAAAnsD,EAAAg6C,EAAAv7C,GACA,IAAAe,EACA+1H,EAAAp1H,EAAAqqI,GAAAxqI,GAAA8G,UACA,IAAAtH,KAAAf,EACA82H,EAAAsrC,QAAArhK,GAAA+1H,EAAAsrC,QAAArhK,IAAA,GACA+1H,EAAAsrC,QAAArhK,GAAAoI,KAAA,CAAAoyC,EAAAv7C,EAAAe,IAEA,EACAusB,KAAA,SAAAzlB,EAAAjH,EAAAusD,EAAAk1G,GACA,IAAAthK,EACAf,EAAA6H,EAAAu6J,QAAAxhK,GAEA,GAAAZ,IAIAqiK,GAAAx6J,EAAAqM,QAAA,GAAAulB,YACA,KAAA5xB,EAAAqM,QAAA,GAAAulB,WAAAqgB,UAIA,IAAA/4C,EAAA,EAAAA,EAAAf,EAAAgB,OAAAD,IACA8G,EAAA4jB,QAAAzrB,EAAAe,GAAA,KACAf,EAAAe,GAAA,GAAAwI,MAAA1B,EAAAqM,QAAAi5C,EAGA;;;;;;;;;AAqBAzrD,EAAA6qI,OAAA,eAAA7qI,EAAAqqI,GAAAu2B,MAAA,CACAp9I,QAAA,SACAooH,kBAAA,OACA7hH,QAAA,CACA82I,YAAA,EACApzJ,SAAA,SACAqzJ,MAAA,EACAC,mBAAA,EACAC,aAAA,EACAl4G,OAAA,OACAm4G,UAAA,EACAC,MAAA,EACAC,QAAA,EACAC,OAAA,WACAC,WAAA,EACAr9H,SAAA,EACAs9H,kBAAA,EACAC,QAAA,EACAC,eAAA,IACAznI,MAAA,UACAktH,QAAA,EACAwa,kBAAA,GACAC,YAAA,GACAC,MAAA,EACAC,SAAA,OACAC,cAAA,GACAlnE,OAAA,EACAxvF,QAAA,EAGA4kD,KAAA,KACAjoC,MAAA,KACAwD,KAAA,MAEA8hH,QAAA,WAEA,aAAAxmI,KAAAmjB,QAAAq3I,QACAx6J,KAAAk7J,uBAEAl7J,KAAAmjB,QAAA82I,YACAj6J,KAAA+nI,UAAA,gBAEA/nI,KAAAm7J,sBAEAn7J,KAAAu4J,YACA,EAEAtxB,WAAA,SAAAr2H,EAAApE,GACAxM,KAAA2/E,OAAA/uE,EAAApE,GACA,WAAAoE,IACA5Q,KAAAo7J,yBACAp7J,KAAAm7J,sBAEA,EAEAv0B,SAAA,YACA5mI,KAAAw6J,QAAAx6J,KAAA4L,SAAA04B,GAAA,0BACAtkC,KAAAq7J,gBAAA,GAGAr7J,KAAAo7J,yBACAp7J,KAAA04J,gBACA,EAEAS,cAAA,SAAAz4J,GACA,IAAA8iG,EAAAxjG,KAAAmjB,QAGA,QAAAnjB,KAAAw6J,QAAAh3D,EAAAsiC,UACA1sI,EAAAsH,EAAA2jC,QAAAyrC,QAAA,wBAAAp3E,OAAA,KAKAsH,KAAAu6J,OAAAv6J,KAAAs7J,WAAA56J,KACAV,KAAAu6J,SAIAv6J,KAAAu7J,mBAAA76J,GAEAV,KAAAw7J,cAAA,IAAAh4D,EAAAi3D,UAAA,SAAAj3D,EAAAi3D,YAEA,GAEA,EAEAe,aAAA,SAAAl1J,GACAtG,KAAAy7J,aAAAz7J,KAAA9H,SAAAoJ,KAAAgF,GAAAY,KAAA,WACA,IAAAi6E,EAAA/nF,EAAA4G,MAEA,OAAA5G,EAAA,SACAwM,IAAA,uBACAiB,SAAAs6E,EAAAt7E,UACA+R,WAAAupE,EAAAvpE,cACAC,YAAAspE,EAAAtpE,eACAwkC,OAAA8kC,EAAA9kC,UAAA,EACA,GACA,EAEAq/G,eAAA,WACA17J,KAAAy7J,eACAz7J,KAAAy7J,aAAA1iK,gBACAiH,KAAAy7J,aAEA,EAEAF,mBAAA,SAAA76J,GACA,IAAAuqD,EAAAjrD,KAAA9H,SAAA,GAAA+yD,cACA7xD,EAAAsH,EAAA2jC,QAKAyrC,QAAA7kB,GAAAvyD,QAKAU,EAAA6xD,GAAA//C,QAAA,OACA,EAEAsuJ,YAAA,SAAA94J,GAEA,IAAA8iG,EAAAxjG,KAAAmjB,QAiDA,OA9CAnjB,KAAAw6J,OAAAx6J,KAAA27J,cAAAj7J,GAEAV,KAAA+nI,UAAA/nI,KAAAw6J,OAAA,yBAGAx6J,KAAA47J,0BAGAxiK,EAAAqqI,GAAAo4B,YACAziK,EAAAqqI,GAAAo4B,UAAAt6J,QAAAvB,MASAA,KAAA87J,gBAGA97J,KAAAk0I,YAAAl0I,KAAAw6J,OAAA50J,IAAA,YACA5F,KAAAu6I,aAAAv6I,KAAAw6J,OAAAjgB,cAAA,GACAv6I,KAAA+7J,aAAA/7J,KAAAw6J,OAAAuB,eACA/7J,KAAAg8J,iBAAAh8J,KAAAw6J,OAAAngB,UAAAlgI,QAAA,WACA,gBAAA/gB,EAAA4G,MAAA4F,IAAA,WACA,IAAAlN,OAAA,EAGAsH,KAAAi8J,YAAAj8J,KAAA4L,QAAAywC,SACAr8C,KAAAk8J,gBAAAx7J,GAGAV,KAAAm8J,iBAAAn8J,KAAAmE,SAAAnE,KAAAo8J,kBAAA17J,GAAA,GACAV,KAAAq8J,cAAA37J,EAAA6K,MACAvL,KAAAs8J,cAAA57J,EAAA8K,MAGAg4F,EAAA62D,UACAr6J,KAAAu8J,wBAAA/4D,EAAA62D,UAIAr6J,KAAAw8J,mBAGA,IAAAx8J,KAAA0mI,SAAA,QAAAhmI,IACAV,KAAAy8J,UACA,IAIAz8J,KAAA47J,0BAGAxiK,EAAAqqI,GAAAo4B,YAAAr4D,EAAAk5D,eACAtjK,EAAAqqI,GAAAo4B,UAAAc,eAAA38J,KAAAU,GAKAV,KAAA25J,WAAAj5J,GAAA,GAIAtH,EAAAqqI,GAAAo4B,WACAziK,EAAAqqI,GAAAo4B,UAAAe,UAAA58J,KAAAU,IAGA,EACA,EAEAw7J,gBAAA,SAAAx7J,GACAV,KAAAq8C,OAAA,CACA31C,IAAA1G,KAAAi8J,YAAAv1J,IAAA1G,KAAA68J,QAAAn2J,IACAD,KAAAzG,KAAAi8J,YAAAx1J,KAAAzG,KAAA68J,QAAAp2J,KACA45I,QAAA,EACAx6I,OAAA7F,KAAA88J,mBACA3rC,SAAAnxH,KAAA+8J,sBAGA/8J,KAAAq8C,OAAA8N,MAAA,CACA1jD,KAAA/F,EAAA6K,MAAAvL,KAAAq8C,OAAA51C,KACAC,IAAAhG,EAAA8K,MAAAxL,KAAAq8C,OAAA31C,IAEA,EAEAizJ,WAAA,SAAAj5J,EAAAs8J,GAYA,GATAh9J,KAAAg8J,mBACAh8J,KAAAq8C,OAAAx2C,OAAA7F,KAAA88J,oBAIA98J,KAAAmE,SAAAnE,KAAAo8J,kBAAA17J,GAAA,GACAV,KAAAi8J,YAAAj8J,KAAAi9J,mBAAA,aAGAD,EAAA,CACA,IAAAv5B,EAAAzjI,KAAAk9J,UACA,QAAAl9J,KAAA0mI,SAAA,OAAAhmI,EAAA+iI,GAEA,OADAzjI,KAAA+4J,SAAA,IAAA3/J,EAAA2yD,MAAA,UAAArrD,KACA,EAEAV,KAAAmE,SAAAs/H,EAAAt/H,QACA,CASA,OAPAnE,KAAAw6J,OAAA,GAAAv+H,MAAAx1B,KAAAzG,KAAAmE,SAAAsC,KAAA,KACAzG,KAAAw6J,OAAA,GAAAv+H,MAAAv1B,IAAA1G,KAAAmE,SAAAuC,IAAA,KAEAtN,EAAAqqI,GAAAo4B,WACAziK,EAAAqqI,GAAAo4B,UAAA1yG,KAAAnpD,KAAAU,IAGA,CACA,EAEAk5J,WAAA,SAAAl5J,GAGA,IAAA8d,EAAAxe,KACAm9J,GAAA,EA+BA,OA9BA/jK,EAAAqqI,GAAAo4B,YAAA77J,KAAAmjB,QAAAu5I,gBACAS,EAAA/jK,EAAAqqI,GAAAo4B,UAAAj6J,KAAA5B,KAAAU,IAIAV,KAAAm9J,UACAA,EAAAn9J,KAAAm9J,QACAn9J,KAAAm9J,SAAA,GAGA,YAAAn9J,KAAAmjB,QAAAw3I,SAAAwC,GACA,UAAAn9J,KAAAmjB,QAAAw3I,QAAAwC,IACA,IAAAn9J,KAAAmjB,QAAAw3I,QAAA,mBAAA36J,KAAAmjB,QAAAw3I,QACA36J,KAAAmjB,QAAAw3I,OAAA31I,KAAAhlB,KAAA4L,QAAAuxJ,GAEA/jK,EAAA4G,KAAAw6J,QAAAlzG,QACAtnD,KAAAm8J,iBACAjjJ,SAAAlZ,KAAAmjB,QAAAy3I,eAAA,KACA,YACA,IAAAp8I,EAAAkoH,SAAA,OAAAhmI,IACA8d,EAAAi+I,QAEA,KAGA,IAAAz8J,KAAA0mI,SAAA,OAAAhmI,IACAV,KAAAy8J,UAIA,CACA,EAEA1D,SAAA,SAAAr4J,GAiBA,OAhBAV,KAAA07J,iBAIAtiK,EAAAqqI,GAAAo4B,WACAziK,EAAAqqI,GAAAo4B,UAAAuB,SAAAp9J,KAAAU,GAIAV,KAAAq9J,cAAA/4H,GAAA5jC,EAAA2jC,SAIArkC,KAAA4L,QAAAV,QAAA,SAGA9R,EAAAqqI,GAAAu2B,MAAAj6J,UAAAg5J,SAAA/zI,KAAAhlB,KAAAU,EACA,EAEA4vB,OAAA,WAQA,OANAtwB,KAAAw6J,OAAAl2H,GAAA,0BACAtkC,KAAA+4J,SAAA,IAAA3/J,EAAA2yD,MAAA,WAAA1nB,OAAArkC,KAAA4L,QAAA,MAEA5L,KAAAy8J,SAGAz8J,IAEA,EAEAs7J,WAAA,SAAA56J,GACA,OAAAV,KAAAmjB,QAAAo3I,UACAnhK,EAAAsH,EAAA2jC,QAAAyrC,QAAA9vE,KAAA4L,QAAAtK,KAAAtB,KAAAmjB,QAAAo3I,SAAA7hK,MAEA,EAEAyiK,oBAAA,WACAn7J,KAAAq9J,cAAAr9J,KAAAmjB,QAAAo3I,OACAv6J,KAAA4L,QAAAtK,KAAAtB,KAAAmjB,QAAAo3I,QAAAv6J,KAAA4L,QACA5L,KAAA+nI,UAAA/nI,KAAAq9J,cAAA,sBACA,EAEAjC,uBAAA,WACAp7J,KAAA6mI,aAAA7mI,KAAAq9J,cAAA,sBACA,EAEA1B,cAAA,SAAAj7J,GAEA,IAAA8iG,EAAAxjG,KAAAmjB,QACAm6I,EAAA,mBAAA95D,EAAAg3D,OACAA,EAAA8C,EACAlkK,EAAAoqG,EAAAg3D,OAAAv5J,MAAAjB,KAAA4L,QAAA,IAAAlL,KACA,UAAA8iG,EAAAg3D,OACAx6J,KAAA4L,QAAA65C,QAAAle,WAAA,MACAvnC,KAAA4L,QAoBA,OAlBA4uJ,EAAAngB,QAAA,QAAA3hJ,QACA8hK,EAAA3zJ,SAAA,WAAA28F,EAAA38F,SACA7G,KAAA4L,QAAA,GAAAulB,WACAqyE,EAAA38F,UAMAy2J,GAAA9C,EAAA,KAAAx6J,KAAA4L,QAAA,IACA5L,KAAAk7J,uBAGAV,EAAA,KAAAx6J,KAAA4L,QAAA,IACA,mBAAAzR,KAAAqgK,EAAA50J,IAAA,cACA40J,EAAA50J,IAAA,uBAGA40J,CAEA,EAEAU,qBAAA,WACA,aAAA/gK,KAAA6F,KAAA4L,QAAAhG,IAAA,eACA5F,KAAA4L,QAAA,GAAAqwB,MAAA93B,SAAA,WAEA,EAEAo4J,wBAAA,SAAAn8J,GACA,iBAAAA,IACAA,IAAA5H,MAAA,MAEAyZ,MAAAiS,QAAA9jB,KACAA,EAAA,CAAAqG,MAAArG,EAAA,GAAAsG,KAAAtG,EAAA,QAEA,SAAAA,IACAJ,KAAAq8C,OAAA8N,MAAA1jD,KAAArG,EAAAqG,KAAAzG,KAAA68J,QAAAp2J,MAEA,UAAArG,IACAJ,KAAAq8C,OAAA8N,MAAA1jD,KAAAzG,KAAAu9J,kBAAAvwJ,MAAA5M,EAAAuG,MAAA3G,KAAA68J,QAAAp2J,MAEA,QAAArG,IACAJ,KAAAq8C,OAAA8N,MAAAzjD,IAAAtG,EAAAsG,IAAA1G,KAAA68J,QAAAn2J,KAEA,WAAAtG,IACAJ,KAAAq8C,OAAA8N,MAAAzjD,IAAA1G,KAAAu9J,kBAAApvJ,OAAA/N,EAAAwG,OAAA5G,KAAA68J,QAAAn2J,IAEA,EAEA82J,YAAA,SAAA5xJ,GACA,qBAAAzR,KAAAyR,EAAAulC,UAAAvlC,IAAA5L,KAAA9H,SAAA,EACA,EAEA4kK,iBAAA,WAGA,IAAAW,EAAAz9J,KAAA+7J,aAAA1/G,SACAnkD,EAAA8H,KAAA9H,SAAA,GAmBA,MAVA,aAAA8H,KAAAk0I,aAAAl0I,KAAAu6I,aAAA,KAAAriJ,GACAkB,EAAA2I,SAAA/B,KAAAu6I,aAAA,GAAAv6I,KAAA+7J,aAAA,MACA0B,EAAAh3J,MAAAzG,KAAAu6I,aAAAn0G,aACAq3H,EAAA/2J,KAAA1G,KAAAu6I,aAAAzsI,aAGA9N,KAAAw9J,YAAAx9J,KAAA+7J,aAAA,MACA0B,EAAA,CAAA/2J,IAAA,EAAAD,KAAA,IAGA,CACAC,IAAA+2J,EAAA/2J,KAAAwS,SAAAlZ,KAAA+7J,aAAAn2J,IAAA,0BACAa,KAAAg3J,EAAAh3J,MAAAyS,SAAAlZ,KAAA+7J,aAAAn2J,IAAA,2BAGA,EAEAm3J,mBAAA,WACA,gBAAA/8J,KAAAk0I,YACA,OAAAxtI,IAAA,EAAAD,KAAA,GAGA,IAAAorD,EAAA7xD,KAAA4L,QAAAzH,WACAu5J,EAAA19J,KAAAw9J,YAAAx9J,KAAAu6I,aAAA,IAEA,OACA7zI,IAAAmrD,EAAAnrD,KAAAwS,SAAAlZ,KAAAw6J,OAAA50J,IAAA,gBACA83J,EAAA,EAAA19J,KAAAu6I,aAAAzsI,aACArH,KAAAorD,EAAAprD,MAAAyS,SAAAlZ,KAAAw6J,OAAA50J,IAAA,iBACA83J,EAAA,EAAA19J,KAAAu6I,aAAAn0G,cAGA,EAEA01H,cAAA,WACA97J,KAAA68J,QAAA,CACAp2J,KAAAyS,SAAAlZ,KAAA4L,QAAAhG,IAAA,qBACAc,IAAAwS,SAAAlZ,KAAA4L,QAAAhG,IAAA,oBACAe,MAAAuS,SAAAlZ,KAAA4L,QAAAhG,IAAA,sBACAgB,OAAAsS,SAAAlZ,KAAA4L,QAAAhG,IAAA,uBAEA,EAEAg2J,wBAAA,WACA57J,KAAAu9J,kBAAA,CACAvwJ,MAAAhN,KAAAw6J,OAAA5iJ,aACAzJ,OAAAnO,KAAAw6J,OAAA3iJ,cAEA,EAEA2kJ,gBAAA,WAEA,IAAAmB,EAAAhlK,EAAAilK,EACAp6D,EAAAxjG,KAAAmjB,QACAjrB,EAAA8H,KAAA9H,SAAA,GAEA8H,KAAA69J,kBAAA,KAEAr6D,EAAA42D,YAKA,WAAA52D,EAAA42D,YAaA,aAAA52D,EAAA42D,YAWA52D,EAAA42D,YAAAn6J,cAAAgS,OAKA,WAAAuxF,EAAA42D,cACA52D,EAAA42D,YAAAp6J,KAAAw6J,OAAA,GAAArpI,aAIAysI,GADAjlK,EAAAS,EAAAoqG,EAAA42D,cACA,MAMAuD,EAAA,gBAAAxjK,KAAAxB,EAAAiN,IAAA,aAEA5F,KAAAo6J,YAAA,EACAlhJ,SAAAvgB,EAAAiN,IAAA,4BACAsT,SAAAvgB,EAAAiN,IAAA,wBACAsT,SAAAvgB,EAAAiN,IAAA,2BACAsT,SAAAvgB,EAAAiN,IAAA,uBACA+3J,EAAA5oJ,KAAAoiB,IAAAymI,EAAA/5H,YAAA+5H,EAAAh6H,aAAAg6H,EAAAh6H,cACA1qB,SAAAvgB,EAAAiN,IAAA,6BACAsT,SAAAvgB,EAAAiN,IAAA,wBACA5F,KAAAu9J,kBAAAvwJ,MACAhN,KAAA68J,QAAAp2J,KACAzG,KAAA68J,QAAAl2J,OACAg3J,EAAA5oJ,KAAAoiB,IAAAymI,EAAAj6H,aAAAi6H,EAAAl6H,cAAAk6H,EAAAl6H,eACAxqB,SAAAvgB,EAAAiN,IAAA,8BACAsT,SAAAvgB,EAAAiN,IAAA,yBACA5F,KAAAu9J,kBAAApvJ,OACAnO,KAAA68J,QAAAn2J,IACA1G,KAAA68J,QAAAj2J,QAEA5G,KAAA69J,kBAAAllK,IAnCAqH,KAAAo6J,YAAA52D,EAAA42D,YAXAp6J,KAAAo6J,YAAA,CACA,EACA,EACAhhK,EAAAlB,GAAA8U,QAAAhN,KAAAu9J,kBAAAvwJ,MAAAhN,KAAA68J,QAAAp2J,MACArN,EAAAlB,GAAAiW,UAAAjW,EAAAi4B,KAAAgB,WAAAwS,cACA3jC,KAAAu9J,kBAAApvJ,OAAAnO,KAAA68J,QAAAn2J,KAlBA1G,KAAAo6J,YAAA,CACAhhK,EAAAS,QAAAusC,aAAApmC,KAAAq8C,OAAA80E,SAAA1qH,KAAAzG,KAAAq8C,OAAAx2C,OAAAY,KACArN,EAAAS,QAAAiU,YAAA9N,KAAAq8C,OAAA80E,SAAAzqH,IAAA1G,KAAAq8C,OAAAx2C,OAAAa,IACAtN,EAAAS,QAAAusC,aAAAhtC,EAAAS,QAAAmT,QACAhN,KAAAu9J,kBAAAvwJ,MAAAhN,KAAA68J,QAAAp2J,KACArN,EAAAS,QAAAiU,aACA1U,EAAAS,QAAAsU,UAAAjW,EAAAi4B,KAAAgB,WAAAwS,cACA3jC,KAAAu9J,kBAAApvJ,OAAAnO,KAAA68J,QAAAn2J,KAZA1G,KAAAo6J,YAAA,IAiEA,EAEA6C,mBAAA,SAAA5kJ,EAAAozC,GAEAA,IACAA,EAAAzrD,KAAAmE,UAGA,IAAA8pI,EAAA,aAAA51H,EAAA,KACAqlJ,EAAA19J,KAAAw9J,YAAAx9J,KAAAu6I,aAAA,IAEA,OACA7zI,IAGA+kD,EAAA/kD,IAGA1G,KAAAq8C,OAAA80E,SAAAzqH,IAAAunI,EAGAjuI,KAAAq8C,OAAAx2C,OAAAa,IAAAunI,GACA,UAAAjuI,KAAAk0I,aACAl0I,KAAAq8C,OAAAgkG,OAAA35I,IACAg3J,EAAA,EAAA19J,KAAAq8C,OAAAgkG,OAAA35I,KAAAunI,EAEAxnI,KAGAglD,EAAAhlD,KAGAzG,KAAAq8C,OAAA80E,SAAA1qH,KAAAwnI,EAGAjuI,KAAAq8C,OAAAx2C,OAAAY,KAAAwnI,GACA,UAAAjuI,KAAAk0I,aACAl0I,KAAAq8C,OAAAgkG,OAAA55I,KACAi3J,EAAA,EAAA19J,KAAAq8C,OAAAgkG,OAAA55I,MAAAwnI,EAIA,EAEAmuB,kBAAA,SAAA17J,EAAAo9J,GAEA,IAAA1D,EAAA2D,EAAAr3J,EAAAD,EACA+8F,EAAAxjG,KAAAmjB,QACAu6I,EAAA19J,KAAAw9J,YAAAx9J,KAAAu6I,aAAA,IACAhvI,EAAA7K,EAAA6K,MACAC,EAAA9K,EAAA8K,MA2EA,OAxEAkyJ,GAAA19J,KAAAq8C,OAAAgkG,SACArgJ,KAAAq8C,OAAAgkG,OAAA,CACA35I,IAAA1G,KAAAu6I,aAAAzsI,YACArH,KAAAzG,KAAAu6I,aAAAn0G,eAUA03H,IACA99J,KAAAo6J,cACAp6J,KAAA69J,mBACAE,EAAA/9J,KAAA69J,kBAAAxhH,SACA+9G,EAAA,CACAp6J,KAAAo6J,YAAA,GAAA2D,EAAAt3J,KACAzG,KAAAo6J,YAAA,GAAA2D,EAAAr3J,IACA1G,KAAAo6J,YAAA,GAAA2D,EAAAt3J,KACAzG,KAAAo6J,YAAA,GAAA2D,EAAAr3J,MAGA0zJ,EAAAp6J,KAAAo6J,YAGA15J,EAAA6K,MAAAvL,KAAAq8C,OAAA8N,MAAA1jD,KAAA2zJ,EAAA,KACA7uJ,EAAA6uJ,EAAA,GAAAp6J,KAAAq8C,OAAA8N,MAAA1jD,MAEA/F,EAAA8K,MAAAxL,KAAAq8C,OAAA8N,MAAAzjD,IAAA0zJ,EAAA,KACA5uJ,EAAA4uJ,EAAA,GAAAp6J,KAAAq8C,OAAA8N,MAAAzjD,KAEAhG,EAAA6K,MAAAvL,KAAAq8C,OAAA8N,MAAA1jD,KAAA2zJ,EAAA,KACA7uJ,EAAA6uJ,EAAA,GAAAp6J,KAAAq8C,OAAA8N,MAAA1jD,MAEA/F,EAAA8K,MAAAxL,KAAAq8C,OAAA8N,MAAAzjD,IAAA0zJ,EAAA,KACA5uJ,EAAA4uJ,EAAA,GAAAp6J,KAAAq8C,OAAA8N,MAAAzjD,MAIA88F,EAAA82D,OAIA5zJ,EAAA88F,EAAA82D,KAAA,GAAAt6J,KAAAs8J,cAAAvnJ,KAAA81C,OAAAr/C,EACAxL,KAAAs8J,eAAA94D,EAAA82D,KAAA,IAAA92D,EAAA82D,KAAA,GAAAt6J,KAAAs8J,cACA9wJ,EAAA4uJ,EAAA1zJ,EAAA1G,KAAAq8C,OAAA8N,MAAAzjD,KAAA0zJ,EAAA,IACA1zJ,EAAA1G,KAAAq8C,OAAA8N,MAAAzjD,IAAA0zJ,EAAA,GACA1zJ,EACAA,EAAA1G,KAAAq8C,OAAA8N,MAAAzjD,KAAA0zJ,EAAA,GACA1zJ,EAAA88F,EAAA82D,KAAA,GAAA5zJ,EAAA88F,EAAA82D,KAAA,GAAA5zJ,EAEAD,EAAA+8F,EAAA82D,KAAA,GAAAt6J,KAAAq8J,cACAtnJ,KAAA81C,OAAAt/C,EAAAvL,KAAAq8J,eAAA74D,EAAA82D,KAAA,IAAA92D,EAAA82D,KAAA,GACAt6J,KAAAq8J,cACA9wJ,EAAA6uJ,EAAA3zJ,EAAAzG,KAAAq8C,OAAA8N,MAAA1jD,MAAA2zJ,EAAA,IACA3zJ,EAAAzG,KAAAq8C,OAAA8N,MAAA1jD,KAAA2zJ,EAAA,GACA3zJ,EACAA,EAAAzG,KAAAq8C,OAAA8N,MAAA1jD,MAAA2zJ,EAAA,GACA3zJ,EAAA+8F,EAAA82D,KAAA,GAAA7zJ,EAAA+8F,EAAA82D,KAAA,GAAA7zJ,GAGA,MAAA+8F,EAAA02D,OACA3uJ,EAAAvL,KAAAq8J,eAGA,MAAA74D,EAAA02D,OACA1uJ,EAAAxL,KAAAs8J,gBAIA,CACA51J,IAGA8E,EAGAxL,KAAAq8C,OAAA8N,MAAAzjD,IAGA1G,KAAAq8C,OAAA80E,SAAAzqH,IAGA1G,KAAAq8C,OAAAx2C,OAAAa,KACA,UAAA1G,KAAAk0I,aACAl0I,KAAAq8C,OAAAgkG,OAAA35I,IACAg3J,EAAA,EAAA19J,KAAAq8C,OAAAgkG,OAAA35I,KAEAD,KAGA8E,EAGAvL,KAAAq8C,OAAA8N,MAAA1jD,KAGAzG,KAAAq8C,OAAA80E,SAAA1qH,KAGAzG,KAAAq8C,OAAAx2C,OAAAY,MACA,UAAAzG,KAAAk0I,aACAl0I,KAAAq8C,OAAAgkG,OAAA55I,KACAi3J,EAAA,EAAA19J,KAAAq8C,OAAAgkG,OAAA55I,MAIA,EAEAg2J,OAAA,WACAz8J,KAAA6mI,aAAA7mI,KAAAw6J,OAAA,yBACAx6J,KAAAw6J,OAAA,KAAAx6J,KAAA4L,QAAA,IAAA5L,KAAAg+J,qBACAh+J,KAAAw6J,OAAAzhK,SAEAiH,KAAAw6J,OAAA,KACAx6J,KAAAg+J,qBAAA,EACAh+J,KAAAq7J,gBACAr7J,KAAAkrF,SAEA,EAIAw7C,SAAA,SAAAhhI,EAAAhF,EAAA+iI,GASA,OARAA,KAAAzjI,KAAAk9J,UACA9jK,EAAAqqI,GAAAo2B,OAAA70I,KAAAhlB,KAAA0F,EAAA,CAAAhF,EAAA+iI,EAAAzjI,OAAA,GAGA,qBAAA7F,KAAAuL,KACA1F,KAAAi8J,YAAAj8J,KAAAi9J,mBAAA,YACAx5B,EAAApnF,OAAAr8C,KAAAi8J,aAEA7iK,EAAAmrI,OAAAxkI,UAAA2mI,SAAA1hH,KAAAhlB,KAAA0F,EAAAhF,EAAA+iI,EACA,EAEAq2B,QAAA,GAEAoD,QAAA,WACA,OACA1C,OAAAx6J,KAAAw6J,OACAr2J,SAAAnE,KAAAmE,SACAg4J,iBAAAn8J,KAAAm8J,iBACA9/G,OAAAr8C,KAAAi8J,YAEA,IAIA7iK,EAAAqqI,GAAAo2B,OAAAz0G,IAAA,iCACAlkC,MAAA,SAAAxgB,EAAA+iI,EAAAw6B,GACA,IAAAC,EAAA9kK,EAAAuG,OAAA,GAAA8jI,EAAA,CACAtxH,KAAA8rJ,EAAAryJ,UAGAqyJ,EAAAE,UAAA,GACA/kK,EAAA6kK,EAAA96I,QAAAg3I,mBAAA/3J,MAAA,WACA,IAAAg8J,EAAAhlK,EAAA4G,MAAAo+J,SAAA,YAEAA,MAAAj7I,QAAA2iH,WACAm4B,EAAAE,UAAAt9J,KAAAu9J,GAKAA,EAAA1D,mBACA0D,EAAA13B,SAAA,WAAAhmI,EAAAw9J,GAEA,GACA,EACAx5I,KAAA,SAAAhkB,EAAA+iI,EAAAw6B,GACA,IAAAC,EAAA9kK,EAAAuG,OAAA,GAAA8jI,EAAA,CACAtxH,KAAA8rJ,EAAAryJ,UAGAqyJ,EAAAD,qBAAA,EAEA5kK,EAAAgJ,KAAA67J,EAAAE,WAAA,WACA,IAAAC,EAAAp+J,KAEAo+J,EAAAC,QACAD,EAAAC,OAAA,EAGAJ,EAAAD,qBAAA,EACAI,EAAAJ,qBAAA,EAKAI,EAAAE,WAAA,CACAn6J,SAAAi6J,EAAAt9E,YAAAl7E,IAAA,YACAc,IAAA03J,EAAAt9E,YAAAl7E,IAAA,OACAa,KAAA23J,EAAAt9E,YAAAl7E,IAAA,SAGAw4J,EAAAxE,WAAAl5J,GAIA09J,EAAAj7I,QAAAq3I,OAAA4D,EAAAj7I,QAAAo7I,UAMAH,EAAAJ,qBAAA,EAEAI,EAAA13B,SAAA,aAAAhmI,EAAAw9J,GAEA,GACA,EACA/0G,KAAA,SAAAzoD,EAAA+iI,EAAAw6B,GACA7kK,EAAAgJ,KAAA67J,EAAAE,WAAA,WACA,IAAAK,GAAA,EACAJ,EAAAp+J,KAGAo+J,EAAAnC,YAAAgC,EAAAhC,YACAmC,EAAAb,kBAAAU,EAAAV,kBACAa,EAAA/hH,OAAA8N,MAAA8zG,EAAA5hH,OAAA8N,MAEAi0G,EAAAK,gBAAAL,EAAAM,kBACAF,GAAA,EAEAplK,EAAAgJ,KAAA67J,EAAAE,WAAA,WAaA,OAVAn+J,KAAAi8J,YAAAgC,EAAAhC,YACAj8J,KAAAu9J,kBAAAU,EAAAV,kBACAv9J,KAAAq8C,OAAA8N,MAAA8zG,EAAA5hH,OAAA8N,MAEAnqD,OAAAo+J,GACAp+J,KAAAy+J,gBAAAz+J,KAAA0+J,iBACAtlK,EAAA2I,SAAAq8J,EAAAxyJ,QAAA,GAAA5L,KAAA4L,QAAA,MACA4yJ,GAAA,GAGAA,CACA,KAGAA,GAIAJ,EAAAC,SACAD,EAAAC,OAAA,EAGAJ,EAAAU,QAAAl7B,EAAA+2B,OAAA30J,SAEAu4J,EAAAQ,YAAAn7B,EAAA+2B,OACA3zJ,SAAAu3J,EAAAxyJ,SACAtQ,KAAA,uBAGA8iK,EAAAj7I,QAAAo7I,QAAAH,EAAAj7I,QAAAq3I,OAEA4D,EAAAj7I,QAAAq3I,OAAA,WACA,OAAA/2B,EAAA+2B,OAAA,EACA,EAIA95J,EAAA2jC,OAAA+5H,EAAAQ,YAAA,GACAR,EAAAjF,cAAAz4J,GAAA,GACA09J,EAAA5E,YAAA94J,GAAA,MAIA09J,EAAA/hH,OAAA8N,MAAAzjD,IAAAu3J,EAAA5hH,OAAA8N,MAAAzjD,IACA03J,EAAA/hH,OAAA8N,MAAA1jD,KAAAw3J,EAAA5hH,OAAA8N,MAAA1jD,KACA23J,EAAA/hH,OAAAx2C,OAAAY,MAAAw3J,EAAA5hH,OAAAx2C,OAAAY,KACA23J,EAAA/hH,OAAAx2C,OAAAY,KACA23J,EAAA/hH,OAAAx2C,OAAAa,KAAAu3J,EAAA5hH,OAAAx2C,OAAAa,IACA03J,EAAA/hH,OAAAx2C,OAAAa,IAEAu3J,EAAAv3B,SAAA,aAAAhmI,GAIAu9J,EAAAd,QAAAiB,EAAAxyJ,QAIAxS,EAAAgJ,KAAA67J,EAAAE,WAAA,WACAn+J,KAAA06J,kBACA,IAGAuD,EAAAW,YAAAX,EAAAryJ,QACAwyJ,EAAAS,YAAAZ,GAGAG,EAAAQ,cACAR,EAAAzE,WAAAj5J,GAKA+iI,EAAAt/H,SAAAi6J,EAAAj6J,WAOAi6J,EAAAC,SAEAD,EAAAC,OAAA,EACAD,EAAAJ,qBAAA,EAIAI,EAAAj7I,QAAA27I,QAAAV,EAAAj7I,QAAAw3I,OACAyD,EAAAj7I,QAAAw3I,QAAA,EAEAyD,EAAA13B,SAAA,MAAAhmI,EAAA09J,EAAAlB,QAAAkB,IACAA,EAAAxE,WAAAl5J,GAAA,GAIA09J,EAAAj7I,QAAAw3I,OAAAyD,EAAAj7I,QAAA27I,QACAV,EAAAj7I,QAAAq3I,OAAA4D,EAAAj7I,QAAAo7I,QAEAH,EAAAt9E,aACAs9E,EAAAt9E,YAAA/nF,SAKA0qI,EAAA+2B,OAAA3zJ,SAAAo3J,EAAAU,SACAV,EAAA/B,gBAAAx7J,GACA+iI,EAAAt/H,SAAA85J,EAAA7B,kBAAA17J,GAAA,GAEAu9J,EAAAv3B,SAAA,eAAAhmI,GAGAu9J,EAAAd,SAAA,EAIA/jK,EAAAgJ,KAAA67J,EAAAE,WAAA,WACAn+J,KAAA06J,kBACA,IAGA,GACA,IAGAthK,EAAAqqI,GAAAo2B,OAAAz0G,IAAA,sBACAlkC,MAAA,SAAAxgB,EAAA+iI,EAAAlkI,GACA,IAAA4yD,EAAA/4D,EAAA,QACAoqG,EAAAjkG,EAAA4jB,QAEAgvC,EAAAvsD,IAAA,YACA49F,EAAAu7D,QAAA5sG,EAAAvsD,IAAA,WAEAusD,EAAAvsD,IAAA,SAAA49F,EAAAthD,OACA,EACAx9B,KAAA,SAAAhkB,EAAA+iI,EAAAlkI,GACA,IAAAikG,EAAAjkG,EAAA4jB,QACAqgF,EAAAu7D,SACA3lK,EAAA,QAAAwM,IAAA,SAAA49F,EAAAu7D,QAEA,IAGA3lK,EAAAqqI,GAAAo2B,OAAAz0G,IAAA,uBACAlkC,MAAA,SAAAxgB,EAAA+iI,EAAAlkI,GACA,IAAA4yD,EAAA/4D,EAAAqqI,EAAA+2B,QACAh3D,EAAAjkG,EAAA4jB,QACAgvC,EAAAvsD,IAAA,aACA49F,EAAAw7D,SAAA7sG,EAAAvsD,IAAA,YAEAusD,EAAAvsD,IAAA,UAAA49F,EAAApmE,QACA,EACA1Y,KAAA,SAAAhkB,EAAA+iI,EAAAlkI,GACA,IAAAikG,EAAAjkG,EAAA4jB,QACAqgF,EAAAw7D,UACA5lK,EAAAqqI,EAAA+2B,QAAA50J,IAAA,UAAA49F,EAAAw7D,SAEA,IAGA5lK,EAAAqqI,GAAAo2B,OAAAz0G,IAAA,sBACAlkC,MAAA,SAAAxgB,EAAA+iI,EAAAhrI,GACAA,EAAAwmK,wBACAxmK,EAAAwmK,sBAAAxmK,EAAA+hK,OAAAjgB,cAAA,IAGA9hJ,EAAAwmK,sBAAA,KAAAxmK,EAAAP,SAAA,IACA,SAAAO,EAAAwmK,sBAAA,GAAA9tH,UACA14C,EAAAymK,eAAAzmK,EAAAwmK,sBAAA5iH,SAEA,EACA8M,KAAA,SAAAzoD,EAAA+iI,EAAAhrI,GAEA,IAAA+qG,EAAA/qG,EAAA0qB,QACAg8I,GAAA,EACA5kB,EAAA9hJ,EAAAwmK,sBAAA,GACA/mK,EAAAO,EAAAP,SAAA,GAEAqiJ,IAAAriJ,GAAA,SAAAqiJ,EAAAppG,SACAqyD,EAAA02D,MAAA,MAAA12D,EAAA02D,OACAzhK,EAAAymK,eAAAx4J,IAAA6zI,EAAA72G,aAAAhjC,EAAA8K,MACAg4F,EAAAq3D,kBACAtgB,EAAAzsI,UAAAqxJ,EAAA5kB,EAAAzsI,UAAA01F,EAAAs3D,YACAp6J,EAAA8K,MAAA/S,EAAAymK,eAAAx4J,IAAA88F,EAAAq3D,oBACAtgB,EAAAzsI,UAAAqxJ,EAAA5kB,EAAAzsI,UAAA01F,EAAAs3D,cAIAt3D,EAAA02D,MAAA,MAAA12D,EAAA02D,OACAzhK,EAAAymK,eAAAz4J,KAAA8zI,EAAA32G,YAAAljC,EAAA6K,MACAi4F,EAAAq3D,kBACAtgB,EAAAn0G,WAAA+4H,EAAA5kB,EAAAn0G,WAAAo9D,EAAAs3D,YACAp6J,EAAA6K,MAAA9S,EAAAymK,eAAAz4J,KAAA+8F,EAAAq3D,oBACAtgB,EAAAn0G,WAAA+4H,EAAA5kB,EAAAn0G,WAAAo9D,EAAAs3D,gBAMAt3D,EAAA02D,MAAA,MAAA12D,EAAA02D,OACAx5J,EAAA8K,MAAApS,EAAAlB,GAAA4V,YAAA01F,EAAAq3D,kBACAsE,EAAA/lK,EAAAlB,GAAA4V,UAAA1U,EAAAlB,GAAA4V,YAAA01F,EAAAs3D,aACA1hK,EAAAS,QAAAsU,UAAAzN,EAAA8K,MAAApS,EAAAlB,GAAA4V,aACA01F,EAAAq3D,oBACAsE,EAAA/lK,EAAAlB,GAAA4V,UAAA1U,EAAAlB,GAAA4V,YAAA01F,EAAAs3D,eAIAt3D,EAAA02D,MAAA,MAAA12D,EAAA02D,OACAx5J,EAAA6K,MAAAnS,EAAAlB,GAAAkuC,aAAAo9D,EAAAq3D,kBACAsE,EAAA/lK,EAAAlB,GAAAkuC,WACAhtC,EAAAlB,GAAAkuC,aAAAo9D,EAAAs3D,aAEA1hK,EAAAS,QAAAmT,SAAAtM,EAAA6K,MAAAnS,EAAAlB,GAAAkuC,cACAo9D,EAAAq3D,oBACAsE,EAAA/lK,EAAAlB,GAAAkuC,WACAhtC,EAAAlB,GAAAkuC,aAAAo9D,EAAAs3D,iBAOA,IAAAqE,GAAA/lK,EAAAqqI,GAAAo4B,YAAAr4D,EAAAk5D,eACAtjK,EAAAqqI,GAAAo4B,UAAAc,eAAAlkK,EAAAiI,EAGA,IAGAtH,EAAAqqI,GAAAo2B,OAAAz0G,IAAA,oBACAlkC,MAAA,SAAAxgB,EAAA+iI,EAAAhrI,GAEA,IAAA+qG,EAAA/qG,EAAA0qB,QAEA1qB,EAAA2mK,aAAA,GAEAhmK,EAAAoqG,EAAAu3D,KAAA96J,cAAA0yC,OAAA6wD,EAAAu3D,KAAAzgI,OAAA,sBAAAkpE,EAAAu3D,MACA34J,MAAA,WACA,IAAAi9J,EAAAjmK,EAAA4G,MACAs/J,EAAAD,EAAAhjH,SACAr8C,OAAAvH,EAAAmT,QAAA,IACAnT,EAAA2mK,aAAAv+J,KAAA,CACAsR,KAAAnS,KACAgN,MAAAqyJ,EAAAznJ,aAAAzJ,OAAAkxJ,EAAAxnJ,cACAnR,IAAA44J,EAAA54J,IAAAD,KAAA64J,EAAA74J,MAGA,GAEA,EACA0iD,KAAA,SAAAzoD,EAAA+iI,EAAAtN,GAEA,IAAA5tB,EAAAg3D,EAAAC,EAAAC,EAAA1rG,EAAArqB,EAAAyoB,EAAAT,EAAAj5D,EAAA8hB,EACAipF,EAAA2yB,EAAAhzG,QACA9K,EAAAmrF,EAAAy3D,cACA7/D,EAAAqoC,EAAApnF,OAAA51C,KAAAi5J,EAAAtkE,EAAA+6B,EAAAonC,kBAAAvwJ,MACAsuF,EAAAmoC,EAAApnF,OAAA31C,IAAAi5J,EAAArkE,EAAA66B,EAAAonC,kBAAApvJ,OAEA,IAAA1V,EAAA09H,EAAAipC,aAAA1mK,OAAA,EAAAD,GAAA,EAAAA,IAGAixC,GADAqqB,EAAAoiE,EAAAipC,aAAA3mK,GAAAgO,KAAA0vH,EAAA0mC,QAAAp2J,MACA0vH,EAAAipC,aAAA3mK,GAAAuU,MAEA0kD,GADAS,EAAAgkE,EAAAipC,aAAA3mK,GAAAiO,IAAAyvH,EAAA0mC,QAAAn2J,KACAyvH,EAAAipC,aAAA3mK,GAAA0V,OAEAuxJ,EAAA3rG,EAAA17C,GAAA+iF,EAAA1xD,EAAArxB,GAAAsnJ,EAAAxtG,EAAA95C,GAAAijF,EAAA5pC,EAAAr5C,IACAjf,EAAA2I,SAAAo0H,EAAAipC,aAAA3mK,GAAA0Z,KAAAurE,cACAy4C,EAAAipC,aAAA3mK,GAAA0Z,OACAgkH,EAAAipC,aAAA3mK,GAAAmnK,UACAzpC,EAAAhzG,QAAA43I,KAAA8E,SACA1pC,EAAAhzG,QAAA43I,KAAA8E,QAAA76I,KACAmxG,EAAAvqH,QACAlL,EACAtH,EAAAuG,OAAAw2H,EAAA+mC,UAAA,CAAA4C,SAAA3pC,EAAAipC,aAAA3mK,GAAA0Z,QAIAgkH,EAAAipC,aAAA3mK,GAAAmnK,UAAA,IAIA,UAAAp8D,EAAAw3D,WACAzyD,EAAAxzF,KAAAD,IAAAq9C,EAAAwtG,IAAAtnJ,EACAknJ,EAAAxqJ,KAAAD,IAAA48C,EAAA4pC,IAAAjjF,EACAmnJ,EAAAzqJ,KAAAD,IAAAi/C,EAAA2rG,IAAArnJ,EACAonJ,EAAA1qJ,KAAAD,IAAA40B,EAAA0xD,IAAA/iF,EACAkwF,IACAk7B,EAAAt/H,SAAAuC,IAAAyvH,EAAA8mC,mBAAA,YACAv2J,IAAAyrD,EAAAgkE,EAAAonC,kBAAApvJ,OACA1H,KAAA,IACAC,KAEA64J,IACA97B,EAAAt/H,SAAAuC,IAAAyvH,EAAA8mC,mBAAA,YACAv2J,IAAAgrD,EACAjrD,KAAA,IACAC,KAEA84J,IACA/7B,EAAAt/H,SAAAsC,KAAA0vH,EAAA8mC,mBAAA,YACAv2J,IAAA,EACAD,KAAAstD,EAAAoiE,EAAAonC,kBAAAvwJ,QACAvG,MAEAg5J,IACAh8B,EAAAt/H,SAAAsC,KAAA0vH,EAAA8mC,mBAAA,YACAv2J,IAAA,EACAD,KAAAijC,IACAjjC,OAIA8T,EAAAguF,GAAAg3D,GAAAC,GAAAC,EAEA,UAAAj8D,EAAAw3D,WACAzyD,EAAAxzF,KAAAD,IAAAq9C,EAAAmpC,IAAAjjF,EACAknJ,EAAAxqJ,KAAAD,IAAA48C,EAAAiuG,IAAAtnJ,EACAmnJ,EAAAzqJ,KAAAD,IAAAi/C,EAAAqnC,IAAA/iF,EACAonJ,EAAA1qJ,KAAAD,IAAA40B,EAAAg2H,IAAArnJ,EACAkwF,IACAk7B,EAAAt/H,SAAAuC,IAAAyvH,EAAA8mC,mBAAA,YACAv2J,IAAAyrD,EACA1rD,KAAA,IACAC,KAEA64J,IACA97B,EAAAt/H,SAAAuC,IAAAyvH,EAAA8mC,mBAAA,YACAv2J,IAAAgrD,EAAAykE,EAAAonC,kBAAApvJ,OACA1H,KAAA,IACAC,KAEA84J,IACA/7B,EAAAt/H,SAAAsC,KAAA0vH,EAAA8mC,mBAAA,YACAv2J,IAAA,EACAD,KAAAstD,IACAttD,MAEAg5J,IACAh8B,EAAAt/H,SAAAsC,KAAA0vH,EAAA8mC,mBAAA,YACAv2J,IAAA,EACAD,KAAAijC,EAAAysF,EAAAonC,kBAAAvwJ,QACAvG,QAIA0vH,EAAAipC,aAAA3mK,GAAAmnK,WAAAr3D,GAAAg3D,GAAAC,GAAAC,GAAAllJ,IACA47G,EAAAhzG,QAAA43I,WACA5kC,EAAAhzG,QAAA43I,UAAA/1I,KACAmxG,EAAAvqH,QACAlL,EACAtH,EAAAuG,OAAAw2H,EAAA+mC,UAAA,CACA4C,SAAA3pC,EAAAipC,aAAA3mK,GAAA0Z,QAIAgkH,EAAAipC,aAAA3mK,GAAAmnK,SAAAr3D,GAAAg3D,GAAAC,GAAAC,GAAAllJ,EAIA,IAGAnhB,EAAAqqI,GAAAo2B,OAAAz0G,IAAA,qBACAlkC,MAAA,SAAAxgB,EAAA+iI,EAAAlkI,GACA,IAAA8yB,EACAmxE,EAAAjkG,EAAA4jB,QACA8yI,EAAA78J,EAAAs7B,UAAAt7B,EAAAoqG,EAAAzP,QAAA24B,MAAA,SAAAh6F,EAAAg/B,GACA,OAAAx4C,SAAA9f,EAAAs5B,GAAA9sB,IAAA,mBACAsT,SAAA9f,EAAAs4D,GAAA9rD,IAAA,iBACA,IAEAqwJ,EAAAv9J,SAIA25B,EAAAnZ,SAAA9f,EAAA68J,EAAA,IAAArwJ,IAAA,iBACAxM,EAAA68J,GAAA7zJ,MAAA,SAAA3J,GACAW,EAAA4G,MAAA4F,IAAA,SAAAysB,EAAA55B,EACA,IACAuH,KAAA4F,IAAA,SAAAysB,EAAA4jI,EAAAv9J,QACA,IAGAU,EAAAqqI,GAAAo2B,OAAAz0G,IAAA,sBACAlkC,MAAA,SAAAxgB,EAAA+iI,EAAAlkI,GACA,IAAA4yD,EAAA/4D,EAAAqqI,EAAA+2B,QACAh3D,EAAAjkG,EAAA4jB,QAEAgvC,EAAAvsD,IAAA,YACA49F,EAAAu8D,QAAA5tG,EAAAvsD,IAAA,WAEAusD,EAAAvsD,IAAA,SAAA49F,EAAAj/F,OACA,EACAmgB,KAAA,SAAAhkB,EAAA+iI,EAAAlkI,GACA,IAAAikG,EAAAjkG,EAAA4jB,QAEAqgF,EAAAu8D,SACA3mK,EAAAqqI,EAAA+2B,QAAA50J,IAAA,SAAA49F,EAAAu8D,QAEA,IAGA3mK,EAAAqqI,GAAAw6B;;;;;;;;GAsBA7kK,EAAA6qI,OAAA,eAAA7qI,EAAAqqI,GAAAu2B,MAAA,CACAp9I,QAAA,SACAooH,kBAAA,SACA7hH,QAAA,CACA68I,YAAA,EACA14G,SAAA,EACA24G,gBAAA,OACAC,cAAA,QACAC,aAAA,EACAC,UAAA,EACAv6B,QAAA,CACA,2DAEAu0B,aAAA,EACAiG,OAAA,EACA/F,MAAA,EACAgG,QAAA,SACA9F,QAAA,EACA9d,UAAA,KACA6jB,SAAA,KACAxzJ,UAAA,GACAo6B,SAAA,GAGA5iC,OAAA,GAGA6D,OAAA,KACA8Y,MAAA,KACAwD,KAAA,MAGA87I,KAAA,SAAAh0J,GACA,OAAAiT,WAAAjT,IAAA,CACA,EAEAi0J,UAAA,SAAAj0J,GACA,OAAAy9F,MAAAxqF,WAAAjT,GACA,EAEAg0I,WAAA,SAAAlO,EAAA5/G,GAEA,IAAA2tH,EACAliH,GAAA,EACA6Y,EAAA59C,EAAAk5I,GAAA1sI,IAAA,YAEA,cAAAoxC,EACA,SAEA,cAAAA,EACA,SAKA,GAAAs7F,EAFA+N,EAAA3tH,GAAA,SAAAA,EAAA,0BAEA,EACA,SAMA,IACA4/G,EAAA+N,GAAA,EACAliH,EAAAm0G,EAAA+N,GAAA,EACA/N,EAAA+N,GAAA,CACA,OAAA/nI,GAIA,CACA,OAAA6lB,CACA,EAEAqoG,QAAA,WAEA,IAAAq2B,EACAr5D,EAAAxjG,KAAAmjB,QACA3E,EAAAxe,KACAA,KAAA+nI,UAAA,gBAEA3uI,EAAAuG,OAAAK,KAAA,CACA0gK,eAAAl9D,EAAA,YACA28D,YAAA38D,EAAA28D,YACAQ,gBAAA3gK,KAAA4L,QACAg1J,8BAAA,GACArC,QAAA/6D,EAAAg3D,QAAAh3D,EAAA68D,OAAA78D,EAAAl8C,QAAAk8C,EAAAg3D,QAAA,6BAIAx6J,KAAA4L,QAAA,GAAAu7E,SAAAz0E,MAAA,kDAEA1S,KAAA4L,QAAA0nI,KACAl6I,EAAA,kCAAAwM,IAAA,CACAoxC,SAAA,SACA7yC,SAAAnE,KAAA4L,QAAAhG,IAAA,YACAoH,MAAAhN,KAAA4L,QAAAgM,aACAzJ,OAAAnO,KAAA4L,QAAAiM,cACAnR,IAAA1G,KAAA4L,QAAAhG,IAAA,OACAa,KAAAzG,KAAA4L,QAAAhG,IAAA,WAIA5F,KAAA4L,QAAA5L,KAAA4L,QAAA/F,SAAAvK,KACA,eAAA0E,KAAA4L,QAAAi1J,UAAA,aAGA7gK,KAAA8gK,kBAAA,EAEAjE,EAAA,CACAjpF,UAAA5zE,KAAA2gK,gBAAA/6J,IAAA,aACAuH,YAAAnN,KAAA2gK,gBAAA/6J,IAAA,eACAiuE,aAAA7zE,KAAA2gK,gBAAA/6J,IAAA,gBACAsH,WAAAlN,KAAA2gK,gBAAA/6J,IAAA,eAGA5F,KAAA4L,QAAAhG,IAAAi3J,GAIA78J,KAAA+gK,oBAAA/gK,KAAA2gK,gBAAA/6J,IAAA,UACA5F,KAAA2gK,gBAAA/6J,IAAA,iBAEA5F,KAAA4gK,8BAAA//J,KAAAb,KAAA2gK,gBAAA/6J,IAAA,CACAzB,SAAA,SACA68J,KAAA,EACAn0J,QAAA,WAGA7M,KAAAihK,yBAGAjhK,KAAAkhK,gBAEA19D,EAAA48D,UACAhnK,EAAA4G,KAAA4L,SACAlQ,GAAA,yBACA8nG,EAAAsiC,WAGAtnH,EAAAqoH,aAAA,yBACAroH,EAAA2iJ,SAAAr4J,OACA,IACApN,GAAA,yBACA8nG,EAAAsiC,UAGAtnH,EAAA4iJ,WACA5iJ,EAAAupH,UAAA,yBACAvpH,EAAA2iJ,SAAA33J,OAEA,IAGAxJ,KAAAu4J,YACA,EAEA3xB,SAAA,WAEA5mI,KAAA04J,gBACA14J,KAAAqhK,cAAAtoK,SAEA,IAAA4kF,EACAipD,EAAA,SAAA1pE,GACA9jE,EAAA8jE,GACA4pE,WAAA,aACAA,WAAA,gBACAt8H,IAAA,aACA,EAmBA,OAhBAxK,KAAA8gK,mBACAl6B,EAAA5mI,KAAA4L,SACA+xE,EAAA39E,KAAA4L,QACA5L,KAAA2gK,gBAAA/6J,IAAA,CACAzB,SAAAw5E,EAAA/3E,IAAA,YACAoH,MAAA2wE,EAAA/lE,aACAzJ,OAAAwvE,EAAA9lE,cACAnR,IAAAi3E,EAAA/3E,IAAA,OACAa,KAAAk3E,EAAA/3E,IAAA,UACAuuI,YAAAx2D,GACAA,EAAA5kF,UAGAiH,KAAA2gK,gBAAA/6J,IAAA,SAAA5F,KAAA+gK,qBACAn6B,EAAA5mI,KAAA2gK,iBAEA3gK,IACA,EAEAinI,WAAA,SAAAr2H,EAAApE,GAGA,OAFAxM,KAAA2/E,OAAA/uE,EAAApE,GAEAoE,GACA,cACA5Q,KAAAshK,iBACAthK,KAAAkhK,gBACA,MACA,kBACAlhK,KAAA0gK,eAAAl0J,EAKA,EAEA00J,cAAA,WACA,IAAA3G,EAAA9hK,EAAA25D,EAAAmvG,EAAArH,EAAA12D,EAAAxjG,KAAAmjB,QAAA3E,EAAAxe,KAgBA,GAfAA,KAAAsgK,QAAA98D,EAAA88D,UACAlnK,EAAA,uBAAA4G,KAAA4L,SAAAlT,OACA,CACA05D,EAAA,kBACA95C,EAAA,kBACAsH,EAAA,kBACAxH,EAAA,kBACAopJ,GAAA,mBACAC,GAAA,mBACAC,GAAA,mBACAC,GAAA,oBARA,UAWA3hK,KAAAmhK,SAAA/nK,IACA4G,KAAAqhK,cAAAjoK,IACA4G,KAAAsgK,QAAArgK,cAAA0yC,OASA,IAPA,QAAA3yC,KAAAsgK,UACAtgK,KAAAsgK,QAAA,uBAGAluG,EAAApyD,KAAAsgK,QAAA9nK,MAAA,KACAwH,KAAAsgK,QAAA,GAEA7nK,EAAA,EAAAA,EAAA25D,EAAA15D,OAAAD,IAGA8oK,EAAA,iBADAhH,EAAA5nH,OAAA5yC,UAAAsiB,KAAA2C,KAAAotC,EAAA35D,KAEAyhK,EAAA9gK,EAAA,SACA4G,KAAA+nI,UAAAmyB,EAAA,uBAAAqH,GAEArH,EAAAt0J,IAAA,CAAArB,OAAAi/F,EAAAj/F,SAEAvE,KAAAsgK,QAAA/F,GAAA,iBAAAA,EACAv6J,KAAA4L,QAAA82B,SAAA1iC,KAAAsgK,QAAA/F,IAAA7hK,SACAsH,KAAA4L,QAAAigC,OAAAquH,GACAl6J,KAAAqhK,cAAArhK,KAAAqhK,cAAAj8G,IAAA80G,IAMAl6J,KAAA4hK,YAAA,SAAAv9H,GAEA,IAAA5rC,EAAAyhK,EAAA2H,EAAAC,EAIA,IAAArpK,KAFA4rC,KAAArkC,KAAA4L,QAEA5L,KAAAsgK,QAEAtgK,KAAAsgK,QAAA7nK,GAAAwH,cAAA0yC,OACA3yC,KAAAsgK,QAAA7nK,GAAAuH,KAAA4L,QAAA82B,SAAA1iC,KAAAsgK,QAAA7nK,IAAA8hB,QAAAzR,QACA9I,KAAAsgK,QAAA7nK,GAAA28B,QAAAp1B,KAAAsgK,QAAA7nK,GAAA+4C,YACAxxC,KAAAsgK,QAAA7nK,GAAAW,EAAA4G,KAAAsgK,QAAA7nK,IACAuH,KAAAqmI,IAAArmI,KAAAsgK,QAAA7nK,GAAA,CAAA+pJ,UAAAhkI,EAAAg6I,cAGAx4J,KAAA8gK,kBACA9gK,KAAA2gK,gBAAA,GACAx5E,SACAz0E,MAAA,uCACAwnJ,EAAA9gK,EAAA4G,KAAAsgK,QAAA7nK,GAAAuH,KAAA4L,SAEAk2J,EAAA,kBAAA3nK,KAAA1B,GACAyhK,EAAAriJ,cACAqiJ,EAAAtiJ,aAEAiqJ,EAAA,WACA,UAAA1nK,KAAA1B,GAAA,MACA,UAAA0B,KAAA1B,GAAA,SACA,MAAA0B,KAAA1B,GAAA,gBAAAua,KAAA,IAEAqxB,EAAAz+B,IAAAi8J,EAAAC,GAEA9hK,KAAAihK,yBAGAjhK,KAAAmhK,SAAAnhK,KAAAmhK,SAAA/7G,IAAAplD,KAAAsgK,QAAA7nK,GAEA,EAGAuH,KAAA4hK,YAAA5hK,KAAA4L,SAEA5L,KAAAmhK,SAAAnhK,KAAAmhK,SAAA/7G,IAAAplD,KAAA4L,QAAAtK,KAAA,yBACAtB,KAAAmhK,SAAAl0B,mBAEAjtI,KAAAmhK,SAAAzlK,GAAA,wBACA8iB,EAAA4iJ,WACAphK,KAAA8/B,YACAo6H,EAAAl6J,KAAA8/B,UAAAptB,MAAA,wCAEA8L,EAAA07I,UAAA,GAAAA,EAAA,QAEA,IAEA12D,EAAA48D,WACApgK,KAAAmhK,SAAA33J,OACAxJ,KAAA+nI,UAAA,yBAEA,EAEAu5B,eAAA,WACAthK,KAAAqhK,cAAAtoK,QACA,EAEAogK,cAAA,SAAAz4J,GACA,IAAAjI,EAAA8hK,EACAwH,GAAA,EAEA,IAAAtpK,KAAAuH,KAAAsgK,UACA/F,EAAAnhK,EAAA4G,KAAAsgK,QAAA7nK,IAAA,MACAiI,EAAA2jC,QAAAjrC,EAAA2I,SAAAw4J,EAAA75J,EAAA2jC,WACA09H,GAAA,GAIA,OAAA/hK,KAAAmjB,QAAA2iH,UAAAi8B,CACA,EAEAvI,YAAA,SAAA94J,GAEA,IAAAshK,EAAAC,EAAA//G,EAAAggH,EACA1+D,EAAAxjG,KAAAmjB,QACAmvH,EAAAtyI,KAAA4L,QAsDA,OApDA5L,KAAAohK,UAAA,EAEAphK,KAAAmiK,eAEAH,EAAAhiK,KAAAwgK,KAAAxgK,KAAAw6J,OAAA50J,IAAA,SACAq8J,EAAAjiK,KAAAwgK,KAAAxgK,KAAAw6J,OAAA50J,IAAA,QAEA49F,EAAA42D,cACA4H,GAAA5oK,EAAAoqG,EAAA42D,aAAAh0H,cAAA,EACA67H,GAAA7oK,EAAAoqG,EAAA42D,aAAAtsJ,aAAA,GAGA9N,KAAAq8C,OAAAr8C,KAAAw6J,OAAAn+G,SACAr8C,KAAAmE,SAAA,CAAAsC,KAAAu7J,EAAAt7J,IAAAu7J,GAEAjiK,KAAAu+J,UACA2D,EAAAliK,KAAAoiK,oCAAA9vB,IAGAtyI,KAAAsE,KAAAtE,KAAAu+J,QAAA,CACAvxJ,MAAAhN,KAAAw6J,OAAAxtJ,QACAmB,OAAAnO,KAAAw6J,OAAArsJ,UACA,CACAnB,MAAAk1J,EAAAl1J,MACAmB,OAAA+zJ,EAAA/zJ,QAGAnO,KAAAqiK,aAAAriK,KAAAu+J,QAAA,CACAvxJ,MAAAslI,EAAA16H,aACAzJ,OAAAmkI,EAAAz6H,eACA,CACA7K,MAAAk1J,EAAAl1J,MACAmB,OAAA+zJ,EAAA/zJ,QAGAnO,KAAAsiK,SAAA,CACAt1J,MAAAslI,EAAA16H,aAAA06H,EAAAtlI,QACAmB,OAAAmkI,EAAAz6H,cAAAy6H,EAAAnkI,UAGAnO,KAAAm8J,iBAAA,CAAA11J,KAAAu7J,EAAAt7J,IAAAu7J,GACAjiK,KAAAuiK,sBAAA,CAAA97J,KAAA/F,EAAA6K,MAAA7E,IAAAhG,EAAA8K,OAEAxL,KAAAmgK,YAAA,iBAAA38D,EAAA28D,YACA38D,EAAA28D,YACAngK,KAAAqiK,aAAAr1J,MAAAhN,KAAAqiK,aAAAl0J,QAAA,EAEA+zC,EAAA9oD,EAAA,iBAAA4G,KAAAk6J,MAAAt0J,IAAA,UACAxM,EAAA,QAAAwM,IAAA,kBAAAs8C,EAAAliD,KAAAk6J,KAAA,UAAAh4G,GAEAliD,KAAA+nI,UAAA,yBACA/nI,KAAAwiK,WAAA,QAAA9hK,IACA,CACA,EAEAi5J,WAAA,SAAAj5J,GAEA,IAAApF,EAAAqnG,EACA8/D,EAAAziK,KAAAuiK,sBACA7vI,EAAA1yB,KAAAk6J,KACAwI,EAAAhiK,EAAA6K,MAAAk3J,EAAAh8J,MAAA,EACAk8J,EAAAjiK,EAAA8K,MAAAi3J,EAAA/7J,KAAA,EACAwE,EAAAlL,KAAAqiJ,QAAA3vH,GAIA,OAFA1yB,KAAA4iK,0BAEA13J,IAIA5P,EAAA4P,EAAAjK,MAAAjB,KAAA,CAAAU,EAAAgiK,EAAAC,IAEA3iK,KAAA6iK,yBAAAniK,EAAA6iJ,WACAvjJ,KAAA0gK,cAAAhgK,EAAA6iJ,YACAjoJ,EAAA0E,KAAA8iK,aAAAxnK,EAAAoF,IAGApF,EAAA0E,KAAA+iK,aAAAznK,EAAAoF,GAEAV,KAAAgjK,aAAA1nK,GAEA0E,KAAAwiK,WAAA,SAAA9hK,GAEAiiG,EAAA3iG,KAAAijK,iBAEAjjK,KAAAu+J,SAAAv+J,KAAA4gK,8BAAAloK,QACAsH,KAAAihK,wBAGA7nK,EAAAu8B,cAAAgtE,KACA3iG,KAAA4iK,wBACA5iK,KAAA0mI,SAAA,SAAAhmI,EAAAV,KAAAyjI,MACAzjI,KAAAijK,kBAGA,EACA,EAEArJ,WAAA,SAAAl5J,GAEAV,KAAAohK,UAAA,EACA,IAAA8B,EAAAC,EAAAC,EAAAC,EAAAzjJ,EAAAnZ,EAAAC,EACA88F,EAAAxjG,KAAAmjB,QAAA3E,EAAAxe,KAwCA,OAtCAA,KAAAu+J,UAIA6E,GADAD,GADAD,EAAAljK,KAAA4gK,+BACAloK,QAAA,YAAAyB,KAAA+oK,EAAA,GAAA/7E,YACAnnF,KAAAwgJ,WAAA0iB,EAAA,aAAA1kJ,EAAA8jJ,SAAAn0J,OACAk1J,EAAAF,EAAA,EAAA3kJ,EAAA8jJ,SAAAt1J,MAEA4S,EAAA,CACA5S,MAAAwR,EAAAg8I,OAAAxtJ,QAAAq2J,EACAl1J,OAAAqQ,EAAAg8I,OAAArsJ,SAAAi1J,GAEA38J,EAAAgZ,WAAAjB,EAAA5S,QAAAhG,IAAA,UACA4Y,EAAAra,SAAAsC,KAAA+X,EAAA29I,iBAAA11J,OAAA,KACAC,EAAA+Y,WAAAjB,EAAA5S,QAAAhG,IAAA,SACA4Y,EAAAra,SAAAuC,IAAA8X,EAAA29I,iBAAAz1J,MAAA,KAEA88F,EAAAl8C,SACAtnD,KAAA4L,QAAAhG,IAAAxM,EAAAuG,OAAAigB,EAAA,CAAAlZ,MAAAD,UAGA+X,EAAAg8I,OAAArsJ,OAAAqQ,EAAAla,KAAA6J,QACAqQ,EAAAg8I,OAAAxtJ,MAAAwR,EAAAla,KAAA0I,OAEAhN,KAAAu+J,UAAA/6D,EAAAl8C,SACAtnD,KAAAihK,yBAIA7nK,EAAA,QAAAwM,IAAA,iBAEA5F,KAAA6mI,aAAA,yBAEA7mI,KAAAwiK,WAAA,OAAA9hK,GAEAV,KAAAu+J,SACAv+J,KAAAw6J,OAAAzhK,UAGA,CAEA,EAEA6pK,sBAAA,WACA5iK,KAAAsjK,aAAA,CACA58J,IAAA1G,KAAAmE,SAAAuC,IACAD,KAAAzG,KAAAmE,SAAAsC,MAEAzG,KAAAujK,SAAA,CACAv2J,MAAAhN,KAAAsE,KAAA0I,MACAmB,OAAAnO,KAAAsE,KAAA6J,OAEA,EAEA80J,cAAA,WACA,IAAAtgE,EAAA,GAoBA,OAlBA3iG,KAAAmE,SAAAuC,MAAA1G,KAAAsjK,aAAA58J,MACAi8F,EAAAj8F,IAAA1G,KAAAmE,SAAAuC,IAAA,MAEA1G,KAAAmE,SAAAsC,OAAAzG,KAAAsjK,aAAA78J,OACAk8F,EAAAl8F,KAAAzG,KAAAmE,SAAAsC,KAAA,MAGAzG,KAAAw6J,OAAA50J,IAAA+8F,GAEA3iG,KAAAsE,KAAA0I,QAAAhN,KAAAujK,SAAAv2J,QACA21F,EAAA31F,MAAAhN,KAAAsE,KAAA0I,MAAA,KACAhN,KAAAw6J,OAAAxtJ,MAAA21F,EAAA31F,QAEAhN,KAAAsE,KAAA6J,SAAAnO,KAAAujK,SAAAp1J,SACAw0F,EAAAx0F,OAAAnO,KAAAsE,KAAA6J,OAAA,KACAnO,KAAAw6J,OAAArsJ,OAAAw0F,EAAAx0F,SAGAw0F,CACA,EAEAkgE,yBAAA,SAAAW,GACA,IAAAC,EAAAC,EAAAC,EAAAC,EAAAlyG,EACA8xC,EAAAxjG,KAAAmjB,QAEAuuC,EAAA,CACAvqB,SAAAnnC,KAAAygK,UAAAj9D,EAAAr8D,UAAAq8D,EAAAr8D,SAAA,EACAo5H,SAAAvgK,KAAAygK,UAAAj9D,EAAA+8D,UAAA/8D,EAAA+8D,SAAAnwF,IACArjE,UAAA/M,KAAAygK,UAAAj9D,EAAAz2F,WAAAy2F,EAAAz2F,UAAA,EACA2vI,UAAA18I,KAAAygK,UAAAj9D,EAAAk5C,WAAAl5C,EAAAk5C,UAAAtsE,MAGApwE,KAAA0gK,cAAA8C,KACAC,EAAA/xG,EAAA3kD,UAAA/M,KAAAmgK,YACAwD,EAAAjyG,EAAAvqB,SAAAnnC,KAAAmgK,YACAuD,EAAAhyG,EAAAgrF,UAAA18I,KAAAmgK,YACAyD,EAAAlyG,EAAA6uG,SAAAvgK,KAAAmgK,YAEAsD,EAAA/xG,EAAAvqB,WACAuqB,EAAAvqB,SAAAs8H,GAEAE,EAAAjyG,EAAA3kD,YACA2kD,EAAA3kD,UAAA42J,GAEAD,EAAAhyG,EAAA6uG,WACA7uG,EAAA6uG,SAAAmD,GAEAE,EAAAlyG,EAAAgrF,YACAhrF,EAAAgrF,UAAAknB,IAGA5jK,KAAA6jK,aAAAnyG,CACA,EAEAsxG,aAAA,SAAA1nK,GACA0E,KAAAq8C,OAAAr8C,KAAAw6J,OAAAn+G,SACAr8C,KAAAygK,UAAAnlK,EAAAmL,QACAzG,KAAAmE,SAAAsC,KAAAnL,EAAAmL,MAEAzG,KAAAygK,UAAAnlK,EAAAoL,OACA1G,KAAAmE,SAAAuC,IAAApL,EAAAoL,KAEA1G,KAAAygK,UAAAnlK,EAAA6S,UACAnO,KAAAsE,KAAA6J,OAAA7S,EAAA6S,QAEAnO,KAAAygK,UAAAnlK,EAAA0R,SACAhN,KAAAsE,KAAA0I,MAAA1R,EAAA0R,MAEA,EAEA81J,aAAA,SAAAxnK,GAEA,IAAAwoK,EAAA9jK,KAAAmE,SACA4/J,EAAA/jK,KAAAsE,KACAouB,EAAA1yB,KAAAk6J,KAiBA,OAfAl6J,KAAAygK,UAAAnlK,EAAA6S,QACA7S,EAAA0R,MAAA1R,EAAA6S,OAAAnO,KAAAmgK,YACAngK,KAAAygK,UAAAnlK,EAAA0R,SACA1R,EAAA6S,OAAA7S,EAAA0R,MAAAhN,KAAAmgK,aAGA,OAAAztI,IACAp3B,EAAAmL,KAAAq9J,EAAAr9J,MAAAs9J,EAAA/2J,MAAA1R,EAAA0R,OACA1R,EAAAoL,IAAA,MAEA,OAAAgsB,IACAp3B,EAAAoL,IAAAo9J,EAAAp9J,KAAAq9J,EAAA51J,OAAA7S,EAAA6S,QACA7S,EAAAmL,KAAAq9J,EAAAr9J,MAAAs9J,EAAA/2J,MAAA1R,EAAA0R,QAGA1R,CACA,EAEAynK,aAAA,SAAAznK,GAEA,IAAAkoG,EAAAxjG,KAAA6jK,aACAnxI,EAAA1yB,KAAAk6J,KACA8J,EAAAhkK,KAAAygK,UAAAnlK,EAAA0R,QAAAw2F,EAAA+8D,UAAA/8D,EAAA+8D,SAAAjlK,EAAA0R,MACAi3J,EAAAjkK,KAAAygK,UAAAnlK,EAAA6S,SAAAq1F,EAAAk5C,WAAAl5C,EAAAk5C,UAAAphJ,EAAA6S,OACA+1J,EAAAlkK,KAAAygK,UAAAnlK,EAAA0R,QAAAw2F,EAAAr8D,UAAAq8D,EAAAr8D,SAAA7rC,EAAA0R,MACAm3J,EAAAnkK,KAAAygK,UAAAnlK,EAAA6S,SAAAq1F,EAAAz2F,WAAAy2F,EAAAz2F,UAAAzR,EAAA6S,OACAi2J,EAAApkK,KAAAm8J,iBAAA11J,KAAAzG,KAAAqiK,aAAAr1J,MACAq3J,EAAArkK,KAAAm8J,iBAAAz1J,IAAA1G,KAAAqiK,aAAAl0J,OACA0iB,EAAA,UAAA12B,KAAAu4B,GAAA4xI,EAAA,UAAAnqK,KAAAu4B,GAkCA,OAjCAwxI,IACA5oK,EAAA0R,MAAAw2F,EAAAr8D,UAEAg9H,IACA7oK,EAAA6S,OAAAq1F,EAAAz2F,WAEAi3J,IACA1oK,EAAA0R,MAAAw2F,EAAA+8D,UAEA0D,IACA3oK,EAAA6S,OAAAq1F,EAAAk5C,WAGAwnB,GAAArzI,IACAv1B,EAAAmL,KAAA29J,EAAA5gE,EAAAr8D,UAEA68H,GAAAnzI,IACAv1B,EAAAmL,KAAA29J,EAAA5gE,EAAA+8D,UAEA4D,GAAAG,IACAhpK,EAAAoL,IAAA29J,EAAA7gE,EAAAz2F,WAEAk3J,GAAAK,IACAhpK,EAAAoL,IAAA29J,EAAA7gE,EAAAk5C,WAIAphJ,EAAA0R,OAAA1R,EAAA6S,QAAA7S,EAAAmL,OAAAnL,EAAAoL,IAEApL,EAAA0R,OAAA1R,EAAA6S,QAAA7S,EAAAoL,MAAApL,EAAAmL,OACAnL,EAAAmL,KAAA,MAFAnL,EAAAoL,IAAA,KAKApL,CACA,EAEAipK,gCAAA,SAAA34J,GAgBA,IAfA,IAAAnT,EAAA,EACA+rK,EAAA,GACA1nE,EAAA,CACAlxF,EAAAhG,IAAA,kBACAgG,EAAAhG,IAAA,oBACAgG,EAAAhG,IAAA,qBACAgG,EAAAhG,IAAA,oBAEA6+J,EAAA,CACA74J,EAAAhG,IAAA,cACAgG,EAAAhG,IAAA,gBACAgG,EAAAhG,IAAA,iBACAgG,EAAAhG,IAAA,gBAGAnN,EAAA,EAAAA,IACA+rK,EAAA/rK,GAAAgnB,WAAAq9E,EAAArkG,KAAA,EACA+rK,EAAA/rK,IAAAgnB,WAAAglJ,EAAAhsK,KAAA,EAGA,OACA0V,OAAAq2J,EAAA,GAAAA,EAAA,GACAx3J,MAAAw3J,EAAA,GAAAA,EAAA,GAEA,EAEApC,oCAAA,SAAAx2J,GACA,IAAA84J,EAAAC,EAAAC,EACAhH,EAAAhyJ,EAAAvT,IAAA,GAEA,sBAAAuT,EAAAhG,IAAA,gBACA5F,KAAAwgJ,WAAAod,KAAA59J,KAAAwgJ,WAAAod,EAAA,QACA,CACAzvJ,OAAAsR,WAAA7T,EAAAhG,IAAA,WACAoH,MAAAyS,WAAA7T,EAAAhG,IAAA,YAKA8+J,EAAAjlJ,WAAAm+I,EAAA3hI,MAAAjvB,OACA23J,EAAAllJ,WAAAm+I,EAAA3hI,MAAA9tB,QAEAy2J,EAAA5kK,KAAAukK,gCAAA34J,GACA84J,EAAAz6D,MAAAy6D,GACA1kK,KAAA6kK,2BAAAj5J,EAAAg5J,EAAA,SACAF,EAKA,CACAv2J,OALAw2J,EAAA16D,MAAA06D,GACA3kK,KAAA6kK,2BAAAj5J,EAAAg5J,EAAA,UACAD,EAIA33J,MAAA03J,GAEA,EAEAG,2BAAA,SAAAj5J,EAAAk5J,EAAAC,GAaA,OAVAhwJ,KAAAoiB,IAAA,EAAApiB,KAAAskD,KACAztD,EAAAvT,IAAA,YAAA0sK,EAAA,GAAAhhG,cAAAghG,EAAArmK,MAAA,IACAomK,EAAAC,GACA,MAKA,CAGA,EAEA9D,sBAAA,WAEA,GAAAjhK,KAAA4gK,8BAAAloK,OAQA,IAJA,IAAAssK,EACAvsK,EAAA,EACAmT,EAAA5L,KAAAw6J,QAAAx6J,KAAA4L,QAEAnT,EAAAuH,KAAA4gK,8BAAAloK,OAAAD,IAEAusK,EAAAhlK,KAAA4gK,8BAAAnoK,GAIAuH,KAAAilK,kBACAjlK,KAAAilK,gBAAAjlK,KAAAukK,gCAAAS,IAGAA,EAAAp/J,IAAA,CACAuI,OAAAvC,EAAAuC,SAAAnO,KAAAilK,gBAAA92J,QAAA,EACAnB,MAAApB,EAAAoB,QAAAhN,KAAAilK,gBAAAj4J,OAAA,GAKA,EAEAm1J,aAAA,WAEA,IAAA7vB,EAAAtyI,KAAA4L,QAAA43F,EAAAxjG,KAAAmjB,QACAnjB,KAAAklK,cAAA5yB,EAAAj2F,SAEAr8C,KAAAu+J,SAEAv+J,KAAAw6J,OAAAx6J,KAAAw6J,QAAAphK,EAAA,eAAAwM,IAAA,CAAAoxC,SAAA,WAEAh3C,KAAA+nI,UAAA/nI,KAAAw6J,OAAAx6J,KAAAu+J,SACAv+J,KAAAw6J,OAAA50J,IAAA,CACAoH,MAAAhN,KAAA4L,QAAAgM,aACAzJ,OAAAnO,KAAA4L,QAAAiM,cACA1T,SAAA,WACAsC,KAAAzG,KAAAklK,cAAAz+J,KAAA,KACAC,IAAA1G,KAAAklK,cAAAx+J,IAAA,KACAnC,SAAAi/F,EAAAj/F,SAGAvE,KAAAw6J,OACA3zJ,SAAA,QACAomI,oBAGAjtI,KAAAw6J,OAAAx6J,KAAA4L,OAGA,EAEAy2I,QAAA,CACA/pI,EAAA,SAAA5X,EAAAgiK,GACA,OAAA11J,MAAAhN,KAAAqiK,aAAAr1J,MAAA01J,EACA,EACAtqJ,EAAA,SAAA1X,EAAAgiK,GACA,IAAAyC,EAAAnlK,KAAAqiK,aACA,OAAA57J,KADAzG,KAAAm8J,iBACA11J,KAAAi8J,EAAA11J,MAAAm4J,EAAAn4J,MAAA01J,EACA,EACAtwG,EAAA,SAAA1xD,EAAAgiK,EAAAC,GACA,IAAAwC,EAAAnlK,KAAAqiK,aACA,OAAA37J,IADA1G,KAAAm8J,iBACAz1J,IAAAi8J,EAAAx0J,OAAAg3J,EAAAh3J,OAAAw0J,EACA,EACA/iJ,EAAA,SAAAlf,EAAAgiK,EAAAC,GACA,OAAAx0J,OAAAnO,KAAAqiK,aAAAl0J,OAAAw0J,EACA,EACAnB,GAAA,SAAA9gK,EAAAgiK,EAAAC,GACA,OAAAvpK,EAAAuG,OAAAK,KAAAqiJ,QAAAziI,EAAA3e,MAAAjB,KAAAkB,WACAlB,KAAAqiJ,QAAA/pI,EAAArX,MAAAjB,KAAA,CAAAU,EAAAgiK,EAAAC,IACA,EACAlB,GAAA,SAAA/gK,EAAAgiK,EAAAC,GACA,OAAAvpK,EAAAuG,OAAAK,KAAAqiJ,QAAAziI,EAAA3e,MAAAjB,KAAAkB,WACAlB,KAAAqiJ,QAAAjqI,EAAAnX,MAAAjB,KAAA,CAAAU,EAAAgiK,EAAAC,IACA,EACAjB,GAAA,SAAAhhK,EAAAgiK,EAAAC,GACA,OAAAvpK,EAAAuG,OAAAK,KAAAqiJ,QAAAjwF,EAAAnxD,MAAAjB,KAAAkB,WACAlB,KAAAqiJ,QAAA/pI,EAAArX,MAAAjB,KAAA,CAAAU,EAAAgiK,EAAAC,IACA,EACAhB,GAAA,SAAAjhK,EAAAgiK,EAAAC,GACA,OAAAvpK,EAAAuG,OAAAK,KAAAqiJ,QAAAjwF,EAAAnxD,MAAAjB,KAAAkB,WACAlB,KAAAqiJ,QAAAjqI,EAAAnX,MAAAjB,KAAA,CAAAU,EAAAgiK,EAAAC,IACA,GAGAH,WAAA,SAAApwG,EAAA1xD,GACAtH,EAAAqqI,GAAAo2B,OAAA70I,KAAAhlB,KAAAoyD,EAAA,CAAA1xD,EAAAV,KAAAyjI,OACA,WAAArxE,GACApyD,KAAA0mI,SAAAt0E,EAAA1xD,EAAAV,KAAAyjI,KAEA,EAEAq2B,QAAA,GAEAr2B,GAAA,WACA,OACAk9B,gBAAA3gK,KAAA2gK,gBACA/0J,QAAA5L,KAAA4L,QACA4uJ,OAAAx6J,KAAAw6J,OACAr2J,SAAAnE,KAAAmE,SACAG,KAAAtE,KAAAsE,KACA+9J,aAAAriK,KAAAqiK,aACAlG,iBAAAn8J,KAAAm8J,iBAEA,IAQA/iK,EAAAqqI,GAAAo2B,OAAAz0G,IAAA,uBAEA1gC,KAAA,SAAAhkB,GACA,IAAA8d,EAAAplB,EAAA4G,MAAA6gK,UAAA,YACAr9D,EAAAhlF,EAAA2E,QACA+/I,EAAA1kJ,EAAAoiJ,8BACAuC,EAAAD,EAAAxqK,QAAA,YAAAyB,KAAA+oK,EAAA,GAAA/7E,UACAi8E,EAAAD,GAAA3kJ,EAAAgiI,WAAA0iB,EAAA,aAAA1kJ,EAAA8jJ,SAAAn0J,OACAk1J,EAAAF,EAAA,EAAA3kJ,EAAA8jJ,SAAAt1J,MACAivB,EAAA,CACAjvB,MAAAwR,EAAAla,KAAA0I,MAAAq2J,EACAl1J,OAAAqQ,EAAAla,KAAA6J,OAAAi1J,GAEA38J,EAAAgZ,WAAAjB,EAAA5S,QAAAhG,IAAA,UACA4Y,EAAAra,SAAAsC,KAAA+X,EAAA29I,iBAAA11J,OAAA,KACAC,EAAA+Y,WAAAjB,EAAA5S,QAAAhG,IAAA,SACA4Y,EAAAra,SAAAuC,IAAA8X,EAAA29I,iBAAAz1J,MAAA,KAEA8X,EAAA5S,QAAA07C,QACAluD,EAAAuG,OAAAs8B,EAAAv1B,GAAAD,EAAA,CAAAC,MAAAD,QAAA,KACA8gD,SAAAi8C,EAAAy8D,gBACAj3B,OAAAxlC,EAAA08D,cACAvtG,KAAA,WAEA,IAAAr3D,EAAA,CACA0R,MAAAyS,WAAAjB,EAAA5S,QAAAhG,IAAA,UACAuI,OAAAsR,WAAAjB,EAAA5S,QAAAhG,IAAA,WACAc,IAAA+Y,WAAAjB,EAAA5S,QAAAhG,IAAA,QACAa,KAAAgZ,WAAAjB,EAAA5S,QAAAhG,IAAA,UAGAs9J,KAAAxqK,QACAU,EAAA8pK,EAAA,IAAAt9J,IAAA,CAAAoH,MAAA1R,EAAA0R,MAAAmB,OAAA7S,EAAA6S,SAIAqQ,EAAAwkJ,aAAA1nK,GACAkjB,EAAAgkJ,WAAA,SAAA9hK,EAEA,GAGA,IAIAtH,EAAAqqI,GAAAo2B,OAAAz0G,IAAA,2BAEAlkC,MAAA,WACA,IAAAtV,EAAAimD,EAAAksG,EAAAuG,EAAAzzI,EAAA7jB,EAAAmB,EACAqQ,EAAAplB,EAAA4G,MAAA6gK,UAAA,YACAr9D,EAAAhlF,EAAA2E,QACAmvH,EAAA9zH,EAAA5S,QACAw5J,EAAA5hE,EAAA42D,YACAwD,EAAAwH,aAAAhsK,EACAgsK,EAAA/sK,IAAA,GACA,SAAA8B,KAAAirK,GAAA9yB,EAAAzsI,SAAAxN,IAAA,GAAA+sK,EAEAxH,IAIAp/I,EAAA6mJ,iBAAAjsK,EAAAwkK,GAEA,WAAAzjK,KAAAirK,QAAAltK,UACAsmB,EAAA8mJ,gBAAA,CACA7+J,KAAA,EACAC,IAAA,GAEA8X,EAAA+mJ,kBAAA,CACA9+J,KAAA,EACAC,IAAA,GAGA8X,EAAAgnJ,WAAA,CACA55J,QAAAxS,EAAAlB,UACAuO,KAAA,EACAC,IAAA,EACAsG,MAAA5T,EAAAlB,UAAA8U,QACAmB,OAAA/U,EAAAlB,UAAAiW,UAAAjW,SAAAi4B,KAAAgB,WAAAwS,gBAGA/3B,EAAAxS,EAAAwkK,GACA/rG,EAAA,GACAz4D,EAAA,iCAAAgJ,MAAA,SAAA3J,EAAAH,GACAu5D,EAAAp5D,GAAA+lB,EAAAgiJ,KAAA50J,EAAAhG,IAAA,UAAAtN,GACA,IAEAkmB,EAAA8mJ,gBAAA15J,EAAAywC,SACA79B,EAAA+mJ,kBAAA35J,EAAAzH,WACAqa,EAAAinJ,cAAA,CACAt3J,OAAAvC,EAAAgN,cAAAi5C,EAAA,GACA7kD,MAAApB,EAAA8M,aAAAm5C,EAAA,IAGAksG,EAAAv/I,EAAA8mJ,gBACAhB,EAAA9lJ,EAAAinJ,cAAAt3J,OACA0iB,EAAArS,EAAAinJ,cAAAz4J,MACAA,EAAAwR,EAAAgiI,WAAAod,EAAA,QAAAA,EAAA/5H,YAAAhT,EACA1iB,EAAAqQ,EAAAgiI,WAAAod,KAAAj6H,aAAA2gI,EAEA9lJ,EAAAgnJ,WAAA,CACA55J,QAAAgyJ,EACAn3J,KAAAs3J,EAAAt3J,KACAC,IAAAq3J,EAAAr3J,IACAsG,QACAmB,WAGA,EAEA/F,OAAA,SAAA1H,GACA,IAAAglK,EAAAC,EAAAC,EAAAC,EACArnJ,EAAAplB,EAAA4G,MAAA6gK,UAAA,YACAr9D,EAAAhlF,EAAA2E,QACA46I,EAAAv/I,EAAA8mJ,gBACAQ,EAAAtnJ,EAAAra,SACA4hK,EAAAvnJ,EAAAkiJ,cAAAhgK,EAAA6iJ,SACAyiB,EAAA,CACAt/J,IAAA,EACAD,KAAA,GAEAm3J,EAAAp/I,EAAA6mJ,iBACAY,GAAA,EAEArI,EAAA,KAAA1lK,UAAA,SAAAiC,KAAAyjK,EAAAh4J,IAAA,eACAogK,EAAAjI,GAGA+H,EAAAr/J,MAAA+X,EAAA+/I,QAAAR,EAAAt3J,KAAA,KACA+X,EAAAla,KAAA0I,MAAAwR,EAAAla,KAAA0I,OACAwR,EAAA+/I,QACA//I,EAAAra,SAAAsC,KAAAs3J,EAAAt3J,KACA+X,EAAAra,SAAAsC,KAAAu/J,EAAAv/J,MAEAs/J,IACAvnJ,EAAAla,KAAA6J,OAAAqQ,EAAAla,KAAA0I,MAAAwR,EAAA2hJ,YACA8F,GAAA,GAEAznJ,EAAAra,SAAAsC,KAAA+8F,EAAAg3D,OAAAuD,EAAAt3J,KAAA,GAGAq/J,EAAAp/J,KAAA8X,EAAA+/I,QAAAR,EAAAr3J,IAAA,KACA8X,EAAAla,KAAA6J,OAAAqQ,EAAAla,KAAA6J,QACAqQ,EAAA+/I,QACA//I,EAAAra,SAAAuC,IAAAq3J,EAAAr3J,IACA8X,EAAAra,SAAAuC,KAEAq/J,IACAvnJ,EAAAla,KAAA0I,MAAAwR,EAAAla,KAAA6J,OAAAqQ,EAAA2hJ,YACA8F,GAAA,GAEAznJ,EAAAra,SAAAuC,IAAA8X,EAAA+/I,QAAAR,EAAAr3J,IAAA,GAGAk/J,EAAApnJ,EAAA6mJ,iBAAAhtK,IAAA,KAAAmmB,EAAA5S,QAAA/F,SAAAxN,IAAA,GACAwtK,EAAA,oBAAA1rK,KAAAqkB,EAAA6mJ,iBAAAz/J,IAAA,aAEAggK,GAAAC,GACArnJ,EAAA69B,OAAA51C,KAAA+X,EAAAgnJ,WAAA/+J,KAAA+X,EAAAra,SAAAsC,KACA+X,EAAA69B,OAAA31C,IAAA8X,EAAAgnJ,WAAA9+J,IAAA8X,EAAAra,SAAAuC,MAEA8X,EAAA69B,OAAA51C,KAAA+X,EAAA5S,QAAAywC,SAAA51C,KACA+X,EAAA69B,OAAA31C,IAAA8X,EAAA5S,QAAAywC,SAAA31C,KAGAg/J,EAAA3wJ,KAAAD,IAAA0J,EAAA8jJ,SAAAt1J,OACAwR,EAAA+/I,QACA//I,EAAA69B,OAAA51C,KAAAu/J,EAAAv/J,KACA+X,EAAA69B,OAAA51C,KAAAs3J,EAAAt3J,OAEAk/J,EAAA5wJ,KAAAD,IAAA0J,EAAA8jJ,SAAAn0J,QACAqQ,EAAA+/I,QACA//I,EAAA69B,OAAA31C,IAAAs/J,EAAAt/J,IACA8X,EAAA69B,OAAA31C,IAAAq3J,EAAAr3J,MAEAg/J,EAAAlnJ,EAAAla,KAAA0I,OAAAwR,EAAAgnJ,WAAAx4J,QACAwR,EAAAla,KAAA0I,MAAAwR,EAAAgnJ,WAAAx4J,MAAA04J,EACAK,IACAvnJ,EAAAla,KAAA6J,OAAAqQ,EAAAla,KAAA0I,MAAAwR,EAAA2hJ,YACA8F,GAAA,IAIAN,EAAAnnJ,EAAAla,KAAA6J,QAAAqQ,EAAAgnJ,WAAAr3J,SACAqQ,EAAAla,KAAA6J,OAAAqQ,EAAAgnJ,WAAAr3J,OAAAw3J,EACAI,IACAvnJ,EAAAla,KAAA0I,MAAAwR,EAAAla,KAAA6J,OAAAqQ,EAAA2hJ,YACA8F,GAAA,IAIAA,IACAznJ,EAAAra,SAAAsC,KAAA+X,EAAA8kJ,aAAA78J,KACA+X,EAAAra,SAAAuC,IAAA8X,EAAA8kJ,aAAA58J,IACA8X,EAAAla,KAAA0I,MAAAwR,EAAA+kJ,SAAAv2J,MACAwR,EAAAla,KAAA6J,OAAAqQ,EAAA+kJ,SAAAp1J,OAEA,EAEAuW,KAAA,WACA,IAAAlG,EAAAplB,EAAA4G,MAAA6gK,UAAA,YACAr9D,EAAAhlF,EAAA2E,QACA46I,EAAAv/I,EAAA8mJ,gBACAU,EAAAxnJ,EAAA+mJ,kBACA3H,EAAAp/I,EAAA6mJ,iBACA7K,EAAAphK,EAAAolB,EAAAg8I,QACA0L,EAAA1L,EAAAn+G,SACAjkC,EAAAoiJ,EAAA5iJ,aAAA4G,EAAA8jJ,SAAAt1J,MACAinD,EAAAumG,EAAA3iJ,cAAA2G,EAAA8jJ,SAAAn0J,OAEAqQ,EAAA+/I,UAAA/6D,EAAAl8C,SAAA,WAAAntD,KAAAyjK,EAAAh4J,IAAA,cACAxM,EAAA4G,MAAA4F,IAAA,CACAa,KAAAy/J,EAAAz/J,KAAAu/J,EAAAv/J,KAAAs3J,EAAAt3J,KACAuG,MAAAoL,EACAjK,OAAA8lD,IAIAz1C,EAAA+/I,UAAA/6D,EAAAl8C,SAAA,SAAAntD,KAAAyjK,EAAAh4J,IAAA,cACAxM,EAAA4G,MAAA4F,IAAA,CACAa,KAAAy/J,EAAAz/J,KAAAu/J,EAAAv/J,KAAAs3J,EAAAt3J,KACAuG,MAAAoL,EACAjK,OAAA8lD,GAGA,IAGA76D,EAAAqqI,GAAAo2B,OAAAz0G,IAAA,0BAEAlkC,MAAA,WACA,IAAA1C,EAAAplB,EAAA4G,MAAA6gK,UAAA,YACAr9D,EAAAhlF,EAAA2E,QAEA/pB,EAAAoqG,EAAAw8D,YAAA59J,MAAA,WACA,IAAAkwI,EAAAl5I,EAAA4G,MACAmmK,EAAA3nJ,EAAA4jJ,oCAAA9vB,GAEAA,EAAAh3I,KAAA,2BACA0R,MAAAm5J,EAAAn5J,MAAAmB,OAAAg4J,EAAAh4J,OACA1H,KAAAgZ,WAAA6yH,EAAA1sI,IAAA,SAAAc,IAAA+Y,WAAA6yH,EAAA1sI,IAAA,SAEA,GACA,EAEAwC,OAAA,SAAA1H,EAAA+iI,GACA,IAAAjlH,EAAAplB,EAAA4G,MAAA6gK,UAAA,YACAr9D,EAAAhlF,EAAA2E,QACAijJ,EAAA5nJ,EAAA6jJ,aACA5uG,EAAAj1C,EAAA29I,iBACAx2G,EAAA,CACAx3C,OAAAqQ,EAAAla,KAAA6J,OAAAi4J,EAAAj4J,QAAA,EACAnB,MAAAwR,EAAAla,KAAA0I,MAAAo5J,EAAAp5J,OAAA,EACAtG,IAAA8X,EAAAra,SAAAuC,IAAA+sD,EAAA/sD,KAAA,EACAD,KAAA+X,EAAAra,SAAAsC,KAAAgtD,EAAAhtD,MAAA,GAGArN,EAAAoqG,EAAAw8D,YAAA59J,MAAA,WACA,IAAAkwI,EAAAl5I,EAAA4G,MAAAkhB,EAAA9nB,EAAA4G,MAAA1E,KAAA,2BAAA2gC,EAAA,GACAr2B,EAAA0sI,EAAA+H,QAAA5W,EAAAk9B,gBAAA,IAAAjoK,OACA,mBACA,gCAEAU,EAAAgJ,KAAAwD,GAAA,SAAAnN,EAAAie,GACA,IAAAiwG,GAAAzlG,EAAAxK,IAAA,IAAAivC,EAAAjvC,IAAA,GACAiwG,MAAA,IACA1qF,EAAAvlB,GAAAiwG,GAAA,KAEA,IAEA2rB,EAAA1sI,IAAAq2B,EACA,GACA,EAEAvX,KAAA,WACAtrB,EAAA4G,MAAA8mI,WAAA,0BACA,IAGA1tI,EAAAqqI,GAAAo2B,OAAAz0G,IAAA,qBAEAlkC,MAAA,WAEA,IAAA1C,EAAAplB,EAAA4G,MAAA6gK,UAAA,YAAAsE,EAAA3mJ,EAAAla,KAEAka,EAAA6hJ,MAAA7hJ,EAAAmiJ,gBAAAl7G,QACAjnC,EAAA6hJ,MAAAz6J,IAAA,CACAw3B,QAAA,IACAvwB,QAAA,QACA1I,SAAA,WACAgK,OAAAg3J,EAAAh3J,OACAnB,MAAAm4J,EAAAn4J,MACAC,OAAA,EACAxG,KAAA,EACAC,IAAA,IAGA8X,EAAAupH,UAAAvpH,EAAA6hJ,MAAA,uBAIA,IAAAjnK,EAAA85I,cAAA,iBAAA10H,EAAA2E,QAAAk9I,OAGA7hJ,EAAA6hJ,MAAA16J,SAAA3F,KAAAmjB,QAAAk9I,OAGA7hJ,EAAA6hJ,MAAAx5J,SAAA2X,EAAAg8I,OAEA,EAEApyJ,OAAA,WACA,IAAAoW,EAAAplB,EAAA4G,MAAA6gK,UAAA,YACAriJ,EAAA6hJ,OACA7hJ,EAAA6hJ,MAAAz6J,IAAA,CACAzB,SAAA,WACAgK,OAAAqQ,EAAAla,KAAA6J,OACAnB,MAAAwR,EAAAla,KAAA0I,OAGA,EAEA0X,KAAA,WACA,IAAAlG,EAAAplB,EAAA4G,MAAA6gK,UAAA,YACAriJ,EAAA6hJ,OAAA7hJ,EAAAg8I,QACAh8I,EAAAg8I,OAAAniK,IAAA,GAAAg4B,YAAA7R,EAAA6hJ,MAAAhoK,IAAA,GAEA,IAIAe,EAAAqqI,GAAAo2B,OAAAz0G,IAAA,oBAEAh9C,OAAA,WACA,IAAA68J,EACAzmJ,EAAAplB,EAAA4G,MAAA6gK,UAAA,YACAr9D,EAAAhlF,EAAA2E,QACAgiJ,EAAA3mJ,EAAAla,KACA8hK,EAAA5nJ,EAAA6jJ,aACA5uG,EAAAj1C,EAAA29I,iBACAzpI,EAAAlU,EAAA07I,KACAI,EAAA,iBAAA92D,EAAA82D,KAAA,CAAA92D,EAAA82D,KAAA92D,EAAA82D,MAAA92D,EAAA82D,KACA+L,EAAA/L,EAAA,MACAgM,EAAAhM,EAAA,MACA3oE,EAAA58E,KAAA81C,OAAAs6G,EAAAn4J,MAAAo5J,EAAAp5J,OAAAq5J,KACAz0E,EAAA78E,KAAA81C,OAAAs6G,EAAAh3J,OAAAi4J,EAAAj4J,QAAAm4J,KACAC,EAAAH,EAAAp5J,MAAA2kF,EACA60E,EAAAJ,EAAAj4J,OAAAyjF,EACA60E,EAAAjjE,EAAA+8D,UAAA/8D,EAAA+8D,SAAAgG,EACAG,EAAAljE,EAAAk5C,WAAAl5C,EAAAk5C,UAAA8pB,EACAG,EAAAnjE,EAAAr8D,UAAAq8D,EAAAr8D,SAAAo/H,EACAK,EAAApjE,EAAAz2F,WAAAy2F,EAAAz2F,UAAAy5J,EAEAhjE,EAAA82D,OAEAqM,IACAJ,GAAAF,GAEAO,IACAJ,GAAAF,GAEAG,IACAF,GAAAF,GAEAK,IACAF,GAAAF,GAGA,aAAAnsK,KAAAu4B,IACAlU,EAAAla,KAAA0I,MAAAu5J,EACA/nJ,EAAAla,KAAA6J,OAAAq4J,GACA,SAAArsK,KAAAu4B,IACAlU,EAAAla,KAAA0I,MAAAu5J,EACA/nJ,EAAAla,KAAA6J,OAAAq4J,EACAhoJ,EAAAra,SAAAuC,IAAA+sD,EAAA/sD,IAAAkrF,GACA,SAAAz3F,KAAAu4B,IACAlU,EAAAla,KAAA0I,MAAAu5J,EACA/nJ,EAAAla,KAAA6J,OAAAq4J,EACAhoJ,EAAAra,SAAAsC,KAAAgtD,EAAAhtD,KAAAkrF,KAEA60E,EAAAF,GAAA,GAAAC,EAAAF,GAAA,KACApB,EAAAzmJ,EAAA+lJ,gCAAAvkK,OAGAwmK,EAAAF,EAAA,GACA9nJ,EAAAla,KAAA6J,OAAAq4J,EACAhoJ,EAAAra,SAAAuC,IAAA+sD,EAAA/sD,IAAAkrF,IAEA40E,EAAAF,EAAArB,EAAA92J,OACAqQ,EAAAla,KAAA6J,OAAAq4J,EACAhoJ,EAAAra,SAAAuC,IAAA+sD,EAAA/sD,IAAA0/J,EAAAj4J,OAAAq4J,GAEAD,EAAAF,EAAA,GACA7nJ,EAAAla,KAAA0I,MAAAu5J,EACA/nJ,EAAAra,SAAAsC,KAAAgtD,EAAAhtD,KAAAkrF,IAEA40E,EAAAF,EAAApB,EAAAj4J,MACAwR,EAAAla,KAAA0I,MAAAu5J,EACA/nJ,EAAAra,SAAAsC,KAAAgtD,EAAAhtD,KAAA2/J,EAAAp5J,MAAAu5J,GAGA,IAIAntK,EAAAqqI,GAAAo9B;;;;;;;;GAsBAznK,EAAA6qI,OAAA,aACArnH,QAAA,SACAuG,QAAA,CACAtc,SAAA,OACAggK,UAAA,EACAC,QAAA,GACAjhC,QAAA,CACA,4BACA,sCAEAkhC,eAAA,EACAte,UAAA,QACAwV,WAAA,EACAz0J,KAAA,KACA2E,OAAA,OACAuuI,UAAA,KACA6jB,SAAA,KACAxzJ,UAAA,IACAo6B,SAAA,IACA6/H,OAAA,EACA7iK,SAAA,CACAwnI,GAAA,SACAV,GAAA,SACAT,GAAA3wI,OACAmxI,UAAA,MAGAK,MAAA,SAAA5/E,GACA,IAAAw7G,EAAA7tK,EAAA4G,MAAA4F,IAAA6lD,GAAApP,SAAA31C,IACAugK,EAAA,GACA7tK,EAAA4G,MAAA4F,IAAA,MAAA6lD,EAAA/kD,IAAAugK,EAEA,GAEApG,WAAA,EACA/3J,KAAA,KACAqnC,MAAA,KACA+2H,0BAAA,EACAl6J,MAAA,IAGAm6J,YAAA,KACAp4I,MAAA,KACAo6B,KAAA,KACAyzG,UAAA,KACAQ,SAAA,KACAzjH,MAAA,KACAy8B,KAAA,KACAhuE,OAAA,KACAg/J,YAAA,KACAC,WAAA,MAGAC,mBAAA,CACAR,SAAA,EACA34J,QAAA,EACAuuI,WAAA,EACA6jB,UAAA,EACAxzJ,WAAA,EACAo6B,UAAA,EACAn6B,OAAA,GAGAu6J,wBAAA,CACA7qB,WAAA,EACA6jB,UAAA,EACAxzJ,WAAA,EACAo6B,UAAA,GAGAq/F,QAAA,WACAxmI,KAAAwnK,YAAA,CACA36J,QAAA7M,KAAA4L,QAAA,GAAAqwB,MAAApvB,QACAG,MAAAhN,KAAA4L,QAAA,GAAAqwB,MAAAjvB,MACAD,UAAA/M,KAAA4L,QAAA,GAAAqwB,MAAAlvB,UACA2vI,UAAA18I,KAAA4L,QAAA,GAAAqwB,MAAAygH,UACAvuI,OAAAnO,KAAA4L,QAAA,GAAAqwB,MAAA9tB,QAEAnO,KAAAm8J,iBAAA,CACAt2J,OAAA7F,KAAA4L,QAAA/F,SACArE,MAAAxB,KAAA4L,QAAA/F,SAAA68B,WAAAlhC,MAAAxB,KAAA4L,UAEA5L,KAAAynK,cAAAznK,KAAA4L,QAAAq8B,KAAA,SACA,MAAAjoC,KAAAmjB,QAAAgtB,OAAA,MAAAnwC,KAAAynK,gBACAznK,KAAAmjB,QAAAgtB,MAAAnwC,KAAAynK,eAIAznK,KAAAmjB,QAAA2iH,WACA9lI,KAAAmjB,QAAA2iH,UAAA,GAGA9lI,KAAA0nK,iBAEA1nK,KAAA4L,QACA9C,OACAy+B,WAAA,SACA1gC,SAAA7G,KAAA2nK,UAEA3nK,KAAA+nI,UAAA,yCAEA/nI,KAAA4nK,kBACA5nK,KAAA6nK,oBAEA7nK,KAAAmjB,QAAA86I,WAAA7kK,EAAAgmB,GAAA6+I,WACAj+J,KAAA8nK,iBAEA9nK,KAAAmjB,QAAA09I,WAAAznK,EAAAgmB,GAAAyhJ,WACA7gK,KAAA+nK,iBAGA/nK,KAAAgoK,SAAA,EAEAhoK,KAAAioK,aACA,EAEAtiC,MAAA,WACA3lI,KAAAmjB,QAAA0jJ,UACA7mK,KAAAo2E,MAEA,EAEAmsE,UAAA,WACA,IAAA32I,EAAA5L,KAAAmjB,QAAAtc,SACA,OAAA+E,MAAAwpB,QAAAxpB,EAAA4lC,UACAp4C,EAAAwS,GAEA5L,KAAA9H,SAAAoJ,KAAAsK,GAAA,QAAAmvC,GAAA,EACA,EAEA6rF,SAAA,WACA,IAAAh0E,EACAupG,EAAAn8J,KAAAm8J,iBAEAn8J,KAAAkoK,mBACAloK,KAAAmoK,kBAEAnoK,KAAA4L,QACAgvI,iBACAh1I,IAAA5F,KAAAwnK,aAGA9kC,SAEA1iI,KAAA2nK,SAAA5uK,SAEAiH,KAAAynK,eACAznK,KAAA4L,QAAAq8B,KAAA,QAAAjoC,KAAAynK,gBAGA70G,EAAAupG,EAAAt2J,OAAA68B,WAAAqY,GAAAohH,EAAA36J,QAGA9I,QAAAk6D,EAAA,KAAA5yD,KAAA4L,QAAA,GACAgnD,EAAA4H,OAAAx6D,KAAA4L,SAEAuwJ,EAAAt2J,OAAAgmC,OAAA7rC,KAAA4L,QAEA,EAEAq4H,OAAA,WACA,OAAAjkI,KAAA2nK,QACA,EAEA/lE,QAAAxoG,EAAA+O,KACAw5F,OAAAvoG,EAAA+O,KAEA4mB,MAAA,SAAAruB,GACA,IAAA8d,EAAAxe,KAEAA,KAAAgoK,UAAA,IAAAhoK,KAAA0mI,SAAA,cAAAhmI,KAIAV,KAAAgoK,SAAA,EACAhoK,KAAAooK,gBAAA,KACApoK,KAAAmoK,kBACAnoK,KAAAkoK,mBAEAloK,KAAAqoK,OAAAluJ,OAAA,cAAAjP,QAAA,SAAAxS,QAKAU,EAAA4G,KAAA9H,SAAA,GAAA+yD,eAAA//C,QAAA,QAGAlL,KAAAsoK,MAAAtoK,KAAA2nK,SAAA3nK,KAAAmjB,QAAA3Z,MAAA,WACAgV,EAAAkoH,SAAA,QAAAhmI,EACA,IACA,EAEA6nK,OAAA,WACA,OAAAvoK,KAAAgoK,OACA,EAEAQ,UAAA,WACAxoK,KAAAyoK,YACA,EAEAA,WAAA,SAAA/nK,EAAAgoK,GACA,IAAAC,GAAA,EACAC,EAAA5oK,KAAA2nK,SAAArtB,SAAA,qBAAApzI,KAAA,WACA,OAAA9N,EAAA4G,MAAA4F,IAAA,UACA,IAAAvN,MACAwwK,EAAA9zJ,KAAAoiB,IAAAl2B,MAAA,KAAA2nK,GAUA,OARAC,IAAA7oK,KAAA2nK,SAAA/hK,IAAA,aACA5F,KAAA2nK,SAAA/hK,IAAA,UAAAijK,EAAA,GACAF,GAAA,GAGAA,IAAAD,GACA1oK,KAAA0mI,SAAA,QAAAhmI,GAEAioK,CACA,EAEAvyF,KAAA,WACA,IAAA53D,EAAAxe,KACAA,KAAAgoK,QACAhoK,KAAAyoK,cACAzoK,KAAA8oK,kBAKA9oK,KAAAgoK,SAAA,EACAhoK,KAAAqoK,OAAAjvK,EAAA4G,KAAA9H,SAAA,GAAA+yD,eAEAjrD,KAAA+oK,QACA/oK,KAAAupI,YACAvpI,KAAAgpK,iBACAhpK,KAAAyoK,WAAA,SAKAzoK,KAAAipK,SACAjpK,KAAAipK,QAAArjK,IAAA,UAAA5F,KAAA2nK,SAAA/hK,IAAA,cAGA5F,KAAAkpK,MAAAlpK,KAAA2nK,SAAA3nK,KAAAmjB,QAAAra,MAAA,WACA0V,EAAAsqJ,iBACAtqJ,EAAAkoH,SAAA,QACA,IAKA1mI,KAAAmpK,mBAEAnpK,KAAA0mI,SAAA,QACA,EAEAoiC,eAAA,WASA,IAAAM,EAAAppK,KAAAooK,gBACAgB,IACAA,EAAAppK,KAAA4L,QAAAtK,KAAA,gBAEA8nK,EAAA1wK,SACA0wK,EAAAppK,KAAA4L,QAAAtK,KAAA,cAEA8nK,EAAA1wK,SACA0wK,EAAAppK,KAAAqpK,mBAAA/nK,KAAA,cAEA8nK,EAAA1wK,SACA0wK,EAAAppK,KAAAspK,sBAAAnvJ,OAAA,cAEAivJ,EAAA1wK,SACA0wK,EAAAppK,KAAA2nK,UAEAyB,EAAAruH,GAAA,GAAA7vC,QAAA,QACA,EAEAq+J,sBAAA,WACA,IAAAt+G,EAAAjrD,KAAA9H,SAAA,GAAA+yD,cACAjrD,KAAA2nK,SAAA,KAAA18G,GACA7xD,EAAA2I,SAAA/B,KAAA2nK,SAAA,GAAA18G,IAEAjrD,KAAA8oK,gBAEA,EAEAU,WAAA,SAAA9oK,GACAA,EAAA6jC,iBACAvkC,KAAAupK,uBACA,EAEA7B,eAAA,WACA1nK,KAAA2nK,SAAAvuK,EAAA,SACAoQ,OACAy+B,KAAA,CAGAuP,UAAA,EACAtX,KAAA,SACA,aAAAlgC,KAAAmjB,QAAA6jJ,MAAA,cAEAngK,SAAA7G,KAAAuiJ,aAEAviJ,KAAA+nI,UAAA/nI,KAAA2nK,SAAA,oDACA3nK,KAAAqmI,IAAArmI,KAAA2nK,SAAA,CACA7qB,QAAA,SAAAp8I,GACA,GAAAV,KAAAmjB,QAAA4jJ,gBAAArmK,EAAAkoI,sBAAAloI,EAAA4lD,SACA5lD,EAAA4lD,UAAAltD,EAAAqqI,GAAAn9E,QAAAkzF,OAGA,OAFA94I,EAAA6jC,sBACAvkC,KAAA+uB,MAAAruB,GAKA,GAAAA,EAAA4lD,UAAAltD,EAAAqqI,GAAAn9E,QAAA0zF,MAAAt5I,EAAAkoI,qBAAA,CAGA,IAAA6gC,EAAAzpK,KAAA2nK,SAAArmK,KAAA,aACAiZ,EAAAkvJ,EAAAlvJ,QACAD,EAAAmvJ,EAAAnvJ,OAEA5Z,EAAA2jC,SAAA/pB,EAAA,IAAA5Z,EAAA2jC,SAAArkC,KAAA2nK,SAAA,IACAjnK,EAAA6iJ,SAKA7iJ,EAAA2jC,SAAA9pB,EAAA,IACA7Z,EAAA2jC,SAAArkC,KAAA2nK,SAAA,KAAAjnK,EAAA6iJ,WACAvjJ,KAAAooI,QAAA,WACA9tH,EAAApP,QAAA,QACA,IACAxK,EAAA6jC,mBATAvkC,KAAAooI,QAAA,WACA7tH,EAAArP,QAAA,QACA,IACAxK,EAAA6jC,iBAVA,CAkBA,EACAi+G,UAAA,SAAA9hJ,GACAV,KAAAyoK,WAAA/nK,IACAV,KAAA8oK,gBAEA,IAMA9oK,KAAA4L,QAAAtK,KAAA,sBAAA5I,QACAsH,KAAA2nK,SAAA1/H,KAAA,CACA,mBAAAjoC,KAAA4L,QAAA8tC,WAAAzR,KAAA,OAGA,EAEA2/H,gBAAA,WACA,IAAA8B,EAEA1pK,KAAA2pK,iBAAAvwK,EAAA,SACA4G,KAAA+nI,UAAA/nI,KAAA2pK,iBACA,4DACA3pK,KAAAqmI,IAAArmI,KAAA2pK,iBAAA,CACAnnB,UAAA,SAAA9hJ,GAKAtH,EAAAsH,EAAA2jC,QAAAyrC,QAAA,8BAGA9vE,KAAA2nK,SAAAz8J,QAAA,QAEA,IAGAlL,KAAAspK,sBAAAlwK,EAAA,mCACAurJ,OAAA,CACA3xF,MAAA55D,EAAA,OAAAyhC,KAAA76B,KAAAmjB,QAAAslI,WAAA5jH,OACAo9D,KAAA,qBACA2kD,WAAA,IAEA//I,SAAA7G,KAAA2pK,kBAEA3pK,KAAA+nI,UAAA/nI,KAAAspK,sBAAA,4BACAtpK,KAAAqmI,IAAArmI,KAAAspK,sBAAA,CACAn/G,MAAA,SAAAzpD,GACAA,EAAA6jC,iBACAvkC,KAAA+uB,MAAAruB,EACA,IAGA,IAAAkpK,EAAAzkE,OAAA0U,UAAA75G,KAAAmjB,QAAA+jJ,4BACAlnK,KAAAmjB,QAAA+jJ,0BAAA,GACAlnK,KAAAmjB,QAAA+jJ,2BAAA,EACA,IAAAlnK,KAAAmjB,QAAA+jJ,0BAAA,OAEAwC,EAAAtwK,EAAA,IAAAwwK,EAAA,KACAlwH,WAAAkiG,UAAA57I,KAAA2pK,kBACA3pK,KAAA+nI,UAAA2hC,EAAA,mBACA1pK,KAAA6pK,OAAAH,GAEA1pK,KAAA2pK,iBAAA/tB,UAAA57I,KAAA2nK,UAEA3nK,KAAA2nK,SAAA1/H,KAAA,CACA,kBAAAyhI,EAAAzhI,KAAA,OAEA,EAEA4hI,OAAA,SAAA15H,GACAnwC,KAAAmjB,QAAAgtB,MACAA,EAAAtV,KAAA76B,KAAAmjB,QAAAgtB,OAEAA,EAAAtL,KAAA,SAEA,EAEAgjI,kBAAA,WACA7nK,KAAAqpK,mBAAAjwK,EAAA,SACA4G,KAAA+nI,UAAA/nI,KAAAqpK,mBAAA,uBACA,wCAEArpK,KAAA8pK,YAAA1wK,EAAA,SACAyN,SAAA7G,KAAAqpK,oBACArpK,KAAA+nI,UAAA/nI,KAAA8pK,YAAA,uBAEA9pK,KAAA+pK,gBACA,EAEAA,eAAA,WACA,IAAAvrJ,EAAAxe,KACA8mK,EAAA9mK,KAAAmjB,QAAA2jJ,QAGA9mK,KAAAqpK,mBAAAtwK,SACAiH,KAAA8pK,YAAArvH,QAEArhD,EAAAu8B,cAAAmxI,IAAA70J,MAAAiS,QAAA4iJ,OAAApuK,OACAsH,KAAA6mI,aAAA7mI,KAAA2nK,SAAA,sBAIAvuK,EAAAgJ,KAAA0kK,GAAA,SAAAxuK,EAAAqqG,GACA,IAAAx4C,EAAA6/G,EACArnE,EAAA,mBAAAA,EACA,CAAAx4C,MAAAw4C,EAAA9nE,KAAAviC,GACAqqG,EAGAA,EAAAvpG,EAAAuG,OAAA,CAAA+F,KAAA,UAAAi9F,GAGAx4C,EAAAw4C,EAAAx4C,MACA6/G,EAAA,CACA/nE,KAAAU,EAAAV,KACA0kD,aAAAhkD,EAAAgkD,aACAC,UAAAjkD,EAAAikD,UAGA5L,MAAAr4C,EAAAq4C,MACAngH,KAAA8nE,EAAA9nE,aAGA8nE,EAAAx4C,aACAw4C,EAAAV,YACAU,EAAAgkD,oBACAhkD,EAAAikD,iBAGAjkD,EAAAq4C,MACA,kBAAAr4C,EAAA9nE,aACA8nE,EAAA9nE,KAGAzhC,EAAA,oBAAAupG,GACAgiD,OAAAqlB,GACAnjK,SAAA2X,EAAAsrJ,aACApuK,GAAA,oBACAyuD,EAAAlpD,MAAAud,EAAA5S,QAAA,GAAA1K,UACA,GACA,IACAlB,KAAA+nI,UAAA/nI,KAAA2nK,SAAA,qBACA3nK,KAAAqpK,mBAAAxiK,SAAA7G,KAAA2nK,UACA,EAEAG,eAAA,WACA,IAAAtpJ,EAAAxe,KACAmjB,EAAAnjB,KAAAmjB,QAEA,SAAA8mJ,EAAAxmC,GACA,OACAt/H,SAAAs/H,EAAAt/H,SACAk4C,OAAAonF,EAAApnF,OAEA,CAEAr8C,KAAA2nK,SAAA1J,UAAA,CACA3tI,OAAA,gDACAiqI,OAAA,sBACAH,YAAA,WACAl5I,MAAA,SAAAxgB,EAAA+iI,GACAjlH,EAAAupH,UAAA3uI,EAAA4G,MAAA,sBACAwe,EAAAg9I,eACAh9I,EAAAkoH,SAAA,YAAAhmI,EAAAupK,EAAAxmC,GACA,EACAt6E,KAAA,SAAAzoD,EAAA+iI,GACAjlH,EAAAkoH,SAAA,OAAAhmI,EAAAupK,EAAAxmC,GACA,EACA/+G,KAAA,SAAAhkB,EAAA+iI,GACA,IAAAh9H,EAAAg9H,EAAApnF,OAAA51C,KAAA+X,EAAAtmB,SAAAkuC,aACA1/B,EAAA+8H,EAAApnF,OAAA31C,IAAA8X,EAAAtmB,SAAA4V,YAEAqV,EAAAhf,SAAA,CACAwnI,GAAA,WACAV,GAAA,QAAAxkI,GAAA,UAAAA,EAAA,QACAC,GAAA,UAAAA,EACA8jI,GAAAhsH,EAAA3kB,QAEA2kB,EAAAqoH,aAAAztI,EAAA4G,MAAA,sBACAwe,EAAAk9I,iBACAl9I,EAAAkoH,SAAA,WAAAhmI,EAAAupK,EAAAxmC,GACA,GAEA,EAEAskC,eAAA,WACA,IAAAvpJ,EAAAxe,KACAmjB,EAAAnjB,KAAAmjB,QACAm9I,EAAAn9I,EAAA09I,UAIA18J,EAAAnE,KAAA2nK,SAAA/hK,IAAA,YACAskK,EAAA,iBAAA5J,EACAA,EACA,sBAEA,SAAA2J,EAAAxmC,GACA,OACA04B,iBAAA14B,EAAA04B,iBACAkG,aAAA5+B,EAAA4+B,aACAl+J,SAAAs/H,EAAAt/H,SACAG,KAAAm/H,EAAAn/H,KAEA,CAEAtE,KAAA2nK,SAAA9G,UAAA,CACAvwI,OAAA,qBACA8pI,YAAA,WACA4F,WAAAhgK,KAAA4L,QACA20J,SAAAp9I,EAAAo9I,SACA7jB,UAAAv5H,EAAAu5H,UACAv1G,SAAAhkB,EAAAgkB,SACAp6B,UAAA/M,KAAAmqK,aACA7J,QAAA4J,EACAhpJ,MAAA,SAAAxgB,EAAA+iI,GACAjlH,EAAAupH,UAAA3uI,EAAA4G,MAAA,sBACAwe,EAAAg9I,eACAh9I,EAAAkoH,SAAA,cAAAhmI,EAAAupK,EAAAxmC,GACA,EACAr7H,OAAA,SAAA1H,EAAA+iI,GACAjlH,EAAAkoH,SAAA,SAAAhmI,EAAAupK,EAAAxmC,GACA,EACA/+G,KAAA,SAAAhkB,EAAA+iI,GACA,IAAApnF,EAAA79B,EAAAmpJ,SAAAtrH,SACA51C,EAAA41C,EAAA51C,KAAA+X,EAAAtmB,SAAAkuC,aACA1/B,EAAA21C,EAAA31C,IAAA8X,EAAAtmB,SAAA4V,YAEAqV,EAAAhV,OAAAqQ,EAAAmpJ,SAAAx5J,SACAgV,EAAAnW,MAAAwR,EAAAmpJ,SAAA36J,QACAmW,EAAAhf,SAAA,CACAwnI,GAAA,WACAV,GAAA,QAAAxkI,GAAA,UAAAA,EAAA,QACAC,GAAA,UAAAA,EACA8jI,GAAAhsH,EAAA3kB,QAEA2kB,EAAAqoH,aAAAztI,EAAA4G,MAAA,sBACAwe,EAAAk9I,iBACAl9I,EAAAkoH,SAAA,aAAAhmI,EAAAupK,EAAAxmC,GACA,IAEA79H,IAAA,WAAAzB,EACA,EAEA8jK,YAAA,WACAjoK,KAAAqmI,IAAArmI,KAAAikI,SAAA,CACAyE,QAAA,SAAAhoI,GACAV,KAAAmpK,mBACAnpK,KAAAooK,gBAAAhvK,EAAAsH,EAAA2jC,OACA,GAEA,EAEA8kI,iBAAA,WACAnpK,KAAAkoK,mBACAloK,KAAAoqK,qBAAAvuH,QAAA77C,KACA,EAEAkoK,iBAAA,WACA,IAAAjpE,EAAAj/F,KAAAoqK,qBACAC,EAAAjxK,EAAA0uB,QAAA9nB,KAAAi/F,IACA,IAAAorE,GACAprE,EAAAx9F,OAAA4oK,EAAA,EAEA,EAEAD,mBAAA,WACA,IAAAnrE,EAAAj/F,KAAA9H,SAAAoD,KAAA,uBAKA,OAJA2jG,IACAA,EAAA,GACAj/F,KAAA9H,SAAAoD,KAAA,sBAAA2jG,IAEAA,CACA,EAEAkrE,WAAA,WACA,IAAAhnJ,EAAAnjB,KAAAmjB,QAEA,eAAAA,EAAAhV,OACAgV,EAAApW,UACAgI,KAAAsd,IAAAlP,EAAApW,UAAAoW,EAAAhV,OACA,EAEAo7H,UAAA,WAGA,IAAA9gI,EAAAzI,KAAA2nK,SAAArjI,GAAA,YACA77B,GACAzI,KAAA2nK,SAAA7+J,OAEA9I,KAAA2nK,SAAAxjK,SAAAnE,KAAAmjB,QAAAhf,UACAsE,GACAzI,KAAA2nK,SAAAn+J,MAEA,EAEAw9H,YAAA,SAAA7jH,GACA,IAAA3E,EAAAxe,KACAoI,GAAA,EACAkiK,EAAA,GAEAlxK,EAAAgJ,KAAA+gB,GAAA,SAAAvS,EAAApE,GACAgS,EAAAyoH,WAAAr2H,EAAApE,GAEAoE,KAAA4N,EAAA8oJ,qBACAl/J,GAAA,GAEAwI,KAAA4N,EAAA+oJ,0BACA+C,EAAA15J,GAAApE,EAEA,IAEApE,IACApI,KAAA+oK,QACA/oK,KAAAupI,aAEAvpI,KAAA2nK,SAAArjI,GAAA,wBACAtkC,KAAA2nK,SAAA9G,UAAA,SAAAyJ,EAEA,EAEArjC,WAAA,SAAAr2H,EAAApE,GACA,IAAA+9J,EAAAC,EACA7C,EAAA3nK,KAAA2nK,SAEA,aAAA/2J,IAIA5Q,KAAA2/E,OAAA/uE,EAAApE,GAEA,aAAAoE,GACA5Q,KAAA2nK,SAAA9gK,SAAA7G,KAAAuiJ,aAGA,YAAA3xI,GACA5Q,KAAA+pK,iBAGA,cAAAn5J,GACA5Q,KAAAspK,sBAAA3kB,OAAA,CAGA3xF,MAAA55D,EAAA,OAAAyhC,KAAA,GAAA76B,KAAAmjB,QAAAslI,WAAA5jH,SAIA,cAAAj0B,KACA25J,EAAA5C,EAAArjI,GAAA,0BACA93B,GACAm7J,EAAA1J,UAAA,YAGAsM,GAAA/9J,GACAxM,KAAA8nK,kBAIA,aAAAl3J,GACA5Q,KAAAupI,YAGA,cAAA34H,KAGA45J,EAAA7C,EAAArjI,GAAA,0BACA93B,GACAm7J,EAAA9G,UAAA,WAIA2J,GAAA,iBAAAh+J,GACAm7J,EAAA9G,UAAA,mBAAAr0J,GAIAg+J,IAAA,IAAAh+J,GACAxM,KAAA+nK,kBAIA,UAAAn3J,GACA5Q,KAAA6pK,OAAA7pK,KAAA2pK,iBAAAroK,KAAA,qBAGA,UAAAsP,GACA+2J,EAAA1/H,KAAA,aAAAz7B,EAAA,aAEA,EAEAu8J,MAAA,WAIA,IAAA0B,EAAAC,EAAAC,EACAxnJ,EAAAnjB,KAAAmjB,QAGAnjB,KAAA4L,QAAA9C,OAAAlD,IAAA,CACAoH,MAAA,OACAD,UAAA,EACA2vI,UAAA,OACAvuI,OAAA,IAGAgV,EAAAgkB,SAAAhkB,EAAAnW,QACAmW,EAAAnW,MAAAmW,EAAAgkB,UAKAsjI,EAAAzqK,KAAA2nK,SAAA/hK,IAAA,CACAuI,OAAA,OACAnB,MAAAmW,EAAAnW,QAEA6K,cACA6yJ,EAAA31J,KAAAoiB,IAAA,EAAAhU,EAAApW,UAAA09J,GACAE,EAAA,iBAAAxnJ,EAAAu5H,UACA3nI,KAAAoiB,IAAA,EAAAhU,EAAAu5H,UAAA+tB,GACA,OAEA,SAAAtnJ,EAAAhV,OACAnO,KAAA4L,QAAAhG,IAAA,CACAmH,UAAA29J,EACAhuB,UAAAiuB,EACAx8J,OAAA,SAGAnO,KAAA4L,QAAAuC,OAAA4G,KAAAoiB,IAAA,EAAAhU,EAAAhV,OAAAs8J,IAGAzqK,KAAA2nK,SAAArjI,GAAA,wBACAtkC,KAAA2nK,SAAA9G,UAAA,qBAAA7gK,KAAAmqK,aAEA,EAEA3O,aAAA,WACAx7J,KAAAy7J,aAAAz7J,KAAA9H,SAAAoJ,KAAA,UAAA4F,KAAA,WACA,IAAAi6E,EAAA/nF,EAAA4G,MAEA,OAAA5G,EAAA,SACAwM,IAAA,CACAzB,SAAA,WACA6I,MAAAm0E,EAAAvpE,aACAzJ,OAAAgzE,EAAAtpE,gBAEAhR,SAAAs6E,EAAAt7E,UACAw2C,OAAA8kC,EAAA9kC,UAAA,EACA,GACA,EAEAq/G,eAAA,WACA17J,KAAAy7J,eACAz7J,KAAAy7J,aAAA1iK,gBACAiH,KAAAy7J,aAEA,EAEAmP,kBAAA,SAAAlqK,GACA,QAAAtH,EAAAsH,EAAA2jC,QAAAyrC,QAAA,cAAAp3E,UAMAU,EAAAsH,EAAA2jC,QAAAyrC,QAAA,kBAAAp3E,MACA,EAEAswK,eAAA,WACA,GAAAhpK,KAAAmjB,QAAA6jJ,MAAA,CAMA,IAAA6D,GAAA,EACA7qK,KAAAooI,QAAA,WACAyiC,GAAA,CACA,IAEA7qK,KAAA9H,SAAAoD,KAAA,uBAKA0E,KAAA9H,SAAAwD,GAAA,6BAAAgF,GACA,IAAAmqK,EAAA,CAIA,IAAAtrK,EAAAS,KAAAoqK,qBAAA,GACA7qK,EAAAqrK,kBAAAlqK,KACAA,EAAA6jC,iBACAhlC,EAAAupK,iBALA,CAOA,EAAAvmK,KAAAvC,OAGAA,KAAAipK,QAAA7vK,EAAA,SACAyN,SAAA7G,KAAAuiJ,aAEAviJ,KAAA+nI,UAAA/nI,KAAAipK,QAAA,mCACAjpK,KAAAqmI,IAAArmI,KAAAipK,QAAA,CACAzmB,UAAA,eAEAxiJ,KAAA9H,SAAAoD,KAAA,sBACA0E,KAAA9H,SAAAoD,KAAA,4BAnCA,CAoCA,EAEA6sK,gBAAA,WACA,GAAAnoK,KAAAmjB,QAAA6jJ,OAIAhnK,KAAAipK,QAAA,CACA,IAAA6B,EAAA9qK,KAAA9H,SAAAoD,KAAA,wBAEAwvK,EAIA9qK,KAAA9H,SAAAoD,KAAA,qBAAAwvK,IAHA9qK,KAAA9H,SAAAsS,IAAA,qBACAxK,KAAA9H,SAAA4uI,WAAA,uBAKA9mI,KAAAipK,QAAAlwK,SACAiH,KAAAipK,QAAA,IACA,CACA,KAKA,IAAA7vK,EAAA85I,cAGA95I,EAAA6qI,OAAA,YAAA7qI,EAAAqqI,GAAAsnC,OAAA,CACA5nJ,QAAA,CACA6nJ,YAAA,IAEAtD,eAAA,WACA1nK,KAAA2/E,SACA3/E,KAAA2nK,SAAAhiK,SAAA3F,KAAAmjB,QAAA6nJ,YACA,EACA/jC,WAAA,SAAAr2H,EAAApE,GACA,gBAAAoE,GACA5Q,KAAA2nK,SACA/+J,YAAA5I,KAAAmjB,QAAA6nJ,aACArlK,SAAA6G,GAEAxM,KAAA4kI,YAAA1jI,UACA,IAIA9H,EAAAqqI,GAAAsnC;;;;;;;;GAmBA3xK,EAAA6qI,OAAA,gBACArnH,QAAA,SACAooH,kBAAA,OACA7hH,QAAA,CACA8nJ,OAAA,IACAhR,YAAA,EACAiR,QAAA,EACA/3I,MAAA,UACAg4I,UAAA,YAGAjwB,SAAA,KACAkwB,WAAA,KACAxpK,KAAA,KACAypK,IAAA,KACArgE,KAAA,MAEAw7B,QAAA,WAEA,IAAA8kC,EACA9nE,EAAAxjG,KAAAmjB,QACA8nJ,EAAAznE,EAAAynE,OAEAjrK,KAAAurK,QAAA,EACAvrK,KAAAwrK,OAAA,EAEAxrK,KAAAirK,OAAA,mBAAAA,IAAA,SAAA5yJ,GACA,OAAAA,EAAAisB,GAAA2mI,EACA,EAEAjrK,KAAAsrK,YAAA,WACA,IAAApqK,UAAAxI,OAOA,OAAA4yK,IAEAA,EAAA,CACAt+J,MAAAhN,KAAA4L,QAAA,GAAAg4B,YACAz1B,OAAAnO,KAAA4L,QAAA,GAAA83B,eARA4nI,EAAApqK,UAAA,EAWA,EAEAlB,KAAAyrK,cAAAjoE,EAAArwE,OAEAqwE,EAAAy2D,YACAj6J,KAAA+nI,UAAA,eAGA,EAEA0jC,cAAA,SAAAt4I,GAGA/5B,EAAAqqI,GAAAo4B,UAAA6P,WAAAv4I,GAAA/5B,EAAAqqI,GAAAo4B,UAAA6P,WAAAv4I,IAAA,GACA/5B,EAAAqqI,GAAAo4B,UAAA6P,WAAAv4I,GAAAtyB,KAAAb,KACA,EAEA2rK,QAAA,SAAA/pK,GAEA,IADA,IAAAnJ,EAAA,EACAA,EAAAmJ,EAAAlJ,OAAAD,IACAmJ,EAAAnJ,KAAAuH,MACA4B,EAAAH,OAAAhJ,EAAA,EAGA,EAEAmuI,SAAA,WACA,IAAAhlI,EAAAxI,EAAAqqI,GAAAo4B,UAAA6P,WAAA1rK,KAAAmjB,QAAAgQ,OAEAnzB,KAAA2rK,QAAA/pK,EACA,EAEAqlI,WAAA,SAAAr2H,EAAApE,GAEA,cAAAoE,EACA5Q,KAAAirK,OAAA,mBAAAz+J,IAAA,SAAA6L,GACA,OAAAA,EAAAisB,GAAA93B,EACA,OACA,aAAAoE,EAAA,CACA,IAAAhP,EAAAxI,EAAAqqI,GAAAo4B,UAAA6P,WAAA1rK,KAAAmjB,QAAAgQ,OAEAnzB,KAAA2rK,QAAA/pK,GACA5B,KAAAyrK,cAAAj/J,EACA,CAEAxM,KAAA2/E,OAAA/uE,EAAApE,EACA,EAEAwvI,UAAA,SAAAt7I,GACA,IAAAu9J,EAAA7kK,EAAAqqI,GAAAo4B,UAAAt6J,QAEAvB,KAAA4rK,kBACA3N,GACAj+J,KAAA0mI,SAAA,WAAAhmI,EAAAV,KAAAyjI,GAAAw6B,GAEA,EAEA4N,YAAA,SAAAnrK,GACA,IAAAu9J,EAAA7kK,EAAAqqI,GAAAo4B,UAAAt6J,QAEAvB,KAAA8rK,qBACA7N,GACAj+J,KAAA0mI,SAAA,aAAAhmI,EAAAV,KAAAyjI,GAAAw6B,GAEA,EAEA8N,MAAA,SAAArrK,GAEA,IAAAu9J,EAAA7kK,EAAAqqI,GAAAo4B,UAAAt6J,QAGA08J,MAAAW,aACAX,EAAAryJ,SAAA,KAAA5L,KAAA4L,QAAA,IAIA5L,KAAAirK,OAAAjmJ,KAAAhlB,KAAA4L,QAAA,GAAAqyJ,EAAAW,aACAX,EAAAryJ,WACA5L,KAAAgsK,iBACAhsK,KAAA0mI,SAAA,OAAAhmI,EAAAV,KAAAyjI,GAAAw6B,IAGA,EAEAgO,KAAA,SAAAvrK,GAEA,IAAAu9J,EAAA7kK,EAAAqqI,GAAAo4B,UAAAt6J,QAGA08J,MAAAW,aACAX,EAAAryJ,SAAA,KAAA5L,KAAA4L,QAAA,IAIA5L,KAAAirK,OAAAjmJ,KAAAhlB,KAAA4L,QAAA,GAAAqyJ,EAAAW,aACAX,EAAAryJ,WACA5L,KAAAksK,oBACAlsK,KAAA0mI,SAAA,MAAAhmI,EAAAV,KAAAyjI,GAAAw6B,IAGA,EAEAkO,MAAA,SAAAzrK,EAAA0rK,GAEA,IAAAnO,EAAAmO,GAAAhzK,EAAAqqI,GAAAo4B,UAAAt6J,QACA8qK,GAAA,EAGA,SAAApO,MAAAW,aACAX,EAAAryJ,SAAA,KAAA5L,KAAA4L,QAAA,MAIA5L,KAAA4L,QACAtK,KAAA,uBACAsmI,IAAA,0BACAxlI,MAAA,WACA,IAAA+zH,EAAA/8H,EAAA4G,MAAAssK,UAAA,YACA,GACAn2C,EAAAhzG,QAAA+nJ,SACA/0C,EAAAhzG,QAAA2iH,UACA3P,EAAAhzG,QAAAgQ,QAAA8qI,EAAA96I,QAAAgQ,OACAgjG,EAAA80C,OAAAjmJ,KACAmxG,EAAAvqH,QAAA,GAAAqyJ,EAAAW,aAAAX,EAAAryJ,UAEAxS,EAAAqqI,GAAA8oC,UACAtO,EACA7kK,EAAAuG,OAAAw2H,EAAA,CAAA95E,OAAA85E,EAAAvqH,QAAAywC,WACA85E,EAAAhzG,QAAAgoJ,UAAAzqK,GAIA,OADA2rK,GAAA,GACA,CAEA,KACAA,MAIArsK,KAAAirK,OAAAjmJ,KAAAhlB,KAAA4L,QAAA,GACAqyJ,EAAAW,aAAAX,EAAAryJ,WACA5L,KAAA8rK,qBACA9rK,KAAAksK,oBAEAlsK,KAAA0mI,SAAA,OAAAhmI,EAAAV,KAAAyjI,GAAAw6B,IACAj+J,KAAA4L,UAKA,EAEA63H,GAAA,SAAA9qI,GACA,OACAslK,UAAAtlK,EAAAimK,aAAAjmK,EAAAiT,QACA4uJ,OAAA7hK,EAAA6hK,OACAr2J,SAAAxL,EAAAwL,SACAk4C,OAAA1jD,EAAAsjK,YAEA,EAIA+P,eAAA,WACAhsK,KAAA+nI,UAAA,qBACA,EAEAmkC,kBAAA,WACAlsK,KAAA6mI,aAAA,qBACA,EAEA+kC,gBAAA,WACA5rK,KAAA+nI,UAAA,sBACA,EAEA+jC,mBAAA,WACA9rK,KAAA6mI,aAAA,sBACA,IAGAztI,EAAAqqI,GAAA8oC,UAAA,WACA,SAAAC,EAAApoK,EAAAqoK,EAAAnoK,GACA,OAAAF,GAAAqoK,GAAAroK,EAAAqoK,EAAAnoK,CACA,CAEA,gBAAA25J,EAAAqO,EAAAI,EAAAhsK,GAEA,IAAA4rK,EAAAjwH,OACA,SAGA,IAAA++C,GAAA6iE,EAAAhC,aACAgC,EAAA95J,SAAAwoK,UAAAlmK,KAAAw3J,EAAApB,QAAAp2J,KACA60F,GAAA2iE,EAAAhC,aACAgC,EAAA95J,SAAAwoK,UAAAjmK,IAAAu3J,EAAApB,QAAAn2J,IACAg5J,EAAAtkE,EAAA6iE,EAAAV,kBAAAvwJ,MACA2yJ,EAAArkE,EAAA2iE,EAAAV,kBAAApvJ,OACA4lD,EAAAu4G,EAAAjwH,OAAA51C,KACA0rD,EAAAm6G,EAAAjwH,OAAA31C,IACAgjC,EAAAqqB,EAAAu4G,EAAAhB,cAAAt+J,MACA0kD,EAAAS,EAAAm6G,EAAAhB,cAAAn9J,OAEA,OAAAu+J,GACA,UACA,OAAA34G,GAAAqnC,GAAAskE,GAAAh2H,GAAAyoB,GAAAmpC,GAAAqkE,GAAAjuG,EACA,gBACA,OAAAqC,EAAAqnC,EAAA6iE,EAAAV,kBAAAvwJ,MAAA,GACA0yJ,EAAAzB,EAAAV,kBAAAvwJ,MAAA,EAAA08B,GACAyoB,EAAAmpC,EAAA2iE,EAAAV,kBAAApvJ,OAAA,GACAwxJ,EAAA1B,EAAAV,kBAAApvJ,OAAA,EAAAujD,EACA,cACA,OAAA86G,EAAA9rK,EAAA8K,MAAA2mD,EAAAm6G,EAAAhB,cAAAn9J,SACAq+J,EAAA9rK,EAAA6K,MAAAwoD,EAAAu4G,EAAAhB,cAAAt+J,OACA,YACA,OACAsuF,GAAAnpC,GAAAmpC,GAAA5pC,GACAiuG,GAAAxtG,GAAAwtG,GAAAjuG,GACA4pC,EAAAnpC,GAAAwtG,EAAAjuG,KAEA0pC,GAAArnC,GAAAqnC,GAAA1xD,GACAg2H,GAAA3rG,GAAA2rG,GAAAh2H,GACA0xD,EAAArnC,GAAA2rG,EAAAh2H,GAEA,QACA,SAEA,CACA,CA/CA,GAoDAtwC,EAAAqqI,GAAAo4B,UAAA,CACAt6J,QAAA,KACAmqK,WAAA,CAAAkB,QAAA,IACAjQ,eAAA,SAAAxqG,EAAAzxD,GAEA,IAAAjI,EAAA07B,EACApL,EAAA3vB,EAAAqqI,GAAAo4B,UAAA6P,WAAAv5G,EAAAhvC,QAAAgQ,QAAA,GACAztB,EAAAhF,IAAAgF,KAAA,KACA8uI,GAAAriF,EAAAysG,aAAAzsG,EAAAvmD,SAAAtK,KAAA,uBAAAqhC,UAEAkqI,EAAA,IAAAp0K,EAAA,EAAAA,EAAAswB,EAAArwB,OAAAD,IAGA,KAAAswB,EAAAtwB,GAAA0qB,QAAA2iH,UAAA3zE,IAAAppC,EAAAtwB,GAAAwyK,OAAAjmJ,KAAA+D,EAAAtwB,GAAAmT,QAAA,GACAumD,EAAAysG,aAAAzsG,EAAAvmD,UADA,CAMA,IAAAuoB,EAAA,EAAAA,EAAAqgH,EAAA97I,OAAAy7B,IACA,GAAAqgH,EAAArgH,KAAApL,EAAAtwB,GAAAmT,QAAA,IACAmd,EAAAtwB,GAAA6yK,cAAAn9J,OAAA,EACA,SAAA0+J,CACA,CAGA9jJ,EAAAtwB,GAAAq0K,QAAA,SAAA/jJ,EAAAtwB,GAAAmT,QAAAhG,IAAA,WACAmjB,EAAAtwB,GAAAq0K,UAKA,cAAApnK,GACAqjB,EAAAtwB,GAAAujJ,UAAAh3H,KAAA+D,EAAAtwB,GAAAiI,GAGAqoB,EAAAtwB,GAAA4jD,OAAAtzB,EAAAtwB,GAAAmT,QAAAywC,SACAtzB,EAAAtwB,GAAA6yK,YAAA,CACAt+J,MAAA+b,EAAAtwB,GAAAmT,QAAA,GAAAg4B,YACAz1B,OAAA4a,EAAAtwB,GAAAmT,QAAA,GAAA83B,eAvBA,CA4BA,EACA9hC,KAAA,SAAAq8J,EAAAv9J,GAEA,IAAAy8J,GAAA,EAqBA,OAlBA/jK,EAAAgJ,MAAAhJ,EAAAqqI,GAAAo4B,UAAA6P,WAAAzN,EAAA96I,QAAAgQ,QAAA,IAAAz0B,SAAA,WAEAsB,KAAAmjB,WAGAnjB,KAAAmjB,QAAA2iH,UAAA9lI,KAAA8sK,SACA1zK,EAAAqqI,GAAA8oC,UAAAtO,EAAAj+J,UAAAmjB,QAAAgoJ,UAAAzqK,KACAy8J,EAAAn9J,KAAAmsK,MAAAnnJ,KAAAhlB,KAAAU,IAAAy8J,IAGAn9J,KAAAmjB,QAAA2iH,UAAA9lI,KAAA8sK,SAAA9sK,KAAAirK,OAAAjmJ,KAAAhlB,KAAA4L,QAAA,GACAqyJ,EAAAW,aAAAX,EAAAryJ,WACA5L,KAAAwrK,OAAA,EACAxrK,KAAAurK,QAAA,EACAvrK,KAAA6rK,YAAA7mJ,KAAAhlB,KAAAU,IAGA,IACAy8J,CAEA,EACAP,UAAA,SAAAqB,EAAAv9J,GAIAu9J,EAAAryJ,QAAAmhK,aAAA,QAAArxK,GAAA,+BACAuiK,EAAA96I,QAAAu3I,kBACAthK,EAAAqqI,GAAAo4B,UAAAc,eAAAsB,EAAAv9J,EAEA,GACA,EACAyoD,KAAA,SAAA80G,EAAAv9J,GAIAu9J,EAAA96I,QAAAu3I,kBACAthK,EAAAqqI,GAAAo4B,UAAAc,eAAAsB,EAAAv9J,GAIAtH,EAAAgJ,KAAAhJ,EAAAqqI,GAAAo4B,UAAA6P,WAAAzN,EAAA96I,QAAAgQ,QAAA,eAEA,IAAAnzB,KAAAmjB,QAAA2iH,WAAA9lI,KAAAgtK,aAAAhtK,KAAA8sK,QAAA,CAIA,IAAAG,EAAA95I,EAAAttB,EACAqnK,EAAA9zK,EAAAqqI,GAAA8oC,UAAAtO,EAAAj+J,UAAAmjB,QAAAgoJ,UAAAzqK,GACA/H,GAAAu0K,GAAAltK,KAAAurK,OACA,QACA2B,IAAAltK,KAAAurK,OAAA,cACA5yK,IAIAqH,KAAAmjB,QAAA+nJ,SAGA/3I,EAAAnzB,KAAAmjB,QAAAgQ,OACAttB,EAAA7F,KAAA4L,QAAAyuI,QAAA,uBAAAlgI,QAAA,WACA,OAAA/gB,EAAA4G,MAAAssK,UAAA,YAAAnpJ,QAAAgQ,SACA,KAEAz6B,UACAu0K,EAAA7zK,EAAAyM,EAAA,IAAAymK,UAAA,aACAU,YAAA,WAAAr0K,IAKAs0K,GAAA,WAAAt0K,IACAs0K,EAAA1B,QAAA,EACA0B,EAAAzB,OAAA,EACAyB,EAAAhB,KAAAjnJ,KAAAioJ,EAAAvsK,IAGAV,KAAArH,IAAA,EACAqH,KAAA,UAAArH,EAAA,qBACAqH,KAAA,WAAArH,EAAA,gBAAAqsB,KAAAhlB,KAAAU,GAGAusK,GAAA,UAAAt0K,IACAs0K,EAAAzB,OAAA,EACAyB,EAAA1B,QAAA,EACA0B,EAAAlB,MAAA/mJ,KAAAioJ,EAAAvsK,IAxCA,CA0CA,GAEA,EACA08J,SAAA,SAAAa,EAAAv9J,GACAu9J,EAAAryJ,QAAAmhK,aAAA,QAAAviK,IAAA,oBAIAyzJ,EAAA96I,QAAAu3I,kBACAthK,EAAAqqI,GAAAo4B,UAAAc,eAAAsB,EAAAv9J,EAEA,IAKA,IAAAtH,EAAA85I,cAGA95I,EAAA6qI,OAAA,eAAA7qI,EAAAqqI,GAAA6oC,UAAA,CACAnpJ,QAAA,CACAgqJ,YAAA,EACAC,aAAA,GAEAxB,gBAAA,WACA5rK,KAAA2/E,SACA3/E,KAAAmjB,QAAAiqJ,aACAptK,KAAA4L,QAAAjG,SAAA3F,KAAAmjB,QAAAiqJ,YAEA,EACAtB,mBAAA,WACA9rK,KAAA2/E,SACA3/E,KAAAmjB,QAAAiqJ,aACAptK,KAAA4L,QAAAhD,YAAA5I,KAAAmjB,QAAAiqJ,YAEA,EACApB,eAAA,WACAhsK,KAAA2/E,SACA3/E,KAAAmjB,QAAAgqJ,YACAntK,KAAA4L,QAAAjG,SAAA3F,KAAAmjB,QAAAgqJ,WAEA,EACAjB,kBAAA,WACAlsK,KAAA2/E,SACA3/E,KAAAmjB,QAAAgqJ,YACAntK,KAAA4L,QAAAhD,YAAA5I,KAAAmjB,QAAAgqJ,WAEA,IAIA/zK,EAAAqqI,GAAA6oC,UAwBAlzK,EAAA6qI,OAAA,kBACArnH,QAAA,SACAuG,QAAA,CACA0iH,QAAA,CACA,iCACA,wCACA,6CAEA1uG,IAAA,IACA3qB,MAAA,EAEA40I,OAAA,KACAv/F,SAAA,MAGAxvB,IAAA,EAEAm0G,QAAA,WAGAxmI,KAAAqtK,SAAArtK,KAAAmjB,QAAA3W,MAAAxM,KAAAstK,oBAEAttK,KAAA4L,QAAAq8B,KAAA,CAIA/H,KAAA,cACA,gBAAAlgC,KAAAqyB,MAEAryB,KAAA+nI,UAAA,gDAEA/nI,KAAAutK,SAAAn0K,EAAA,SAAAyN,SAAA7G,KAAA4L,SACA5L,KAAA+nI,UAAA/nI,KAAAutK,SAAA,2CACAvtK,KAAAwtK,eACA,EAEA5mC,SAAA,WACA5mI,KAAA4L,QAAA27B,WAAA,kDAEAvnC,KAAAutK,SAAAx0K,QACA,EAEAyT,MAAA,SAAAihK,GACA,QAAArnK,IAAAqnK,EACA,OAAAztK,KAAAmjB,QAAA3W,MAGAxM,KAAAmjB,QAAA3W,MAAAxM,KAAAstK,kBAAAG,GACAztK,KAAAwtK,eACA,EAEAF,kBAAA,SAAAG,GAYA,YAXArnK,IAAAqnK,IACAA,EAAAztK,KAAAmjB,QAAA3W,OAGAxM,KAAA0tK,eAAA,IAAAD,EAGA,iBAAAA,IACAA,EAAA,IAGAztK,KAAA0tK,eACA34J,KAAAsd,IAAAryB,KAAAmjB,QAAAgU,IAAApiB,KAAAoiB,IAAAn3B,KAAAqyB,IAAAo7I,GACA,EAEAzmC,YAAA,SAAA7jH,GAGA,IAAA3W,EAAA2W,EAAA3W,aACA2W,EAAA3W,MAEAxM,KAAA2/E,OAAAx8D,GAEAnjB,KAAAmjB,QAAA3W,MAAAxM,KAAAstK,kBAAA9gK,GACAxM,KAAAwtK,eACA,EAEAvmC,WAAA,SAAAr2H,EAAApE,GACA,QAAAoE,IAGApE,EAAAuI,KAAAoiB,IAAAn3B,KAAAqyB,IAAA7lB,IAEAxM,KAAA2/E,OAAA/uE,EAAApE,EACA,EAEAi6H,mBAAA,SAAAj6H,GACAxM,KAAA2/E,OAAAnzE,GAEAxM,KAAA4L,QAAAq8B,KAAA,gBAAAz7B,GACAxM,KAAAsnI,aAAA,2BAAA96H,EACA,EAEAmhK,YAAA,WACA,OAAA3tK,KAAA0tK,cACA,IACA,KAAA1tK,KAAAmjB,QAAA3W,MAAAxM,KAAAqyB,MAAAryB,KAAAmjB,QAAAgU,IAAAn3B,KAAAqyB,IACA,EAEAm7I,cAAA,WACA,IAAAhhK,EAAAxM,KAAAmjB,QAAA3W,MACAohK,EAAA5tK,KAAA2tK,cAEA3tK,KAAAutK,SACA1jK,OAAA7J,KAAA0tK,eAAAlhK,EAAAxM,KAAAqyB,KACArlB,MAAA4gK,EAAAt4J,QAAA,QAEAtV,KACAsnI,aAAAtnI,KAAAutK,SAAA,+BACA/gK,IAAAxM,KAAAmjB,QAAAgU,KACAmwG,aAAA,oCAAAtnI,KAAA0tK,eAEA1tK,KAAA0tK,eACA1tK,KAAA4L,QAAA27B,WAAA,iBACAvnC,KAAA6tK,aACA7tK,KAAA6tK,WAAAz0K,EAAA,SAAAyN,SAAA7G,KAAAutK,UACAvtK,KAAA+nI,UAAA/nI,KAAA6tK,WAAA,6BAGA7tK,KAAA4L,QAAAq8B,KAAA,CACA,gBAAAjoC,KAAAmjB,QAAAgU,IACA,gBAAA3qB,IAEAxM,KAAA6tK,aACA7tK,KAAA6tK,WAAA90K,SACAiH,KAAA6tK,WAAA,OAIA7tK,KAAAqtK,WAAA7gK,IACAxM,KAAAqtK,SAAA7gK,EACAxM,KAAA0mI,SAAA,WAEAl6H,IAAAxM,KAAAmjB,QAAAgU,KACAn3B,KAAA0mI,SAAA,WAEA,IAqBAttI,EAAA6qI,OAAA,gBAAA7qI,EAAAqqI,GAAAu2B,MAAA,CACAp9I,QAAA,SACAuG,QAAA,CACAtc,SAAA,OACAinK,aAAA,EACApoH,SAAA,EACAvrC,OAAA,IACAgxJ,UAAA,QAGA3qI,SAAA,KACAutI,UAAA,KACA7sJ,MAAA,KACAwD,KAAA,KACAspJ,WAAA,KACAC,YAAA,MAEAznC,QAAA,WACA,IAAAhoH,EAAAxe,KAEAA,KAAA+nI,UAAA,iBAEA/nI,KAAAkuK,SAAA,EAGAluK,KAAA24I,QAAA,WACAn6H,EAAA2vJ,WAAA/0K,EAAAolB,EAAA5S,QAAA,IAAAywC,SACA79B,EAAA4vJ,UAAAh1K,EAAAolB,EAAA2E,QAAAhJ,OAAAqE,EAAA5S,QAAA,IACA4S,EAAAupH,UAAAvpH,EAAA4vJ,UAAA,eACA5vJ,EAAA4vJ,UAAAhsK,MAAA,WACA,IAAAqmD,EAAArvD,EAAA4G,MACAquK,EAAA5lH,EAAApM,SACAoP,EAAA,CACAhlD,KAAA4nK,EAAA5nK,KAAA+X,EAAA2vJ,WAAA1nK,KACAC,IAAA2nK,EAAA3nK,IAAA8X,EAAA2vJ,WAAAznK,KAEAtN,EAAAkC,KAAA0E,KAAA,mBACA4L,QAAA5L,KACAuF,SAAAkjD,EACAhiD,KAAAglD,EAAAhlD,KACAC,IAAA+kD,EAAA/kD,IACAC,MAAA8kD,EAAAhlD,KAAAgiD,EAAA7wC,aACAhR,OAAA6kD,EAAA/kD,IAAA+hD,EAAA5wC,cACAy2J,eAAA,EACA9tI,SAAAioB,EAAAhmB,SAAA,eACAsrI,UAAAtlH,EAAAhmB,SAAA,gBACAwrI,YAAAxlH,EAAAhmB,SAAA,mBAEA,GACA,EACAziC,KAAA24I,UAEA34I,KAAAu4J,aAEAv4J,KAAAw6J,OAAAphK,EAAA,SACA4G,KAAA+nI,UAAA/nI,KAAAw6J,OAAA,uBACA,EAEA5zB,SAAA,WACA5mI,KAAAouK,UAAAtnC,WAAA,mBACA9mI,KAAA04J,eACA,EAEAc,YAAA,SAAA94J,GACA,IAAA8d,EAAAxe,KACAmjB,EAAAnjB,KAAAmjB,QAEAnjB,KAAAuuK,KAAA,CAAA7tK,EAAA6K,MAAA7K,EAAA8K,OACAxL,KAAAmuK,WAAA/0K,EAAA4G,KAAA4L,QAAA,IAAAywC,SAEAr8C,KAAAmjB,QAAA2iH,WAIA9lI,KAAAouK,UAAAh1K,EAAA+pB,EAAAhJ,OAAAna,KAAA4L,QAAA,IAEA5L,KAAA0mI,SAAA,QAAAhmI,GAEAtH,EAAA+pB,EAAAtc,UAAAglC,OAAA7rC,KAAAw6J,QAGAx6J,KAAAw6J,OAAA50J,IAAA,CACAa,KAAA/F,EAAA6K,MACA7E,IAAAhG,EAAA8K,MACAwB,MAAA,EACAmB,OAAA,IAGAgV,EAAA2qJ,aACA9tK,KAAA24I,UAGA34I,KAAAouK,UAAAj0J,OAAA,gBAAA/X,MAAA,WACA,IAAAosK,EAAAp1K,EAAAkC,KAAA0E,KAAA,mBACAwuK,EAAAF,eAAA,EACA5tK,EAAA4iJ,SAAA5iJ,EAAAy7I,UACA39H,EAAAqoH,aAAA2nC,EAAAjpK,SAAA,eACAipK,EAAAhuI,UAAA,EACAhiB,EAAAupH,UAAAymC,EAAAjpK,SAAA,kBACAipK,EAAAP,aAAA,EAGAzvJ,EAAAkoH,SAAA,cAAAhmI,EAAA,CACAutK,YAAAO,EAAA5iK,UAGA,IAEAxS,EAAAsH,EAAA2jC,QAAAg2G,UAAA13G,UAAAvgC,MAAA,WACA,IAAAqsK,EACAD,EAAAp1K,EAAAkC,KAAA0E,KAAA,mBACA,GAAAwuK,EAmBA,OAlBAC,GAAA/tK,EAAA4iJ,UAAA5iJ,EAAAy7I,UACAqyB,EAAAjpK,SAAAk9B,SAAA,eACAjkB,EAAAqoH,aAAA2nC,EAAAjpK,SAAAkpK,EAAA,gCACA1mC,UAAAymC,EAAAjpK,SAAAkpK,EAAA,iCACAD,EAAAP,aAAAQ,EACAD,EAAAT,UAAAU,EACAD,EAAAhuI,SAAAiuI,EAGAA,EACAjwJ,EAAAkoH,SAAA,YAAAhmI,EAAA,CACAqtK,UAAAS,EAAA5iK,UAGA4S,EAAAkoH,SAAA,cAAAhmI,EAAA,CACAutK,YAAAO,EAAA5iK,WAGA,CAEA,IAEA,EAEA+tJ,WAAA,SAAAj5J,GAIA,GAFAV,KAAAkuK,SAAA,GAEAluK,KAAAmjB,QAAA2iH,SAAA,CAIA,IAAA/gD,EACAvmE,EAAAxe,KACAmjB,EAAAnjB,KAAAmjB,QACAi4E,EAAAp7F,KAAAuuK,KAAA,GACAjzE,EAAAt7F,KAAAuuK,KAAA,GACA7O,EAAAh/J,EAAA6K,MACAo0J,EAAAj/J,EAAA8K,MA6FA,OA3FA4vF,EAAAskE,IACA36E,EAAA26E,IAAAtkE,IAAArW,GAEAuW,EAAAqkE,IACA56E,EAAA46E,IAAArkE,IAAAvW,GAEA/kF,KAAAw6J,OAAA50J,IAAA,CAAAa,KAAA20F,EAAA10F,IAAA40F,EAAAtuF,MAAA0yJ,EAAAtkE,EAAAjtF,OAAAwxJ,EAAArkE,IAEAt7F,KAAAouK,UAAAhsK,MAAA,WACA,IAAAosK,EAAAp1K,EAAAkC,KAAA0E,KAAA,mBACA0uK,GAAA,EACAryH,EAAA,GAGAmyH,KAAA5iK,UAAA4S,EAAA5S,QAAA,KAIAywC,EAAA51C,KAAA+nK,EAAA/nK,KAAA+X,EAAA2vJ,WAAA1nK,KACA41C,EAAA11C,MAAA6nK,EAAA7nK,MAAA6X,EAAA2vJ,WAAA1nK,KACA41C,EAAA31C,IAAA8nK,EAAA9nK,IAAA8X,EAAA2vJ,WAAAznK,IACA21C,EAAAz1C,OAAA4nK,EAAA5nK,OAAA4X,EAAA2vJ,WAAAznK,IAEA,UAAAyc,EAAAgoJ,UACAuD,IAAAryH,EAAA51C,KAAAi5J,GAAArjH,EAAA11C,MAAAy0F,GAAA/+C,EAAA31C,IAAAi5J,GACAtjH,EAAAz1C,OAAA00F,GACA,QAAAn4E,EAAAgoJ,YACAuD,EAAAryH,EAAA51C,KAAA20F,GAAA/+C,EAAA11C,MAAA+4J,GAAArjH,EAAA31C,IAAA40F,GACAj/C,EAAAz1C,OAAA+4J,GAGA+O,GAGAF,EAAAhuI,WACAhiB,EAAAqoH,aAAA2nC,EAAAjpK,SAAA,eACAipK,EAAAhuI,UAAA,GAEAguI,EAAAP,cACAzvJ,EAAAqoH,aAAA2nC,EAAAjpK,SAAA,kBACAipK,EAAAP,aAAA,GAEAO,EAAAT,YACAvvJ,EAAAupH,UAAAymC,EAAAjpK,SAAA,gBACAipK,EAAAT,WAAA,EAGAvvJ,EAAAkoH,SAAA,YAAAhmI,EAAA,CACAqtK,UAAAS,EAAA5iK,aAMA4iK,EAAAT,aACArtK,EAAA4iJ,SAAA5iJ,EAAAy7I,UAAAqyB,EAAAF,eACA9vJ,EAAAqoH,aAAA2nC,EAAAjpK,SAAA,gBACAipK,EAAAT,WAAA,EACAvvJ,EAAAupH,UAAAymC,EAAAjpK,SAAA,eACAipK,EAAAhuI,UAAA,IAEAhiB,EAAAqoH,aAAA2nC,EAAAjpK,SAAA,gBACAipK,EAAAT,WAAA,EACAS,EAAAF,gBACA9vJ,EAAAupH,UAAAymC,EAAAjpK,SAAA,kBACAipK,EAAAP,aAAA,GAIAzvJ,EAAAkoH,SAAA,cAAAhmI,EAAA,CACAutK,YAAAO,EAAA5iK,YAIA4iK,EAAAhuI,WACA9/B,EAAA4iJ,SAAA5iJ,EAAAy7I,SAAAqyB,EAAAF,gBACA9vJ,EAAAqoH,aAAA2nC,EAAAjpK,SAAA,eACAipK,EAAAhuI,UAAA,EAEAhiB,EAAAupH,UAAAymC,EAAAjpK,SAAA,kBACAipK,EAAAP,aAAA,EAGAzvJ,EAAAkoH,SAAA,cAAAhmI,EAAA,CACAutK,YAAAO,EAAA5iK,aAKA,KAEA,CArGA,CAsGA,EAEAguJ,WAAA,SAAAl5J,GACA,IAAA8d,EAAAxe,KA4BA,OA1BAA,KAAAkuK,SAAA,EAEA90K,EAAA,kBAAA4G,KAAA4L,QAAA,IAAAxJ,MAAA,WACA,IAAAosK,EAAAp1K,EAAAkC,KAAA0E,KAAA,mBACAwe,EAAAqoH,aAAA2nC,EAAAjpK,SAAA,kBACAipK,EAAAP,aAAA,EACAO,EAAAF,eAAA,EACA9vJ,EAAAkoH,SAAA,aAAAhmI,EAAA,CACAstK,WAAAQ,EAAA5iK,SAEA,IACAxS,EAAA,gBAAA4G,KAAA4L,QAAA,IAAAxJ,MAAA,WACA,IAAAosK,EAAAp1K,EAAAkC,KAAA0E,KAAA,mBACAwe,EAAAqoH,aAAA2nC,EAAAjpK,SAAA,gBACAwiI,UAAAymC,EAAAjpK,SAAA,eACAipK,EAAAT,WAAA,EACAS,EAAAhuI,UAAA,EACAguI,EAAAF,eAAA,EACA9vJ,EAAAkoH,SAAA,WAAAhmI,EAAA,CACA8/B,SAAAguI,EAAA5iK,SAEA,IACA5L,KAAA0mI,SAAA,OAAAhmI,GAEAV,KAAAw6J,OAAAzhK,UAEA,CACA,IA0BAK,EAAA6qI,OAAA,iBAAA7qI,EAAAqqI,GAAA+U,eAAA,CACA57H,QAAA,SACAgpH,eAAA,WACAziH,QAAA,CACAtc,SAAA,KACAg/H,QAAA,CACA,4CACA,+CAEAC,SAAA,KACAkV,MAAA,CACA2J,OAAA,wBAEAxgJ,SAAA,CACAwnI,GAAA,WACAV,GAAA,cACAD,UAAA,QAEAh+H,OAAA,EAGAo0I,OAAA,KACAryH,MAAA,KACA4qB,MAAA,KACAy8B,KAAA,KACA6nE,OAAA,MAGAzX,QAAA,WACA,IAAAmoC,EAAA3uK,KAAA4L,QAAA8tC,WAAAzR,KAAA,MACAjoC,KAAA4uK,IAAA,CACAhjK,QAAA+iK,EACAhqB,OAAAgqB,EAAA,UACAhvB,KAAAgvB,EAAA,SAGA3uK,KAAA6uK,cACA7uK,KAAA8uK,YACA9uK,KAAA44I,wBAEA54I,KAAA+uK,WAAA,EACA/uK,KAAAgvK,UAAA51K,GACA,EAEAy1K,YAAA,WACA,IAAA5sE,EACAzjF,EAAAxe,KACAmS,EAAAnS,KAAAivK,aACAjvK,KAAA4L,QAAAtK,KAAA,mBACAtB,KAAA4L,QAAA,GAAAo1E,eAIAhhF,KAAAk6I,OAAAl6I,KAAA4L,QAAAsuI,SAAAjyG,KAAA,MAAAjoC,KAAA4uK,IAAAjqB,QACA3kJ,KAAAqmI,IAAArmI,KAAAk6I,OAAA,CACA/vF,MAAA,SAAAzpD,GACAV,KAAA2kJ,OAAAz5I,QAAA,SACAxK,EAAA6jC,gBACA,IAIAvkC,KAAA4L,QAAApC,OAGAxJ,KAAA2kJ,OAAAvrJ,EAAA,UACA81K,SAAAlvK,KAAAmjB,QAAA2iH,UAAA,IACAlrI,GAAAoF,KAAA4uK,IAAAjqB,OACAzkH,KAAA,WACA,wBACA,2BACA,YAAAlgC,KAAA4uK,IAAAjvB,KACA,uBACAxvG,MAAAnwC,KAAA4L,QAAAq8B,KAAA,WAEAksG,YAAAn0I,KAAA4L,SAEA5L,KAAA+nI,UAAA/nI,KAAA2kJ,OAAA,mDACA,uBAEA1iD,EAAA7oG,EAAA,UAAAyN,SAAA7G,KAAA2kJ,QACA3kJ,KAAA+nI,UAAA9lC,EAAA,gCAAAjiG,KAAAmjB,QAAA63H,MAAA2J,QACA3kJ,KAAAmvK,WAAAnvK,KAAAovK,kBAAAj9J,GACAtL,SAAA7G,KAAA2kJ,SAEA,IAAA3kJ,KAAAmjB,QAAAnW,OACAhN,KAAAqvK,gBAGArvK,KAAAqmI,IAAArmI,KAAA2kJ,OAAA3kJ,KAAAsvK,eACAtvK,KAAA2kJ,OAAAt7I,IAAA,sBAIAmV,EAAAuwJ,WACAvwJ,EAAA+wJ,cAEA,GACA,EAEAT,UAAA,WACA,IAAAtwJ,EAAAxe,KAGAA,KAAA2/I,KAAAvmJ,EAAA,QACA,qBACA,kBAAA4G,KAAA4uK,IAAAjqB,OACA/pJ,GAAAoF,KAAA4uK,IAAAjvB,OAIA3/I,KAAAwvK,SAAAp2K,EAAA,SAAAyyC,OAAA7rC,KAAA2/I,MACA3/I,KAAA+nI,UAAA/nI,KAAAwvK,SAAA,iCACAxvK,KAAAwvK,SAAA3oK,SAAA7G,KAAAuiJ,aAGAviJ,KAAAyvK,aAAAzvK,KAAA2/I,KACAA,KAAA,CACA9Z,QAAA,CACA,8BAEA3lG,KAAA,UACA+9G,OAAA,SAAAv9I,EAAA+iI,GACA/iI,EAAA6jC,iBACA/lB,EAAAkxJ,QAAAjsC,EAAAtxH,KAAA7W,KAAA,sBAAAoF,EACA,EACAi5C,MAAA,SAAAj5C,EAAA+iI,GACA,IAAAtxH,EAAAsxH,EAAAtxH,KAAA7W,KAAA,sBAGA,MAAAkjB,EAAAmxJ,YAAAx9J,EAAA3Q,QAAAgd,EAAAmxJ,aACAnxJ,EAAAkoH,SAAA,QAAAhmI,EAAA,CAAAyR,SACAqM,EAAA+pJ,QACA/pJ,EAAAkxJ,QAAAv9J,EAAAzR,IAGA8d,EAAAmxJ,WAAAx9J,EAAA3Q,MAEAgd,EAAAmmI,OAAA18G,KAAA,wBACAzpB,EAAAwwJ,UAAAj0H,GAAA5oC,EAAA3Q,OAAAymC,KAAA,MACA,IAEA03G,KAAA,YAGA3/I,KAAAyvK,aAAA3nC,KAAA9nI,KAAA2/I,KAAA,cAGA3/I,KAAAyvK,aAAA9wB,sBAAA,WACA,QACA,EAGA3+I,KAAAyvK,aAAA5vB,WAAA,WACA,QACA,CACA,EAEAlH,QAAA,WACA34I,KAAAuvK,eACAvvK,KAAAmvK,WAAA37B,YACAxzI,KAAAmvK,WAAAnvK,KAAAovK,kBAGApvK,KAAA4vK,mBAAAt0K,KAAA,4BAGA,OAAA0E,KAAAmjB,QAAAnW,OACAhN,KAAAqvK,eAEA,EAEAE,aAAA,WACA,IAAAp9J,EACAgR,EAAAnjB,KAAA4L,QAAAtK,KAAA,UAEAtB,KAAA2/I,KAAAllG,QAEAz6C,KAAA6vK,cAAA1sJ,GACAnjB,KAAA+jJ,YAAA/jJ,KAAA2/I,KAAA3/I,KAAAs6B,OAEAt6B,KAAAyvK,aAAA92B,UACA34I,KAAAgvK,UAAAhvK,KAAA2/I,KAAAr+I,KAAA,MACAsmI,IAAA,2BACAtmI,KAAA,yBAEAtB,KAAA+uK,WAAA,EAEA5rJ,EAAAzqB,SAIAyZ,EAAAnS,KAAA4vK,mBAGA5vK,KAAAyvK,aAAA91H,MAAA,KAAAxnC,GACAnS,KAAA8vK,SAAA39J,EAAA7W,KAAA,uBAGA0E,KAAAinI,WAAA,WAAAjnI,KAAA4L,QAAA8K,KAAA,aACA,EAEA0/D,KAAA,SAAA11E,GACAV,KAAAmjB,QAAA2iH,WAKA9lI,KAAA+uK,WAKA/uK,KAAA6mI,aAAA7mI,KAAA2/I,KAAAr+I,KAAA,4CACAtB,KAAAyvK,aAAA91H,MAAA,KAAA35C,KAAA4vK,qBALA5vK,KAAAuvK,eASAvvK,KAAAgvK,UAAAt2K,SAIAsH,KAAAuoK,QAAA,EACAvoK,KAAA+vK,cACA/vK,KAAAgkJ,cACAhkJ,KAAAupI,YAEAvpI,KAAAqmI,IAAArmI,KAAA9H,SAAA8H,KAAAgwK,gBAEAhwK,KAAA0mI,SAAA,OAAAhmI,IACA,EAEA6oI,UAAA,WACAvpI,KAAAwvK,SAAArrK,SAAA/K,EAAAuG,OAAA,CAAA6qI,GAAAxqI,KAAA2kJ,QAAA3kJ,KAAAmjB,QAAAhf,UACA,EAEA4qB,MAAA,SAAAruB,GACAV,KAAAuoK,SAIAvoK,KAAAuoK,QAAA,EACAvoK,KAAA+vK,cAEA/vK,KAAAk7E,MAAA,KACAl7E,KAAA8nI,KAAA9nI,KAAA9H,UAEA8H,KAAA0mI,SAAA,QAAAhmI,GACA,EAEAujI,OAAA,WACA,OAAAjkI,KAAA2kJ,MACA,EAEAsrB,WAAA,WACA,OAAAjwK,KAAA2/I,IACA,EAEAyvB,kBAAA,SAAAj9J,GACA,IAAAg9J,EAAA/1K,EAAA,UAKA,OAHA4G,KAAAkwK,SAAAf,EAAAh9J,EAAA6gD,OACAhzD,KAAA+nI,UAAAonC,EAAA,sBAEAA,CACA,EAEAprB,YAAA,SAAAD,EAAAxpH,GACA,IAAA9b,EAAAxe,KACAmwK,EAAA,GAEA/2K,EAAAgJ,KAAAk4B,GAAA,SAAA94B,EAAA2Q,GACA,IAAAi+J,EAEAj+J,EAAAk+J,WAAAF,IACAC,EAAAh3K,EAAA,QACAyhC,KAAA1oB,EAAAk+J,WAEA7xJ,EAAAupH,UAAAqoC,EAAA,4CACAj+J,EAAAvG,QAAA/F,OAAA,YAAA6Q,KAAA,YACA,qBACA,KAEA05J,EAAAvpK,SAAAi9I,GAEAqsB,EAAAh+J,EAAAk+J,UAGA7xJ,EAAAylI,gBAAAH,EAAA3xI,EACA,GACA,EAEA8xI,gBAAA,SAAAH,EAAA3xI,GACA,OAAAnS,KAAAkkJ,YAAAJ,EAAA3xI,GAAA7W,KAAA,qBAAA6W,EACA,EAEA+xI,YAAA,SAAAJ,EAAA3xI,GACA,IAAAi+J,EAAAh3K,EAAA,QACAukF,EAAAvkF,EAAA,SACA+2C,MAAAh+B,EAAAvG,QAAAq8B,KAAA,WAaA,OAVA91B,EAAA2zH,UACA9lI,KAAA+nI,UAAAqoC,EAAA,0BAGAj+J,EAAA5I,OACA6mK,EAAA15J,KAAA,aAEA1W,KAAAkwK,SAAAvyF,EAAAxrE,EAAA6gD,OAGAo9G,EAAAvkI,OAAA8xC,GAAA92E,SAAAi9I,EACA,EAEAosB,SAAA,SAAAtkK,EAAAY,GACAA,EACAZ,EAAAivB,KAAAruB,GAEAZ,EAAAi5B,KAAA,SAEA,EAEAs6G,MAAA,SAAAnsE,EAAAtyE,GACA,IAAAyR,EAAAygD,EACAz4C,EAAA,gBAEAna,KAAAuoK,OACAp2J,EAAAnS,KAAAgvK,UAAAj0H,GAAA/6C,KAAA2vK,YAAA9pK,OAAA,OAEAsM,EAAAnS,KAAAgvK,UAAAj0H,GAAA/6C,KAAA4L,QAAA,GAAAo1E,eAAAn7E,OAAA,MACAsU,GAAA,6BAIAy4C,EADA,UAAAogB,GAAA,SAAAA,EACA7gE,EAAA,UAAA6gE,EAAA,qBAAA74D,GAAA4gC,IAAA,GAEA5oC,EAAA6gE,EAAA,OAAA74D,GAAA4gC,GAAA,IAGAriD,QACAsH,KAAAyvK,aAAA91H,MAAAj5C,EAAAkyD,EAEA,EAEAg9G,iBAAA,WACA,OAAA5vK,KAAAgvK,UAAAj0H,GAAA/6C,KAAA4L,QAAA,GAAAo1E,eAAAn7E,OAAA,KACA,EAEA43I,QAAA,SAAA/8I,GACAV,UAAAuoK,OAAA,gBAAA7nK,EACA,EAEA4vK,cAAA,WACA,IAAAC,EAEAvwK,KAAAk7E,SAIAq1F,EAAA12K,OAAA22K,gBACAC,kBACAF,EAAAG,SAAA1wK,KAAAk7E,OACA,EAEA80F,eAAA,CACAxtB,UAAA,SAAA9hJ,GACAV,KAAAuoK,SAIAnvK,EAAAsH,EAAA2jC,QAAAyrC,QAAA,yBACAipE,IAAArmG,OAAA1yC,KAAA4uK,IAAAjqB,SAAAjsJ,QACAsH,KAAA+uB,MAAAruB,GAEA,GAGA4uK,cAAA,CAGA9sB,UAAA,WACA,IAAA+tB,EAAA12K,OAAA22K,eACAD,EAAAI,aACA3wK,KAAAk7E,MAAAq1F,EAAAK,WAAA,GAEA,EAEAzmH,MAAA,SAAAzpD,GACAV,KAAAswK,gBACAtwK,KAAAy9I,QAAA/8I,EACA,EAEAo8I,QAAA,SAAAp8I,GACA,IAAA6jC,GAAA,EACA,OAAA7jC,EAAA4lD,SACA,KAAAltD,EAAAqqI,GAAAn9E,QAAA0zF,IACA,KAAA5gJ,EAAAqqI,GAAAn9E,QAAAkzF,OACAx5I,KAAA+uB,MAAAruB,GACA6jC,GAAA,EACA,MACA,KAAAnrC,EAAAqqI,GAAAn9E,QAAAizF,MACAv5I,KAAAuoK,QACAvoK,KAAA6wK,mBAAAnwK,GAEA,MACA,KAAAtH,EAAAqqI,GAAAn9E,QAAA2zF,GACAv5I,EAAAw7I,OACAl8I,KAAAy9I,QAAA/8I,GAEAV,KAAAm/I,MAAA,OAAAz+I,GAEA,MACA,KAAAtH,EAAAqqI,GAAAn9E,QAAA+yF,KACA34I,EAAAw7I,OACAl8I,KAAAy9I,QAAA/8I,GAEAV,KAAAm/I,MAAA,OAAAz+I,GAEA,MACA,KAAAtH,EAAAqqI,GAAAn9E,QAAAyzF,MACA/5I,KAAAuoK,OACAvoK,KAAA6wK,mBAAAnwK,GAEAV,KAAAy9I,QAAA/8I,GAEA,MACA,KAAAtH,EAAAqqI,GAAAn9E,QAAAozF,KACA15I,KAAAm/I,MAAA,OAAAz+I,GACA,MACA,KAAAtH,EAAAqqI,GAAAn9E,QAAAwzF,MACA95I,KAAAm/I,MAAA,OAAAz+I,GACA,MACA,KAAAtH,EAAAqqI,GAAAn9E,QAAAmzF,KACA,KAAArgJ,EAAAqqI,GAAAn9E,QAAAszF,QACA55I,KAAAm/I,MAAA,QAAAz+I,GACA,MACA,KAAAtH,EAAAqqI,GAAAn9E,QAAAgzF,IACA,KAAAlgJ,EAAAqqI,GAAAn9E,QAAAqzF,UACA35I,KAAAm/I,MAAA,OAAAz+I,GACA,MACA,QACAV,KAAA2/I,KAAAz0I,QAAAxK,GACA6jC,GAAA,EAGAA,GACA7jC,EAAA6jC,gBAEA,GAGAssI,mBAAA,SAAAnwK,GACA,IAAAyR,EAAAnS,KAAAgvK,UAAAj0H,GAAA/6C,KAAA2vK,YAAA9pK,OAAA,MACAsM,EAAAswB,SAAA,sBACAziC,KAAA0vK,QAAAv9J,EAAA7W,KAAA,sBAAAoF,EAEA,EAEAgvK,QAAA,SAAAv9J,EAAAzR,GACA,IAAAowK,EAAA9wK,KAAA4L,QAAA,GAAAo1E,cAGAhhF,KAAA4L,QAAA,GAAAo1E,cAAA7uE,EAAA3Q,MACAxB,KAAAmvK,WAAA37B,YAAAxzI,KAAAmvK,WAAAnvK,KAAAovK,kBAAAj9J,IACAnS,KAAA8vK,SAAA39J,GACAnS,KAAA0mI,SAAA,SAAAhmI,EAAA,CAAAyR,SAEAA,EAAA3Q,QAAAsvK,GACA9wK,KAAA0mI,SAAA,SAAAhmI,EAAA,CAAAyR,SAGAnS,KAAA+uB,MAAAruB,EACA,EAEAovK,SAAA,SAAA39J,GACA,IAAAvX,EAAAoF,KAAAgvK,UAAAj0H,GAAA5oC,EAAA3Q,OAAAymC,KAAA,MAEAjoC,KAAA2kJ,OAAA18G,KAAA,CACA,kBAAArtC,EACA,wBAAAA,IAEAoF,KAAA2/I,KAAA13G,KAAA,wBAAArtC,EACA,EAEAqsI,WAAA,SAAAr2H,EAAApE,GACA,aAAAoE,EAAA,CACA,IAAAqxF,EAAAjiG,KAAA2kJ,OAAArjJ,KAAA,gBACAtB,KAAA6mI,aAAA5kC,EAAA,KAAAjiG,KAAAmjB,QAAA63H,MAAA2J,QACA5c,UAAA9lC,EAAA,KAAAz1F,EAAAm4I,OACA,CAEA3kJ,KAAA2/E,OAAA/uE,EAAApE,GAEA,aAAAoE,GACA5Q,KAAAwvK,SAAA3oK,SAAA7G,KAAAuiJ,aAGA,UAAA3xI,GACA5Q,KAAAqvK,eAEA,EAEA5oC,mBAAA,SAAAj6H,GACAxM,KAAA2/E,OAAAnzE,GAEAxM,KAAAyvK,aAAAx8H,OAAA,WAAAzmC,GACAxM,KAAA2kJ,OAAA18G,KAAA,gBAAAz7B,GACAxM,KAAAsnI,aAAAtnI,KAAA2kJ,OAAA,yBAAAn4I,GAEAxM,KAAA4L,QAAA8K,KAAA,WAAAlK,GACAA,GACAxM,KAAA2kJ,OAAA18G,KAAA,eACAjoC,KAAA+uB,SAEA/uB,KAAA2kJ,OAAA18G,KAAA,aAEA,EAEAs6G,UAAA,WACA,IAAA32I,EAAA5L,KAAAmjB,QAAAtc,SAgBA,OAdA+E,IACAA,IAAAwpB,QAAAxpB,EAAA4lC,SACAp4C,EAAAwS,GACA5L,KAAA9H,SAAAoJ,KAAAsK,GAAAmvC,GAAA,IAGAnvC,KAAA,KACAA,EAAA5L,KAAA4L,QAAAkkE,QAAA,sBAGAlkE,EAAAlT,SACAkT,EAAA5L,KAAA9H,SAAA,GAAAi4B,MAGAvkB,CACA,EAEAmkK,YAAA,WACA/vK,KAAA2kJ,OAAA18G,KAAA,gBAAAjoC,KAAAuoK,QAKAvoK,KAAA6mI,aAAA7mI,KAAA2kJ,OAAA,yBACA3kJ,KAAAuoK,OAAA,kBACAxgC,UAAA/nI,KAAA2kJ,OAAA,yBACA3kJ,KAAAuoK,OAAA,kBACAjhC,aAAAtnI,KAAAwvK,SAAA,0BAAAxvK,KAAAuoK,QAEAvoK,KAAA2/I,KAAA13G,KAAA,eAAAjoC,KAAAuoK,OACA,EAEA8G,cAAA,WACA,IAAAriK,EAAAhN,KAAAmjB,QAAAnW,OAGA,IAAAA,GAMA,OAAAA,IACAA,EAAAhN,KAAA4L,QAAA9C,OAAA8O,aACA5X,KAAA4L,QAAApC,QAGAxJ,KAAA2kJ,OAAA/sI,WAAA5K,IAVAhN,KAAA2kJ,OAAA/+I,IAAA,WAWA,EAEAo+I,YAAA,WACAhkJ,KAAA2/I,KAAA/nI,WAAA7C,KAAAoiB,IACAn3B,KAAA2kJ,OAAA/sI,aACA5X,KAAA2/I,KAAA3yI,MAAA,IAAA4K,cAEA,EAEA2uH,kBAAA,WACA,IAAApjH,EAAAnjB,KAAA2/E,SAIA,OAFAx8D,EAAA2iH,SAAA9lI,KAAA4L,QAAA8K,KAAA,YAEAyM,CACA,EAEA0sJ,cAAA,SAAA1sJ,GACA,IAAA3E,EAAAxe,KACA1E,EAAA,GACA6nB,EAAA/gB,MAAA,SAAAZ,EAAA2Q,GACA7W,EAAAuF,KAAA2d,EAAAywJ,aAAA71K,EAAA+Y,GAAA3Q,GACA,IACAxB,KAAAs6B,MAAAh/B,CACA,EAEA2zK,aAAA,SAAAh8H,EAAAzxC,GACA,IAAA6uK,EAAAp9H,EAAAptC,OAAA,YAEA,OACA+F,QAAAqnC,EACAzxC,QACAgL,MAAAymC,EAAA6F,MACAka,MAAA/f,EAAApY,OACAtxB,OAAA8mK,EAAA35J,KAAA,WAAAu8B,EAAAv8B,KAAA,UACA25J,WAAApoI,KAAA,aACA69F,SAAAuqC,EAAA35J,KAAA,aAAAu8B,EAAAv8B,KAAA,YAEA,EAEAkwH,SAAA,WACA5mI,KAAA64I,0BACA74I,KAAAwvK,SAAAz2K,SACAiH,KAAA2kJ,OAAA5rJ,SACAiH,KAAA4L,QAAA9C,OACA9I,KAAA4L,QAAAgvI,iBACA56I,KAAAk6I,OAAAjyG,KAAA,MAAAjoC,KAAA4uK,IAAAhjK,QACA,KAuBAxS,EAAA6qI,OAAA,YAAA7qI,EAAAqqI,GAAAu2B,MAAA,CACAp9I,QAAA,SACAooH,kBAAA,QAEA7hH,QAAA,CACAmkC,SAAA,EACAu+E,QAAA,CACA,4BACA,mCAIA,oDAEAngF,SAAA,EACAvuB,IAAA,IACA9E,IAAA,EACA7a,YAAA,aACA0jE,OAAA,EACAvoB,KAAA,EACAnmD,MAAA,EACAqE,OAAA,KAGAuwI,OAAA,KACAz0G,MAAA,KACAzrB,MAAA,KACAwD,KAAA,MAKAqsJ,SAAA,EAEAvqC,QAAA,WACAxmI,KAAAgxK,aAAA,EACAhxK,KAAAixK,eAAA,EACAjxK,KAAAkxK,aAAA,EACAlxK,KAAAmxK,aAAA,KACAnxK,KAAAoxK,qBACApxK,KAAAu4J,aACAv4J,KAAAqxK,mBAEArxK,KAAA+nI,UAAA,uBAAA/nI,KAAAwX,YACA,+BAEAxX,KAAAy7I,WAEAz7I,KAAAkxK,aAAA,CACA,EAEAz1B,SAAA,WACAz7I,KAAAsxK,eACAtxK,KAAAuxK,iBACAvxK,KAAA+7I,eACA/7I,KAAAwtK,eACA,EAEA+D,eAAA,WACA,IAAA94K,EAAA+4K,EACAruJ,EAAAnjB,KAAAmjB,QACAsuJ,EAAAzxK,KAAA4L,QAAAtK,KAAA,qBAEAg/J,EAAA,GASA,IAPAkR,EAAAruJ,EAAAtS,QAAAsS,EAAAtS,OAAAnY,QAAA,EAEA+4K,EAAA/4K,OAAA84K,IACAC,EAAA/yK,MAAA8yK,GAAAz4K,SACA04K,IAAA/yK,MAAA,EAAA8yK,IAGA/4K,EAAAg5K,EAAA/4K,OAAAD,EAAA+4K,EAAA/4K,IACA6nK,EAAAz/J,KAXA,8BAcAb,KAAAsgK,QAAAmR,EAAArsH,IAAAhsD,EAAAknK,EAAAttJ,KAAA,KAAAnM,SAAA7G,KAAA4L,UAEA5L,KAAA+nI,UAAA/nI,KAAAsgK,QAAA,uCAEAtgK,KAAAu6J,OAAAv6J,KAAAsgK,QAAAvlH,GAAA,GAEA/6C,KAAAsgK,QAAAl+J,MAAA,SAAA3J,GACAW,EAAA4G,MACA1E,KAAA,yBAAA7C,GACAwvC,KAAA,aACA,GACA,EAEAqpI,aAAA,WACA,IAAAnuJ,EAAAnjB,KAAAmjB,QAEAA,EAAA+3D,QACA,IAAA/3D,EAAA+3D,QACA/3D,EAAAtS,OAEAsS,EAAAtS,OAAAnY,QAAA,IAAAyqB,EAAAtS,OAAAnY,OACAyqB,EAAAtS,OAAA,CAAAsS,EAAAtS,OAAA,GAAAsS,EAAAtS,OAAA,IACAoB,MAAAiS,QAAAf,EAAAtS,UACAsS,EAAAtS,OAAAsS,EAAAtS,OAAAnS,MAAA,IAJAykB,EAAAtS,OAAA,CAAA7Q,KAAA0xK,YAAA1xK,KAAA0xK,cAQA1xK,KAAAk7E,OAAAl7E,KAAAk7E,MAAAxiF,QAMAsH,KAAA6mI,aAAA7mI,KAAAk7E,MAAA,2CAGAl7E,KAAAk7E,MAAAt1E,IAAA,CACAa,KAAA,GACAG,OAAA,OAVA5G,KAAAk7E,MAAA9hF,EAAA,SACAyN,SAAA7G,KAAA4L,SAEA5L,KAAA+nI,UAAA/nI,KAAAk7E,MAAA,oBAUA,QAAA/3D,EAAA+3D,OAAA,QAAA/3D,EAAA+3D,OACAl7E,KAAA+nI,UAAA/nI,KAAAk7E,MAAA,mBAAA/3D,EAAA+3D,SAGAl7E,KAAAk7E,OACAl7E,KAAAk7E,MAAAniF,SAEAiH,KAAAk7E,MAAA,KAEA,EAEA6gE,aAAA,WACA/7I,KAAA8nI,KAAA9nI,KAAAsgK,SACAtgK,KAAAqmI,IAAArmI,KAAAsgK,QAAAtgK,KAAA2xK,eACA3xK,KAAAqoI,WAAAroI,KAAAsgK,SACAtgK,KAAAyoI,WAAAzoI,KAAAsgK,QACA,EAEA15B,SAAA,WACA5mI,KAAAsgK,QAAAvnK,SACAiH,KAAAk7E,OACAl7E,KAAAk7E,MAAAniF,SAGAiH,KAAA04J,eACA,EAEAS,cAAA,SAAAz4J,GACA,IAAAyD,EAAAytK,EAAAlsH,EAAAmsH,EAAArwK,EAAA66C,EAAAy1H,EACAtzJ,EAAAxe,KACAwjG,EAAAxjG,KAAAmjB,QAEA,OAAAqgF,EAAAsiC,WAIA9lI,KAAA+xK,YAAA,CACA/kK,MAAAhN,KAAA4L,QAAAgM,aACAzJ,OAAAnO,KAAA4L,QAAAiM,eAEA7X,KAAAklK,cAAAllK,KAAA4L,QAAAywC,SAEAl4C,EAAA,CAAAC,EAAA1D,EAAA6K,MAAAlH,EAAA3D,EAAA8K,OACAomK,EAAA5xK,KAAAgyK,oBAAA7tK,GACAuhD,EAAA1lD,KAAAiyK,YAAAjyK,KAAA0xK,YAAA,EACA1xK,KAAAsgK,QAAAl+J,MAAA,SAAA3J,GACA,IAAAy5K,EAAAn9J,KAAAD,IAAA88J,EAAApzJ,EAAA3N,OAAApY,KACAitD,EAAAwsH,GACAxsH,IAAAwsH,IACAz5K,IAAA+lB,EAAA2zJ,mBAAA3zJ,EAAA3N,OAAApY,KAAA+qG,EAAAnxE,QACAqzB,EAAAwsH,EACAL,EAAAz4K,EAAA4G,MACAwB,EAAA/I,EAEA,KAGA,IADAuH,KAAAoyK,OAAA1xK,EAAAc,KAIAxB,KAAAixK,eAAA,EAEAjxK,KAAAmxK,aAAA3vK,EAEAxB,KAAA+nI,UAAA8pC,EAAA,wBACAA,EAAA3mK,QAAA,SAEAmxC,EAAAw1H,EAAAx1H,SACAy1H,GAAA14K,EAAAsH,EAAA2jC,QAAAg2G,UAAA13G,UAAA2B,GAAA,qBACAtkC,KAAAqyK,aAAAP,EAAA,CAAArrK,KAAA,EAAAC,IAAA,IACAD,KAAA/F,EAAA6K,MAAA8wC,EAAA51C,KAAAorK,EAAA7kK,QAAA,EACAtG,IAAAhG,EAAA8K,MAAA6wC,EAAA31C,IACAmrK,EAAA1jK,SAAA,GACA+K,SAAA24J,EAAAjsK,IAAA,2BACAsT,SAAA24J,EAAAjsK,IAAA,8BACAsT,SAAA24J,EAAAjsK,IAAA,sBAGA5F,KAAAsgK,QAAA79H,SAAA,mBACAziC,KAAAsyK,OAAA5xK,EAAAc,EAAAowK,GAEA5xK,KAAAkxK,aAAA,GACA,GACA,EAEA1X,YAAA,WACA,QACA,EAEAG,WAAA,SAAAj5J,GACA,IAAAyD,EAAA,CAAAC,EAAA1D,EAAA6K,MAAAlH,EAAA3D,EAAA8K,OACAomK,EAAA5xK,KAAAgyK,oBAAA7tK,GAIA,OAFAnE,KAAAsyK,OAAA5xK,EAAAV,KAAAmxK,aAAAS,IAEA,CACA,EAEAhY,WAAA,SAAAl5J,GAWA,OAVAV,KAAA6mI,aAAA7mI,KAAAsgK,QAAA,wBACAtgK,KAAAixK,eAAA,EAEAjxK,KAAAuyK,MAAA7xK,EAAAV,KAAAmxK,cACAnxK,KAAAqiJ,QAAA3hJ,EAAAV,KAAAmxK,cAEAnxK,KAAAmxK,aAAA,KACAnxK,KAAAqyK,aAAA,KACAryK,KAAAkxK,aAAA,GAEA,CACA,EAEAE,mBAAA,WACApxK,KAAAwX,YAAA,aAAAxX,KAAAmjB,QAAA3L,YAAA,uBACA,EAEAw6J,oBAAA,SAAA7tK,GACA,IAAAquK,EACAC,EACAC,EACAC,EACAC,EA0BA,MAxBA,eAAA5yK,KAAAwX,aACAg7J,EAAAxyK,KAAA+xK,YAAA/kK,MACAylK,EAAAtuK,EAAAC,EAAApE,KAAAklK,cAAAz+J,MACAzG,KAAAqyK,aAAAryK,KAAAqyK,aAAA5rK,KAAA,KAEA+rK,EAAAxyK,KAAA+xK,YAAA5jK,OACAskK,EAAAtuK,EAAAE,EAAArE,KAAAklK,cAAAx+J,KACA1G,KAAAqyK,aAAAryK,KAAAqyK,aAAA3rK,IAAA,KAGAgsK,EAAAD,EAAAD,GACA,IACAE,EAAA,GAEAA,EAAA,IACAA,EAAA,GAEA,aAAA1yK,KAAAwX,cACAk7J,EAAA,EAAAA,GAGAC,EAAA3yK,KAAAiyK,YAAAjyK,KAAA0xK,YACAkB,EAAA5yK,KAAA0xK,YAAAgB,EAAAC,EAEA3yK,KAAA6yK,gBAAAD,EACA,EAEA1V,QAAA,SAAA17J,EAAAgL,EAAAqE,GACA,IAAAiiK,EAAA,CACAvY,OAAAv6J,KAAAsgK,QAAA9+J,GACAuxK,YAAAvxK,EACAgL,WAAApG,IAAAoG,IAAAxM,KAAAwM,SAQA,OALAxM,KAAAgzK,uBACAF,EAAAtmK,WAAApG,IAAAoG,IAAAxM,KAAA6Q,OAAArP,GACAsxK,EAAAjiK,UAAA7Q,KAAA6Q,UAGAiiK,CACA,EAEAE,mBAAA,WACA,OAAAhzK,KAAAmjB,QAAAtS,QAAA7Q,KAAAmjB,QAAAtS,OAAAnY,MACA,EAEA05K,OAAA,SAAA1xK,EAAAc,GACA,OAAAxB,KAAA0mI,SAAA,QAAAhmI,EAAAV,KAAAk9J,QAAA17J,GACA,EAEA8wK,OAAA,SAAA5xK,EAAAc,EAAAyxK,GACA,IAAAC,EACAC,EAAAnzK,KAAAwM,QACA4mK,EAAApzK,KAAA6Q,SAEA7Q,KAAAgzK,uBACAE,EAAAlzK,KAAA6Q,OAAArP,EAAA,KACA2xK,EAAAnzK,KAAA6Q,OAAArP,GAEA,IAAAxB,KAAAmjB,QAAAtS,OAAAnY,SAAA,IAAAsH,KAAAmjB,QAAA+3D,QACA+3F,EAAA,IAAAzxK,EAAAuT,KAAAsd,IAAA6gJ,EAAAD,GAAAl+J,KAAAoiB,IAAA+7I,EAAAD,IAGAG,EAAA5xK,GAAAyxK,GAGAA,IAAAE,IAOA,IAHAnzK,KAAA0mI,SAAA,QAAAhmI,EAAAV,KAAAk9J,QAAA17J,EAAAyxK,EAAAG,MAOApzK,KAAAgzK,qBACAhzK,KAAA6Q,OAAArP,EAAAyxK,GAEAjzK,KAAAwM,MAAAymK,GAEA,EAEAV,MAAA,SAAA7xK,EAAAc,GACAxB,KAAA0mI,SAAA,OAAAhmI,EAAAV,KAAAk9J,QAAA17J,GACA,EAEA6gJ,QAAA,SAAA3hJ,EAAAc,GACAxB,KAAAgxK,aAAAhxK,KAAAixK,gBAGAjxK,KAAAmyK,kBAAA3wK,EACAxB,KAAA0mI,SAAA,SAAAhmI,EAAAV,KAAAk9J,QAAA17J,IAEA,EAEAgL,MAAA,SAAAihK,GACA,OAAAvsK,UAAAxI,QACAsH,KAAAmjB,QAAA3W,MAAAxM,KAAA6yK,gBAAApF,GACAztK,KAAAwtK,qBACAxtK,KAAAqiJ,QAAA,SAIAriJ,KAAAy+D,QACA,EAEA5tD,OAAA,SAAArP,EAAAisK,GACA,IAAAhnD,EACA2sD,EACA36K,EAEA,GAAAyI,UAAAxI,OAAA,EAIA,OAHAsH,KAAAmjB,QAAAtS,OAAArP,GAAAxB,KAAA6yK,gBAAApF,GACAztK,KAAAwtK,qBACAxtK,KAAAqiJ,QAAA,KAAA7gJ,GAIA,IAAAN,UAAAxI,OAiBA,OAAAsH,KAAAqzK,UAhBA,IAAAphK,MAAAiS,QAAAhjB,UAAA,IASA,OAAAlB,KAAAgzK,qBACAhzK,KAAAqzK,QAAA7xK,GAEAxB,KAAAwM,QATA,IAFAi6G,EAAAzmH,KAAAmjB,QAAAtS,OACAuiK,EAAAlyK,UAAA,GACAzI,EAAA,EAAAA,EAAAguH,EAAA/tH,OAAAD,GAAA,EACAguH,EAAAhuH,GAAAuH,KAAA6yK,gBAAAO,EAAA36K,IACAuH,KAAAqiJ,QAAA,KAAA5pJ,GAEAuH,KAAAwtK,eAWA,EAEAvmC,WAAA,SAAAr2H,EAAApE,GACA,IAAA/T,EACA66K,EAAA,EAkBA,OAhBA,UAAA1iK,IAAA,IAAA5Q,KAAAmjB,QAAA+3D,QACA,QAAA1uE,GACAxM,KAAAmjB,QAAA3W,MAAAxM,KAAAqzK,QAAA,GACArzK,KAAAmjB,QAAAtS,OAAA,MACA,QAAArE,IACAxM,KAAAmjB,QAAA3W,MAAAxM,KAAAqzK,QAAArzK,KAAAmjB,QAAAtS,OAAAnY,OAAA,GACAsH,KAAAmjB,QAAAtS,OAAA,OAIAoB,MAAAiS,QAAAlkB,KAAAmjB,QAAAtS,UACAyiK,EAAAtzK,KAAAmjB,QAAAtS,OAAAnY,QAGAsH,KAAA2/E,OAAA/uE,EAAApE,GAEAoE,GACA,kBACA5Q,KAAAoxK,qBACApxK,KAAA6mI,aAAA,2CACAkB,UAAA,aAAA/nI,KAAAwX,aACAxX,KAAAwtK,gBACAxtK,KAAAmjB,QAAA+3D,OACAl7E,KAAAuzK,cAAA/mK,GAIAxM,KAAAsgK,QAAA16J,IAAA,eAAA4G,EAAA,oBACA,MACA,YACAxM,KAAAkxK,aAAA,EACAlxK,KAAAwtK,gBACAxtK,KAAAqiJ,QAAA,QACAriJ,KAAAkxK,aAAA,EACA,MACA,aAKA,IAJAlxK,KAAAkxK,aAAA,EACAlxK,KAAAwtK,gBAGA/0K,EAAA66K,EAAA,EAAA76K,GAAA,EAAAA,IACAuH,KAAAqiJ,QAAA,KAAA5pJ,GAEAuH,KAAAkxK,aAAA,EACA,MACA,WACA,UACA,UACAlxK,KAAAkxK,aAAA,EACAlxK,KAAAqxK,mBACArxK,KAAAwtK,gBACAxtK,KAAAkxK,aAAA,EACA,MACA,YACAlxK,KAAAkxK,aAAA,EACAlxK,KAAAy7I,WACAz7I,KAAAkxK,aAAA,EAGA,EAEAzqC,mBAAA,SAAAj6H,GACAxM,KAAA2/E,OAAAnzE,GAEAxM,KAAAsnI,aAAA,2BAAA96H,EACA,EAIAiyD,OAAA,WACA,IAAA3lB,EAAA94C,KAAAmjB,QAAA3W,MAGA,OAFAssC,EAAA94C,KAAA6yK,gBAAA/5H,EAGA,EAKAu6H,QAAA,SAAA7xK,GACA,IAAAs3C,EACA2tE,EACAhuH,EAEA,GAAAyI,UAAAxI,OAIA,OAHAogD,EAAA94C,KAAAmjB,QAAAtS,OAAArP,GACAs3C,EAAA94C,KAAA6yK,gBAAA/5H,GAGA,GAAA94C,KAAAgzK,qBAAA,CAKA,IADAvsD,EAAAzmH,KAAAmjB,QAAAtS,OAAAnS,QACAjG,EAAA,EAAAA,EAAAguH,EAAA/tH,OAAAD,GAAA,EACAguH,EAAAhuH,GAAAuH,KAAA6yK,gBAAApsD,EAAAhuH,IAGA,OAAAguH,CACA,CACA,QAEA,EAGAosD,gBAAA,SAAA/5H,GACA,GAAAA,GAAA94C,KAAA0xK,YACA,OAAA1xK,KAAA0xK,YAEA,GAAA54H,GAAA94C,KAAAiyK,YACA,OAAAjyK,KAAAiyK,YAEA,IAAAt/G,EAAA3yD,KAAAmjB,QAAAwvC,KAAA,EAAA3yD,KAAAmjB,QAAAwvC,KAAA,EACA6gH,GAAA16H,EAAA94C,KAAA0xK,aAAA/+G,EACA8gH,EAAA36H,EAAA06H,EAQA,OANA,EAAAz+J,KAAAD,IAAA0+J,IAAA7gH,IACA8gH,GAAAD,EAAA,EAAA7gH,MAKAlzC,WAAAg0J,EAAAn+J,QAAA,GACA,EAEA+7J,iBAAA,WACA,IAAAl6I,EAAAn3B,KAAAmjB,QAAAgU,IACA9E,EAAAryB,KAAA0xK,YACA/+G,EAAA3yD,KAAAmjB,QAAAwvC,MAEAx7B,EADApiB,KAAA81C,OAAA1zB,EAAA9E,GAAAsgC,KACAtgC,GACAryB,KAAAmjB,QAAAgU,MAGAA,GAAAw7B,GAEA3yD,KAAAm3B,IAAA1X,WAAA0X,EAAA7hB,QAAAtV,KAAA0zK,cACA,EAEAA,WAAA,WACA,IAAAt+J,EAAApV,KAAA2zK,aAAA3zK,KAAAmjB,QAAAwvC,MAIA,OAHA,OAAA3yD,KAAAmjB,QAAAkP,MACAjd,EAAAL,KAAAoiB,IAAA/hB,EAAApV,KAAA2zK,aAAA3zK,KAAAmjB,QAAAkP,OAEAjd,CACA,EAEAu+J,aAAA,SAAA30D,GACA,IAAApuE,EAAAouE,EAAAvuG,WACAW,EAAAw/B,EAAA93C,QAAA,KACA,WAAAsY,EAAA,EAAAw/B,EAAAl4C,OAAA0Y,EAAA,CACA,EAEAsgK,UAAA,WACA,OAAA1xK,KAAAmjB,QAAAkP,GACA,EAEA4/I,UAAA,WACA,OAAAjyK,KAAAm3B,GACA,EAEAo8I,cAAA,SAAA/7J,GACA,aAAAA,GACAxX,KAAAk7E,MAAAt1E,IAAA,CAAAoH,MAAA,GAAAvG,KAAA,KAEA,eAAA+Q,GACAxX,KAAAk7E,MAAAt1E,IAAA,CAAAuI,OAAA,GAAAvH,OAAA,IAEA,EAEA4mK,cAAA,WACA,IAAAoG,EAAAC,EAAArnK,EAAAsnK,EAAAC,EACAC,EAAAh0K,KAAAmjB,QAAA+3D,MACAsoB,EAAAxjG,KAAAmjB,QACA3E,EAAAxe,KACAsnD,GAAAtnD,KAAAkxK,aAAA1tE,EAAAl8C,QACA2sH,EAAA,GAEAj0K,KAAAgzK,qBACAhzK,KAAAsgK,QAAAl+J,MAAA,SAAA3J,GACAo7K,GAAAr1J,EAAA3N,OAAApY,GAAA+lB,EAAAkzJ,cAAAlzJ,EAAAyzJ,YACAzzJ,EAAAkzJ,aAAA,IACAuC,EAAA,eAAAz1J,EAAAhH,YAAA,iBAAAq8J,EAAA,IACAz6K,EAAA4G,MAAA0kB,KAAA,KAAA4iC,EAAA,iBAAA2sH,EAAAzwE,EAAAl8C,UACA,IAAA9oC,EAAA2E,QAAA+3D,QACA,eAAA18D,EAAAhH,aACA,IAAA/e,GACA+lB,EAAA08D,MAAAx2D,KAAA,KAAA4iC,EAAA,kBACA7gD,KAAAotK,EAAA,KACArwE,EAAAl8C,SAEA,IAAA7uD,GACA+lB,EAAA08D,MAAA5zB,EAAA,kBACAt6C,MAAA6mK,EAAAD,EAAA,KACA,CACApsH,OAAA,EACAD,SAAAi8C,EAAAl8C,YAIA,IAAA7uD,GACA+lB,EAAA08D,MAAAx2D,KAAA,KAAA4iC,EAAA,kBACA1gD,OAAA,OACA48F,EAAAl8C,SAEA,IAAA7uD,GACA+lB,EAAA08D,MAAA5zB,EAAA,kBACAn5C,OAAA0lK,EAAAD,EAAA,KACA,CACApsH,OAAA,EACAD,SAAAi8C,EAAAl8C,YAKAssH,EAAAC,CACA,KAEArnK,EAAAxM,KAAAwM,QACAsnK,EAAA9zK,KAAA0xK,YACAqC,EAAA/zK,KAAAiyK,YACA4B,EAAAE,IAAAD,GACAtnK,EAAAsnK,IAAAC,EAAAD,GAAA,IACA,EACAG,EAAA,eAAAj0K,KAAAwX,YAAA,iBAAAq8J,EAAA,IACA7zK,KAAAu6J,OAAA71I,KAAA,KAAA4iC,EAAA,iBAAA2sH,EAAAzwE,EAAAl8C,SAEA,QAAA0sH,GAAA,eAAAh0K,KAAAwX,aACAxX,KAAAk7E,MAAAx2D,KAAA,KAAA4iC,EAAA,kBACAt6C,MAAA6mK,EAAA,KACArwE,EAAAl8C,SAEA,QAAA0sH,GAAA,eAAAh0K,KAAAwX,aACAxX,KAAAk7E,MAAAx2D,KAAA,KAAA4iC,EAAA,kBACAt6C,MAAA,IAAA6mK,EAAA,KACArwE,EAAAl8C,SAEA,QAAA0sH,GAAA,aAAAh0K,KAAAwX,aACAxX,KAAAk7E,MAAAx2D,KAAA,KAAA4iC,EAAA,kBACAn5C,OAAA0lK,EAAA,KACArwE,EAAAl8C,SAEA,QAAA0sH,GAAA,aAAAh0K,KAAAwX,aACAxX,KAAAk7E,MAAAx2D,KAAA,KAAA4iC,EAAA,kBACAn5C,OAAA,IAAA0lK,EAAA,KACArwE,EAAAl8C,SAGA,EAEAqqH,cAAA,CACA70B,QAAA,SAAAp8I,GACA,IAAAwzK,EAAAjB,EAAAtgH,EACAnxD,EAAApI,EAAAsH,EAAA2jC,QAAA/oC,KAAA,0BAEA,OAAAoF,EAAA4lD,SACA,KAAAltD,EAAAqqI,GAAAn9E,QAAAmzF,KACA,KAAArgJ,EAAAqqI,GAAAn9E,QAAAgzF,IACA,KAAAlgJ,EAAAqqI,GAAAn9E,QAAAszF,QACA,KAAAxgJ,EAAAqqI,GAAAn9E,QAAAqzF,UACA,KAAAvgJ,EAAAqqI,GAAAn9E,QAAA2zF,GACA,KAAA7gJ,EAAAqqI,GAAAn9E,QAAAwzF,MACA,KAAA1gJ,EAAAqqI,GAAAn9E,QAAA+yF,KACA,KAAAjgJ,EAAAqqI,GAAAn9E,QAAAozF,KAEA,GADAh5I,EAAA6jC,kBACAvkC,KAAAgxK,cACAhxK,KAAAgxK,aAAA,EACAhxK,KAAA+nI,UAAA3uI,EAAAsH,EAAA2jC,QAAA,yBAEA,IADArkC,KAAAoyK,OAAA1xK,EAAAc,IAEA,OAaA,OAPAmxD,EAAA3yD,KAAAmjB,QAAAwvC,KAEAuhH,EAAAjB,EADAjzK,KAAAgzK,qBACAhzK,KAAA6Q,OAAArP,GAEAxB,KAAAwM,QAGA9L,EAAA4lD,SACA,KAAAltD,EAAAqqI,GAAAn9E,QAAAmzF,KACAw5B,EAAAjzK,KAAA0xK,YACA,MACA,KAAAt4K,EAAAqqI,GAAAn9E,QAAAgzF,IACA25B,EAAAjzK,KAAAiyK,YACA,MACA,KAAA74K,EAAAqqI,GAAAn9E,QAAAszF,QACAq5B,EAAAjzK,KAAA6yK,gBACAqB,GAAAl0K,KAAAiyK,YAAAjyK,KAAA0xK,aAAA1xK,KAAA+wK,UAEA,MACA,KAAA33K,EAAAqqI,GAAAn9E,QAAAqzF,UACAs5B,EAAAjzK,KAAA6yK,gBACAqB,GAAAl0K,KAAAiyK,YAAAjyK,KAAA0xK,aAAA1xK,KAAA+wK,UACA,MACA,KAAA33K,EAAAqqI,GAAAn9E,QAAA2zF,GACA,KAAA7gJ,EAAAqqI,GAAAn9E,QAAAwzF,MACA,GAAAo6B,IAAAl0K,KAAAiyK,YACA,OAEAgB,EAAAjzK,KAAA6yK,gBAAAqB,EAAAvhH,GACA,MACA,KAAAv5D,EAAAqqI,GAAAn9E,QAAA+yF,KACA,KAAAjgJ,EAAAqqI,GAAAn9E,QAAAozF,KACA,GAAAw6B,IAAAl0K,KAAA0xK,YACA,OAEAuB,EAAAjzK,KAAA6yK,gBAAAqB,EAAAvhH,GAIA3yD,KAAAsyK,OAAA5xK,EAAAc,EAAAyxK,EACA,EACAnsB,MAAA,SAAApmJ,GACA,IAAAc,EAAApI,EAAAsH,EAAA2jC,QAAA/oC,KAAA,0BAEA0E,KAAAgxK,cACAhxK,KAAAgxK,aAAA,EACAhxK,KAAAuyK,MAAA7xK,EAAAc,GACAxB,KAAAqiJ,QAAA3hJ,EAAAc,GACAxB,KAAA6mI,aAAAztI,EAAAsH,EAAA2jC,QAAA,wBAEA,KAsBAjrC,EAAA6qI,OAAA,cAAA7qI,EAAAqqI,GAAAu2B,MAAA,CACAp9I,QAAA,SACAooH,kBAAA,OACA39C,OAAA,EACAlkE,QAAA,CACAtc,SAAA,SACAqzJ,MAAA,EACAia,aAAA,EACA/Z,aAAA,EACAl4G,OAAA,OACAm4G,UAAA,EACA+Z,aAAA,EACAC,sBAAA,EACAC,iBAAA,EACAha,MAAA,EACAC,QAAA,EACAC,OAAA,WACAlgI,MAAA,MACA8C,SAAA,EACA0jD,aAAA,EACA65E,QAAA,EACAta,QAAA,EACAwa,kBAAA,GACAC,YAAA,GACA3nI,MAAA,UACAg4I,UAAA,YACA5mK,OAAA,IAGA22I,SAAA,KACAq5B,WAAA,KACAnzB,OAAA,KACAgqB,WAAA,KACAC,IAAA,KACArgE,KAAA,KACAp6E,QAAA,KACA73B,OAAA,KACA2zH,KAAA,KACAxrG,MAAA,KACAwD,KAAA,KACAgvB,OAAA,MAGA8gI,YAAA,SAAApwK,EAAAqoK,EAAAnoK,GACA,OAAAF,GAAAqoK,GAAAroK,EAAAqoK,EAAAnoK,CACA,EAEAmwK,YAAA,SAAAtiK,GACA,mBAAAhY,KAAAgY,EAAAvM,IAAA,WACA,oBAAAzL,KAAAgY,EAAAvM,IAAA,WACA,EAEA4gI,QAAA,WACAxmI,KAAA0+J,eAAA,GACA1+J,KAAA+nI,UAAA,eAGA/nI,KAAA24I,UAGA34I,KAAAq8C,OAAAr8C,KAAA4L,QAAAywC,SAGAr8C,KAAAu4J,aAEAv4J,KAAAm7J,sBAGAn7J,KAAAqnF,OAAA,CAEA,EAEA4/C,WAAA,SAAAr2H,EAAApE,GACAxM,KAAA2/E,OAAA/uE,EAAApE,GAEA,WAAAoE,GACA5Q,KAAAm7J,qBAEA,EAEAA,oBAAA,WACA,IAAA38I,EAAAxe,KACAA,KAAA6mI,aAAA7mI,KAAA4L,QAAAtK,KAAA,6CACAlI,EAAAgJ,KAAApC,KAAAs6B,OAAA,WACA9b,EAAAupH,UACA/nI,KAAAT,SAAA4jB,QAAAo3I,OACAv6J,KAAAmS,KAAA7Q,KAAAtB,KAAAT,SAAA4jB,QAAAo3I,QACAv6J,KAAAmS,KACA,qBAEA,GACA,EAEAy0H,SAAA,WACA5mI,KAAA04J,gBAEA,QAAAjgK,EAAAuH,KAAAs6B,MAAA5hC,OAAA,EAAAD,GAAA,EAAAA,IACAuH,KAAAs6B,MAAA7hC,GAAA0Z,KAAA20H,WAAA9mI,KAAAilI,WAAA,SAGA,OAAAjlI,IACA,EAEAm5J,cAAA,SAAAz4J,EAAAg0K,GACA,IAAA9V,EAAA,KACA+V,GAAA,EACAn2J,EAAAxe,KAEA,OAAAA,KAAA40K,aAIA50K,KAAAmjB,QAAA2iH,UAAA,WAAA9lI,KAAAmjB,QAAAzd,OAKA1F,KAAA60K,cAAAn0K,GAGAtH,EAAAsH,EAAA2jC,QAAAg2G,UAAAj4I,MAAA,WACA,GAAAhJ,EAAAkC,KAAA0E,KAAAwe,EAAAymH,WAAA,WAAAzmH,EAEA,OADAogJ,EAAAxlK,EAAA4G,OACA,CAEA,IACA5G,EAAAkC,KAAAoF,EAAA2jC,OAAA7lB,EAAAymH,WAAA,WAAAzmH,IACAogJ,EAAAxlK,EAAAsH,EAAA2jC,WAGAu6H,MAGA5+J,KAAAmjB,QAAAo3I,SAAAma,IACAt7K,EAAA4G,KAAAmjB,QAAAo3I,OAAAqE,GAAAt9J,KAAA,KAAAqhC,UAAAvgC,MAAA,WACApC,OAAAU,EAAA2jC,SACAswI,GAAA,EAEA,KACAA,MAKA30K,KAAA4+J,cACA5+J,KAAA80K,4BACA,KAEA,EAEAtb,YAAA,SAAA94J,EAAAg0K,EAAAK,GAEA,IAAAt8K,EAAA03B,EACAqzE,EAAAxjG,KAAAmjB,QA0HA,GAxHAnjB,KAAAg1K,iBAAAh1K,KAIAA,KAAA06J,mBAGA16J,KAAA6G,SAAAzN,EAAA,WAAAoqG,EAAA38F,SACA28F,EAAA38F,SACA7G,KAAA4+J,YAAA/4J,UAGA7F,KAAAw6J,OAAAx6J,KAAA27J,cAAAj7J,GAGAV,KAAA47J,0BAQA57J,KAAA87J,gBAGA97J,KAAAq8C,OAAAr8C,KAAA4+J,YAAAviH,SACAr8C,KAAAq8C,OAAA,CACA31C,IAAA1G,KAAAq8C,OAAA31C,IAAA1G,KAAA68J,QAAAn2J,IACAD,KAAAzG,KAAAq8C,OAAA51C,KAAAzG,KAAA68J,QAAAp2J,MAGArN,EAAAuG,OAAAK,KAAAq8C,OAAA,CACA8N,MAAA,CACA1jD,KAAA/F,EAAA6K,MAAAvL,KAAAq8C,OAAA51C,KACAC,IAAAhG,EAAA8K,MAAAxL,KAAAq8C,OAAA31C,KAKAyqH,SAAAnxH,KAAA+8J,uBAMA/8J,KAAAw6J,OAAA50J,IAAA,uBACA5F,KAAAk0I,YAAAl0I,KAAAw6J,OAAA50J,IAAA,YAGA49F,EAAA62D,UACAr6J,KAAAu8J,wBAAA/4D,EAAA62D,UAIAr6J,KAAAi1K,YAAA,CACAh7G,KAAAj6D,KAAA4+J,YAAA3kG,OAAA,GACAp0D,OAAA7F,KAAA4+J,YAAA/4J,SAAA,IAKA7F,KAAAw6J,OAAA,KAAAx6J,KAAA4+J,YAAA,IACA5+J,KAAA4+J,YAAAp1J,OAIAxJ,KAAAk1K,qBAGAl1K,KAAAu6I,aAAAv6I,KAAA8gF,YAAAy5D,eAEAnhJ,EAAAuG,OAAAK,KAAAq8C,OAAA,CACAx2C,OAAA7F,KAAA88J,qBAIAt5D,EAAA42D,aACAp6J,KAAAw8J,kBAGAh5D,EAAAthD,QAAA,SAAAshD,EAAAthD,SACA/xB,EAAAnwB,KAAA9H,SAAAoJ,KAAA,QAEAtB,KAAAm1K,kBACA/7K,EAAA,qBAAAoqG,EAAAthD,OAAA,0BAAAr7C,SAAAspB,IAMAqzE,EAAAj/F,SACAvE,KAAAw6J,OAAA50J,IAAA,YACA5F,KAAAo1K,cAAAp1K,KAAAw6J,OAAA50J,IAAA,WAEA5F,KAAAw6J,OAAA50J,IAAA,SAAA49F,EAAAj/F,SAGAi/F,EAAApmE,UACAp9B,KAAAw6J,OAAA50J,IAAA,aACA5F,KAAAq1K,eAAAr1K,KAAAw6J,OAAA50J,IAAA,YAEA5F,KAAAw6J,OAAA50J,IAAA,UAAA49F,EAAApmE,UAIAp9B,KAAAu6I,aAAA,KAAAv6I,KAAA9H,SAAA,IACA,SAAA8H,KAAAu6I,aAAA,GAAAppG,UACAnxC,KAAAk/J,eAAAl/J,KAAAu6I,aAAAl+F,UAIAr8C,KAAA0mI,SAAA,QAAAhmI,EAAAV,KAAAk9J,WAGAl9J,KAAAs1K,4BACAt1K,KAAA47J,2BAIAmZ,EACA,IAAAt8K,EAAAuH,KAAAu1K,WAAA78K,OAAA,EAAAD,GAAA,EAAAA,IACAuH,KAAAu1K,WAAA98K,GAAAiuI,SAAA,WAAAhmI,EAAAV,KAAAk9J,QAAAl9J,OAiCA,OA5BA5G,EAAAqqI,GAAAo4B,YACAziK,EAAAqqI,GAAAo4B,UAAAt6J,QAAAvB,MAGA5G,EAAAqqI,GAAAo4B,YAAAr4D,EAAAk5D,eACAtjK,EAAAqqI,GAAAo4B,UAAAc,eAAA38J,KAAAU,GAGAV,KAAAgpD,UAAA,EAEAhpD,KAAA+nI,UAAA/nI,KAAAw6J,OAAA,sBAGAx6J,KAAAw6J,OAAA30J,SAAAy+B,GAAAtkC,KAAA6G,YACA7G,KAAAw6J,OAAA93B,SAAA77H,SAAA7G,KAAA6G,UAGA7G,KAAAq8C,OAAAx2C,OAAA7F,KAAA88J,oBAIA98J,KAAAmE,SAAAnE,KAAAm8J,iBAAAn8J,KAAAo8J,kBAAA17J,GACAV,KAAAq8J,cAAA37J,EAAA6K,MACAvL,KAAAs8J,cAAA57J,EAAA8K,MACAxL,KAAAw1K,gBAAAx1K,KAAAi8J,YAAAj8J,KAAAi9J,mBAAA,YAEAj9J,KAAA25J,WAAAj5J,IAEA,CAEA,EAEA+0K,QAAA,SAAA/0K,GACA,IAAA8iG,EAAAxjG,KAAAmjB,QACAg8I,GAAA,EA6CA,OA3CAn/J,KAAAu6I,aAAA,KAAAv6I,KAAA9H,SAAA,IACA,SAAA8H,KAAAu6I,aAAA,GAAAppG,SAEAnxC,KAAAk/J,eAAAx4J,IAAA1G,KAAAu6I,aAAA,GAAA72G,aACAhjC,EAAA8K,MAAAg4F,EAAAq3D,kBACA76J,KAAAu6I,aAAA,GAAAzsI,UACAqxJ,EAAAn/J,KAAAu6I,aAAA,GAAAzsI,UAAA01F,EAAAs3D,YACAp6J,EAAA8K,MAAAxL,KAAAk/J,eAAAx4J,IAAA88F,EAAAq3D,oBACA76J,KAAAu6I,aAAA,GAAAzsI,UACAqxJ,EAAAn/J,KAAAu6I,aAAA,GAAAzsI,UAAA01F,EAAAs3D,aAGA96J,KAAAk/J,eAAAz4J,KAAAzG,KAAAu6I,aAAA,GAAA32G,YACAljC,EAAA6K,MAAAi4F,EAAAq3D,kBACA76J,KAAAu6I,aAAA,GAAAn0G,WAAA+4H,EACAn/J,KAAAu6I,aAAA,GAAAn0G,WAAAo9D,EAAAs3D,YACAp6J,EAAA6K,MAAAvL,KAAAk/J,eAAAz4J,KAAA+8F,EAAAq3D,oBACA76J,KAAAu6I,aAAA,GAAAn0G,WAAA+4H,EACAn/J,KAAAu6I,aAAA,GAAAn0G,WAAAo9D,EAAAs3D,eAKAp6J,EAAA8K,MAAAxL,KAAA9H,SAAA4V,YAAA01F,EAAAq3D,kBACAsE,EAAAn/J,KAAA9H,SAAA4V,UAAA9N,KAAA9H,SAAA4V,YAAA01F,EAAAs3D,aACA96J,KAAAnG,OAAAsU,UAAAzN,EAAA8K,MAAAxL,KAAA9H,SAAA4V,aACA01F,EAAAq3D,oBACAsE,EAAAn/J,KAAA9H,SAAA4V,UAAA9N,KAAA9H,SAAA4V,YAAA01F,EAAAs3D,cAGAp6J,EAAA6K,MAAAvL,KAAA9H,SAAAkuC,aAAAo9D,EAAAq3D,kBACAsE,EAAAn/J,KAAA9H,SAAAkuC,WACApmC,KAAA9H,SAAAkuC,aAAAo9D,EAAAs3D,aAEA96J,KAAAnG,OAAAmT,SAAAtM,EAAA6K,MAAAvL,KAAA9H,SAAAkuC,cACAo9D,EAAAq3D,oBACAsE,EAAAn/J,KAAA9H,SAAAkuC,WACApmC,KAAA9H,SAAAkuC,aAAAo9D,EAAAs3D,eAMAqE,CACA,EAEAxF,WAAA,SAAAj5J,GACA,IAAAjI,EAAA0Z,EAAAujK,EAAAtoD,EACA5pB,EAAAxjG,KAAAmjB,QAiCA,IA9BAnjB,KAAAmE,SAAAnE,KAAAo8J,kBAAA17J,GACAV,KAAAi8J,YAAAj8J,KAAAi9J,mBAAA,YAGAj9J,KAAAmjB,QAAA+2I,MAAA,MAAAl6J,KAAAmjB,QAAA+2I,OACAl6J,KAAAw6J,OAAA,GAAAv+H,MAAAx1B,KAAAzG,KAAAmE,SAAAsC,KAAA,MAEAzG,KAAAmjB,QAAA+2I,MAAA,MAAAl6J,KAAAmjB,QAAA+2I,OACAl6J,KAAAw6J,OAAA,GAAAv+H,MAAAv1B,IAAA1G,KAAAmE,SAAAuC,IAAA,MAIA88F,EAAA68C,SACA,IAAArgJ,KAAAy1K,QAAA/0K,KAGAV,KAAA21K,uBAAA,GAEAv8K,EAAAqqI,GAAAo4B,YAAAr4D,EAAAk5D,eACAtjK,EAAAqqI,GAAAo4B,UAAAc,eAAA38J,KAAAU,IAKAV,KAAA41K,cAAA,CACA7pC,SAAA/rI,KAAA61K,4BACA/pC,WAAA9rI,KAAA81K,+BAIAr9K,EAAAuH,KAAAs6B,MAAA5hC,OAAA,EAAAD,GAAA,EAAAA,IAMA,GAFAi9K,GADAvjK,EAAAnS,KAAAs6B,MAAA7hC,IACA0Z,KAAA,IACAi7G,EAAAptH,KAAA+1K,uBAAA5jK,KAYAA,EAAA5S,WAAAS,KAAAg1K,oBAOAU,IAAA11K,KAAA4+J,YAAA,IACA5+J,KAAA8gF,YAAA,IAAAssC,EACA,sBAAAsoD,GACAt8K,EAAA2I,SAAA/B,KAAA8gF,YAAA,GAAA40F,IACA,iBAAA11K,KAAAmjB,QAAAzd,MACAtM,EAAA2I,SAAA/B,KAAA4L,QAAA,GAAA8pK,IAGA,CAIA,GAFA11K,KAAAgzE,UAAA,IAAAo6C,EAAA,YAEA,YAAAptH,KAAAmjB,QAAAgoJ,YACAnrK,KAAAg2K,qBAAA7jK,GAGA,MAFAnS,KAAAi2K,WAAAv1K,EAAAyR,GAKAnS,KAAA0mI,SAAA,SAAAhmI,EAAAV,KAAAk9J,WACA,KACA,CAeA,OAXAl9J,KAAAk2K,mBAAAx1K,GAGAtH,EAAAqqI,GAAAo4B,WACAziK,EAAAqqI,GAAAo4B,UAAA1yG,KAAAnpD,KAAAU,GAIAV,KAAA0mI,SAAA,OAAAhmI,EAAAV,KAAAk9J,WAEAl9J,KAAAw1K,gBAAAx1K,KAAAi8J,aACA,CAEA,EAEArC,WAAA,SAAAl5J,EAAAs8J,GAEA,GAAAt8J,EAAA,CASA,GAJAtH,EAAAqqI,GAAAo4B,YAAA77J,KAAAmjB,QAAAu5I,eACAtjK,EAAAqqI,GAAAo4B,UAAAj6J,KAAA5B,KAAAU,GAGAV,KAAAmjB,QAAAw3I,OAAA,CACA,IAAAn8I,EAAAxe,KACA2vI,EAAA3vI,KAAA8gF,YAAAzkC,SACA69G,EAAAl6J,KAAAmjB,QAAA+2I,KACAnxJ,EAAA,GAEAmxJ,GAAA,MAAAA,IACAnxJ,EAAAtC,KAAAkpI,EAAAlpI,KAAAzG,KAAAq8C,OAAAx2C,OAAAY,KAAAzG,KAAA68J,QAAAp2J,MACAzG,KAAA+7J,aAAA,KAAA/7J,KAAA9H,SAAA,GAAAi4B,KACA,EACAnwB,KAAA+7J,aAAA,GAAA31H,aAGA8zH,GAAA,MAAAA,IACAnxJ,EAAArC,IAAAipI,EAAAjpI,IAAA1G,KAAAq8C,OAAAx2C,OAAAa,IAAA1G,KAAA68J,QAAAn2J,KACA1G,KAAA+7J,aAAA,KAAA/7J,KAAA9H,SAAA,GAAAi4B,KACA,EACAnwB,KAAA+7J,aAAA,GAAAjuJ,YAGA9N,KAAA40K,WAAA,EACAx7K,EAAA4G,KAAAw6J,QAAAlzG,QACAv+C,EACAmQ,SAAAlZ,KAAAmjB,QAAAw3I,OAAA,UACA,WACAn8I,EAAAi+I,OAAA/7J,EACA,GAEA,MACAV,KAAAy8J,OAAA/7J,EAAAs8J,GAGA,QAvCA,CAyCA,EAEA1sI,OAAA,WAEA,GAAAtwB,KAAAgpD,SAAA,CAEAhpD,KAAA+4J,SAAA,IAAA3/J,EAAA2yD,MAAA,WAAA1nB,OAAA,QAEA,aAAArkC,KAAAmjB,QAAAq3I,QACAx6J,KAAA4+J,YAAAh5J,IAAA5F,KAAAs+J,YACAt+J,KAAA6mI,aAAA7mI,KAAA4+J,YAAA,uBAEA5+J,KAAA4+J,YAAA91J,OAIA,QAAArQ,EAAAuH,KAAAu1K,WAAA78K,OAAA,EAAAD,GAAA,EAAAA,IACAuH,KAAAu1K,WAAA98K,GAAAiuI,SAAA,kBAAA1mI,KAAAk9J,QAAAl9J,OACAA,KAAAu1K,WAAA98K,GAAAimK,eAAA1zD,OACAhrG,KAAAu1K,WAAA98K,GAAAiuI,SAAA,WAAA1mI,KAAAk9J,QAAAl9J,OACAA,KAAAu1K,WAAA98K,GAAAimK,eAAA1zD,KAAA,EAIA,CA4BA,OA1BAhrG,KAAA8gF,cAIA9gF,KAAA8gF,YAAA,GAAA3vD,YACAnxB,KAAA8gF,YAAA,GAAA3vD,WAAAd,YAAArwB,KAAA8gF,YAAA,IAEA,aAAA9gF,KAAAmjB,QAAAq3I,QAAAx6J,KAAAw6J,QACAx6J,KAAAw6J,OAAA,GAAArpI,YACAnxB,KAAAw6J,OAAAzhK,SAGAK,EAAAuG,OAAAK,KAAA,CACAw6J,OAAA,KACAxxG,UAAA,EACA4rH,WAAA,EACAuB,aAAA,OAGAn2K,KAAAi1K,YAAAh7G,KACA7gE,EAAA4G,KAAAi1K,YAAAh7G,MAAAkwB,MAAAnqF,KAAA4+J,aAEAxlK,EAAA4G,KAAAi1K,YAAApvK,QAAAwxC,QAAAr3C,KAAA4+J,cAIA5+J,IAEA,EAEAo2K,UAAA,SAAA5yE,GAEA,IAAAlpE,EAAAt6B,KAAAq2K,kBAAA7yE,KAAAzkF,WACA6xB,EAAA,GAiBA,OAhBA4yD,KAAA,GAEApqG,EAAAkhC,GAAAl4B,MAAA,WACA,IAAA0jB,GAAA1sB,EAAAoqG,EAAArxF,MAAAnS,MAAAioC,KAAAu7D,EAAA8yE,WAAA,WACA5jK,MAAA8wF,EAAA+yE,YAAA,kBACAzwJ,GACA8qB,EAAA/vC,MACA2iG,EAAA5yF,KAAAkV,EAAA,SACA,KAAA09E,EAAA5yF,KAAA4yF,EAAA+yE,WAAAzwJ,EAAA,GAAAA,EAAA,IAEA,KAEA8qB,EAAAl4C,QAAA8qG,EAAA5yF,KACAggC,EAAA/vC,KAAA2iG,EAAA5yF,IAAA,KAGAggC,EAAA59B,KAAA,IAEA,EAEAwjK,QAAA,SAAAhzE,GAEA,IAAAlpE,EAAAt6B,KAAAq2K,kBAAA7yE,KAAAzkF,WACA8iG,EAAA,GAOA,OALAre,KAAA,GAEAlpE,EAAAl4B,MAAA,WACAy/G,EAAAhhH,KAAAzH,EAAAoqG,EAAArxF,MAAAnS,MAAAioC,KAAAu7D,EAAA8yE,WAAA,UACA,IACAz0D,CAEA,EAGA48C,gBAAA,SAAAtsJ,GAEA,IAAAipF,EAAAp7F,KAAAi8J,YAAAx1J,KACAi5J,EAAAtkE,EAAAp7F,KAAAu9J,kBAAAvwJ,MACAsuF,EAAAt7F,KAAAi8J,YAAAv1J,IACAi5J,EAAArkE,EAAAt7F,KAAAu9J,kBAAApvJ,OACA4lD,EAAA5hD,EAAA1L,KACAijC,EAAAqqB,EAAA5hD,EAAAnF,MACAmlD,EAAAhgD,EAAAzL,IACAgrD,EAAAS,EAAAhgD,EAAAhE,OACAsoK,EAAAz2K,KAAAq8C,OAAA8N,MAAAzjD,IACAgwK,EAAA12K,KAAAq8C,OAAA8N,MAAA1jD,KACAkwK,EAAA,MAAA32K,KAAAmjB,QAAA+2I,MAAA5+D,EAAAm7E,EAAAtkH,GACAmpC,EAAAm7E,EAAA/kH,EACAklH,EAAA,MAAA52K,KAAAmjB,QAAA+2I,MAAA9+D,EAAAs7E,EAAA3iH,GACAqnC,EAAAs7E,EAAAhtI,EACAmtI,EAAAF,GAAAC,EAEA,kBAAA52K,KAAAmjB,QAAAgoJ,WACAnrK,KAAAmjB,QAAA2zJ,2BACA,YAAA92K,KAAAmjB,QAAAgoJ,WACAnrK,KAAAu9J,kBAAAv9J,KAAA+2K,SAAA,kBACA5kK,EAAAnS,KAAA+2K,SAAA,kBAEAF,EAGA9iH,EAAAqnC,EAAAp7F,KAAAu9J,kBAAAvwJ,MAAA,GACA0yJ,EAAA1/J,KAAAu9J,kBAAAvwJ,MAAA,EAAA08B,GACAyoB,EAAAmpC,EAAAt7F,KAAAu9J,kBAAApvJ,OAAA,GACAwxJ,EAAA3/J,KAAAu9J,kBAAApvJ,OAAA,EAAAujD,CAGA,EAEAqkH,uBAAA,SAAA5jK,GACA,IAAA6kK,EAAAC,EACAN,EAAA,MAAA32K,KAAAmjB,QAAA+2I,MACAl6J,KAAAw0K,YACAx0K,KAAAi8J,YAAAv1J,IAAA1G,KAAAq8C,OAAA8N,MAAAzjD,IAAAyL,EAAAzL,IAAAyL,EAAAhE,QACAyoK,EAAA,MAAA52K,KAAAmjB,QAAA+2I,MACAl6J,KAAAw0K,YACAx0K,KAAAi8J,YAAAx1J,KAAAzG,KAAAq8C,OAAA8N,MAAA1jD,KAAA0L,EAAA1L,KAAA0L,EAAAnF,OAGA,SAFA2pK,IAAAC,KAMAI,EAAAh3K,KAAA41K,cAAA7pC,SACAkrC,EAAAj3K,KAAA41K,cAAA9pC,WAEA9rI,KAAA+2K,SACA,UAAAE,GAAA,SAAAD,EAAA,IACAA,IAAA,SAAAA,EAAA,KAEA,EAEAhB,qBAAA,SAAA7jK,GAEA,IAAA+kK,EAAAl3K,KAAAw0K,YAAAx0K,KAAAi8J,YAAAv1J,IACA1G,KAAAq8C,OAAA8N,MAAAzjD,IAAAyL,EAAAzL,IAAAyL,EAAAhE,OAAA,EAAAgE,EAAAhE,QACAgpK,EAAAn3K,KAAAw0K,YAAAx0K,KAAAi8J,YAAAx1J,KACAzG,KAAAq8C,OAAA8N,MAAA1jD,KAAA0L,EAAA1L,KAAA0L,EAAAnF,MAAA,EAAAmF,EAAAnF,OACAgqK,EAAAh3K,KAAA41K,cAAA7pC,SACAkrC,EAAAj3K,KAAA41K,cAAA9pC,WAEA,OAAA9rI,KAAA+2K,UAAAE,EACA,UAAAA,GAAAE,GACA,SAAAF,IAAAE,EAEAH,IAAA,SAAAA,GAAAE,GACA,OAAAF,IAAAE,EAGA,EAEArB,0BAAA,WACA,IAAAlwH,EAAA3lD,KAAAi8J,YAAAv1J,IAAA1G,KAAAw1K,gBAAA9uK,IACA,WAAAi/C,MAAA,cACA,EAEAmwH,4BAAA,WACA,IAAAnwH,EAAA3lD,KAAAi8J,YAAAx1J,KAAAzG,KAAAw1K,gBAAA/uK,KACA,WAAAk/C,MAAA,iBACA,EAEAgzF,QAAA,SAAAj4I,GAIA,OAHAV,KAAA60K,cAAAn0K,GACAV,KAAAm7J,sBACAn7J,KAAA06J,mBACA16J,IACA,EAEAo3K,aAAA,WACA,IAAAj0J,EAAAnjB,KAAAmjB,QACA,OAAAA,EAAAgxJ,YAAAl0K,cAAA0yC,OACA,CAAAxvB,EAAAgxJ,aACAhxJ,EAAAgxJ,WACA,EAEAkC,kBAAA,SAAAt3J,GAEA,IAAAtmB,EAAA07B,EAAAw7G,EAAAxZ,EACA77F,EAAA,GACAsQ,EAAA,GACAupI,EAAAn0K,KAAAo3K,eAEA,GAAAjD,GAAAp1J,EACA,IAAAtmB,EAAA07K,EAAAz7K,OAAA,EAAAD,GAAA,EAAAA,IAEA,IAAA07B,GADAw7G,EAAAv2I,EAAA+6K,EAAA17K,GAAAuH,KAAA9H,SAAA,KACAQ,OAAA,EAAAy7B,GAAA,EAAAA,KACAgiG,EAAA/8H,EAAAkC,KAAAq0I,EAAAx7G,GAAAn0B,KAAAklI,kBACA/O,IAAAn2H,OAAAm2H,EAAAhzG,QAAA2iH,UACAl7F,EAAA/pC,KAAA,oBAAAs1H,EAAAhzG,QAAAmX,MACA67F,EAAAhzG,QAAAmX,MAAAtV,KAAAmxG,EAAAvqH,SACAxS,EAAA+8H,EAAAhzG,QAAAmX,MAAA67F,EAAAvqH,SACAg8H,IAAA,uBACAA,IAAA,4BAAAzR,IAaA,SAAAkhD,IACA/8I,EAAAz5B,KAAAb,KACA,CACA,IAVA4qC,EAAA/pC,KAAA,oBAAAb,KAAAmjB,QAAAmX,MACAt6B,KAAAmjB,QAAAmX,MACAtV,KAAAhlB,KAAA4L,QAAA,MAAAuX,QAAAnjB,KAAAmjB,QAAAhR,KAAAnS,KAAA4+J,cACAxlK,EAAA4G,KAAAmjB,QAAAmX,MAAAt6B,KAAA4L,SACAg8H,IAAA,uBACAA,IAAA,4BAAA5nI,OAKAvH,EAAAmyC,EAAAlyC,OAAA,EAAAD,GAAA,EAAAA,IACAmyC,EAAAnyC,GAAA,GAAA2J,KAAAi1K,GAGA,OAAAj+K,EAAAkhC,EAEA,EAEAw6I,yBAAA,WAEA,IAAAtgC,EAAAx0I,KAAA4+J,YAAAt9J,KAAA,SAAAtB,KAAAilI,WAAA,UAEAjlI,KAAAs6B,MAAAlhC,EAAAkrJ,KAAAtkJ,KAAAs6B,OAAA,SAAAnoB,GACA,QAAAgiB,EAAA,EAAAA,EAAAqgH,EAAA97I,OAAAy7B,IACA,GAAAqgH,EAAArgH,KAAAhiB,OAAA,GACA,SAGA,QACA,GAEA,EAEA0iK,cAAA,SAAAn0K,GAEAV,KAAAs6B,MAAA,GACAt6B,KAAAu1K,WAAA,CAAAv1K,MAEA,IAAAvH,EAAA07B,EAAAw7G,EAAAxZ,EAAA1/G,EAAA6gK,EAAAnlK,EAAAolK,EACAj9I,EAAAt6B,KAAAs6B,MACAsQ,EAAA,qBAAA5qC,KAAAmjB,QAAAmX,MACAt6B,KAAAmjB,QAAAmX,MAAAtV,KAAAhlB,KAAA4L,QAAA,GAAAlL,EAAA,CAAAyR,KAAAnS,KAAA4+J,cACAxlK,EAAA4G,KAAAmjB,QAAAmX,MAAAt6B,KAAA4L,SAAA5L,OACAm0K,EAAAn0K,KAAAo3K,eAGA,GAAAjD,GAAAn0K,KAAAqnF,MACA,IAAA5uF,EAAA07K,EAAAz7K,OAAA,EAAAD,GAAA,EAAAA,IAEA,IAAA07B,GADAw7G,EAAAv2I,EAAA+6K,EAAA17K,GAAAuH,KAAA9H,SAAA,KACAQ,OAAA,EAAAy7B,GAAA,EAAAA,KACAgiG,EAAA/8H,EAAAkC,KAAAq0I,EAAAx7G,GAAAn0B,KAAAklI,kBACA/O,IAAAn2H,OAAAm2H,EAAAhzG,QAAA2iH,WACAl7F,EAAA/pC,KAAA,oBAAAs1H,EAAAhzG,QAAAmX,MACA67F,EAAAhzG,QAAAmX,MACAtV,KAAAmxG,EAAAvqH,QAAA,GAAAlL,EAAA,CAAAyR,KAAAnS,KAAA4+J,cACAxlK,EAAA+8H,EAAAhzG,QAAAmX,MAAA67F,EAAAvqH,SAAAuqH,IACAn2H,KAAAu1K,WAAA10K,KAAAs1H,IAMA,IAAA19H,EAAAmyC,EAAAlyC,OAAA,EAAAD,GAAA,EAAAA,IAIA,IAHAge,EAAAm0B,EAAAnyC,GAAA,GAGA07B,EAAA,EAAAojJ,GAFAD,EAAA1sI,EAAAnyC,GAAA,IAEAC,OAAAy7B,EAAAojJ,EAAApjJ,KACAhiB,EAAA/Y,EAAAk+K,EAAAnjJ,KAGA74B,KAAA0E,KAAAilI,WAAA,QAAAxuH,GAEA6jB,EAAAz5B,KAAA,CACAsR,OACA5S,SAAAkX,EACAzJ,MAAA,EAAAmB,OAAA,EACA1H,KAAA,EAAAC,IAAA,GAKA,EAEAivK,sBAAA,SAAA6B,GACA,IAAA/+K,EAAA0Z,EAAAggD,EAAAN,EAEA,IAAAp5D,EAAAuH,KAAAs6B,MAAA5hC,OAAA,EAAAD,GAAA,EAAAA,IACA0Z,EAAAnS,KAAAs6B,MAAA7hC,GAGAuH,KAAAg1K,kBAAA7iK,EAAA5S,WAAAS,KAAAg1K,kBACA7iK,OAAA,KAAAnS,KAAA4+J,YAAA,KAIAzsG,EAAAnyD,KAAAmjB,QAAAs0J,iBACAr+K,EAAA4G,KAAAmjB,QAAAs0J,iBAAAtlK,QACAA,OAEAqlK,IACArlK,EAAAnF,MAAAmlD,EAAAv6C,aACAzF,EAAAhE,OAAAgkD,EAAAt6C,eAGAg6C,EAAAM,EAAA9V,SACAlqC,EAAA1L,KAAAorD,EAAAprD,KACA0L,EAAAzL,IAAAmrD,EAAAnrD,IAEA,EAEAg0J,iBAAA,SAAA8c,GAeA,IAAA/+K,EAAAo5D,EAEA,GAdA7xD,KAAA+2K,WAAA/2K,KAAAs6B,MAAA5hC,SACA,MAAAsH,KAAAmjB,QAAA+2I,MAAAl6J,KAAAy0K,YAAAz0K,KAAAs6B,MAAA,GAAAnoB,OAKAnS,KAAA+7J,cAAA/7J,KAAAw6J,SACAx6J,KAAAq8C,OAAAx2C,OAAA7F,KAAA88J,oBAGA98J,KAAA21K,sBAAA6B,GAIAx3K,KAAAmjB,QAAAipJ,QAAApsK,KAAAmjB,QAAAipJ,OAAAsL,kBACA13K,KAAAmjB,QAAAipJ,OAAAsL,kBAAA1yJ,KAAAhlB,WAEA,IAAAvH,EAAAuH,KAAAu1K,WAAA78K,OAAA,EAAAD,GAAA,EAAAA,IACAo5D,EAAA7xD,KAAAu1K,WAAA98K,GAAAmT,QAAAywC,SACAr8C,KAAAu1K,WAAA98K,GAAAimK,eAAAj4J,KAAAorD,EAAAprD,KACAzG,KAAAu1K,WAAA98K,GAAAimK,eAAAh4J,IAAAmrD,EAAAnrD,IACA1G,KAAAu1K,WAAA98K,GAAAimK,eAAA1xJ,MACAhN,KAAAu1K,WAAA98K,GAAAmT,QAAAgM,aACA5X,KAAAu1K,WAAA98K,GAAAimK,eAAAvwJ,OACAnO,KAAAu1K,WAAA98K,GAAAmT,QAAAiM,cAIA,OAAA7X,IACA,EAEAk1K,mBAAA,SAAA12J,GAEA,IAAAshB,EAAAqnD,EACAqc,GAFAhlF,KAAAxe,MAEAmjB,QAEAqgF,EAAA1iB,aAAA0iB,EAAA1iB,YAAA7gF,cAAA0yC,SACA7S,EAAA0jE,EAAA1iB,YACAqG,EAAA3oE,EAAAogJ,YAAA,GAAAz3E,SAAA7sF,cACAkpG,EAAA1iB,YAAA,CACAl1E,QAAA,WAEA,IAAAA,EAAAxS,EAAA,IAAA+tF,EAAA,IAAA3oE,EAAAtmB,SAAA,IAqBA,OAnBAsmB,EAAAupH,UAAAn8H,EAAA,0BACAk0B,GAAAthB,EAAAogJ,YAAA,GAAA9+H,WACA+mG,aAAAj7H,EAAA,sBAEA,UAAAu7E,EACA3oE,EAAAm5J,qBACAn5J,EAAAogJ,YAAAt9J,KAAA,MAAAy5C,GAAA,GACA3hD,EAAA,OAAAolB,EAAAtmB,SAAA,IAAA2O,SAAA+E,IAEA,OAAAu7E,EACA3oE,EAAAm5J,qBAAAn5J,EAAAogJ,YAAAhzJ,GACA,QAAAu7E,GACAv7E,EAAAq8B,KAAA,MAAAzpB,EAAAogJ,YAAA32H,KAAA,QAGAnI,GACAl0B,EAAAhG,IAAA,uBAGAgG,CACA,EACA8nC,OAAA,SAAApQ,EAAAuuB,GAMA/xB,IAAA0jE,EAAA6wE,uBAWAxiH,EAAA1jD,YAAAq1F,EAAA6wE,sBACA,UAAAltF,GAAA,OAAAA,IACAt1B,EAAA1jD,OACAqQ,EAAAogJ,YAAAhmJ,cACAM,SAAAsF,EAAAogJ,YAAAh5J,IAAA,qBACAsT,SAAAsF,EAAAogJ,YAAAh5J,IAAA,yBAEAisD,EAAA7kD,SACA6kD,EAAA7kD,MACAwR,EAAAogJ,YAAAlmJ,aACAQ,SAAAsF,EAAAogJ,YAAAh5J,IAAA,sBACAsT,SAAAsF,EAAAogJ,YAAAh5J,IAAA,wBAEA,IAKA4Y,EAAAsiE,YAAA1nF,EAAAoqG,EAAA1iB,YAAAl1E,QAAAoZ,KAAAxG,EAAA5S,QAAA4S,EAAAogJ,cAGApgJ,EAAAogJ,YAAAz0E,MAAA3rE,EAAAsiE,aAGA0iB,EAAA1iB,YAAAptC,OAAAl1B,IAAAsiE,YAEA,EAEA62F,qBAAA,SAAAC,EAAAC,GACA,IAAAr5J,EAAAxe,KAEA43K,EAAAl1I,WAAAtgC,MAAA,WACAhJ,EAAA,kBAAAolB,EAAAtmB,SAAA,IACA+vC,KAAA,UAAA7uC,EAAA4G,MAAAioC,KAAA,eACAphC,SAAAgxK,EACA,GACA,EAEA3B,mBAAA,SAAAx1K,GACA,IAAAjI,EAAA07B,EAAA2jJ,EAAAC,EAAAC,EAAAC,EAAAtoC,EAAAuoC,EACAnB,EAAA7c,EACAie,EAAA,KACAC,EAAA,KAGA,IAAA3/K,EAAAuH,KAAAu1K,WAAA78K,OAAA,EAAAD,GAAA,EAAAA,IAGA,IAAAW,EAAA2I,SAAA/B,KAAA4+J,YAAA,GAAA5+J,KAAAu1K,WAAA98K,GAAAmT,QAAA,IAIA,GAAA5L,KAAAy+J,gBAAAz+J,KAAAu1K,WAAA98K,GAAAimK,gBAAA,CAGA,GAAAyZ,GACA/+K,EAAA2I,SACA/B,KAAAu1K,WAAA98K,GAAAmT,QAAA,GACAusK,EAAAvsK,QAAA,IACA,SAGAusK,EAAAn4K,KAAAu1K,WAAA98K,GACA2/K,EAAA3/K,CAEA,MAGAuH,KAAAu1K,WAAA98K,GAAAimK,eAAA1zD,OACAhrG,KAAAu1K,WAAA98K,GAAAiuI,SAAA,MAAAhmI,EAAAV,KAAAk9J,QAAAl9J,OACAA,KAAAu1K,WAAA98K,GAAAimK,eAAA1zD,KAAA,GAOA,GAAAmtE,EAKA,OAAAn4K,KAAAu1K,WAAA78K,OACAsH,KAAAu1K,WAAA6C,GAAA1Z,eAAA1zD,OACAhrG,KAAAu1K,WAAA6C,GAAA1xC,SAAA,OAAAhmI,EAAAV,KAAAk9J,QAAAl9J,OACAA,KAAAu1K,WAAA6C,GAAA1Z,eAAA1zD,KAAA,OAEA,CAWA,IAPA8sE,EAAA,IACAC,EAAA,KAEAC,GADAjB,EAAAoB,EAAApB,UAAA/2K,KAAAy0K,YAAAz0K,KAAA4+J,cACA,aACAqZ,EAAAlB,EAAA,iBACA7c,EAAA6c,EAAA,gBAEA5iJ,EAAAn0B,KAAAs6B,MAAA5hC,OAAA,EAAAy7B,GAAA,EAAAA,IACA/6B,EAAA2I,SACA/B,KAAAu1K,WAAA6C,GAAAxsK,QAAA,GAAA5L,KAAAs6B,MAAAnG,GAAAhiB,KAAA,KAIAnS,KAAAs6B,MAAAnG,GAAAhiB,KAAA,KAAAnS,KAAA4+J,YAAA,KAIAjvB,EAAA3vI,KAAAs6B,MAAAnG,GAAAhiB,KAAAkqC,SAAA27H,GACAE,GAAA,EACAx3K,EAAAw5J,GAAAvqB,EAAA3vI,KAAAs6B,MAAAnG,GAAA8jJ,GAAA,IACAC,GAAA,GAGAnjK,KAAAD,IAAApU,EAAAw5J,GAAAvqB,GAAAmoC,IACAA,EAAA/iK,KAAAD,IAAApU,EAAAw5J,GAAAvqB,GACAooC,EAAA/3K,KAAAs6B,MAAAnG,GACAn0B,KAAAgzE,UAAAklG,EAAA,cAKA,IAAAH,IAAA/3K,KAAAmjB,QAAAixJ,YACA,OAGA,GAAAp0K,KAAAg1K,mBAAAh1K,KAAAu1K,WAAA6C,GAKA,YAJAp4K,KAAAg1K,iBAAAtW,eAAA1zD,OACAhrG,KAAAu1K,WAAA6C,GAAA1xC,SAAA,OAAAhmI,EAAAV,KAAAk9J,WACAl9J,KAAAg1K,iBAAAtW,eAAA1zD,KAAA,IAKA+sE,EACA/3K,KAAAi2K,WAAAv1K,EAAAq3K,EAAA,SAEA/3K,KAAAi2K,WAAAv1K,EAAA,KAAAV,KAAAu1K,WAAA6C,GAAAxsK,SAAA,GAEA5L,KAAA0mI,SAAA,SAAAhmI,EAAAV,KAAAk9J,WACAl9J,KAAAu1K,WAAA6C,GAAA1xC,SAAA,SAAAhmI,EAAAV,KAAAk9J,QAAAl9J,OACAA,KAAAg1K,iBAAAh1K,KAAAu1K,WAAA6C,GAGAp4K,KAAAmjB,QAAA29D,YAAAptC,OAAA1zC,KAAAg1K,iBAAAh1K,KAAA8gF,aAGA9gF,KAAAu6I,aAAAv6I,KAAA8gF,YAAAy5D,eAGAv6I,KAAAu6I,aAAA,KAAAv6I,KAAA9H,SAAA,IACA,SAAA8H,KAAAu6I,aAAA,GAAAppG,UACAnxC,KAAAk/J,eAAAl/J,KAAAu6I,aAAAl+F,UAGAr8C,KAAAu1K,WAAA6C,GAAA1xC,SAAA,OAAAhmI,EAAAV,KAAAk9J,QAAAl9J,OACAA,KAAAu1K,WAAA6C,GAAA1Z,eAAA1zD,KAAA,CACA,CAEA,EAEA2wD,cAAA,SAAAj7J,GAEA,IAAA8iG,EAAAxjG,KAAAmjB,QACAq3I,EAAA,mBAAAh3D,EAAAg3D,OACAphK,EAAAoqG,EAAAg3D,OAAAv5J,MAAAjB,KAAA4L,QAAA,IAAAlL,EAAAV,KAAA4+J,eACA,UAAAp7D,EAAAg3D,OAAAx6J,KAAA4+J,YAAAn5G,QAAAzlD,KAAA4+J,YAwBA,OArBApE,EAAAngB,QAAA,QAAA3hJ,QACAsH,KAAA6G,SAAA,GAAAupB,YAAAoqI,EAAA,IAGAA,EAAA,KAAAx6J,KAAA4+J,YAAA,KACA5+J,KAAAs+J,WAAA,CACAtxJ,MAAAhN,KAAA4+J,YAAA,GAAA3iI,MAAAjvB,MACAmB,OAAAnO,KAAA4+J,YAAA,GAAA3iI,MAAA9tB,OACAhK,SAAAnE,KAAA4+J,YAAAh5J,IAAA,YACAc,IAAA1G,KAAA4+J,YAAAh5J,IAAA,OACAa,KAAAzG,KAAA4+J,YAAAh5J,IAAA,UAIA40J,EAAA,GAAAv+H,MAAAjvB,QAAAw2F,EAAA8wE,iBACA9Z,EAAAxtJ,MAAAhN,KAAA4+J,YAAA5xJ,SAEAwtJ,EAAA,GAAAv+H,MAAA9tB,SAAAq1F,EAAA8wE,iBACA9Z,EAAArsJ,OAAAnO,KAAA4+J,YAAAzwJ,UAGAqsJ,CAEA,EAEA+B,wBAAA,SAAAn8J,GACA,iBAAAA,IACAA,IAAA5H,MAAA,MAEAyZ,MAAAiS,QAAA9jB,KACAA,EAAA,CAAAqG,MAAArG,EAAA,GAAAsG,KAAAtG,EAAA,QAEA,SAAAA,IACAJ,KAAAq8C,OAAA8N,MAAA1jD,KAAArG,EAAAqG,KAAAzG,KAAA68J,QAAAp2J,MAEA,UAAArG,IACAJ,KAAAq8C,OAAA8N,MAAA1jD,KAAAzG,KAAAu9J,kBAAAvwJ,MAAA5M,EAAAuG,MAAA3G,KAAA68J,QAAAp2J,MAEA,QAAArG,IACAJ,KAAAq8C,OAAA8N,MAAAzjD,IAAAtG,EAAAsG,IAAA1G,KAAA68J,QAAAn2J,KAEA,WAAAtG,IACAJ,KAAAq8C,OAAA8N,MAAAzjD,IAAA1G,KAAAu9J,kBAAApvJ,OAAA/N,EAAAwG,OAAA5G,KAAA68J,QAAAn2J,IAEA,EAEAo2J,iBAAA,WAGA98J,KAAA+7J,aAAA/7J,KAAAw6J,OAAAuB,eACA,IAAA0B,EAAAz9J,KAAA+7J,aAAA1/G,SAqBA,MAZA,aAAAr8C,KAAAk0I,aAAAl0I,KAAAu6I,aAAA,KAAAv6I,KAAA9H,SAAA,IACAkB,EAAA2I,SAAA/B,KAAAu6I,aAAA,GAAAv6I,KAAA+7J,aAAA,MACA0B,EAAAh3J,MAAAzG,KAAAu6I,aAAAn0G,aACAq3H,EAAA/2J,KAAA1G,KAAAu6I,aAAAzsI,aAKA9N,KAAA+7J,aAAA,KAAA/7J,KAAA9H,SAAA,GAAAi4B,OACAstI,EAAA,CAAA/2J,IAAA,EAAAD,KAAA,IAGA,CACAC,IAAA+2J,EAAA/2J,KAAAwS,SAAAlZ,KAAA+7J,aAAAn2J,IAAA,0BACAa,KAAAg3J,EAAAh3J,MAAAyS,SAAAlZ,KAAA+7J,aAAAn2J,IAAA,2BAGA,EAEAm3J,mBAAA,WAEA,gBAAA/8J,KAAAk0I,YAAA,CACA,IAAAriF,EAAA7xD,KAAA4+J,YAAAz6J,WACA,OACAuC,IAAAmrD,EAAAnrD,KAAAwS,SAAAlZ,KAAAw6J,OAAA50J,IAAA,eACA5F,KAAAu6I,aAAAzsI,YACArH,KAAAorD,EAAAprD,MAAAyS,SAAAlZ,KAAAw6J,OAAA50J,IAAA,gBACA5F,KAAAu6I,aAAAn0G,aAEA,CACA,OAAA1/B,IAAA,EAAAD,KAAA,EAGA,EAEAq1J,cAAA,WACA97J,KAAA68J,QAAA,CACAp2J,KAAAyS,SAAAlZ,KAAA4+J,YAAAh5J,IAAA,qBACAc,IAAAwS,SAAAlZ,KAAA4+J,YAAAh5J,IAAA,oBAEA,EAEAg2J,wBAAA,WACA57J,KAAAu9J,kBAAA,CACAvwJ,MAAAhN,KAAAw6J,OAAA5iJ,aACAzJ,OAAAnO,KAAAw6J,OAAA3iJ,cAEA,EAEA2kJ,gBAAA,WAEA,IAAAoB,EAAAG,EAAA/yD,EACAxH,EAAAxjG,KAAAmjB,QACA,WAAAqgF,EAAA42D,cACA52D,EAAA42D,YAAAp6J,KAAAw6J,OAAA,GAAArpI,YAEA,aAAAqyE,EAAA42D,aAAA,WAAA52D,EAAA42D,cACAp6J,KAAAo6J,YAAA,CACA,EAAAp6J,KAAAq8C,OAAA80E,SAAA1qH,KAAAzG,KAAAq8C,OAAAx2C,OAAAY,KACA,EAAAzG,KAAAq8C,OAAA80E,SAAAzqH,IAAA1G,KAAAq8C,OAAAx2C,OAAAa,IACA,aAAA88F,EAAA42D,YACAp6J,KAAA9H,SAAA8U,QACAhN,KAAAnG,OAAAmT,QAAAhN,KAAAu9J,kBAAAvwJ,MAAAhN,KAAA68J,QAAAp2J,MACA,aAAA+8F,EAAA42D,YACAp6J,KAAA9H,SAAAiW,UAAAjW,SAAAi4B,KAAAgB,WAAAwS,aACA3jC,KAAAnG,OAAAsU,UAAAnO,KAAA9H,SAAA,GAAAi4B,KAAAgB,WAAAwS,cACA3jC,KAAAu9J,kBAAApvJ,OAAAnO,KAAA68J,QAAAn2J,MAIA,6BAAAvM,KAAAqpG,EAAA42D,eACAwD,EAAAxkK,EAAAoqG,EAAA42D,aAAA,GACA2D,EAAA3kK,EAAAoqG,EAAA42D,aAAA/9G,SACA2uD,EAAA,WAAA5xG,EAAAwkK,GAAAh4J,IAAA,YAEA5F,KAAAo6J,YAAA,CACA2D,EAAAt3J,MAAAyS,SAAA9f,EAAAwkK,GAAAh4J,IAAA,4BACAsT,SAAA9f,EAAAwkK,GAAAh4J,IAAA,uBAAA5F,KAAA68J,QAAAp2J,KACAs3J,EAAAr3J,KAAAwS,SAAA9f,EAAAwkK,GAAAh4J,IAAA,2BACAsT,SAAA9f,EAAAwkK,GAAAh4J,IAAA,sBAAA5F,KAAA68J,QAAAn2J,IACAq3J,EAAAt3J,MAAAukG,EAAAj2F,KAAAoiB,IAAAymI,EAAA/5H,YAAA+5H,EAAAh6H,aAAAg6H,EAAAh6H,cACA1qB,SAAA9f,EAAAwkK,GAAAh4J,IAAA,4BACAsT,SAAA9f,EAAAwkK,GAAAh4J,IAAA,wBACA5F,KAAAu9J,kBAAAvwJ,MAAAhN,KAAA68J,QAAAp2J,KACAs3J,EAAAr3J,KAAAskG,EAAAj2F,KAAAoiB,IAAAymI,EAAAj6H,aAAAi6H,EAAAl6H,cAAAk6H,EAAAl6H,eACAxqB,SAAA9f,EAAAwkK,GAAAh4J,IAAA,2BACAsT,SAAA9f,EAAAwkK,GAAAh4J,IAAA,yBACA5F,KAAAu9J,kBAAApvJ,OAAAnO,KAAA68J,QAAAn2J,KAIA,EAEAu2J,mBAAA,SAAA5kJ,EAAAozC,GAEAA,IACAA,EAAAzrD,KAAAmE,UAEA,IAAA8pI,EAAA,aAAA51H,EAAA,KACAgoI,EAAA,aAAArgJ,KAAAk0I,aACAl0I,KAAAu6I,aAAA,KAAAv6I,KAAA9H,SAAA,IACAkB,EAAA2I,SAAA/B,KAAAu6I,aAAA,GAAAv6I,KAAA+7J,aAAA,IAEA/7J,KAAAu6I,aADAv6I,KAAA+7J,aAEA2B,EAAA,eAAAvjK,KAAAkmJ,EAAA,GAAAlvG,SAEA,OACAzqC,IAGA+kD,EAAA/kD,IAGA1G,KAAAq8C,OAAA80E,SAAAzqH,IAAAunI,EAGAjuI,KAAAq8C,OAAAx2C,OAAAa,IAAAunI,GACA,UAAAjuI,KAAAk0I,aACAl0I,KAAAu6I,aAAAzsI,YACA4vJ,EAAA,EAAArd,EAAAvyI,aAAAmgI,EAEAxnI,KAGAglD,EAAAhlD,KAGAzG,KAAAq8C,OAAA80E,SAAA1qH,KAAAwnI,EAGAjuI,KAAAq8C,OAAAx2C,OAAAY,KAAAwnI,GACA,UAAAjuI,KAAAk0I,aACAl0I,KAAAu6I,aAAAn0G,aAAAs3H,EAAA,EACArd,EAAAj6G,cAAA6nG,EAIA,EAEAmuB,kBAAA,SAAA17J,GAEA,IAAAgG,EAAAD,EACA+8F,EAAAxjG,KAAAmjB,QACA5X,EAAA7K,EAAA6K,MACAC,EAAA9K,EAAA8K,MACA60I,EAAA,aAAArgJ,KAAAk0I,aACAl0I,KAAAu6I,aAAA,KAAAv6I,KAAA9H,SAAA,IACAkB,EAAA2I,SAAA/B,KAAAu6I,aAAA,GAAAv6I,KAAA+7J,aAAA,IAEA/7J,KAAAu6I,aADAv6I,KAAA+7J,aAEA2B,EAAA,eAAAvjK,KAAAkmJ,EAAA,GAAAlvG,SAyDA,MAnDA,aAAAnxC,KAAAk0I,aAAAl0I,KAAAu6I,aAAA,KAAAv6I,KAAA9H,SAAA,IACA8H,KAAAu6I,aAAA,KAAAv6I,KAAA+7J,aAAA,KACA/7J,KAAAq8C,OAAA80E,SAAAnxH,KAAA+8J,sBAQA/8J,KAAAm8J,mBAEAn8J,KAAAo6J,cACA15J,EAAA6K,MAAAvL,KAAAq8C,OAAA8N,MAAA1jD,KAAAzG,KAAAo6J,YAAA,KACA7uJ,EAAAvL,KAAAo6J,YAAA,GAAAp6J,KAAAq8C,OAAA8N,MAAA1jD,MAEA/F,EAAA8K,MAAAxL,KAAAq8C,OAAA8N,MAAAzjD,IAAA1G,KAAAo6J,YAAA,KACA5uJ,EAAAxL,KAAAo6J,YAAA,GAAAp6J,KAAAq8C,OAAA8N,MAAAzjD,KAEAhG,EAAA6K,MAAAvL,KAAAq8C,OAAA8N,MAAA1jD,KAAAzG,KAAAo6J,YAAA,KACA7uJ,EAAAvL,KAAAo6J,YAAA,GAAAp6J,KAAAq8C,OAAA8N,MAAA1jD,MAEA/F,EAAA8K,MAAAxL,KAAAq8C,OAAA8N,MAAAzjD,IAAA1G,KAAAo6J,YAAA,KACA5uJ,EAAAxL,KAAAo6J,YAAA,GAAAp6J,KAAAq8C,OAAA8N,MAAAzjD,MAIA88F,EAAA82D,OACA5zJ,EAAA1G,KAAAs8J,cAAAvnJ,KAAA81C,OAAAr/C,EAAAxL,KAAAs8J,eACA94D,EAAA82D,KAAA,IAAA92D,EAAA82D,KAAA,GACA9uJ,EAAAxL,KAAAo6J,YACA1zJ,EAAA1G,KAAAq8C,OAAA8N,MAAAzjD,KAAA1G,KAAAo6J,YAAA,IACA1zJ,EAAA1G,KAAAq8C,OAAA8N,MAAAzjD,KAAA1G,KAAAo6J,YAAA,GACA1zJ,EACAA,EAAA1G,KAAAq8C,OAAA8N,MAAAzjD,KAAA1G,KAAAo6J,YAAA,GACA1zJ,EAAA88F,EAAA82D,KAAA,GAAA5zJ,EAAA88F,EAAA82D,KAAA,GACA5zJ,EAEAD,EAAAzG,KAAAq8J,cAAAtnJ,KAAA81C,OAAAt/C,EAAAvL,KAAAq8J,eACA74D,EAAA82D,KAAA,IAAA92D,EAAA82D,KAAA,GACA/uJ,EAAAvL,KAAAo6J,YACA3zJ,EAAAzG,KAAAq8C,OAAA8N,MAAA1jD,MAAAzG,KAAAo6J,YAAA,IACA3zJ,EAAAzG,KAAAq8C,OAAA8N,MAAA1jD,MAAAzG,KAAAo6J,YAAA,GACA3zJ,EACAA,EAAAzG,KAAAq8C,OAAA8N,MAAA1jD,MAAAzG,KAAAo6J,YAAA,GACA3zJ,EAAA+8F,EAAA82D,KAAA,GAAA7zJ,EAAA+8F,EAAA82D,KAAA,GACA7zJ,IAKA,CACAC,IAGA8E,EAGAxL,KAAAq8C,OAAA8N,MAAAzjD,IAGA1G,KAAAq8C,OAAA80E,SAAAzqH,IAGA1G,KAAAq8C,OAAAx2C,OAAAa,KACA,UAAA1G,KAAAk0I,aACAl0I,KAAAu6I,aAAAzsI,YACA4vJ,EAAA,EAAArd,EAAAvyI,aAEArH,KAGA8E,EAGAvL,KAAAq8C,OAAA8N,MAAA1jD,KAGAzG,KAAAq8C,OAAA80E,SAAA1qH,KAGAzG,KAAAq8C,OAAAx2C,OAAAY,MACA,UAAAzG,KAAAk0I,aACAl0I,KAAAu6I,aAAAn0G,aACAs3H,EAAA,EAAArd,EAAAj6G,cAIA,EAEA6vI,WAAA,SAAAv1K,EAAAjI,EAAAi6B,EAAA2lJ,GAEA3lJ,EACAA,EAAA,GAAAtC,YAAApwB,KAAA8gF,YAAA,IAEAroF,EAAA0Z,KAAA,GAAAgf,WAAA+4D,aAAAlqF,KAAA8gF,YAAA,GACA,SAAA9gF,KAAAgzE,UAAAv6E,EAAA0Z,KAAA,GAAA1Z,EAAA0Z,KAAA,GAAA0vE,aASA7hF,KAAA41E,QAAA51E,KAAA41E,UAAA51E,KAAA41E,QAAA,EACA,IAAAA,EAAA51E,KAAA41E,QAEA51E,KAAAooI,QAAA,WACAxyD,IAAA51E,KAAA41E,SAGA51E,KAAA06J,kBAAA2d,EAEA,GAEA,EAEA5b,OAAA,SAAA/7J,EAAAs8J,GAEAh9J,KAAA40K,WAAA,EAIA,IAAAn8K,EACA6/K,EAAA,GAUA,IALAt4K,KAAAm2K,cAAAn2K,KAAA4+J,YAAA/4J,SAAAnN,QACAsH,KAAA8gF,YAAAtmB,OAAAx6D,KAAA4+J,aAEA5+J,KAAAm2K,aAAA,KAEAn2K,KAAAw6J,OAAA,KAAAx6J,KAAA4+J,YAAA,IACA,IAAAnmK,KAAAuH,KAAAs+J,WACA,SAAAt+J,KAAAs+J,WAAA7lK,IAAA,WAAAuH,KAAAs+J,WAAA7lK,KACAuH,KAAAs+J,WAAA7lK,GAAA,IAGAuH,KAAA4+J,YAAAh5J,IAAA5F,KAAAs+J,YACAt+J,KAAA6mI,aAAA7mI,KAAA4+J,YAAA,qBACA,MACA5+J,KAAA4+J,YAAA91J,OAwCA,SAAAyvK,EAAA7yK,EAAAnG,EAAA+jC,GACA,gBAAA5iC,GACA4iC,EAAAojG,SAAAhhI,EAAAhF,EAAAnB,EAAA29J,QAAA39J,GACA,CACA,CACA,IA1CAS,KAAA6+J,cAAA7B,GACAsb,EAAAz3K,MAAA,SAAAH,GACAV,KAAA0mI,SAAA,UAAAhmI,EAAAV,KAAAk9J,QAAAl9J,KAAA6+J,aACA,KAEA7+J,KAAA6+J,aACA7+J,KAAAi1K,YAAAh7G,OACAj6D,KAAA4+J,YAAA3kG,OAAA2tE,IAAA,2BACA5nI,KAAAi1K,YAAApvK,SAAA7F,KAAA4+J,YAAA/4J,SAAA,IAAAm3J,GAGAsb,EAAAz3K,MAAA,SAAAH,GACAV,KAAA0mI,SAAA,SAAAhmI,EAAAV,KAAAk9J,UACA,IAKAl9J,YAAAg1K,mBACAhY,IACAsb,EAAAz3K,MAAA,SAAAH,GACAV,KAAA0mI,SAAA,SAAAhmI,EAAAV,KAAAk9J,UACA,IACAob,EAAAz3K,KAAA,SAAAlI,GACA,gBAAA+H,GACA/H,EAAA+tI,SAAA,UAAAhmI,EAAAV,KAAAk9J,QAAAl9J,MACA,CACA,EAAAglB,KAAAhlB,UAAAg1K,mBACAsD,EAAAz3K,KAAA,SAAAlI,GACA,gBAAA+H,GACA/H,EAAA+tI,SAAA,SAAAhmI,EAAAV,KAAAk9J,QAAAl9J,MACA,CACA,EAAAglB,KAAAhlB,UAAAg1K,qBAUAv8K,EAAAuH,KAAAu1K,WAAA78K,OAAA,EAAAD,GAAA,EAAAA,IACAukK,GACAsb,EAAAz3K,KAAA03K,EAAA,aAAAv4K,UAAAu1K,WAAA98K,KAEAuH,KAAAu1K,WAAA98K,GAAAimK,eAAA1zD,OACAstE,EAAAz3K,KAAA03K,EAAA,MAAAv4K,UAAAu1K,WAAA98K,KACAuH,KAAAu1K,WAAA98K,GAAAimK,eAAA1zD,KAAA,GAiCA,GA5BAhrG,KAAAm1K,oBACAn1K,KAAAm1K,kBAAAp8K,SACAiH,KAAAm1K,kBAAA,MAEAn1K,KAAAq1K,gBACAr1K,KAAAw6J,OAAA50J,IAAA,UAAA5F,KAAAq1K,gBAEAr1K,KAAAo1K,eACAp1K,KAAAw6J,OAAA50J,IAAA,kBAAA5F,KAAAo1K,cAAA,GAAAp1K,KAAAo1K,eAGAp1K,KAAAgpD,UAAA,EAEAg0G,GACAh9J,KAAA0mI,SAAA,aAAAhmI,EAAAV,KAAAk9J,WAKAl9J,KAAA8gF,YAAA,GAAA3vD,WAAAd,YAAArwB,KAAA8gF,YAAA,IAEA9gF,KAAAg+J,sBACAh+J,KAAAw6J,OAAA,KAAAx6J,KAAA4+J,YAAA,IACA5+J,KAAAw6J,OAAAzhK,SAEAiH,KAAAw6J,OAAA,OAGAwC,EAAA,CACA,IAAAvkK,EAAA,EAAAA,EAAA6/K,EAAA5/K,OAAAD,IAGA6/K,EAAA7/K,GAAAusB,KAAAhlB,KAAAU,GAEAV,KAAA0mI,SAAA,OAAAhmI,EAAAV,KAAAk9J,UACA,CAGA,OADAl9J,KAAA6+J,aAAA,GACA7+J,KAAAg+J,mBAEA,EAEAt3B,SAAA,YACA,IAAAttI,EAAAmrI,OAAAxkI,UAAA2mI,SAAAzlI,MAAAjB,KAAAkB,YACAlB,KAAAswB,QAEA,EAEA4sI,QAAA,SAAAsb,GACA,IAAAriD,EAAAqiD,GAAAx4K,KACA,OACAw6J,OAAArkC,EAAAqkC,OACA15E,YAAAq1C,EAAAr1C,aAAA1nF,EAAA,IACA+K,SAAAgyH,EAAAhyH,SACAg4J,iBAAAhmC,EAAAgmC,iBACA9/G,OAAA85E,EAAA8lC,YACA9pJ,KAAAgkH,EAAAyoC,YACA6Z,OAAAD,IAAA5sK,QAAA,KAEA;;;;;;;;;;;;;;;;;AAwBA,SAAA8sK,EAAAt5J,GACA,kBACA,IAAAyvD,EAAA7uE,KAAA4L,QAAAktC,MACA15B,EAAAne,MAAAjB,KAAAkB,WACAlB,KAAAy7I,WACA5sE,IAAA7uE,KAAA4L,QAAAktC,OACA94C,KAAA0mI,SAAA,SAEA,CACA,CAEAttI,EAAA6qI,OAAA,cACArnH,QAAA,SACAgpH,eAAA,UACAZ,kBAAA,OACA7hH,QAAA,CACA0iH,QAAA,CACA,6BACA,iCACA,gCAEA8yC,QAAA,KACA39B,MAAA,CACA7E,KAAA,uBACAD,GAAA,wBAEA0iC,aAAA,EACAzhJ,IAAA,KACA9E,IAAA,KACAwmJ,aAAA,KACAngI,KAAA,GACAia,KAAA,EAEAyuF,OAAA,KACA03B,KAAA,KACA53J,MAAA,KACAwD,KAAA,MAGA8hH,QAAA,WAGAxmI,KAAAinI,WAAA,MAAAjnI,KAAAmjB,QAAAgU,KACAn3B,KAAAinI,WAAA,MAAAjnI,KAAAmjB,QAAAkP,KACAryB,KAAAinI,WAAA,OAAAjnI,KAAAmjB,QAAAwvC,MAIA,KAAA3yD,KAAAwM,SAGAxM,KAAAy+D,OAAAz+D,KAAA4L,QAAAktC,OAAA,GAGA94C,KAAA+4K,QACA/4K,KAAAqmI,IAAArmI,KAAAg5K,SACAh5K,KAAAy7I,WAKAz7I,KAAAqmI,IAAArmI,KAAAnG,OAAA,CACA+oJ,aAAA,WACA5iJ,KAAA4L,QAAA27B,WAAA,eACA,GAEA,EAEAg/F,kBAAA,WACA,IAAApjH,EAAAnjB,KAAA2/E,SACA/zE,EAAA5L,KAAA4L,QASA,OAPAxS,EAAAgJ,KAAA,+BAAA3J,EAAAw6C,GACA,IAAAzmC,EAAAZ,EAAAq8B,KAAAgL,GACA,MAAAzmC,KAAA9T,SACAyqB,EAAA8vB,GAAAzmC,EAEA,IAEA2W,CACA,EAEA61J,QAAA,CACAl8B,QAAA,SAAAp8I,GACAV,KAAAoyK,OAAA1xK,IAAAV,KAAAi8I,SAAAv7I,IACAA,EAAA6jC,gBAEA,EACAuiH,MAAA,QACAntG,MAAA,WACA35C,KAAA6uE,SAAA7uE,KAAA4L,QAAAktC,KACA,EACA9b,KAAA,SAAAt8B,GACAV,KAAAuyK,QACAvyK,KAAAy7I,WACAz7I,KAAA6uE,WAAA7uE,KAAA4L,QAAAktC,OACA94C,KAAA0mI,SAAA,SAAAhmI,EAEA,EACAu4K,WAAA,SAAAv4K,EAAAilD,GACA,IAAAsF,EAAAjrD,KAAA9H,SAAA,GAAA+yD,cAGA,GAFAjrD,KAAA4L,QAAA,KAAAq/C,GAEAtF,EAAA,CAIA,IAAA3lD,KAAAk5K,WAAAl5K,KAAAoyK,OAAA1xK,GACA,SAGAV,KAAAm5K,OAAAxzH,EAAA,QAAA3lD,KAAAmjB,QAAAwvC,KAAAjyD,GACAmkB,aAAA7kB,KAAAo5K,iBACAp5K,KAAAo5K,gBAAAp5K,KAAAooI,QAAA,WACApoI,KAAAk5K,UACAl5K,KAAAuyK,MAAA7xK,EAEA,QACAA,EAAA6jC,gBAbA,CAcA,EACA,wCAAA7jC,GACA,IAAAmuE,EAOAA,EAAA7uE,KAAA4L,QAAA,KAAA5L,KAAA9H,SAAA,GAAA+yD,cACAjrD,KAAA6uE,SAAA7uE,KAAA4L,QAAAktC,MAUAp4C,EAAA6jC,iBATA,WACAvkC,KAAA4L,QAAA,KAAA5L,KAAA9H,SAAA,GAAA+yD,gBAEAjrD,KAAA4L,QAAAV,QAAA,SACAlL,KAAA6uE,WAEA,EAIA7pD,KAAAhlB,OAEA,IAAAA,KAAAoyK,OAAA1xK,IAIAV,KAAAq5K,QAAA,KAAAjgL,EAAAsH,EAAA6nI,eACA9lG,SAAA,sBAAA/hC,EACA,EACA,qCACA,yCAAAA,GAGA,GAAAtH,EAAAsH,EAAA6nI,eAAA9lG,SAAA,mBAIA,WAAAziC,KAAAoyK,OAAA1xK,SAGAV,KAAAq5K,QAAA,KAAAjgL,EAAAsH,EAAA6nI,eACA9lG,SAAA,sBAAA/hC,EACA,EAKA,yCAIAskJ,SAAA,WACAhlJ,KAAAs5K,UAAAt5K,KAAA4L,QACAq8B,KAAA,sBACAqrG,KAAA,UACAztI,SAGAgmC,OACA,iBAEA,EAEAktI,MAAA,WACA/4K,KAAAglJ,WAEAhlJ,KAAA+nI,UAAA/nI,KAAAs5K,UAAA,4CACAt5K,KAAA+nI,UAAA,oBAEA/nI,KAAA4L,QAAAq8B,KAAA,qBAGAjoC,KAAA8mK,QAAA9mK,KAAAs5K,UAAA52I,SAAA,KACAuF,KAAA,eACAA,KAAA,kBACA08G,OAAA,CACA9e,QAAA,CACA,kBAKA7lI,KAAA6mI,aAAA7mI,KAAA8mK,QAAA,iBAEA9mK,KAAA+nI,UAAA/nI,KAAA8mK,QAAAvsJ,QAAA,mCACAva,KAAA+nI,UAAA/nI,KAAA8mK,QAAAxsJ,OAAA,qCACAta,KAAA8mK,QAAAvsJ,QAAAoqI,OAAA,CACA1iD,KAAAjiG,KAAAmjB,QAAA63H,MAAA9E,GACA0Q,WAAA,IAEA5mJ,KAAA8mK,QAAAxsJ,OAAAqqI,OAAA,CACA1iD,KAAAjiG,KAAAmjB,QAAA63H,MAAA7E,KACAyQ,WAAA,IAKA5mJ,KAAA8mK,QAAA34J,SAAA4G,KAAAskD,KAAA,GAAAr5D,KAAAs5K,UAAAnrK,WACAnO,KAAAs5K,UAAAnrK,SAAA,GACAnO,KAAAs5K,UAAAnrK,OAAAnO,KAAAs5K,UAAAnrK,SAEA,EAEA8tI,SAAA,SAAAv7I,GACA,IAAAyiB,EAAAnjB,KAAAmjB,QACAmjC,EAAAltD,EAAAqqI,GAAAn9E,QAEA,OAAA5lD,EAAA4lD,SACA,KAAAA,EAAA2zF,GAEA,OADAj6I,KAAAq5K,QAAA,OAAA34K,IACA,EACA,KAAA4lD,EAAA+yF,KAEA,OADAr5I,KAAAq5K,QAAA,QAAA34K,IACA,EACA,KAAA4lD,EAAAszF,QAEA,OADA55I,KAAAq5K,QAAA,KAAAl2J,EAAAu1B,KAAAh4C,IACA,EACA,KAAA4lD,EAAAqzF,UAEA,OADA35I,KAAAq5K,QAAA,MAAAl2J,EAAAu1B,KAAAh4C,IACA,EAGA,QACA,EAEA0xK,OAAA,SAAA1xK,GACA,SAAAV,KAAAk5K,WAAA,IAAAl5K,KAAA0mI,SAAA,QAAAhmI,MAIAV,KAAA41E,UACA51E,KAAA41E,QAAA,GAEA51E,KAAAk5K,UAAA,GACA,EACA,EAEAG,QAAA,SAAA5gL,EAAA8gL,EAAA74K,GACAjI,KAAA,IAEAosB,aAAA7kB,KAAAu+I,OACAv+I,KAAAu+I,MAAAv+I,KAAAooI,QAAA,WACApoI,KAAAq5K,QAAA,GAAAE,EAAA74K,EACA,GAAAjI,GAEAuH,KAAAm5K,MAAAI,EAAAv5K,KAAAmjB,QAAAwvC,KAAAjyD,EACA,EAEAy4K,MAAA,SAAAxmH,EAAAjyD,GACA,IAAA8L,EAAAxM,KAAAwM,SAAA,EAEAxM,KAAA41E,UACA51E,KAAA41E,QAAA,GAGAppE,EAAAxM,KAAAw5K,aAAAhtK,EAAAmmD,EAAA3yD,KAAAy5K,WAAAz5K,KAAA41E,UAEA51E,KAAAk5K,WAAA,IAAAl5K,KAAA0mI,SAAA,OAAAhmI,EAAA,CAAA8L,YACAxM,KAAAy+D,OAAAjyD,GACAxM,KAAA41E,UAEA,EAEA6jG,WAAA,SAAAhhL,GACA,IAAAmgL,EAAA54K,KAAAmjB,QAAAy1J,YAEA,OAAAA,EACA,mBAAAA,EACAA,EAAAngL,GACAsc,KAAAM,MAAA5c,MAAA,IAAAA,IAAA,OAAAA,EAAA,OAGA,CACA,EAEAi7K,WAAA,WACA,IAAAt+J,EAAApV,KAAA2zK,aAAA3zK,KAAAmjB,QAAAwvC,MAIA,OAHA,OAAA3yD,KAAAmjB,QAAAkP,MACAjd,EAAAL,KAAAoiB,IAAA/hB,EAAApV,KAAA2zK,aAAA3zK,KAAAmjB,QAAAkP,OAEAjd,CACA,EAEAu+J,aAAA,SAAA30D,GACA,IAAApuE,EAAAouE,EAAAvuG,WACAW,EAAAw/B,EAAA93C,QAAA,KACA,WAAAsY,EAAA,EAAAw/B,EAAAl4C,OAAA0Y,EAAA,CACA,EAEAooK,aAAA,SAAAhtK,GACA,IAAA2hG,EAAAurE,EACAv2J,EAAAnjB,KAAAmjB,QAiBA,OAZAu2J,EAAAltK,GADA2hG,EAAA,OAAAhrF,EAAAkP,IAAAlP,EAAAkP,IAAA,GAOA7lB,EAAA2hG,GAHAurE,EAAA3kK,KAAA81C,MAAA6uH,EAAAv2J,EAAAwvC,MAAAxvC,EAAAwvC,MAMAnmD,EAAAiT,WAAAjT,EAAA8I,QAAAtV,KAAA0zK,eAGA,OAAAvwJ,EAAAgU,KAAA3qB,EAAA2W,EAAAgU,IACAhU,EAAAgU,IAEA,OAAAhU,EAAAkP,KAAA7lB,EAAA2W,EAAAkP,IACAlP,EAAAkP,IAGA7lB,CACA,EAEA+lK,MAAA,SAAA7xK,GACAV,KAAAk5K,WAIAr0J,aAAA7kB,KAAAu+I,OACA15H,aAAA7kB,KAAAo5K,iBACAp5K,KAAA41E,QAAA,EACA51E,KAAAk5K,UAAA,EACAl5K,KAAA0mI,SAAA,OAAAhmI,GACA,EAEAumI,WAAA,SAAAr2H,EAAApE,GACA,IAAAmtK,EAAAp/J,EAAAD,EAEA,eAAA1J,GAAA,iBAAAA,EAIA,OAHA+oK,EAAA35K,KAAA45K,OAAA55K,KAAA4L,QAAAktC,OACA94C,KAAAmjB,QAAAvS,GAAApE,OACAxM,KAAA4L,QAAAktC,IAAA94C,KAAA65K,QAAAF,IAIA,QAAA/oK,GAAA,QAAAA,GAAA,SAAAA,GACA,iBAAApE,IACAA,EAAAxM,KAAA45K,OAAAptK,IAGA,UAAAoE,IACA2J,EAAAva,KAAA8mK,QAAAvsJ,QAAAjZ,KAAA,YACAtB,KAAA6mI,aAAAtsH,EAAA,KAAAva,KAAAmjB,QAAA63H,MAAA9E,IACAl2I,KAAA+nI,UAAAxtH,EAAA,KAAA/N,EAAA0pI,IACA57H,EAAAta,KAAA8mK,QAAAxsJ,OAAAhZ,KAAA,YACAtB,KAAA6mI,aAAAvsH,EAAA,KAAAta,KAAAmjB,QAAA63H,MAAA7E,MACAn2I,KAAA+nI,UAAAztH,EAAA,KAAA9N,EAAA2pI,OAGAn2I,KAAA2/E,OAAA/uE,EAAApE,EACA,EAEAi6H,mBAAA,SAAAj6H,GACAxM,KAAA2/E,OAAAnzE,GAEAxM,KAAAsnI,aAAAtnI,KAAAs5K,UAAA,2BAAA9sK,GACAxM,KAAA4L,QAAA8K,KAAA,aAAAlK,GACAxM,KAAA8mK,QAAAniB,OAAAn4I,EAAA,mBACA,EAEAw6H,YAAA0xC,GAAA,SAAAv1J,GACAnjB,KAAA2/E,OAAAx8D,EACA,IAEAy2J,OAAA,SAAA9gI,GAKA,MAJA,iBAAAA,GAAA,KAAAA,IACAA,EAAAj/C,OAAAigL,WAAA95K,KAAAmjB,QAAA01J,aACAiB,UAAAr6J,WAAAq5B,EAAA,GAAA94C,KAAAmjB,QAAAw1J,UAAA7/H,GAEA,KAAAA,GAAAmxD,MAAAnxD,GAAA,KAAAA,CACA,EAEA+gI,QAAA,SAAArtK,GACA,WAAAA,EACA,GAEA3S,OAAAigL,WAAA95K,KAAAmjB,QAAA01J,aACAiB,UAAAn6J,OAAAnT,EAAAxM,KAAAmjB,QAAA01J,aAAA74K,KAAAmjB,QAAAw1J,SACAnsK,CACA,EAEAivI,SAAA,WACAz7I,KAAA4L,QAAAq8B,KAAA,CACA,gBAAAjoC,KAAAmjB,QAAAkP,IACA,gBAAAryB,KAAAmjB,QAAAgU,IAGA,gBAAAn3B,KAAA45K,OAAA55K,KAAA4L,QAAAktC,QAEA,EAEA7sC,QAAA,WACA,IAAAO,EAAAxM,KAAAwM,QAGA,cAAAA,GAKAA,IAAAxM,KAAAw5K,aAAAhtK,EACA,EAGAiyD,OAAA,SAAAjyD,EAAAutK,GACA,IAAArvE,EACA,KAAAl+F,GAEA,QADAk+F,EAAA1qG,KAAA45K,OAAAptK,MAEAutK,IACArvE,EAAA1qG,KAAAw5K,aAAA9uE,IAEAl+F,EAAAxM,KAAA65K,QAAAnvE,IAGA1qG,KAAA4L,QAAAktC,IAAAtsC,GACAxM,KAAAy7I,UACA,EAEA7U,SAAA,WACA5mI,KAAA4L,QACA8K,KAAA,eACA6wB,WAAA,+DAEAvnC,KAAAs5K,UAAA9lC,YAAAxzI,KAAA4L,QACA,EAEAouK,OAAAtB,GAAA,SAAAa,GACAv5K,KAAAi6K,QAAAV,EACA,IACAU,QAAA,SAAAV,GACAv5K,KAAAoyK,WACApyK,KAAAm5K,OAAAI,GAAA,GAAAv5K,KAAAmjB,QAAAwvC,MACA3yD,KAAAuyK,QAEA,EAEA2H,SAAAxB,GAAA,SAAAa,GACAv5K,KAAAm6K,UAAAZ,EACA,IACAY,UAAA,SAAAZ,GACAv5K,KAAAoyK,WACApyK,KAAAm5K,OAAAI,GAAA,IAAAv5K,KAAAmjB,QAAAwvC,MACA3yD,KAAAuyK,QAEA,EAEA6H,OAAA1B,GAAA,SAAA2B,GACAr6K,KAAAi6K,SAAAI,GAAA,GAAAr6K,KAAAmjB,QAAAu1B,KACA,IAEA4hI,SAAA5B,GAAA,SAAA2B,GACAr6K,KAAAm6K,WAAAE,GAAA,GAAAr6K,KAAAmjB,QAAAu1B,KACA,IAEAlsC,MAAA,SAAAymK,GACA,IAAA/xK,UAAAxI,OACA,OAAAsH,KAAA45K,OAAA55K,KAAA4L,QAAAktC,OAEA4/H,EAAA14K,KAAAy+D,QAAAz5C,KAAAhlB,KAAAizK,EACA,EAEAhvC,OAAA,WACA,OAAAjkI,KAAAs5K,SACA,KAKA,IAAAlgL,EAAA85I,cAGA95I,EAAA6qI,OAAA,aAAA7qI,EAAAqqI,GAAAshB,QAAA,CACAC,SAAA,WACAhlJ,KAAAs5K,UAAAt5K,KAAA4L,QACAq8B,KAAA,sBACAqrG,KAAAtzI,KAAAu6K,kBACA10K,SAGAgmC,OAAA7rC,KAAAw6K,cACA,EACAD,eAAA,WACA,cACA,EAEAC,YAAA,WACA,sBACA,IAIA,IA+CAC;;;;;;;;GA/CArhL,EAAAqqI,GAAAshB,QAsBA3rJ,EAAA6qI,OAAA,WACArnH,QAAA,SACAzT,MAAA,IACAga,QAAA,CACAkwH,OAAA,KACAxN,QAAA,CACA,0BACA,8BACA,mCACA,+BAEAgV,aAAA,EACAn6I,MAAA,QACAq6I,YAAA,UACAvxI,KAAA,KACAV,KAAA,KAGAoyI,SAAA,KACAC,eAAA,KACAu/B,WAAA,KACAv5J,KAAA,MAGAw5J,UACAF,EAAA,OAEA,SAAAryH,GACA,IAAAwyH,EAAAC,EAEAD,EAAAxyH,EAAA7lC,KAAA1C,QAAA46J,EAAA,IACAI,EAAA/gL,SAAAyoB,KAAA1C,QAAA46J,EAAA,IAGA,IACAG,EAAAE,mBAAAF,EACA,OAAAtyK,GAAA,CACA,IACAuyK,EAAAC,mBAAAD,EACA,OAAAvyK,GAAA,CAEA,OAAA8/C,EAAArvC,KAAArgB,OAAA,GAAAkiL,IAAAC,CACA,GAGAr0C,QAAA,WACA,IAAAhoH,EAAAxe,KACAmjB,EAAAnjB,KAAAmjB,QAEAnjB,KAAA+6K,SAAA,EAEA/6K,KAAA+nI,UAAA,yCACA/nI,KAAAsnI,aAAA,2BAAAnkH,EAAA03H,aAEA76I,KAAAg7K,eACA73J,EAAAkwH,OAAArzI,KAAAi7K,iBAIAhpK,MAAAiS,QAAAf,EAAA2iH,YACA3iH,EAAA2iH,SAAA1sI,EAAAuuI,WAAAxkH,EAAA2iH,SAAAp+F,OACAtuC,EAAA8N,IAAAlH,KAAAk7K,KAAA/gK,OAAA,gCAAAi2J,GACA,OAAA5xJ,EAAA08J,KAAA15K,MAAA4uK,EACA,MACA1jD,SAIA,IAAA1sH,KAAAmjB,QAAAkwH,QAAArzI,KAAAm7K,QAAAziL,OACAsH,KAAAqzI,OAAArzI,KAAA28I,YAAAx5H,EAAAkwH,QAEArzI,KAAAqzI,OAAAj6I,IAGA4G,KAAAy7I,WAEAz7I,KAAAqzI,OAAA36I,QACAsH,KAAAmhB,KAAAgC,EAAAkwH,OAEA,EAEA4nC,eAAA,WACA,IAAA5nC,EAAArzI,KAAAmjB,QAAAkwH,OACAwH,EAAA76I,KAAAmjB,QAAA03H,YACAugC,EAAAN,mBAAAhhL,SAAAif,KAAAlgB,UAAA,IAsCA,OApCA,OAAAw6I,IAGA+nC,GACAp7K,KAAAk7K,KAAA94K,MAAA,SAAA3J,EAAA4iL,GACA,GAAAjiL,EAAAiiL,GAAApzI,KAAA,mBAAAmzI,EAEA,OADA/nC,EAAA56I,GACA,CAEA,IAIA,OAAA46I,IACAA,EAAArzI,KAAAk7K,KAAA15K,MAAAxB,KAAAk7K,KAAA/gK,OAAA,qBAIA,OAAAk5H,IAAA,IAAAA,IACAA,IAAArzI,KAAAk7K,KAAAxiL,QAAA,KAKA,IAAA26I,IAEA,KADAA,EAAArzI,KAAAk7K,KAAA15K,MAAAxB,KAAAk7K,KAAAngI,GAAAs4F,OAEAA,GAAAwH,GAAA,IAKAA,IAAA,IAAAxH,GAAArzI,KAAAm7K,QAAAziL,SACA26I,EAAA,GAGAA,CACA,EAEA1M,oBAAA,WACA,OACA00C,IAAAr7K,KAAAqzI,OACAqI,MAAA17I,KAAAqzI,OAAA36I,OAAAsH,KAAAs7K,gBAAAt7K,KAAAqzI,QAAAj6I,IAEA,EAEAmiL,YAAA,SAAA76K,GACA,IAAA86K,EAAApiL,EAAA4G,KAAA9H,SAAA,GAAA+yD,eAAA6kB,QAAA,MACAkR,EAAAhhF,KAAAk7K,KAAA15K,MAAAg6K,GACAC,GAAA,EAEA,IAAAz7K,KAAA07K,eAAAh7K,GAAA,CAIA,OAAAA,EAAA4lD,SACA,KAAAltD,EAAAqqI,GAAAn9E,QAAAwzF,MACA,KAAA1gJ,EAAAqqI,GAAAn9E,QAAA+yF,KACAr4D,IACA,MACA,KAAA5nF,EAAAqqI,GAAAn9E,QAAA2zF,GACA,KAAA7gJ,EAAAqqI,GAAAn9E,QAAAozF,KACA+hC,GAAA,EACAz6F,IACA,MACA,KAAA5nF,EAAAqqI,GAAAn9E,QAAAgzF,IACAt4D,EAAAhhF,KAAAm7K,QAAAziL,OAAA,EACA,MACA,KAAAU,EAAAqqI,GAAAn9E,QAAAmzF,KACAz4D,EAAA,EACA,MACA,KAAA5nF,EAAAqqI,GAAAn9E,QAAAyzF,MAMA,OAHAr5I,EAAA6jC,iBACA1f,aAAA7kB,KAAA27K,iBACA37K,KAAAg8I,UAAAh7D,GAEA,KAAA5nF,EAAAqqI,GAAAn9E,QAAAizF,MAQA,OALA74I,EAAA6jC,iBACA1f,aAAA7kB,KAAA27K,iBAGA37K,KAAAg8I,UAAAh7D,IAAAhhF,KAAAmjB,QAAAkwH,QAAAryD,GAEA,QACA,OAIAtgF,EAAA6jC,iBACA1f,aAAA7kB,KAAA27K,YACA36F,EAAAhhF,KAAA47K,cAAA56F,EAAAy6F,GAGA/6K,EAAAy7I,SAAAz7I,EAAA4iJ,UAKAk4B,EAAAvzI,KAAA,yBACAjoC,KAAAk7K,KAAAngI,GAAAimC,GAAA/4C,KAAA,wBAEAjoC,KAAA27K,WAAA37K,KAAAooI,QAAA,WACApoI,KAAAizC,OAAA,SAAA+tC,EACA,GAAAhhF,KAAAmJ,OAtDA,CAwDA,EAEA0yK,cAAA,SAAAn7K,GACAV,KAAA07K,eAAAh7K,IAKAA,EAAAy7I,SAAAz7I,EAAA4lD,UAAAltD,EAAAqqI,GAAAn9E,QAAA2zF,KACAv5I,EAAA6jC,iBACAvkC,KAAAqzI,OAAAnoI,QAAA,SAEA,EAGAwwK,eAAA,SAAAh7K,GACA,OAAAA,EAAAw7I,QAAAx7I,EAAA4lD,UAAAltD,EAAAqqI,GAAAn9E,QAAAszF,SACA55I,KAAAg8I,UAAAh8I,KAAA47K,cAAA57K,KAAAmjB,QAAAkwH,OAAA,QACA,GAEA3yI,EAAAw7I,QAAAx7I,EAAA4lD,UAAAltD,EAAAqqI,GAAAn9E,QAAAqzF,WACA35I,KAAAg8I,UAAAh8I,KAAA47K,cAAA57K,KAAAmjB,QAAAkwH,OAAA,QACA,QAFA,CAIA,EAEAyoC,aAAA,SAAAt6K,EAAAi6K,GACA,IAAAM,EAAA/7K,KAAAk7K,KAAAxiL,OAAA,EAYA,UAAAU,EAAA0uB,SATAtmB,EAAAu6K,IACAv6K,EAAA,GAEAA,EAAA,IACAA,EAAAu6K,GAEAv6K,GAGAxB,KAAAmjB,QAAA2iH,WACAtkI,EAAAi6K,EAAAj6K,EAAA,EAAAA,EAAA,EAGA,OAAAA,CACA,EAEAo6K,cAAA,SAAAp6K,EAAAi6K,GAGA,OAFAj6K,EAAAxB,KAAA87K,aAAAt6K,EAAAi6K,GACAz7K,KAAAk7K,KAAAngI,GAAAv5C,GAAA0J,QAAA,SACA1J,CACA,EAEAylI,WAAA,SAAAr2H,EAAApE,GACA,WAAAoE,GAOA5Q,KAAA2/E,OAAA/uE,EAAApE,GAEA,gBAAAoE,IACA5Q,KAAAsnI,aAAA,2BAAA96H,GAGAA,IAAA,IAAAxM,KAAAmjB,QAAAkwH,QACArzI,KAAAg8I,UAAA,IAIA,UAAAprI,GACA5Q,KAAA+7I,aAAAvvI,GAGA,gBAAAoE,GACA5Q,KAAAg8K,kBAAAxvK,IApBAxM,KAAAg8I,UAAAxvI,EAsBA,EAEAmsI,QAAA,WACA,IAAAx1H,EAAAnjB,KAAAmjB,QACA84J,EAAAj8K,KAAAk8K,QAAAx5I,SAAA,iBAIAvf,EAAA2iH,SAAA1sI,EAAA8N,IAAA+0K,EAAA9hK,OAAA,gCAAAkhK,GACA,OAAAY,EAAAz6K,MAAA65K,EACA,IAEAr7K,KAAAg7K,gBAGA,IAAA73J,EAAAkwH,QAAArzI,KAAAm7K,QAAAziL,OAKAsH,KAAAqzI,OAAA36I,SAAAU,EAAA2I,SAAA/B,KAAAk8K,QAAA,GAAAl8K,KAAAqzI,OAAA,IAGArzI,KAAAk7K,KAAAxiL,SAAAyqB,EAAA2iH,SAAAptI,QACAyqB,EAAAkwH,QAAA,EACArzI,KAAAqzI,OAAAj6I,KAIA4G,KAAAg8I,UAAAh8I,KAAA87K,aAAA/mK,KAAAoiB,IAAA,EAAAhU,EAAAkwH,OAAA,QAOAlwH,EAAAkwH,OAAArzI,KAAAk7K,KAAA15K,MAAAxB,KAAAqzI,SApBAlwH,EAAAkwH,QAAA,EACArzI,KAAAqzI,OAAAj6I,KAsBA4G,KAAAy7I,UACA,EAEAA,SAAA,WACAz7I,KAAAymI,mBAAAzmI,KAAAmjB,QAAA2iH,UACA9lI,KAAA+7I,aAAA/7I,KAAAmjB,QAAAziB,OACAV,KAAAg8K,kBAAAh8K,KAAAmjB,QAAA43H,aAEA/6I,KAAAk7K,KAAAtzC,IAAA5nI,KAAAqzI,QAAAprG,KAAA,CACA,wBACA,wBACAuP,UAAA,IAEAx3C,KAAAy8I,OAAA7U,IAAA5nI,KAAAs7K,gBAAAt7K,KAAAqzI,SACA7pI,OACAy+B,KAAA,CACA,uBAIAjoC,KAAAqzI,OAAA36I,QAGAsH,KAAAqzI,OACAprG,KAAA,CACA,uBACA,uBACAuP,SAAA,IAEAx3C,KAAA+nI,UAAA/nI,KAAAqzI,OAAA,oCACArzI,KAAAs7K,gBAAAt7K,KAAAqzI,QACAvqI,OACAm/B,KAAA,CACA,yBAZAjoC,KAAAk7K,KAAAngI,GAAA,GAAA9S,KAAA,aAeA,EAEA+yI,aAAA,WACA,IAAAx8J,EAAAxe,KACAm8K,EAAAn8K,KAAAk7K,KACAkB,EAAAp8K,KAAAm7K,QACA3+B,EAAAx8I,KAAAy8I,OAEAz8I,KAAAk8K,QAAAl8K,KAAAq8K,WAAAp0I,KAAA,kBACAjoC,KAAA+nI,UAAA/nI,KAAAk8K,QAAA,cACA,uDAGAl8K,KAAAk8K,QACAxgL,GAAA,YAAAsE,KAAAgmI,eAAA,iBAAAtlI,GACAtH,EAAA4G,MAAAskC,GAAA,uBACA5jC,EAAA6jC,gBAEA,IAEAvkC,KAAAk7K,KAAAl7K,KAAAk8K,QAAA56K,KAAA,qBACA2mC,KAAA,CACA/H,KAAA,MACAsX,UAAA,IAEAx3C,KAAA+nI,UAAA/nI,KAAAk7K,KAAA,kCAEAl7K,KAAAm7K,QAAAn7K,KAAAk7K,KAAAh0K,KAAA,WACA,OAAA9N,EAAA,IAAA4G,MAAA,EACA,IACAioC,KAAA,CACAuP,UAAA,IAEAx3C,KAAA+nI,UAAA/nI,KAAAm7K,QAAA,kBAEAn7K,KAAAy8I,OAAArjJ,IAEA4G,KAAAm7K,QAAA/4K,MAAA,SAAA3J,EAAA2vD,GACA,IAAA9hD,EAAAo1I,EAAAmB,EACAy/B,EAAAljL,EAAAgvD,GAAA1O,WAAAzR,KAAA,MACAozI,EAAAjiL,EAAAgvD,GAAA0nB,QAAA,MACAysG,EAAAlB,EAAApzI,KAAA,iBAGAzpB,EAAAm8J,SAAAvyH,IAEAy0F,GADAv2I,EAAAw0K,mBAAA1yH,EAAArvC,OACAlgB,UAAA,GACA6iJ,EAAAl9H,EAAA5S,QAAAtK,KAAA,IAAAy3I,IAAArmG,OAAAmqG,MAQAv2I,EAAA,KADAu2I,EAAAw+B,EAAApzI,KAAA,kBAAA7uC,EAAA,IAAAsgD,WAAA,GAAA9+C,KAEA8gJ,EAAAl9H,EAAA5S,QAAAtK,KAAAgF,IACA5N,SACAgjJ,EAAAl9H,EAAAg+J,aAAA3/B,IACA1I,YAAA31H,EAAAi+H,OAAAhkJ,EAAA,IAAA+lB,EAAA09J,SAEAxgC,EAAAzzG,KAAA,uBAGAyzG,EAAAhjJ,SACA8lB,EAAAi+H,OAAAj+H,EAAAi+H,OAAAr3F,IAAAs2F,IAEA6gC,GACAlB,EAAA//K,KAAA,wBAAAihL,GAEAlB,EAAApzI,KAAA,CACA,gBAAA40G,EACA,kBAAAy/B,IAEA5gC,EAAAzzG,KAAA,kBAAAq0I,EACA,IAEAt8K,KAAAy8I,OAAAx0G,KAAA,mBACAjoC,KAAA+nI,UAAA/nI,KAAAy8I,OAAA,qCAGA0/B,IACAn8K,KAAA8nI,KAAAq0C,EAAAv0C,IAAA5nI,KAAAk7K,OACAl7K,KAAA8nI,KAAAs0C,EAAAx0C,IAAA5nI,KAAAm7K,UACAn7K,KAAA8nI,KAAA0U,EAAA5U,IAAA5nI,KAAAy8I,SAEA,EAGA4/B,SAAA,WACA,OAAAr8K,KAAAk8K,SAAAl8K,KAAA4L,QAAAtK,KAAA,UAAAy5C,GAAA,EACA,EAEAyhI,aAAA,SAAA5hL,GACA,OAAAxB,EAAA,SACA6uC,KAAA,KAAArtC,GACAU,KAAA,qBACA,EAEAmrI,mBAAA,SAAAX,GACA,IAAA84B,EAAAwR,EAAA33K,EAWA,IATAwZ,MAAAiS,QAAA4hH,KACAA,EAAAptI,OAEAotI,EAAAptI,SAAAsH,KAAAm7K,QAAAziL,SACAotI,GAAA,GAFAA,GAAA,GAOArtI,EAAA,EAAA23K,EAAApwK,KAAAk7K,KAAAziL,OACAmmK,EAAAxlK,EAAAg3K,IACA,IAAAtqC,IAAA,IAAA1sI,EAAA0uB,QAAArvB,EAAAqtI,IACA84B,EAAA32H,KAAA,wBACAjoC,KAAA+nI,UAAA62B,EAAA,4BAEAA,EAAAr3H,WAAA,iBACAvnC,KAAA6mI,aAAA+3B,EAAA,2BAIA5+J,KAAAmjB,QAAA2iH,WAEA9lI,KAAAsnI,aAAAtnI,KAAAikI,SAAAjkI,KAAAklI,eAAA,kBACA,IAAAY,EACA,EAEAiW,aAAA,SAAAr7I,GACA,IAAAJ,EAAA,GACAI,GACAtH,EAAAgJ,KAAA1B,EAAAlI,MAAA,eAAAgJ,EAAAyI,GACA3J,EAAA2J,GAAA,eACA,IAGAjK,KAAA8nI,KAAA9nI,KAAAm7K,QAAA/1H,IAAAplD,KAAAk7K,MAAA91H,IAAAplD,KAAAy8I,SAGAz8I,KAAAqmI,KAAA,EAAArmI,KAAAm7K,QAAA,CACAhxH,MAAA,SAAAzpD,GACAA,EAAA6jC,gBACA,IAEAvkC,KAAAqmI,IAAArmI,KAAAm7K,QAAA76K,GACAN,KAAAqmI,IAAArmI,KAAAk7K,KAAA,CAAAp+B,QAAA,gBACA98I,KAAAqmI,IAAArmI,KAAAy8I,OAAA,CAAAK,QAAA,kBAEA98I,KAAAyoI,WAAAzoI,KAAAk7K,MACAl7K,KAAAqoI,WAAAroI,KAAAk7K,KACA,EAEAc,kBAAA,SAAAjhC,GACA,IAAA2B,EACA72I,EAAA7F,KAAA4L,QAAA/F,SAEA,SAAAk1I,GACA2B,EAAA72I,EAAAsI,SACAuuI,GAAA18I,KAAA4L,QAAAiM,cAAA7X,KAAA4L,QAAAuC,SAEAnO,KAAA4L,QAAA0uI,SAAA,YAAAl4I,MAAA,WACA,IAAA4hI,EAAA5qI,EAAA4G,MACAmE,EAAA6/H,EAAAp+H,IAAA,YAEA,aAAAzB,GAAA,UAAAA,IAGAu4I,GAAA1Y,EAAAnsH,aAAA,GACA,IAEA7X,KAAA4L,QAAA82B,WAAAklG,IAAA5nI,KAAAy8I,QAAAr6I,MAAA,WACAs6I,GAAAtjJ,EAAA4G,MAAA6X,aAAA,EACA,IAEA7X,KAAAy8I,OAAAr6I,MAAA,WACAhJ,EAAA4G,MAAAmO,OAAA4G,KAAAoiB,IAAA,EAAAulH,EACAtjJ,EAAA4G,MAAA4Y,cAAAxf,EAAA4G,MAAAmO,UACA,IACAvI,IAAA,oBACA,SAAAm1I,IACA2B,EAAA,EACA18I,KAAAy8I,OAAAr6I,MAAA,WACAs6I,EAAA3nI,KAAAoiB,IAAAulH,EAAAtjJ,EAAA4G,MAAAmO,OAAA,IAAAA,SACA,IAAAA,OAAAuuI,GAEA,EAEAL,cAAA,SAAA37I,GACA,IAAAyiB,EAAAnjB,KAAAmjB,QACAkwH,EAAArzI,KAAAqzI,OAEAgoC,EADAjiL,EAAAsH,EAAA6nI,eACAz4D,QAAA,MACAmtE,EAAAo+B,EAAA,KAAAhoC,EAAA,GACA6J,EAAAD,GAAA95H,EAAA03H,YACAsC,EAAAD,EAAA9jJ,IAAA4G,KAAAs7K,gBAAAD,GACAj+B,EAAA/J,EAAA36I,OAAAsH,KAAAs7K,gBAAAjoC,GAAAj6I,IACAkR,EAAA,CACAmyK,OAAAppC,EACAiK,SAAAF,EACAs/B,OAAAx/B,EAAA9jJ,IAAAiiL,EACA79B,SAAAL,GAGAz8I,EAAA6jC,iBAEA82I,EAAA54I,SAAA,sBAGA44I,EAAA54I,SAAA,oBAGAziC,KAAA+6K,SAGA99B,IAAA95H,EAAA03H,cAGA,IAAA76I,KAAA0mI,SAAA,iBAAAhmI,EAAA4J,KAIA6Y,EAAAkwH,QAAA6J,GAAAl9I,KAAAk7K,KAAA15K,MAAA65K,GAEAr7K,KAAAqzI,OAAA4J,EAAA7jJ,IAAAiiL,EACAr7K,KAAA4qB,KACA5qB,KAAA4qB,IAAAlC,QAGA00H,EAAA1kJ,QAAAykJ,EAAAzkJ,QACAU,EAAAkP,MAAA,oDAGA60I,EAAAzkJ,QACAsH,KAAAmhB,KAAAnhB,KAAAk7K,KAAA15K,MAAA65K,GAAA36K,GAEAV,KAAAy9I,QAAA/8I,EAAA4J,GACA,EAGAmzI,QAAA,SAAA/8I,EAAA4J,GACA,IAAAkU,EAAAxe,KACAm9I,EAAA7yI,EAAAkzI,SACAJ,EAAA9yI,EAAAgzI,SAIA,SAAAz7F,IACArjC,EAAAu8J,SAAA,EACAv8J,EAAAkoH,SAAA,WAAAhmI,EAAA4J,EACA,CAEA,SAAAxB,IACA0V,EAAAupH,UAAAz9H,EAAAoyK,OAAA5sG,QAAA,0CAEAqtE,EAAAzkJ,QAAA8lB,EAAA2E,QAAAra,KACA0V,EAAA0qJ,MAAA/rB,EAAA3+H,EAAA2E,QAAAra,KAAA+4C,IAEAs7F,EAAAr0I,OACA+4C,IAEA,CAhBA7hD,KAAA+6K,SAAA,EAmBA39B,EAAA1kJ,QAAAsH,KAAAmjB,QAAA3Z,KACAxJ,KAAAsoK,MAAAlrB,EAAAp9I,KAAAmjB,QAAA3Z,MAAA,WACAgV,EAAAqoH,aAAAv8H,EAAAmyK,OAAA3sG,QAAA,MACA,oCACAhnE,GACA,KAEA9I,KAAA6mI,aAAAv8H,EAAAmyK,OAAA3sG,QAAA,MACA,oCACAstE,EAAA5zI,OACAV,KAGAs0I,EAAAn1G,KAAA,sBACA39B,EAAAmyK,OAAAx0I,KAAA,CACA,wBACA,0BAMAk1G,EAAAzkJ,QAAA0kJ,EAAA1kJ,OACA4R,EAAAmyK,OAAAx0I,KAAA,eACAk1G,EAAAzkJ,QACAsH,KAAAk7K,KAAA/gK,QAAA,WACA,WAAA/gB,EAAA4G,MAAAioC,KAAA,WACA,IACAA,KAAA,eAGAk1G,EAAAl1G,KAAA,uBACA39B,EAAAoyK,OAAAz0I,KAAA,CACA,uBACA,uBACAuP,SAAA,GAEA,EAEAwkG,UAAA,SAAAx6I,GACA,IAAA4mD,EACAirF,EAAArzI,KAAA28I,YAAAn7I,GAGA6xI,EAAA,KAAArzI,KAAAqzI,OAAA,KAKAA,EAAA36I,SACA26I,EAAArzI,KAAAqzI,QAGAjrF,EAAAirF,EAAA/xI,KAAA,sBACAtB,KAAAq8I,cAAA,CACAh4G,OAAA+jB,EACAmgF,cAAAngF,EACA7jB,eAAAnrC,EAAA+O,OAEA,EAEAw0I,YAAA,SAAAn7I,GACA,WAAAA,EAAApI,IAAA4G,KAAAk7K,KAAAngI,GAAAv5C,EACA,EAEAm7K,UAAA,SAAAn7K,GAQA,MALA,iBAAAA,IACAA,EAAAxB,KAAAm7K,QAAA35K,MAAAxB,KAAAm7K,QAAAhhK,OAAA,WACA4+H,IAAArmG,OAAAlxC,GAAA,QAGAA,CACA,EAEAolI,SAAA,WACA5mI,KAAA4qB,KACA5qB,KAAA4qB,IAAAlC,QAGA1oB,KAAAk8K,QACA30I,WAAA,QACA/8B,IAAAxK,KAAAgmI,gBAEAhmI,KAAAm7K,QACA5zI,WAAA,iBACAqzG,iBAEA56I,KAAAk7K,KAAA91H,IAAAplD,KAAAy8I,QAAAr6I,MAAA,WACAhJ,EAAAkC,KAAA0E,KAAA,mBACA5G,EAAA4G,MAAAjH,SAEAK,EAAA4G,MAAAunC,WAAA,4FAGA,IAEAvnC,KAAAk7K,KAAA94K,MAAA,WACA,IAAAguK,EAAAh3K,EAAA4G,MACAi6D,EAAAm2G,EAAA90K,KAAA,yBACA2+D,EACAm2G,EACAnoI,KAAA,gBAAAgyB,GACA6sE,WAAA,yBAEAspC,EAAA7oI,WAAA,gBAEA,IAEAvnC,KAAAy8I,OAAA3zI,OAEA,YAAA9I,KAAAmjB,QAAA43H,aACA/6I,KAAAy8I,OAAA72I,IAAA,YAEA,EAEA+7F,OAAA,SAAAngG,GACA,IAAAskI,EAAA9lI,KAAAmjB,QAAA2iH,UACA,IAAAA,SAIA1/H,IAAA5E,EACAskI,GAAA,GAEAtkI,EAAAxB,KAAA28K,UAAAn7K,GAEAskI,EADA7zH,MAAAiS,QAAA4hH,GACA1sI,EAAA8N,IAAA4+H,GAAA,SAAA9mB,GACA,OAAAA,IAAAx9G,EAAAw9G,EAAA,IACA,IAEA5lH,EAAA8N,IAAAlH,KAAAk7K,MAAA,SAAA9K,EAAApxD,GACA,OAAAA,IAAAx9G,EAAAw9G,EAAA,IACA,KAGAh/G,KAAAymI,mBAAAX,GACA,EAEAlkC,QAAA,SAAApgG,GACA,IAAAskI,EAAA9lI,KAAAmjB,QAAA2iH,SACA,QAAAA,EAAA,CAIA,QAAA1/H,IAAA5E,EACAskI,GAAA,MACA,CAEA,GADAtkI,EAAAxB,KAAA28K,UAAAn7K,IACA,IAAApI,EAAA0uB,QAAAtmB,EAAAskI,GACA,OAGAA,EADA7zH,MAAAiS,QAAA4hH,GACA1sI,EAAAk0H,MAAA,CAAA9rH,GAAAskI,GAAApZ,OAEA,CAAAlrH,EAEA,CACAxB,KAAAymI,mBAAAX,EAfA,CAgBA,EAEA3kH,KAAA,SAAA3f,EAAAd,GACAc,EAAAxB,KAAA28K,UAAAn7K,GACA,IAAAgd,EAAAxe,KACAq7K,EAAAr7K,KAAAk7K,KAAAngI,GAAAv5C,GACA4mD,EAAAizH,EAAA/5K,KAAA,mBACAo6I,EAAA17I,KAAAs7K,gBAAAD,GACA/wK,EAAA,CACA+wK,MACA3/B,SAEA75F,EAAA,SAAA+6H,EAAA7xJ,GACA,UAAAA,GACAvM,EAAAi+H,OAAA/3H,MAAA,MAGAlG,EAAAqoH,aAAAw0C,EAAA,mBACA3/B,EAAAn0G,WAAA,aAEAq1I,IAAAp+J,EAAAoM,YACApM,EAAAoM,GAEA,EAGA5qB,KAAA26K,SAAAvyH,EAAA,MAIApoD,KAAA4qB,IAAAxxB,EAAAqtB,KAAAzmB,KAAA68K,cAAAz0H,EAAA1nD,EAAA4J,IAEA,aAAAtK,KAAA4qB,IAAAxE,aACApmB,KAAA+nI,UAAAszC,EAAA,mBACA3/B,EAAAzzG,KAAA,oBAEAjoC,KAAA4qB,IACA2hB,MAAA,SAAAxqB,EAAAgJ,EAAA6xJ,GACAlhC,EAAA72G,KAAA9iB,GACAvD,EAAAkoH,SAAA,OAAAhmI,EAAA4J,GAEAu3C,EAAA+6H,EAAA7xJ,EACA,IACAxK,MAAA,SAAAq8J,EAAA7xJ,GACA82B,EAAA+6H,EAAA7xJ,EACA,KAEA,EAEA8xJ,cAAA,SAAAz0H,EAAA1nD,EAAA4J,GACA,IAAAkU,EAAAxe,KACA,OACAgU,IAAAo0C,EAAAngB,KAAA,QACA60I,WAAA,SAAAF,EAAAppJ,GACA,OAAAhV,EAAAkoH,SAAA,aAAAhmI,EACAtH,EAAAuG,OAAA,CAAAi9K,QAAAG,aAAAvpJ,GAAAlpB,GACA,EAEA,EAEAgxK,gBAAA,SAAAD,GACA,IAAAzgL,EAAAxB,EAAAiiL,GAAApzI,KAAA,iBACA,OAAAjoC,KAAA4L,QAAAtK,KAAA,IAAAy3I,IAAArmG,OAAA93C,GACA,KAKA,IAAAxB,EAAA85I,cAGA95I,EAAA6qI,OAAA,UAAA7qI,EAAAqqI,GAAAy3C,KAAA,CACAF,aAAA,WACAh7K,KAAA4kI,YAAA1jI,WACAlB,KAAA+nI,UAAA/nI,KAAAk7K,KAAA,SACA,IAIA9hL,EAAAqqI,GAAAy3C;;;;;;;;GAsBA9hL,EAAA6qI,OAAA,cACArnH,QAAA,SACAuG,QAAA,CACA0iH,QAAA,CACA,+CAEArwD,QAAA,WACA,IAAArlC,EAAA/2C,EAAA4G,MAAAioC,KAAA,SAGA,OAAA7uC,EAAA,OAAAyhC,KAAAsV,GAAAtL,MACA,EACAr7B,MAAA,EAGA8wB,MAAA,0BACAn2B,SAAA,CACAwnI,GAAA,cACAV,GAAA,cACAD,UAAA,gBAEAliI,MAAA,EACAk0K,OAAA,EAGAjuJ,MAAA,KACAqnD,KAAA,MAGA6mG,gBAAA,SAAAj5C,EAAAppI,GACA,IAAAsiL,GAAAl5C,EAAA/7F,KAAA,yBAAAzvC,MAAA,OACA0kL,EAAAr8K,KAAAjG,GACAopI,EACA1oI,KAAA,gBAAAV,GACAqtC,KAAA,mBAAA0K,OAAA5yC,UAAAsiB,KAAA2C,KAAAk4J,EAAAlqK,KAAA,MACA,EAEAmqK,mBAAA,SAAAn5C,GACA,IAAAppI,EAAAopI,EAAA1oI,KAAA,iBACA4hL,GAAAl5C,EAAA/7F,KAAA,yBAAAzvC,MAAA,OACAgJ,EAAApI,EAAA0uB,QAAAltB,EAAAsiL,IAEA,IAAA17K,GACA07K,EAAAz7K,OAAAD,EAAA,GAGAwiI,EAAA8C,WAAA,kBACAo2C,EAAAvqI,OAAA5yC,UAAAsiB,KAAA2C,KAAAk4J,EAAAlqK,KAAA,OAEAgxH,EAAA/7F,KAAA,mBAAAi1I,GAEAl5C,EAAAz8F,WAAA,mBAEA,EAEAi/F,QAAA,WACAxmI,KAAAqmI,IAAA,CACA+2C,UAAA,OACA10C,QAAA,SAIA1oI,KAAAq9K,SAAA,GAGAr9K,KAAAq6I,QAAA,GAGAr6I,KAAA0iJ,WAAAtpJ,EAAA,SACA6uC,KAAA,CACA/H,KAAA,MACA,wBACA,8BAEAr5B,SAAA7G,KAAA9H,SAAA,GAAAi4B,MACAnwB,KAAA+nI,UAAA/nI,KAAA0iJ,WAAA,oCAEA1iJ,KAAAs9K,eAAAlkL,EAAA,GACA,EAEA6tI,WAAA,SAAAr2H,EAAApE,GACA,IAAAgS,EAAAxe,KAEAA,KAAA2/E,OAAA/uE,EAAApE,GAEA,YAAAoE,GACAxX,EAAAgJ,KAAApC,KAAAq9K,UAAA,SAAAziL,EAAAo4C,GACAx0B,EAAA++J,eAAAvqI,EAAApnC,QACA,GAEA,EAEA66H,mBAAA,SAAAj6H,GACAxM,KAAAwM,EAAA,uBACA,EAEAgxK,SAAA,WACA,IAAAh/J,EAAAxe,KAGA5G,EAAAgJ,KAAApC,KAAAq9K,UAAA,SAAAziL,EAAAo4C,GACA,IAAAtyC,EAAAtH,EAAA2yD,MAAA,QACArrD,EAAA2jC,OAAA3jC,EAAA6nI,cAAAv1F,EAAApnC,QAAA,GACA4S,EAAAuQ,MAAAruB,GAAA,EACA,IAGAV,KAAAs9K,eAAAt9K,KAAAs9K,eAAAl4H,IACAplD,KAAA4L,QAAAtK,KAAAtB,KAAAmjB,QAAAmX,OAAAqI,UACAxoB,QAAA,WACA,IAAAvO,EAAAxS,EAAA4G,MACA,GAAA4L,EAAA04B,GAAA,WACA,OAAA14B,EACAtQ,KAAA,mBAAAsQ,EAAAq8B,KAAA,UACAV,WAAA,QAEA,IAEA,EAEAk2I,QAAA,WAGAz9K,KAAAs9K,eAAAl7K,MAAA,WACA,IAAAwJ,EAAAxS,EAAA4G,MACA4L,EAAAtQ,KAAA,qBACAsQ,EAAAq8B,KAAA,QAAAr8B,EAAAtQ,KAAA,oBAEA,IACA0E,KAAAs9K,eAAAlkL,EAAA,GACA,EAEAg9E,KAAA,SAAA11E,GACA,IAAA8d,EAAAxe,KACAqkC,EAAAjrC,EAAAsH,IAAA2jC,OAAArkC,KAAA4L,SAIAkkE,QAAA9vE,KAAAmjB,QAAAmX,OAGA+J,EAAA3rC,SAAA2rC,EAAA/oC,KAAA,mBAIA+oC,EAAA4D,KAAA,UACA5D,EAAA/oC,KAAA,mBAAA+oC,EAAA4D,KAAA,UAGA5D,EAAA/oC,KAAA,sBAGAoF,GAAA,cAAAA,EAAAgF,MACA2+B,EAAAg2G,UAAAj4I,MAAA,WACA,IACAs7K,EADA73K,EAAAzM,EAAA4G,MAEA6F,EAAAvK,KAAA,sBACAoiL,EAAAtkL,EAAA2yD,MAAA,SACA1nB,OAAAq5I,EAAAn1C,cAAAvoI,KACAwe,EAAAuQ,MAAA2uJ,GAAA,IAEA73K,EAAAoiC,KAAA,WACApiC,EAAA6zC,WACAl7B,EAAA67H,QAAAr6I,KAAApF,IAAA,CACAgR,QAAA5L,KACAmwC,MAAAtqC,EAAAoiC,KAAA,UAEApiC,EAAAoiC,KAAA,YAEA,IAGAjoC,KAAA29K,uBAAAj9K,EAAA2jC,GACArkC,KAAAu9K,eAAAl5I,EAAA3jC,GACA,EAEA68K,eAAA,SAAAl5I,EAAA3jC,GACA,IAAA80E,EACAooG,EAAA59K,KAAAmjB,QAAAqyD,QACAh3D,EAAAxe,KACAktI,EAAAxsI,IAAAgF,KAAA,KAEA,oBAAAk4K,KAAApsI,UACAosI,EAAAxoJ,OACA,OAAAp1B,KAAA0gJ,MAAAhgJ,EAAA2jC,EAAAu5I,IAGApoG,EAAAooG,EAAA54J,KAAAqf,EAAA,aAAAtiB,GAGAsiB,EAAA/oC,KAAA,qBASAoF,IACAA,EAAAgF,KAAAwnI,GAEA1uH,EAAAkiI,MAAAhgJ,EAAA2jC,EAAAtiB,GACA,MAEA/hB,KAAA0gJ,MAAAhgJ,EAAA2jC,EAAAmxC,EAEA,EAEAkrE,MAAA,SAAAhgJ,EAAA2jC,EAAAmxC,GACA,IAAAxiC,EAAAK,EAAAwqI,EAAAC,EACAC,EAAA3kL,EAAAuG,OAAA,GAAAK,KAAAmjB,QAAAhf,UA2CA,SAAAA,EAAAzD,GACAq9K,EAAAvzC,GAAA9pI,EACA2yC,EAAA/O,GAAA,YAGA+O,EAAAlvC,SAAA45K,EACA,CA/CAvoG,KAMAxiC,EAAAhzC,KAAAg+K,MAAA35I,IAEA2O,EAAAK,QAAA/xC,KAAA,uBAAAujC,KAAA2wC,IAWAnxC,EAAAC,GAAA,aACA5jC,GAAA,cAAAA,EAAAgF,KACA2+B,EAAA4D,KAAA,YAEA5D,EAAAkD,WAAA,UAIAyL,EAAAhzC,KAAAi+K,SAAA55I,GACAgP,EAAAL,EAAAK,QACArzC,KAAAi9K,gBAAA54I,EAAAgP,EAAApL,KAAA,OACAoL,EAAA/xC,KAAA,uBAAAujC,KAAA2wC,GAKAx1E,KAAA0iJ,WAAAhgH,WAAAl5B,QACAs0K,EAAA1kL,EAAA,SAAAyrC,KAAAwO,EAAA/xC,KAAA,uBAAAujC,SACA0C,WAAA,QAAAjmC,KAAA,UAAAimC,WAAA,QACAu2I,EAAAv2I,WAAA,MAAAjmC,KAAA,QAAAimC,WAAA,MACAu2I,EAAAj3K,SAAA7G,KAAA0iJ,YASA1iJ,KAAAmjB,QAAA65J,OAAAt8K,GAAA,SAAAvG,KAAAuG,EAAAgF,OACA1F,KAAAqmI,IAAArmI,KAAA9H,SAAA,CACAgmL,UAAA/5K,IAIAA,EAAAzD,IAEA2yC,EAAAlvC,SAAA/K,EAAAuG,OAAA,CACA6qI,GAAAnmG,GACArkC,KAAAmjB,QAAAhf,WAGAkvC,EAAA7pC,OAEAxJ,KAAAkpK,MAAA71H,EAAArzC,KAAAmjB,QAAAra,MAMA9I,KAAAmjB,QAAA65J,OAAAh9K,KAAAmjB,QAAAra,MAAA9I,KAAAmjB,QAAAra,KAAAK,QACA00K,EAAA79K,KAAA69K,YAAA19J,aAAA,WACAkzB,EAAA/O,GAAA,cACAngC,EAAA45K,EAAAvzC,IACA/hH,cAAAo1J,GAEA,QAGA79K,KAAA0mI,SAAA,OAAAhmI,EAAA,CAAA2yC,aACA,EAEAsqI,uBAAA,SAAAj9K,EAAA2jC,GACA,IAAA/jC,EAAA,CACAwmJ,MAAA,SAAApmJ,GACA,GAAAA,EAAA4lD,UAAAltD,EAAAqqI,GAAAn9E,QAAAkzF,OAAA,CACA,IAAA2kC,EAAA/kL,EAAA2yD,MAAArrD,GACAy9K,EAAA51C,cAAAlkG,EAAA,GACArkC,KAAA+uB,MAAAovJ,GAAA,EACA,CACA,GAKA95I,EAAA,KAAArkC,KAAA4L,QAAA,KACAtL,EAAAvH,OAAA,WACA,IAAAqlL,EAAAp+K,KAAAg+K,MAAA35I,GACA+5I,GACAp+K,KAAAq+K,eAAAD,EAAA/qI,QAEA,GAGA3yC,GAAA,cAAAA,EAAAgF,OACApF,EAAAkoI,WAAA,SAEA9nI,GAAA,YAAAA,EAAAgF,OACApF,EAAAqoI,SAAA,SAEA3oI,KAAAqmI,KAAA,EAAAhiG,EAAA/jC,EACA,EAEAyuB,MAAA,SAAAruB,GACA,IAAA2yC,EACA70B,EAAAxe,KACAqkC,EAAAjrC,EAAAsH,IAAA6nI,cAAAvoI,KAAA4L,SACAonC,EAAAhzC,KAAAg+K,MAAA35I,GAGA2O,GAUAK,EAAAL,EAAAK,QAIAL,EAAAsrI,UAKA71J,cAAAzoB,KAAA69K,aAIAx5I,EAAA/oC,KAAA,sBAAA+oC,EAAA4D,KAAA,UACA5D,EAAA4D,KAAA,QAAA5D,EAAA/oC,KAAA,qBAGA0E,KAAAm9K,mBAAA94I,GAEA2O,EAAAurI,QAAA,EACAlrI,EAAA3uB,MAAA,GACA1kB,KAAAsoK,MAAAj1H,EAAArzC,KAAAmjB,QAAA3Z,MAAA,WACAgV,EAAA6/J,eAAAjlL,EAAA4G,MACA,IAEAqkC,EAAAyiG,WAAA,mBACA9mI,KAAA8nI,KAAAzjG,EAAA,6BAGAA,EAAA,KAAArkC,KAAA4L,QAAA,IACA5L,KAAA8nI,KAAAzjG,EAAA,UAEArkC,KAAA8nI,KAAA9nI,KAAA9H,SAAA,aAEAwI,GAAA,eAAAA,EAAAgF,MACAtM,EAAAgJ,KAAApC,KAAAq6I,SAAA,SAAAz/I,EAAAiL,GACAzM,EAAAyM,EAAA+F,SAAAq8B,KAAA,QAAApiC,EAAAsqC,cACA3xB,EAAA67H,QAAAz/I,EACA,IAGAo4C,EAAAsrI,SAAA,EACAt+K,KAAA0mI,SAAA,QAAAhmI,EAAA,CAAA2yC,YACAL,EAAAurI,SACAvrI,EAAAsrI,SAAA,KAhDAj6I,EAAAyiG,WAAA,kBAkDA,EAEAm3C,SAAA,SAAAryK,GACA,IAAAynC,EAAAj6C,EAAA,SAAA6uC,KAAA,kBACAutC,EAAAp8E,EAAA,SAAAyN,SAAAwsC,GACAz4C,EAAAy4C,EAAAqG,WAAAzR,KAAA,MAOA,OALAjoC,KAAA+nI,UAAAvyD,EAAA,sBACAx1E,KAAA+nI,UAAA10F,EAAA,4CAEAA,EAAAxsC,SAAA7G,KAAAuiJ,UAAA32I,IAEA5L,KAAAq9K,SAAAziL,GAAA,CACAgR,UACAynC,UAEA,EAEA2qI,MAAA,SAAA35I,GACA,IAAAzpC,EAAAypC,EAAA/oC,KAAA,iBACA,OAAAV,EAAAoF,KAAAq9K,SAAAziL,GAAA,IACA,EAEAyjL,eAAA,SAAAhrI,GAGA5qB,cAAAzoB,KAAA69K,aAEAxqI,EAAAt6C,gBACAiH,KAAAq9K,SAAAhqI,EAAApL,KAAA,MACA,EAEAs6G,UAAA,SAAAl+G,GACA,IAAAz4B,EAAAy4B,EAAAyrC,QAAA,qBAMA,OAJAlkE,EAAAlT,SACAkT,EAAA5L,KAAA9H,SAAA,GAAAi4B,MAGAvkB,CACA,EAEAg7H,SAAA,WACA,IAAApoH,EAAAxe,KAGA5G,EAAAgJ,KAAApC,KAAAq9K,UAAA,SAAAziL,EAAAo4C,GAGA,IAAAtyC,EAAAtH,EAAA2yD,MAAA,QACAngD,EAAAonC,EAAApnC,QACAlL,EAAA2jC,OAAA3jC,EAAA6nI,cAAA38H,EAAA,GACA4S,EAAAuQ,MAAAruB,GAAA,GAIAtH,EAAA,IAAAwB,GAAA7B,SAGA6S,EAAAtQ,KAAA,sBAGAsQ,EAAAq8B,KAAA,UACAr8B,EAAAq8B,KAAA,QAAAr8B,EAAAtQ,KAAA,qBAEAsQ,EAAAk7H,WAAA,oBAEA,IACA9mI,KAAA0iJ,WAAA3pJ,QACA,KAKA,IAAAK,EAAA85I,cAGA95I,EAAA6qI,OAAA,aAAA7qI,EAAAqqI,GAAApwF,QAAA,CACAlwB,QAAA,CACAq7J,aAAA,MAEAP,SAAA,WACA,IAAAjrI,EAAAhzC,KAAA4kI,YAAA1jI,WAIA,OAHAlB,KAAAmjB,QAAAq7J,cACAxrI,EAAAK,QAAA1tC,SAAA3F,KAAAmjB,QAAAq7J,cAEAxrI,CACA,IAIA55C,EAAAqqI,GAAApwF,OAKA,IACA57C,OCz3kBA,gCACA,YACA,aACA,QACA,OACA,WACA,mCACA,mBACA,SAAAgsI,EAAAtqI,EAAAspG,EAAAjgG,EAAAi8B,EAAAggJ,EAAAhuH,GACA,aAEA,MAAAgiD,WAAA0Y,YAAA1oB,EAEAi8E,EAAA,KAEA,IAAAC,EAAA,SAAAxsK,EAAAysK,GACA,OAAAzsK,EAAA7W,KAAAujL,UAAAD,EAAAtjL,KAAAwjL,aACA3sK,EAAA7W,KAAAwjL,YAAAF,EAAAtjL,KAAAujL,SACA,EAEAE,EAAA,SAAA5sK,EAAA6sK,EAAAC,GAGA,IAFA,IAAAC,EAAA,EAEAzmL,EAAAwmL,EAAA,EAAAxmL,EAAAumL,EAAAtmL,OAAAD,IAAA,CAGA,IAFA,IAAA0mL,EAAAH,EAAAvmL,GAEA07B,EAAA,EAAAA,EAAAgrJ,EAAAzmL,OAAAy7B,IAAA,CACA,IAAAyqJ,EAAAO,EAAAhrJ,GAEA,GAAAwqJ,EAAAxsK,EAAAysK,GACA,OAAAM,CACA,CAEAA,GACA,CAEA,OAAAA,CACA,EAEAE,EAAA,SAAAJ,GACA,QAAAvmL,EAAA,EAAAA,EAAAumL,EAAAtmL,OAAAD,IAGA,IAFA,IAAA0mL,EAAAH,EAAAvmL,GAEA07B,EAAA,EAAAA,EAAAgrJ,EAAAzmL,OAAAy7B,IAAA,CACA,IAAAhiB,EAAAgtK,EAAAhrJ,GACA4b,EAAAgvI,EAAA5sK,EAAA6sK,EAAAvmL,GAEA0Z,EAAA5M,SAAAK,IAAA,CACAa,KAAAhO,EAAAumL,EAAAtmL,OAAA,QACAsU,MAAA,IAAAgyK,EAAAtmL,OAAAq3C,EAAA,KAEA,CAEA,EA6BAsvI,EAAA,SAAA/kJ,GACA,IAAA0kJ,EAAA,GACAM,EAAA,KAEAnmL,EAAAiJ,KA3BA,SAAAk4B,GACA,OAAAA,EAAAoyF,MAAA,SAAA6yD,EAAAC,GACA,OAAAD,EAAAjkL,KAAAwjL,YAAAU,EAAAlkL,KAAAwjL,aAAA,EACAS,EAAAjkL,KAAAwjL,YAAAU,EAAAlkL,KAAAwjL,YAAA,EACAS,EAAAjkL,KAAAujL,UAAAW,EAAAlkL,KAAAujL,WAAA,EACAU,EAAAjkL,KAAAujL,UAAAW,EAAAlkL,KAAAujL,UAAA,EACA,CACA,GACA,CAmBAY,CAAAnlJ,IAAA,SAAAnoB,IA/BA,SAAAmtK,EAAAtmI,GACA,QAAAsmI,KAAAhkL,KAAAujL,UAAA7lI,EAAA19C,KAAAwjL,WACA,EA8BAY,CAAAJ,EAAAntK,KACAitK,EAAAJ,GAEAA,EAAA,GACAM,EAAA,MAtBA,SAAAN,EAAA7sK,GACA,QAAA1Z,EAAA,EAAAA,EAAAumL,EAAAtmL,OAAAD,IAAA,CACA,IAAA0mL,EAAAH,EAAAvmL,GAEA,IAAAkmL,EAAAxlL,EAAAmhB,KAAA6kK,GAAAhtK,GAEA,OADAgtK,EAAAt+K,KAAAsR,IACA,CAEA,CAEA,QACA,CAcAwtK,CAAAX,EAAA7sK,IACA6sK,EAAAn+K,KAAA,CAAAsR,KAEA,OAAAmtK,GAAAntK,EAAA7W,KAAAujL,UAAAS,EAAAhkL,KAAAujL,aACAS,EAAAntK,EACA,IAEA6sK,EAAAtmL,OAAA,GACA0mL,EAAAJ,EACA,EAuBAY,EAAA,SAAAh+K,EAAAwF,EAAA86H,EAAA29C,EAAAC,EAAA9sG,GACA,GAAApxE,EAAAkJ,eAAA,aAEA,IAAAi1K,EAAA79C,EAAA5mI,KAAAykL,aACAC,EAAAC,EAAA/9C,GAEAg+C,EAAAt+K,EAAAtG,KAAA6kL,mBACAD,MAAAH,GACA,IAAAK,EAAAJ,EAAAD,EAAAG,EAEAG,EAAAz+K,EAAAtG,KAAA8O,QAAAvE,SAAA+R,aACA0oK,EAAA1+K,EAAAtG,KAAA8O,QAAAwN,aACA2oK,GAAA9gK,WAAA7d,EAAA2D,SAAAK,IAAA,qBACA6Z,WAAA7d,EAAA2D,SAAAK,IAAA,uBACA46K,GAAA/gK,WAAA7d,EAAA2D,SAAAK,IAAA,0BACA6Z,WAAA7d,EAAA2D,SAAAK,IAAA,4BAEAqX,EAAA,SAAAvc,EAAA+iI,GACAg9C,EAAA,IACA,IAAAxqB,EAAAyqB,IAAAC,aACAxnL,EAAAiJ,KAAA6zJ,GAAA,SAAAr0J,GACAA,EAAAtG,KAAAslL,WAAAnhK,WAAA7d,EAAA2D,SAAAK,IAAA,SACAhE,EAAAtG,KAAAulL,UAAA,CACAn6K,IAAA+8H,EAAAt/H,SAAAuC,IACAD,KAAAg9H,EAAAt/H,SAAAsC,KACA0H,OAAAsR,WAAA7d,EAAA2D,SAAAK,IAAA,WACAoH,MAAAyS,WAAA7d,EAAA2D,SAAAK,IAAA,UAEA,GACA,EAEA86K,EAAA,WACA,QAAAjoL,EAAA,EAAAA,EAAAypI,EAAA5mI,KAAAwlL,mBAAApoL,OAAAD,IAAA,CACA,IAAAw9J,EAAA/zB,EAAA5mI,KAAAwlL,mBAAAroL,GACA,GAAAw9J,EAAA0qB,aAAA,GAAArlL,KAAA8gD,IAAAx6C,EAAAtG,KAAAylL,YAAAn/K,EAAAtG,KAAA8gD,IAAAx6C,EAAAtG,KAAAylL,UACA,OAAA9qB,CAEA,CACA,EAEA+qB,EAAA,SAAAtgL,EAAA+iI,GACAw9C,IAEA,IAAAhrB,EAAAyqB,IAAAC,aAEAO,EAAAjrB,EAAA,GACAkrB,EAAAlrB,IAAAv9J,OAAA,GAEA0oL,EAAAC,EAAAH,GACAI,EAAAD,EAAAF,GAEAI,EAAAr/C,EAAAs/C,mBAAAN,EAAA5lL,KAAA8gD,IAAA8lF,EAAA5mI,KAAAmmL,aACAC,EAAAx/C,EAAAs/C,mBAAAL,EAAA7lL,KAAA8gD,IAAA8lF,EAAA5mI,KAAAqmL,WAEAC,EAAA,GAAAL,EAAAv6E,KAAAu6E,EAAAt6E,OACA46E,EAAA,GAAAH,EAAA16E,KAAA06E,EAAAz6E,OAEA66E,EAAArD,EAAAl7C,QAAAg+C,GACAQ,EAAAtD,EAAAl7C,QAAAm+C,GAEA,GAAAhhL,EAAAgF,KAAAslD,SAAA,SACA,IAAAg3H,EAAAT,EAAAv1D,QAAA,OACAi2D,EAAAP,EAAA11D,QAAA,OACA,oBAAAkW,EAAAx8H,OACAs8K,EAAAE,EAAAhB,EAAA37K,SAAAK,IAAA,QAAAs7K,GAAA,GACAe,EAAAC,EAAAf,EAAA57K,SAAAK,IAAA,QAAAu7K,GAAA,IAGA,IAAAgB,EAAAf,EAAAlgK,MACAkhK,EAAAJ,EAAAx0E,KAAA,CAAAC,QAAA00E,IAEAE,EAAAf,EAAA94H,MAAAk2H,EAAA4C,EAAA94H,IAAA,EAAA84H,EAAA94H,IACA85H,EAAAL,EAAAz0E,KAAA,CAAAC,QAAA40E,IAEAP,EAAArD,EAAAl7C,QAAA6+C,GACAL,EAAAtD,EAAAl7C,QAAA++C,GACA7B,EAAA,EACA,SAAAW,EAAAlgK,OAAA,GACAkgK,EAAAlgK,QAAA0gK,IACA1/C,EAAAqgD,wBAAArgD,EAAAqgD,wBAAAhB,GAAA,oBAAAr/C,EAAAx8H,MAAA,CACA,IAAAyL,EAAAowK,EAAAv1D,QAAA,OAAAxe,KAAA,CAAAC,QAAA2zE,EAAAlgK,QACA4gK,EAAArD,EAAAl7C,QAAApyH,GACAsvK,EAAA,EACA,SAAAa,EAAA94H,MAAAq5H,EAAA,CACA1wK,EAAAuwK,EAAA11D,QAAA,OAAAxe,KAAA,CAAAC,QAAA6zE,EAAA94H,MAAAk2H,EAAA4C,EAAA94H,IAAA,EAAA84H,EAAA94H,MACAu5H,EAAAtD,EAAAl7C,QAAApyH,GACAsvK,EAAA,EACA,CAEA,IAAA7lL,EAAAgH,EAAAtG,KAAA8gD,IAAAx6C,EAAAtG,KAAAylL,UACA,MAAAt3I,EAAA7nC,EAAAtG,KAAAknL,aACA/4I,IACAA,EAAAg5I,UAAAvgD,EAAAv/H,OAAAm2B,WAAAgQ,OAAAlC,SAAA6C,EAAAg5I,SAAAX,GACAr4I,EAAAi5I,QAAAxgD,EAAAv/H,OAAAm2B,WAAAgQ,OAAAlC,SAAA6C,EAAAi5I,OAAAX,GACAt4I,EAAA7uC,IAAAsnI,EAAAv/H,OAAAm2B,WAAAgQ,OAAAlC,SAAA6C,EAAA7uC,OAEAgH,EAAAgJ,sBAAA,WACA,EAEA+3K,EAAA,SAAAC,EAAAl8K,EAAAD,EAAA0H,GACA,IAAA00K,EAAAD,EAAAr9K,SAAAK,IAAA,kBACAuI,IACA00K,EAAA10K,UAEA,IAAA8nJ,EAAAyqB,IAAAC,aACAjuJ,EAAAwvJ,EAAAhpK,SAAAzS,GAAAm8K,GACAE,EAAA17K,EAAA+S,QAAA,SAAAgyJ,GACA,OAAAA,GAAAyW,IAAA3sB,EAAAjrG,SAAAmhH,IACAA,EAAA7wK,KAAAynL,WAAA/2D,QAAA,OAAAvjB,OAAA/1E,EAAAs5F,QAAA,OACA,IAEA,OAAA7yH,EAAAk/E,KAAAyqG,GAAA,SAAAE,GACA,OAAAC,EAAAD,EAAAz9K,SAAA,CAAAmB,IAAA,IAAAuvJ,EAAAv9J,OAAAwgB,SAAAxS,GAAAwS,SAAA2pK,EAAAn8K,KAAAyH,OAAA+K,SAAA2pK,EAAA10K,SACA,GACA,EAEA80K,EAAA,SAAAC,EAAAC,GACA,IAAAC,EAAAF,EAAAt9K,IAAA,kBACAy9K,EAAAF,EAKA,OAJAC,EAAAliK,MAAA2pC,EAAAprC,WAAA2jK,EAAA18K,KAAA05K,GACAgD,EAAA56H,IAAAqC,EAAAu4H,EAAAliK,MAAAzB,WAAA2jK,EAAAj1K,QAAAiyK,GACAiD,EAAAniK,MAAA2pC,EAAAprC,WAAA4jK,EAAA38K,KAAA05K,GACAiD,EAAA76H,IAAAqC,EAAAw4H,EAAAniK,MAAAzB,WAAA4jK,EAAAl1K,QAAAiyK,GACAgD,EAAAliK,MAAAmiK,EAAAniK,OAAAkiK,EAAAliK,MAAAmiK,EAAA76H,KAAA46H,EAAA56H,IAAA66H,EAAAniK,OAAAkiK,EAAA56H,IAAA66H,EAAA76H,KACA66H,EAAAniK,MAAAkiK,EAAAliK,OAAAmiK,EAAAniK,MAAAkiK,EAAA56H,KAAA66H,EAAA76H,IAAA46H,EAAAliK,OAAAmiK,EAAA76H,IAAA46H,EAAA56H,KACA66H,EAAAniK,QAAAkiK,EAAAliK,OAAAmiK,EAAA76H,MAAA46H,EAAA56H,GACA,EAEA86H,EAAA,SAAAC,EAAA78K,EAAAD,GACA,IAAAy7H,EAAAqgD,sBAAA,SACA,IAAAiB,EAAAtB,EAAAz7K,EAAA88K,GAAAr3D,KAAAgW,EAAAqgD,yBACAkB,EAAAvhD,EAAAwhD,sBAAAx3D,KAAAg2D,EAAAz7K,EAAA88K,IACA,OAAAC,EAAA,GAAAC,EAAA,CACA,EAEA5D,IACAj+K,EAAA2D,SAAA++B,GAAA,mBACA0uC,EAAApxE,EAAA2D,SACAs7J,UAAA,yBAAA7tF,EACApxE,EAAA2D,SACAs7J,UAAA,YAEAj/J,EAAA2D,SAAAs7J,UAAA,CACAP,QAAAttF,EACAsnF,KAAA,GAAA8lB,GACAhmB,YAAA,YACAl5I,MAAAjE,EACAyH,KAAAs8J,EACA54K,OAAA,SAAA1H,EAAA+iI,GACAA,EAAAt/H,SAAAsC,KAAAk9K,EAAAlgD,EAAAt/H,SAAAsC,MAAA7E,EAAAtG,KAAAslL,WACAn9C,EAAAn/H,KAAA0I,MAAApL,EAAAtG,KAAAulL,UAAA7zK,MACAy2H,EAAAt/H,SAAAuC,IAAAmkD,EAAA44E,EAAAt/H,SAAAuC,IAAA05K,GACA38C,EAAAn/H,KAAA6J,OAAA08C,EAAA44E,EAAAn/H,KAAA6J,OAAAiyK,GAEAl+C,EAAA5mI,KAAAsoL,eAAAhiL,EAAAtG,KAAAuoL,kBAAAlB,EAAA/gL,EAAA6hI,EAAAt/H,SAAAuC,IAAA+8H,EAAAt/H,SAAAsC,KAAAg9H,EAAAn/H,KAAA6J,UACAs1H,EAAAt/H,SAAAuC,IAAAw7H,EAAA5mI,KAAAsoL,aAAAE,MACArgD,EAAAn/H,KAAA6J,OAAA+zH,EAAA5mI,KAAAsoL,aAAAG,UAGAtgD,EAAAn/H,KAAA6J,OAAAs1H,EAAAn/H,KAAA6J,QAAAoyK,EAAAC,GAEAt+C,EAAA5mI,KAAAsoL,aAAA,CACAE,MAAArgD,EAAAt/H,SAAAuC,IACAq9K,SAAAtgD,EAAAn/H,KAAA6J,OAEA,KAIA2xK,GACAl+K,EAAA2D,SAAA04J,UAAA,CACA/D,KAAA,oBAAAh4B,EAAAx8H,KAAA,WACA40J,KAAA,CAAA+lB,EAAAD,GACAhmB,YAAA,YACA/Z,QAAA,EACAwa,kBAAA,IACAC,YAAA,EACA55I,MAAAjE,EACAyH,KAAAs8J,EACA73H,KAAA,SAAAzoD,EAAA+iI,GACA,IAAAugD,EAAAtD,IAAAC,aACA,qBAAAz+C,EAAAx8H,KACA9D,EAAA2D,SAAA04J,UAAA,CAAA/D,KAAA,MACA8pB,EAAAtrL,OAAA,EACAkJ,EAAA2D,SAAA04J,UAAA,CAAA/D,KAAA,MAEAt4J,EAAA2D,SAAA04J,UAAA,CAAA/D,KAAA,SAEAz2B,EAAAt/H,SAAAsC,KAAAk9K,EAAAlgD,EAAAt/H,SAAAsC,MACAg9H,EAAAt/H,SAAAuC,IAAAmkD,EAAA44E,EAAAt/H,SAAAuC,IAAA05K,GACAx+K,EAAA2D,SAAAK,IAAA,SAAAq+K,KAEA,IAAAC,EAAA,GACAC,GAAA,EACA,GAAAviL,EAAAtG,KAAAuoL,iBAYA,IAAAprL,EAAA,EAAAA,EAAAurL,EAAAtrL,OAAAD,IAAA,CACAmT,EAAAo4K,EAAAvrL,GAEA,GADA2rL,EAAAd,EAAA13K,EAAA63H,EAAAt/H,SAAAuC,IAAA+8H,EAAAt/H,SAAAsC,MACA,CACA09K,GAAA,EACA,KACA,CACA,MAlBA,QAAA1rL,EAAA,EAAAA,EAAAurL,EAAAtrL,OAAAD,IAAA,CACA,IAAAmT,EAAAo4K,EAAAvrL,GACA2rL,EAAAd,EAAA13K,EAAA63H,EAAAt/H,SAAAuC,IAAA+8H,EAAAt/H,SAAAsC,MACA49K,EAAA1B,EAAA/2K,EAAA63H,EAAAt/H,SAAAuC,IAAA+8H,EAAAt/H,SAAAsC,MAEA,GADAy9K,EAAArjL,KAAAwjL,GACAA,GAAAD,EAAA,CACAD,GAAA,EACA,KACA,CACA,CAYAjiD,EAAA5mI,KAAAsoL,cAAAO,IACA1gD,EAAAt/H,SAAAuC,IAAAw7H,EAAA5mI,KAAAsoL,aAAAE,MACArgD,EAAAt/H,SAAAsC,KAAAy7H,EAAA5mI,KAAAsoL,aAAAU,QAGApiD,EAAA5mI,KAAAsoL,aAAA,CACAE,MAAArgD,EAAAt/H,SAAAuC,IACA49K,OAAA7gD,EAAAt/H,SAAAsC,MAGAtN,EAAAiJ,KAAA4hL,GAAA,SAAA3rK,GACA,IAAA+qK,EAAA/qK,EAAA9S,SAAAK,IAAA,gBACAyS,EAAA9S,SAAAK,IAAA,CACAc,IAAA08K,EAAA18K,IAAA+8H,EAAAt/H,SAAAuC,IACAD,KAAAg9H,EAAAt/H,SAAAsC,KACAuG,MAAAszK,GAEA,GACA,IAIA,IAAAG,EAAA,SAAArjJ,GACA,IAAA64H,EAAAyqB,IAAAC,aACAxnL,EAAAiJ,KAAAgF,GAAA,SAAA+kK,GACAA,GAAAvqK,GAAAq0J,EAAAjrG,SAAAmhH,IACAA,EAAA5mK,SAAAK,IAAA,UAAAw3B,EACA,GACA,EAEAumJ,EAAA,SAAAY,EAAAC,EAAAC,GAIA,OAHAD,GAAAC,IACAD,EAAAlpL,KAAAslL,WAAA,GAEA/1H,GAAA25H,IAAAlpL,KAAAslL,WAAAh/K,EAAAtG,KAAAslL,YAAAP,EAAA,GAAAA,EAAA,GAAAkE,EAAAlE,EACA,EAEA6B,EAAA,SAAAz7K,EAAA+9K,EAAAC,GACA,IAAAC,EAAAf,EAAAlkK,WAAAhZ,GAAA+9K,EAAAC,GAAApE,EACAsE,EAAA,IAAA5sL,KAAAysL,IAAAlpL,KAAAynL,WAAAnhL,EAAAtG,KAAAynL,YAEA,OADA4B,EAAA3sL,QAAA2sL,EAAA1sL,UAAAysL,GACAjyE,EAAAmnB,WAAA+qD,GAAA34D,QAAA,MACA,EAGAi1D,EAAA,WACAr/K,EAAA2D,SAAAK,IAAA,SAAAq+K,IAAA,MACAriL,EAAA2D,SAAAK,IAAA,MAAAg/K,IAAA,KACA,EAEAvD,EAAA,SAAAwD,GACA,IAAAt9H,EAAAu9H,EAAAD,GAAA7E,EAAAD,EAEA7+J,EAAAghH,EAAA5mI,KAAAypL,SAAAC,EAAAH,GAAA7E,EAAAD,EAGA,OACA7+J,QACAsnC,IAJAtnC,EAAAqmC,EAMA,EAEA08H,EAAA,WACA,OAAAp5H,EAAAprC,WAAA7d,EAAA2D,SAAAK,IAAA,WAAAw6K,EACA,EAEAwE,EAAA,WACA,OAAA/5H,EAAAprC,WAAA7d,EAAA2D,SAAAK,IAAA,QAAAw6K,EACA,EAEA0E,EAAA,SAAAN,GACA,OAAA35H,EAAAprC,WAAA+kK,EAAAj/K,SAAAK,IAAA,WAAAw6K,EACA,EAEA4E,EAAA,SAAAR,GACA,OAAA35H,EAAAprC,WAAA+kK,EAAAj/K,SAAAK,IAAA,QAAAw6K,EACA,EAEAv1H,EAAA,SAAAo6H,EAAAj4E,GACA,IAAAk4E,GAAA,EACAD,EAAA,IACAA,KACAC,GAAA,GAEA,IAAAC,EAAAF,EAAAj4E,IAAA,EAAAi4E,IAAAj4E,EAAAi4E,GAAAj4E,EAAAi4E,EAAAj4E,GAEA,OADAk4E,IAAAC,MACAA,CACA,CA9SA,CA+SA,EAEAlF,EAAA,SAAA/9C,GACA,IAAAkjD,EAAA,IAAAljD,EAAA38H,SAAA0iC,KAAA,SAAApoB,QAAA,UAEA,OADAJ,WAAArmB,EAAAgsL,EAAA,cAAAx/K,IAAA,UAEA,EAcAy/K,EAAA,SAAA/sK,EAAAhd,EAAAgqL,GACA,IAbAlhL,EAAA4oG,EACAm4E,EAYAI,EAAAnsL,EAAAkf,EAAA+rB,QAAA7iC,QACA6C,EAAAiU,EAAAhN,QACAk6K,EAAAD,EAAAjqL,EAAAykL,aAAA17K,EAEAohL,EAAAnqL,EAAAmqL,kBAAAnqL,EAAAykL,aACA,OAAAuF,GAlBAlhL,EAmBAohL,EAnBAx4E,EAmBAy4E,GAlBAN,EAAApwK,KAAA81C,MAAAzmD,EAAA4oG,QACA0xE,EACAyG,EAAA,EAEAA,GAGA,SAAA/gL,EAAA4oG,GACA,OAAAj4F,KAAAM,MAAAjR,EAAA4oG,IACA,CAWA33F,CAAAmwK,EAAAC,EACA,EAEAC,EAAA,SAAAxjD,EAAAyjD,GAGA,GAFAzjD,EAAA7sF,aAAA,MAEAswI,EAAAjtL,OACA,OAAA8J,IAEA,IAAA4E,EAAA86H,EAAAv/H,OAAA0E,YAAAC,YAAAq+K,GAEAtG,EAAAj4K,GACA,IAAAu5K,EAAA,GACAG,EAAA,GACAlS,EAAA,GAqDA,OAnDAz1K,EAAAiJ,KAAAgF,GAAA,SAAAxF,GACAsgI,EAAAh6H,QAAAtG,GAnXA,SAAAsgI,EAAAtgI,IACA,IAAA6uD,GAAAC,wBAAA9uD,EAAA2D,SAAA3D,EAAA,MACA,WACAA,IAAAsgI,EAAA7sF,eACAzzC,EAAAtG,KAAA+jC,OAAAmB,WAAA5+B,EAAAtG,KAAA+jC,OAAAmB,SAAA78B,UACAu+H,EAAA7sF,cACA5W,EAAA0B,YAAA+hG,EAAA7sF,aAAA/5C,KAAA+jC,OAAAqiB,OAAAwgF,EAAA7sF,cACA5W,EAAA0B,YAAAv+B,EAAAtG,KAAA+jC,OAAAmB,SAAA5+B,IAGAsgI,EAAA7sF,aAAAzzC,GAGAA,EAAAgJ,sBAAA,UACA,IAEAhJ,EAAAtG,KAAAoI,SAAAq+F,QAAAp+F,SACA/B,EAAA2D,SAAAI,SAAA,YAEA,CAiWAigL,CAAA1jD,EAAAtgI,GACAA,EAAAe,OAAAu/H,EAAAv/H,OAAAkjL,KAAAjkL,EAAAtG,KAAA8gD,IAAA8lF,EAAAtgI,EAAAtG,KAAAylL,UAEAJ,EAAA,GACAxnL,EAAAiJ,KAAAgF,GAAA,SAAAiR,GACAzW,GAAAyW,EAAA/c,KAAA8gD,IAAA/jC,EAAA/c,KAAAylL,YACAn/K,EAAAtG,KAAA8gD,IAAAx6C,EAAAtG,KAAAylL,YACAnS,EAAA5jH,SAAA3yC,EAAA/c,KAAA8gD,IAAAx6C,EAAAtG,KAAAylL,YAEAJ,EAAA9/K,KAAAwX,EAEA,IACAu2J,EAAA/tK,KAAAe,EAAAtG,KAAA8gD,IAAAx6C,EAAAtG,KAAAylL,WAEAJ,EAAAjoL,OAAA,GACAooL,EAAAjgL,KAAA,CAAA8/K,gBACA,IAEAxnL,EAAAiJ,KAAA0+K,GAAA,SAAAtoK,GACA,IAAAsnK,GAAA,EACA,GAAA59C,EAAAqgD,sBAAA,CACA,IAAAzD,EAAA58C,EAAAs/C,mBAAAhpK,EAAAmoK,aAAA,GAAArlL,KAAA8gD,IAAA8lF,EAAA5mI,KAAAmmL,aACA5C,EAAA38C,EAAAs/C,mBAAAhpK,EAAAmoK,aAAA,GAAArlL,KAAA8gD,IAAA8lF,EAAA5mI,KAAAqmL,WACAmE,EAAA5jD,EAAAqgD,wBACAwD,EAAA7jD,EAAAwhD,sBACAsC,EAAA76D,EAAAE,cAAAy6D,EAAAC,GAEAE,EAAAD,EAAAjkL,SAAA+8K,GACAoH,EAAAF,EAAAjkL,SAAA88K,GAEAiB,GAAAmG,IAAAC,EAEA,QAAA/xJ,EAAA,EAAAA,EAAA3b,EAAAmoK,aAAAjoL,OAAA,EAAAy7B,IACAyrJ,EAAApnK,EAAAmoK,aAAAxsJ,GAAA/sB,EAAA86H,GAAA,EAAA49C,GAEAgG,GAAAhH,GACAc,EAAApnK,EAAAmoK,aAAA,GAAAv5K,EAAA86H,GAAA,EAAA49C,EAAA,KAEAiG,GAAAlH,GACAe,EAAApnK,EAAAmoK,aAAAnoK,EAAAmoK,aAAAjoL,OAAA,GAAA0O,EAAA86H,GAAA,EAAA49C,EAAA,IAEA,MACAF,EAAApnK,EAAAmoK,aAAA,GAAAv5K,EAAA86H,GAAA,YAGA,IAEAA,EAAA5mI,KAAAwlL,qBAEAt+K,EAAA+E,IAAApO,EAAA+N,IAAAE,GAAA,SAAAxF,GACA,OAAAA,EAAAiG,OAAAjG,EAAAtG,KAAA8O,QACA,IACA,EAEA,OAEAs7K,SAEAS,kBAAA,SAAAC,EAAA/uE,EAAA/+F,GACA,OAAAA,EAAAqsI,QAAA,OAAAyhC,IAAApmL,KAAAgO,YAAAhO,KAAAmF,WAAA,GAAA7J,KAAA+qL,qBAAArmL,KAAAmF,WAAA,GAAA7J,KAAAoI,SAAA4iL,UAAAtmL,KAAAmF,WAAA,GAAA7J,KAAAoI,SAAA4iL,SAAA3iL,QAAA,CACA3D,KAAAgO,YACA7U,EAAAiJ,KAAApC,KAAA8F,MAAA,SAAAlE,GACAA,EAAA2D,SACAK,IAAA,CACAs8C,OAAA,UACA,wBACA9kB,QAAA,IAEA,IAEA,IAAAmpJ,EAAAlB,EAAA/sK,EAAAtY,KAAA1E,MAAA,GAEAynL,EAAA/iL,KAAAgqG,KAAAgiB,QAAA,OAAAxe,KAAA,CAAAC,QAAAztG,KAAA1E,KAAAypL,WACAyB,EAAAxmL,KAAAgqG,KAAAgiB,QAAA,OAAAxe,KAAA,CAAAC,QAAAztG,KAAA1E,KAAAmrL,SAEAt0K,EAAA/Y,EAAAuG,QAAA,KAAAK,KAAAmF,WAAA,IACA7J,KAAA,CACA8O,QAAAg8K,EACArD,aACAyD,WACAnvE,YACAynE,YAAAiE,EAAAv1E,KAAA,CAAAC,QAAA84E,IACA1H,UAAAkE,EAAAv1E,KAAA,CAAAC,QAAA84E,IACAnqI,IAAA,GACA/xC,SAAArK,KAAA1E,KAAA+O,SACAq8K,cAAA1mL,KAAA1E,KAAAorL,cACA3F,SAAA/gL,KAAA1E,KAAAylL,YAIAhgL,EAAAf,KACA0lL,EAAA1lL,KAAA,CAAAmS,IAAA7O,MAAA,SAAAqjL,GACA,IAAA/kL,EAAA+kL,EAAA,GACA/kL,EAAA+K,gBACA/K,EAAA2D,SAAAK,IAAA,yBAEA7E,EAAA6lL,aAAA,CACAL,mBACAM,YAAA,EACAC,aAAA,EACAv7K,MAAA+M,EAAA/M,MACAC,MAAA8M,EAAA9M,MACA5J,OAEA,GA7CA,CA8CA,EAEAmlL,gBAAA,SAAAzuK,GACA,OAAAA,EAAAqsI,QAAA3kJ,KAAA4mL,cAAA5mL,KAAA4mL,aAAAC,WAAA,CAUA,GATA7mL,KAAAgO,YACA7U,EAAAiJ,KAAApC,KAAA8F,MAAA,SAAAlE,GACAA,EAAA2D,SACAK,IAAA,CACAs8C,OAAA,aACA,oBACA9kB,QAAA,GAEA,IACAp9B,KAAA4mL,aAAAE,YAGA,CACA9mL,KAAA4mL,aAAAhlL,KAAA2D,SAAAK,IAAA,yBAEA,IAAAw8K,EAAApiL,KAAA4mL,aAAAhlL,KAAAtG,KAAAwjL,YACAwD,EAAAtiL,KAAA4mL,aAAAhlL,KAAAtG,KAAAujL,UAEAuD,EAAA35E,OAAA65E,IACAA,EAAA90E,KAAA,CAAAC,QAAAztG,KAAA4mL,aAAAhlL,KAAAtG,KAAA6kL,oBAAAngL,KAAA1E,KAAAykL,eAEA,IAAAjnJ,EAAA94B,KAAA2C,OAAAm2B,WACA,MAAA2Q,EAAAzpC,KAAA4mL,aAAAhlL,KAAAtG,KAAA0rL,aACAv9I,IACAzpC,KAAAuiL,uBACA94I,EAAAg5I,UAAA3pJ,EAAAgQ,OAAAlC,SAAA6C,EAAAg5I,SAAAhE,EAAAl7C,QAAAvjI,KAAAuiL,wBAAA/0E,KAAA,CAAAuB,KAAA/uG,KAAA4mL,aAAAhlL,KAAAtG,KAAA+7G,UAAA5J,QAAA20E,MACA34I,EAAAi5I,QAAA5pJ,EAAAgQ,OAAAlC,SAAA6C,EAAAi5I,OAAAjE,EAAAl7C,QAAAvjI,KAAAuiL,wBAAA/0E,KAAA,CAAAuB,KAAA/uG,KAAA4mL,aAAAhlL,KAAAtG,KAAA+7G,UAAA5J,QAAA60E,QAEA74I,EAAAg5I,UAAA3pJ,EAAAgQ,OAAAlC,SAAA6C,EAAAg5I,SAAAhE,EAAAl7C,QAAA6+C,IACA34I,EAAAi5I,QAAA5pJ,EAAAgQ,OAAAlC,SAAA6C,EAAAi5I,OAAAjE,EAAAl7C,QAAA++C,MAIAtiL,KAAA4mL,aAAAhlL,KAAAgJ,sBAAA,WACA,MAxBA5K,KAAA4mL,aAAAhlL,KAAA2D,SAAAxM,gBACAiH,KAAA4mL,aAAAhlL,KAwBA5B,KAAA4mL,aAAA,CACAL,iBAAA,KACAM,YAAA,EACAC,aAAA,EACAllL,KAAA,KAxCA,CA0CA,EAEAqlL,kBAAA,SAAA3uK,GACA,GAAAtY,KAAA4mL,cAAA5mL,KAAA4mL,aAAAC,WAAA,CACA9xK,KAAA6wC,KAAA7wC,KAAAud,IAAAha,EAAA/M,MAAAvL,KAAA4mL,aAAAr7K,MAAA,GAAAwJ,KAAAud,IAAAha,EAAA9M,MAAAxL,KAAA4mL,aAAAp7K,MAAA,IACAy0K,EAAAjgL,MACA,IACAA,KAAA4mL,aAAAE,aAAA,GAGA,IAAAI,EAAA7B,EAAA/sK,EAAAtY,KAAA1E,MAAA,GAEAynL,EAAA/iL,KAAAgqG,KAAAgiB,QAAA,OAAAxe,KAAA,CAAAC,QAAAztG,KAAA1E,KAAAypL,WAEAoC,EAAAnnL,KAAA4mL,aAAAhlL,KAAAtG,KAAAwjL,YACAsI,EAAApnL,KAAA4mL,aAAAhlL,KAAAtG,KAAAujL,UAEAqI,GAAAlnL,KAAA4mL,aAAAL,kBACAvmL,KAAA4mL,aAAAhlL,KAAAtG,KAAAwjL,YAAAiE,EAAAv1E,KAAA,CAAAC,QAAAztG,KAAA4mL,aAAAL,mBACAvmL,KAAA4mL,aAAAhlL,KAAAtG,KAAAujL,UAAAkE,EAAAv1E,KAAA,CAAAC,QAAAy5E,MAGAlnL,KAAA4mL,aAAAhlL,KAAAtG,KAAAwjL,YAAAiE,EAAAv1E,KAAA,CAAAC,QAAAy5E,IACAlnL,KAAA4mL,aAAAhlL,KAAAtG,KAAAujL,UAAAkE,EAAAv1E,KAAA,CAAAC,QAAAztG,KAAA4mL,aAAAL,oBAGA,IAAAc,GAAA,EACA,IAAArnL,KAAA4mL,aAAAhlL,KAAAtG,KAAAuoL,iBAAA,CACA,IAAAyD,EAAAtnL,KAAA4mL,aAAAhlL,KAAAtG,KAAAwjL,YACAyI,EAAAvnL,KAAA4mL,aAAAhlL,KAAAtG,KAAAujL,UAEA7+K,KAAAuiL,wBACA+E,EAAAtnL,KAAAuiL,wBAAA/0E,KAAA,CAAAuB,KAAA/uG,KAAA4mL,aAAAhlL,KAAAtG,KAAA+7G,UAAA5J,QAAAztG,KAAA4mL,aAAAhlL,KAAAtG,KAAAwjL,cACAyI,EAAAvnL,KAAAuiL,wBAAA/0E,KAAA,CAAAuB,KAAA/uG,KAAA4mL,aAAAhlL,KAAAtG,KAAA+7G,UAAA5J,QAAAztG,KAAA4mL,aAAAhlL,KAAAtG,KAAAujL,aAGA,IAAAiE,EAAA9iL,KAAA8F,KAAAqU,QAAA,SAAAgyJ,GACA,OAAAA,EAAA7wK,KAAAynL,WAAA/2D,QAAA,OAAAvjB,OAAA6+E,EAAAt7D,QAAA,OACA,IAEAs7D,IAAA95E,KAAA,CAAAC,QAAAztG,KAAA4mL,aAAAhlL,KAAAtG,KAAAwjL,cAGA,IADA,IAAA0I,EAAAr8D,EAAAE,cAAAi8D,EAAAC,GACA9uL,EAAA,EAAAA,EAAAqqL,EAAApqL,OAAAD,IAAA,CACA,IAAAuqL,EAAAF,EAAArqL,GACAgvL,EAAAD,EAAAzlL,SAAAihL,EAAA1nL,KAAAwjL,cAAAkE,EAAA1nL,KAAAwjL,YAAAr2E,OAAA6+E,GACAI,EAAAF,EAAAzlL,SAAAihL,EAAA1nL,KAAAujL,YAAAmE,EAAA1nL,KAAAujL,UAAAp2E,OAAA8+E,GACA,GAAAE,GAAAC,EAAA,CACAL,GAAA,EACA,KACA,CACA,CACA,CAEAA,GAGArnL,KAAA4mL,aAAAhlL,KAAAtG,KAAAwjL,YAAAqI,EACAnnL,KAAA4mL,aAAAhlL,KAAAtG,KAAAujL,UAAAuI,GAHApnL,KAAA4mL,aAAAhlL,KAAA+K,eApDA,CAyDA,EAGA,IAEAlV,OCprBA,wBAEA,WACA,aAEA,IAAAkwL,EAAA,SAAAhlL,GACA3C,KAAA4nL,kBAAA,GACA5nL,KAAA2C,QACA,EA0BA,OAxBAglL,EAAA5nL,UAAA8nL,cAAA,SAAAnwI,IACA,IAAA13C,KAAA4nL,kBAAA9uL,QAAA4+C,IAEA13C,KAAA4nL,kBAAA/mL,KAAA62C,EACA,EAEAiwI,EAAA5nL,UAAA+nL,mBAAA,WACA,IAAA/mL,EAAAf,KACA7G,EAAA0I,QAAA7B,KAAA4nL,mBAAA,SAAAlwI,GACA,IAAA7M,EAAA9pC,EAAA4B,OAAAmM,YAAAi5K,oCAAArwI,GAEA7M,EAAAnyC,QACAqI,EAAA4B,OAAAm1C,gBAAA7M,SACAyM,GACA,SAAA31B,GACA5oB,EAAAiJ,KAAAyoC,GAAA,SAAAlqC,GACAA,EAAAsO,QAAA8S,EACA,GACA,GACA3oB,EAAA+O,KAEA,GACA,EAEAw/K,CACA,IClCAlwL,OAAA,0EAAA0B,GAAA,gBAAAiH,KACA,IAAA4nL,IAAAC,IAAA,GAAAC,IAAAj2K,MAAAlS,UAAAiT,KAAAm1K,MAAA,WAAAF,KAAAC,IAAAljK,KAAA9jB,UAAA,KACA,KAAAd,KAAA,GACA6nL,KAAA,4cAEA,OAAAA,GACA,KAEAxwL,OCTA,yCACA,SACA,aACA,QACA,eACA,YACA,UACA,mCACA,+BACA,oBACA,iDACA,mBACA,SAAA2B,EAAAD,EAAAspG,EAAA1xF,EAAAq3K,EAAA9iL,EAAAm5K,EAAA4J,EAAAV,EAAAppJ,EAAAkyB,GACA,aAEA,MAAAgiD,YAAAhQ,EAEA,IAAA1mE,EAAA,CACAzgC,KAAA,CACAo8C,WAAA,KACA4wI,eAAA,YACAC,WAAA,KACA9G,YAAA,KACAE,UAAA,KACA6G,uBAAA,mBACAC,qBAAA,iBACA1I,aAAA,GACAgF,SAAA,EACA0B,OAAA,KACAiC,YAAA,IACAC,mBAAA,QACA73H,eAAA,KAEA3rD,WAAA,CACA,CACA7J,KAAA,CAAAoK,KAAA,mBAKA,SAAAkjL,EAAAzlK,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAAmlC,KAAAxC,EAAA5Y,GAEAnjB,KAAAwiI,aAAA,KACAxiI,KAAAimI,SAAA,EACA,CAEA3gI,EAAA3F,OAAAipL,EAAAtjL,GAEAsjL,EAAAhvJ,SAAA,kBAEAgvJ,EAAA7oL,UAAA4M,cAAAvT,EAAA+O,KAEAygL,EAAA7oL,UAAAxF,KAAA,WACAyF,KAAAgQ,eAAA,IAAA23K,EAAA3nL,KAAA2C,QACA3C,KAAA6oL,sBACA7oL,KAAA8oL,6BACA,EAEAF,EAAA7oL,UAAA8oL,oBAAA,WACA,GAAAzvL,EAAA8tC,UAAAlnC,KAAA1E,KAAAytL,uBAAA,CAEA,IAAAC,EAAAj0K,KAAAM,OAAArV,KAAA1E,KAAAytL,sBAAA/oL,KAAA1E,KAAAypL,UAAA/kL,KAAA1E,KAAAykL,cACAkJ,EAAAjpL,KAAAkpL,OAAAxmJ,SAAA,aAAAqY,GAAAiuI,GACAhpL,KAAAmpL,WAAAr7K,UAAA9N,KAAAmpL,WAAAr7K,YAAAm7K,EAAA9kL,WAAAuC,IAJA,CAKA,EAEAkiL,EAAA7oL,UAAA+oL,4BAAA,WACA,GAAA9oL,KAAA1E,KAAA8tL,wBAAA,CACA,IAAAC,EAAArpL,KAAA2C,OAAAm2B,WAAAwwJ,oBAAAtpL,KAAA1E,KAAA8tL,wBAAAppL,KAAAupL,qBAAAhnL,KAAAvC,OAAA,GAEAA,KAAAimI,WAAAjmI,KAAAimI,SAAA,IAEAjmI,KAAAimI,SAAAplI,KAAAwoL,EACA,CACA,EAEAT,EAAA7oL,UAAAwpL,qBAAA,WACA,IAAAC,EAAAxpL,KAAA2C,OAAAm2B,WAAAvsB,SAAAvM,KAAA1E,KAAA8tL,yBAEA,GAAAhwL,EAAA8tC,UAAAsiJ,GAAA,CAEA,IAAAR,EAAAj0K,KAAAM,OAAAm0K,EAAAxpL,KAAA1E,KAAAypL,UAAA/kL,KAAA1E,KAAAykL,cACAkJ,EAAAjpL,KAAAkpL,OAAAxmJ,SAAA,aAAAqY,GAAAiuI,GACAhpL,KAAAmpL,WAAAr7K,UAAA9N,KAAAmpL,WAAAr7K,YAAAm7K,EAAA9kL,WAAAuC,IAJA,CAKA,EAEAkiL,EAAA7oL,UAAA8iI,iBAAA,WACA,GAAA7iI,KAAA1E,KAAAo8C,WAAA,CAGA,IAAA+xI,EAAAzpL,KAAAgqG,KAEAjpG,EAAAf,KACAA,KAAA2C,OAAAm1C,gBAAAzM,mBACArrC,KAAA1E,KAAAo8C,YACA,SAAA31B,GACA0nK,EAAAhhF,OAAA1nG,EAAAipG,OACAjpG,EAAA2oL,UAAA3nK,EAAA4W,QAAA5W,EAAAoW,QACA,IAEAn4B,KAAA1E,KAAAquL,oBAGA3pL,KAAA2C,OAAAm1C,gBAAAzM,mBACArrC,KAAA1E,KAAAquL,oBACA,SAAA5nK,GACA0nK,EAAAhhF,OAAA1nG,EAAAipG,OACAjpG,EAAA6oL,mBAAA7nK,EAAAoW,QACA,GApBA,CAqBA,EAEAywJ,EAAA7oL,UAAA4iI,gBAAA,SAAA34B,GACAhqG,KAAAwiI,aAAAx4B,CACA,EAEA4+E,EAAA7oL,UAAA6iI,kBAAA,WACA5iI,KAAAwiI,aAAA,IACA,EAEAomD,EAAA7oL,UAAA0iI,gBAAA,WACA,OAAAziI,KAAAwiI,YACA,EAEAomD,EAAA7oL,UAAA8H,OAAA,WACA7H,KAAA6pL,wBACA7pL,KAAA8pL,YACA9pL,KAAA+pL,kBACA/pL,KAAAo2E,KAAAq8B,EAAAzT,MACA,EAEA4pF,EAAA7oL,UAAA+pL,UAAA,WACA9pL,KAAAmpL,WAAAnpL,KAAAuF,SAAAjE,KAAA,kBACAtB,KAAAgqL,OAAAhqL,KAAAuF,SAAAjE,KAAA,kBACAtB,KAAAkpL,OAAAlpL,KAAAuF,SAAAjE,KAAA,UACAtB,KAAAiqL,WAAAjqL,KAAAuF,SAAAjE,KAAA,cAEAtB,KAAAuF,SAAAjE,KAAA,kBACA5F,GAAA,QAAAsE,KAAA6uE,SAAAtsE,KAAAvC,OACAA,KAAAuF,SAAAjE,KAAA,cACA5F,GAAA,QAAAsE,KAAA4yD,KAAArwD,KAAAvC,MACA,EAEA4oL,EAAA7oL,UAAAgqL,gBAAA,WACA,IAAAG,EAAA/wL,EAAA+hF,MAAAl7E,KAAA1E,KAAAypL,SAAA/kL,KAAA1E,KAAAmrL,OAAAzmL,KAAA1E,KAAAykL,cAEAh/K,EAAAf,KACAkpL,EAAA/vL,EAAA+N,IAAAgjL,GAAA,SAAA7nG,GACA,IAAA2nB,EAAA,IAAAjyG,KAAA,UAGA,OAFAiyG,EAAAkrD,WAAA7yE,GAEAjpF,EAAA,WACAuM,SAAA,YACAkmC,OAAAzyC,EAAA,YACAyhC,KAAAutJ,EAAAzoK,OAAAqqF,EAAAjpG,EAAAzF,KAAAqtL,qBACA,IACA3oL,KAAAkpL,OAAAr9I,OAAAq9I,GAEA,IAAAe,EAAA9wL,EAAA+N,IAAAgjL,GAAA,SAAAC,GACA,IAAAC,EAAAhxL,EAAA,WACAuM,SAAA,YACArK,KAAA,OAAA6uL,GAaA,OAXA,IAAA15H,GAAAC,wBAAA05H,EAAArpL,GACA,SAAAuX,GACA,OAAAvX,EAAAspL,kBAAAF,EACA,eACAppL,EAAAupL,gBAAAH,EACA,IAEAC,EAAA1uL,GAAA,YAAA2sL,EAAAlC,kBAAA5jL,KAAAxB,IAAAkpL,WAAA,IACAG,EAAA1uL,GAAA,UAAA2sL,EAAAtB,gBAAAxkL,KAAAxB,IACAqpL,EAAA1uL,GAAA,YAAA2sL,EAAApB,kBAAA1kL,KAAAxB,IAEAqpL,CACA,IAEApqL,KAAAiqL,WAAAp+I,OACAzyC,EAAA,2CAGA4G,KAAAiqL,WAAAp+I,OAAAo+I,EACA,EAmKA,OApJArB,EAAA7oL,UAAAsqL,kBAAA,SAAAF,GACA,IAAAI,EAAAvqL,KAAAgqG,KACAgiB,QAAA,OACAxe,KAAA,CAAAC,QAAA08E,IACA,OAAA/B,EAAAzoK,OAAA4qK,EAAA58E,WAAA58F,EAAAC,kBACA,EAEA43K,EAAA7oL,UAAAuqL,gBAAA,SAAAH,GACA,IAAA9/K,EAAArK,KAAAqqL,kBAAAF,GACAnqL,KAAA4C,aAAA5C,KAAA1E,KAAAoI,SAAAq+F,QAAAn+F,gBAAAyG,EACA,EAEAu+K,EAAA7oL,UAAA8pL,sBAAA,WACA,GAAA7pL,KAAA1E,KAAAo8C,WAAA,CACA,IAAA32C,EAAAf,KACAA,KAAA2C,OAAAmM,YAAA+kC,2BAAA7zC,KAAA1E,KAAAo8C,YAAA,SAAAp8C,GACAyF,EAAAypL,sBACAzpL,EAAA2oL,UAAApuL,EAAAq9B,QAAAr9B,EAAA68B,QACA,GACA,CAEA,GAAAn4B,KAAA1E,KAAAquL,mBAAA,CACA5oL,EAAAf,KACAA,KAAA2C,OAAAmM,YAAA+kC,2BAAA7zC,KAAA1E,KAAAquL,oBAAA,SAAAruL,GACAyF,EAAA6oL,mBAAAtuL,EAAA68B,QACA,GACA,CACA,EAEAywJ,EAAA7oL,UAAA8uE,SAAA,WACA7uE,KAAAo2E,KAAAp2E,KAAAgqG,KAAAmf,MAAA,CAAApa,KAAA,KACA/uG,KAAA6iI,mBACA7iI,KAAAyqL,uBACA,EAEA7B,EAAA7oL,UAAA6yD,KAAA,WACA5yD,KAAAo2E,KAAAp2E,KAAAgqG,KAAAwD,KAAA,CAAAuB,KAAA,KACA/uG,KAAA6iI,mBACA7iI,KAAAyqL,uBACA,EAEA7B,EAAA7oL,UAAA0qL,sBAAA,WACAzqL,KAAA4K,sBAAA,YAAA5K,KAAAgqG,KACA,EAEA4+E,EAAA7oL,UAAAq2E,KAAA,SAAA4zB,GACAhqG,KAAAgqG,OACAhqG,KAAA0qL,cACA1qL,KAAAwqL,sBAEA,IAAA1xJ,EAAA94B,KAAA2C,OAAAm2B,WACAA,EAAAgQ,OAAAlC,SAAA5mC,KAAA1E,KAAAktL,uBAAA/J,EAAAl7C,QAAAvjI,KAAAgqG,KAAAgiB,QAAA,SACAlzF,EAAAgQ,OAAAlC,SAAA5mC,KAAA1E,KAAAmtL,qBAAAhK,EAAAl7C,QAAAvjI,KAAAgqG,KAAAk0B,MAAA,QACA,EAEA0qD,EAAA7oL,UAAAwiI,YAAA,WACA,OAAAviI,KAAAgqG,IACA,EAEA4+E,EAAA7oL,UAAA2qL,YAAA,WACA,IAAAv6I,EAAAi4I,EAAAzoK,OAAA3f,KAAAgqG,KAAA2D,WAAA3tG,KAAA1E,KAAAotL,aACA1oL,KAAAgqL,OAAAnvJ,KAAAsV,EACA,EAEAy4I,EAAA7oL,UAAA2pL,UAAA,SAAA/wJ,EAAAo+G,GACA,IAAAgsC,EAAA/iL,KAAAgqG,KAAAgiB,QAAA,OAAAxe,KAAA,CAAAC,QAAAztG,KAAA1E,KAAAypL,WACAyB,EAAAxmL,KAAAgqG,KAAAgiB,QAAA,OAAAxe,KAAA,CAAAC,QAAAztG,KAAA1E,KAAAmrL,SAEA1lL,EAAAf,KACAs6B,EAAAnhC,EAAA+N,IAAA6vI,GAAA,SAAA36F,GACA,IAAA0iI,EAAA/9K,EAAAygL,mBAAAplI,EAAAr7C,EAAAzF,KAAAmmL,aACA5C,EAAA99K,EAAAygL,mBAAAplI,EAAAr7C,EAAAzF,KAAAqmL,WAEA,OAAAvoL,EAAAuG,QAAA,KAAAoB,EAAAoE,WAAA,IACA7J,KAAA,CACA8O,QAAArJ,EAAAkpL,WAAA3oL,KAAA,4BACAyhL,aACAyD,WACA1H,cACAD,YACAziI,MACAzjB,UACAtuB,SAAAtJ,EAAAzF,KAAA+O,SACAq8K,cAAA3lL,EAAAzF,KAAAorL,cACA3F,SAAAhgL,EAAAzF,KAAAylL,WAGA,IAEAsH,EAAA3C,OAAA1lL,KAAAs6B,GACAh3B,MAAA,WACAvC,EAAAiP,eAAA83K,oBACA,IAAAx8I,OAAA,SAAAhzB,GACAvX,EAAA4B,OAAAyoC,aAAAu/I,gBAAAryK,EACA,GACA,EAEAswK,EAAA7oL,UAAAyqL,oBAAA,WACArxL,EAAAiJ,KAAApC,KAAA8F,MAAA,SAAAlE,GACAA,EAAA2D,SAAAxM,QACA,IACAiH,KAAAgP,gBACA,EAEA45K,EAAA7oL,UAAAyhL,mBAAA,SAAAplI,EAAAs4G,GACA,iBAAA10J,KAAA1E,KAAAgtL,eACA,OAAA71E,EAAAiV,QAAAtrE,EAAAs4G,IAEA,IAAA1qD,EAAAhqG,KAAAgqG,KAAAgiB,QAAA,OACA92C,EAAA94B,EAAAs4G,GACA,OAAA1qD,EAAAwD,KAAA,CAAAyB,QAAA/5B,GACA,EAEA0zG,EAAA7oL,UAAA6pL,mBAAA,SAAA7yC,GACA,IAAAh2I,EAAAf,KAEAiqL,EAAAlpL,EAAAkpL,WAAAvnJ,WACAkoJ,EAAAxxL,IAEA29I,EAAAl1I,SAAA,SAAAu6C,GACA,IAAAyuI,EAAA9pL,EAAAygL,mBAAAplI,EAAAr7C,EAAAzF,KAAAwvL,qBAAAn9E,WACAo9E,EAAAhqL,EAAAygL,mBAAAplI,EAAAr7C,EAAAzF,KAAA0vL,mBAAAr9E,WAEAs9E,EAAAhB,EAAA9vK,QAAA,WACA,IAAA+6D,EAAA97E,EAAA4G,MAAA1E,KAAA,QAEA,OAAA45E,GAAAn0E,EAAAmqL,aAAAL,IAAA31G,EAAAn0E,EAAAmqL,aAAAH,EACA,IAEAH,EAAA/pL,QAAAoqL,EACA,IAEAL,EAAAjlL,SAAA,mBACAskL,EAAAriD,IAAAgjD,GAAAhiL,YAAA,kBACA,EAEAggL,EAAA7oL,UAAAmrL,aAAA,SAAAlhF,GACA,UAAAA,EAAAqrD,WAAArrD,EAAAmhF,YACA,EAEAvC,EAAA7oL,UAAAmP,yBAAA,WACA/V,EAAAiJ,KAAApC,KAAAimI,UAAA,SAAAojD,GACAA,EAAAruJ,SACA,IAEAh7B,KAAAimI,cAAA7/H,CACA,EAEAwiL,CACA,IACAnxL,OC3VA,mCACA,SACA,aACA,UACA,WACA,YACA,SAAA2B,EAAAD,EAAAmM,EAAAm5B,EAAAoG,GACA,aAEA,IAAA9I,EAAA,CACAzgC,KAAA,CACAoI,SAAA,CACAq+F,QAAA,IAEAygF,aAAA,CACA,EACAwE,aAAA,CACA,EACAl2H,eAAA,IACA+yH,kBAAA,IAIA,SAAAuH,EAAAjoK,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEA,IAAApiB,EAAAf,KAEAA,KAAAuF,SACAI,SAAA,iCAEA3F,KAAA1E,KAAA8gD,KAAAp8C,KAAA1E,KAAA+O,WACArK,KAAAmG,gBAAAnG,KAAA1E,KAAA8gD,IAAAp8C,KAAA1E,KAAA+O,WAEArK,KAAAS,YAAA,uBAAAmJ,GACA7I,EAAAsqL,iBAAAzhL,EACA,IAEA60B,EAAAK,aAAA9+B,KACA,CA4DA,OA1DAsF,EAAA3F,OAAAyrL,EAAA9lL,GAEA8lL,EAAAxxJ,SAAA,eAEAwxJ,EAAArrL,UAAAgH,UAAA,WACA/G,KAAA2M,eACA,EAEAy+K,EAAArrL,UAAA8H,OAAA,SAAAtC,GACA,OAAAvF,KAAA8G,qBAAAvB,EACA,EAEA6lL,EAAArrL,UAAA0H,WAAA,WACA,GAAAzH,KAAA1E,KAAA8gD,IAAA,CACA,IAAA/I,EAAArzC,KAAA1E,KAAA8gD,IAAAp8C,KAAA1E,KAAAorL,eACArzI,GAAArzC,KAAAuF,SAAA0iC,KAAA,QAAApD,EAAAgO,MAAAQ,GACA,CACA,EAEA+3I,EAAArrL,UAAAsrL,iBAAA,SAAAzhL,GACA,GAAA5J,KAAA1E,KAAA8gD,IAAA,CAGAxyC,EAAAzD,gBAAAnG,KAAAmG,gBAGA,IAAApF,EAAAf,KACA7G,EAAA4+B,OAAA,WACAnuB,EAAAg9B,UAAAztC,EAAAglC,IAAAp9B,EAAAzF,KAAA8gD,IAAAxyC,EAAAtO,KAAAhD,OACAsR,EAAAg9B,SAAA,CACAlhC,KAAA3E,EAAAzF,KAAAq9B,QAAA/uB,EAAAtO,KAAAhD,MACAkU,MAAAzL,EAAAzF,KAAA8gD,IAAAxyC,EAAAtO,KAAAhD,QAIAsR,EAAAlI,gBAAA,oBAAAX,EAAAzF,KAAA8gD,IACA,GAfA,CAgBA,EAEAgvI,EAAArrL,UAAA4M,cAAA,WACA,IAAA2+K,EAAAtrL,KAAA1E,KAAAkrL,SAAAt6D,KAAAlsH,KAAA1E,KAAAynL,WAAA,WAIA50K,EAAA,IAAAm9K,EAHAtrL,KAAA1E,KAAAujL,UAAA3yD,KAAAlsH,KAAA1E,KAAAwjL,YAAA,WAIAp4K,EAAA,IAAA4kL,EAHAtrL,KAAA1E,KAAAwjL,YAAA5yD,KAAAlsH,KAAA1E,KAAAynL,WAAA,WAKA/iL,KAAAuF,SACAK,IAAA,CACAc,MAAA,IACAyH,SAAA,KAEA,EAEAi9K,EAAArrL,UAAAmP,yBAAA,WACAlP,KAAA2C,OAAA2xI,SACA,EAEA82C,CACA,IACA3zL,OCrGA,0CAAA0B,GACA,aASA,IAAAoyL,EAAA,SAAA5/K,EAAA1B,GACA,IAAA4gC,EAAA,GAEAl/B,EAAA,SAAA1B,GAAA,SAAAgF,GAEA,OADA47B,EAAAhqC,KAAAoO,GACAtD,CACA,EAEA,IAAAxK,EAAA,SAAA8N,GACA,IAAAzN,EAAAqpC,EAAA/xC,QAAAmW,GACAzN,GAAA,GACAqpC,EAAAppC,OAAAD,EAAA,EAEA,EAEAmK,EAAA,WAAA1B,GAAA,SAAAgF,GACA,IAAAu8K,EAAA,WACArqL,EAAAqqL,GACAv8K,EAAAhO,MAAAjB,KAAAkB,UACA,EAEA,OADA2pC,EAAAhqC,KAAA2qL,GACA7/K,CACA,EAEAA,EAAA,YAAA1B,GAAA,SAAAgF,GAEA,OADA9N,EAAA8N,GACAtD,CACA,EAEAA,EAAA,UAAA1B,GAAA,WACA,IAAAtI,EAAAT,UAEA,OADA/H,EAAAiJ,KAAAyoC,EAAAnsC,SAAA,SAAAuQ,KAAAhO,MAAA0K,EAAAhK,EAAA,IACAgK,CACA,EAEAA,EAAA,MAAA1B,EAAA,wBACA,OAAA4gC,EAAAnsC,OACA,EAEAiN,EAAA,MAAA1B,EAAA,wBACA,OAAA4gC,EAAAnyC,OAAA,CACA,CACA,EAYA,OAVA,SAAA+yL,GACA,IAAA9/K,EAAA3L,KAEA7G,EAAA+qB,QAAAunK,GACAtyL,EAAAiJ,KAAAqpL,GAAA,SAAAxhL,GAAAshL,EAAA5/K,EAAA1B,EAAA,IAEAshL,EAAA5/K,EAAA8/K,EAEA,CAGA,IChEAh0L,OAAA,uEAAA0B,GAAA,gBAAAiH,KACA,IAAA4nL,IAAAC,IAAA,GAAAC,IAAAj2K,MAAAlS,UAAAiT,KAAAm1K,MAAA,WAAAF,KAAAC,IAAAljK,KAAA9jB,UAAA,KACA,KAAAd,KAAA,GACA6nL,KAAA,wVAEA,OAAAA,GACA,KAEAxwL,OCTA,sCACA,SACA,aACA,YACA,QACA,iBACA,8CACA,YACA,SAAA2B,EAAAD,EAAAivL,EAAA3lF,EAAApzE,EAAAkP,EAAAsG,GACA,aAEA,MAAA4tE,YAAAhQ,EAEA,IAAA1mE,EAAA,CACAi1E,YAAA,EACA06E,oBAAA,EACAC,qBAAA,IACAjD,YAAA,YACAxpL,gBAAA,MAGA0sL,EAAA,SAAAzoK,GACAkM,EAAArK,KAAAhlB,KAAA,yBAEAA,KAAAmjB,QAAA/pB,EAAAuG,OAAA,GAAAo8B,EAAA5Y,GACAnjB,KAAAwiI,aAAA,KAEAxiI,KAAAuF,SAAAnM,EAAAmlC,KAEA,IAAAx9B,EAAAf,KACAA,KAAAuF,SAAAjE,KAAA,kBACA5F,GAAA,oBACAqF,EAAA8tE,UACA,IACA7uE,KAAAuF,SAAAjE,KAAA,cACA5F,GAAA,oBACAqF,EAAA6xD,MACA,IAEA5yD,KAAAgqL,OAAAhqL,KAAAuF,SAAAjE,KAAA,kBACAtB,KAAA6rL,MAAA7rL,KAAAuF,SAAAjE,KAAA,kBACAtB,KAAA8rL,gBAAA3yL,EAAA+N,IAAA/N,EAAA+hF,MAAA,iBACA,OAAA9hF,EAAA,UACA,IAEA4G,KAAA6rL,MAAAhgJ,OAAAzyC,EAAA,WACAuM,SAAA,mBACAkmC,OAAA7rC,KAAA8rL,kBAEA9rL,KAAAmjB,QAAA6tF,aACAhxG,KAAAuF,SAAAI,SAAA,iBACA3F,KAAAgqL,OAAArkL,SAAA,mBAGA3F,KAAA+rL,uBACA/rL,KAAAgsL,sBACA,EAmNA,OAjNAJ,EAAA7rL,UAAAgsL,qBAAA,WACA,IAAAhrL,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAA8rL,iBAAA,SAAAG,EAAAxzL,GACA,IAAAuxG,EAAAyI,EAAAzT,MAAAgtB,QAAA,QAAAxe,KAAA,CAAAuB,KAAAt2G,IACAH,EAAA8vL,EAAAzoK,OACAqqF,EAAA2D,WACA5sG,EAAAoiB,QAAAwoK,qBACA5qL,EAAAoiB,QAAAjkB,gBAAA6B,EAAAoiB,QAAAjkB,qBAAAkH,GACA6lL,EAAApxJ,KAAAviC,EACA,GACA,EAEAszL,EAAA7rL,UAAAisL,qBAAA,WACAhsL,KAAAmjB,QAAAuoK,mBACA1rL,KAAAuF,SAAAqD,YAAA,sBAEA5I,KAAAuF,SAAAI,SAAA,qBACA,EAEAimL,EAAA7rL,UAAA8uE,SAAA,WACA7uE,KAAAo2E,KAAAp2E,KAAAgqG,KAAAmf,MAAA,CAAAta,OAAA,KACA7uG,KAAAksL,kBACA,EAEAN,EAAA7rL,UAAA6yD,KAAA,WACA5yD,KAAAo2E,KAAAp2E,KAAAgqG,KAAAwD,KAAA,CAAAqB,OAAA,KACA7uG,KAAAksL,kBACA,EAEAN,EAAA7rL,UAAAq2E,KAAA,SAAA4zB,GACAhqG,KAAAgqG,OACAhqG,KAAAmsL,UACA,EAEAP,EAAA7rL,UAAAosL,SAAA,WACAnsL,KAAA0qL,cACA1qL,KAAAosL,YACApsL,KAAAqsL,yBACA,EAEAT,EAAA7rL,UAAA2qL,YAAA,WACA,IAAAv6I,EAAAi4I,EAAAzoK,OACA3f,KAAAgqG,KAAA2D,WACA3tG,KAAAmjB,QAAAulK,YACA1oL,KAAAmjB,QAAAjkB,gBAAAc,KAAAmjB,QAAAjkB,qBAAAkH,GACApG,KAAAgqL,OAAAnvJ,KAAAsV,EACA,EAEAy7I,EAAA7rL,UAAAwiI,YAAA,WACA,OAAAviI,KAAAgqG,IACA,EAEA4hF,EAAA7rL,UAAAqsL,UAAA,WACApsL,KAAA+uG,KAAA,GAaA,IAXA,IAAA7tF,EAAAlhB,KAAAgqG,KACAgiB,QAAA,SACAA,QAAA,QACAA,QAAA,OAGAtnG,EAAAxD,EACAssF,KAAA,CAAAsB,MAAA,IACAovB,MAAA,QACAlS,QAAA,OAEA9qG,GAAAwD,GAAA,CACA,IAAA+hF,EAAAzmG,KAAAssL,UAAAprK,GACAlhB,KAAA+uG,KAAAluG,KAAA4lG,GAEAvlF,IAAAssF,KAAA,CAAAuB,KAAA,GACA,CACA,EAEA68E,EAAA7rL,UAAAusL,UAAA,SAAAtiF,GACA,IAAAuiF,EAAAnzL,EAAA,WACAyhC,KAAAutJ,EAAAzoK,OAAAqqF,EAAA2D,WAAA,OACA8nD,EAAAhjD,EAAAzT,MAEA,GAAAgL,EAAAmiB,QAAAnsH,KAAAgqG,KAAA,UAYA,GAXAuiF,EAAA5mL,SAAA,cAEAqkG,EAAAwiF,WACAD,EAAA5mL,SAAA,WAEAqkG,EAAAmiB,QAAAspC,EAAA,QACA82B,EAAA5mL,SAAA,SAEA3F,KAAAwiI,cAAAx4B,EAAAmiB,QAAAnsH,KAAAwiI,aAAA,QACA+pD,EAAA5mL,SAAA,YAEA3F,KAAAysL,sBAAA,CACA,IAAA1rL,EAAAf,KACAusL,EACA5mL,SAAA,aACAjK,GAAA,oBACAqF,EAAA2rL,eAAA1iF,KAEAjpG,EAAA4hI,gBAAA34B,GACAjpG,EAAA4rL,eAAA3iF,GACA,GACA,OAEAuiF,EAAA5mL,SAAA,iBAGA,OACAJ,SAAAgnL,EACAp7K,SAAA64F,EAEA,EAEA4hF,EAAA7rL,UAAA2sL,eAAA,SAAAE,GACA,OAAA5sL,KAAAwiI,cAAAxiI,KAAAwiI,aAAA/5B,OAAAmkF,EACA,EAEAhB,EAAA7rL,UAAAssL,wBAAA,WACArsL,KAAA6rL,MACAnpJ,SAAA,0BACA3pC,SAIA,IAFA,IAAA8yL,EAAA1yL,EAAA0zL,MAAA7sL,KAAA+uG,KAAA,YAEA88E,EAAAnzL,QAAA,CACA,IAAAsjD,EAAA6vI,EAAApqL,OAAA,KACAzB,KAAA6rL,MACAhgJ,OAAAzyC,EAAA,WACAuM,SAAA,iBACAkmC,OAAAmQ,GACA,CACA,EAEA4vI,EAAA7rL,UAAA+sL,aAAA,SAAA9iF,EAAAz7B,EAAAw+G,EAAA15I,EAAA25I,GACA,IAAAC,EAAAjtL,KAAAiuJ,OAAAjkD,GAEA,GAAAijF,IACAD,GACAC,EAAA1nL,SACAI,SAAA,eACAiD,YAAA,aACA4B,IAAA,SAIA+jE,GACA0+G,EAAA1nL,SAAAK,IAAA,mBAAA2oE,GAEAw+G,GACAE,EAAA1nL,SAAAK,IAAA,QAAAmnL,GAGA15I,GAAA,CACA,IAAAlD,EAAA88I,EAAA1nL,SAAA0iC,KAAA,SAGAkI,EADAA,EACAA,EAAA,KAAAkD,EAEAA,EAEA45I,EAAA1nL,SAAA0iC,KAAA,QAAApD,EAAAgO,MAAA1C,GACA,CAEA,EAEAy7I,EAAA7rL,UAAA4iI,gBAAA,SAAA34B,GACAhqG,KAAA4iI,oBAEA,IAAAqqD,EAAAjtL,KAAAiuJ,OAAAjkD,GACAijF,GACAA,EAAA1nL,SAAAI,SAAA,YAEA3F,KAAAwiI,aAAAx4B,CACA,EAEA4hF,EAAA7rL,UAAA6iI,kBAAA,WACA,GAAA5iI,KAAAwiI,aAAA,CAGA,IAAAyqD,EAAAjtL,KAAAiuJ,OAAAjuJ,KAAAwiI,cACAyqD,GACAA,EAAA1nL,SAAAqD,YAAA,YAEA5I,KAAAwiI,aAAA,IANA,CAOA,EAEAopD,EAAA7rL,UAAA0iI,gBAAA,WACA,OAAAziI,KAAAwiI,YACA,EAEAopD,EAAA7rL,UAAAkuJ,OAAA,SAAAjkD,GACA,OAAA7wG,EAAAmI,KAAAtB,KAAA+uG,MAAA,SAAAtI,GACA,OAAAA,EAAAt1F,SAAAg7G,QAAAniB,EAAA,MACA,GACA,EAEA4hF,EAAA7rL,UAAArI,IAAA,SAAAu7C,EAAAzmC,GACAxM,KAAAmjB,QAAA0P,eAAAogB,KAGAjzC,KAAAmjB,QAAA8vB,GAAAzmC,EAEA,gBAAAymC,EACAjzC,KAAA0qL,cACA,uBAAAz3I,EACAjzC,KAAAgsL,uBACA,yBAAA/4I,GACAjzC,KAAA+rL,uBACA,EAEAH,CAGA,IACAn0L,OC/QA,6CACA,SACA,QACA,YACA,UACA,eACA,mCACA,uCACA,SAAA2B,EAAAqpG,EAAA2lF,EAAA9iL,EAAAyL,EAAA0tK,EAAAmN,GACA,aAEA,MAAAn5E,YAAAhQ,EAEA,IAAA1mE,EAAA,CACAzgC,KAAA,CACAo8C,WAAA,KACA6wI,WAAA,KACA7B,cAAA,KACAwG,YAAA,KACAC,gBAAA,KACAC,oBAAA,KACA5E,uBAAA,qBACAC,qBAAA,mBACAC,YAAA,YACAgD,oBAAA,EACAC,qBAAA,MACAjoL,SAAA,CACAq+F,QAAA,MAKA,SAAAsrF,EAAAlqK,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,EACA,CA8HA,OA5HA7d,EAAA3F,OAAA0tL,EAAA/nL,GAEA+nL,EAAAzzJ,SAAA,oBAEAyzJ,EAAAttL,UAAA4M,cAAAvT,EAAA+O,KAEAklL,EAAAttL,UAAA8iI,iBAAA,WACA,GAAA7iI,KAAA1E,KAAAo8C,WAAA,CAGA,IAAA+xI,EAAAzpL,KAAAuiI,cAEAxhI,EAAAf,KACAA,KAAA2C,OAAAm1C,gBAAAzM,mBACArrC,KAAA1E,KAAAo8C,YACA,SAAA31B,GACA0nK,EAAAhhF,OAAA1nG,EAAAwhI,gBACAxhI,EAAAusL,WAAAvrK,EAAAoW,QACA,GAVA,CAWA,EAEAk1J,EAAAttL,UAAA4iI,gBAAA,SAAA34B,GACAhqG,KAAAywG,SAAAkyB,gBAAA34B,EACA,EAEAqjF,EAAAttL,UAAAxF,KAAAnB,EAAA+O,KAEAklL,EAAAttL,UAAA6iI,kBAAA,WACA5iI,KAAAywG,SAAAmyB,mBACA,EAEAyqD,EAAAttL,UAAA0iI,gBAAA,WACA,OAAAziI,KAAAywG,SAAAgyB,iBACA,EAEA4qD,EAAAttL,UAAA8H,OAAA,WACA7H,KAAA6pL,wBACA7pL,KAAA8pL,YACA9pL,KAAAo2E,KAAAq8B,EAAAzT,MACA,EAEAquF,EAAAttL,UAAA+pL,UAAA,WACA9pL,KAAAywG,SAAA,IAAAm7E,EAAA,CACA56E,YAAA,EACA03E,YAAA1oL,KAAA1E,KAAAotL,YACAgD,mBAAA1rL,KAAA1E,KAAAowL,mBACAC,qBAAA3rL,KAAA1E,KAAAqwL,qBACAzsL,gBAAAc,KAAA2C,OAAAm2B,WAAAvsB,SAAA,4BAGA,IAAAxL,EAAAf,KACAA,KAAAywG,SAAA88E,iBAAA,WACA,IAAAz0J,EAAA/3B,EAAA4B,OAAAm2B,WACA00J,EAAA/O,EAAAl7C,QAAAxiI,EAAAwhI,cAAAvW,QAAA,UACAyhE,EAAAhP,EAAAl7C,QAAAxiI,EAAAwhI,cAAArE,MAAA,UACAplG,EAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAAktL,uBAAAgF,GACA10J,EAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAAmtL,qBAAAgF,GAEA1sL,EAAA8hI,mBACA9hI,EAAA6J,sBAAA,YAAA4iL,EACA,IAEAxtL,KAAA1E,KAAAoI,SAAAq+F,QAAAp+F,SACA3D,KAAAywG,SAAAi9E,eAAA,SAAA1jF,GACA,IAAAvnC,EAAA2lH,EAAAzoK,OAAAqqF,EAAA2D,WAAA58F,EAAAC,mBACAjQ,EAAA6J,sBAAA,UAAA63D,EACA,IAGAziE,KAAAuF,SACAI,SAAA,4BACAkmC,OAAA7rC,KAAAywG,SAAAlrG,SACA,EAEA8nL,EAAAttL,UAAA8pL,sBAAA,WACA,GAAA7pL,KAAA1E,KAAAo8C,WAAA,CACA,IAAA32C,EAAAf,KACAA,KAAA2C,OAAAmM,YAAA+kC,2BAAA7zC,KAAA1E,KAAAo8C,YAAA,SAAAp8C,GACAyF,EAAA0vG,SAAA07E,WACAprL,EAAAusL,WAAAhyL,EAAA68B,QACA,GACA,CACA,EAEAk1J,EAAAttL,UAAAq2E,KAAA,SAAA4zB,GACAhqG,KAAAywG,SAAAr6B,KAAA4zB,GAEA,IAAAlxE,EAAA94B,KAAA2C,OAAAm2B,WACAA,EAAAgQ,OAAAlC,SAAA5mC,KAAA1E,KAAAktL,uBAAA/J,EAAAl7C,QAAAvjI,KAAAuiI,cAAAvW,QAAA,WACAlzF,EAAAgQ,OAAAlC,SAAA5mC,KAAA1E,KAAAmtL,qBAAAhK,EAAAl7C,QAAAvjI,KAAAuiI,cAAArE,MAAA,UACA,EAEAmvD,EAAAttL,UAAAwiI,YAAA,WACA,OAAAviI,KAAAywG,SAAA8xB,aACA,EAEA8qD,EAAAttL,UAAAutL,WAAA,SAAAn1J,GACA,IAAAp3B,EAAAf,KACA7G,EAAAiJ,KAAA+1B,GAAA,SAAAikB,GACA,IAAA4tD,EAAA,IAAAjyG,KAAAqkD,EAAAr7C,EAAAzF,KAAAitL,aACAh6G,EAAAnyB,EAAAr7C,EAAAzF,KAAA4xL,aACAH,EAAA3wI,EAAAr7C,EAAAzF,KAAA6xL,iBACA95I,EAAA+I,EAAAr7C,EAAAzF,KAAAorL,eACAsG,EAAA5wI,EAAAr7C,EAAAzF,KAAA8xL,qBACArsL,EAAA0vG,SAAAq8E,aAAA9iF,EAAAz7B,EAAAw+G,EAAA15I,EAAA25I,EACA,GACA,EAEAK,EAAAttL,UAAA8uE,SAAA,WACA7uE,KAAAo2E,KAAAp2E,KAAAuiI,cAAApZ,MAAA,CAAAta,OAAA,KACA7uG,KAAA6iI,mBACA7iI,KAAAyqL,uBACA,EAEA4C,EAAAttL,UAAA6yD,KAAA,WACA5yD,KAAAo2E,KAAAp2E,KAAAuiI,cAAA/0B,KAAA,CAAAqB,OAAA,KACA7uG,KAAA6iI,mBACA7iI,KAAAyqL,uBACA,EAEA4C,EAAAttL,UAAA0qL,sBAAA,WACAzqL,KAAA4K,sBAAA,YAAA5K,KAAAuiI,cAAAvW,QAAA,SACA,EAEAqhE,CACA,IACA51L,OClKA,iBACA,SACA,mBACA,SAAA2B,EAAAi2B,GACA,aAUA,IAAA1X,EAAAve,EAAAS,QAEA8zL,EAAA,WACAt+J,EAAArK,KAAAhlB,KAAA,aAEAA,KAAA4tL,UAAAj2K,EAAA3K,QACAhN,KAAA6tL,WAAAl2K,EAAAxJ,SAEAwJ,EAAAjc,GAAA,SAAAsE,KAAAoI,OAAA7F,KAAAvC,MACA,EAeA,OAbA2tL,EAAA5tL,UAAAqI,OAAA,WACA,IAAAm+J,EAAA5uJ,EAAA3K,QACAw5J,EAAA7uJ,EAAAxJ,SAEAo4J,IAAAvmK,KAAA4tL,WAAApnB,IAAAxmK,KAAA6tL,aAGA7tL,KAAA4tL,UAAArnB,EACAvmK,KAAA6tL,WAAArnB,EAEAxmK,KAAA8tL,iBACA,EAEA,IAAAH,CACA,ICtCAl2L,OAAA,4EAAA0B,GAAA,gBAAAiH,KACA,IAAA4nL,IAAAC,IAAA,GAAAC,IAAAj2K,MAAAlS,UAAAiT,KAAAm1K,MAAA,WAAAF,KAAAC,IAAAljK,KAAA9jB,UAAA,KACA,KAAAd,KAAA,GACA6nL,KAAA,slBAEA,OAAAA,GACA,KAEAxwL,OCTA,2CACA,SACA,aACA,YACA,QACA,eACA,UACA,mCACA,+BACA,gBACA,oBACA,mDACA,mBACA,SAAA2B,EAAAD,EAAAivL,EAAA3lF,EAAA1xF,EAAAzL,EAAAm5K,EAAA4J,EAAAniG,EAAAyhG,EAAAppJ,EAAAkyB,GACA,aAEA,MAAAgiD,WAAA0Y,YAAA1oB,EAEA,IAAA1mE,EAAA,CACAzgC,KAAA,CACAo8C,WAAA,KACA4wI,eAAA,YACAC,WAAA,KACA9G,YAAA,KACAE,UAAA,KACA6G,uBAAA,oBACAC,qBAAA,kBACA1I,aAAA,GACAgF,SAAA,EACA0B,OAAA,KACAiC,YAAA,IACAqF,gBAAA,cACApF,mBAAA,QACAqF,kBAAA,GAEA7oL,WAAA,CACA,CACA7J,KAAA,CAAAoK,KAAA,mBAKA,SAAAuoL,EAAA9qK,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAAmlC,KAAAxC,EAAA5Y,GAEAnjB,KAAAwiI,aAAA,KACAxiI,KAAAimI,SAAA,EACA,CAoaA,OAlaA3gI,EAAA3F,OAAAsuL,EAAA3oL,GAEA2oL,EAAAr0J,SAAA,mBAEAq0J,EAAAluL,UAAA4M,cAAAvT,EAAA+O,KAEA8lL,EAAAluL,UAAA8iI,iBAAA,WACA,GAAA7iI,KAAA1E,KAAAo8C,WAAA,CAGA,IAAA+xI,EAAAzpL,KAAAgqG,KAEAjpG,EAAAf,KACAA,KAAA2C,OAAAm1C,gBAAAzM,mBACArrC,KAAA1E,KAAAo8C,YACA,SAAA31B,GACA0nK,EAAAhhF,OAAA1nG,EAAAipG,OACAjpG,EAAA2oL,UAAA3nK,EAAA4W,QAAA5W,EAAAoW,QACA,IAEAn4B,KAAA1E,KAAAquL,oBAGA3pL,KAAA2C,OAAAm1C,gBAAAzM,mBACArrC,KAAA1E,KAAAquL,oBACA,SAAA5nK,GACA0nK,EAAAhhF,OAAA1nG,EAAAipG,OACAjpG,EAAA6oL,mBAAA7nK,EAAAoW,QACA,GApBA,CAqBA,EAEA81J,EAAAluL,UAAA4iI,gBAAA,SAAA34B,GACAhqG,KAAAwiI,aAAAx4B,CACA,EAEAikF,EAAAluL,UAAA6iI,kBAAA,WACA5iI,KAAAwiI,aAAA,IACA,EAEAyrD,EAAAluL,UAAA0iI,gBAAA,WACA,OAAAziI,KAAAwiI,YACA,EAEAyrD,EAAAluL,UAAAxF,KAAA,WACAyF,KAAAgQ,eAAA,IAAA23K,EAAA3nL,KAAA2C,QACA3C,KAAA6oL,sBACA7oL,KAAA8oL,6BACA,EAEAmF,EAAAluL,UAAA8oL,oBAAA,WACA,GAAAzvL,EAAA8tC,UAAAlnC,KAAA1E,KAAAytL,uBAAA,CAEA,IAAAC,EAAAj0K,KAAAM,OAAArV,KAAA1E,KAAAytL,sBAAA/oL,KAAA1E,KAAAypL,UAAA/kL,KAAA1E,KAAAykL,cACAkJ,EAAAjpL,KAAAkpL,OAAAxmJ,SAAA,aAAAqY,GAAAiuI,GACAhpL,KAAAmpL,WAAAr7K,UAAA9N,KAAAmpL,WAAAr7K,YAAAm7K,EAAA9kL,WAAAuC,IAJA,CAKA,EAEAunL,EAAAluL,UAAA+oL,4BAAA,WACA,GAAA9oL,KAAA1E,KAAA8tL,wBAAA,CACA,IAAAC,EAAArpL,KAAA2C,OAAAm2B,WAAAwwJ,oBAAAtpL,KAAA1E,KAAA8tL,wBAAAppL,KAAAupL,qBAAAhnL,KAAAvC,OAAA,GAEAA,KAAAimI,WAAAjmI,KAAAimI,SAAA,IAEAjmI,KAAAimI,SAAAplI,KAAAwoL,EACA,CACA,EAEA4E,EAAAluL,UAAAwpL,qBAAA,WACA,IAAAC,EAAAxpL,KAAA2C,OAAAm2B,WAAAvsB,SAAAvM,KAAA1E,KAAA8tL,yBAEA,GAAAhwL,EAAA8tC,UAAAsiJ,GAAA,CAEA,IAAAR,EAAAj0K,KAAAM,OAAAm0K,EAAAxpL,KAAA1E,KAAAypL,UAAA/kL,KAAA1E,KAAAykL,cACAkJ,EAAAjpL,KAAAkpL,OAAAxmJ,SAAA,aAAAqY,GAAAiuI,GACAhpL,KAAAmpL,WAAAr7K,UAAA9N,KAAAmpL,WAAAr7K,YAAAm7K,EAAA9kL,WAAAuC,IAJA,CAKA,EAEAunL,EAAAluL,UAAA8H,OAAA,WACA7H,KAAA6pL,wBACA7pL,KAAA8pL,YACA9pL,KAAAkuL,uBACAluL,KAAAmuL,uBACAnuL,KAAA+pL,kBACA/pL,KAAAo2E,KAAAq8B,EAAAzT,OAEA,IAAAj+F,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAAouL,UAAA,SAAAhI,EAAA/uE,GACAj+G,EAAA2H,EAAAstL,SAAAh3E,IAAA50E,SAAA,UACA2jJ,EAAA1jJ,WAAA/8B,SAAA,QAEA,GACA,EAEAsoL,EAAAluL,UAAA+pL,UAAA,WACA9pL,KAAAmpL,WAAAnpL,KAAAuF,SAAAjE,KAAA,kBACAtB,KAAAgqL,OAAAhqL,KAAAuF,SAAAjE,KAAA,kBACAtB,KAAAkpL,OAAAlpL,KAAAuF,SAAAjE,KAAA,UACAtB,KAAAsuL,UAAAtuL,KAAAuF,SAAAjE,KAAA,aACAtB,KAAA8rL,gBAAA9rL,KAAAuF,SAAAjE,KAAA,oBAEAtB,KAAAuuL,UAAAvuL,KAAAuF,SAAAjE,KAAA,kBACAtB,KAAAwuL,UAAAxuL,KAAAuF,SAAAjE,KAAA,cAEA,IAAAP,EAAAf,KACAA,KAAAuuL,UACA7yL,GAAA,oBACAqF,EAAA8tE,UACA,IACA7uE,KAAAwuL,UACA9yL,GAAA,oBACAqF,EAAA6xD,MACA,IAEA5yD,KAAAM,OAAA4lF,EACA,CACAuoG,QAAAzuL,KAAA0uL,mBAAAnsL,KAAAvC,OAEA,EAEAiuL,EAAAluL,UAAA+J,WAAA,WACA9J,KAAA0uL,qBACA1uL,KAAA2uL,yBACA,EAEAV,EAAAluL,UAAAmuL,qBAAA,WACAluL,KAAAquL,SAAAl1L,EAAA+N,IAAA/N,EAAA+hF,MAAA,iBACA,OAAA9hF,EAAA,WACAuM,SAAA,iBACA,IACA3F,KAAA8rL,gBAAAjgJ,OAAA7rC,KAAAquL,SACA,EAEAJ,EAAAluL,UAAAouL,qBAAA,WACAnuL,KAAAouL,SAAAj1L,EAAA+N,IAAA/N,EAAA+hF,MAAA,iBACA,OAAA9hF,EAAA,WACAuM,SAAA,WACAkmC,OACAzyC,EAAA,0CAEA,IACA4G,KAAAsuL,UAAAziJ,OAAA7rC,KAAAouL,SACA,EAEAH,EAAAluL,UAAAgqL,gBAAA,WACA,IAAAG,EAAA/wL,EAAA+hF,MAAAl7E,KAAA1E,KAAAypL,SAAA/kL,KAAA1E,KAAAmrL,OAAAzmL,KAAA1E,KAAAykL,cAEAh/K,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAAouL,UAAA,SAAAhI,EAAA/uE,GACA,IAAA4yE,EAAA9wL,EAAA+N,IAAAgjL,GAAA,SAAAC,GACA,IAAAlB,EAAA7vL,EAAA,WACAuM,SAAA,YACArK,KAAA,YAAA+7G,GACA/7G,KAAA,OAAA6uL,GAaA,OAXA,IAAA15H,GAAAC,wBAAAu4H,EAAAloL,GACA,SAAAuX,GACA,OAAAvX,EAAAspL,kBAAAhzE,EAAA8yE,EACA,eACAppL,EAAAupL,gBAAAjzE,EAAA8yE,EACA,IAEAlB,EAAAvtL,GAAA,YAAA2sL,EAAAlC,kBAAA5jL,KAAAxB,EAAAqlL,EAAA/uE,IACA4xE,EAAAvtL,GAAA,UAAA2sL,EAAAtB,gBAAAxkL,KAAAxB,IACAkoL,EAAAvtL,GAAA,YAAA2sL,EAAApB,kBAAA1kL,KAAAxB,IAEAkoL,CACA,IACA7C,EAAAv6I,OAAAo+I,EACA,IAEA,IAAAf,EAAA/vL,EAAA+N,IAAAgjL,GAAA,SAAA0E,GACA,IAAA5kF,EAAA,IAAAjyG,KAAA,UAGA,OAFAiyG,EAAAkrD,WAAA05B,GAEAx1L,EAAA,WACAuM,SAAA,YACAk1B,KAAAutJ,EAAAzoK,OAAAqqF,EAAAjpG,EAAAzF,KAAAqtL,oBACA,IACA3oL,KAAAkpL,OACAr9I,OAAAzyC,EAAA,wCACAyyC,OAAAq9I,EACA,EAEA+E,EAAAluL,UAAAsqL,kBAAA,SAAAhzE,EAAA8yE,GACA,IAAAI,EAAAvqL,KAAA6uL,OACArhF,KAAA,CAAAuB,KAAAsI,IACA7J,KAAA,CAAAC,QAAA08E,IACA,OAAA/B,EAAAzoK,OAAA4qK,EAAA58E,WAAA58F,EAAAC,kBACA,EAEAi9K,EAAAluL,UAAAuqL,gBAAA,SAAAjzE,EAAA8yE,GACA,IAAA9/K,EAAArK,KAAAqqL,kBAAAhzE,EAAA8yE,GACAnqL,KAAA4C,aAAA5C,KAAA1E,KAAAoI,SAAAq+F,QAAAn+F,gBAAAyG,EACA,EAEA4jL,EAAAluL,UAAA8pL,sBAAA,WACA,GAAA7pL,KAAA1E,KAAAo8C,WAAA,CACA,IAAA32C,EAAAf,KACAA,KAAA2C,OAAAmM,YAAA+kC,2BAAA7zC,KAAA1E,KAAAo8C,YAAA,SAAAp8C,GACAyF,EAAAypL,sBACAzpL,EAAA2oL,UAAApuL,EAAAq9B,QAAAr9B,EAAA68B,QACA,GACA,CAEA,GAAAn4B,KAAA1E,KAAAquL,mBAAA,CACA5oL,EAAAf,KACAA,KAAA2C,OAAAmM,YAAA+kC,2BAAA7zC,KAAA1E,KAAAquL,oBAAA,SAAAruL,GACAyF,EAAA6oL,mBAAAtuL,EAAA68B,QACA,GACA,CACA,EAEA81J,EAAAluL,UAAA8uE,SAAA,WACA7uE,KAAAo2E,KAAAp2E,KAAAgqG,KAAAmf,MAAA,CAAAra,MAAA,KACA9uG,KAAA6iI,mBACA7iI,KAAAyqL,uBACA,EAEAwD,EAAAluL,UAAA6yD,KAAA,WACA5yD,KAAAo2E,KAAAp2E,KAAAgqG,KAAAwD,KAAA,CAAAsB,MAAA,KACA9uG,KAAA6iI,mBACA7iI,KAAAyqL,uBACA,EAEAwD,EAAAluL,UAAA0qL,sBAAA,WACAzqL,KAAA4K,sBAAA,YAAA5K,KAAAuiL,wBACA,EAEA0L,EAAAluL,UAAAq2E,KAAA,SAAA4zB,GACAhqG,KAAAgqG,OAEAhqG,KAAA6uL,OAAA7uL,KAAAgqG,KAAAgiB,QAAA,QACAhsH,KAAA8uL,OAAA9uL,KAAAgqG,KAAAk0B,MAAA,QAEAl+H,KAAA0qL,cACA1qL,KAAA+rL,uBACA/rL,KAAAwqL,sBACAxqL,KAAA0uL,qBACA1uL,KAAA2uL,0BAEA,IAAA71J,EAAA94B,KAAA2C,OAAAm2B,WACAA,EAAAgQ,OAAAlC,SAAA5mC,KAAA1E,KAAAktL,uBAAA/J,EAAAl7C,QAAAvjI,KAAAuiL,0BACAzpJ,EAAAgQ,OAAAlC,SAAA5mC,KAAA1E,KAAAmtL,qBAAAhK,EAAAl7C,QAAAvjI,KAAA0jL,uBACA,EAEAuK,EAAAluL,UAAAwiL,sBAAA,WACA,OAAAviL,KAAAuiI,cAAAvW,QAAA,OACA,EAEAiiE,EAAAluL,UAAA2jL,oBAAA,WACA,OAAA1jL,KAAAuiI,cAAArE,MAAA,OACA,EAEA+vD,EAAAluL,UAAA2qL,YAAA,WACA,GAAA1qL,KAAA1E,KAAA0yL,iBAGA79I,EAAAi4I,EAAAzoK,OAAA3f,KAAA6uL,OAAAlhF,WAAA3tG,KAAA1E,KAAAotL,kBAFA,IAAAv4I,EAAAi4I,EAAAzoK,OAAA3f,KAAA6uL,OAAAlhF,WAAA3tG,KAAA1E,KAAAotL,aAAA,MAAAN,EAAAzoK,OAAA3f,KAAA8uL,OAAAnhF,WAAA3tG,KAAA1E,KAAAotL,aAIA1oL,KAAAgqL,OAAAnvJ,KAAAsV,EACA,EAEA89I,EAAAluL,UAAAgsL,qBAAA,WACA,IAAAhrL,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAAquL,UAAA,SAAA1yI,EAAAljD,GACA,IAAAuxG,EAAAjpG,EAAA8tL,OAAArhF,KAAA,CAAAuB,KAAAt2G,IACAs2L,EAAA3G,EAAAzoK,OAAAqqF,EAAA2D,WAAA5sG,EAAAzF,KAAAyyL,iBACApyI,EAAA9gB,KAAAk0J,GACA,IAAAt5B,EAAAhjD,EAAAzT,MACAgL,EAAAmiB,QAAAspC,EAAA,QACA95G,EAAAh2C,SAAA,QAEA,GACA,EAEAsoL,EAAAluL,UAAA2uL,mBAAA,WAGA,IAAA3tL,EAAAf,KACA7G,EAAA4+B,OAAA,WACAh3B,EAAA+qL,gBAAA9+K,MAAAjM,EAAAutL,UAAAthL,QACA,GACA,EAEAihL,EAAAluL,UAAA4uL,wBAAA,WAEA,IAAA5tL,EAAAf,KACA7G,EAAA4+B,OAAA,WACAh3B,EAAA+qL,gBAAAlmL,IAAA,cAAA7E,EAAAmoL,OAAAtxK,aACA,GACA,EAEAq2K,EAAAluL,UAAAwiI,YAAA,WACA,OAAAviI,KAAAgqG,IACA,EAEAikF,EAAAluL,UAAA2pL,UAAA,SAAA/wJ,EAAAo+G,GACA,IAAAh2I,EAAAf,KAEA8lL,EAAA9lL,KAAAuiL,wBACAwD,EAAA/lL,KAAA0jL,sBAEAppJ,EAAAnhC,EAAA+I,MAAA60I,GACA7vI,KAAA,SAAAk1C,GACA,IAAA0iI,EAAA/9K,EAAAygL,mBAAAplI,EAAAr7C,EAAAzF,KAAAmmL,aACA5C,EAAA99K,EAAAygL,mBAAAplI,EAAAr7C,EAAAzF,KAAAqmL,WACAqE,EAAA76D,EAAAE,cAAAy6D,EAAAC,GAEAE,EAAAD,EAAAjkL,SAAA+8K,GACAoH,EAAAF,EAAAjkL,SAAA88K,GAEA3yD,EAAA,EAOA,OAHAA,EAHA+5D,GAAAC,EAGArH,EAAAj4E,QAAAk4E,EAAAl4E,QAAA,EAFA7xF,KAAAskD,KAAAwlH,EAAA3gD,MAAA,OAAAhS,KAAA4yD,EAAA9yD,QAAA,eAAAjd,MAKA51G,EAAA+I,MAAA/I,EAAA+hF,MAAAgxC,IACAhlH,KAAA,SAAA8nL,GACA,OAAAlQ,EAAAtxE,KAAA,CAAAuB,KAAAigF,GACA,IACA70K,QAAA,SAAAhJ,GACA,OAAA20K,GAAA30K,GACAA,GAAA40K,IACA50K,EAAA66G,QAAA,OAAAvjB,OAAAo2E,EACA,IACA33K,KAAA,SAAAiK,GACA,IAAA89K,EAAA99K,EAAAg7G,QAAA2yD,EAAA,OACA3tK,IAAA66G,QAAA,OACAkjE,EAAA/9K,EAAAg7G,QAAA0yD,EAAA,OACAA,EAAA1tK,EAAA+sH,MAAA,OAEAt3B,EAAAqoF,EAAAroF,QAAA,EACAw/E,EAAArlL,EAAAqtL,SAAAxnF,GAAAtlG,KAAA,4BAEA,OAAAlI,EAAAuG,QAAA,KAAAoB,EAAAoE,WAAA,IACA7J,KAAA,CACA8O,QAAAg8K,EACArD,WAAAkM,EAAAjjE,QAAA,OAAAxe,KAAA,CAAAC,QAAA1sG,EAAAzF,KAAAypL,WACAyB,SAAA0I,EAAAljE,QAAA,OAAAxe,KAAA,CAAAC,QAAA1sG,EAAAzF,KAAAmrL,SACA3H,YAAAmQ,EACApQ,UAAAqQ,EACA9yI,MACAzjB,UACAtuB,SAAAtJ,EAAAzF,KAAA+O,SACAq8K,cAAA3lL,EAAAzF,KAAAorL,cACA3F,SAAAhgL,EAAAzF,KAAAylL,WAGA,IACAv0K,OACA,IACAhM,UACAgM,QAEA67K,EAAA3C,OAAA1lL,KAAAs6B,GACAh3B,MAAA,WACAvC,EAAAiP,eAAA83K,oBACA,IAAAx8I,OAAA,SAAAhzB,GACAvX,EAAA4B,OAAAyoC,aAAAu/I,gBAAAryK,EACA,GACA,EAEA21K,EAAAluL,UAAAyqL,oBAAA,WACArxL,EAAAiJ,KAAApC,KAAA8F,MAAA,SAAAlE,GACAA,EAAA2D,SAAAxM,QACA,IACAiH,KAAAgP,gBACA,EAEAi/K,EAAAluL,UAAAyhL,mBAAA,SAAAplI,EAAAs4G,GACA,iBAAA10J,KAAA1E,KAAAgtL,eACA,OAAA71E,EAAAiV,QAAAtrE,EAAAs4G,IAEA,IAAAvjJ,EAAAshG,EAAAiV,QAAAtrE,EAAAp8C,KAAA1E,KAAAitL,aAAAv8D,QAAA,OACA92C,EAAA94B,EAAAs4G,GACA,OAAAvjJ,EAAAq8F,KAAA,CAAAyB,QAAA/5B,GACA,EAEA+4G,EAAAluL,UAAA6pL,mBAAA,SAAA7yC,GACA,IAAAh2I,EAAAf,KAEAiqL,EAAAlpL,EAAAutL,UAAAhtL,KAAA,aACAspL,EAAAxxL,IAEA29I,EAAAl1I,SAAA,SAAAu6C,GACA,IAAAyuI,EAAA9pL,EAAAygL,mBAAAplI,EAAAr7C,EAAAzF,KAAAwvL,qBAAAn9E,WACAo9E,EAAAhqL,EAAAygL,mBAAAplI,EAAAr7C,EAAAzF,KAAA0vL,mBAAAr9E,WAEAs9E,EAAAhB,EAAA9vK,QAAA,WACA,IAAAk9F,EAAAj+G,EAAA4G,MAAA1E,KAAA,aACA45E,EAAA97E,EAAA4G,MAAA1E,KAAA,QAEA,OAAA+7G,EAAA,IAAAwzE,EAAA58B,UACA/4E,GAAAn0E,EAAAmqL,aAAAL,IACA31G,EAAAn0E,EAAAmqL,aAAAH,EACA,IAEAH,EAAA/pL,QAAAoqL,EACA,IAEAL,EAAAjlL,SAAA,mBACAskL,EAAAriD,IAAAgjD,GAAAhiL,YAAA,kBACA,EAEAqlL,EAAAluL,UAAAmrL,aAAA,SAAAlhF,GACA,UAAAA,EAAAqrD,WAAArrD,EAAAmhF,YACA,EAEA8C,EAAAluL,UAAAmP,yBAAA,WACA/V,EAAAiJ,KAAApC,KAAAimI,UAAA,SAAAojD,GACAA,EAAAruJ,SACA,IAEAh7B,KAAAimI,cAAA7/H,CACA,EAEA6nL,CACA,ICndAx2L,OAAA,4EAAA0B,GAAA,gBAAAiH,KACA,IAAA4nL,IAAAC,IAAA,GAAAC,IAAAj2K,MAAAlS,UAAAiT,KAAAm1K,MAAA,WAAAF,KAAAC,IAAAljK,KAAA9jB,UAAA,KACA,KAAAd,KAAA,GACA6nL,KAAA,sVAEA,OAAAA,GACA,KAEAxwL,OCTA,2CACA,SACA,aACA,QACA,YACA,UACA,eACA,mCACA,qCACA,qDACA,SAAA2B,EAAAD,EAAAspG,EAAA2lF,EAAA9iL,EAAAyL,EAAA0tK,EAAAmN,EAAArtJ,GACA,aAEA,MAAAk0E,YAAAhQ,EAEA,IAAA1mE,EAAA,CACAzgC,KAAA,CACAo8C,WAAA,KACA6wI,WAAA,KACA7B,cAAA,KACAwG,YAAA,KACAC,gBAAA,KACAC,oBAAA,KACA5E,uBAAA,oBACAC,qBAAA,kBACA0G,iBAAA,YACAzD,oBAAA,EACAC,qBAAA,MACAjoL,SAAA,CACAq+F,QAAA,MAKA,SAAAqtF,EAAAjsK,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAAmlC,KAAAxC,EAAA5Y,GACAnjB,KAAAwiI,aAAA,IACA,CAuKA,OArKAl9H,EAAA3F,OAAAyvL,EAAA9pL,GAEA8pL,EAAAx1J,SAAA,mBAEAw1J,EAAArvL,UAAA8iI,iBAAA,WACA,GAAA7iI,KAAA1E,KAAAo8C,WAAA,CAGA,IAAA+xI,EAAAzpL,KAAAgqG,KAEAjpG,EAAAf,KACAA,KAAA2C,OAAAm1C,gBAAAzM,mBACArrC,KAAA1E,KAAAo8C,YACA,SAAA31B,GACA0nK,EAAAhhF,OAAA1nG,EAAAipG,OACAjpG,EAAAusL,WAAAvrK,EAAAoW,QACA,GAVA,CAWA,EAEAi3J,EAAArvL,UAAA4iI,gBAAA,SAAA34B,GACAhqG,KAAA4iI,oBAEA5iI,KAAAqvL,mBAAArlF,GACA24B,gBAAA34B,GAEAhqG,KAAAwiI,aAAAx4B,CACA,EAEAolF,EAAArvL,UAAA6iI,kBAAA,WACA5iI,KAAAwiI,eAGAxiI,KAAAqvL,mBAAArvL,KAAAwiI,cACAI,oBAEA5iI,KAAAwiI,aAAA,KACA,EAEA4sD,EAAArvL,UAAAxF,KAAAnB,EAAA+O,KAEAinL,EAAArvL,UAAA0iI,gBAAA,WACA,OAAAziI,KAAAwiI,YACA,EAEA4sD,EAAArvL,UAAAsvL,mBAAA,SAAArlF,GACA,IAAAslF,EAAAtlF,EAAA3xG,IAAA,SACA,OAAA2H,KAAAuvL,UAAAD,EACA,EAEAF,EAAArvL,UAAA8H,OAAA,WACA7H,KAAA6pL,wBACA7pL,KAAA8pL,YACA9pL,KAAAo2E,KAAAq8B,EAAAzT,MACA,EAEAowF,EAAArvL,UAAA+pL,UAAA,WACA,IAAA0F,EAAA,CACAx+E,YAAA,EACA03E,YAAA1oL,KAAA1E,KAAA6zL,iBACAzD,mBAAA1rL,KAAA1E,KAAAowL,mBACAC,qBAAA3rL,KAAA1E,KAAAqwL,qBACAzsL,gBAAAc,KAAA2C,OAAAm2B,WAAAvsB,SAAA,2BAGAxL,EAAAf,KACAA,KAAAuvL,UAAAp2L,EAAA+N,IAAA/N,EAAA+hF,MAAA,kBACA,WAAA0wG,EAAA4D,EACA,IAEAxvL,KAAA1E,KAAAoI,SAAAq+F,QAAAp+F,SACAxK,EAAAiJ,KAAApC,KAAAuvL,WAAA,SAAA9+E,GACAA,EAAAi9E,eAAA,SAAA1jF,GACAjpG,EAAAyhI,eAAAx4B,EAAAmiB,QAAAprH,EAAAyhI,aAAA,UACAzhI,EAAA6hI,oBACA7hI,EAAAyhI,aAAAx4B,EAEA,IAAAvnC,EAAA2lH,EAAAzoK,OAAAqqF,EAAA2D,WAAA58F,EAAAC,mBACAjQ,EAAA6J,sBAAA,UAAA63D,EACA,GACA,IAGAziE,KAAAgqL,OAAAhqL,KAAAuF,SAAAjE,KAAA,kBAEA,IAAAmuL,EAAAt2L,EAAA0zL,MAAA7sL,KAAAuvL,UAAA,YACAvvL,KAAAuF,SAAAjE,KAAA,kBAAAuqC,OAAA4jJ,GAEAzvL,KAAAuF,SAAAjE,KAAA,kBACA5F,GAAA,oBACAqF,EAAA8tE,UACA,IACA7uE,KAAAuF,SAAAjE,KAAA,cACA5F,GAAA,oBACAqF,EAAA6xD,MACA,GACA,EAEAw8H,EAAArvL,UAAA8pL,sBAAA,WACA,GAAA7pL,KAAA1E,KAAAo8C,WAAA,CACA,IAAA32C,EAAAf,KACAA,KAAA2C,OAAAmM,YAAA+kC,2BAAA7zC,KAAA1E,KAAAo8C,YAAA,SAAAp8C,GACAnC,EAAAiJ,KAAArB,EAAAwuL,WAAA,SAAA9+E,GACAA,EAAA07E,UACA,IACAprL,EAAAusL,WAAAhyL,EAAA68B,QACA,GACA,CACA,EAEAi3J,EAAArvL,UAAA8uE,SAAA,WACA7uE,KAAAo2E,KAAAp2E,KAAAgqG,KAAAmf,MAAA,CAAAxa,MAAA,KACA3uG,KAAA6iI,mBACA7iI,KAAAyqL,uBACA,EAEA2E,EAAArvL,UAAA6yD,KAAA,WACA5yD,KAAAo2E,KAAAp2E,KAAAgqG,KAAAwD,KAAA,CAAAmB,MAAA,KACA3uG,KAAA6iI,mBACA7iI,KAAAyqL,uBACA,EAEA2E,EAAArvL,UAAA0qL,sBAAA,WACAzqL,KAAA4K,sBAAA,YAAA5K,KAAA0vL,wBACA,EAEAN,EAAArvL,UAAAq2E,KAAA,SAAA4zB,GACAhqG,KAAAgqG,OAEAhqG,KAAAgqL,OAAAnvJ,KAAA76B,KAAAgqG,KAAA3xG,IAAA,SAEA,QAAAI,EAAA,EAAAA,EAAA,GAAAA,IAAA,CACA,IAAAk3L,EAAA3vL,KAAAgqG,KAAAgiB,QAAA,QAAAxe,KAAA,CAAAqB,OAAAp2G,IACAuH,KAAAuvL,UAAA92L,GAAA29E,KAAAu5G,EACA,CAEA,IAAA72J,EAAA94B,KAAA2C,OAAAm2B,WACAA,EAAAgQ,OAAAlC,SAAA5mC,KAAA1E,KAAAktL,uBAAAxoL,KAAA0vL,yBACA52J,EAAAgQ,OAAAlC,SAAA5mC,KAAA1E,KAAAmtL,qBAAAzoL,KAAA4vL,sBACA,EAEAR,EAAArvL,UAAA2vL,sBAAA,WACA,OAAAjR,EAAAl7C,QAAAvjI,KAAAgqG,KAAAgiB,QAAA,QACA,EAEAojE,EAAArvL,UAAA6vL,oBAAA,WACA,OAAAnR,EAAAl7C,QAAAvjI,KAAAgqG,KAAAk0B,MAAA,QACA,EAEAkxD,EAAArvL,UAAAutL,WAAA,SAAAn1J,GACA,IAAAp3B,EAAAf,KACA7G,EAAAiJ,KAAA+1B,GAAA,SAAAikB,GACA,IAAA4tD,EAAA,IAAAjyG,KAAAqkD,EAAAr7C,EAAAzF,KAAAitL,aACAh6G,EAAAnyB,EAAAr7C,EAAAzF,KAAA4xL,aACAH,EAAA3wI,EAAAr7C,EAAAzF,KAAA6xL,iBACA95I,EAAA+I,EAAAr7C,EAAAzF,KAAAorL,eACAsG,EAAA5wI,EAAAr7C,EAAAzF,KAAA8xL,qBACArsL,EAAAwuL,UAAAvlF,EAAAooD,YACA06B,aAAA9iF,EAAAz7B,EAAAw+G,EAAA15I,EAAA25I,EACA,GACA,EAEAoC,EAAArvL,UAAAwiI,YAAA,WACA,OAAAviI,KAAAgqG,IACA,EAEAolF,CACA,IACA33L,OC9MA,+BACA,SACA,aACA,KACA,WACA,UACA,kBACA,SACA2B,EACAD,EACAuG,EACA++B,EACAn5B,EACA41B,GACA,aAEA,SAAA20J,EAAA1sK,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,iCAAA+pB,GAEAnjB,KAAAuF,SAAAK,IAAA,CACA,oBACA,wBAGA64B,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAuF,SAGA,CA8DA,OA5DAD,EAAA3F,OAAAkwL,EAAAvqL,GAEAuqL,EAAAj2J,SAAA,aAEAi2J,EAAA9vL,UAAAgH,UAAA,WACA/G,KAAA2M,eACA,EAEAkjL,EAAA9vL,UAAA0H,WAAA,WACA,IAAAxK,GAAA+C,KAAA1E,KAAA0Y,KAAAtU,EAAAvB,iBAAA,gBAEA4C,EAAAf,KACA5G,EAAAf,IAAA4E,EAAA+C,KAAA1E,KAAAw0L,WAAAC,UAAAnwK,EAAAowK,SAAA72L,EAAAE,OAAA42L,QAAA,mBAAAC,GACA/2L,EAAAiJ,KAAA8tL,EAAAC,MAAAC,aAAA,SAAAC,GACA,IAAA/9C,EAAAp6I,SAAAoqB,cAAA,QACAgwH,EAAAviH,aAAA,oBACAuiH,EAAAviH,aAAA,mBACAuiH,EAAAviH,aAAA,OAAA9yB,EAAAozL,EAAAN,UAAAnwK,EAAAowK,SAAA72L,EAAAE,OAAA42L,QAAA,UACA/3L,SAAAugB,qBAAA,WAAA2X,YAAAkiH,EACA,IAEA,IAAAg+C,EAAAJ,EAAAC,MAAAI,QAAA73L,OACAS,EAAAiJ,KAAA8tL,EAAAC,MAAAI,SAAA,SAAAC,GACA,IAAAC,EAAAv4L,SAAAoqB,cAAA,UACAmuK,EAAA9vK,OAAA,EACA8vK,EAAA1gK,aAAA,0BACA0gK,EAAA1gK,aAAA,MAAA9yB,EAAAuzL,EAAAT,UAAAnwK,EAAAowK,SAAA72L,EAAAE,OAAA42L,QAAA,UACAQ,EAAA91G,OAAA,WACA,IAAA21G,GACAz2L,OAAAq2L,EAAAt1L,IAAAgyK,QAAA,CACAhyK,GAAAmG,EAAAzF,KAAAV,GACA81L,eAAAzzL,EACA0zL,cAAA5vL,EAAAzF,KAAAq1L,cACAvS,cAAAr9K,EAAAwE,SAAAlN,IAAA,GACAsK,OAAA5B,EAAA4B,OACAC,aAAA7B,EAAA6J,sBAAArI,KAAAxB,GACAgX,WAAAmjB,EAAAllB,gBAAA1d,KACA0b,IAAA,CACAiqB,QAAAv+B,EAAAtC,aAAA,IACAwzL,QAAAlxL,EAAAvB,iBAAA,IACAujF,KAAAhiF,EAAA3C,WAAA,OAIA5D,EAAAiJ,KAAA8tL,EAAA3/K,SAAA,SAAAuc,GACA/rB,EAAA,iBAAA+rB,EAAAx0B,MAAAyI,EAAA8vL,mBAAAtuL,KAAAxB,EAAAmvL,EAAAt1L,GAAAkyB,EAAAx0B,KACA,KAEAg4L,GAEA,EACAp4L,SAAAugB,qBAAA,WAAA2X,YAAAqgK,EACA,GACA,GACA,EAEAZ,EAAA9vL,UAAA8wL,mBAAA,SAAAC,EAAAz8J,EAAAwwB,GACAhrD,OAAAi3L,GAAAz8J,GAAAwwB,EACA,EAEAgrI,CACA,IACAp4L,OC3FA,yBACA,SACA,aACA,KACA,UACA,WACA,uBACA,SAAA2B,EAAAD,EAAA2K,EAAAwB,EAAAm5B,GACA,aAEA,SAAAsyJ,EAAA5tK,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA+pB,GAEAnjB,KAAAqhD,OAAAjoD,EAAA,WACAwM,IAAA,CACAoH,MAAA,OACAmB,OAAA,OACA6oC,SAAA,WAEA/O,KAAA,WAAAjoC,KAAA1E,KAAAk8C,UACA3wC,SAAA7G,KAAAuF,UAEAvF,KAAAuF,SACAI,SAAA,mBAEA84B,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAqhD,OACA,CA6BA,OA3BA/7C,EAAA3F,OAAAoxL,EAAAzrL,GAEAyrL,EAAAn3J,SAAA,UAEAm3J,EAAAhxL,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,gBACA3M,KAAAgxL,aACA,EAEAD,EAAAhxL,UAAAixL,YAAA,WACAhxL,KAAAqhD,OACAz7C,IAAA,CACA,0BAAA5F,KAAAixL,mBAAA,IACA,8BACA,iCAEA,EAEAF,EAAAhxL,UAAAkxL,iBAAA,WACA,OAAAntL,EAAA1G,aAAA,gCAAArF,MAAAypB,UACA,EAEAuvK,EAAAhxL,UAAAmxL,eAAA,WACAlxL,KAAAgxL,aACA,EAEAD,CACA,IAEAt5L,OC1DA,2BACA,SACA,aACA,UACA,eACA,gBACA,oCACA,SAAA2B,EAAAD,EAAAmM,EAAAyL,EAAAmqB,GACA,aAEA,IAKAa,EAAA,CACAzgC,KAAA,CACAgJ,KAAA,CAAAF,EAAA,IAAAC,EAAA,KACA8sL,WAAA,EACAC,cAAA,EACAlhJ,SAAA,UACA9S,QAAA,IACApB,OAAA,CACAhvB,MAAA,EACAkvB,MAAA,yBACAD,MAAA,QACAv1B,KAAA,EACAD,MAAA,EACAG,QAAA,EACAD,OAAA,GAEAk2B,WAAA,CACAl5B,SAAA,EACAu4B,MAAA,wBAKA,SAAAm1J,EAAAluK,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAAsxL,aAAA,EAEAtxL,KAAAuxL,cAAA,EACAvxL,KAAAwxL,kBAAA,GAEAxxL,KAAAmF,WAAAhM,EAAA6gB,OAAAha,KAAAmF,YAAA,SAAAkkF,GACA,OAAAA,EAAA/tF,KAAAkG,KACA,IAEAxB,KAAAyxL,eAAAr4L,EAAA,WACAwM,IAAA,CACAuI,OAAA,OACAnB,MAAA,SAGAhN,KAAA0xL,UAAAt4L,EAAA,UACAuM,SAAA,YACAC,IAAA,CAAAqH,OAAA,MACAD,MAAAhN,KAAA1E,KAAAgJ,KAAAF,GACA+J,OAAA,QACAtH,SAAA7G,KAAAyxL,gBAEAzxL,KAAAyxL,eAAA5qL,SAAA7G,KAAAuF,UAEAvF,KAAAuF,SACAI,SAAA,mBACAC,IAAA,CACAw3B,QAAA+nE,OAAAnlG,KAAA1E,KAAA8hC,SAAA,IACA9vB,cAAA,SAGAtN,KAAA2xL,kBACA,CA4OA,OA1OArsL,EAAA3F,OAAA0xL,EAAA/rL,GAEA+rL,EAAAz3J,SAAA,WAEAy3J,EAAAnhJ,SArEA,CACA,UACA,UAqEAmhJ,EAAAtxL,UAAA4xL,iBAAA,WACA3xL,KAAA1E,KAAAs2L,QACA5xL,KAAAyxL,eACA7rL,IAAA,CACAm3B,UAAA/8B,KAAA1E,KAAAu2L,SAAA,MAAA7xL,KAAA1E,KAAAu2L,SAAA,MAAA7xL,KAAA1E,KAAAw2L,SAAA,eAGA9xL,KAAAyxL,eACA7rL,IAAA,mBAEA,EAEAyrL,EAAAtxL,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,eACA,EAEA0kL,EAAAtxL,UAAA8H,OAAA,SAAAtC,GACA,OAAAvF,KAAA8G,qBAAAvB,EACA,EAEA8rL,EAAAtxL,UAAA0H,WAAA,WACAtO,EAAA4+B,MAAA/3B,KAAA+xL,WAAAxvL,KAAAvC,MACA,EAEAqxL,EAAAtxL,UAAAiyL,UAAA,WACA,QAAA74L,EAAA4d,UAAA/W,KAAA8F,KAAA,CAAAJ,KAAA,iBACA,EAEA2rL,EAAAtxL,UAAAgyL,WAAA,WACA,IAAAhxL,EAAAf,KAEAiyL,EAAA,SAAAC,EAAAC,EAAAC,GACArxL,EAAAsxL,gBAAAD,GACArxL,EAAAuwL,aAAAvwL,EAAAuwL,aAAA,EAEA,QAAA74L,EAAA,EAAAA,EAAAsI,EAAA2wL,UAAA,GAAAz/I,WAAAv5C,OAAAD,IAAA,CACA,IAAA6+I,EAAAv2I,EAAA2wL,UAAA,GAAAz/I,WAAAx5C,GACAsI,EAAAuxL,eAAAl5L,EAAAk+I,GACA,CAGA,OAFAv2I,EAAAwxL,cAAAn5L,EAAA84L,KAEA,CACA,EAEA,GAAAlyL,KAAAgyL,YAAA,CACA,IAAAj6K,EAAAmjB,EAAAllB,gBAEAjV,EAAAwE,SAAAm9B,SAAA,MAAA77B,SAAA9F,EAAA2wL,WAEA3wL,EAAAyxL,OAAAzxL,EAAA2wL,UAAAe,SAAA,CACAxmF,KAAA,aACAymF,kBAAA,EACAx3J,YAAA,EACAguD,OAAA,EACAypG,aAAA56K,IAAAhH,EAAAU,YAAA2E,OAAA2B,IAAAhH,EAAAU,YAAA4E,OACAu8K,eAAA,EAEA1iJ,SAAAlwC,KAAA1E,KAAA81L,cAAA,YAAApxL,KAAA1E,KAAA40C,SACA2iJ,MAAA7yL,KAAA1E,KAAA61L,UAEA2B,eAAA,IACA7gD,MAAA,IACA8gD,WAAAhyL,EAAAiyL,kBACAC,cAAA,SAAAf,EAAAC,EAAAC,GAGA,OAFAH,EAAAC,EAAAC,EAAAC,GACArxL,EAAAqgJ,UACA,CACA,EAEApsE,MAAAh1E,KAAAgO,YAAAhO,KAAA1E,KAAA43L,qBACAC,MAAA,IAAAnzL,KAAA1E,KAAA83L,oBACAC,cAAArzL,KAAAgO,YAAAhO,KAAA1E,KAAA43L,qBAEAI,YAAArB,EACAsB,YAAAtB,EACAuB,aAAA,WACAzyL,EAAAwwL,cAAA,CACA,IAEAxwL,EAAAwE,SAAAjE,KAAA,gBAAAsE,IAAA,CAAA+2B,WAAA,MACA57B,EAAAwE,SAAAjE,KAAA,gBAAA6M,OAAApN,EAAAzF,KAAAgJ,KAAAD,GACAtD,EAAA0yL,sBAEA,QAAAh7L,EAAA,EAAAA,EAAAsI,EAAA2wL,UAAA,GAAAz/I,WAAAv5C,OAAAD,IACA,GAAAA,IAAAsI,EAAAiyL,kBAAA,GACA,IAAA17C,EAAAv2I,EAAA2wL,UAAA,GAAAz/I,WAAAx5C,GACAsI,EAAAuxL,eAAAl5L,EAAAk+I,GACA,CAEA,CACA,EAEA+5C,EAAAtxL,UAAA0zL,oBAAA,WACA,IAAA/hI,EAAA1xD,KAAA1E,KAAA0gC,OACA03J,EAAA1zL,KAAA1E,KAAAuhC,WACA78B,KAAAuF,SAAAjE,KAAA,eAAAsE,IAAA,CACA6rI,aAAA//E,EAAA9qD,OAAA8qD,EAAA1kD,MAAA,MAAA0kD,EAAAz1B,MAAA,IAAAy1B,EAAAx1B,MAAA,OACAw1G,WAAAhgF,EAAAjrD,KAAAirD,EAAA1kD,MAAA,MAAA0kD,EAAAz1B,MAAA,IAAAy1B,EAAAx1B,MAAA,OACA01G,UAAAlgF,EAAAhrD,IAAAgrD,EAAA1kD,MAAA,MAAA0kD,EAAAz1B,MAAA,IAAAy1B,EAAAx1B,MAAA,OACAy1G,YAAAjgF,EAAA/qD,MAAA+qD,EAAA1kD,MAAA,MAAA0kD,EAAAz1B,MAAA,IAAAy1B,EAAAx1B,MAAA,OACAW,WAAA62J,EAAA/vL,QAAA+vL,EAAAx3J,MAAA,SAEA,IACAy3J,EAAA,EACAjiI,EAAAjrD,MAAAirD,EAAA/qD,MACAgtL,EAAA,GAHA,EAGAjiI,EAAA1kD,OACA0kD,EAAAjrD,MAAAirD,EAAA/qD,MACAgtL,EAAA,GAAAjiI,EAAA1kD,MACA0kD,EAAAjrD,MAAAirD,EAAA/qD,QACAgtL,EAAA,IAGA,IAAAC,EAAA5zL,KAAAuF,SAAAjE,KAAA,eAAAsE,IAAA,SAEAa,EAAA,KACAotL,EAAA,GACA,SAAAniI,EAAAz1B,OAAA,WAAAy1B,EAAAz1B,QACA43J,EAAA,EACAF,EAAA,EACAltL,EAAA,IAGAzG,KAAA0xL,UAAApwL,KAAA,MAAAsE,IAAA,CACAoH,MAAAyS,WAAAm0K,GAAAC,EAAAF,EAAA,KACAltL,UAAA,MAAAktL,EAAA,MAEA,EAEAtC,EAAAtxL,UAAAuyL,eAAA,SAAA/sL,GACA,IAAAxE,EAAAf,KACAuF,IACAA,EAAAmR,KAAA,sBACAnR,EAAA0iC,KAAA,YACA1iC,EAAAmR,KAAA,mBAAAnR,EAAA0iC,KAAA,aAEA1iC,EAAAmR,KAAA,6BAGAnR,EAAA0iC,KAAA,eACA9uC,EAAAiJ,KAAAmD,EAAA,GAAA0sC,YAAA,SAAAqlG,GACAv2I,EAAAuxL,eAAAl5L,EAAAk+I,GACA,IAEA,EAEA+5C,EAAAtxL,UAAAwyL,cAAA,SAAAhtL,GACA,IAAAxE,EAAAf,KACAuF,IACA,UAAAA,EAAAmR,KAAA,oBACAnR,EAAA0iC,KAAA,WAAA1iC,EAAAmR,KAAA,qBAEAnR,EAAAgiC,WAAA,YAEApuC,EAAAiJ,KAAAmD,EAAA,GAAA0sC,YAAA,SAAAqlG,GACAv2I,EAAAwxL,cAAAn5L,EAAAk+I,GACA,IAEA,EAEA+5C,EAAAtxL,UAAA+zL,UAAA,SAAAC,GACA,IAAAhzL,EAAAf,KACAoG,MAAArF,EAAAyxL,QAAAzxL,EAAAyxL,OAAAwB,oBAAAD,IACAhzL,EAAAsxL,gBAAA0B,GACAhzL,EAAAwwL,cAAA,EACAxwL,EAAAyxL,OAAAsB,UAAAC,GAEA,EAEA1C,EAAAtxL,UAAA+3J,SAAA,SAAAm8B,GACAj0L,KAAAwxL,kBAAA3wL,KAAAozL,EACA,EAEA5C,EAAAtxL,UAAAm0L,UAAA,SAAAD,GACAj0L,KAAAwxL,kBAAAr4L,EAAAg7L,QAAAn0L,KAAAwxL,kBAAAyC,EACA,EAEA5C,EAAAtxL,UAAAqhJ,OAAA,WACA,IAAA5/I,EAAAxB,KAAAgzL,kBACA75L,EAAAiJ,KAAApC,KAAAwxL,mBAAA,SAAAr/K,GACAA,EAAA3Q,EACA,GACA,EAEA6vL,EAAAtxL,UAAAsyL,gBAAA,SAAA7wL,GACAxB,KAAAo0L,4BACAxtJ,SAAA5mC,KAAA1E,KAAAV,GAAA4G,EACA,EAEA6vL,EAAAtxL,UAAAizL,gBAAA,WAEA,OADAhzL,KAAAo0L,4BACA7nL,SAAAvM,KAAA1E,KAAAV,KAAA,CACA,EAEAy2L,EAAAtxL,UAAAq0L,0BAAA,WACA,IAAAt7J,EAAA94B,KAAA2C,OAAAm2B,WACA,OAAA94B,KAAA1E,KAAA+4L,kBACAv7J,EAAAgQ,OACAhQ,EAAAoR,OACA,EAEAmnJ,EAAAtxL,UAAAu0L,cAAA,SAAA9jJ,GACA,SAAAA,GAAAxwC,KAAAwyL,OAAA+B,gBACA,aAAA/jJ,GAAAxwC,KAAAwyL,OAAAgC,eACA,EAEAnD,EAAAtxL,UAAA00L,iBAAA,SAAAjkJ,GACA,GAAAxwC,KAAAwyL,OAAA,CACA,YAAAhiJ,EACA,OAAAxwC,KAAAwyL,OAAAwB,kBAAA,EAAAh0L,KAAAwyL,OAAAkC,gBACA,gBAAAlkJ,EACA,OAAAxwC,KAAAwyL,OAAAwB,kBAAA,CACA,MAEA,YAAAxjJ,EACA,OAAAxwC,KAAAgyL,YAGA,QACA,EAEAX,EAAAtxL,UAAAmP,yBAAA,WACAlP,KAAAwyL,SACAxyL,KAAAwyL,OAAAmC,gBACA30L,KAAAwyL,OAAA,KAEA,EAEAnB,CACA,IACA55L,OCvTA,yCACA,SACA,KACA,UACA,aACA,SAAA2B,EAAA0K,EAAAwB,EAAAm5B,GACA,aAEA,SAAAm2J,EAAAzxK,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA+pB,GAEAsb,EAAAK,aAAA9+B,MAEAA,KAAAuF,SACAI,SAAA,aACAjK,GAAA,QAAAsE,KAAA+hG,QAAAx/F,KAAAvC,OACA4F,IAAA,2BAEA5F,KAAA60L,iBAAA70L,KAAA80L,iBAAAvyL,KAAAvC,KACA,CA0CA,OAxCAsF,EAAA3F,OAAAi1L,EAAAtvL,GAEAsvL,EAAAh7J,SAAA,kBAEAg7J,EAAA70L,UAAAgH,UAAA,WACA/G,KAAA2M,gBACA3M,KAAA+0L,qBACA/0L,KAAA80L,mBAEA90L,KAAA6F,OAAAiyJ,SAAA93J,KAAA60L,iBACA,EAEAD,EAAA70L,UAAAgiG,QAAA,WACA/hG,KAAA6F,OAAAyuL,cAAAt0L,KAAA1E,KAAAk1C,OACA,EAEAokJ,EAAA70L,UAAA+0L,iBAAA,WACA90L,KAAAuF,SAAAsE,OAAA7J,KAAA6F,OAAA4uL,iBAAAz0L,KAAA1E,KAAAk1C,QACA,EAEAokJ,EAAA70L,UAAAg1L,mBAAA,WACA,GAAA/0L,KAAA1E,KAAA05L,YAAA,CAGA,IAAAA,EAAAlxL,EAAA3F,iBAAA6B,KAAA1E,KAAA05L,aAGA,GAFAh1L,KAAAi1L,SAAAD,GAEAh1L,KAAA1E,KAAA45L,WAAA,CAGA,IAAAA,EAAApxL,EAAA3F,iBAAA6B,KAAA1E,KAAA45L,YACAl1L,KAAAuF,SACA7J,GAAA,aAAAsE,KAAAi1L,SAAA1yL,KAAAvC,KAAAk1L,IACAx5L,GAAA,aAAAsE,KAAAi1L,SAAA1yL,KAAAvC,KAAAg1L,GALA,CANA,CAYA,EAEAJ,EAAA70L,UAAAk1L,SAAA,SAAAj4L,GACAgD,KAAAuF,SAAAK,IAAA,0BAAA5I,EAAA,IACA,EAEA43L,CACA,IACAn9L,OC/DA,qCACA,SACA,aACA,YACA,SAAA2B,EAAAD,EAAAmM,GACA,aAEA,IAAAy2B,EAAA,CACAzgC,KAAA,CACA4gC,MAAA,2BAIAi5J,EAAA,CACA75L,KAAA,CACA4I,YAAA,WACAC,SAAA,CAAAC,EAAA,EAAAC,EAAA,KAIA,SAAA+wL,EAAAjyK,GACA/pB,EAAAuG,QAAA,EAAAwjB,EAAAgyK,GACA7vL,EAAA0f,KAAAhlB,KAAA5G,EAAA,SAAA2iC,EAAA5Y,GACAnjB,KAEAuF,SACAI,SAAA,mBACAC,IAAA,CACAoxC,SAAA,WALAh3C,KAQAq1L,YACA,CAwBA,OAtBA/vL,EAAA3F,OAAAy1L,GAEAA,EAAAx7J,SAAA,gBAEAw7J,EAAAr1L,UAAAgH,UAAA,WACA/G,KAAA1E,KAAAgJ,KAAAtE,KAAA6F,OAAAvK,KAAAgJ,KACAtE,KAAA2M,eACA,EAEAyoL,EAAAr1L,UAAA0H,WAAA,WACAzH,KAAAuF,SAAA4I,OAAA,OACA,EAEAinL,EAAAr1L,UAAAs1L,WAAA,WACAr1L,KAAAuF,SACAK,IAAA,kBAAA5F,KAAA1E,KAAA4gC,MACA,EAEAk5J,EAAAr1L,UAAA8H,OAAA,SAAAtC,GACA,OAAAvF,KAAA8G,qBAAAvB,EACA,EAEA6vL,CACA,IACA39L,OC1DA,+CACA,SACA,aACA,UACA,WACA,YACA,SAAA2B,EAAAD,EAAAmM,EAAAm5B,EAAAjpB,GACA,aAEA,IAAAumB,EAAA,CACAzgC,KAAA,CACAoK,KAAA,uBAIA,SAAA4vL,EAAAnyK,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAA1E,KAAA+jC,OAAAr/B,KAAA1E,KAAAi6L,UAEA,IAAAx0L,EAAAf,KACAA,KAAAw1L,aAAA,SAAAh0L,GACAT,EAAAwE,SAAAjE,KAAA,6BAAAy5C,GAAAv5C,GAAA0J,QAAA,QACA,CACA,CAsGA,OApGA5F,EAAA3F,OAAA21L,EAAAhwL,GAEAgwL,EAAA17J,SAAA,qBAEA07J,EAAAv1L,UAAA01L,YAAA,WACA,OAAAz1L,KAAA1E,KAAAo6L,UAAA11L,KAAA2C,OAAA0E,YAAAi9C,eAAAtkD,KAAA1E,KAAAo6L,SACA,EAEAJ,EAAAv1L,UAAA41L,WAAA,WACA,OAAA31L,KAAA01L,SAEAv8L,EAAA+I,MAAAlC,KAAA01L,SAAAvwL,YACA0nL,MAAA,QACA9yK,MAAA,CAAArU,KAAA,kBACA8G,QAJA,EAKA,EAEA8oL,EAAAv1L,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAAs4C,UAAAt4C,KAAA2C,OAAA+B,WAAA6zC,gBAAAv4C,KAAA1E,KAAAoJ,YACA1E,KAAA01L,SAAA11L,KAAAy1L,cACAz1L,KAAA2M,eACA,EAEA2oL,EAAAv1L,UAAA0H,WAAA,WACAzH,KAAA41L,YACA,EAEAN,EAAAv1L,UAAA61L,WAAA,WACA,IAAA70L,EAAAf,KAEA61L,EAAArgL,EAAA1D,+BAAA/Q,EAAAzF,KAAAi6L,WACAv1L,KAAA01L,SAAA11L,KAAAy1L,cAEAt8L,EAAAiJ,KAAApC,KAAA21L,cAAA,SAAAG,EAAAt0L,GACA,IAAAu0L,EAAA38L,EAAA,WACAyhC,KAAAi7J,EAAAx9L,MACA0U,MAAAjM,EAAAzF,KAAA06L,MACA7nL,OAAApN,EAAAzF,KAAA26L,MACAtwL,SAAA,mBACAA,SAAA,4BACAC,IAAA,CACAs8C,OAAA,UACA7R,MAAA,OACA2G,SAAA,SACAk/I,SAAA,aACArpL,QAAA,QACA8vB,WAAA,IAEA91B,SAAA9F,EAAAwE,UAEAswL,KAAAn0I,OACAjjB,EAAA0B,YAAA01J,EAAAn0I,OAAA3gD,EAAAg1L,GAEAt3J,EAAAK,aAAA/9B,EAAA,KAAAg1L,GAGAF,KAAAxiD,QAAAwiD,EAAAxiD,OAAA1vI,SACAnC,IAAAT,EAAA20L,SAAA1C,oBACAjyL,EAAAo1L,YAAA30L,EACAi9B,EAAA0B,YAAA01J,EAAAxiD,OAAAtyI,EAAAg1L,IAEAA,EAAAr6L,GAAA,oBACAqF,EAAA20L,SAAAnE,eACAxwL,EAAA20L,SAAA5B,UAAAtyL,GACAT,EAAAo1L,YAAA30L,EACAi9B,EAAA0B,YAAA01J,EAAAn0I,OAAA3gD,IAAAwE,SAAAjE,KAAA,8BACAm9B,EAAA0B,YAAA01J,EAAAxiD,OAAAtyI,EAAAg1L,GAEA,IACAF,EAAAO,OAAAP,EAAAO,MAAAzyL,SACAoyL,EACAr6L,GAAA,yBACAqF,EAAAo1L,cAAA30L,GACAi9B,EAAA0B,YAAA01J,EAAAO,MAAAr1L,EAAAg1L,EAEA,IACAr6L,GAAA,yBACAqF,EAAAo1L,cAAA30L,GACAi9B,EAAA0B,YAAA01J,EAAAn0I,OAAA3gD,EAAAg1L,EAEA,MAGAv0L,IAAAT,EAAA20L,SAAA1C,oBACAjyL,EAAAo1L,YAAA30L,EACAu0L,EAAApwL,SAAA,WAEAowL,EAAAr6L,GAAA,oBACAqF,EAAA20L,SAAA5B,UAAAtyL,GACApI,EAAA4G,MAAA2F,SAAA,UAAA20I,WAAA1xI,YAAA,SACA,IAGA,IACA5I,KAAA01L,UACA11L,KAAA01L,SAAA59B,SAAA93J,KAAAw1L,aAEA,EAEAF,CACA,IACA79L,OChIA,YACA,eACA,SAAA0B,GACA,aAEA,IAAAkzF,EAAA,WACArsF,KAAAq2L,MAAA,EACA,EAoCA,OAlCAhqG,EAAAtsF,UAAAu2L,OAAA,SAAA7iL,GACA,OAAAvT,OAAAH,UAAA8yB,eAAA7N,KAAAhlB,KAAAq2L,MAAA5iL,EACA,EAEA44E,EAAAtsF,UAAArI,IAAA,SAAAkZ,EAAApE,GACAxM,KAAAq2L,MAAAzlL,GAAApE,CACA,EAEA6/E,EAAAtsF,UAAA1H,IAAA,SAAAuY,GACA,GAAA5Q,KAAAm+B,IAAAvtB,GACA,OAAA5Q,KAAAq2L,MAAAzlL,EAEA,EAEAy7E,EAAAtsF,UAAAo+B,IAAA,SAAAvtB,GACA,OAAA5Q,KAAAs2L,OAAA1lL,EACA,EAEAy7E,EAAAtsF,UAAAhH,OAAA,SAAA6X,UACA5Q,KAAAq2L,MAAAzlL,EACA,EAEAy7E,EAAAtsF,UAAAkf,MAAA,WACAjf,KAAAq2L,MAAA,EACA,EAEAhqG,EAAAtsF,UAAA4P,KAAA,WACA,OAAAxW,EAAAwW,KAAA3P,KAAAq2L,MACA,EAEAhqG,EAAAtsF,UAAA8Q,OAAA,WACA,OAAA1X,EAAA0X,OAAA7Q,KAAAq2L,MACA,EAEAhqG,CACA,IACA50F,OC7CA,8CAAAyB,EAAAmzF,GACA,aAEA,IAAAkqG,EAAA,IAAAlqG,EAEA,OACAmqG,WAAA,SAAAx5L,GACAgD,KAAAy2L,QAAAv9L,EAAAw9L,MAAA15L,GACA,EAEAy5L,QAAA,SAAAziL,GACA,IAAAuiL,EAAAp4J,IAAAnqB,GAAA,CAGAuiL,EAAA7+L,IAAAsc,GAAA,GAEA,IAAAoO,EAAAlqB,SAAAoqB,cAAA,QACAF,EAAA1c,KAAA,WACA0c,EAAA6tB,IAAA,aACA7tB,EAAAG,KAAAvO,EACA9b,SAAAugB,qBAAA,WAAA2X,YAAAhO,EAPA,CAQA,EAEA,IAEA3qB,OCzBA,qBACA,SACA,OACA,aACA,UACA,UACA,eACA,SAAA2B,EAAAoJ,EAAArJ,EAAAmM,EAAAkQ,EAAAmhL,GACA,aAEA,IAAAC,EAAA,KACAr6H,EAAA,KAEAxgC,EAAA,CACAzgC,KAAA,CACAq9C,SAAA,MACAk+I,WAAA,EACAC,WAAA,EACAC,aAAA,EACAC,YAAA,EACAC,gBAAA,EACAC,UAAA,aACAC,eAAA,SACAC,WAAA,EACAC,UAAA,UACAC,WAAA,GACAC,mBAAA,eACAC,WAAA,EACAC,WAAA,GACAC,mBAAA,eACAC,YAAA,EACAC,YAAA,GACAC,oBAAA,eACAC,UAAA,UACA5uL,kBAAA,EACA6uL,mBAAA,EACAC,YAAA,EACAC,SAAA,SACAC,gBAAA,EACAC,YAAA,EACAC,gBAAA,EACAC,eAAA,GACAC,cAAA,EACAC,eAAA,YAIAC,EAAA,SAAAr1K,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,SAAA2iC,EAAA5Y,GAEAnjB,KAAAy4L,OAAAr/L,EAAA,SACAyN,SAAA7G,KAAAuF,SACA,EAmWA,OAjWAD,EAAA3F,OAAA64L,GAEAA,EAAA5+J,SAAA,QAEA4+J,EAAAz4L,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MAEA,IAAAe,EAAAf,KACAA,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAo8C,YACA,SAAAp8C,GAAAyF,EAAA2yC,OAAAp4C,EAAA,IACA,SAAAA,GAAAyF,EAAA23L,uBAAAp9L,EAAA,IAGA0E,KAAA2M,gBAEA,IAAA6W,EAAAhhB,EAAAu1B,QAaA,OAZA7+B,QAAA,CACA,KACA,OAEA,SAAAy/L,EAAAC,GACAjC,EAAAH,WAAA,cAEAI,EAAA+B,EACAp8H,EAAAq8H,EACAp1K,EAAAc,SACA,IAEAd,EAAAa,OACA,EAEAm0K,EAAAz4L,UAAA0H,WAAA,WACAzH,KAAA0zC,QACA,EAEA8kJ,EAAAz4L,UAAA24L,uBAAA,SAAAnuJ,GACAvqC,KAAA0zC,SACA,iBAAA1zC,KAAA1E,KAAAq9C,UAAA34C,KAAA1E,KAAAq9C,SAAA,EACApO,EAAAoO,SAAA34C,KAAA1E,KAAAq9C,SAEApO,EAAAoO,SAAA5c,EAAA4c,QAEA,EAEA6/I,EAAAz4L,UAAA84L,YAAA,WAEA,mBADA74L,KACA1E,KAAAw9L,SAAA,cACA,WAFA94L,KAEA1E,KAAAw9L,SAAA,aACA,MACA,EAEAN,EAAAz4L,UAAAg5L,gBAAA,SAAAryK,EAAAwzI,GACA,IACA8+B,EADAh5L,KACA1E,KAAA,OAAA4+J,EAAAn2F,cAAA,aACA,GAAA5qE,EAAA0b,SAAAmkL,GACA,OAAAr5K,OAAAi3K,EAAAj3K,OAAA,IAAAq5K,EAAA,KAAA/sD,KAAA,GAGA,IAAAgtD,EAAA9/L,EAAA4d,UANA/W,KAMA1E,KAAA49L,OAAA,CAAAh/B,SACA,GAAA++B,KAAAvkC,QAAAhuI,EAAAiS,QAAAsgK,EAAAvkC,QAAA,CACA,IAAAykC,EAAAzyK,EAAAiS,QAAAsgK,EAAAvkC,QACA,uBAAAykC,GAAA,iBAAAA,GAAA,mBAAAA,EACA,CAAAx5K,OAAAnK,EAAAb,iBAAAs3H,KAAA,GAEA,CAAAA,KAAA,EACA,CAEA,OAAAtsH,OAAAnK,EAAAb,iBAAAs3H,KAAA,EACA,EAEAusD,EAAAz4L,UAAA2zC,OAAA,SAAAhtB,GACA,IAAA3lB,EAAAf,KAEA0mB,KAAA,CACAiS,QAAA,GACAR,QAAA,GACAS,aAAA,GAGA73B,EAAAq4L,OACAr4L,EAAAq4L,MAAAluG,UAGA,IAAAguG,EAAAn4L,EAAAzF,KAAA49L,OACA/gK,EAAAzR,EAAAyR,QAEAkhK,EAAAlgM,EAAAmI,KAAA43L,GAAA,SAAAt5K,GAAA,sBAAAA,EAAAla,MAAA,MAAAka,EAAAs6I,IAAA,IACAm/B,IAKAlhK,EAAA,CAJAh/B,EAAA4J,OAAA2jB,EAAAyR,SAAA,SAAAwB,EAAAyiB,GAEA,OADAziB,EAAAyiB,EAAAi9I,EAAAC,cAAAl9I,EAAAi9I,EAAA3kC,QACA/6H,CACA,QAGAu/J,EAAA//L,EAAA+N,IAAAwf,EAAAyR,SACA,SAAAikB,GACA,IAAAm9I,EAAAr5L,OAAAgyD,OAAA,GAAAmnI,GAIA,OAHAE,EAAA7zL,KAAA,MACA6zL,EAAA7kC,OAAAt4G,EAAAi9I,EAAAC,aACAC,EAAAvmI,MAAA5W,EAAAi9I,EAAAC,aACAC,CACA,KAGA,IAAAC,EAAArgM,EAAAghB,OAAA++K,GAAA,SAAAO,GAAA,OAAAA,EAAAC,cAAA,IACAC,EAAAxgM,EAAAghB,OAAA++K,GAAA,SAAAO,GAAA,sBAAAA,EAAA/zL,IAAA,IAEAk0L,EAAA,CACAC,OAAA94L,EAAA03L,OAAA,GACAxpD,WAAA,CACA1nF,SAAAxmD,EAAAzF,KAAA4N,mBAEA5E,KAAA,CAEA6J,OAAA,MAAAnO,KAAA1E,KAAAoL,KAAA,MAAA1G,KAAA1E,KAAAsL,YAAAR,EAAArF,EAAAzF,KAAAgJ,KAAAD,GAMA/I,KAAA,CACA+0I,MACAl3I,EAAAia,OACAja,EAAA0zL,MAAAqM,EAAA,UACA//L,EAAA0zL,MAAAqM,EAAA,UACAx/J,MACAvgC,EAAAia,OACAja,EAAA0zL,MAAAqM,EAAA,UACA//L,EAAA+N,IAAA/N,EAAA0zL,MAAAqM,EAAA,kBAAA1sL,GAAA,sBAAAA,EAAA,MAAAA,CAAA,KACA4gI,OACAj0I,EAAAia,OACAja,EAAA0zL,MAAA2M,EAAA,UACArgM,EAAA0zL,MAAA2M,EAAA,gBAEAM,KACA3gM,EAAAia,OACAja,EAAA0zL,MAAAqM,EAAA,UACA//L,EAAA+N,IAAAgyL,GAAA,SAAAO,GAAA,OAAAA,EAAAv/B,MAAA,QACAjjI,OACA,CACA99B,EAAA0zL,MAAA8M,EAAA,WAsBAz/C,OAAAn5I,EAAAzF,KAAA27L,eAQAj1K,KAAAmW,EACAxoB,KAAA,CAEAnD,MAAArT,EAAA0zL,MAAAqM,EAAA,WAEAz+I,MAAA,CACAuY,MAAA,CACAn4B,KAAA95B,EAAAzF,KAAAw8L,aAIAx9B,KAAA,CACAl2J,EAAA,CACA0E,KAAA/H,EAAAzF,KAAAu7L,WAEAxyL,EAAA,CACAyE,KAAA/H,EAAAzF,KAAAw7L,YAGAzjJ,QAAA,CACAvqC,KAAA/H,EAAAzF,KAAAy7L,aAEAgD,OAAA,CACAjxL,KAAA/H,EAAAzF,KAAA07L,WAOA7yL,SAAApD,EAAAzF,KAAA67L,gBAEAj9B,KAAA,CAEA91J,EAAA,CACA0E,KAAA/H,EAAAzF,KAAA87L,UAEApkI,MAAA,CACAn4B,KAAA95B,EAAAzF,KAAAg8L,WACAnzL,SAAApD,EAAAzF,KAAAi8L,oBAEAyC,KAAAj5L,EAAAg4L,gBAAAryK,EAAA,KACA2L,IAAAtxB,EAAAzF,KAAA68L,WAAAp3L,EAAAzF,KAAA2+L,mBAAA7zL,EACA+wB,IAAAp2B,EAAAzF,KAAA68L,WAAAp3L,EAAAzF,KAAA4+L,mBAAA9zL,EACAV,KAAA3E,EAAAzF,KAAA+7L,UACAlpL,OAAApN,EAAAzF,KAAA6+L,kBAGA91L,EAAA,CACAyE,KAAA/H,EAAAzF,KAAAk8L,UAGAxkI,MAAA,CACAn4B,KAAA95B,EAAAzF,KAAAm8L,WACAtzL,SAAApD,EAAAzF,KAAAo8L,oBAEAsC,KAAAj5L,EAAAg4L,gBAAAryK,EAAA,MAEAi5I,GAAA,CACA72J,KAAA/H,EAAAzF,KAAAq8L,WAGA3kI,MAAA,CACAn4B,KAAA95B,EAAAzF,KAAAs8L,YACAzzL,SAAApD,EAAAzF,KAAAu8L,qBAEAmC,KAAAj5L,EAAAg4L,gBAAAryK,EAAA,QAOA2uD,KAAA,CACA1iB,KAAA,CACAjtD,KAAA3E,EAAA83L,gBAGAuB,IAAA,CACApnI,MAAA,CACArzC,OAAA,SAAAnT,EAAA6tL,EAAAz/L,GACA,qBAAAmG,EAAAzF,KAAA47L,WACA,IAAAmD,GAAA/kL,QAAA,OAEA9I,CAEA,IAGAw0J,KAAA,CACAr9J,QAAA5C,EAAAzF,KAAA08L,WACAtyL,KAAA3E,EAAAzF,KAAA28L,UAEAqC,SAAA,CACAxxL,KAAA/H,EAAAzF,KAAA88L,eAMA9zL,KAAA,CACA6J,OAAApN,EAAAzF,KAAA+8L,kBAKAr4L,KAAA8K,eAAA,aACA8uL,EAAAt+L,KAAAi/L,QAAA,SAAAC,GACAz5L,EAAA6J,sBAAA,UAAA4vL,EAAA5/L,GACA,IAGAmG,EAAAzF,KAAAm/L,UAAA,IAAA15L,EAAAzF,KAAAm/L,YAAAb,EAAA1/B,KAAA71J,EAAA8yB,IAAAp2B,EAAAzF,KAAAm/L,WACA15L,EAAAzF,KAAAo/L,UAAA,IAAA35L,EAAAzF,KAAAo/L,YAAAd,EAAA1/B,KAAA71J,EAAAguB,IAAAtxB,EAAAzF,KAAAo/L,UAEA,IAAAC,EAAAxhM,EAAA4d,UAAAhW,EAAAzF,KAAA49L,OAAA,CAAAh/B,KAAA,MACAygC,IACAf,EAAAt+L,KAAA8I,EAAAu2L,EAAAjmC,QASA3zJ,EAAAzF,KAAAy8L,oBACA6B,EAAA1/B,KAAA91J,EAAA04B,QAAA,CAAAr2B,KAAA,EAAAE,MAAA,GACAizL,EAAA1/B,KAAA71J,EAAAy4B,QAAA,CAAAp2B,IAAA,EAAAE,OAAA,IAGA7F,EAAAq4L,MAAA78H,EAAAq+H,SAAAhB,GAIA,IAAAiB,EAAA95L,EAAAq4L,MAAAyB,KACAC,EAAAD,EAAA36L,OAAAyP,KAAAkrL,GAAA,IACA,GAAA95L,EAAAzF,KAAA08L,WAAA,CACA,GAAAj3L,EAAAzF,KAAA48L,iBAAAn3L,EAAAzF,KAAAy/L,iBAAAh6L,EAAAzF,KAAA0/L,kBAAAF,EAAApiM,OACA,GAAAqI,EAAAzF,KAAAy/L,iBAAAh6L,EAAAzF,KAAA0/L,gBACAj6L,EAAAq4L,MAAAp4B,KAAA,CAAAjgK,EAAAzF,KAAAy/L,gBAAAh6L,EAAAzF,KAAA0/L,sBACA,CAGA,IAAAC,EAAA,YAAArB,EAAA1/B,KAAA91J,EAAAsB,KAAA,EAAAqP,KAAAsd,IAAApxB,MAAA,KAAA65L,GACAI,EAAA,YAAAtB,EAAA1/B,KAAA91J,EAAAsB,KAAAo1L,EAAApiM,OAAAqc,KAAAoiB,IAAAl2B,MAAA,KAAA65L,GACA/5L,EAAAq4L,MAAAp4B,KAAA,CACAjgK,EAAAzF,KAAAy/L,gBAAA51F,OAAApkG,EAAAzF,KAAAy/L,iBAAAE,EACAl6L,EAAAzF,KAAA0/L,gBAAA71F,OAAApkG,EAAAzF,KAAA0/L,iBAAAE,GAEA,CAEAn6L,EAAAzF,KAAA08L,YAAAj3L,EAAAzF,KAAA88L,iBACAr3L,EAAA03L,OAAAn3L,KAAA,cAAAsmI,IAAA,YAAAp+H,OACAzI,EAAAzF,KAAAg9L,cAAAv3L,EAAA03L,OAAAn3L,KAAA,wBAAA2mC,KAAA,OAAAlnC,EAAAzF,KAAAi9L,gBAEA,CAgBA,EAEAC,EAAAz4L,UAAA+J,WAAA,WACA9J,KAAAuF,SAAAK,IAAA,oBACA,EAEA4yL,EAAAz4L,UAAAgK,YAAA,WACA/J,KAAAuF,SAAAK,IAAA,iBACA,EAEA4yL,CACA,IAEA/gM,OC1ZA,WACA,aACA,SACA,OACA,KACA,SACA,gBACA,mBACA,SAAA0B,EAAAC,EAAAoJ,EAAAsB,EAAAC,EAAAzB,EAAA0B,GACA,aAIA,IAAAC,EAAA,CACA3I,KAAA,CACA4I,YAAA,WACAC,SAAA,CAAAC,EAAA,EAAAC,EAAA,GACAC,KAAA,CAAAF,EAAA,IAAAC,EAAA,IACAE,OAAA,EACAC,QAAA,EACAC,UAAA,EACAC,WAAA,CACAC,WAAA,aACAC,eAAA,GACAC,iBAAA,GACAC,iBAAA,IAEApB,SAAA,GACAqB,mBAAA,EACAC,wBAAA,aACAC,UAAA,EACAC,QAAA,GAEAC,WAAA,GACAC,UAAA,EACAC,oBAAA,GAGAC,EAAA,SAAAC,EAAAC,EAAAC,GACArM,EAAAuG,QAAA,EAAAK,KAAAiE,EAAAuB,EAAAC,GAEAzF,KAAA0F,KAAA1F,KAAA1E,KAAAoK,KAEA1F,KAAAuF,WACAI,SAAA,gBACAC,IAAA,wBAEA5F,KAAA6F,OAAA,KACA7F,KAAA8F,KAAA,GAEA9F,KAAA+F,aAAA,GAEA/F,KAAAgG,cAAA,GAEA1D,EAAAD,eAAArC,KAAA,oCAEAA,KAAAiG,eAEA,mBAAAX,EAAAY,cACAZ,EAAAY,aAAAlG,MAGAsF,EAAA5D,gBAAA,eAAA1B,KACA,EA8rBA,OA5rBAsF,EAAAvF,UAAAoG,qBAAAC,EACAd,EAAAvF,UAAA0E,UAAA,EACAa,EAAAvF,UAAAsG,uBAAA,WACA,QACA,EAEAtC,EAAA5D,eAAAmF,GAEAhD,EAAAD,eAAAiD,EAAA,gBAEAA,EAAAvF,UAAA3G,EAAA,SAAAkN,GACA,OAAAtG,KAAAuF,SAAAjE,KAAAgF,EACA,EAEAhB,EAAAvF,UAAAwG,eAAA,SAAAC,GACAxG,KAAAuF,SACAK,IAAA,CACAa,KAAA,OAAAD,EAAAC,KAAA,OAAAD,EAAAC,KAAA,KACAC,IAAA,OAAAF,EAAAE,IAAA,OAAAF,EAAAE,IAAA,KACAC,MAAA,OAAAH,EAAAG,MAAA,OAAAH,EAAAG,MAAA,KACAC,OAAA,OAAAJ,EAAAI,OAAA,OAAAJ,EAAAI,OAAA,OAEAC,SAAAzN,EAAA,QACA,EAGAkM,EAAAvF,UAAA+G,qBAAA,SAAAvB,GACA,IAAAxE,EAAAf,KAEA,OAAAwC,EAAAzB,EAAAgG,aACAzD,MAAA,WACA,IAAAvC,EAAAiG,QAAA,CAEAjG,EAAAwE,SAAAsB,SAAAtB,GACA,IAAA0B,EAAA9N,EAAA+N,IAAAnG,EAAAoE,YAAA,SAAAxM,GAEA,OADAA,EAAAwO,SAAApG,EAAAoG,SACAxO,CACA,IACAyO,EAAArG,EAAA4B,OAAA0E,YAAAC,YAAAL,GACA,OAAAzE,EAAA+E,IAAAxG,EAAAyG,gCAAAJ,GAPA,CAQA,IACA9D,MAAA,WACA,OAAAvC,EAAA0G,YACA,GACA,EAEAnC,EAAAvF,UAAA2H,uBAAA,WACA,WAAA1H,KAAAqF,sBAEArF,KAAA6F,QAEA7F,KAAA6F,OAAA6B,wBACA,EAEApC,EAAAvF,UAAA4H,4BAAA,SAAA/F,GACA,OAAAA,EAAAtG,KAAAsM,UACAhG,EAAAiG,OAAA7H,KAAA2C,OAAAmF,gBACAlG,EAAAyD,oBAAArF,KAAAmH,SAAAY,YACAnG,EAAAiG,OAAA7H,KAAAmH,SAAAY,aACAnG,EAAAtG,KAAA4J,QAAAlF,KAAAmH,SAAAa,cACApG,EAAAiG,OAAA7H,KAAAmH,SAAAa,eAGApG,EAAAiG,OAAA7H,KAAAuF,SACA,EAEAD,EAAAvF,UAAAyH,gCAAA,SAAAJ,GACA,IAAArG,EAAAf,KACAiI,EAAA,GAOA,OALA9O,EAAAiJ,KAAAgF,GAAA,SAAAxF,GACAb,EAAAmH,QAAAtG,GACAqG,EAAApH,KAAAE,EAAA4G,4BAAA/F,GACA,IAEAqG,CACA,EAEA3C,EAAAvF,UAAA8H,OAAA,SAAAtC,GACA,IAAAxE,EAAAf,KAEA,OAAAwC,EAAAzB,EAAAgG,aACAzD,MAAA,WACA,IAAAvC,EAAAiG,QAAA,CAEAjG,EAAAwE,SAAAsB,SAAAtB,GAEA,IAAA0C,EAAA,GAMA,OAJA9O,EAAA0I,QAAAd,EAAA+E,MAAA,SAAAlE,GACAqG,EAAApH,KAAAE,EAAA4G,4BAAA/F,GACA,IAEAY,EAAA+E,IAAAU,EATA,CAUA,IACA3E,MAAA,WACA,OAAAvC,EAAA0G,YACA,GACA,EAEAnC,EAAAvF,UAAAgH,UAAA3N,EAAA+O,KAEA7C,EAAAvF,UAAA0H,WAAArO,EAAA+O,KAEA7C,EAAAvF,UAAAqI,OAAA,WACApI,KAAAqI,mBAEAlP,EAAA0I,QAAA7B,KAAA8F,MAAA,SAAAlE,GAEAA,EAAAwG,QACA,GACA,EAGA9C,EAAAvF,UAAAsI,iBAAAjP,EAAA+O,KAEA7C,EAAAvF,UAAAuI,MAAA,SAAAC,GACAvI,KAAAwI,QAAAD,GAEApP,EAAA0I,QAAA7B,KAAA8F,MAAA,SAAAlE,GACAA,EAAA0G,MAAAC,EACA,GACA,EAEAjD,EAAAvF,UAAAyI,QAAA,SAAAD,GACA,EAEAjD,EAAAvF,UAAA0I,UAAA,WACA,OAAAzI,KAAAyE,YAGAzE,KAAA6F,QACA7F,KAAA6F,OAAA4C,YAGA,EAEAnD,EAAAvF,UAAA2I,qBAAA,WACA1I,KAAA2I,0BAAAC,YAAA,eACA5I,KAAAyE,UAAA,EACAzE,KAAA6I,OACA,EAEAvD,EAAAvF,UAAA+I,KAAA,WAEA,IAAA/H,EAAAf,KACA+I,EAAA/I,KAAA1E,KAAA0N,cACA,SAAAD,GAAA3C,MAAA2C,GACA/I,KAAA1E,KAAA2N,mBACA7P,EAAA4G,KAAA2I,2BAAA/C,IAAA,CAAAsD,kBAAAlJ,KAAA1E,KAAA2N,kBAAAE,MAAAnJ,KAAA1E,KAAA2N,kBAAAG,OACApJ,KAAA2I,0BAAAC,YAAA,eACA5I,KAAA2I,0BAAAhD,SAAA,YAAAoD,GACA/I,KAAA2I,0BAAAU,IAAA,2FACAtI,EAAA4H,0BAAAC,YAAA,YAAAG,GACAhI,EAAA0D,UAAA,EACA1D,EAAA8H,OACA,KAEA7I,KAAA0I,sBAEA,EAEApD,EAAAvF,UAAAuJ,qBAAA,WACAtJ,KAAA2I,0BAAAhD,SAAA,eACA3F,KAAAyE,UAAA,EACAzE,KAAAuJ,QACA,EAEAjE,EAAAvF,UAAAyJ,KAAA,WAEA,IAAAzI,EAAAf,KACA+I,EAAA/I,KAAA1E,KAAAmO,cACA,SAAAV,GAAA3C,MAAA2C,GACA/I,KAAA1E,KAAAoO,mBACAtQ,EAAA4G,KAAA2I,2BAAA/C,IAAA,CAAAsD,kBAAAlJ,KAAA1E,KAAAoO,kBAAAP,MAAAnJ,KAAA1E,KAAAoO,kBAAAN,OACApJ,KAAA2I,0BAAAhD,SAAA,YAAAoD,GACA/I,KAAA2I,0BAAAU,IAAA,2FACAtI,EAAA4H,0BAAAC,YAAA,YAAAG,GACAhI,EAAA4H,0BAAAhD,SAAA,eACA5E,EAAA0D,UAAA,EACA1D,EAAAwI,QACA,KAEAvJ,KAAAsJ,sBAEA,EAEAhE,EAAAvF,UAAA4I,wBAAA,WACA,aAAA3I,KAAA6F,OACA7F,KAAA6F,OAAA8D,6BAAA3J,MAEAA,KAAAuF,QAEA,EAEAD,EAAAvF,UAAA4J,6BAAA,SAAAC,GACA,OAAAA,EAAArE,QACA,EAEAD,EAAAvF,UAAA8J,OAAA,SAAAf,GACA,IAAA5H,UAAAxI,SACAoQ,GAAA9I,KAAAyI,aAEAK,EACA9I,KAAA8I,OAEA9I,KAAAwJ,MACA,EAEAlE,EAAAvF,UAAA8I,MAAA,WACA7I,KAAAyI,cAGAzI,KAAA8J,aAEA3Q,EAAA0I,QAAA7B,KAAA8F,MAAA,SAAAlE,GACAA,EAAAiH,OACA,IACA,EAEAvD,EAAAvF,UAAA+J,WAAA1Q,EAAA+O,KAEA7C,EAAAvF,UAAAwJ,OAAA,WACAvJ,KAAAyI,cAGAzI,KAAA+J,cAEA5Q,EAAA0I,QAAA7B,KAAA8F,MAAA,SAAAlE,GACAA,EAAA2H,QACA,IACA,EAEAjE,EAAAvF,UAAAgK,YAAA3Q,EAAA+O,KAEA7C,EAAAvF,UAAAiK,gBAAA,SAAAC,GACA,OAAAjK,KAAA1E,MAAA0E,KAAA1E,KAAAoI,UAAA1D,KAAA1E,KAAAoI,SAAAuG,IAAA,EACA,EAEA3E,EAAAvF,UAAAmK,kBAAA,SAAAD,EAAAE,EAAAC,EAAAC,GACA,IAAAtJ,EAAAf,KACAoK,KAAArJ,EAAAwE,SAEA,IAAA+E,EAAAtK,KAAAgK,gBAAAC,GACAM,EAAAJ,EAAA,wBAAAF,EAEAG,EAAAI,IAAAD,GAEAD,EAAA3G,SACA3D,KAAAyK,sBAAAL,EAAAG,GAAA,WAUA,OATAxJ,EAAA6B,aAAA0H,EAAA1G,gBAAAyG,OAAAjE,SAAArF,EAAA2J,kBAAAT,KASAlJ,EAAA4J,YACA,GAEA,EAEArF,EAAAvF,UAAA4K,WAAA,WACA,QAAA3K,KAAA6F,SAEA,SAAA7F,KAAA6F,OAAAH,MAEA1F,KAAA6F,OAAA8E,aACA,EAEArF,EAAAvF,UAAA6K,sBAAA,SAAAX,EAAAI,EAAAQ,EAAAnK,GACA,IAAA4J,EAAAtK,KAAAgK,gBAAAC,GACA,GAAAK,EAAA3G,QAAA,CACA,IAAA+G,EAAA1K,KAAA0K,kBAAAT,GACAjK,KAAA4C,aAAA0H,EAAA1G,gBAAAyG,EAAAQ,EAAAnK,EAAAgK,EACA,CACA,EAEApF,EAAAvF,UAAA2K,kBAAA,SAAAT,GACA,qBAAAA,GAAA,eAAAA,CACA,EAEA3E,EAAAvF,UAAA+K,eAAA,SAAAb,GAEA,OADAjK,KAAAgK,gBAAAC,GACAtG,OACA,EAEA2B,EAAAvF,UAAA6C,aAAA,SAAAgB,EAAAyG,EAAAQ,EAAAnK,EAAAgK,EAAAK,GACA,GAAA/K,KAAA2C,OAAA,MAEAyD,IAAAiE,IACAA,EAAArK,KAAAgL,sBAEA,IAKAC,EALAC,EAAAL,GAAA7K,KAAAuF,SAEA2F,aAAA9R,IACA8R,IAAA7S,IAAA,IAGAqI,IACAuK,EAAA,CACAE,QAAAzK,EAAAyK,QACAC,QAAA1K,EAAA0K,QACAC,QAAA3K,EAAA2K,QACAC,QAAA5K,EAAA4K,QACAC,MAAA7K,EAAA6K,MACAC,MAAA9K,EAAA8K,MACAC,QAAA/K,EAAA+K,QACAC,QAAAhL,EAAAgL,UAIA,IAAAC,EAAA,CACA/J,KAAA5B,KACA4L,QAAAV,EACAW,WAAAX,EAAAY,wBACAb,gBACAP,uBAGA1K,KAAA2C,OAAAe,SAAAqI,QAAAnI,EAAA+H,EAAAtB,EAAA,KAAAU,EAhCA,CAiCA,EAEAzF,EAAAvF,UAAAiL,mBAAA,WACA,YAAA5E,IAAApG,KAAAmG,gBACAnG,KAAAmG,gBAEAnG,KAAA6F,OACA7F,KAAA6F,OAAAmF,0BADA,CAIA,EAEA1F,EAAAvF,UAAAiM,wBAAA,WACAhM,KAAAiM,UACAjM,KAAAuF,SAAAI,SAAA,iBAEA3F,KAAAuF,SAAAqD,YAAA,gBACA,EAEAtD,EAAAvF,UAAAkM,QAAA,WACA,OAAAjM,KAAAkM,cAAAlM,KAAAmM,UACA,EAEA7G,EAAAvF,UAAAqM,uBAAA,SAAAC,EAAAzI,GACA5D,KAAA4C,aAAAgB,EAAA,oBAAAyI,EACA,EAEA/G,EAAAvF,UAAAuM,kBAAA,SAAAD,GACA,OAAArI,EAAAvB,cAAAzC,KAAA1E,KAAAoH,WAAA1C,KAAA2C,OAAA3C,KAAAoM,uBAAA7J,KAAAvC,KAAAqM,GAAArM,KAAAuM,WACA,EAEAjH,EAAAvF,UAAAoM,SAAA,WACA,IAAAK,EAAAxM,KAAAuM,WAEA,OAAAC,UAAA,IAAAA,GAIA,IAAAA,EAAA9T,MAKA,EAEA4M,EAAAvF,UAAA0M,YAAA,WACA,OAAAzM,KAAAmH,UAAAnH,KAAAmH,SAAAuF,mBAAA1M,KACA,EAEAsF,EAAAvF,UAAA4M,cAAA,WACA,GAAA3M,KAAA4M,WAAA5M,KAAAyM,cAAA,CACA,IAAA7G,EAAA,CACAzB,SAAA,WACA0I,QAAA,QACAtI,OAAAvE,KAAA8M,aAGA9M,KAAA1E,KAAAyR,YACAnH,EAAAmH,UAAA/M,KAAA1E,KAAAyR,UAAA,OAGA,IAAA/M,KAAA1E,KAAA2J,UACAW,EAAAoH,MAAAhN,KAAA1E,KAAAgJ,KAAAF,EAAA,KACAwB,EAAAqH,OAAA,UACA,MAAAjN,KAAA1E,KAAAqL,OAAA,MAAA3G,KAAA1E,KAAAmL,MACAb,EAAAsH,WAAA,OACAtH,EAAAuH,YAAAnN,KAAA1E,KAAAqL,MAAA,KACAf,EAAAoH,MAAAhN,KAAA1E,KAAAgJ,KAAAF,EAAA,MACA,MAAApE,KAAA1E,KAAAqL,OAAA,MAAA3G,KAAA1E,KAAAmL,MACAb,EAAAsH,WAAAlN,KAAA1E,KAAAmL,KAAA,KACAb,EAAAuH,YAAAnN,KAAA1E,KAAAqL,MAAA,KACAf,EAAAoH,MAAA,eAAAhN,KAAA1E,KAAAmL,KAAA,KAAAzG,KAAA1E,KAAAqL,MAAA,QAEAf,EAAAsH,YAAA,MAAAlN,KAAA1E,KAAAmL,KAAAzG,KAAA1E,KAAAmL,KAAAzG,KAAA1E,KAAA6I,SAAAC,GAAA,KACAwB,EAAAoH,MAAAhN,KAAA1E,KAAAgJ,KAAAF,EAAA,MAGApE,KAAAuF,SAAAK,OAEA,IAAAwH,EAAA,CACAC,YAAA,MAAArN,KAAA1E,KAAAoL,IAAA1G,KAAA1E,KAAAoL,IAAA1G,KAAA1E,KAAA6I,SAAAE,GAAA,MAGA,MAAArE,KAAA1E,KAAAsL,SACAwG,EAAAE,cAAAtN,KAAA1E,KAAAsL,OAAA,MAEA5G,YAAAmH,SACAnH,KAAA2C,OAAA4K,YAAA3H,IAAAwH,GAEApN,KAAA6F,OAAAN,SAAAK,IAAAwH,EAEA,eAAApN,KAAA6F,QAAA,MAAA7F,KAAA6F,eAAA7F,KAAA0H,yBAkBA,MAAA1H,KAAA6F,OACA7F,KAAA6F,OAAA2H,sBAAAxN,MAEAA,KAAAuF,SAAAK,IAAA5F,KAAAyN,eAAAzN,KAAA1E,WArBA,CACA,IAAAwK,EAAA9F,KAAAmH,SAAA5B,SAAA,GAEA,GAAAvF,KAAAuF,SAAA,KAAAO,EAAA,CACA,IAAAD,EAAA7F,KAAAuF,SAAAM,SAAA,GAEA,IAAA7F,KAAA1E,KAAA4J,QAAAlF,KAAA1E,KAAAsM,YAAA5H,KAAAmH,SAAAa,cAAA,CACA,IAAA0F,EAAA1N,KAAAmH,SAAAa,cAAA,GACAnC,IAAA6H,GACA1N,KAAAuF,SAAAsB,SAAA6G,EACA,MAAA1N,KAAA1E,KAAA4J,QAAAlF,KAAA1E,KAAAsM,WACA/B,IAAAC,GACA9F,KAAAuF,SAAAsB,SAAAf,EAEA,CAEA9F,KAAA6F,OAAA2H,sBAAAxN,KACA,CAQAA,KAAA1E,KAAAqS,UAAA3N,KAAA1E,KAAAqS,SAAAhK,SACA3D,KAAA2C,OAAAmF,eAAApM,GAAA,SAAAsE,KAAA4N,uBAAArL,KAAAvC,MACA,EAEAsF,EAAAvF,UAAA2M,mBAAA,SAAAmB,GACA,QACA,EAEAvI,EAAAvF,UAAA6M,QAAA,SAAAhL,GACA,QACA,EAEA0D,EAAAvF,UAAA6N,uBAAA,WACA,IAAAE,EAAA9N,KAAA2C,OAAAmF,eAAAgG,YACA9N,KAAAuF,SAAAK,IAAA,MAAA5F,KAAA1E,KAAA6I,SAAAE,EAAAyJ,IAAA9N,KAAA1E,KAAAqS,SAAAI,OAAA,KACA,EAEAzI,EAAAvF,UAAAyN,sBAAA,SAAA5D,GACA,IAAArF,EAAAqF,EAAAkD,YACAlH,EAAA5F,KAAAyN,eAAA7D,EAAAtO,KAAAiJ,GACAqF,EAAArE,SAAAK,MACA,EAEAN,EAAAvF,UAAA+M,UAAA,WACA,OAAA9M,KAAAqF,oBAAArF,KAAA6F,SAAA7F,KAAAmH,UAAAnH,KAAAgO,WAEAhO,KAAA1E,KAAAiJ,OADAvE,KAAA1E,KAAAiJ,OAtgBA,GAwgBA,EAEAe,EAAAvF,UAAA0N,eAAA,SAAAnS,EAAA2S,GACA,IAAA1J,OAAA6B,IAAA6H,IAAA3S,EAAAiJ,OAEA,QAAAjJ,EAAA4S,cACA,OACA/J,SAAA,WACAuC,IAAApL,EAAA6I,SAAAE,EAAA,KACAoC,KAAAnL,EAAA6I,SAAAC,EAAA,KACA4I,MAAA1R,EAAAgJ,KAAAF,EACAG,SACA4J,OAAA,QAIA,IAAAvI,EAAA,CACArB,SACAJ,SAAA7I,EAAA4I,aAGA,OAAA5I,EAAA8S,eACAxI,EAAAa,KAAA,MACAb,EAAAe,MAAA,MACAf,EAAAc,IAAA,MACAd,EAAAgB,OAAA,MACAhB,EAAAuI,OAAA,OACAvI,EAAAoH,MAAA,OACApH,IAGA,MAAAtK,EAAAsL,QAAA,MAAAtL,EAAAoL,KACAd,EAAAc,IAAA,OACAd,EAAAgB,OAAAtL,EAAAsL,OAAA,KACAhB,EAAAuI,OAAA7S,EAAAgJ,KAAAD,GACA,MAAA/I,EAAAsL,QAAA,MAAAtL,EAAAoL,KACAd,EAAAc,IAAApL,EAAAoL,IAAA,KACAd,EAAAgB,OAAAtL,EAAAsL,OAAA,KACAhB,EAAAuI,OAAA,SAEAvI,EAAAc,KAAA,MAAApL,EAAAoL,IAAApL,EAAAoL,IAAApL,EAAA6I,SAAAE,GAAA,KACAuB,EAAAgB,OAAA,OACAhB,EAAAuI,OAAA7S,EAAAgJ,KAAAD,GAEA,MAAA/I,EAAAqL,OAAA,MAAArL,EAAAmL,MACAb,EAAAa,KAAA,OACAb,EAAAe,MAAArL,EAAAqL,MAAA,KACAf,EAAAoH,MAAA1R,EAAAgJ,KAAAF,GACA,MAAA9I,EAAAqL,OAAA,MAAArL,EAAAmL,MACAb,EAAAa,KAAAnL,EAAAmL,KAAA,KACAb,EAAAe,MAAArL,EAAAqL,MAAA,KACAf,EAAAoH,MAAA,SAEApH,EAAAa,MAAA,MAAAnL,EAAAmL,KAAAnL,EAAAmL,KAAAnL,EAAA6I,SAAAC,GAAA,KACAwB,EAAAe,MAAA,OACAf,EAAAoH,MAAA1R,EAAAgJ,KAAAF,IAGA,IAAA9I,EAAA2J,WACAW,EAAAa,KAAA,IACAb,EAAAe,MAAA,IACAf,EAAAsH,WAAA,OACAtH,EAAAuH,YAAA,SAGA7R,EAAA+S,YAAA/S,EAAAgT,kBAAAhT,EAAAiT,6BACA3I,EAAAuI,OAAA,SAGA7S,EAAAkT,WAAAlT,EAAAmT,iBAAAnT,EAAAiT,6BACA3I,EAAAoH,MAAA,QAGA1R,EAAAoT,aACA9I,EAAAoH,MAAA,eAGApH,EACA,EAEAN,EAAAvF,UAAA4O,YAAA,WACA,IAAAxK,EAAA,GAcA,OAZA,OAAAnE,KAAA1E,KAAAmL,OACAtC,EAAAsC,KAAAzG,KAAA1E,KAAAmL,MAEA,OAAAzG,KAAA1E,KAAAoL,MACAvC,EAAAuC,IAAA1G,KAAA1E,KAAAoL,KAEA,OAAA1G,KAAA1E,KAAAqL,QACAxC,EAAAwC,MAAA3G,KAAA1E,KAAAqL,OAEA,OAAA3G,KAAA1E,KAAAsL,SACAzC,EAAAyC,OAAA5G,KAAA1E,KAAAsL,QAEAzC,CACA,EAEAmB,EAAAvF,UAAAmI,QAAA,SAAAtG,GAOA,OANA5B,KAAA8F,KAAAjF,KAAAe,GACAA,EAAAiE,OAAA7F,KACA4B,EAAAuF,SAAAnH,KAAAmH,SACAvF,EAAAe,OAAA3C,KAAA2C,OACA3C,KAAA0B,gBAAA,aAAAE,UACAA,EAAAoF,QACAhH,IACA,EAEAsF,EAAAvF,UAAA6O,WAAA,SAAAhN,GACAA,EAAAiN,eAEA,UAAAjN,EAAA8D,MACA1F,KAAA2C,OAAAmM,YAAAC,qBAAAnN,EAAAtG,MAEA,IAAAkG,EAAAxB,KAAA8F,KAAAhN,QAAA8I,GAOA,OANA5B,KAAA8F,KAAArE,OAAAD,EAAA,GACAI,EAAAiE,OAAA,KACAjE,EAAAuF,SAAA,KACAvF,EAAAe,OAAA,KACAf,EAAAoF,SAAA,EAEAhH,IACA,EAEAsF,EAAAvF,UAAA8O,aAAA,WACA1V,EAAAiJ,KAAApC,KAAA8F,MAAA,SAAA8D,GACAA,EAAAiF,cACA,GACA,EAEAvJ,EAAAvF,UAAAiP,eAAA,WACA,IAAAjO,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAA8F,KAAApH,MAAA,aAAAkD,GACAb,EAAA6N,WAAAhN,EACA,GACA,EAEA0D,EAAAvF,UAAA0K,sBAAA,SAAAlF,EAAA7E,EAAAuO,GACA,oBAAA/N,UAAA,GACA,OAAAlB,KAAAyK,sBAAAzK,KAAAuF,SAAArE,UAAA,GAAAA,UAAA,IACAlB,KAAAgG,cAAAnF,KAAA,CAAA0E,WAAA7E,QAAAuO,YACA1J,EAAA7J,GAAAgF,EAAAuO,EACA,EAMA3J,EAAAvF,UAAAmP,yBAAA9V,EAAA+O,KAEA7C,EAAAvF,UAAAoP,kCAAA,WACAhW,EAAAiJ,KAAApC,KAAA8F,MAAA,SAAAlE,GACAA,EAAAuN,mCACA,IAEAnP,KAAAkP,2BAEAlP,KAAAoP,cACApP,KAAAoP,eAEA,IAAArO,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAAgG,eAAA,SAAAqJ,GACAA,EAAA9J,SACA8J,EAAA9J,SAAAiF,IAAA6E,EAAA3O,MAAA2O,EAAAJ,SACAI,EAAA1D,QACA5K,EAAAuO,YAAAD,EAAA1D,OAAA0D,EAAA/O,OACA,IAEAN,KAAA6F,OAAA,KACA7F,KAAAmH,SAAA,KACAnH,KAAA2C,OAAA,KAEA3C,KAAAuF,SAAAxM,QACA,EAEAuM,EAAAvF,UAAAwP,YAAA,WACA,OAAAvP,KAAA6F,OACA7F,KAAA6F,OAAA0J,cACAvP,IACA,EAEAsF,EAAAvF,UAAAyP,uBAAA,SAAAC,GACA,QAAAzP,KAAA6F,SACA7F,KAAA6F,SAAA4J,GAAAzP,KAAA6F,OAAA2J,uBAAAC,GAEA,EAGAnK,EAAAvF,UAAAO,OAAA,SAAAqL,EAAArL,EAAAoP,GACAvW,EAAAiJ,KAAAjJ,EAAAwW,KAAArP,IAAA,SAAAI,GACA,IAAAuO,EAAA3O,EAAAI,GACAiL,EAAA,SAAAjL,GAAAuO,EACA,KAGA,IAAAS,GACA1P,KAAAgG,cAAAnF,KAAA,CAAA8K,SAAArL,UACA,EAEAgF,EAAAvF,UAAAuP,YAAA,SAAA3D,EAAArL,GACAnH,EAAAiJ,KAAAjJ,EAAAwW,KAAArP,IAAA,SAAAI,GACA,IAAAuO,EAAA3O,EAAAI,GACAiL,EAAA,YAAAjL,GAAAuO,EACA,GACA,EAEA3J,EAAAvF,UAAA6P,aAAA,SAAAC,GACA,QAAA7P,KAAA6F,SACA7F,KAAA6F,OAAAH,OAAAmK,GACA7P,KAAA6F,OAAA+J,aAAAC,GACA,EAEAvK,EAAAvF,UAAA+P,qBAAA,SAAAD,GACA,GAAA7P,KAAA6F,OACA,OAAA7F,KAAA6F,OAAAH,OAAAmK,EAAA7P,KAAA6F,OACA7F,KAAA6F,OAAAiK,qBAAAD,EACA,EAEAvK,EAAAvF,UAAAgQ,kBAAA,WACA,GAAA/P,KAAA6F,OACA,OAAA7F,KAAA6F,OAAAmK,eAAAhQ,KAAA6F,OAAAmK,eACAhQ,KAAA6F,OAAAkK,mBACA,EAEAzK,EAAAvF,UAAAkG,aAAA,WACAjG,KAAA1E,KAAA2U,gBAAAjQ,KAAA1E,KAAA2U,eAAAvX,OAAA,GACAsH,KAAAuF,SACAI,SAAA,mBACAA,SAAAxM,EAAA+N,IAAAlH,KAAA1E,KAAA2U,gBAAA,SAAAC,GACA,yBAAAA,CACA,IAEA,EAEA5K,CACA,IACA7N,OC/vBA,iDACA,MAAA0jM,EAAA,CACA/+J,WAAA,QACA93B,KAAA,GACAg4B,OAAA,SACAJ,MAAA,oBAGAk/J,EAAA,CACAh/J,WAAA,QACA93B,KAAA,GACAg4B,OAAA,SACAJ,MAAA,0BAWAm/J,EAAA,CACA50L,KAAA,EACAE,MAAA,EACAD,IAAA,EACAE,OAAA,GAsMA,MAnMA,CACAtL,KAAA,CAEA47L,UAAA,QACA3oH,gBAAA,yBACA+sH,aAAAD,EAGAjE,WAAA,EACAmE,WAAA,qBACAC,WAAA,EACAC,gBAAA,EACAnE,WAAA,GACAoE,eAAAP,EACAQ,oBAAA,MACAC,kBAAA,EACAC,gBAAA,EACAC,eAAA,mBACAC,eAAA,EACAC,gBAAA,EACAC,iBAAA,EACAC,sBAAA,EACAC,uBAAA,EACAC,qBAAA,EACAC,wBAAA,SACAC,mBAAAnB,EACAoB,sBAAA,EACAC,sBAAA,EACAC,oBAAA,EACAC,0BAAA,EACAC,sBAAA,EACAC,sBAAA,EAGApF,WAAA,EACAqF,WAAA,qBACAC,WAAA,EACAC,gBAAA,EACAtF,WAAA,GACAuF,eAAA7B,EACA8B,oBAAA,MACAC,kBAAA,EACAC,gBAAA,EACAC,eAAA,mBACAC,eAAA,EACAC,gBAAA,EACAC,iBAAA,EACAC,sBAAA,EACAC,uBAAA,EACAC,qBAAA,EACAC,wBAAA,SACAC,mBAAAzC,EACA0C,sBAAA,EACAC,sBAAA,EACAC,oBAAA,EACAC,0BAAA,EACAC,sBAAA,EACAC,sBAAA,EAGAvG,YAAA,EACAwG,YAAA,qBACAC,YAAA,EACAC,iBAAA,EACAzG,YAAA,GACA0G,gBAAAnD,EACAoD,qBAAA,MACAC,mBAAA,EACAC,iBAAA,EACAC,gBAAA,mBACAC,gBAAA,EACAC,iBAAA,EACAC,kBAAA,EACAC,uBAAA,EACAC,wBAAA,EACAC,sBAAA,EACAC,yBAAA,SACAC,oBAAA/D,EACAgE,uBAAA,EACAC,uBAAA,EACAC,qBAAA,EACAC,2BAAA,EACAC,uBAAA,EACAC,uBAAA,EAGAC,WAAA,EACAC,WAAA,qBACAC,eAAA,EACAC,iBAAA,EACAC,sBAAA,EACAC,uBAAA,EAGAC,WAAA,EACAC,WAAA,qBACAC,eAAA,EACAC,iBAAA,EACAC,sBAAA,EACAC,uBAAA,EAGAC,WAAA,EACAC,UAAA,GACAC,UAAApF,EACAqF,eAAA,EACAC,cAAA,MACAC,eAAA,SACAC,aAAA,GAGA5J,aAAA,EACA6J,uBAAA,UACAC,6BAAA,EACAC,uBAAA,IACAC,oCAAA,EACAC,gBAAA,UACAC,eAAA5F,EACA6F,kBAAA,EACAC,oBAAA,EACAC,iBAAA,EACAC,mBAAA,EACAC,mBAAA,mBACAC,sBA1IA,CACA59L,SAAA,EACA85B,iBAAA,EACAH,cAAA,EACAE,kBAAA,EACAD,eAAA,GAsIAikK,uBAAA,qBACAC,kBAAA,EACAC,iBAAAtG,EACAuG,sBAAA,OACAC,oBAAA,EACAC,yBAAA,EACAC,iBAAA,EACAC,gBAAA3G,EACA4G,qBAAA,QACAC,qBAAA,OACAC,mBAAA,EACAC,sBAAA,EACAC,uBAAA,EAGApL,YAAA,EACAG,eAAA,MACAkL,gBAAA,SACAC,oBAAAl8L,EACAm8L,qBAAAn8L,EACAo8L,oBAAA,EACAC,gBAAAtH,EACAuH,sBAAA,EACAC,sBAAA,qBACAC,sBAAA,EACAC,uBAAA,EACAC,wBAAA,EACAC,oBAAA,GACAC,qBAAA,GACAC,qBAAA,OACAC,mBAAA,GACAC,0BAAA,EACAC,6BAAA,EACAC,iBAAA,EACAC,gBAAA,GACAC,gBAAApI,EACAqI,mBAAA,GACAC,sBAAA,EAGAzL,YAAA,EACA0L,iBAAA,EACAC,eAAA,GACAC,qBAAA,OACAC,gBAAA,EACAC,uBAAA,2BACAC,eAAA,EACAxL,eAAA,qBACAyL,gBAAA,GACAC,wBAAA,EACAC,iBAAA,EACAC,SAAA,IACAC,cAAA,IAGAC,eAAA,EACAC,YAAA,IACAC,mBAAA,OAGAC,gBAAA,EACAC,cAAAtJ,EACAuJ,mBAAA,EACAC,gCAAA,EACAC,gBAAA,SACAC,mBAAA,SACAC,gBAAA,EACAC,gBAAA,GAKA,IAEAttM,OCpOA,sCAAAqM,GACA,aAEA,IAAAkhM,EAAA,WACA,uBAAAjtM,KAAAinG,KACA,EAEAimG,EAAA,SAAAC,GACA,IAAAzU,EAAAv4L,SAAAoqB,cAAA,UAIA,OAHAmuK,EAAA9vK,OAAA,EACA8vK,EAAA1gK,aAAA,0BACA0gK,EAAA1gK,aAAA,MAAAm1K,GACAzU,CACA,EAUA0U,GAAA,EA0BA,OACAhkL,KAzBA,SAAAikL,EAAAC,GACA,IAAAF,EAAA,CACA,IAAA1U,EAAAwU,EAAAnhM,EAAAzF,eAAA,6BAAA2mM,KACA9sM,SAAAugB,qBAAA,WAAA2X,YAAAqgK,GACA0U,GAAA,CACA,CAEA,GAAAE,EAAA,CACA,IAAAjjL,EAlBA,SAAAkjL,GACA,IAAAljL,EAAAlqB,SAAAoqB,cAAA,QAIA,OAHAF,EAAA2N,aAAA,oBACA3N,EAAA2N,aAAA,mBACA3N,EAAA2N,aAAA,OAAAu1K,GACAljL,CACA,CAYAmjL,CAAAzhM,EAAAzF,eAAA,IAAA+mM,EAAA,oBAAAJ,KACA9sM,SAAAugB,qBAAA,WAAA2X,YAAAhO,EACA,CAEA,WAAAqwC,SAAAnuC,IACA,GAAAzqB,OAAAurM,GACA,OAAA9gL,EAAAzqB,OAAAurM,IAEA,IAAA3U,EAAAwU,EAAAnhM,EAAAzF,eAAA,IAAA+mM,EAAA,mBAAAJ,KACAvU,EAAA91G,OAAA,WACAr2D,EAAAzqB,OAAAurM,GACA,EACAltM,SAAAugB,qBAAA,WAAA2X,YAAAqgK,EAAA,GAEA,EAKA,IACAh5L,OCrDA,2BACA,SACA,UACA,kCACA,uBACA,SAAA2B,EAAAkM,EAAAkgM,EAAAC,GACA,aAEA,IAAAjN,EAAA,SAAAr1K,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,SAAAosM,EAAAriL,GAEAnjB,KAAA+gG,QAAA3nG,EAAA,YAAAyN,SAAA7G,KAAAuF,SACA,EAwOA,OAtOAD,EAAA3F,OAAA64L,GAEAA,EAAA5+J,SAAA,WAEA4+J,EAAAz4L,UAAAgH,UAAA,WACA,IAAAhG,EAAAf,KAEAA,KAAA0lM,eAAA,KAEA1lM,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,gBAEA84L,EAAAtkL,KAAA,YACA7d,KAAAtD,KAAA2lM,SAAApjM,KAAAvC,OAEAA,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAo8C,YACA,SAAAp8C,GACAyF,EAAA6kM,iBAAAtqM,EAEAyF,EAAA2kM,gBACA3kM,EAAA8kM,QAAAvqM,EACA,GAEA,EAEAk9L,EAAAz4L,UAAA4lM,SAAA,SAAAG,GACA9lM,KAAA0lM,eAAAI,EAEA9lM,KAAA4lM,kBACA5lM,KAAA6lM,QAAA7lM,KAAA4lM,iBACA,EAEApN,EAAAz4L,UAAA8lM,QAAA,SAAAD,GACA,IAAAvsM,EAAA,CACA69L,UAAAl3L,KAAA1E,KAAA47L,UACA3oH,gBAAAvuE,KAAA1E,KAAAizE,gBACA+sH,aAAAt7L,KAAA1E,KAAAggM,aAEAlE,UAAAp3L,KAAA1E,KAAA87L,UACAmE,WAAAv7L,KAAA1E,KAAAigM,WACAC,WAAAx7L,KAAA1E,KAAAkgM,WACAC,eAAAz7L,KAAA1E,KAAAmgM,eACAnE,WAAAt3L,KAAA1E,KAAAg8L,WACAoE,eAAA17L,KAAA1E,KAAAogM,eACAC,oBAAA37L,KAAA1E,KAAAqgM,oBACAC,kBAAA57L,KAAA1E,KAAAsgM,kBACAC,eAAA77L,KAAA1E,KAAAugM,eACAC,eAAA97L,KAAA1E,KAAAwgM,eACAC,eAAA/7L,KAAA1E,KAAAygM,eACAC,gBAAAh8L,KAAA1E,KAAA0gM,gBACAC,gBAAAj8L,KAAA1E,KAAA2gM,gBACAC,sBAAAl8L,KAAA1E,KAAA4gM,sBACAC,uBAAAn8L,KAAA1E,KAAA6gM,uBACAC,oBAAAp8L,KAAA1E,KAAA8gM,oBACAC,wBAAAr8L,KAAA1E,KAAA+gM,wBACAC,mBAAAt8L,KAAA1E,KAAAghM,mBACAC,sBAAAv8L,KAAA1E,KAAAihM,sBACAC,qBAAAx8L,KAAA1E,KAAAkhM,qBACAC,mBAAAz8L,KAAA1E,KAAAmhM,mBACAC,0BAAA18L,KAAA1E,KAAAohM,0BACAC,sBAAA38L,KAAA1E,KAAAqhM,sBACAC,sBAAA58L,KAAA1E,KAAAshM,sBAEApF,UAAAx3L,KAAA1E,KAAAk8L,UACAqF,WAAA78L,KAAA1E,KAAAuhM,WACAC,WAAA98L,KAAA1E,KAAAwhM,WACAC,eAAA/8L,KAAA1E,KAAAyhM,eACAtF,WAAAz3L,KAAA1E,KAAAm8L,WACAuF,eAAAh9L,KAAA1E,KAAA0hM,eACAC,oBAAAj9L,KAAA1E,KAAA2hM,oBACAC,kBAAAl9L,KAAA1E,KAAA4hM,kBACAC,eAAAn9L,KAAA1E,KAAA6hM,eACAC,eAAAp9L,KAAA1E,KAAA8hM,eACAC,eAAAr9L,KAAA1E,KAAA+hM,eACAC,gBAAAt9L,KAAA1E,KAAAgiM,gBACAC,gBAAAv9L,KAAA1E,KAAAiiM,gBACAC,sBAAAx9L,KAAA1E,KAAAkiM,sBACAC,uBAAAz9L,KAAA1E,KAAAmiM,uBACAC,oBAAA19L,KAAA1E,KAAAoiM,oBACAC,wBAAA39L,KAAA1E,KAAAqiM,wBACAC,mBAAA59L,KAAA1E,KAAAsiM,mBACAC,sBAAA79L,KAAA1E,KAAAuiM,sBACAC,qBAAA99L,KAAA1E,KAAAwiM,qBACAC,mBAAA/9L,KAAA1E,KAAAyiM,mBACAC,0BAAAh+L,KAAA1E,KAAA0iM,0BACAC,sBAAAj+L,KAAA1E,KAAA2iM,sBACAC,sBAAAl+L,KAAA1E,KAAA4iM,sBAEAvG,WAAA33L,KAAA1E,KAAAq8L,WACAwG,YAAAn+L,KAAA1E,KAAA6iM,YACAC,YAAAp+L,KAAA1E,KAAA8iM,YACAC,gBAAAr+L,KAAA1E,KAAA+iM,gBACAzG,YAAA53L,KAAA1E,KAAAs8L,YACA0G,gBAAAt+L,KAAA1E,KAAAgjM,gBACAC,qBAAAv+L,KAAA1E,KAAAijM,qBACAC,mBAAAx+L,KAAA1E,KAAAkjM,mBACAC,gBAAAz+L,KAAA1E,KAAAmjM,gBACAC,gBAAA1+L,KAAA1E,KAAAojM,gBACAC,gBAAA3+L,KAAA1E,KAAAqjM,gBACAC,iBAAA5+L,KAAA1E,KAAAsjM,iBACAC,iBAAA7+L,KAAA1E,KAAAujM,iBACAC,uBAAA9+L,KAAA1E,KAAAwjM,uBACAC,wBAAA/+L,KAAA1E,KAAAyjM,wBACAC,qBAAAh/L,KAAA1E,KAAA0jM,qBACAC,yBAAAj/L,KAAA1E,KAAA2jM,yBACAC,oBAAAl/L,KAAA1E,KAAA4jM,oBACAC,uBAAAn/L,KAAA1E,KAAA6jM,uBACAC,sBAAAp/L,KAAA1E,KAAA8jM,sBACAC,oBAAAr/L,KAAA1E,KAAA+jM,oBACAC,2BAAAt/L,KAAA1E,KAAAgkM,2BACAC,uBAAAv/L,KAAA1E,KAAAikM,uBACAC,uBAAAx/L,KAAA1E,KAAAkkM,uBAEAC,UAAAz/L,KAAA1E,KAAAmkM,UACAC,WAAA1/L,KAAA1E,KAAAokM,WACAC,eAAA3/L,KAAA1E,KAAAqkM,eACAC,gBAAA5/L,KAAA1E,KAAAskM,gBACAC,sBAAA7/L,KAAA1E,KAAAukM,sBACAC,uBAAA9/L,KAAA1E,KAAAwkM,uBAEAC,UAAA//L,KAAA1E,KAAAykM,UACAC,WAAAhgM,KAAA1E,KAAA0kM,WACAC,eAAAjgM,KAAA1E,KAAA2kM,eACAC,gBAAAlgM,KAAA1E,KAAA4kM,gBACAC,sBAAAngM,KAAA1E,KAAA6kM,sBACAC,uBAAApgM,KAAA1E,KAAA8kM,uBAEAC,UAAArgM,KAAA1E,KAAA+kM,UACAC,UAAAtgM,KAAA1E,KAAAglM,UACAC,UAAAvgM,KAAA1E,KAAAilM,UACAC,cAAAxgM,KAAA1E,KAAAklM,cACAC,cAAAzgM,KAAA1E,KAAAmlM,cACAC,eAAA1gM,KAAA1E,KAAAolM,eACAC,aAAA3gM,KAAA1E,KAAAqlM,aAEA5J,YAAA/2L,KAAA1E,KAAAy7L,YACA6J,uBAAA5gM,KAAA1E,KAAAslM,uBACAC,4BAAA7gM,KAAA1E,KAAAulM,4BACAC,uBAAA9gM,KAAA1E,KAAAwlM,uBACAC,mCAAA/gM,KAAA1E,KAAAylM,mCACAC,gBAAAhhM,KAAA1E,KAAA0lM,gBACAC,eAAAjhM,KAAA1E,KAAA2lM,eACAC,kBAAAlhM,KAAA1E,KAAA4lM,kBACAC,oBAAAnhM,KAAA1E,KAAA6lM,oBACAC,iBAAAphM,KAAA1E,KAAA8lM,iBACAC,mBAAArhM,KAAA1E,KAAA+lM,mBACAC,mBAAAthM,KAAA1E,KAAAgmM,mBACAC,sBAAAvhM,KAAA1E,KAAAimM,sBACAC,uBAAAxhM,KAAA1E,KAAAkmM,uBACAC,iBAAAzhM,KAAA1E,KAAAmmM,iBACAC,iBAAA1hM,KAAA1E,KAAAomM,iBACAC,sBAAA3hM,KAAA1E,KAAAqmM,sBACAC,oBAAA5hM,KAAA1E,KAAAsmM,oBACAC,yBAAA7hM,KAAA1E,KAAAumM,yBACAC,gBAAA9hM,KAAA1E,KAAAwmM,gBACAC,gBAAA/hM,KAAA1E,KAAAymM,gBACAC,qBAAAhiM,KAAA1E,KAAA0mM,qBACAC,qBAAAjiM,KAAA1E,KAAA2mM,qBACAC,mBAAAliM,KAAA1E,KAAA4mM,mBACAC,qBAAAniM,KAAA1E,KAAA6mM,qBACAC,sBAAApiM,KAAA1E,KAAA8mM,sBAEApL,WAAAh3L,KAAA1E,KAAA07L,WACAG,eAAAn3L,KAAA1E,KAAA67L,eACAkL,gBAAAriM,KAAA1E,KAAA+mM,gBACAC,eAAAtiM,KAAA1E,KAAAgnM,eACAC,gBAAAviM,KAAA1E,KAAAinM,gBACAC,mBAAAxiM,KAAA1E,KAAAknM,mBACAC,gBAAAziM,KAAA1E,KAAAmnM,gBACAC,qBAAA1iM,KAAA1E,KAAAonM,qBACAC,sBAAA3iM,KAAA1E,KAAAqnM,sBACAC,sBAAA5iM,KAAA1E,KAAAsnM,sBACAC,uBAAA7iM,KAAA1E,KAAAunM,uBACAC,wBAAA9iM,KAAA1E,KAAAwnM,wBACAC,oBAAA/iM,KAAA1E,KAAAynM,oBACAC,qBAAAhjM,KAAA1E,KAAA0nM,qBACAC,qBAAAjjM,KAAA1E,KAAA2nM,qBACAC,mBAAAljM,KAAA1E,KAAA4nM,mBACAC,yBAAAnjM,KAAA1E,KAAA6nM,yBACAC,6BAAApjM,KAAA1E,KAAA8nM,6BACAC,gBAAArjM,KAAA1E,KAAA+nM,gBACAC,gBAAAtjM,KAAA1E,KAAAgoM,gBACAC,gBAAAvjM,KAAA1E,KAAAioM,gBACAC,mBAAAxjM,KAAA1E,KAAAkoM,mBACAC,qBAAAzjM,KAAA1E,KAAAmoM,qBAEAzL,WAAAh4L,KAAA1E,KAAA08L,WACA0L,gBAAA1jM,KAAA1E,KAAAooM,gBACAC,eAAA3jM,KAAA1E,KAAAqoM,eACAC,qBAAA5jM,KAAA1E,KAAAsoM,qBACAC,eAAA7jM,KAAA1E,KAAAuoM,eACAE,cAAA/jM,KAAA1E,KAAAyoM,cACAxL,eAAAv4L,KAAA1E,KAAAi9L,eACAyL,gBAAAhkM,KAAA1E,KAAA0oM,gBACAC,wBAAAjkM,KAAA1E,KAAA2oM,wBACAH,uBAAA9jM,KAAA1E,KAAAwoM,uBACAI,gBAAAlkM,KAAA1E,KAAA4oM,gBACAC,SAAAnkM,KAAA1E,KAAA6oM,SACAC,cAAApkM,KAAA1E,KAAA8oM,cAEAC,cAAArkM,KAAA1E,KAAA+oM,cACAC,YAAAtkM,KAAA1E,KAAAgpM,YACAC,mBAAAvkM,KAAA1E,KAAAipM,mBAEAC,eAAAxkM,KAAA1E,KAAAkpM,eACAC,cAAAzkM,KAAA1E,KAAAmpM,cACAC,kBAAA1kM,KAAA1E,KAAAopM,kBACAC,gCAAA3kM,KAAA1E,KAAAqpM,gCACAC,gBAAA5kM,KAAA1E,KAAAspM,gBACAC,mBAAA7kM,KAAA1E,KAAAupM,mBACAC,gBAAA9kM,KAAA1E,KAAAwpM,gBACAC,eAAA/kM,KAAA1E,KAAAypM,eAEAjN,UAAA93L,KAAA1E,KAAAw8L,UAEA9mI,aAAAhxD,KAAA8K,eAAA,WAAA9K,KAAA4K,sBAAArI,KAAAvC,WAAAoG,GAGApG,KAAA0lM,eAAA94B,QAAAg5B,EAAA5lM,KAAA1E,KAAA49L,OAAA7/L,EAAA2G,KAAAuF,SAAAlN,IAAA,GACA,EAEAmgM,EAAAz4L,UAAA+J,WAAA,WACA9J,KAAAuF,SAAAK,IAAA,oBACA,EAEA4yL,EAAAz4L,UAAAgK,YAAA,WACA/J,KAAAuF,SAAAK,IAAA,iBACA,EAEA4yL,CACA,IAEA/gM,OCvPA,uBACA,SACA,UACA,WACA,eACA,SAAA2B,EAAAkM,EAAAm5B,EAAAtlC,GACA,aAEA,SAAA4sM,EAAA5iL,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA+pB,GAEAnjB,KAAAgmM,iBAEAhmM,KAAAuF,SACAI,SAAA,mBAEA,IAAA09C,EAAAjqD,EAAA,WACAwM,IAAA,CACAiH,QAAA,aACAG,MAAAhN,KAAA1E,KAAAgJ,KAAAF,EAAA,KACA+J,OAAAnO,KAAA1E,KAAAgJ,KAAAD,EAAA,KACAi9B,UAAA,SACA5E,cAAA,WAEA71B,SAAA7G,KAAAuF,UAEAvF,KAAAwsD,MAAApzD,EAAA,UACAyhC,KAAA76B,KAAA1E,KAAAkR,OACA3F,SAAAw8C,GAEArjD,KAAAimM,UAAAjmM,KAAA1E,KAAAkR,MACA,CA2CA,OAzCAlH,EAAA3F,OAAAomM,GAEAA,EAAAnsK,SAAA,SAEAmsK,EAAAhmM,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAAs4C,UAAAt4C,KAAA2C,OAAA+B,WAAA6zC,gBAAAv4C,KAAA1E,KAAAoJ,YACA1E,KAAA2M,eACA,EAEAo5L,EAAAhmM,UAAAimM,eAAA,WACAvnK,EAAAK,aAAA9+B,MAGAA,KAAAuF,SACAK,IAAA,CACAsgM,aAAA,UAEA,EAEAH,EAAAhmM,UAAAkmM,UAAA,SAAAz5L,GACA,IAAAzL,EAAAf,KACA7G,EAAA0I,QAAA7B,KAAA1E,KAAA6qM,aAAA,SAAAjrH,GACA,IAAAtnB,EAAAn0C,WAAAy7D,EAAAtnB,MACAD,EAAAl0C,WAAAy7D,EAAAvnB,IACAC,GAAApnD,MAAAmnD,GACA5yD,EAAAwE,SAAAK,IAAA,CAAA2oE,gBAAA2M,EAAAh/C,OAEA,GACA,EAEA6pK,EAAAhmM,UAAAo3C,WAAA,WACAn3C,KAAAwsD,MAAA3xB,KAAA,KACA76B,KAAAimM,UAAA,EACA,EAEAF,EAAAhmM,UAAA6mC,SAAA,SAAA8M,GACA1zC,KAAAwsD,MAAA3xB,KAAA6Y,EAAAlnC,OACAxM,KAAAimM,UAAAvyJ,EAAAlnC,MACA,EAEAu5L,CACA,IACAtuM,OC5EA,iCACA,SACA,UACA,aACA,SAAA2B,EAAAkM,EAAAm5B,GACA,aAEA,SAAA2nK,EAAAjjL,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA+pB,GAEAnjB,KAAAuF,SACAI,SAAA,kBACA,CAgCA,OA9BAL,EAAA3F,OAAAymM,EAAA9gM,GAEA8gM,EAAAxsK,SAAA,cAEAwsK,EAAArmM,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MAEAA,KAAA2M,gBAEA,IAAAklL,EAAA7xL,KAAA1E,KAAAgJ,KACA+hM,EAAAxU,EAAAztL,EAAAytL,EAAAxtL,EAAAwtL,EAAAztL,EAAAytL,EAAAxtL,EAEArE,KAAAiwD,QAAA72D,EAAA,UACAwM,IAAA,CACAoH,MAAAq5L,EAAA,KACAl4L,OAAAk4L,EAAA,OAGArmM,KAAA8+B,eAEA9+B,KAAAiwD,QAAAppD,SAAA7G,KAAAuF,SACA,EAEA6gM,EAAArmM,UAAA++B,aAAA,WAEAL,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAiwD,SAEAjwD,KAAAiwD,QAAArqD,IAAA,sBACA,EAEAwgM,CACA,IACA3uM,OC9CA,qBACA,SACA,UACA,WACA,YACA,YACA,SAAA2B,EAAAkM,EAAAm5B,EAAA2pJ,EAAA5yK,GACA,aAEA,IAAAumB,EAAA,CACAzgC,KAAA,CACAqkB,OAAA,UAIA,SAAA2mL,EAAAnjL,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GACA,IAAApiB,EAAAf,KAEAe,EAAAwlM,WAAAntM,EAAA,UACAuM,SAAA,qBACAC,IAAA,CACAiH,QAAA,OACAoqC,cAAA,SACAyqD,KAAA,aAEA76F,SAAA9F,EAAAwE,UAEA,IAAA02B,EAAAzmB,EAAA1D,+BAAA/Q,EAAAzF,KAAA+jC,QAEAZ,EAAAK,aAAA/9B,GAEAk7B,KAAAylB,QAAAzlB,EAAAylB,OAAAvlB,MAAAF,EAAAylB,OAAAvlB,KAAA73B,MACAm6B,EAAA2E,cAAAjH,KAAA73B,KAUA,OARAvD,EAAAwE,SACAI,SAAA,uCACAC,IAAA,CACAiH,QAAA,SAGA9L,EAAA2yC,SAEA3yC,CACA,CAmBA,OAjBAuE,EAAA3F,OAAA2mM,EAAAhhM,GAEAghM,EAAA1sK,SAAA,QAEA0sK,EAAAvmM,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,eACA,EAEA25L,EAAAvmM,UAAA2zC,OAAA,WACA,IAAA8yJ,EAAApe,EAAAzoK,OAAA,IAAA5nB,KAAAiI,KAAA1E,KAAAqkB,QACA3f,KAAAumM,WAAA1rK,KAAA2rK,GAEA,IAAAzlM,EAAAf,KACA2kB,YAAA,WAAA5jB,EAAA2yC,QAAA,YAAA37C,MAAAypB,UAAA,IACA,EAEA8kL,CACA,ICzDA,SAAAl1I,GACA,mBAAA35D,eAAA65D,IAEA75D,OAAA,iDAAA25D,GACA,iBAAAC,QAEAp4D,OAAAo4D,QAAAD,EAAAl4D,QAAA,WAGAk4D,EAAAhoC,OAEA,CAXA,EAWA,SAAAhwB,GACA,aAuOA,SAAA8xF,EAAAn6C,GACA,IAAA01J,EAAA11J,EAAAlrC,SAGAkrC,EACA+1F,WAAA,0BACAA,WAAA,uBACA4/D,WAAA,QACA99L,YAAA,oBAGA69L,EAAAjsI,OAAAzpB,GAAAh4C,QACA,CAGA,SAAA+P,EAAAioC,GACA,IAAA01J,EAAA11J,EAAAlrC,SACA61I,EAAA+qD,EAAAnlM,KAAA,qBACAkyB,EAAAud,EAAAz1C,KAAA,wBAIAy1C,EAAAz1C,KAAA,2BACAy1C,EAAAr6B,KAAA,aACA+vL,EAAAhkK,SAAA,sBACAgkK,EAAAhkK,SAAA,sBAGAj5B,IAEAi9L,EAAA9gM,SAAA,oBACA+1I,EAAAp0F,QACAo0F,EACAh3H,MAAA,MACAiiL,OAAAnzK,EAAAozK,WAAA,WACApzK,EAAA1qB,MAAA0qB,EAAA1qB,KAAAkc,KAAA+rB,EAAA14C,IAAA,GACA,KAEAqjJ,EAAA5yI,OACA0qB,EAAA1qB,MAAA0qB,EAAA1qB,KAAAkc,KAAA+rB,EAAA14C,IAAA,KAEA,CAGA,SAAAmR,IACApQ,EAAA,qBAAAgJ,MAAA,WACA,IAAAqkM,EAAArtM,EAAA4G,MACA+wC,EAAA01J,EAAAnlM,KAAA,qBACAo6I,EAAA+qD,EAAAnlM,KAAA,qBACAkyB,EAAAud,EAAAz1C,KAAA,uBAEAogJ,EAAAp0F,QACAo0F,EAAA1vG,QAAAxY,EAAAqzK,WAAA,WACArzK,EAAAhqB,MAAAgqB,EAAAhqB,KAAAwb,KAAA+rB,EAAA14C,IAAA,IACAouM,EAAA79L,YAAA,mBACA,KAEA8yI,EAAAlyI,OACAgqB,EAAAhqB,MAAAgqB,EAAAhqB,KAAAwb,KAAA+rB,EAAA14C,IAAA,IACAouM,EAAA79L,YAAA,oBAEA,GACA,CAGA,SAAA2/C,EAAAlkB,EAAA3jC,EAAA4mD,GACA,IAQAw/I,EAAAC,EAAAr9J,EAAAs9J,EAAA3nK,EARA0R,EAAA1M,EAAAg2G,QAAA,eAAA/4I,KAAA,qBACAkyB,EAAAud,EAAAz1C,KAAA,uBACA2rM,EAAA5iK,EAAA/iC,KAAA,oBACA+J,EAAAg5B,EAAAgY,SAAA51C,KACA6E,EAAA+4B,EAAAgY,SAAA31C,IACAtC,EAAA2Q,KAAA81C,MAAAnqD,EAAA6K,MAAAF,GACAhH,EAAA0Q,KAAA81C,MAAAnqD,EAAA8K,MAAAF,GACAi8C,EAAAD,EAAA9zB,EAAA0zK,eAAA,EAIAxmM,EAAA85B,cAAAmwB,iBACAvmD,EAAA1D,EAAA85B,cAAAmwB,eAAA,GAAAp/C,MAAAF,EACAhH,EAAA3D,EAAA85B,cAAAmwB,eAAA,GAAAn/C,MAAAF,GAIAlH,EAAA,IAAAA,EAAA,GACAC,EAAA,IAAAA,EAAA,GACAD,EAAAigC,EAAAr3B,UAAA5I,EAAAigC,EAAAr3B,SACA3I,EAAAggC,EAAAl2B,WAAA9J,EAAAggC,EAAAl2B,UAGAk2B,EAAAx+B,SAAAy+B,GAAA,6BAAA2iK,EAAAphM,SAAAy+B,GAAA,sBACAwiK,EAAA,GAAA1iM,EACA2iM,EAAA,GAAA1iM,EACAqlC,EAAA30B,KAAA6wC,KAAAkhJ,IAAAC,MACAC,EAAAjyL,KAAAu4C,MAAAy5I,EAAAD,IACA,IAAAE,GAAA,EAAAjyL,KAAAspB,IACAqL,EAAA,KACAA,EAAA,GACAtlC,EAAA,MAAA2Q,KAAAytB,IAAAwkK,GACA3iM,EAAA,MAAA0Q,KAAAwtB,IAAAykK,IAEA5iM,EAAA2Q,KAAA81C,MAAAzmD,GACAC,EAAA0Q,KAAA81C,MAAAxmD,IAIAg7B,EAAA,CACA34B,IAAArC,EAAA,MAEAggC,EAAAC,GAAA,sBACAjF,EAAA54B,KAAArC,EAAA,MAEA6iM,EAAA3/I,QACA2/I,EACAviL,MAAA,GACA4iC,QAAAjoB,EAAAkoB,EAAA/zB,EAAA2zK,iBAAA,WACAC,EAAAr2J,EAAA1M,EACA,KAEA4iK,EACArhM,IAAAy5B,GACA+nK,EAAAr2J,EAAA1M,GAEA,CAGA,SAAA+iK,EAAAr2J,EAAA1M,GAEA,SAAAgjK,EAAAJ,EAAA3jK,GACA,IAAA78B,EAAAC,EACA,OAAAugM,EAAAvuM,QAAA4qC,GACA78B,EAAAwgM,EAAA5qJ,SAAA51C,KACAC,EAAAugM,EAAA5qJ,SAAA31C,IAEA,CACAtC,EAAAqC,EAAA68B,EAAA+Y,SAAA51C,KAAAwgM,EAAArvL,aAAA,EACAvT,EAAAqC,EAAA48B,EAAA+Y,SAAA31C,IAAAugM,EAAApvL,cAAA,IANA,IAQA,CAEA,IAAA+sD,EAAAE,EAAAwiI,EAAAljM,EAAAC,EAAAqlC,EAAAs9J,EACAlmI,EAAA/vB,EAAA+H,MACA1b,EAAA2T,EAAA9I,KAAA,gBAGAw+J,EAAA11J,EAAAlrC,SACA2tB,EAAAud,EAAAz1C,KAAA,uBACAisM,EAAAd,EAAAnlM,KAAA,4BAGAg5J,EAAAmsC,EAAAnlM,KAAA,oBACAkxL,EAAAiU,EAAAnlM,KAAA,sBACAkmM,EAAAf,EAAAnlM,KAAA,8BAGAmmM,EAAAntC,EAAAh5J,KAAA,oBACAomM,EAAAlV,EAAAlxL,KAAA,oBACAqmM,EAAAH,EAAAlmM,KAAA,oBAGAsmM,EAAAP,EAAAI,EAAAntC,GACAutC,EAAAR,EAAAK,EAAAlV,GACAsV,EAAAT,EAAAM,EAAAH,GAGA,GAAAnjK,EAAAC,GAAA,qEAGA,OAAA9Q,EAAAu0K,SACA,YAEA3jM,EAAAk2J,EAAAttJ,QAAA,EAAA46L,EAAAxjM,EACAC,EAAAi2J,EAAAnsJ,SAAA,EAAAy5L,EAAAvjM,EACAqlC,EAAA30B,KAAA6wC,KAAAxhD,IAAAC,MACA2iM,EAAAjyL,KAAAu4C,MAAAjpD,EAAAD,IACA,IAAA4iM,GAAA,EAAAjyL,KAAAspB,IACAqL,EAAA,KACAA,EAAA,GACAk+J,EAAAxjM,EAAA,MAAA2Q,KAAAytB,IAAAwkK,GACAY,EAAAvjM,EAAA,MAAA0Q,KAAAwtB,IAAAykK,IAEAliI,EAAAkjI,EAAAt+J,EAAA,WAGAo3B,EAAAmnI,EAAA,CACAh0I,EAHA2Q,EAAAojI,EAAA,IAAAhB,EAAAjyL,KAAAspB,GAAA,OAIAze,EAAAklD,EACApT,EAJA41I,EAAAU,EAAA,IAAAjzL,KAAAM,MAAAwyL,EAAAxjM,GAAA,IAAAmuL,EAAArkL,WAAA,SAQAqkL,EAAA5sL,IAAA,kBAAAqiM,EAAA,CAAAh0I,EAAA2Q,EAAAhlD,EAAAklD,EAAApT,EAAA,OACA,MAEA,iBAKAoP,EAAAmnI,EAAA,CACAh0I,EAJA2Q,EAAAojI,EAAA9uL,SAAA0uL,EAAAxjM,GAAA,IAAAk2J,EAAAttJ,SAAA,WAKA4S,EAJAklD,EAAAkjI,EAAA,IAAAjzL,KAAAM,MAAAwyL,EAAAxjM,GAAA,IAAAmuL,EAAArkL,WAAA,OAKAujD,EAJA41I,EAAAU,EAAA,IAAAjzL,KAAAM,MAAAuyL,EAAAvjM,GAAA,IAAAi2J,EAAAnsJ,WAAA,SAQAqkL,EAAA5sL,IAAA,kBAAAqiM,EAAA,CAAAh0I,EAAA2Q,EAAAhlD,EAAA,IAAA8xC,EAAA41I,KACAb,EAAAnlM,KAAA,0BAAAsE,IAAA,UAAAk/D,EAAA,KACA,MAEA,iBAKAhE,EAAAmnI,EAAA,CACAh0I,EAJA2Q,EAAAojI,EAAA9uL,SAAA0uL,EAAAxjM,GAAA,IAAAk2J,EAAAttJ,SAAA,WAKA4S,EAJAklD,EAAAkjI,EAAA,IAAAjzL,KAAAM,MAAAuyL,EAAAvjM,GAAA,IAAAi2J,EAAAnsJ,WAAA,OAKAujD,EAJA41I,EAAAU,EAAA,IAAAjzL,KAAAM,MAAAwyL,EAAAxjM,GAAA,IAAAmuL,EAAArkL,WAAA,SAQAqkL,EAAA5sL,IAAA,kBAAAqiM,EAAA,CAAAh0I,EAAA2Q,EAAAhlD,EAAAklD,EAAApT,EAAA,OACA+0I,EAAAnlM,KAAA,0BAAAsE,IAAA,YAAA0hM,EAAA,KACA,MAEA,QAKAxmI,EAAAmnI,EAAA,CACAh0I,EAJA2Q,EAAAojI,EAAA,IAAA9uL,SAAA2uL,EAAAxjM,GAAA,IAAAmuL,EAAArkL,UAAA,WAKAyR,EAJAklD,EAAAkjI,EAAAjzL,KAAAM,MAAAuyL,EAAAxjM,GAAA,IAAAk2J,EAAAttJ,UAAA,OAKA0kD,EAJA41I,EAAAU,EAAA,IAAAjzL,KAAAM,MAAAuyL,EAAAvjM,GAAA,IAAAi2J,EAAAnsJ,WAAA,SAQAmsJ,EAAA10J,IAAA,kBAAAqiM,EAAA,CAAAh0I,EAAA2Q,EAAAhlD,EAAA,IAAA8xC,EAAA,OAWAw2I,EAAAn3J,EAAA+vB,EALA1jC,EADA5J,EAAA4J,QACA3d,WAAA,EAAAqoL,EAAAzjM,EAAAmjM,EAAAr5L,UAAAmH,QAAA,GAEA,EAIA,MAGAiyL,EAAAjmM,KAAA,QAAAsE,IAAA,CACA2oE,gBAAAzN,EACA1jC,QAAAuV,OAAAvV,KAIA+qK,EAAAp3J,EAAA+vB,EAAA1jC,EAEA,CAIA,SAAA8qK,EAAAn3J,EAAAvkC,EAAA4wB,GACA,IAAAokB,EAGAilJ,EAAA11J,EAAAlrC,SACA2tB,EAAAud,EAAAz1C,KAAA,uBACAisM,EAAAd,EAAAnlM,KAAA,4BAEAkyB,EAAA4J,SAAA2T,EAAA9I,KAAA,eAAA7K,GAGA,QAAA5J,EAAA7T,QAKA6hC,EADA4mJ,EAAA57L,GACA67L,EAAA77L,GAAA,GAGA87L,EAAAC,EAAA/7L,GAAA,IAGA4wB,EAAA,KAAA2T,EAAA9I,KAAA,kBAAA+/J,EAAAvoL,WAAAsxB,EAAA9I,KAAA,iBAAA3yB,QAAA,SACA20F,MAAA7sE,IAAA5J,EAAA4J,YAAA,GAIA5wB,EAFAukC,EAAA01J,WAAA,aAAA/zK,GAAA,GAAA8uB,GAAAhuB,EAAA4J,QAEA,QAAAokB,EAAA9X,EAAA,KAAA8X,EAAAhpC,EAAA,KAAAgpC,EAAAkQ,EAAA,KAAAjyC,WAAA2d,GAAA,IAGA,OAAAokB,EAAA9X,EAAA,KAAA8X,EAAAhpC,EAAA,KAAAgpC,EAAAkQ,EAAA,MAMA02I,EAAA57L,KACAA,EAAAg8L,EAAAh8L,IAGAA,EAAAi8L,EAAAj8L,EAAAgnB,EAAAk1K,aAIA33J,EAAA+H,IAAAtsC,GAGA+6L,EAAAjmM,KAAA,QAAAsE,IAAA,CACA2oE,gBAAA/hE,EACA4wB,QAAAuV,OAAAvV,KAIA+qK,EAAAp3J,EAAAvkC,EAAA4wB,EACA,CAGA,SAAAurK,EAAA53J,EAAA63J,GACA,IAAA9nI,EAAA+nI,EAAAzrK,EAAA0rK,EAAA3kI,EAAA33D,EAAApI,EAAAC,EAAAqlC,EAAAs9J,EAGAP,EAAA11J,EAAAlrC,SACA2tB,EAAAud,EAAAz1C,KAAA,uBACAisM,EAAAd,EAAAnlM,KAAA,4BAGAg5J,EAAAmsC,EAAAnlM,KAAA,oBACAkxL,EAAAiU,EAAAnlM,KAAA,sBACAkmM,EAAAf,EAAAnlM,KAAA,8BAGAmmM,EAAAntC,EAAAh5J,KAAA,oBACAomM,EAAAlV,EAAAlxL,KAAA,oBACAqmM,EAAAH,EAAAlmM,KAAA,oBAwDA,OArDA8mM,EAAAr3J,EAAA+H,QAEAgoB,EAAA0nI,EAAAz3J,EAAA+H,QACAqrB,EAAA6jI,EAAAvoL,WAAAspL,EAAAh4J,EAAA+H,QAAAxjC,QAAA,UAEAy7B,EAAA9I,KAAA,eAAAk8B,IAGArD,EAAA2nI,EAAAF,EAAAx3J,EAAA+H,OAAA,GAAAtlB,EAAAk1K,YAGA5nI,IACAA,EAAA2nI,EAAAO,EAAAx1K,EAAA8gB,cAAA,GAAA9gB,EAAAk1K,aAEAG,EA4VA,SAAA/nI,GACA,IAAA+nI,EAMA,SAAArnJ,GACA,IAAAqnJ,EAAA,CAAA50I,EAAA,EAAAr0C,EAAA,EAAA8xC,EAAA,GACAr/B,EAAAtd,KAAAsd,IAAAmvB,EAAA9X,EAAA8X,EAAAhpC,EAAAgpC,EAAAkQ,GACAv6B,EAAApiB,KAAAoiB,IAAAqqB,EAAA9X,EAAA8X,EAAAhpC,EAAAgpC,EAAAkQ,GACA/L,EAAAxuB,EAAA9E,EACAw2K,EAAAn3I,EAAAv6B,EACA0xK,EAAAjpL,EAAA,IAAAuX,EAAA,IAAAwuB,EAAAxuB,EAAA,EACA,IAAA0xK,EAAAjpL,EACA4hC,EAAA9X,IAAAvS,EACA0xK,EAAA50I,GAAAzS,EAAAhpC,EAAAgpC,EAAAkQ,GAAA/L,EACAnE,EAAAhpC,IAAA2e,EACA0xK,EAAA50I,EAAA,GAAAzS,EAAAkQ,EAAAlQ,EAAA9X,GAAAic,EAEAkjJ,EAAA50I,EAAA,GAAAzS,EAAA9X,EAAA8X,EAAAhpC,GAAAmtC,EAGAkjJ,EAAA50I,GAAA,EAEA40I,EAAA50I,GAAA,GACA40I,EAAA50I,EAAA,IACA40I,EAAA50I,GAAA,KAIA,OAFA40I,EAAAjpL,GAAA,QACAipL,EAAAn3I,GAAA,QACAm3I,CACA,CA/BAI,CAAAX,EAAAxnI,IACA,IAAA+nI,EAAAjpL,IAAAipL,EAAA50I,EAAA,KACA,OAAA40I,CACA,CAhWAK,CAAApoI,GAGAgoI,EAAAt1K,EAAAs1K,SAAA1vM,EAAA8N,IAAAssB,EAAAs1K,SAAAtwM,MAAA,eAAAk6B,GACA,OAAAA,EAAAp4B,cAAA+nB,MACA,IAFA,GAMA7V,EADA,KAAAukC,EAAA+H,OAAA1/C,EAAA0uB,QAAAipB,EAAA+H,MAAAx+C,cAAAwuM,IAAA,EACAL,EAAA13J,EAAA+H,OAEAsvJ,EAAAr3J,EAAA+H,OAAAuvJ,EAAAt3J,EAAA+H,OAAAgoB,EAIA8nI,GAAA73J,EAAA+H,IAAAtsC,GAGAgnB,EAAA4J,UAEAA,EAAA,KAAA2T,EAAA9I,KAAA,kBAAA+/J,EAAAvoL,WAAAsxB,EAAA9I,KAAA,iBAAA3yB,QAAA,QACA20F,MAAA7sE,OAAA,GACA2T,EAAA9I,KAAA,eAAA7K,GACAmqK,EAAAjmM,KAAA,QAAAsE,IAAA,UAAA+sC,OAAAvV,IAGA/4B,EAAA2jM,EAAAR,EAAAr5L,SAAAq5L,EAAAr5L,SAAAivB,EAAA,EAAAoqK,EAAAr5L,UACAw5L,EAAA/hM,IAAA,MAAAvB,EAAA,OAIA,gBAAA0sC,EAAA+H,MAAAx+C,eACAitM,EAAAjmM,KAAA,QAAAsE,IAAA,UAAA+sC,OAAA,IAIA40J,EAAAjmM,KAAA,QAAAsE,IAAA,kBAAAk7D,GAGAttC,EAAAu0K,SACA,YAEAr+J,EAAAs+J,EAAAjzL,KAAAskD,KAAA,IAAAwvI,EAAAjpL,GAAA,EAAA06I,EAAAnsJ,SAAA,GACA64L,EAAA6B,EAAA50I,EAAAl/C,KAAAspB,GAAA,IACAj6B,EAAA4jM,EAAA,GAAAjzL,KAAAytB,IAAAwkK,GAAAt9J,EAAA,EAAA4wH,EAAAttJ,SACA3I,EAAA2jM,EAAA,GAAAjzL,KAAAwtB,IAAAykK,GAAAt9J,EAAA,EAAA4wH,EAAAnsJ,UACAs5L,EAAA7hM,IAAA,CACAc,IAAArC,EAAA,KACAoC,KAAArC,EAAA,OAIAC,EAAA,IAAAwkM,EAAAn3I,GAAA,IAAA4oG,EAAAnsJ,UACA,KAAA2yD,IAAAz8D,EAAA,GACAqjM,EAAA9hM,IAAA,MAAAvB,EAAA,MAGAmuL,EAAA5sL,IAAA,kBAAAqiM,EAAA,CAAAh0I,EAAA40I,EAAA50I,EAAAr0C,EAAAipL,EAAAjpL,EAAA8xC,EAAA,OACA,MAEA,iBAEAttD,EAAA4jM,EAAA,EAAAa,EAAA50I,EAAA,UACA5vD,EAAA2jM,EAAA1tC,EAAAnsJ,SAAA4G,KAAAskD,KAAAwvI,EAAAn3I,GAAA,IAAA4oG,EAAAnsJ,WAAA,EAAAmsJ,EAAAnsJ,UACAs5L,EAAA7hM,IAAA,CACAc,IAAArC,EAAA,KACAoC,KAAArC,EAAA,OAIAC,EAAA2jM,EAAAxV,EAAArkL,SAAA06L,EAAAjpL,GAAA4yK,EAAArkL,SAAA,OAAAqkL,EAAArkL,UACAu5L,EAAA9hM,IAAA,MAAAvB,EAAA,MAGAmuL,EAAA5sL,IAAA,kBAAAqiM,EAAA,CAAAh0I,EAAA40I,EAAA50I,EAAAr0C,EAAA,IAAA8xC,EAAAm3I,EAAAn3I,KACA+0I,EAAAnlM,KAAA,0BAAAsE,IAAA,UAAAijM,EAAAjpL,EAAA,KACA,MAEA,iBAEAxb,EAAA4jM,EAAA,EAAAa,EAAA50I,EAAA,UACA5vD,EAAA2jM,EAAA1tC,EAAAnsJ,SAAA4G,KAAAskD,KAAAwvI,EAAAjpL,GAAA,IAAA06I,EAAAnsJ,WAAA,EAAAmsJ,EAAAnsJ,UACAs5L,EAAA7hM,IAAA,CACAc,IAAArC,EAAA,KACAoC,KAAArC,EAAA,OAIAC,EAAA2jM,EAAAxV,EAAArkL,SAAA06L,EAAAn3I,GAAA8gI,EAAArkL,SAAA,OAAAqkL,EAAArkL,UACAu5L,EAAA9hM,IAAA,MAAAvB,EAAA,MAGAmuL,EAAA5sL,IAAA,kBAAAqiM,EAAA,CAAAh0I,EAAA40I,EAAA50I,EAAAr0C,EAAAipL,EAAAjpL,EAAA8xC,EAAA,OACA+0I,EAAAnlM,KAAA,0BAAAsE,IAAA,YAAAijM,EAAAn3I,EAAA,KACA,MAEA,QAEAttD,EAAA4jM,EAAAjzL,KAAAskD,KAAAwvI,EAAAjpL,GAAA,IAAA06I,EAAAttJ,UAAA,EAAAstJ,EAAAttJ,SACA3I,EAAA2jM,EAAA1tC,EAAAnsJ,SAAA4G,KAAAskD,KAAAwvI,EAAAn3I,GAAA,IAAA4oG,EAAAnsJ,WAAA,EAAAmsJ,EAAAnsJ,UACAs5L,EAAA7hM,IAAA,CACAc,IAAArC,EAAA,KACAoC,KAAArC,EAAA,OAIAC,EAAA2jM,EAAAxV,EAAArkL,SAAA06L,EAAA50I,GAAA,IAAAu+H,EAAArkL,UAAA,EAAAqkL,EAAArkL,UACAu5L,EAAA9hM,IAAA,MAAAvB,EAAA,MAGAi2J,EAAA10J,IAAA,kBAAAqiM,EAAA,CAAAh0I,EAAA40I,EAAA50I,EAAAr0C,EAAA,IAAA8xC,EAAA,OAKA3gB,EAAAz1C,KAAA,2BACA6sM,EAAAp3J,EAAAvkC,EAAA4wB,EAEA,CAGA,SAAA+qK,EAAAp3J,EAAAvkC,EAAA4wB,GACA,IAEAh9B,EAAAwvJ,EAAAn3J,EAFA+6B,EAAAud,EAAAz1C,KAAA,uBACA6tM,EAAAp4J,EAAAz1C,KAAA,yBAIA,IAAA6tM,KAAA38L,WAAA28L,EAAA/rK,YAAA,CASA,GANA2T,EAAAz1C,KAAA,yBACAkR,QACA4wB,YAIA5J,EAAA41K,UAAA,IAAA51K,EAAA41K,SAAA1wM,OAAA,CAQA,IAHA0H,EAJAgoM,EAAA57L,GAIA67L,EAAA77L,GAAA,GAHA87L,EAAA97L,GAKAojJ,GAAA,EACAn3J,EAAA,EAAAA,EAAA+6B,EAAA41K,SAAA1wM,SAAAD,EACA,GAAA2H,EAAAspC,IAAAlW,EAAA41K,SAAA3wM,GAAAixC,GAAAtpC,EAAAoY,IAAAgb,EAAA41K,SAAA3wM,GAAA+f,GAAApY,EAAAsxD,IAAAl+B,EAAA41K,SAAA3wM,GAAAi5D,GAAAtxD,EAAAsyB,IAAAc,EAAA41K,SAAA3wM,GAAAi6B,EAAA,CACAk9H,EAAAn3J,EACA,KACA,CAGAs4C,EAAAlrC,SAAAvE,KAAA,2CAAAsH,YAAA,aACA,IAAAgnJ,GACA7+G,EAAAlrC,SAAAvE,KAAA,2CAAAy5C,GAAAtiD,GAAAkN,SAAA,WAEA,CAGA6tB,EAAA4tH,SACA5tH,EAAA61K,aAEAxkL,aAAAksB,EAAAz1C,KAAA,6BACAy1C,EAAAz1C,KAAA,2BAAAqpB,YAAA,WACA6O,EAAA4tH,OAAAp8H,KAAA+rB,EAAA14C,IAAA,GAAAmU,EAAA4wB,EACA,GAAA5J,EAAA61K,eAGA71K,EAAA4tH,OAAAp8H,KAAA+rB,EAAA14C,IAAA,GAAAmU,EAAA4wB,IAGA2T,EAAA7lC,QAAA,UAAAA,QAAA,QACA,CACA,CAqCA,SAAAu9L,EAAAn3L,EAAAo3L,GACA,oBAAAA,EAAAp3L,EAAAyyD,cAAAzyD,EAAAhX,aACA,CAGA,SAAAiuM,EAAAj3L,EAAA6+H,GAEA,OADA7+H,IAAAuO,QAAA,WACAnN,MAAA,oBACA,IAAApB,EAAA5Y,QAAA,IAAA4Y,EAAA5Y,OAAA,IACA,IAAA4Y,EAAA5Y,QAAAy3I,IACA7+H,IAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAEA,IAAAA,GALA,EAMA,CAGA,SAAA+2L,EAAA/2L,EAAAlR,GACA,IACAmhD,EADAjwC,EAAAuO,QAAA,eACArnB,MAAA,KAUA,OARA+oD,EAAA,GAAAymJ,EAAA9uL,SAAAqoC,EAAA,cACAA,EAAA,GAAAymJ,EAAA9uL,SAAAqoC,EAAA,cACAA,EAAA,GAAAymJ,EAAA9uL,SAAAqoC,EAAA,mBACAn7C,IAAAm7C,EAAA,KACAA,EAAA,GAAAymJ,EAAAvoL,WAAA8hC,EAAA,aAIAnhD,OACAgG,IAAAm7C,EAAA,GACA,CACA7X,EAAA6X,EAAA,GACA/oC,EAAA+oC,EAAA,GACAmQ,EAAAnQ,EAAA,GACA7uB,EAAA6uB,EAAA,IAGA,CACA7X,EAAA6X,EAAA,GACA/oC,EAAA+oC,EAAA,GACAmQ,EAAAnQ,EAAA,SAMA,IAAAA,EAAA,IAAAA,EAAA,MACA,QAAAA,EAAA,QAAAA,EAAA,QAAAA,EAAA,QAAAA,EAAA,OAEA,OAAAA,EAAA,QAAAA,EAAA,QAAAA,EAAA,MAGA,CAGA,SAAAynJ,EAAA13L,EAAA6+H,GACA,OAAAi4D,EAAA92L,GAEA+2L,EAAA/2L,GAEAi3L,EAAAj3L,EAAA6+H,EAEA,CAGA,SAAA63D,EAAAx7L,EAAA6lB,EAAA8E,GAGA,OAFA3qB,EAAA6lB,IAAA7lB,EAAA6lB,GACA7lB,EAAA2qB,IAAA3qB,EAAA2qB,GACA3qB,CACA,CAGA,SAAA47L,EAAA92L,GACA,IAAAkwC,EAAAlwC,EAAAoB,MAAA,wEACA,SAAA8uC,GAAA,IAAAA,EAAA9oD,OACA,CAGA,SAAAqwM,EAAAxnJ,GAEA,OADAA,IAAA7uC,MAAA,kHACA,IAAA6uC,EAAA7oD,OAAA6oD,EAAA,MACA,CA+BA,SAAAinJ,EAAAhnJ,GAEA,OADAA,IAAA9uC,MAAA,0EACA,IAAA8uC,EAAA9oD,OAAA,KACA,IAAAwgB,SAAAsoC,EAAA,OAAA/wC,SAAA,KAAA/R,OAAA,IACA,IAAAwa,SAAAsoC,EAAA,OAAA/wC,SAAA,KAAA/R,OAAA,IACA,IAAAwa,SAAAsoC,EAAA,OAAA/wC,SAAA,KAAA/R,OAAA,KACA,CAGA,SAAA4qM,EAAA9nJ,GACA,IAAAsf,EAAA,CACAtf,EAAA9X,EAAAj5B,SAAA,IACA+wC,EAAAhpC,EAAA/H,SAAA,IACA+wC,EAAAkQ,EAAAjhD,SAAA,KAKA,OAHArX,EAAAgJ,KAAA0+D,GAAA,SAAAyoI,EAAAzwJ,GACA,IAAAA,EAAApgD,SAAAooE,EAAAyoI,GAAA,IAAAzwJ,EACA,IACA,IAAAgoB,EAAA9tD,KAAA,GACA,CAGA,SAAAi1L,EAAAY,GACA,OAAAS,EAnDA,SAAAT,GACA,IAAArnJ,EAAA,GACAyS,EAAAl/C,KAAA81C,MAAAg+I,EAAA50I,GACAr0C,EAAA7K,KAAA81C,MAAA,IAAAg+I,EAAAjpL,EAAA,KACAylC,EAAAtwC,KAAA81C,MAAA,IAAAg+I,EAAAn3I,EAAA,KACA,OAAA9xC,EACA4hC,EAAA9X,EAAA8X,EAAAhpC,EAAAgpC,EAAAkQ,EAAArM,MACA,CACA,IAAAqf,EAAArf,EACAsf,GAAA,IAAA/kD,GAAAylC,EAAA,IACAmkJ,EAAAv1I,EAAA,IAAAyQ,EAAAC,GAAA,GACA,MAAA1Q,MAAA,GACAA,EAAA,IAAAzS,EAAA9X,EAAAg7B,EAAAljB,EAAAkQ,EAAAiT,EAAAnjB,EAAAhpC,EAAAmsD,EAAA6kI,GACAv1I,EAAA,KAAAzS,EAAAhpC,EAAAksD,EAAAljB,EAAAkQ,EAAAiT,EAAAnjB,EAAA9X,EAAAg7B,EAAA8kI,GACAv1I,EAAA,KAAAzS,EAAAhpC,EAAAksD,EAAAljB,EAAA9X,EAAAi7B,EAAAnjB,EAAAkQ,EAAAiT,EAAA6kI,GACAv1I,EAAA,KAAAzS,EAAAkQ,EAAAgT,EAAAljB,EAAA9X,EAAAi7B,EAAAnjB,EAAAhpC,EAAAksD,EAAA8kI,GACAv1I,EAAA,KAAAzS,EAAAkQ,EAAAgT,EAAAljB,EAAAhpC,EAAAmsD,EAAAnjB,EAAA9X,EAAAi7B,EAAA6kI,GACAv1I,EAAA,KAAAzS,EAAA9X,EAAAg7B,EAAAljB,EAAAhpC,EAAAmsD,EAAAnjB,EAAAkQ,EAAAgT,EAAA8kI,IACAhoJ,EAAA9X,EAAA,EAAA8X,EAAAhpC,EAAA,EAAAgpC,EAAAkQ,EAAA,EACA,CACA,OACAhoB,EAAA30B,KAAA81C,MAAArJ,EAAA9X,GACAlxB,EAAAzD,KAAA81C,MAAArJ,EAAAhpC,GACAk5C,EAAA38C,KAAA81C,MAAArJ,EAAAkQ,GAEA,CA0BA+3I,CAAAZ,GACA,CAsCA,SAAAP,EAAAxnI,GAEA,OACAp3B,GAFAo3B,EAAA5nD,SAAA4nD,EAAAhoE,QAAA,QAAAgoE,EAAAjoE,UAAA,GAAAioE,EAAA,MAEA,GACAtoD,GAAA,MAAAsoD,IAAA,EACApP,EAAA,IAAAoP,EAEA,CA58BA1nE,EAAAqtM,WAAA,CACA1qK,SAAA,CACAmrK,eAAA,GACAC,gBAAA,QACA/lD,OAAA,KACAioD,YAAA,EACAtB,QAAA,MACAzzJ,aAAA,GACA30B,OAAA,MACAnW,KAAA,KACAq9L,UAAA,IACAz6C,QAAA,EACA08C,SAAA,GACAJ,WAAA,YACAtrK,SAAA,EACAj5B,SAAA,SACA2E,KAAA,KACA89L,UAAA,IACA8C,MAAA,UACAN,SAAA,KAKAhwM,EAAAuG,OAAAvG,EAAAgmB,GAAA,CACAqnL,WAAA,SAAA35K,EAAAxxB,GAEA,OAAAwxB,GAEA,cAIA,OAHA1zB,EAAA4G,MAAAoC,MAAA,WACA8oF,EAAA9xF,EAAA4G,MACA,IACA5G,EAAA4G,MAGA,WAEA,OADAwJ,IACApQ,EAAA4G,MAGA,cAEA,YAAAoG,IAAA9K,EAEAlC,EAAA4G,MAAAioC,KAAA,iBAGA7uC,EAAA4G,MAAAoC,MAAA,WACAumM,EAAAvvM,EAAA4G,MAAAioC,KAAA,eAAA3sC,GACA,IAEAlC,EAAA4G,OAGA,gBACA,OA6rBA,SAAA+wC,GACA,IAAAyQ,EACApkB,EAAAhkC,EAAA23C,GAAA9I,KAAA,gBACA,GAAAmgK,EAAAhvM,EAAA23C,GAAA+H,OACA0I,EAAA6mJ,EAAAjvM,EAAA23C,GAAA+H,OAAA,OACA,CAEA0I,EAAA8mJ,EADAC,EAAAnvM,EAAA23C,GAAA+H,OAAA,GAEA,CACA,IAAA0I,EAAA,iBACAp7C,IAAAg3B,GAAAhkC,EAAAuG,OAAA6hD,EAAA,CAAA9uB,EAAAjT,WAAA2d,KACA,OAAAokB,CACA,CAzsBAmoJ,CAAAvwM,EAAA4G,OAGA,gBACA,iBACA,OAusBA,SAAA+wC,EAAAozB,GACA,IAAA3iB,EACApkB,EAAAhkC,EAAA23C,GAAA9I,KAAA,gBACA,GAAAmgK,EAAAhvM,EAAA23C,GAAA+H,OACA0I,EAAA6mJ,EAAAjvM,EAAA23C,GAAA+H,OAAA,OACA,CAEA0I,EAAA8mJ,EADAC,EAAAnvM,EAAA23C,GAAA+H,OAAA,GAEA,CACA,IAAA0I,EAAA,iBACAp7C,IAAAg3B,MAAA,GACA,OAAA+mC,EACA,QAAA3iB,EAAA9X,EAAA,KAAA8X,EAAAhpC,EAAA,KAAAgpC,EAAAkQ,EAAA,KAAAjyC,WAAA2d,GAAA,IAEA,OAAAokB,EAAA9X,EAAA,KAAA8X,EAAAhpC,EAAA,KAAAgpC,EAAAkQ,EAAA,GAEA,CAvtBAk4I,CAAAxwM,EAAA4G,MAAA,eAAA8sB,GAGA,eACA,YAAA1mB,IAAA9K,EACAlC,EAAA4G,MAAA1E,KAAA,wBAGAlC,EAAA4G,MAAAoC,MAAA,WACA,IAAAoxB,EAAAp6B,EAAA4G,MAAA1E,KAAA,2BACA4vF,EAAA9xF,EAAA4G,OACA5G,EAAA4G,MAAAymM,WAAArtM,EAAAuG,QAAA,EAAA6zB,EAAAl4B,GACA,IAEAlC,EAAA4G,OAGA,WAEA,OADA8I,EAAA1P,EAAA4G,MAAA+6C,GAAA,IACA3hD,EAAA4G,MAGA,YACA,YAAAoG,IAAA9K,EAEAlC,EAAA4G,MAAA84C,OAGA1/C,EAAA4G,MAAAoC,MAAA,WACA,2BAAA9G,QACA8K,IAAA9K,EAAA8hC,SACAhkC,EAAA4G,MAAAioC,KAAA,eAAA+/J,EAAA1sM,EAAA8hC,QAAA,MAEA9hC,EAAA4gC,OACA9iC,EAAA4G,MAAA84C,IAAAx9C,EAAA4gC,QAGA9iC,EAAA4G,MAAA84C,IAAAx9C,GAEAqtM,EAAAvvM,EAAA4G,MACA,IAEA5G,EAAA4G,OAGA,QAKA,MAJA,WAAA8sB,IAAAxxB,EAAAwxB,GACA1zB,EAAA4G,MAAAoC,MAAA,YAWA,SAAA2uC,EAAAvd,GACA,IAEAl7B,EACAgM,EACA8kM,EACA7B,EACAsC,EACAnuD,EACAjjJ,EARAguM,EAAArtM,EAAA,8BACA2iC,EAAA3iC,EAAAqtM,WAAA1qK,SAUA,GAAAgV,EAAAz1C,KAAA,iCAGAk4B,EAAAp6B,EAAAuG,QAAA,KAAAo8B,EAAAvI,GAGAizK,EACA9gM,SAAA,oBAAA6tB,EAAAk2K,OACA1hE,YAAA,0BAAAx0G,EAAA4J,cAGAh3B,IAAAotB,EAAArvB,UACA/K,EAAAgJ,KAAAoxB,EAAArvB,SAAA3L,MAAA,iBACAiuM,EAAA9gM,SAAA,uBAAA3F,KACA,IAKAsE,EADA,QAAAkvB,EAAA7T,OACA6T,EAAA4J,QAAA,UAEA5J,EAAAs1K,SAAA,SAIA/3J,EACAprC,SAAA,oBACArK,KAAA,6BACAA,KAAA,sBAAAk4B,GACA9c,KAAA,OAAApS,GACAgvI,KAAAmzD,GACAt8G,MACA,kDAAA32D,EAAAu0K,QAAA,0VAeAv0K,EAAA44H,SACAr7G,EAAAo5C,MAAA,kIACAp5C,EAAA6hB,KAAA,4BAAAl3D,GAAA,kBAAAgF,GACAA,EAAA6jC,iBACAwM,EAAA7lC,QAAA,QACA,KAQA,IAJAwwI,EAAA3qG,EAAAlrC,SAAAvE,KAAA,sBACA5F,GAAA,sCAAA8sD,MAGAh1B,EAAA41K,UAAA,IAAA51K,EAAA41K,SAAA1wM,OAIA,IAHAgjJ,EAAA/1I,SAAA,4BACAyjM,EAAAhwM,EAAA,yCACAyN,SAAA60I,GACAjjJ,EAAA,EAAAA,EAAA+6B,EAAA41K,SAAA1wM,SAAAD,EAEA,iBAAA+6B,EAAA41K,SAAA3wM,IACAH,EAAAk7B,EAAA41K,SAAA3wM,GAAAH,KACAivM,EAAA/zK,EAAA41K,SAAA3wM,GAAAyjC,QAEA5jC,EAAA,GACAivM,EAAA/zK,EAAA41K,SAAA3wM,IAEAoxM,EAAAtC,EACAA,EAAAa,EAAAb,GAAAc,EAAAd,GAAA,GAAAe,EAAAC,EAAAhB,GAAA,IACAnuM,EAAA,sGACA6uC,KAAA,QAAA3vC,GACAuO,SAAAuiM,GACA9tM,KAAA,eAAAuuM,GACAvoM,KAAA,4BACAsE,IAAA,CACA2oE,gBAAA,gBAAAs7H,EAAAP,EAAA/B,GAAA,cACAnqK,QAAAuV,OAAA40J,EAAA70K,KAEAc,EAAA41K,SAAA3wM,GAAA8uM,EAKA/zK,EAAA44H,QAAAr7G,EAAAlrC,SAAAF,SAAA,qBAEAgjM,EAAA53J,GAAA,GAEAA,EAAAz1C,KAAA,4BACA,CApHAf,CAAAnB,EAAA4G,MAAA1E,EACA,IACAlC,EAAA4G,MAIA,IA41BA5G,EAAA,CAAAlB,WAEAwD,GAAA,uDAAAgF,GACAtH,EAAAsH,EAAA2jC,QAAAg2G,UAAAj1F,IAAA1kD,EAAA2jC,QAAA5B,SAAA,eACAj5B,GAEA,IAEA9N,GAAA,0HAAAgF,GACA,IAAA2jC,EAAAjrC,EAAA4G,MACAU,EAAA6jC,iBACAnrC,EAAAsH,EAAAopM,gBAAAxuM,KAAA,oBAAA+oC,GACAkkB,EAAAlkB,EAAA3jC,GAAA,EACA,IAEAhF,GAAA,sDAAAgF,GACA,IAAA2jC,EAAAjrC,EAAAsH,EAAAopM,gBAAAxuM,KAAA,qBACA+oC,GAAAkkB,EAAAlkB,EAAA3jC,EACA,IAEAhF,GAAA,qDACAtC,EAAA4G,MAAA8mI,WAAA,oBACA,IAEAprI,GAAA,uDAAAgF,GACAA,EAAA6jC,iBACA,IAAAF,EAAAjrC,EAAA4G,MAAA+wC,EAAA1M,EAAAg2G,QAAA,eAAA/4I,KAAA,qBAAA46B,EAAAmI,EAAA/oC,KAAA,gBACA4sM,EAAAn3J,EAAA7U,EAAA6sK,EAAA7sK,IACAysK,EAAA53J,EACA,IAEAr1C,GAAA,kFAAAgF,GACA,IAAAqwC,EAAA33C,EAAA4G,MAAA6F,SAAAvE,KAAA,qBACAZ,EAAA6jC,iBACAz7B,EAAAioC,EACA,IAEAr1C,GAAA,mDACA,IAAAq1C,EAAA33C,EAAA4G,MACA+wC,EAAAz1C,KAAA,2BACAwN,EAAAioC,EACA,IAEAr1C,GAAA,kDACA,IAEAotM,EACAhoI,EACAvf,EACAwoJ,EACAv9L,EANAukC,EAAA33C,EAAA4G,MACAwzB,EAAAud,EAAAz1C,KAAA,uBAOAy1C,EAAAz1C,KAAA,4BAGAwtM,EAAAt1K,EAAAs1K,SAAA1vM,EAAA8N,IAAAssB,EAAAs1K,SAAAtwM,MAAA,eAAAk6B,GACA,OAAAA,EAAAp4B,cAAA+nB,MACA,IAFA,GAMA7V,EADA,KAAAukC,EAAA+H,OAAA1/C,EAAA0uB,QAAAipB,EAAA+H,MAAAx+C,cAAAwuM,IAAA,EACA/3J,EAAA+H,MAWA,QAPAyI,EADA6mJ,EAAAr3J,EAAA+H,OACAuvJ,EAAAt3J,EAAA+H,OAAA,IAEAgoB,EAAAynI,EAAAx3J,EAAA+H,OAAA,IACAwvJ,EAAAxnI,GAAA,MAKAttC,EAAA8gB,aACA,QAAA9gB,EAAA7T,OACA6T,EAAA4J,QACAirK,EAAA,QAAA9mJ,EAAA7X,EAAA,IAAA6X,EAAA/oC,EAAA,IAAA+oC,EAAAmQ,EAAA,IAAA3gB,EAAA9I,KAAA,qBACAogK,EAAA,OAAA9mJ,EAAA7X,EAAA,IAAA6X,EAAA/oC,EAAA,IAAA+oC,EAAAmQ,EAAA,KAEA43I,EAAA/nJ,GAKAwoJ,EAAAv2K,EAAA4J,QAAA2T,EAAA9I,KAAA,kBACA,gBAAAz7B,EAAAlS,gBAAAyvM,EAAA,GACAh5J,EACA++B,QAAA,eACAxuE,KAAA,mCACAsE,IAAA,UAAA+sC,OAAAo3J,IAGAh5J,EAAA+H,IAAAtsC,GAGA,KAAAukC,EAAA+H,OAAA/H,EAAA+H,IAAAkwJ,EAAAx1K,EAAA8gB,cAAA,IAGAvD,EAAA+H,IAAA2vJ,EAAA13J,EAAA+H,MAAAtlB,EAAAk1K,aAEA,IAEAhtM,GAAA,mDAAAgF,GACA,IAAAqwC,EAAA33C,EAAA4G,MACA,GAAA+wC,EAAAz1C,KAAA,0BACA,OAAAoF,EAAA0jC,OACA,OACA56B,IACA,MACA,QACA,QACAA,IACAunC,EAAA/T,OAGA,IAEAthC,GAAA,mDACA,IAAAq1C,EAAA33C,EAAA4G,MACA+wC,EAAAz1C,KAAA,2BACAqtM,EAAA53J,GAAA,EACA,IAEAr1C,GAAA,mDACA,IAAAq1C,EAAA33C,EAAA4G,MACA+wC,EAAAz1C,KAAA,2BACAqpB,YAAA,WACAgkL,EAAA53J,GAAA,EACA,KACA,GACA,IAEAt5C,OCzmCA,iCACA,SACA,UACA,sCACA,cACA,aACA,SAAA2B,EAAAkM,EAAA0kM,EAAAj2J,EAAAtV,GACA,aAEA,IAAA1C,EAAA,CACAzgC,KAAA,CACA05C,UAAA,QACAr1B,OAAA,MACAs0B,SAAA,CACAlvC,mBAAA,EACAmvC,YAAA,EACAO,YAAA,eAKA,SAAAw1J,EAAA9mL,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAAkqM,aAAAlqM,KAAAsiB,gBACAzb,SAAA7G,KAAAuF,UACAkhM,WAAA,SAAAzmM,KAAAmqM,cACAnqM,KAAAwM,MAAA,KAEAiyB,EAAAK,aAAA9+B,KACA,CAwFA,OAtFAsF,EAAA3F,OAAAsqM,EAAA3kM,GAEA2kM,EAAArwK,SAAA,cAEAqwK,EAAAlqM,UAAAuiB,cAAA,WACA,gBAAAtiB,KAAA1E,KAAA05C,UACA57C,EAAA,2BACAA,EAAA,wBACA,EAEA6wM,EAAAlqM,UAAAoqM,WAAA,WACA,IAAA7uM,EAAA,CACA8lJ,OAAAphJ,KAAAoqM,aAAA7nM,KAAAvC,OAMA,MAHA,WAAAA,KAAA1E,KAAA05C,YACA15C,EAAA8wJ,QAAA,GAEA9wJ,CACA,EAEA2uM,EAAAlqM,UAAAqqM,aAAA,SAAA59L,GACAxM,KAAAwM,MAAA,QAAAxM,KAAA1E,KAAAqkB,OACAnT,EACAxM,KAAAkqM,aAAAzD,WAAA,aACAzmM,KAAA4K,sBAAA,UAAA5K,KAAAwM,MACA,EAEAy9L,EAAAlqM,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2C,OAAAsxC,SAAAhzC,MAAAjB,MACA+zC,EAAAh0C,UAAAw0C,2BAAAv0C,MACAA,KAAA2M,eACA,EAEAs9L,EAAAlqM,UAAA0H,WAAA,WACAzH,KAAAqqM,iBACAjxM,EAAA,2BAAAsC,GAAA,SACAvC,EAAAy+C,SAAA53C,KAAAqqM,eAAA9nM,KAAAvC,MAAA,IAEA,EAEAiqM,EAAAlqM,UAAAo3C,WAAA,WACAn3C,KAAAwM,MAAA,GACAxM,KAAAkqM,aACAzD,WAAA,SAAAvqK,MAAA,KAAAkB,QAAA,GACA,EAEA6sK,EAAAlqM,UAAA6mC,SAAA,SAAA8M,GACA1zC,KAAAwM,MAAAknC,EAAAlnC,MACAxM,KAAAkqM,aACAzD,WAAA,SAAAvqK,MAAAwX,EAAAlnC,MAAA4wB,QAAA,GACA,EAEA6sK,EAAAlqM,UAAAwM,SAAA,WACA,OAAAvM,KAAAwM,KACA,EAEAy9L,EAAAlqM,UAAAsqM,eAAA,WACA,IAAArqM,KAAAkqM,cAAA,WAAAlqM,KAAA1E,KAAA05C,UAAA,OAEA,MAAAs1J,EAAA,IACA,IAAAC,EAAA,GAEAC,EAAAxqM,KAAAkqM,aAAAp6H,QAAA,iBAAA3rE,WACAk4C,EAAAr8C,KAAAkqM,aAAAp6H,QAAA,iBAAAzzB,SAEA6J,EAAA7J,EAAA31C,IAAAtN,EAAAS,QAAAiU,YACAq4C,EAAA9J,EAAA51C,KAAArN,EAAAS,QAAAusC,aAIAmkK,EAFAC,EAAA9jM,IAAA4jM,EAAAtqM,KAAAmH,SAAA5B,SAAA4I,UACA+3C,EAAAokJ,EAAAlxM,EAAAS,QAAAsU,SACA,MACA,SAEAq8L,EAAA/jM,KAAA6jM,EAAAtqM,KAAAmH,SAAA5B,SAAAyH,SACAm5C,EAAAmkJ,EAAAlxM,EAAAS,QAAAmT,QACAu9L,GAAA,SACAA,GAAA,QAEAvqM,KAAAkqM,aAAA5uM,KAAA,uBAAA6I,UACAomM,GACAvqM,KAAAkqM,aAAAzD,WAAA,YAAAtiM,SAAAomM,GAEA,EAEAN,CACA,IACAxyM,OCxHA,uBACA,SACA,UACA,aACA,SAAA2B,EAAAkM,EAAAm5B,GACA,aAEA,IAAA1C,EAAA,CACAzgC,KAAA,CACA2gC,MAAA,4BAIA,SAAAwuK,EAAAtnL,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAAuF,SACAI,SAAA,mBACAC,IAAA,CACA8vC,WAAA,aAGA11C,KAAA0qM,qBAAAtxM,EAAA,eACAyN,SAAA7G,KAAAuF,UAEAk5B,EAAAK,aAAA9+B,KACA,CA6BA,OA3BAsF,EAAA3F,OAAA8qM,EAAAnlM,GAEAmlM,EAAA7wK,SAAA,SAEA6wK,EAAA1qM,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAAmgC,cACAngC,KAAA2xL,mBACA3xL,KAAA2M,eACA,EAEA89L,EAAA1qM,UAAAogC,YAAA,WACAngC,KAAA0qM,qBAAAziK,KAAA,kCAAAjoC,KAAA1E,KAAA2gC,MACA,EAEAwuK,EAAA1qM,UAAA4xL,iBAAA,WACA3xL,KAAA1E,KAAAs2L,QACA5xL,KAAAuF,SACAK,IAAA,CACAm3B,UAAA/8B,KAAA1E,KAAAu2L,SAAA,MAAA7xL,KAAA1E,KAAAu2L,SAAA,MAAA7xL,KAAA1E,KAAAw2L,SAAA,eAIA9xL,KAAAuF,SAAAK,IAAA,mBAEA,EAEA6kM,CACA,IACAhzM,OCzDA,8BACA,aAEA,IAAAkzM,EAAA,WAEA,OAAA9wM,OAAA2mG,kBAAA,CACA,EAgBA,OAEAmqG,oBAEAC,WAlBA,SAAAC,GACA,OAAAF,IACA,CACAvmM,EAAA,EAAAymM,EAAAzmM,EACAC,EAAA,EAAAwmM,EAAAxmM,GAIA,CACAD,EAAAymM,EAAAzmM,EACAC,EAAAwmM,EAAAxmM,EAEA,EAUA,IACA5M,OC/BA,0BACA,eACA,OACA,SAAAqzM,EAAAhnM,GAEA,IAAAinM,EAAA,CACA,MACA,MACA,OACA,MACA,OACA,MACA,OAmDA,OACAC,QA/BA,SAAA7nL,GACA,GAPA,SAAA8nL,GACA,WAAAA,EAAAnyM,QAAA,YACA,IAAAmyM,EAAAnyM,QAAA,aACA,IAAAmyM,EAAAnyM,QAAA,KACA,CAGAoyM,CAAA/nL,EAAA8nL,WACA,OAAA9nL,EAAA8nL,UAEA,IAAAA,EAAA9nL,EAAA8nL,UACAE,EAAAhoL,EAAAgoL,aACAC,EAAAjoL,EAAAioL,aACAC,EAAAloL,EAAAkoL,kBACA/mM,EAAA6e,EAAA7e,KACAgnM,EAnBA,SAAAL,GACA,OAAAA,EAAA90L,OAAA80L,EAAAM,YAAA,OAAAN,EAAAvyM,OAAAuyM,EAAAM,YAAA,MAAAjxM,aACA,CAiBAkxM,CAAAP,GAEA,GAzBA,SAAAK,GACA,cAAAA,CACA,CAuBAG,CAAAH,GACA,OAAAxnM,EAAA1G,aAAA,uBAAA6tM,GAEA,IAhCA,SAAAK,GACA,WAAAP,EAAAjyM,QAAAwyM,EACA,CA8BAI,CAAAJ,IAAA,QAAAA,IAAAH,EACA,OAAArnM,EAAA1G,aAAA,uBAAA6tM,GAEA,GAAAE,EAAA,CACA,IAAAQ,EAAAb,EAAAF,WAAAtmM,GAEA,OAAAR,EAAA1G,aAAA,4BAAA6tM,EACA,UAAAU,EAAAvnM,EACA,WAAAunM,EAAAtnM,EACA,aAAAgnM,EACA,iCAAAD,EAAA,gBACA,CAEA,OAAAtnM,EAAA1G,aAAA,uBAAA6tM,EACA,EAKA,IACAxzM,OCnEA,2BACA,SACA,OACA,UACA,WACA,aACA,UACA,KACA,iBACA,gBACA,yBACA,aACA,YACA,SAAA2B,EAAAoJ,EAAA8C,EAAAm5B,EAAAtlC,EAAAqc,EAAA1R,EAAAurB,EAAA62D,EAAA0lH,EAAA74J,EAAAlO,GACA,aAEA,IAAA9I,EAAA,CACAzgC,KAAA,CACAuwM,qBAAA,EACAC,wBAAA,EACAnzJ,SAAA,IACAD,KAAA,EACAqzJ,aAAA,GACAC,UAAA,GACAC,eAAA,EACA17B,UAAA,SACA27B,kBAAA,KACAC,qBAAA,KACA11J,gBAAA,IAIA21J,EAAA,SAAAC,EAAAC,GACA,IAAAzvK,EAAA,GACA,GAAAyvK,GAAA,KAAAA,EAAA,CACA,IAAAt4L,EAAAlQ,EAAA3F,iBAAAmuM,GACAzvK,EAAA7oB,EACA,OAAAA,EAAA,IACA,EACA,CACAq4L,EAAAzmM,IAAA,mBAAAi3B,EACA,EAEA0vK,EAAA,CACAC,QAAA,aACA/lM,KAAA,aACAgmM,OAAA,SACA9lM,MAAA,YAGA,SAAA+lM,EAAAvpL,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GACAkM,EAAArK,KAAAhlB,KAAA,CACA,eAGAA,KAAA1E,KAAA0jL,QAAA7lL,EAAA+N,IAAAlH,KAAA1E,KAAA0jL,SAAA,SAAAG,GACA,OAAA3pK,EAAA1D,+BAAAqtK,EACA,IAEAn/K,KAAAm4B,QAAA,KACA,IAAAp3B,EAAAf,KAEAA,KAAA2sM,cAAA,KACA3sM,KAAA4sM,WAAA,KACA5sM,KAAAuF,SAAAK,IAAA,CACA6lC,WAAA,UACAuL,SAAA,WAGAh3C,KAAAqjD,SAAAjqD,EAAA,UACAwM,IAAA,CACAzB,SAAA,WACAuC,IAAA,EACAC,MAAA,EACAC,OAAA,EACAH,KAAA,EACAivC,WAAA,aAEA/vC,SAAA,qBACAkB,SAAA7G,KAAAuF,UAEAvF,KAAA6sM,eAAAzzM,EAAA,UACAuM,SAAA,yBACAkB,SAAA7G,KAAAqjD,UACArjD,KAAA8sM,kBAAA9sM,KAAA6sM,eAAA,wBAEA7sM,KAAA+sM,gBAAA3zM,EAAA,UACAuM,SAAA,mBACAkB,SAAA7G,KAAAqjD,UAEArjD,KAAA1E,KAAAm7C,gBACAz2C,KAAAyK,sBAAAzK,KAAA+sM,gBAAA,SAAA/sM,KAAAgtM,qBAAAzqM,KAAAvC,OAGAA,KAAAitM,eAAA7zM,EAAA,UACAuM,SAAA,kBACAkB,SAAA7G,KAAAqjD,UAEArjD,KAAA04C,KAAA,EACA14C,KAAAktM,sBAAA,EACAltM,KAAAmtM,eAAA,EACAntM,KAAAgoF,SAAA,EACAhoF,KAAAotM,YAAA,EACAptM,KAAAqtM,aAAA,KACArtM,KAAAstM,uBAAA,GACAttM,KAAAutM,WAAA,KAEAvtM,KAAAwtM,eAAA,GACAxtM,KAAAytM,cAAA,EAEAztM,KAAA1E,KAAA4wM,mBACAlsM,KAAAwtM,eAAA3sM,KAAA,CACA6zJ,OAAA10J,KAAA1E,KAAA4wM,kBACAwB,WAAA,eAAA1tM,KAAA1E,KAAA6wM,uBAIAnsM,KAAAM,OAAA4lF,EACA,CACAuoG,QAAA,WACA1tL,EAAAssM,cACAtsM,EAAA2yC,OAAA3yC,EAAAssM,aACA,IAGAtsM,EAAA4sM,YAAA3tM,KAAAuF,SAAA,IAEAvF,KAAA0zC,OAAA,EAAAk6J,cAAA,IACA,CAi9BA,OA/8BAtoM,EAAA3F,OAAA+sM,EAAApnM,GAEAonM,EAAA9yK,SAAA,WAEA8yK,EAAA3sM,UAAAgH,UAAA,WACA,IAAAhG,EAAAf,KACAA,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAo8C,YACA,SAAAp8C,GACAyF,EAAAzF,KAAAuyM,gCAIA9sM,EAAA+sM,mBAAA7sM,MAAAF,IAHAA,EAAAqsM,YAAA,EACArsM,EAAAmsM,sBAAA,GAIAnsM,EAAAosM,cAAA7xM,EAAAs9B,aAAA73B,EAAA63C,cACA73C,EAAAssM,aAAA/xM,EACAyF,EAAAgtM,aAAA,GACAhtM,EAAA2yC,OAAAp4C,GACAixC,MAAA,WACAxrC,EAAAitM,kBAAA1yM,EAAAs9B,aAAA73B,EAAA23C,KAAA33C,EAAA63C,eACA73C,EAAAisM,sBACA,GACA,GACAhtM,KAAAiuM,mCAAA1rM,KAAAvC,OAEAA,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAA4yM,kBACA,SAAA5yM,GACAyF,EAAAksM,eACAxyJ,QACA5O,OAAA9qC,EAAAotM,aAAA7yM,GACA,IAEA0E,KAAAouM,sBAEApuM,KAAAquM,WAAAl1M,EAAA+N,IAAAlH,KAAA1E,KAAA0jL,SAAA,SAAAG,GACA,OAAAp+K,EAAA4B,OAAA+B,WAAA6zC,gBAAA4mI,EAAAz6K,WACA,IAEA1E,KAAA2M,eACA,EAEA+/L,EAAA3sM,UAAAquM,oBAAA,WAGA,IAAArtM,EAAAf,KACAA,KAAAsuM,oBAAA,GACAn1M,EAAAiJ,KAAApC,KAAA1E,KAAA0jL,SAAA,SAAAG,GACA,IAAAovB,EAAAn1M,EAAA,UACAyrC,OAAAiO,SAAAqsI,EAAAqvB,cAAArvB,EAAAsvB,WAAA,KAEA1tM,EAAAutM,oBAAAztM,KAAA0tM,GACA,IAAAx7J,EAAAhyC,EAAAo+K,EAAAuvB,cAAAH,GACA76J,QACA,GACA,EAEAg5J,EAAA3sM,UAAAkuM,mCAAA,SAAA3yM,GACAA,EAAAk9C,uBAAAx4C,KAAA1E,KAAAm7C,eACAn7C,EAAAo9C,KAAA,EACAp9C,EAAAq9C,SAAA34C,KAAA1E,KAAAuyM,gCACA7tM,KAAAotM,YAAAptM,KAAA44C,cACA54C,KAAA44C,cACAt9C,EAAAkyM,eAAAxtM,KAAAwtM,cACA,EAEAd,EAAA3sM,UAAAitM,qBAAA,WACA,IAAAjsM,EAAAf,KACAe,EAAAgsM,gBAAAj/L,YAAA/M,EAAAgsM,gBAAA5+L,UAAApN,EAAAgsM,gBAAA,GAAAppK,aAAA,KACA5iC,EAAAinF,SAAAjnF,EAAAosM,gBACApsM,EAAA+sM,qBACA/sM,EAAA4tM,gBAGA,EAEAjC,EAAA3sM,UAAA4uM,aAAA,WACA3uM,KAAA4uM,gBAAA5uM,KAAAotM,aAAA,EACA,EAEAV,EAAA3sM,UAAA8uM,mBAAA,WAGA,GAFA7uM,KAAA8uM,wBAEA9uM,KAAA1E,KAAA2wM,cAAA,CACA,IAAAlrM,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAA1E,KAAA0jL,SAAA,SAAAG,EAAA39K,GACAT,EAAA4rM,cAAAjqK,WAAAqY,GAAA,GAAArY,WAAAqY,GAAAv5C,GACAoE,IAAA,mBAAAu5K,EAAA4vB,eAAA5vB,EAAA6vB,mBAAA,KAAA7vB,EAAA8vB,uBAAA,IACA,GACA,CACA,EAEAvC,EAAA3sM,UAAA2zC,OAAA,SAAAp4C,EAAA4zM,GACA5zM,IACA0E,KAAAm4B,QAAA78B,EAAA68B,SAEA,IAAAp3B,EAAAf,KACA,OAAAwC,EAAA6hB,SAAA,SAAAyB,GACA/kB,EAAAouM,cACAxqL,WAAAmB,EACA,IACAxiB,MAAA,WACA,OAAAd,EAAA6hB,SAAA,SAAAyB,GACA,IAAAk5J,EAAAj+K,EAAAzF,KAAA0jL,QACAj+K,EAAAquM,qBAAA9zM,EAAA4zM,EAAAlwB,GACAr6J,WAAAmB,EACA,GACA,IACAxiB,MAAA,WACAvC,EAAAsuM,mBAAAtuM,EAAAmsM,sBACA,GACA,EAEAR,EAAA3sM,UAAAovM,YAAA,WACAnvM,KAAA1E,KAAA2wM,cACAjsM,KAAA2sM,gBACA3sM,KAAA6sM,eACAlnM,SAAA,kBAEA3F,KAAA2sM,cAAAvzM,EAAA,6CACAwM,IAAA,CACAuI,OAAAnO,KAAA1E,KAAAywM,aAAA,OAEApmM,SAAA,gBACAkB,SAAA7G,KAAA6sM,iBAGA7sM,KAAA6sM,eACAjkM,YAAA,kBAGA5I,KAAA1E,KAAAg0M,cACAtvM,KAAAitM,eACAtnM,SAAA,kBAEA3F,KAAAitM,eACArkM,YAAA,iBAEA,EAEA8jM,EAAA3sM,UAAAqvM,qBAAA,SAAA9zM,EAAA4zM,EAAAlwB,GAkBA,GAjBAh/K,KAAA+sM,gBACAtyJ,QACA70C,IAAA,uBAEA5F,KAAA4sM,WAAAxzM,EAAA,6CACAuM,SAAA,cACAkmC,OAAAzyC,EAAA,YAAAuM,SAAA,mBACAkB,SAAA7G,KAAA+sM,iBAEA/sM,KAAA6uM,qBACA7uM,KAAAuvM,YAAAj0M,GAAA,GAEA4zM,GAAAlvM,KAAAwvM,aACAxvM,KAAAwvM,WAAAz2M,gBACAiH,KAAAwvM,WACAxvM,KAAAouM,uBAEApuM,KAAA1E,KAAA2wM,gBAAAjsM,KAAAwvM,WAAA,CACAxvM,KAAAwvM,WAAAp2M,EAAA,YACAwM,IAAA,CAAAiH,QAAA,SACAlH,SAAA,oBACAkB,SAAA7G,KAAA2sM,eAEA,IAAA5rM,EAAAf,KACA7G,EAAAiJ,KAAA48K,GAAA,SAAAG,EAAAswB,GACA,IAAA9zJ,EAAA56C,EAAA2uM,2BAAAvwB,EAAAswB,GACA7pM,IAAA,CAAAiH,QAAA,SACA9L,EAAAyuM,WAAA3jK,OAAA8P,GAEA,iBAAAwjI,EAAAz5K,MACA,kBAAAy5K,EAAAz5K,MACA,gBAAAy5K,EAAAz5K,MACAy5K,EAAAwwB,uBACAh0J,EACAjgD,GAAA,QAAAqF,EAAA6uM,aAAArtM,KAAAxB,EAAAo+K,IACAl3I,KAAA,+BAGA,IAAA4nK,EAAA1wB,EAAA2wB,mBAAA3wB,EAAA2wB,kBAAArpM,KAAA04K,EAAA2wB,kBAAArpM,KAAA,EACAspM,EAAA5wB,EAAA2wB,mBAAA3wB,EAAA2wB,kBAAAppM,IAAAy4K,EAAA2wB,kBAAAppM,IAAA,EACAspM,EAAA7wB,EAAA2wB,mBAAA3wB,EAAA2wB,kBAAAnpM,MAAAw4K,EAAA2wB,kBAAAnpM,MAAA,EACAspM,EAAA9wB,EAAA2wB,mBAAA3wB,EAAA2wB,kBAAAlpM,OAAAu4K,EAAA2wB,kBAAAlpM,OAAA,EAEAu4K,EAAA+wB,qBAAA/wB,EAAAgxB,gBACAx0J,EAAAtE,QACAj+C,EAAA,SACAuM,SAAA,gBACAC,IAAA,CACAoH,MAAA,cACAmB,OAAA,OACAtB,QAAA,OACAoqC,cAAA,SACAhV,eAAA,SACAR,YAAAouK,EAAA,KACAxiM,WAAA0iM,EAAA,KACAruK,aAAAsuK,EAAA,KACA1iM,cAAA2iM,EAAA,OAEApkK,OACAzyC,EAAA,SACAuM,SAAA,QACAC,IAAA,CACA83B,gBAAA,OAAA55B,EAAA3F,iBAAAghL,EAAAgxB,gBAAA,IACAl+H,eAAA,UACAjlE,OAAAmyK,EAAAixB,iBAAA,SACAjiM,QAAAgxK,EAAAkxB,kBAAA,SACAv+H,iBAAA,gBAIAlsE,IAAA,CAAAiH,QAAA,QAEA,GACA,CACA,EAEA6/L,EAAA3sM,UAAAsvM,mBAAA,SAAAiB,GACAtwM,KAAA1E,KAAA2wM,eACAjsM,KAAA2sM,cAAA/mM,IAAA,QAAA5F,KAAA4sM,WAAAh1L,aAAA,MAEA5X,KAAA1E,KAAAg0M,eACAtvM,KAAAitM,eAAAvqK,WAAA98B,IAAA,QAAA5F,KAAA4sM,WAAAh1L,aAAA,MAEA5X,KAAA2tM,YAAA3tM,KAAAitM,eAAA,wBAEAjtM,KAAAuwM,kBAAAvwM,KAAAwwM,kBACAxwM,KAAAswM,yBAEAtwM,KAAA+sM,gBACAnnM,IAAA,uBACA,EAEA8mM,EAAA3sM,UAAAwvM,YAAA,SAAAj0M,EAAAukB,GACA,GAAAvkB,KAAA68B,QAAA,CAEA,IAAAs4K,EAAAzwM,KAAA4sM,WAAAtrM,KAAA,SAEAue,GACA4wL,EAAAnvM,KAAA,YAAAvI,SACA03M,EAAA3iM,UAAA,GAEA9N,KAAAm4B,QAAA78B,EAAA68B,SAEAn4B,KAAAm4B,QAAAh/B,EAAAk0H,MAAArtH,KAAAm4B,QAAA78B,EAAA68B,SAGAs4K,EACA5kK,OAAA1yC,EAAA+N,IAAA5L,EAAA68B,QAAAn4B,KAAA0wM,UAAAnuM,KAAAvC,KACAA,KAAAm4B,QACAn4B,KAAAm4B,QAAAz/B,OAAA4C,EAAA68B,QAAAz/B,OACA4C,EAAAq9B,WAEA83K,EAAA/tK,WAAAqY,GAAA,GACAn1C,IAAA,cApBA,CAqBA,EAEA8mM,EAAA3sM,UAAA2wM,UAAA,SAAAC,EAAAC,EAAAj4K,EAAAk4K,EAAAC,GACA,IAAAC,EAAA33M,EAAA,SAEA43M,EAAAJ,EAAAE,EAEA/vM,EAAAf,KACA+wM,EACAllK,OAAA1yC,EAAA+N,IAAAlH,KAAA1E,KAAA0jL,SAAA,SAAAG,GACA,IAAA8xB,EAAAlwM,EAAAmwM,wBAAAv4K,EAAAk4K,EAAA1xB,EAAA4xB,EAAA5xB,EAAAgyB,eAEA,GAAAhyB,EAAAiyB,cAAAJ,EAAA,GACA,IAAAt8C,EAAA,iBAAAyqB,EAAAz5K,KACAy5K,EAAAzqB,OACAyqB,EAAAmtB,aACAqE,EAAAK,EAAA,GAAAt8C,KACAm8C,EAAAn8C,IACAu8C,EAAAtrM,SAAA,iBACA,CAEA,OAAAsrM,CACA,KAEAjxM,KAAA1E,KAAA+1M,oBAAAR,EAAA7wM,KAAA1E,KAAA+1M,qBACAN,EAAAnrM,IAAA,mBAAAirM,EAAA7wM,KAAA1E,KAAA+1M,qBAEArxM,KAAA8K,eAAA,eAAA9K,KAAA8K,eAAA,WACAimM,EAAAr1M,GAAA,kBAAA4c,GACAvX,EAAA0sM,gBAEA,IAAA1sM,EAAA0sM,cACA1sM,EAAAuwM,cAAA3sL,YAAA,WACA5jB,EAAA0sM,cAAA,EACA1sM,EAAAwwM,kBAAAV,EACA,GACA,MAEAhsL,aAAA9jB,EAAAuwM,eACAvwM,EAAA0sM,cAAA,EACA1sM,EAAAywM,kBAAAX,GAEA,IACAn1M,GAAA,qBAAA4c,GACAA,EAAAisB,gBACA,IACAxjC,EAAA+J,eAAA,cACAimM,EAAAr1M,GAAA,uBACAqF,EAAAywM,kBAAAX,EACA,IACA9vM,EAAA+J,eAAA,YACAimM,EAAAr1M,GAAA,oBACAqF,EAAAwwM,kBAAAV,EACA,IAGA,IAAAY,EAAAT,EAAA,kBASA,OARAhxM,KAAA2tM,YAAAoD,EAAAU,GAEAV,EAAAr1M,GAAA,WAAAsE,KAAA0xM,kBAAAnvM,KAAAvC,KAAA+wM,IACAA,EAAAr1M,GAAA,aAAAsE,KAAA2xM,oBAAApvM,KAAAvC,KAAA+wM,EAAAF,EAAAY,IAEAzxM,KAAA4xM,WAAAf,EAAA7wM,KAAA1E,KAAA+O,YACA0mM,EAAA7lM,QAAA,YAEA6lM,CACA,EAEArE,EAAA3sM,UAAAwxM,kBAAA,SAAAn1J,GACAp8C,KAAAuwM,kBAAAn0J,EAAAp8C,KAAA1E,KAAA+O,WACArK,KAAA4K,sBAAA,UAAAwxC,EAAAp8C,KAAA1E,KAAA+O,UACA,EAEAqiM,EAAA3sM,UAAAyxM,kBAAA,SAAAp1J,GACAp8C,KAAAuwM,kBAAAn0J,EAAAp8C,KAAA1E,KAAA+O,WACArK,KAAA4K,sBAAA,aAAAwxC,EAAAp8C,KAAA1E,KAAA+O,UACA,EAEAqiM,EAAA3sM,UAAA6mC,SAAA,SAAA8M,GACA1zC,KAAA6xM,oBACA7xM,KAAAuwM,kBAAA78J,EAAAlnC,MACA,EAEAkgM,EAAA3sM,UAAAwM,SAAA,WACA,OAAAvM,KAAAqG,yBAAArG,KAAA+tM,aAAA50M,EAAAohB,MAAAva,KAAA+tM,aACA,EAEArB,EAAA3sM,UAAAsG,uBAAA,WACA,mBAAArG,KAAA1E,KAAAi1K,SACA,EAEAm8B,EAAA3sM,UAAAo3C,WAAA,WACAn3C,KAAA6xM,mBACA,EAEAnF,EAAA3sM,UAAA8xM,kBAAA,WACA7xM,KAAA4sM,WAAAtrM,KAAA,SAEAohC,SAAA,gBAAAtgC,MAAA,SAAAZ,EAAAswM,GACA14M,EAAA04M,GAAA5mM,QAAA,aACA,IAEAlL,KAAA+tM,aAAA,EACA,EAEArB,EAAA3sM,UAAAgyM,oBAAA,SAAAn3M,GACA,QAAAnC,EAAA,EAAAA,EAAAuH,KAAAm4B,QAAAz/B,OAAAD,IAAA,CACA,IAAAiuB,EAAA1mB,KAAAm4B,QAAA1/B,GAEA,UAAAiuB,KAAA1mB,KAAA1E,KAAA+O,YAAAzP,EACA,OAAAnC,CACA,CAGA,EAEAi0M,EAAA3sM,UAAA6xM,WAAA,SAAAI,GACA,QAAA74M,EAAAmI,KAAAtB,KAAA+tM,cAAA,SAAAkE,GACA,OAAAA,IAAAD,CACA,GACA,EAEAtF,EAAA3sM,UAAAwwM,kBAAA,SAAA2B,GACA,SAAAA,EAAA,CAEA,IAAAzB,EAAAzwM,KAAA4sM,WAAAtrM,KAAA,SAEAlI,EAAA8qB,QAAAguL,KACAA,EAAA,CAAAA,IAEA,WAAAlyM,KAAA1E,KAAAi1K,WACAvwK,KAAA6xM,oBAEA,IAAA9wM,EAAAf,KACA7G,EAAAiJ,KAAA8vM,GAAA,SAAAF,GACA,IAAAG,EAAApxM,EAAAgxM,oBAAAC,GAEA,QAAA5rM,IAAA+rM,EAAA,CACA,IAAAn2J,EAAAy0J,EAAA/tK,WAAAqY,GAAAo3J,GAEApxM,EAAA6wM,WAAAI,IACAjxM,EAAAgtM,aAAA50M,EAAAgsB,OAAApkB,EAAAgtM,cAAA,SAAAkE,GACA,OAAAA,IAAAD,CACA,IACAh2J,EAAA9wC,QAAA,gBAEAnK,EAAAgtM,aAAAltM,KAAAmxM,GACAh2J,EAAA9wC,QAAA,YAEA,MAEAnK,EAAAgtM,aAAAltM,KAAAmxM,EAEA,GA9BA,CA+BA,EAEAtF,EAAA3sM,UAAA4xM,oBAAA,SAAA31J,EAAAo2J,EAAAX,GACAzxM,KAAA2tM,YAAA3xJ,EAAAy1J,GAEAz1J,EAAApzC,YAAA,eAEAzP,EAAAiJ,KAAApC,KAAA1E,KAAA0jL,SAAA,SAAAG,EAAAswB,GACA,oBAAAtwB,EAAAz5K,KAAA,CACA,IAAAo9C,EAAA,WAAAq8H,EAAAkzB,gBAAAlzB,EAAAmtB,aAAA,GACAF,EAAApwJ,EAAAtZ,WAAAqY,GAAA00J,GAAA/sK,WAAAqY,GAAA,GAAArY,WAAAqY,GAAA,GAAA+H,EACA,CACA,IAEA3pD,EAAAiJ,KAAApC,KAAA1E,KAAA0jL,SAAA,SAAAG,EAAAswB,GAEAtwB,EAAA5wG,iBACAvyB,EAAAtZ,WAAAqY,GAAA00J,GAAA7pM,IAAA,mBAAAwsM,EAAAjzB,EAAA5wG,iBACA,GACA,EAEAm+H,EAAA3sM,UAAA2xM,kBAAA,SAAA11J,GACAh8C,KAAA2tM,YAAA3xJ,EAAA,eAEAA,EAAAr2C,SAAA,eAEAxM,EAAAiJ,KAAApC,KAAA1E,KAAA0jL,SAAA,SAAAG,EAAAswB,GACA,iBAAAtwB,EAAAz5K,OACA,WAAAy5K,EAAAkzB,gBACAlzB,EAAAmzB,2BACAlG,EAAApwJ,EAAAtZ,WAAAqY,GAAA00J,GAAA/sK,WAAAqY,GAAA,GAAArY,WAAAqY,GAAA,GAAAokI,EAAAmzB,2BAEAlG,EAAApwJ,EAAAtZ,WAAAqY,GAAA00J,GAAA/sK,WAAAqY,GAAA,GAAArY,WAAAqY,GAAA,GAAAokI,EAAAmtB,cAGA,GACA,EAEAI,EAAA3sM,UAAA+sM,kBAAA,SAAAvnM,EAAAusC,EAAAygK,GACAA,EACA9zK,EAAAK,aAAA9+B,KAAA,KAAAuF,EAAAvF,KAAA1E,KAAA+jC,OAAAyS,EAAAygK,GAEA9zK,EAAAK,aAAA9+B,KAAA,KAAAuF,EAAAvF,KAAA1E,KAAA+jC,OAAAyS,EACA,EAEA46J,EAAA3sM,UAAA4tM,YAAA,SAAApoM,EAAAusC,EAAAygK,GACA,MAAAA,EACA9zK,EAAAK,aAAA9+B,KAAA,KAAAuF,EAAAvF,KAAA1E,KAAA+jC,OAAAyS,GAEArT,EAAAK,aAAA9+B,KAAA,KAAAuF,EAAAvF,KAAA1E,KAAA+jC,OAAAyS,EAAAygK,EACA,EAEA7F,EAAA3sM,UAAAyyM,iBAAA,SAAA11K,GACA,OAAAA,EAEAA,EAAAp2B,IAAA,MAAAo2B,EAAAn2B,MAAA,MAAAm2B,EAAAl2B,OAAA,MAAAk2B,EAAAr2B,KAAA,KADA,EAEA,EAEAimM,EAAA3sM,UAAA+tM,mBAAA,WACA9tM,KAAAktM,sBAAAltM,KAAA+sM,gBAAAj/L,WACA,EAEA4+L,EAAA3sM,UAAAuwM,sBAAA,SAAApD,GACAA,QACAltM,KAAA+sM,gBAAAj/L,UAAAo/L,GAEAltM,KAAA+sM,gBAAAj/L,UAAA9N,KAAAktM,sBAEA,EAEAR,EAAA3sM,UAAA6vM,aAAA,SAAAzwB,GACA,GAAAA,EAAA,CACA,IAAAuuB,EAAA,IAAA1tM,KAAAwtM,eAAA90M,QACAsH,KAAAwtM,eAAA,GAAA94C,SAAAyqB,EAAAzqB,SACA10J,KAAAwtM,eAAA,GAAAE,WAEA1tM,KAAAwtM,eAAA,EAAA94C,OAAAyqB,EAAAzqB,OAAAg5C,eACA1tM,KAAAyyM,eANA,CAOA,EAEA/F,EAAA3sM,UAAA0yM,cAAA,WACA,IAAA1xM,EAAAf,KACAA,KAAA2C,OAAAm1C,gBAAA7M,SACAjrC,KAAA1E,KAAAo8C,YACA,SAAAp8C,GACAyF,EAAAqsM,YAAA,EACArsM,EAAAmsM,sBAAA,EACAnsM,EAAAosM,cAAApsM,EAAA63C,cAAAt9C,EAAA68B,QAAAz/B,OACAqI,EAAA2yC,OAAAp4C,EAAAyF,GACAA,EAAAssM,aAAA/xM,CACA,GACA0E,KAAAiuM,mCAAA1rM,KAAAvC,MACA,EAEA0sM,EAAA3sM,UAAA2vM,2BAAA,SAAAvwB,EAAAswB,GACA,IAAAiD,EAAAt5M,EAAA,SACAwM,IAAA,CACA07B,UAAA69I,EAAAwzB,oBACAxkM,OAAAnO,KAAA1E,KAAAywM,aAAA,OAGA,MAAA5sB,EAAAyzB,YACAF,EAAA9sM,IAAA,mBAAAu5K,EAAA4vB,eAAA5vB,EAAA6vB,mBAAA,KAAA7vB,EAAA8vB,uBAAA,KAEA,IAAAltK,EAAA3oC,EAAA,WAEA,GAAA4G,KAAA1E,KAAAu3M,sBAAA1zB,EAAAwwB,sBAAA,CACA,IAAAmD,EAAA15M,EAAA,kCACAyyC,OAAAzyC,EAAA,qCAAAyhC,KAAA,MACAgR,OAAAzyC,EAAA,sCAAAyhC,KAAA,MAEA76B,KAAAwtM,eAAA90M,OAAA,GAAAsH,KAAAwtM,eAAA,GAAA94C,SAAAyqB,EAAAzqB,QACAo+C,EAAAntM,SAAA3F,KAAAwtM,eAAA,GAAAE,WAAA,0BAEA3rK,EAAA8J,OAAAinK,EACA,CAEA,IAAAC,EAAA35M,EAAA,+BAoBA,OAnBA+lL,EAAA6zB,6BAAA7zB,EAAA8zB,wBACAF,EACAntM,IAAA,CACAk3B,QAAA98B,KAAAwyM,iBAAArzB,EAAA8zB,0BAIAlxK,EAAA8J,OAAAknK,EACAlnK,OACA7rC,KAAAsuM,oBAAAmB,KAGAtwB,EAAA8sB,eACAlqK,EAAAn8B,IAAA,CACA6lC,WAAA,SACA8iC,gBAAA,qBAIAmkI,EACA7mK,OAAAzyC,EAAA,sCACAyyC,OAAA9J,GACA,EAEA2qK,EAAA3sM,UAAAouM,aAAA,SAAA7yM,GACA,OAAAA,EAAA68B,QAAAz/B,OACA,OAAAU,EAAA,UAEA,IAAA2H,EAAAf,KACAg/K,EAAAh/K,KAAA1E,KAAA0jL,QAEAk0B,EAAA95M,EAAA,6CACAwM,IAAA,qBACAD,SAAA,cAEA8qM,EAAAr3M,EAAA,WACAuM,SAAA,kBACA8qM,EAAA5pM,SAAAqsM,GACAlzM,KAAAmzM,eAAA1C,EAEA,IAAAr0J,EAAA9gD,EAAA68B,QAAA,GAEA6jB,EAAA5iD,EAAA,SAcA,OAbA4iD,EAAAn1C,SAAA4pM,GAEAt3M,EAAAiJ,KAAA48K,GAAA,SAAAG,GACA,GAAA7jL,EAAA68B,QAAAz/B,OAAA,GACA,IAAAu4M,EAAAlwM,EAAAmwM,wBAAA51M,EAAAq9B,QAAAyjB,EAAA+iI,EAAAnjI,EAAAmjI,EAAAi0B,qBAAA,GACAnC,EAAArrM,IAAA,CACA,uBACAk3B,QAAAqiJ,EAAAk0B,4BAAAtyM,EAAAyxM,iBAAArzB,EAAAm0B,wBAAA,KAEAt3J,EAAAnQ,OAAAolK,EACA,CACA,IAEAiC,CACA,EAEAxG,EAAA3sM,UAAAmxM,wBAAA,SAAAv4K,EAAA46K,EAAAp0B,EAAAnjI,EAAAm1J,EAAAqC,GACA,IAAAzyM,EAAAf,KAEAyzM,EAAAr6M,EAAA,SACAwM,IAAA,CACAoxC,SAAA,SACAtB,WAAA,gBAAAypI,EAAAu0B,cAAA,oBACAh3K,cAAAyiJ,EAAAziJ,eAAA,QAGA,gBAAAyiJ,EAAAu0B,eACAD,EAAAnyM,KAAA,OAAAsE,IAAA,CACAoxC,SAAA,SACAtB,WAAA,SACAi+J,aAAA,aAIA,IAAAC,EAAA,IAAA1zM,OAAAyP,KAAAwvK,EAAAz7K,UAAAhL,OACAm7M,EAAA,IAAA3zM,OAAAyP,KAAA3P,KAAA1E,KAAAoI,UAAAhL,OAEAk7M,GAAAC,GACAJ,EAAA9tM,SAAA,YAGA,IAAAo8B,EAAA3oC,EAAA,UAAAyN,SAAA4sM,IAEA1xK,EAAAn8B,IAAA,CACA07B,UAAA6vK,EACAr0K,QAAA98B,KAAAwyM,iBAAArzB,EAAA20B,iBAGA,MAAAP,EAAAp0B,EAAA40B,kBACAvnM,EAAA+mM,EAAAp0B,EAAA40B,gBAEAN,EAAA9tM,SAAA,mBAGA,mBAAAw5K,EAAAu0B,gBAAA,IAAAv0B,EAAAz5K,KAAA5M,QAAA,UACA26M,EAAA7tM,IAAA,SAAA5F,KAAA1E,KAAA0wM,UAAA,MAEA7sB,EAAAyzB,YACAa,EAAA7tM,IAAA,mBAAAu5K,EAAA4vB,eAAA5vB,EAAA6vB,mBAAA,KAAA7vB,EAAA8vB,uBAAA,KAEA9vB,EAAA5wG,iBACAklI,EAAA7tM,IAAA,mBAAA2tM,EAAAp0B,EAAA5wG,kBAGA4wG,EAAA9rI,QACA8rI,EAAA9rI,QAAAJ,SAAAF,EAAAS,WAAA2rI,EAAA9rI,QAAAE,iBACAxR,EAAAkG,KAAA,QAAApD,EAAAgO,MAAAssI,EAAA9rI,QAAAE,mBACA4rI,EAAA9rI,QAAAJ,SAAAF,EAAAlgC,OACAkvB,EAAAkG,KAAA,QAAApD,EAAAgO,MAAA0gK,EAAAp0B,EAAA9rI,QAAAO,oBAEA7yC,EAAAzF,KAAA+3C,SACAtR,EAAAkG,KAAA,QAAApD,EAAAgO,MAAA0gK,EAAAxyM,EAAAzF,KAAA+3C,WAEA,IAAA2gK,EAAA70B,EAAAz5K,KACAgvJ,EAAAyqB,EAAAzqB,OAKA,OAHA3zJ,EAAAzF,KAAAg0M,eAAAkE,IACAQ,EAAA70B,EAAA80B,YAEAD,GACA,YACA,IAAAzuM,EACA,OAAA45K,EAAA+0B,WACA,WACA3uM,EAAAnM,EAAA,wBACA,MACA,eACAmM,EAAAnM,EAAA,4BACA,MACA,QACAmM,EAAAnM,EAAA,UAGAmM,EAAAK,IAAA,QAAAu5K,EAAA5tB,WAAA,MAAA3rJ,IAAA,SAAAu5K,EAAA3tB,YAAA,MACAjsJ,EAAA0iC,KAAA,qBACA1iC,EAAA7J,GAAA,kBAAAgF,KAAA4qD,iBAAA,IACAvpB,EAAA8J,OAAAtmC,GACA,MACA,kBACAiuM,IAAA9+C,EAAAyqB,EAAAg1B,mBAEAh1B,EAAAz7K,UAAAy7K,EAAAz7K,SAAA,SAAAy7K,EAAAz7K,SAAA,QAAAC,SACAo+B,EAAArmC,GAAA,oBAGA,OAFAqF,EAAA+sM,qBACA/sM,EAAA6B,aAAAu8K,EAAAz7K,SAAA,QAAAE,gBAAA2vM,EAAAxyM,EAAAzF,KAAA+O,UAAA03B,IACA,CACA,IAEA,OAAAA,EAAAkG,KAAA,UAAAlG,EAAAkG,KAAA,QAAApD,EAAAgO,MAAA6hH,IAEA,IAAA0/C,EAAAh7M,EAAA,WAAAyrC,OAAAiO,SAAA4hH,IACA10J,KAAAq0M,0BAAAD,EAAAj1B,GACAp9I,EAAA8J,OAAAuoK,GACA,MACA,mBACAZ,IAAA9+C,EAAAyqB,EAAAm1B,oBAEA,IAAAC,EAAA57K,EAAA+7H,GACAloJ,EAAAzL,EAAAstM,WAAAl1M,EAAAL,QAAAiI,EAAAzF,KAAA0jL,QAAAG,IAAAhjI,yBAAAo4J,EAAAhB,EAAA7+C,IAcA,GAbAyqB,EAAAz7K,UAAAy7K,EAAAz7K,SAAA,SAAAy7K,EAAAz7K,SAAA,QAAAC,SACAo+B,EAAArmC,GAAA,oBAGA,OAFAqF,EAAA+sM,qBACA/sM,EAAA6B,aAAAu8K,EAAAz7K,SAAA,QAAAE,gBAAA2vM,EAAAxyM,EAAAzF,KAAA+O,UAAA03B,IACA,CACA,IAGAo9I,EAAAq1B,wBACAf,EAAA9tM,SAAA,6BAEA,MAAAo8B,EAAAkG,KAAA,UAAAlG,EAAAkG,KAAA,QAAApD,EAAAgO,MAAArmC,IAEAA,EAAA,CACA2yK,EAAAs1B,aACAjoM,GAAA2yK,EAAAs1B,YAEAL,EAAAh7M,EAAA,WAAAyrC,OAAAiO,SAAAtmC,IACAxM,KAAAq0M,0BAAAD,EAAAj1B,GACAp9I,EAAA8J,OAAAuoK,EACA,CAEA,MACA,mBAEAryK,EACAn8B,IAAA,UAAA5F,KAAAwyM,iBAAArzB,EAAA20B,gBAEA,IAAAzyJ,EAAArhD,KAAA00M,aAAAv1B,EAAA,IACAn/K,KAAA20M,kBAAAtzJ,EAAAtf,EAAAo9I,GAEA,WAAAA,EAAAkzB,iBACAjG,EAAA/qJ,EAAA89H,EAAAmtB,cAEAntB,EAAAmzB,4BACAt2J,EAAAtgD,GAAA,wBACA0wM,EAAA/qJ,EAAA89H,EAAAmzB,0BACA,IAEAt2J,EAAAtgD,GAAA,uBACAqF,EAAA6wM,WAAA2B,EAAAxyM,EAAAzF,KAAA+O,YAEA+hM,EAAA/qJ,EAAA89H,EAAAmtB,aACA,OAIAtwJ,EAAAtgD,GAAA,uBACA,WAAAqF,EAAAzF,KAAAi1K,WAAAxvK,EAAA6wM,WAAA2B,EAAAxyM,EAAAzF,KAAA+O,YACA+hM,EAAA/qJ,EAAA,GACA,IAEArF,EAAAtgD,GAAA,wBACA0wM,EAAA/qJ,EAAA89H,EAAAmtB,aACA,KAGAntB,EAAAz7K,UAAAy7K,EAAAz7K,SAAA,SAAAy7K,EAAAz7K,SAAA,QAAAC,SACA09C,EAAA3lD,GAAA,oBAGA,OAFAqF,EAAA+sM,qBACA/sM,EAAA6B,aAAAu8K,EAAAz7K,SAAA,QAAAE,gBAAA2vM,EAAAxyM,EAAAzF,KAAA+O,UAAAg3C,IACA,CACA,IAGA,MACA,oBAIA,GAHAtf,EAAAn8B,IAAA,UAAA5F,KAAAwyM,iBAAArzB,EAAA20B,gBACAtnM,EAAA+mM,EAAAp0B,EAAAmtB,cAEA,CACA,iBAAA9/L,IACAA,IAAAya,KAEA,IAAA67B,EAAA8oJ,EAAAZ,QAAA,CACAC,UAAAz+L,EACA2+L,cAAA,EACAC,aAAA,gBACAC,kBAAA,MACA/mM,KAAA,CACAF,EAAA+6K,EAAAy1B,WACAvwM,EAAA86K,EAAA01B,eAIAxzJ,EAAArhD,KAAA00M,aAAAv1B,EAAAr8H,GACA9iD,KAAA20M,kBAAAtzJ,EAAAtf,EAAAo9I,GAEAA,EAAAz7K,UAAAy7K,EAAAz7K,SAAA,SAAAy7K,EAAAz7K,SAAA,QAAAC,SACA09C,EAAA3lD,GAAA,oBAGA,OAFAqF,EAAA+sM,qBACA/sM,EAAA6B,aAAAu8K,EAAAz7K,SAAA,QAAAE,gBAAA2vM,EAAAxyM,EAAAzF,KAAA+O,UAAA03B,IACA,CACA,GAEA,CAEA,MACA,wBACAv1B,EAAA+mM,EAAA7+C,GAEArzG,EAAArhD,KAAA00M,aAAAv1B,EAAAr7K,EAAA3F,iBAAAqO,EAAA2yK,EAAA21B,iBAAA31B,EAAA41B,oBACA/0M,KAAA20M,kBAAAtzJ,EAAAtf,EAAAo9I,GAEA99H,EAAA3lD,GAAA,oBAEA,OADAqF,EAAAi0M,uBAAA71B,EAAAo0B,EAAAlyJ,IACA,CACA,IAIA,OAAAoyJ,CACA,EAEA/G,EAAA3sM,UAAA40M,kBAAA,SAAAtzJ,EAAAtf,EAAAo9I,GACAp9I,EACAn8B,IAAA,CACAiH,QAAA,OACAo1B,eAAAsqK,EAAAptB,EAAA81B,mBAEAppK,OAAAwV,EACA,EAEAqrJ,EAAA3sM,UAAA20M,aAAA,SAAAv1B,EAAAr8H,GACA,IAAAzB,EAAAjoD,EAAA,WACAwM,IAAA,CACAoH,MAAAmyK,EAAAy1B,WAAA,KACAzmM,OAAAgxK,EAAA01B,YAAA,KACA,0BAAA/xJ,EAAA,MA8BA,MA3BA,YAAAq8H,EAAA+1B,qBACA7zJ,EACAz7C,IAAA,CACA,kBAAAu5K,EAAAy1B,WAAA,MAAAz1B,EAAA01B,YAAA,KACA,mCAEA,kBAAA11B,EAAA+1B,qBACA7zJ,EACAz7C,IAAA,CACA,0BACA,iCAEA,2BAAAu5K,EAAA+1B,sBACA7zJ,EACAz7C,IAAA,CACA,4BACA,iCAIAy7C,EACAz7C,IAAA,CACA,gBAAAu5K,EAAAg2B,eAAA,KACAtoM,QAAA,eACA,kCAGAw0C,CACA,EAEAqrJ,EAAA3sM,UAAAs0M,0BAAA,SAAA9uM,EAAA45K,GACA55K,EAAAK,IAAA,CACA,cAAAu5K,EAAAi2B,SAAA,gBACA,kBAAAj2B,EAAAk2B,cAAA,eACA,aAAAl2B,EAAAm2B,WAAA,aAEA,EAEA5I,EAAA3sM,UAAAi1M,uBAAA,SAAA71B,EAAAo0B,EAAAgC,GACA,IAAAx0M,EAAAf,KAMA,GALAm/K,EAAAz7K,SAAA,SAAAy7K,EAAAz7K,SAAA,QAAAC,UACA5C,EAAA+sM,qBACA/sM,EAAA6B,aAAAu8K,EAAAz7K,SAAA,QAAAE,gBAAA2vM,EAAAxyM,EAAAzF,KAAA+O,UAAAkrM,IAGAp2B,EAAAq2B,uBAAA,CACA,IAAAriC,EAAAogC,EAAAp0B,EAAAzqB,SAEAye,GAAA,eAAAgM,EAAAs2B,kBAAA,aAAAt2B,EAAAs2B,iBAOAtiC,GAAA,cAAAgM,EAAAs2B,kBAAA,aAAAt2B,EAAAs2B,mBACAt2B,EAAAz7K,SAAA,SAAAy7K,EAAAz7K,SAAA,QAAAC,UACA5C,EAAA+sM,qBACA/sM,EAAA6B,aAAAu8K,EAAAz7K,SAAA,QAAAE,gBAAA2vM,EAAAxyM,EAAAzF,KAAA+O,YAEAkpM,EAAAp0B,EAAAzqB,SAAA,EACA3zJ,EAAAwvM,kBAAAgD,EAAAv9K,MAZAmpJ,EAAAz7K,SAAA,WAAAy7K,EAAAz7K,SAAA,UAAAC,UACA5C,EAAA+sM,qBACA/sM,EAAA6B,aAAAu8K,EAAAz7K,SAAA,UAAAE,gBAAA2vM,EAAAxyM,EAAAzF,KAAA+O,YAEAkpM,EAAAp0B,EAAAzqB,SAAA,EACA3zJ,EAAAwvM,kBAAAgD,EAAAv9K,KASAu/K,EAAA3vM,IAAA,0BAAA9B,EAAA3F,iBAAAg1K,EAAAgM,EAAA41B,kBAAA51B,EAAA21B,kBAAA,IACA,CACA,EAEApI,EAAA3sM,UAAA21M,eAAA,WAKA,OAJAv8M,EAAA4J,OAAA/C,KAAA4sM,WAAAtrM,KAAA,SAAAohC,YAAA,SAAA0uC,EAAAiY,GACA,OAAAjY,EAAAh4E,EAAAiwF,GAAAxxE,aACA,MAEA7X,KAAA+sM,gBAAAl1L,aACA,EAEA60L,EAAA3sM,UAAA+uM,sBAAA,WACA,IAAA9vB,EAAAh/K,KAAA1E,KAAA0jL,QACA,MAAAA,IACAA,EAAA,IAEA7lL,EAAAiJ,KAAAjJ,EAAA4gB,MAAAilK,EAAA,CAAA+vB,eAAA,wBAAA5vB,GACAA,EAAA4vB,eAAA,WACA,IAEA,IAAA4G,EAAA31M,KAAA01M,iBAAA11M,KAAAqjD,SAAA/hD,KAAA,YAAAsW,aAAA5X,KAAAqjD,SAAAzrC,aAEAg+L,EAAAz8M,EAAA+I,MAAA88K,GACAjlK,MAAA,CAAAg1L,eAAA,WACAhsM,QAAA,SAAA42B,EAAAwlJ,GAEA,OADAA,EAAA6vB,mBAAA7vB,EAAAyzB,WACAj5K,EAAAwlJ,EAAAyzB,UACA,MACApmM,QAEA,MAAAopM,MAAA,GAEA,IACAC,EAAA,IAAAF,GADAA,EAAAC,GAGAE,EAAA38M,EAAA+I,MAAA88K,GACAjlK,MAAA,CAAAg1L,eAAA,cACAhsM,QAAA,SAAA42B,EAAAwlJ,GACA,OAAAxlJ,EAAAwlJ,EAAAyzB,UACA,MACApmM,QAEArT,EAAAiJ,KAAAjJ,EAAA4gB,MAAAilK,EAAA,CAAA+vB,eAAA,wBAAA5vB,GAEAA,EAAA8vB,uBAAA4G,EAAA,EAAA12B,EAAAyzB,UACA,IACA5yM,KAAA4sM,WAAAhnM,IAAA,oBACA,EAGA8mM,EAAA3sM,UAAAg2M,SAAA,SAAAC,GACAh2M,KAAA4uM,gBAAAoH,GAAA,EACA,EAEAtJ,EAAA3sM,UAAA6uM,gBAAA,SAAAoH,EAAAC,GACA,IAAAj2M,KAAAgoF,QAAA,CAGAhoF,KAAAgoF,SAAA,EAEA,IAAAjnF,EAAAf,KACAA,KAAA2C,OAAAm1C,gBAAAzM,mBACArrC,KAAA1E,KAAAo8C,YACA,SAAAp8C,GACAyF,EAAA23C,KAAAs9J,EACAj1M,EAAAqsM,YAAA4I,EAAA,EACAj1M,EAAA63B,aAAAt9B,EAAAs9B,aACA73B,EAAAosM,cAAApsM,EAAA63C,cAAAt9C,EAAA68B,QAAAz/B,OACAqI,EAAAinF,SAAA,EAEAjnF,EAAAwuM,YAAAj0M,EAAA26M,GACAl1M,EAAAitM,kBAAA1yM,EAAAs9B,aAAA73B,EAAA23C,KAAA33C,EAAA63C,eACA73C,EAAAisM,sBACA,IACA,SAAAvjK,GACAA,EAAAiP,KAAAs9J,EACAvsK,EAAAkP,SAAA53C,EAAA63C,cACAnP,EAAA+O,uBAAAz3C,EAAAzF,KAAAm7C,eACAhN,EAAA+jK,eAAAzsM,EAAAysM,cACA,IACA,WACAzsM,EAAAinF,SAAA,CACA,GA1BA,CA2BA,EAEA0kH,EAAA3sM,UAAA64C,YAAA,WACA,OAAA54C,KAAA1E,KAAAq9C,UAAA5c,EAAAzgC,KAAAq9C,QACA,EAEA+zJ,CACA,IACAj1M,OCplCA,mCACA,SACA,aACA,UACA,YACA,WACA,UACA,eACA,gBACA,KACA,4BACA,oBACA,iBACA,SAAA2B,EAAAD,EAAAD,EAAAkvL,EAAA3pJ,EAAA9tB,EAAAI,EAAAmqB,EAAAp3B,EAAAoyM,EAAAC,EAAAthK,GACA,aAEA,IAAAuhK,EAAA,IAAAzlM,EAAA,8BAEA,SAAA0lM,EAAAz0M,EAAA02C,GACAt4C,KAAA4B,OACA5B,KAAAs4C,YAEAt4C,KAAAs2M,sBAAA,KAEAt2M,KAAAu2M,WAAAn9M,EAAA,yBACA6uC,KAAA,KAAArmC,EAAAuF,SAAAu9B,WAAA,IAAA9iC,EAAAtG,KAAAV,IACA+K,SAAA,eACAC,IAAA,CACAoH,MAAA,OACAmB,OAAA,OACAtB,QAAA,iBAEAo7B,KAAA,WAAArmC,EAAAtG,KAAAk8C,UACAvP,KAAA,cAAArmC,EAAAtG,KAAAw7C,WACAnxC,SAAA,mBACAjK,GAAA,OAAAsE,KAAAw2M,gBAAAj0M,KAAAvC,OACAtE,GAAA,QAAAsE,KAAAy2M,gBAAAl0M,KAAAvC,OACAtE,GAAA,QAAAsE,KAAA02M,uBAAAn0M,KAAAvC,OACA6G,SAAAjF,EAAA2D,UAEA3D,EAAAtG,KAAAq7M,iBACA32M,KAAA42M,WAAAx9M,EAAA,yBACAwM,IAAA,CACAiH,QAAA,eACA1I,SAAA,WACAwC,MAAA,EACAC,OAAA,EACAoG,MAAA,QACAmB,OAAA,SAEA85B,KAAA,eACAphC,SAAAjF,EAAA2D,WAGAvF,KAAA62M,UAAAz9M,EAAA,uEACAwM,IAAA,CACAisE,mBAAA,SACAI,eAAA,UACAH,iBAAA,YACAnrE,MAAA3G,KAAA4B,KAAAtG,KAAAq7M,eAAA,KACAjwM,IAAA,MACAmG,QAAA,eACAG,MAAA,OACAmB,OAAA,SAGAnO,KAAA82M,YAAA19M,EAAA,UACAwM,IAAA,CACAzB,SAAA,WACA63B,OAAA,OACAc,QAAA,EACA+0C,mBAAA,SACAI,eAAA,UACAH,iBAAA,YACAnrE,MAAA,EACAD,IAAA,MACAmG,QAAA,eACAG,MAAA,OACAmB,OAAA,SAIAvM,EAAAtG,KAAA2mD,UACAjiD,KAAAu2M,WAAA7/L,KAAA,YAEA+nB,EAAAK,aAAAl9B,EAAA,KAAA5B,KAAAu2M,WACA,CAEAF,EAAAt2M,UAAAsjB,WAAA,WACArjB,KAAA+2M,kBAAA/2M,KAAAg3M,+BAAAh3M,KAAAs4C,UAAA3zC,WAAAyxM,EAAAr+M,MACAiI,KAAAi3M,kBAAAj3M,KAAAg3M,+BAAAh3M,KAAAs4C,UAAA3zC,WAAAyxM,EAAAc,MAEA,QAAAl3M,KAAA4B,KAAAtG,KAAA8Z,YACApV,KAAA+2M,kBAAA/2M,KAAA+2M,kBACAl3L,QAAA,cAEA,UAAA7f,KAAA4B,KAAAtG,KAAA8Z,YACApV,KAAA+2M,kBAAA/2M,KAAA+2M,kBACAl3L,QAAA,gBAIA7f,KAAA4B,KAAAtG,KAAA67M,gBACAn3M,KAAAo3M,mBAEAp3M,KAAA4B,KAAAtG,KAAAq7M,gBACA32M,KAAAq3M,mBAEAr3M,KAAA4B,KAAAtG,KAAAg8M,aACAt3M,KAAAu3M,uBACA,EAEAlB,EAAAt2M,UAAA02M,gBAAA,WACA,OAAAz2M,KAAAs2M,uBACAzxL,aAAA7kB,KAAAs2M,sBACA,EAEA,IAAAkB,EAAA,CACAC,GAAA,IACAC,KAAA,IACA7rL,EAAA,IACA8rL,GAAA,IACAC,IAAA,IACAC,KAAA,IACAx/L,EAAA,IACAy/L,GAAA,IACAC,IAAA,IACAC,KAAA,KAGAC,EAAA,CACAhkJ,EAAA,IACAt/B,EAAA,IACAujL,GAAA,IACAC,GAAA,IACAC,GAAA,IACAC,GAAA,IACA96F,GAAA,IACA+6F,IAAA,KAucA,OAncAjC,EAAAt2M,UAAAi3M,+BAAA,SAAAuB,EAAAC,GACA,IAAAC,EACAC,EAAAF,IAAApC,EAAAc,KAAAe,EAAAT,EAEA,OAAAe,EACA14L,QAAA,oBAAA84L,GACA,IAAAC,EAAApB,EAAAmB,GAAAvC,EAAAr+M,KACAkgN,EAAAU,GAAAvC,EAAAc,UACA9wM,EAEAsgB,GAAAkyL,GAAAH,KAAAD,EACAE,EAAAC,MAAA,GAGA,OADAF,EAAAG,GAAAH,EACA/xL,CACA,GACA,EAGA2vL,EAAAt2M,UAAAq3M,iBAAA,WACA,IAAAr2M,EAAAf,KAIA,GAFAA,KAAA64M,mBAEA74M,KAAA4B,KAAAtG,KAAA2mD,SACAjiD,KAAAu2M,WACA7/L,KAAA,eAEA1W,KAAA62M,UACAjxM,IAAA,CACAs8C,OAAA,gBAEA,CACA,IAAAnqC,EAAAmjB,EAAAllB,gBACA8iM,EAAA/gM,IAAAhH,EAAAU,YAAA2E,OAAA2B,IAAAhH,EAAAU,YAAA4E,QAAAxc,OAAAud,WAAA,2BAAAC,QA4KA,GA1KArX,KAAAu2M,WACAwC,iBAAA,CACAhqG,KAAA/uG,KAAAs4C,UAAAqgI,QAAAloE,SAAA1B,KAAAshC,MACA2oE,UAAAh5M,KAAAs4C,UAAAqgI,QAAAloE,SAAA1B,KAAAkqG,UACApqG,OAAA7uG,KAAAs4C,UAAAqgI,QAAAloE,SAAA5B,OAAAwhC,MACA6oE,YAAAl5M,KAAAs4C,UAAAqgI,QAAAloE,SAAA5B,OAAAoqG,UACAE,WAAA,EACAx5L,OAAA3f,KAAA+2M,kBACAqC,iBAAAN,EACAO,UAAA,EACAC,kBAAAt5M,KAAA4B,KAAAtG,KAAAi+M,WACAC,gBAAAx5M,KAAA4B,KAAAtG,KAAAm+M,gBACAC,gBAAA15M,KAAA4B,KAAAtG,KAAAq+M,WACA1uD,SAAA,SAAA2uD,EAAAC,EAAAC,GACA,WAAA/4M,EAAAa,KAAAtG,KAAA8Z,UAAA,CACA,IAAAqxF,EAAA1lG,EAAAa,KAAAtG,KAAAy+M,WACAvzG,EAAAzlG,EAAAa,KAAAtG,KAAA0+M,aAEA,cAAAj5M,EAAAa,KAAAtG,KAAA2+M,oBAAAl5M,EAAAa,KAAAtG,KAAA4+M,iBACA1zG,EAAAzlG,EAAAa,KAAAe,OAAAm2B,WAAAgQ,OAAAv8B,SAAAxL,EAAAa,KAAAtG,KAAA4+M,iBAGA,cAAAn5M,EAAAa,KAAAtG,KAAA6+M,kBAAAp5M,EAAAa,KAAAtG,KAAA8+M,aACA3zG,EAAA1lG,EAAAa,KAAAe,OAAAm2B,WAAAgQ,OAAAv8B,SAAAxL,EAAAa,KAAAtG,KAAA8+M,cACA,YAAAr5M,EAAAa,KAAAtG,KAAA6+M,mBACA1zG,EAAA,IAAA1uG,KAAA+hN,EAAAO,UAAA,UAAAt5M,EAAAa,KAAAtG,KAAA8Z,UAAA0kM,EAAA1nD,WAAA,EAAA5rD,EAAA,GAAAvuG,WAGA,UAAA8I,EAAAa,KAAAtG,KAAA8Z,WACA0kM,EAAA9rD,SAAAxnD,EAAA,GAEAszG,EAAA9hN,QAAAyuG,EACA,CAEAqzG,EAAA7kD,SAAA,SAEA,IAAAqlD,GAAA,EAaA,GAZAv5M,EAAAa,KAAAtG,KAAAuvJ,SAAAivD,GACA/4M,EAAAw5M,kBAAAT,EAAA/4M,EAAAw5M,mBACAD,GAAA,EACAv5M,EAAAa,KAAAgJ,sBAAA,uBAGA7J,EAAAa,KAAAtG,KAAAwvJ,SAAAgvD,GACA/4M,EAAAy5M,kBAAAV,EAAA/4M,EAAAy5M,mBACAF,GAAA,EACAv5M,EAAAa,KAAAgJ,sBAAA,uBAGA0vM,EAAA,CAEAlhN,EAAA,qBAAAsC,GAAA,kBAAA4c,GACAA,EAAAmgJ,0BACA,IAEA,IAAAgiD,EAAA15M,EAAAa,KAAA84M,YAAA35M,EAAAipG,KAAA8vG,GAEAW,IACA15M,EAAAa,KAAAooG,KAAA8vG,EACA/4M,EAAA64M,gBACA,QAAA74M,EAAAa,KAAAtG,KAAA8Z,WACArU,EAAAw1M,WAAAz9J,IAAA/3C,EAAAu3C,UAAAo6G,WAAAonD,KAIA/4M,EAAA01M,kBACA11M,EAAAa,KAAAoK,0BAEAjL,EAAAa,KAAAtG,KAAAq7M,gBACA51M,EAAA61M,WAAAT,WAAA,QAEA,IAAAwE,EAAA55M,EAAAa,KAAAg5M,8BAEAD,IACA55M,EAAAa,KAAAgJ,sBAAA,WAAA+vM,GACA55M,EAAAa,KAAAgJ,sBAAA,eAAA+vM,IAGAF,IACA15M,EAAAa,KAAAgJ,sBAAA,UAAA+vM,GACA55M,EAAAa,KAAAgJ,sBAAA,cAAA+vM,GAEA,MACA55M,EAAA85M,YAAA,KAEA,EACAC,QAAA,WACA,OAAA/5M,EAAAa,KAAAooG,OAGAjpG,EAAAa,KAAAooG,KAAA,KACAjpG,EAAA01M,kBACA11M,EAAAa,KAAAoK,0BAEAjL,EAAAa,KAAAgJ,sBAAA,cACA7J,EAAAa,KAAAgJ,sBAAA,WACA7J,EAAAa,KAAAgJ,sBAAA,eACA,EACAmwM,OAAA,WAWA,GAVAh6M,EAAA01M,kBAEA11M,EAAAa,KAAAtG,KAAAg8M,cACAv2M,EAAAi6M,kBACAj6M,EAAAw2M,wBAGAx2M,EAAAi6M,iBAAAp1M,IAAA,oBAGAkzM,EAAA,CACA,IAAAmC,EAAA7hN,EAAA,qBAAAwM,IAAA,kCACAs1M,EAAA9hN,EAAA,2CAAAwM,IAAA,UACAu1M,EAAA,CACAnuM,MAAAm4F,OAAA81G,EAAAjuM,MAAAnU,UAAA,EAAAoiN,EAAAjuM,MAAAtU,OAAA,IACAyV,OAAAg3F,OAAA81G,EAAA9sM,OAAAtV,UAAA,EAAAoiN,EAAA9sM,OAAAzV,OAAA,IACA0iN,WAAAj2G,OAAA+1G,EAAAriN,UAAA,EAAAqiN,EAAAxiN,OAAA,IACAuU,OAAAk4F,OAAA81G,EAAA,eAAApiN,UAAA,EAAAoiN,EAAA,eAAAviN,OAAA,KAGA6tK,EAAA1sK,OAAA6e,WAAA,EAAAyiM,EAAAluM,OACAouM,EAAA90C,GAAA40C,EAAAC,WAAAD,EAAAnuM,OACAsuM,EAAA,GAAAH,EAAAluM,OAAA,OAAAkuM,EAAAluM,OAAA,KACAouM,EAAAF,EAAAhtM,OAAAgtM,EAAAC,WAAAvhN,OAAA+e,YAAA,MAEA2tJ,GADA80C,EAAAxhN,OAAA+e,YAAA,IAAAuiM,EAAAhtM,OAAAgtM,EAAAC,aACAD,EAAAnuM,MAAAmuM,EAAAC,YACAE,GAAAzhN,OAAA6e,WAAA6tJ,GAAA,QAGAntK,EAAA,qBACAwM,IAAA,CACAoH,MAAAu5J,EAAA,gBACAt5J,OAAA,KAAAquM,EAAA,MAAAA,EACAn3M,SAAA,QACAuC,IAAA,OACAE,OAAA,EACArC,OAAAswC,EAAAF,uBAEAv7C,EAAA,iDACAwM,IAAA,CACAuI,OAAAktM,EAAA,kBAEAjiN,EAAA,2CACAwM,IAAA,CACAuI,OAAAktM,EAAA,gBACAxuM,QAAA,QAEA,KACA,CACA,IAAA0uM,EAAAniN,EAAA,qBAAA6uC,KAAA,SAAAzvC,MAAA,MACA,GAAA+iN,EAAAljI,MAAA,SAAAzsE,GAAA,OAAAA,EAAAo/C,SAAA,cAAAuwJ,EAAAljI,MAAA,SAAAzsE,GAAA,OAAAA,EAAAo/C,SAAA,YAAAuwJ,EAAAljI,MAAA,SAAAzsE,GAAA,OAAAA,EAAAo/C,SAAA,WACA,IAAAvkD,EAAA80M,EAAAj6M,MAAA,SAAAsK,GAAA,OAAAA,EAAAo/C,SAAA,WACAtkD,EAAA60M,EAAAj6M,MAAA,SAAAsK,GAAA,OAAAA,EAAAo/C,SAAA,UACA5xD,EAAA,qBAAA6uC,KAAA,QAAAxhC,EAAA,KAAAC,EAAA,KACAtN,EAAA,iDAAA6uC,KAAA,YACA7uC,EAAA,2CAAA6uC,KAAA,yBACA,CACA7uC,EAAA,qBACAwM,IAAA,SAAAivC,EAAAF,qBACA,CACA,EACAw2G,QAAA,WACApqJ,EAAAi6M,kBACAj6M,EAAAi6M,iBAAAp1M,IAAA,iBAEA,IAGA5F,KAAAw7M,MAAAx7M,KAAAu2M,WACAj7M,KAAA,oBAEA0E,KAAA4B,KAAAtG,KAAAmgN,aACAz7M,KAAAw7M,MAAAtvD,WAAAvmJ,SAAA,kBAAA3F,KAAA4B,KAAAtG,KAAAmgN,kBACA,CACA,IAAA35E,EAAArjG,EAAAuB,wCAAAhgC,KAAA4B,KAAA,SAEAkgI,EACA9hI,KAAAw7M,MAAAtvD,WAAAvmJ,SAAA,kBAAAm8H,GAEA9hI,KAAAw7M,MAAAtvD,WAAAvmJ,SAAA,yBACA,CAEA3F,KAAA62M,UACAn7M,GAAA,QAAAsE,KAAA07M,gCAAAn5M,KAAAvC,MACA,CACA,EAEAq2M,EAAAt2M,UAAAs3M,iBAAA,WACA,IAAAt2M,EAAAf,KAEAA,KAAA42M,WACAhxM,IAAA,uBAEA5F,KAAA27M,mBAEA37M,KAAA4B,KAAAtG,KAAA2mD,WACAjiD,KAAA82M,YACAlxM,IAAA,CACAs8C,OAAA,YAEAxmD,GAAA,oBACAqF,EAAA61M,WAAAT,WAAA,OACA,IAEAn2M,KAAA42M,WAAAT,WAAA,CACAyF,WAAA57M,KAAAi3M,kBACAtkJ,KAAA3yD,KAAA4B,KAAAtG,KAAAugN,cACAC,WAAA,EACAC,YAAA,IAGA/7M,KAAA42M,WACAl7M,GAAA,qBACA,IAAAsgN,EAAAj7M,EAAA61M,WAAAT,WAAA,UAAAp1M,EAAAa,KAAAooG,MAEAjpG,EAAA85M,YAAAmB,GAKAj7M,EAAA61M,WAAAT,WAAA,OACA,IACAz6M,GAAA,6BACAtC,EAAA4G,MAAA1E,KAAA,mBACAsK,IAAA,SAAAivC,EAAAF,sBACA5zC,EAAA01M,iBACA,IACA/6M,GAAA,6BACA,IAAAi/M,EAAA55M,EAAAa,KAAAg5M,8BACA75M,EAAAw1M,WAAAz9J,IAAA/3C,EAAAu3C,UAAA6D,yBAAAprC,EAAAE,WAAAE,SAAAwpM,GACA,IAEA,EAEAtE,EAAAt2M,UAAA47M,iBAAA,WACA37M,KAAA82M,YAAAjwM,SAAA7G,KAAA4B,KAAA2D,UACAvF,KAAAi8M,sBACA,EAEA5F,EAAAt2M,UAAA84M,iBAAA,WACA74M,KAAA62M,UAAAhwM,SAAA7G,KAAA4B,KAAA2D,UACAvF,KAAAk8M,sBACA,EAEA7F,EAAAt2M,UAAAy2M,gBAAA,WACAx2M,KAAA4B,KAAAoK,0BACAhM,KAAAq5C,iBACA,EAEAg9J,EAAAt2M,UAAAs5C,gBAAA,WACAr5C,KAAAy2M,kBAEA,IAAA0F,EAAAn8M,KAAAu2M,WAAAz9J,MAEA,GAAA94C,KAAA45M,gBAAAuC,EAAA,CAGA,IAAArnD,EAAAszB,EAAA/3B,UAAA8rD,EAAAn8M,KAAAs4C,UAAA3zC,YAGAmwJ,IACAA,EAAAszB,EAAA/3B,UAAA8rD,EAAAt8L,QAAA,UAAA7f,KAAAs4C,UAAA8jK,kBAEAp8M,KAAA4B,KAAAooG,OAAAhqG,KAAA4B,KAAAtG,KAAA67M,gBAAAn3M,KAAA4B,KAAAtG,KAAAq7M,iBACA7hD,GACAA,EAAAunD,YAAAr8M,KAAA4B,KAAAooG,KAAAqoD,eACAyC,EAAA9G,SAAAhuJ,KAAA4B,KAAAooG,KAAAooD,YACA0C,EAAA98J,QAAAgI,KAAA4B,KAAAooG,KAAA/xG,YAEA68J,EAAA,IAAA/8J,KAAAiI,KAAA4B,KAAAooG,OAIAhqG,KAAA66M,YAAA/lD,EAlBA,CAmBA,EAEAuhD,EAAAt2M,UAAA86M,YAAA,SAAA/lD,GACA90J,KAAA4B,KAAA06M,WAAAxnD,GAEA,IAAA/zJ,EAAAf,KACAA,KAAAs2M,sBAAA3xL,YAAA,WAIA5jB,EAAAa,KAAAkJ,eAAA,gBACA/J,EAAAy6M,MAAAtvD,WAAAzpH,SAAA,cAAArpC,EAAA,kCAAAV,QAAAqI,EAAAw1M,WAAAjyK,GAAA,WACAvjC,EAAAa,KAAAgB,aAAA7B,EAAAa,KAAAtG,KAAAoI,SAAA64M,UAAA34M,kBAGA7C,EAAAu1M,sBAAA,IACA,OACA,EAEAD,EAAAt2M,UAAAy8M,4BAAA,SAAA1nD,GACA90J,KAAA45M,cAAA55M,KAAAs4C,UAAAo6G,WAAAoC,GACA90J,KAAAu2M,WAAAz9J,IAAA94C,KAAA45M,eAEA55M,KAAA4B,KAAAtG,KAAAq7M,gBACA32M,KAAA42M,WAAAT,WAAA,UAAArhD,EACA,EAEAuhD,EAAAt2M,UAAA45C,MAAA,WACA35C,KAAAu2M,WAAArrM,QAAA,QACA,EAEAmrM,EAAAt2M,UAAAo3C,WAAA,WACAn3C,KAAA45M,cAAA,KAEA55M,KAAAu2M,WAAAz9J,IAAA,MAEA94C,KAAA4B,KAAAtG,KAAAq7M,gBACA32M,KAAA42M,WAAAT,WAAA,eACA,EAEAE,EAAAt2M,UAAA6mC,SAAA,SAAAkuH,GACA90J,KAAA45M,cAAA55M,KAAAs4C,UAAAo6G,WAAAoC,GAEA90J,KAAAu2M,WAAAz9J,IAAA94C,KAAA45M,eAEA55M,KAAA4B,KAAAtG,KAAAq7M,gBACA32M,KAAA42M,WAAAT,WAAA,UAAArhD,EACA,EAEAuhD,EAAAt2M,UAAA08M,uBAAA,WACA,OAAAz8M,KAAA4B,KAAAtG,KAAAohN,wBAAA18M,KAAA4B,KAAAtG,KAAAqhN,wBACA74M,EAAA3F,iBAAA6B,KAAA4B,KAAAtG,KAAAohN,wBAGA18M,KAAA4B,KAAAtG,KAAAshN,QACA94M,EAAA5G,UAAA8C,KAAA4B,KAAAtG,KAAAshN,SAEA,IACA,EAEAvG,EAAAt2M,UAAA88M,uBAAA,WACA,OAAA78M,KAAA4B,KAAAtG,KAAAwhN,wBAAA98M,KAAA4B,KAAAtG,KAAAyhN,wBACAj5M,EAAA3F,iBAAA6B,KAAA4B,KAAAtG,KAAAwhN,wBAGA98M,KAAA4B,KAAAtG,KAAAshN,QACA94M,EAAA5G,UAAA8C,KAAA4B,KAAAtG,KAAAshN,SAEA,IACA,EAEAvG,EAAAt2M,UAAAm8M,qBAAA,WACA,IAAAc,EAAAh9M,KAAAy8M,yBACAO,GAAAh9M,KAAA4B,KAAAtG,KAAAqhN,wBACA38M,KAAAi9M,mBAAAD,GACAh9M,KAAAi9M,oBAAA,EACA,EAEA5G,EAAAt2M,UAAAk8M,qBAAA,WACA,IAAAe,EAAAh9M,KAAA68M,yBACAG,GAAAh9M,KAAA4B,KAAAtG,KAAAyhN,yBAAA/8M,KAAA82M,YACA92M,KAAAk9M,mBAAAF,GACAh9M,KAAAk9M,oBAAA,EACA,EAEA7G,EAAAt2M,UAAAm9M,mBAAA,SAAAziL,GACAA,EACAz6B,KAAA82M,YAAAlxM,IAAA,CACA83B,gBAAA,OAAAxkC,EAAAw9L,MAAAj8J,GAAA,MAEAz6B,KAAA82M,YAAAlxM,IAAA,sBACA,EAEAywM,EAAAt2M,UAAAk9M,mBAAA,SAAAxiL,GACAA,EACAz6B,KAAA62M,UAAAjxM,IAAA,CACA83B,gBAAA,OAAAxkC,EAAAw9L,MAAAj8J,GAAA,MAEAz6B,KAAA62M,UAAAjxM,IAAA,sBACA,EAEAywM,EAAAt2M,UAAA22M,uBAAA,WACA,GAAA12M,KAAA4B,KAAAtG,KAAA6hN,yBAAA,CACA,IAAAC,EAAAp9M,KAAA4B,KAAAe,OAAAm2B,WAAAgQ,OAAAv8B,SAAAvM,KAAA4B,KAAAtG,KAAA6hN,0BAEA,GAAAC,EAAA,CACA,IAAAC,EAAAr9M,KAAAs4C,UAAAglK,iBAAAF,GACAp9M,KAAAw7M,MAAA9nK,OAAA,CACA6pK,aAAAF,GAEA,CACA,CACA,EAEAhH,EAAAt2M,UAAA27M,gCAAA,WACA17M,KAAA02M,yBAEA12M,KAAAw7M,MAAA1yM,MACA,EAEAutM,EAAAt2M,UAAAw3M,sBAAA,WACAv3M,KAAAg7M,iBAAA5hN,EAAA,WACAwM,IAAA,CACAzB,SAAA,QACAuC,IAAA,EACAD,KAAA,EACAuG,MAAA,OACAmB,OAAA,OACA,mBAAAnO,KAAA4B,KAAAtG,KAAAg8M,YAAAt3M,KAAA4B,KAAAtG,KAAAkiN,cAAA,mBACApgL,QAAAp9B,KAAA4B,KAAAtG,KAAAmiN,gBAAA,IACA,eACA5wM,QAAA,SAGA7M,KAAA4B,KAAAtG,KAAAsM,UACA5H,KAAAg7M,iBAAAn0M,SAAA7G,KAAA4B,KAAAe,OAAAmF,gBAEA9H,KAAAg7M,iBAAAn0M,SAAA7G,KAAA4B,KAAAuF,SAAA5B,UAEAvF,KAAAg7M,iBAAAn0M,SAAA7G,KAAA4B,KAAA2D,SACA,EAEA8wM,CACA,IAEA5+M,OCplBA,mCACA,SACA,aACA,aACA,SAAA2B,EAAAD,EAAAslC,GACA,aAEA,SAAAi/K,EAAA97M,GACA5B,KAAA4B,OAEA,IAAAb,EAAAf,KACAA,KAAAu2M,WAAAn9M,EAAA,WACA6uC,KAAA,OAAAjoC,KAAA4B,KAAAtG,KAAAq7M,eAAA,yBACA/wM,IAAA,CACAoH,MAAA,OACAmB,OAAA,OACAtB,QAAA,eACA6oC,WAAA,WAEAzN,KAAA,KAAArmC,EAAAuF,SAAAu9B,WAAA,IAAA9iC,EAAAtG,KAAAV,IACA+K,SAAA,eACAsiC,KAAA,WAAAjoC,KAAA4B,KAAAtG,KAAAk8C,UACAvP,KAAA,cAAAjoC,KAAA4B,KAAAtG,KAAAw7C,WACAnxC,SAAA,mBACAsiC,KAAA,MAAAjoC,KAAA4B,KAAAtG,KAAAuvJ,SACA5iH,KAAA,MAAAjoC,KAAA4B,KAAAtG,KAAAwvJ,SACApvJ,GAAA,mBACAkG,EAAAgJ,sBAAA,YACA,IACAlP,GAAA,qBACA,IAAA8mI,EAAA,IAAAzqI,KAAAiI,KAAAwM,OACAzL,EAAAa,KAAA06M,WAAA95E,EACA,IACA37H,SAAA7G,KAAA4B,KAAA2D,UAEAvF,KAAA4B,KAAAtG,KAAA2mD,UACAjiD,KAAAu2M,WAAA7/L,KAAA,YAEA+nB,EAAAK,aAAAl9B,EAAA,KAAA5B,KAAAu2M,WACA,CAsBA,OApBAmH,EAAA39M,UAAAsjB,WAAAjqB,EAAA+O,KAEAu1M,EAAA39M,UAAAy8M,4BAAApjN,EAAA+O,KAEAu1M,EAAA39M,UAAA45C,MAAA,WACA35C,KAAAu2M,WAAArrM,QAAA,QACA,EAEAwyM,EAAA39M,UAAAo3C,WAAA,WACAn3C,KAAAu2M,WAAAz9J,IAAA,KACA,EAEA4kK,EAAA39M,UAAA6mC,SAAA,SAAAkuH,GACA,IAAA6oD,EAAA,IAAA5lN,KAAA+8J,EAAAtzI,UAAA,GAAAszI,EAAA7rD,oBAAA,KAAA20G,cACApxM,EAAAxM,KAAA4B,KAAAtG,KAAAq7M,eACAgH,EAAAxnM,OAAA,MACAwnM,EAAAxnM,OAAA,MACAnW,KAAAu2M,WAAAz9J,IAAAtsC,EACA,EAEAkxM,CACA,IAEAjmN,OChEA,6BACA,SACA,aACA,YACA,UACA,eACA,gBACA,UACA,KACA,oBACA,oBACA,gBACA,SAAA2B,EAAAD,EAAAivL,EAAA9iL,EAAAyL,EAAAmqB,EAAA1lB,EAAA1R,EAAAuyM,EAAAqH,EAAA3pK,GACA,aAEA,IAAAhY,EAAA,CACAzgC,KAAA,CACA67M,gBAAA,EACAR,gBAAA,EACA4C,WAAA,QACAI,WAAA,QACAkC,cAAA,GACA4B,gBAAA,IACAxpK,SAAA,CACAlvC,mBAAA,EACAmvC,YAAA,EACAO,YAAA,aAEAr/B,UAAA,MACA4kM,aAAA,EACAD,WAAA,EACAI,iBAAA,YACAF,mBAAA,YACAR,iBAAA,IAIA,SAAAoE,EAAA16L,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAA1E,KAAAoI,SAAA8R,EAAA1D,+BAAA9R,KAAA1E,KAAAoI,WAAA,GAEA1D,KAAAgqG,KAAA,KAEAhqG,KAAAuF,SACAI,SAAA,mBACAC,IAAA,CACA8vC,WAAA,aAGA11C,KAAAu6M,iBAAAnyB,EAAA/3B,UAAArwJ,KAAA1E,KAAAuvJ,QAAA7qJ,KAAA89M,kBACA99M,KAAAw6M,iBAAApyB,EAAA/3B,UAAArwJ,KAAA1E,KAAAwvJ,QAAA9qJ,KAAA89M,iBACA,CAqJA,OAnJAx4M,EAAA3F,OAAAk+M,EAAAv4M,GAEAu4M,EAAAjkL,SAAA,YAEAikL,EAAA99M,UAAA+9M,iBAAA,aAEAD,EAAA99M,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2C,OAAAsxC,SAAAhzC,MAAAjB,MACA+zC,EAAAh0C,UAAAw0C,2BAAAv0C,MAEAA,KAAAs4C,UAAAt4C,KAAA2C,OAAA+B,WAAA6zC,gBAAAv4C,KAAA1E,KAAAoJ,YAEA1E,KAAA+wC,MAAA/wC,KAAA+9M,wBACA,IAAA1H,EAAAr2M,UAAAs4C,WACA,IAAAolK,EAAA19M,MAEAA,KAAA+wC,MAAA1tB,aAEArjB,KAAA2M,eACA,EAEAkxM,EAAA99M,UAAAg+M,sBAAA,WACA,IAAAC,EAAAh+M,KAAAmH,SAAAgc,QAAA66L,mBACA,WAAAA,GAAA,IAAAA,IAAA9iL,EAAAhkB,eACA,EAEA2mM,EAAA99M,UAAA45C,MAAA,WACA35C,KAAA+wC,MAAA4I,OACA,EAEAkkK,EAAA99M,UAAAwM,SAAA,WACA,OAAAvM,KAAA46M,6BACA,EAEAiD,EAAA99M,UAAAo3C,WAAA,WACAn3C,KAAAgqG,KAAA,KACAhqG,KAAA+wC,MAAAoG,aACAn3C,KAAAgM,yBACA,EAEA6xM,EAAA99M,UAAA6mC,SAAA,SAAA8M,GACAA,EAAAlnC,OACAxM,KAAAgqG,KAAAo+E,EAAA/3B,UAAA38G,EAAAlnC,MAAAuE,EAAAC,mBAEAhR,KAAA1E,KAAAq7M,gBACA32M,KAAAgqG,KAAAirD,SAAA,SAEAj1J,KAAA+wC,MAAAnK,SAAA5mC,KAAAgqG,QAEAhqG,KAAAgqG,KAAA,KACAhqG,KAAA+wC,MAAAoG,cAGAn3C,KAAAgM,yBACA,EAEA6xM,EAAA99M,UAAA26M,YAAA,SAAAuD,EAAAC,GACA,OAAAD,GAAAC,EAGAD,EAAA5D,YAAA6D,EAAA7D,WACA4D,EAAA7rD,aAAA8rD,EAAA9rD,YACA6rD,EAAAhmN,YAAAimN,EAAAjmN,UAJAgmN,IAAAC,CAKA,EAEAL,EAAA99M,UAAAo+M,YAAA,SAAAF,EAAAC,GACA,OAAAD,GAAAC,EAGAD,EAAA5oD,aAAA6oD,EAAA7oD,YACA4oD,EAAA9yB,eAAA+yB,EAAA/yB,cACA8yB,EAAAG,eAAAF,EAAAE,aAJAH,IAAAC,CAKA,EAEAL,EAAA99M,UAAAu8M,WAAA,SAAAxnD,GACA,IAAAupD,EAAA,KAmBA,GAlBAvpD,IACAupD,EAAA,IAAAtmN,KAAA+8J,GACA90J,KAAA1E,KAAAq7M,gBACA0H,EAAAppD,SAAA,UAGAj1J,KAAA1E,KAAAuvJ,SAAAwzD,GACAr+M,KAAAu6M,kBAAA8D,EAAAr+M,KAAAu6M,mBACAzlD,EAAA,KACA90J,KAAA4K,sBAAA,uBAGA5K,KAAA1E,KAAAwvJ,SAAAuzD,GACAr+M,KAAAw6M,kBAAA6D,EAAAr+M,KAAAw6M,mBACA1lD,EAAA,KACA90J,KAAA4K,sBAAA,uBAGAkqJ,EAAA,CACA,IAAAwpD,EAAAt+M,KAAAm+M,YAAAn+M,KAAAgqG,KAAA8qD,GACAypD,EAAAv+M,KAAA06M,YAAA16M,KAAAgqG,KAAA8qD,GAEA90J,KAAAgqG,KAAA8qD,EAEA90J,KAAA+wC,MAAAyrK,4BAAA1nD,GAEA,IAAA6lD,EAAA36M,KAAAs4C,UAAAkmK,kBAAA1pD,IAEAwpD,GAAAC,KACAv+M,KAAA4K,sBAAA,WAAA+vM,GACA36M,KAAA4K,sBAAA,UAAA+vM,IAGA2D,IACAt+M,KAAA4K,sBAAA,eAAA+vM,GACA36M,KAAA4K,sBAAA,cAAA+vM,IAGA4D,IACAv+M,KAAA4K,sBAAA,eAAA+vM,GACA36M,KAAA4K,sBAAA,cAAA+vM,GAEA,MACA,IAAA8D,IAAAz+M,KAAAgqG,KAEAhqG,KAAAgqG,KAAA,KAEAhqG,KAAA+wC,MAAAoG,aAEAsnK,IACAz+M,KAAA4K,sBAAA,cACA5K,KAAA4K,sBAAA,WACA5K,KAAA4K,sBAAA,eACA5K,KAAA4K,sBAAA,eAEA,CAEA5K,KAAAgM,yBACA,EAEA6xM,EAAA99M,UAAA66M,4BAAA,WACA,OAAA56M,KAAAgqG,KACAhqG,KAAAs4C,UAAAkmK,kBAAAx+M,KAAAgqG,MADA,IAEA,EAEA6zG,EAAA99M,UAAA2+M,eAAA,SAAA5lK,GACA94C,KAAA+wC,OAAA/wC,KAAA+wC,MAAAwlK,YACAv2M,KAAA+wC,MAAAwlK,WAAAtuK,KAAA,cAAA6Q,EACA,EAEA+kK,CACA,IAEApmN,OC5MA,mCACA,SACA,UACA,WACA,UACA,eACA,OACA,SAAA2B,EAAAkM,EAAAm5B,EAAAjpB,EAAAs1L,EAAAhnM,GACA,aAIA,SAAA66M,EAAAx7L,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA+pB,GAEA,IAAApiB,EAAAf,KA0DA,OAxDAe,EAAAwE,SACAK,IAAA,CACA8vC,WAAA,aAGAjX,EAAAK,aAAA/9B,GAEAA,EAAAwE,SACA4I,OAAApN,EAAAzF,KAAAgJ,KAAAD,GACA2I,MAAAjM,EAAAzF,KAAAgJ,KAAAF,GAEArD,EAAA69M,GAAAxlN,EAAA,QACAwM,IAAA,CACAiH,QAAA,iBAEAsB,OAAApN,EAAAzF,KAAAgJ,KAAAD,GACA2I,MAAAjM,EAAAzF,KAAAgJ,KAAAF,GACAyC,SAAA9F,EAAAwE,UAEAxE,EAAA89M,MAAAzlN,EAAA,WACAwM,IAAA,CACAuI,OAAApN,EAAAzF,KAAAgJ,KAAAD,EAAA,OAEAwC,SAAA9F,EAAA69M,IAEA79M,EAAAu2C,KAAAl+C,EAAA,UACAwM,IAAA,CACA82B,cAAA,WAEAvuB,OAAApN,EAAAzF,KAAAwjN,UACA9xM,MAAAjM,EAAAzF,KAAAwjN,UACAj4M,SAAA9F,EAAA89M,OAEA99M,EAAAzF,KAAAyjN,eACAh+M,EAAAi+M,kBAAA5lN,EAAA,WACAwM,IAAA,CACAiH,QAAA,eACA6vB,cAAA,SACA+E,YAAA,QAEA5G,KAAA95B,EAAAzF,KAAAyjN,cACAl4M,SAAA9F,EAAA89M,QAGA99M,EAAAzF,KAAA2jN,WACAl+M,EAAAu2C,KAAA9tC,OAEAzI,EAAAzF,KAAAyjN,cACAh+M,EAAAi+M,kBACAp5M,IAAA,CACA67B,YAAA,SAIA1gC,EAAAyI,OAEAzI,CACA,CAkEA,OAhEAuE,EAAA3F,OAAAg/M,EAAAr5M,GAEAq5M,EAAA/kL,SAAA,eAEA+kL,EAAA5+M,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,eACA,EAEAgyM,EAAA5+M,UAAAo3C,WAAA,WAEA,EAEAwnK,EAAA5+M,UAAA6mC,SAAA,SAAA8M,GACA,IAGA1/B,EAHAxH,EAAAgJ,EAAA1D,+BAAA4hC,EAAAlnC,OACAzL,EAAAf,KAGAk/M,EAAA,GAEA,GAAA1yM,EAAA,CASA,GAPA,WAAApT,EAAAsM,KAAA8G,GACAwH,EAAAxH,GAEAwH,EAAAxH,EAAAwH,KAAAxH,EAAAya,IACAi4L,EAAA1yM,EAAA0yM,UAAA1yM,EAAA2yM,UAGAnrM,EAAA,CACAjT,EAAA69M,GAAA91M,OAGAo2M,IACAA,EAAA,aAAAA,GAGA,IAAAE,EAAA,GAEA,eAAAr+M,EAAAzF,KAAA05C,WAAA,WAAAj0C,EAAAzF,KAAA05C,YACAoqK,EAAA,uBAGAr+M,EAAA69M,GAAA32K,KAAA,OAAAnkC,EAAA1G,aAAA,mCAAA4W,EAAAkrM,EAAAE,IAEA,IAAAzT,EAAAb,EAAAF,WAAA7pM,EAAAzF,KAAAgJ,MACAqsB,EAAA7sB,EAAA1G,aAAA,4BAAA4W,EAAA,UAAA23L,EAAAvnM,EAAA,WAAAunM,EAAAtnM,EAAA,gCACAtD,EAAAu2C,KAAArP,KAAA,MAAAtX,GAGA5vB,EAAA69M,GAAAljN,GAAA,kBAAAgF,GACAA,EAAA4qD,gBACA5qD,EAAA4qD,kBAEA5qD,EAAA2+M,cAAA,CAEA,GAEA,MACAt+M,EAAA69M,GAAAp1M,OAEAzI,EAAA+H,MAlCA,CAmCA,EAEA61M,CACA,IACAlnN,OC9IA,2BACA,SACA,UACA,WACA,UACA,aACA,aACA,UACA,gBACA,SAAA2B,EAAAkM,EAAAm5B,EAAAjpB,EAAArc,EAAA45C,EAAAlO,EAAAkP,GACA,aAEA,IAAAhY,EAAA,CACAzgC,KAAA,CACAgkN,eAAA,EACAnvK,MAAA,CACA8C,OAAAF,EAAAS,WAEAS,SAAA,CACAlvC,mBAAA,EACAmvC,YAAA,EACAO,YAAA,eAKA,SAAA8qK,EAAAp8L,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAA1E,KAAAoI,SAAA8R,EAAA1D,+BAAA9R,KAAA1E,KAAAoI,UACA1D,KAAAw/M,QAAA,EACAx/M,KAAAwM,MAAA,KACAxM,KAAAy/M,eAAA,EAEAz/M,KAAAuF,SACAI,SAAA,mBACAC,IAAA,CACA8vC,WAAA,aAGA,IAAA30C,EAAAf,KACAA,KAAA0/M,UAAAtmN,EAAA,cACAwM,IAAA,CACAoH,MAAA,OACAmB,OAAA,OACAwlM,aAAA,aAEAj4M,GAAA,SAAAsE,KAAAy6M,aAAAl4M,KAAAvC,OACAioC,KAAA,WAAAlnC,EAAAzF,KAAAk8C,UACA3wC,SAAA9F,EAAAwE,UAEAvF,KAAA1E,KAAAgkN,eACAt/M,KAAA0/M,UAAA/5M,SAAA,wBAGA84B,EAAAK,aAAA9+B,KAAA,KAAAA,KAAA0/M,WAEA1/M,KAAA1E,KAAA2mD,UACAjiD,KAAA0/M,UAAAhpM,KAAA,eAEA1W,KAAA0/M,UAAAhkN,GAAA,qBACA,GAAAqF,EAAA2+M,UAAA5mK,MAAA,CACA,IAAA2pB,EAAA1hE,EAAA2+M,UAAA5mK,MACA/3C,EAAA6J,sBAAA,WAAA63D,GACA1hE,EAAA6J,sBAAA,UAAA63D,EACA,MACA1hE,EAAA6J,sBAAA,mBACA7J,EAAA6J,sBAAA,eAEA,IAEA5K,KAAA0/M,UAAAhkN,GAAA,qBACAqF,EAAAiL,yBACA,IAEAhM,KAAAqzC,QAAA,IAAAN,EAAA/yC,UAAA1E,KAAA60C,MAAAnwC,KAAA0/M,UACA,CAsMA,OApMAp6M,EAAA3F,OAAA4/M,EAAAj6M,GAEAi6M,EAAA3lL,SAAA,WAEA2lL,EAAAx/M,UAAAgH,UAAA,WACA,IAAAhG,EAAAf,KACAA,KAAAqzC,QAAAK,SACA1zC,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2C,OAAAsxC,SAAAhzC,MAAAjB,MAAA,SAAAkM,GACAA,GAAAnL,EAAA4+M,cACA5+M,EAAA4+M,cAAA/5M,IAAA,CAAAiH,QAAA,SACA9L,EAAA4+M,cACA5+M,EAAA4+M,cAAA/5M,IAAA,CAAAiH,QAAA,KAEA9L,EAAA6+M,qBAAA1zM,CAEA,IACAlM,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAo8C,YACA,SAAAp8C,GAAAyF,EAAA8+M,QAAAvkN,EAAA,IACA,SAAAmuC,GACA1oC,EAAAzF,KAAAq9C,WACAlP,EAAAkP,SAAA53C,EAAAzF,KAAAq9C,SAEA,IACA5E,EAAAh0C,UAAAw0C,2BAAAxzC,GAEAf,KAAA2M,gBACA3M,KAAA8/M,gBACA,EAEAP,EAAAx/M,UAAA0H,WAAA,WACAzH,KAAA0/M,UAAA95M,IAAA,6BAAA5F,KAAA0/M,UAAA95M,IAAA,qBACA,EAEA25M,EAAAx/M,UAAA06M,aAAA,WACA,IAAA3hK,EAAA94C,KAAA0/M,UAAA5mK,MAEA,KAAAA,GACA94C,KAAAwM,MAAA,KACAxM,KAAA0/M,UAAA/5M,SAAA,0BAEA3F,KAAAwM,MAAAssC,EACA94C,KAAA0/M,UAAA92M,YAAA,wBAEA,EAEA22M,EAAAx/M,UAAAggN,gBAAA,WASA,OARA//M,KAAA2/M,cAAAvmN,EAAA,cACA0/C,IAAA,IACAje,KAAA76B,KAAA1E,KAAA0kN,eAAA,OACAr6M,SAAA,wBAEA3F,KAAA4/M,sBACA5/M,KAAA2/M,cAAA/5M,IAAA,CAAAiH,QAAA,SAEA7M,KAAA2/M,aACA,EAEAJ,EAAAx/M,UAAA+/M,eAAA,WACA9/M,KAAA1E,KAAAgkN,eACAt/M,KAAA0/M,UAAA7zK,OAAA7rC,KAAA+/M,mBAEA//M,KAAA1E,KAAA2kN,UAEAjgN,KAAA0/M,UAAA7zK,OAAA1yC,EAAA+N,IAAAlH,KAAA1E,KAAA2kN,SAAAznN,MAAA,gBAAA2Z,GACA,OAAA/Y,EAAA,cACAoT,MAAA2F,EACA0oB,KAAA1oB,GAEA,IACA,EAEAotM,EAAAx/M,UAAA8/M,QAAA,SAAAvkN,GACA0E,KAAAw/M,QAAA,EAEAx/M,KAAA0/M,UACAp+M,KAAA,UACAvI,SACAyvD,MAEAxoD,KAAA1E,KAAAgkN,eACAt/M,KAAA0/M,UAAA7zK,OAAA7rC,KAAA+/M,mBAEA,IAAAh/M,EAAAf,KACA5G,EAAAgJ,KAAA9G,EAAA68B,SAAA,SAAAvnB,EAAA8V,GACA,IAAAoyB,EAAApyB,EAAA3lB,EAAAzF,KAAA4kN,mBAAA,MACAn/M,EAAA0+M,cAAA,iBAAA3mK,EAEA,IAAAqnK,EAAA/mN,EAAA,cACAoT,MAAAssC,EACAje,KAAAgK,EAAAgO,MAAA9xC,EAAAq/M,2BAAA15L,MAGA+X,EAAAK,aAAA/9B,EAAA,KAAAo/M,GAEAA,EAAAt5M,SAAA9F,EAAA2+M,UACA,IAEA1/M,KAAAwM,MACAxM,KAAA4mC,SAAA,CAAAp6B,MAAAxM,KAAAwM,QAEAxM,KAAAqgN,iBACA,EAEAd,EAAAx/M,UAAAqgN,2BAAA,SAAA15L,GAEA,OAAAA,EADA1mB,KAAAsgN,yBAAA55L,GAEA,EAEA64L,EAAAx/M,UAAAugN,yBAAA,SAAA55L,GACA,IAAA/W,EAAAzP,OAAAyP,KAAA+W,GACA,WAAA/W,EAAAjX,OACAiX,EAAA,IAEA,IAAAA,EAAA7W,QAAAkH,KAAA1E,KAAAilN,sBACAvgN,KAAA1E,KAAAilN,qBAEA,OAAA5wM,EAAA,GAAAo0D,cACAp0D,EAAA,GAEAA,EAAA,EACA,EAEA4vM,EAAAx/M,UAAA45C,MAAA,WACA35C,KAAA0/M,UAAAx0M,QAAA,QACA,EAEAq0M,EAAAx/M,UAAAwM,SAAA,WACA,OAAAvM,KAAAy/M,eAAA,OAAAz/M,KAAAwM,MACA0M,SAAAlZ,KAAAwM,YACApG,IAAApG,KAAAwM,MACA,KACAxM,KAAAwM,KACA,EAEA+yM,EAAAx/M,UAAAo3C,WAAA,WACA,GAAAn3C,KAAA1E,KAAAgkN,cAAA,CACAt/M,KAAAwM,MAAA,KACA,IAAAzL,EAAAf,KACA2kB,YAAA,WACA5jB,EAAA2+M,UAAA5mK,IAAA,IACA/3C,EAAA2+M,UAAA/5M,SAAA,uBACA,GACA,MACA3F,KAAAqgN,kBAGArgN,KAAAgM,yBACA,EAEAuzM,EAAAx/M,UAAAsgN,gBAAA,WACA,IAAAG,EAAAxgN,KAAA0/M,UAAAp+M,KAAA,gBACAtB,KAAA0/M,UAAA5mK,IAAA0nK,EAAA1nK,OACA94C,KAAAy6M,cACA,EAEA8E,EAAAx/M,UAAA6mC,SAAA,SAAA8M,GACA,GAAA1zC,KAAAw/M,OAGA,UAAA9rK,EAAAlnC,YAAApG,IAAAstC,EAAAlnC,MAKA,GAJArT,EAAAmI,KAAAtB,KAAA0/M,UAAAh9K,YAAA,SAAAuQ,GACA,OAAAA,EAAAzmC,QAAAknC,EAAAlnC,MAAAiE,UACA,IAEA,CACAzQ,KAAAwM,MAAAknC,EAAAlnC,MACA,IAAAzL,EAAAf,KAEA,KAAAA,KAAAwM,MACAxM,KAAA0/M,UAAA/5M,SAAA,wBAEA3F,KAAA0/M,UAAA92M,YAAA,wBAIA+b,YAAA,WACA5jB,EAAA2+M,UAAA5mK,IAAApF,EAAAlnC,MAAAiE,YACA1P,EAAAiL,yBACA,GACA,MACAhM,KAAA4K,sBAAA,gBAAA8oC,EAAAlnC,OACAxM,KAAA8K,eAAA,kBACA21M,MAAA,6JAGAzgN,KAAAm3C,kBAGAn3C,KAAAm3C,kBA/BAn3C,KAAAwM,MAAAknC,EAAAlnC,MAkCAxM,KAAAgM,yBACA,EAEAuzM,CACA,IAKA9nN,OCxRA,6BACA,SACA,UACA,WACA,eACA,SAAA2B,EAAAkM,EAAAm5B,EAAAtlC,GACA,aAEA,IAAAunN,EAAA,cAEA,SAAAC,EAAAx9L,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,gBAAA+pB,GAEAsb,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAuF,SACA,CA+CA,OA7CAD,EAAA3F,OAAAghN,EAAAr7M,GAEAq7M,EAAA/mL,SAAA,YAEA+mL,EAAA5gN,UAAAgH,UAAA,WACA/G,KAAA2M,gBAEA3M,KAAA4gN,8BAEA5gN,KAAA8K,eAAA41M,IACA1gN,KAAA6gN,qBAEA,EAEAF,EAAA5gN,UAAA6gN,4BAAA,WACA5gN,KAAAuF,SAAA7J,GAAA,qBAAA4c,GACAA,EAAAisB,iBACAjsB,EAAAgzC,iBACA,IACAtrD,KAAAuF,SAAA7J,GAAA,sBAAA4c,GACAA,EAAAisB,iBACAjsB,EAAAgzC,iBACA,IACAtrD,KAAAuF,SAAA7J,GAAA,sBAAA4c,GACAA,EAAAisB,iBACAjsB,EAAAgzC,iBACA,GACA,EAEAq1J,EAAA5gN,UAAA8gN,oBAAA,WACA,IAAA9/M,EAAAf,KACAA,KAAAuF,SAAA7J,GAAA,iBAAA4c,GACAA,EAAAkiB,cAAAsmL,cACAxoM,EAAAkiB,cAAAsmL,aAAA3wB,MAAAz3L,SACA4f,EAAAisB,iBACAjsB,EAAAgzC,kBAEAnyD,EAAAiJ,KAAAkW,EAAAkiB,cAAAsmL,aAAA3wB,OAAA,SAAAK,GACAzvL,EAAA6B,aAAA7B,EAAAzF,KAAAoI,SAAAg9M,GAAA98M,gBAAA4sL,EACA,IAGA,GACA,EAEAmwB,CACA,IACAlpN,OC/DA,uCACA,SACA,UACA,UACA,OACA,SAAA2B,EAAAkM,EAAAkQ,EAAA1R,GACA,aAEA,IAAAi4B,EAAA,CACAzgC,KAAA,CACAo3H,KAAA,gBAIA,SAAAquF,EAAA59L,GAUA,OATA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,WAAA2iC,EAAA5Y,GAEAnjB,KAAAuF,SACAI,SAAA,mBACAC,IAAA,CACA,gCACA,gCAGA5F,IACA,CAwCA,OAtCAsF,EAAA3F,OAAAohN,EAAAz7M,GAEAy7M,EAAAnnL,SAAA,iBAEAmnL,EAAAhhN,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,eACA,EAEAo0M,EAAAhhN,UAAA66L,SAAA,SAAA5mL,GACAhU,KAAAuF,SAAAK,IAAA,0BAAAoO,EAAA,IACA,EAEA+sM,EAAAhhN,UAAAo3C,WAAA,WACAn3C,KAAAqhD,OAAA5G,OACA,EAEAsmK,EAAAhhN,UAAA6mC,SAAA,SAAA8M,GACA,IAAAlnC,EAAAgJ,EAAA1D,+BAAA4hC,EAAAlnC,OAEAA,GAGAxM,KAAA1E,KAAAo3H,KAAAlmH,EACAxM,KAAA46L,SAAA56L,KAAAghN,gBAHAhhN,KAAAm3C,YAKA,EAEA4pK,EAAAhhN,UAAAihN,YAAA,WACA,OAAAl9M,EAAA1G,aAAA,6CACA4C,KAAAmH,SAAA7L,KAAAV,GACA,cAAAoF,KAAA1E,KAAAV,GACA,SAAAoF,KAAA1E,KAAAo3H,KACA,gBAAA1yH,KAAA1E,KAAA2lN,YACA,UAAAjhN,KAAA1E,KAAAgJ,KAAAF,EACA,WAAApE,KAAA1E,KAAAgJ,KAAAD,EACA,EAEA08M,CACA,IACAtpN,OCnEA,qCACA,SACA,UACA,aACA,SAAA2B,EAAAkM,EAAAm5B,GACA,aAEA,IAAA1C,EAAA,CACAzgC,KAAA,CACA+vF,UAAA,OACA61H,cAAA,KAIA,SAAAC,EAAAh+L,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GACA,IAAApiB,EAAAf,KA0BA,OAxBAe,EAAAqgN,QAAAhoN,EAAA,cACA6uC,KAAA,QAAAlnC,EAAAsgN,sBACAp5K,KAAA,YAAAlnC,EAAAzF,KAAA+vF,WACAzlF,IAAA,CACAoH,MAAA,OACAmB,OAAA,OACA6tB,OAAA,IAEAn1B,SAAA9F,EAAAwE,UAEAxE,EAAAwE,SACAI,SAAA,mBACAC,IAAA,CACA8vC,WAAA,aAGAjX,EAAAK,aAAA/9B,GAEAf,KAAA4rC,kBAAA,SAAAtzB,GAEA,IAAAusC,EAAAvsC,EAAAusC,KAAAvsC,EAAAusC,KAAA,QACA9jD,EAAA6B,aAAA7B,EAAAzF,KAAAV,GAAA,IAAA0d,EAAArO,UAAA46C,EACA,IAEA9jD,CACA,CAsFA,OApFAuE,EAAA3F,OAAAwhN,EAAA77M,GAEA67M,EAAAvnL,SAAA,gBAEAunL,EAAAphN,UAAAshN,mBAAA,WACA,IAAAnwF,EAAA,GAQA,OANAlxH,KAAA1E,KAAAgmN,aACApwF,EAAArwH,KAAA,UAEAb,KAAA1E,KAAAimN,iBACArwF,EAAArwH,KAAA,cAEAqwH,EAAAl+G,KAAA,IACA,EAEAmuM,EAAAphN,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,eACA,EAEAw0M,EAAAphN,UAAAo3C,WAAA,WACAn3C,KAAAuF,SACAiE,MACA,EAEA23M,EAAAphN,UAAA6mC,SAAA,SAAA8M,GACA1zC,KAAAohN,QAAAn5K,KAAA,MAAAyL,EAAAlnC,OAEA,OAAAknC,EAAAlnC,YAAApG,IAAAstC,EAAAlnC,OAAA,KAAAknC,EAAAlnC,MACAxM,KAAAohN,QAAA53M,OAEAxJ,KAAAohN,QAAAt4M,MAEA,EAGAq4M,EAAAphN,UAAAwM,SAAA,WACA,OAAAvM,KAAAohN,QACAphN,KAAAohN,QAAAn5K,KAAA,OAGA,IACA,EAEAk5K,EAAAphN,UAAA6rC,iBAAA,SAAAxoB,GACA,IAAA0oB,EAAAjyC,OAAA21B,iBAAA,iCACAuc,EAAAlyC,OAAA21B,iBAAA,sBACAzuB,EAAAf,KAEAnG,OAAAiyC,GAAAC,GAAA,SAAAzzB,GACA,GAAAA,EAAA3M,SAAA5K,EAAAqgN,QAAA/oN,IAAA,GAAA04B,cAEA,IACA,IAAAywL,EAAA5tM,KAAAC,MAAAyE,EAAAhd,MACA8nB,EAAAo+L,EACA,OAAA77L,GAEA,CAEA,MACA,EAEAw7L,EAAAphN,UAAA0hN,qBAAA,SAAAD,GACAxhN,KAAAohN,QAAA/oN,IAAA,GAAA04B,cAAA2wL,YAAA9tM,KAAAE,UAAA0tM,GAAA,IACA,EAEAL,EAAAphN,UAAA+I,KAAA,WACA9I,KAAAohN,QACAx7M,IAAA,qBAEAN,EAAAvF,UAAA+I,KAAAkc,KAAAhlB,KACA,EAEAmhN,EAAAphN,UAAAyJ,KAAA,WAGAxJ,KAAAohN,QACAn5K,KAAA,UACAriC,IAAA,kBAEAN,EAAAvF,UAAAyJ,KAAAwb,KAAAhlB,KACA,EAEAmhN,CACA,IACA1pN,OCnIA,mCACA,SACA,UACA,WACA,UACA,aACA,yBACA,KACA,eACA,mBACA,SAAA2B,EAAAkM,EAAAm5B,EAAAjpB,EAAAu9B,EAAA64J,EAAA9nM,EAAAgnM,EAAAr6I,GACA,aAEA,IAAA10B,EAAA,CACAzgC,KAAA,CACAqmN,yBAAA,SACAC,uBAAA,SACAvW,kBAAA,MACA6J,qBAAA,gBACA/kK,MAAA,CACA8C,OAAAF,EAAAS,WAEAquK,aAAA,EACAC,kBAAA,IAIA,SAAAC,EAAA5+L,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,WAAA2iC,EAAA5Y,GAEAnjB,KAAA1E,KAAAoI,SAAA8R,EAAA1D,+BAAA9R,KAAA1E,KAAAoI,WAAA,GAEA1D,KAAAqhD,OAAAjoD,EAAA,WACAwM,IAAA,CACAoH,MAAA,OACAmB,OAAA,OACA6oC,SAAA,WAEAnwC,SAAA7G,KAAAuF,UAEAvF,KAAAuF,SACAI,SAAA,mBAEA3F,KAAAqhD,OACA17C,SAAA,WAEA84B,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAqhD,QAEArhD,KAAAqzC,QAAA,IAAAN,EAAA/yC,UAAA1E,KAAA60C,MAAAnwC,KAAAqhD,QAEArhD,KAAAgiN,oBAEAhiN,KAAAkK,kBAAA,2BACAlK,KAAAkK,kBAAA,0BACA,CA0IA,OAxIA5E,EAAA3F,OAAAoiN,EAAAz8M,GAEAy8M,EAAAnoL,SAAA,eAEAmoL,EAAAhiN,UAAAkiN,gBAAA,CACA,CAAArxM,IAAA,gBAAApE,MAAA,iBACA,CAAAoE,IAAA,YAAApE,MAAA,aACA,CAAAoE,IAAA,kCAAApE,MAAA,mCACA,CAAAoE,IAAA,gBAAApE,MAAA,qBAGAu1M,EAAAhiN,UAAAmiN,2BAAA,CACA,CAAAtxM,IAAA,OAAApE,MAAA,QACA,CAAAoE,IAAA,SAAApE,MAAA,UACA,CAAAoE,IAAA,QAAApE,MAAA,UAGAu1M,EAAAhiN,UAAAoiN,yBAAA,CACA,CAAAvxM,IAAA,MAAApE,MAAA,OACA,CAAAoE,IAAA,SAAApE,MAAA,UACA,CAAAoE,IAAA,SAAApE,MAAA,WAGAu1M,EAAAhiN,UAAAqiN,mBAAA,CACA,CAAAxxM,IAAA,MAAApE,MAAA,kBACA,CAAAoE,IAAA,UAAApE,MAAA,0BACA,CAAAoE,IAAA,SAAApE,MAAA,yBACA,CAAAoE,IAAA,SAAApE,MAAA,sBACA,CAAAoE,IAAA,SAAApE,MAAA,2BACA,CAAAoE,IAAA,SAAApE,MAAA,8BACA,CAAAoE,IAAA,QAAApE,MAAA,2BAGAu1M,EAAAhiN,UAAAgH,UAAA,WACA/G,KAAAqzC,QAAAK,SACA1zC,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MAEAA,KAAAqjB,aACArjB,KAAAqiN,kBACAriN,KAAA2M,eACA,EAEAo1M,EAAAhiN,UAAAsjB,WAAA,YACA,IAAAotC,GAAAC,wBAAA1wD,KAAAuF,SAAAvF,MAEAA,KAAA1E,KAAAoI,SAAAq+F,UAAA,IAAA/hG,KAAA1E,KAAAoI,SAAAq+F,QAAAp+F,SACA3D,KAAAuF,SAAAI,SAAA,YAEA,EAGAo8M,EAAAhiN,UAAAsiN,gBAAA,WACA,kBAAAriN,KAAA1E,KAAA45M,qBACAl1M,KAAAqhD,OAAAz7C,IAAA,+BACA,oCAAA5F,KAAA1E,KAAA45M,qBACAl1M,KAAAqhD,OAAAz7C,IAAA,CACA,4BACA,gCACA,sBAAA5F,KAAA1E,KAAAqmN,yBAAA,IAAA3hN,KAAA1E,KAAAsmN,yBAEA,cAAA5hN,KAAA1E,KAAA45M,qBACAl1M,KAAAqhD,OAAAz7C,IAAA,CAIA,kBAAA5F,KAAA1E,KAAA6vM,cAAAL,EAAAH,oBAAA,iBACA,kCAEA,kBAAA3qM,KAAA1E,KAAA45M,sBACAl1M,KAAAqhD,OAAAz7C,IAAA,CACA,0BACA,gCACA,sBAAA5F,KAAA1E,KAAAqmN,yBAAA,IAAA3hN,KAAA1E,KAAAsmN,wBAEA,EAEAG,EAAAhiN,UAAAo3C,WAAA,WACAn3C,KAAAqhD,OACAz7C,IAAA,uBACA5F,KAAAgiN,mBACA,EAEAD,EAAAhiN,UAAAiiN,kBAAA,WACAhiN,KAAA1E,KAAAgnN,eACAtiN,KAAAwJ,MACA,EAEAu4M,EAAAhiN,UAAA6mC,SAAA,SAAA8M,GACA1zC,KAAAqhD,OACAz4C,YAAA,WAEA,IAAA4D,EAAAgJ,EAAA1D,+BAAA4hC,EAAAlnC,OAEA,GAAAA,EAEA,cAAApT,EAAAsM,KAAA8G,GAAA,CAEA,GAAAA,EAAAkG,MADA,kCAEA1S,KAAAuiN,YAAA,IAAA/1M,EAAA,YACA,CACA,IAAAg2M,EAAAxiN,KAAAyiN,qBAAAj2M,GACAxM,KAAAuiN,YAAAC,EAAA,GACA,CACA,MACA,IAAAxuM,EAAA0/B,EAAAlnC,MAAAwH,KAAA0/B,EAAAlnC,MAAAya,IAEA,GAAAjT,EAAA,CACA,IAAA0uM,EAAA1iN,KAAAyiN,qBAAAzuM,GAEA0uM,EACA1iN,KAAAuiN,YAAAG,EAAAhvK,EAAAlnC,MAAA0yM,UAAAxrK,EAAAlnC,MAAA2yM,UAEAn/M,KAAAm3C,YACA,CACA,MApBAn3C,KAAAm3C,YAqBA,EAEA4qK,EAAAhiN,UAAAwiN,YAAA,SAAA5xL,EAAAg9H,GACA3tJ,KAAAqhD,OACAz7C,IAAA,0BAAA+qB,EAAA,KACAsX,KAAA,MAAA0lH,GAEA3tJ,KAAA1E,KAAAgnN,eACAtiN,KAAA8I,MACA,EAEAi5M,EAAAhiN,UAAA0iN,qBAAA,SAAA9xL,GACA,OAAAi7K,EAAAZ,QAAA,CACAC,UAAAt6K,EACAw6K,aAAAnrM,KAAA1E,KAAA6vM,aACAC,aAAAprM,KAAA1E,KAAA45M,qBACA7J,kBAAArrM,KAAA1E,KAAA+vM,kBACA/mM,KAAAtE,KAAA1E,KAAAgJ,MAEA,EAEAy9M,CACA,IACAtqN,OClMA,2CACA,SACA,UACA,WACA,UACA,eACA,KACA,aACA,gBACA,SAAA2B,EAAAkM,EAAAm5B,EAAAjpB,EAAAs1L,EAAAhnM,EAAA3K,EAAA46C,GACA,aAEA,IAAAhY,EAAA,CACAzgC,KAAA,CACA24C,SAAA,CACAlvC,mBAAA,EACAmvC,YAAA,EACAO,YAAA,eAKAkuK,EACA,OADAA,EAEA,WAFAA,EAGA,OAGA,SAAAC,EAAAz/L,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAA1E,KAAAoI,SAAA8R,EAAA1D,+BAAA9R,KAAA1E,KAAAoI,WAAA,GAEA1D,KAAA6iN,cAAA,EACA7iN,KAAA8iN,iBAAA,GACA9iN,KAAAm4B,QAAA,KACAn4B,KAAA+5D,aAAA,KACA/5D,KAAA+iN,eAAA,KAEA/iN,KAAAuF,SACAI,SAAA,qCAEA3F,KAAAgjN,cAAA5pN,EAAA,2CACAyN,SAAA7G,KAAAuF,UAEAvF,KAAAijN,aAEAxkL,EAAAK,aAAA9+B,KACA,CAqVA,OAnVAsF,EAAA3F,OAAAijN,EAAAt9M,GAEAs9M,EAAAhpL,SAAA,mBAEAgpL,EAAA7iN,UAAAgH,UAAA,WACA,IAAAhG,EAAAf,KACAA,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2C,OAAAsxC,SAAAhzC,MAAAjB,MACAA,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAo8C,YACA,SAAAp8C,GACAyF,EAAA2yC,OAAAp4C,EACA,IAEA0E,KAAAs4C,UAAAt4C,KAAA2C,OAAA+B,WAAA6zC,gBAAAv4C,KAAA1E,KAAAoJ,YACA1E,KAAA2M,eACA,EAEAi2M,EAAA7iN,UAAAmjN,eAAA,WACAljN,KAAA1E,KAAA6nN,iBACAnjN,KAAAojN,kBACApjN,KAAAqjN,oBAAAlqN,EAAAgQ,MAAAnJ,KAAAsjN,MAAA/gN,KAAAvC,WAAA,IAAAA,KAAA1E,KAAAioN,iBACA,EAEAX,EAAA7iN,UAAAqjN,gBAAA,WACApjN,KAAA1E,KAAA6nN,gBACAt+L,aAAA7kB,KAAAqjN,oBACA,EAEAT,EAAA7iN,UAAA2zC,OAAA,SAAAA,GACA1zC,KAAAojN,kBAEA,IAAAI,EAAAxjN,KAAAm4B,QAGA,GAFAn4B,KAAAm4B,QAAAub,EAAAvb,QAEAn4B,KAAAm4B,QAAAz/B,OAAA,GACA,GAAAsH,KAAA+iN,eAGA,OAFA/iN,KAAA4mC,SAAA5mC,KAAA+iN,qBACA/iN,KAAA+iN,eAAA,MAIA,SAAA/iN,KAAA+5D,aACA,GAAAypJ,EAAA9qN,OAAA,GACA,IAAA+qN,EAAAD,EAAAxjN,KAAA+5D,cAAA/5D,KAAA1E,KAAAooN,kBACAliN,EAAAxB,KAAA2jN,qBAAAF,GAEA,OAAAjiN,EACAxB,KAAA4jN,UAAApiN,GAAA,EAAAmhN,GAEA3iN,KAAA4jN,UAAA,KAAAjB,EACA,MACA3iN,KAAA+5D,aAAA,UAGA/5D,KAAA4jN,UAAA,KAAAjB,EAEA,CACA,EAEAC,EAAA7iN,UAAAujN,MAAA,WACA,GAAAtjN,KAAAm4B,SAAA,IAAAn4B,KAAAm4B,QAAAz/B,OAAA,CAGA,IAAAm0C,EAAA7sC,KAAA+5D,aAAA,EACA/5D,KAAAm4B,QAAA0U,GACA7sC,KAAA4jN,UAAA/2K,GAAA,EAAA81K,GAEA3iN,KAAA4jN,UAAA,KAAAjB,EANA,CAQA,EAEAC,EAAA7iN,UAAA8jN,UAAA,WACA,GAAA7jN,KAAAm4B,SAAA,IAAAn4B,KAAAm4B,QAAAz/B,OAAA,CAGA,IAAAorN,EAAA9jN,KAAA+5D,aAAA,EACA/5D,KAAAm4B,QAAA2rL,GACA9jN,KAAA4jN,UAAAE,GAAA,EAAAnB,GAEA3iN,KAAA4jN,UAAA5jN,KAAAm4B,QAAAz/B,OAAA,KAAAiqN,EANA,CAQA,EAEAC,EAAA7iN,UAAA6jN,UAAA,SAAApiN,EAAAuiN,EAAAC,GACA,IAAAjjN,EAAAf,KACAe,EAAA8hN,cAAA,EACA9hN,EAAAg5D,aAAAv4D,EACA,IAAAgL,EAAAgJ,EAAA1D,+BAAA/Q,EAAAo3B,QAAA32B,GAAAT,EAAAzF,KAAA2oN,wBACA,GAAAz3M,EAAA,CAGA,IAAAwH,EAAAxH,EAAAwH,KAAAxH,EAAAya,IACA,OAAAjT,EAAAtb,OAAA,CACA,IACA4yM,EAAAt3L,EAAAmC,OAAAnC,EAAAu3L,YAAA,OAAAv3L,EAAAtb,OAAAsb,EAAAu3L,YAAA,MAAAjxM,cAEAmnD,EAAA39C,EAAA1G,aAAA,uBAAA4W,GAEA,QALA,8CAKAlb,QAAAwyM,GACA7pJ,EAAA39C,EAAA1G,aAAA,uBAAA4W,QACA,GAAAjT,EAAAzF,KAAA6vM,aAAA,CACA,IAAAQ,EAAAb,EAAAF,WAAA7pM,EAAAzF,KAAAgJ,MACAm9C,EAAA39C,EAAA1G,aAAA,4BAAA4W,EAAA,UAAA23L,EAAAvnM,EAAA,WAAAunM,EAAAtnM,EAAA,+BACA,CAGAjL,EAAA,UAAA6uC,KAAA,MAAAwZ,GAAA/lD,GAAA,mBACAtC,EAAA4G,MAAAjH,SAEA,IAAAsoD,EAAAjoD,EAAA,2CACA6uC,KAAA,QAAAlnC,EAAAzF,KAAA60C,OAEA,kBAAApvC,EAAAzF,KAAA45M,qBACA7zJ,EAAAz7C,IAAA,+BACA,oCAAA7E,EAAAzF,KAAA45M,qBACA7zJ,EAAAz7C,IAAA,CACA,4BACA,gCACA,iCAEA,cAAA7E,EAAAzF,KAAA45M,sBACA7zJ,EAAAz7C,IAAA,CAIA,kBAAA7E,EAAAzF,KAAA6vM,cAAAL,EAAAH,oBAAA,iBACA,gCACA,iCAGAtpJ,EAAAz7C,IAAA,0BAAA67C,EAAA,KAEA,IAAAyiK,EAAAnjN,EAAAiiN,cAAAtgL,WAEAj5B,EAAA1I,EAAAojN,iBAAAH,GACAv6M,GAAA,SAAAA,GACAy6M,EAAAv+M,SAAA,YAAA8D,GACAy6M,EAAA76M,IAAA,gFACA,WACA66M,EAAAnrN,QACA,KAEAmrN,EAAAnrN,SAGAgI,EAAAiiN,cACA3rK,QAAAgK,GAEA,IAAAr4C,EAAAjI,EAAAqjN,iBAAAJ,GAcA,GAbAh7M,GAAA,SAAAA,GACAq4C,EAAA17C,SAAA,YAAAqD,GACAq4C,EAAAh4C,IAAA,gFACA,WACAg4C,EAAAz4C,YAAA,YAAAI,GACAjI,EAAA8hN,cAAA,EACA9hN,EAAAsjN,gBACA,MAEAtjN,EAAA8hN,cAAA,EACA9hN,EAAAsjN,mBAGA,IAAAN,GACAhjN,EAAA+J,eAAA,cACA,IAAA23D,EAAA1hE,EAAAzF,KAAAooN,iBAAA3iN,EAAAo3B,QAAA32B,GAAAT,EAAAzF,KAAAooN,kBAAA,KACA3iN,EAAA6B,aAAA7B,EAAAzF,KAAAoI,SAAA4gN,UAAA1gN,gBAAA6+D,EACA,CAGA1hE,EAAAmiN,gBACA,GACA,CAjFA,CAkFA,EAEAN,EAAA7iN,UAAAqkN,iBAAA,SAAAJ,GACA,OAAAA,IAAArB,EACA3iN,KAAA1E,KAAAipN,kBACAP,IAAArB,EACA3iN,KAAA1E,KAAAkpN,sBACA,IACA,EAEA5B,EAAA7iN,UAAAokN,iBAAA,SAAAH,GACA,OAAAA,IAAArB,EACA3iN,KAAA1E,KAAAmpN,kBACAT,IAAArB,EACA3iN,KAAA1E,KAAAopN,sBACA,IACA,EAEA9B,EAAA7iN,UAAA4kN,aAAA,WACA,OAAA3kN,KAAA1E,KAAAspN,gBACA9gN,EAAA3F,iBAAA6B,KAAA1E,KAAAspN,iBACA9gN,EAAA5G,UAAA,wCACA,EAEA0lN,EAAA7iN,UAAA8kN,cAAA,WACA,OAAA7kN,KAAA1E,KAAAwpN,iBACAhhN,EAAA3F,iBAAA6B,KAAA1E,KAAAwpN,kBACAhhN,EAAA5G,UAAA,yCACA,EAEA0lN,EAAA7iN,UAAAkjN,WAAA,WACA,IAAAliN,EAAAf,KAEAe,EAAAgkN,WAAA3rN,EAAA,WACAwM,IAAA,CACA83B,gBAAA,OAAA19B,KAAA2kN,eAAA,IACA33M,MAAA,MACAmB,OAAA,OACAkiC,MAAA,OACAyhC,iBAAA,YACAD,mBAAA,mBACA1tE,SAAA,WACAI,OAAA,IACA64B,QAAA,QAEA6K,KAAA,qBACAvsC,GAAA,yBACAtC,EAAA4G,MAAA4F,IAAA,CACAw3B,QAAA,KAEA,IACA1hC,GAAA,yBACAtC,EAAA4G,MAAA4F,IAAA,CACAw3B,QAAA,OAEA,IACA1hC,GAAA,oBACAqF,EAAAymD,OAAA,WACAzmD,EAAA8iN,WACA,GACA,IACAh9M,SAAA9F,EAAAwE,UAEA,IAAAy/M,EAAA5rN,EAAA,WACAwM,IAAA,CACAoH,MAAA,MACAmB,OAAA,OACAkiC,MAAA,OACAlsC,SAAA,WACAI,OAAA,MAEA0jC,KAAA,qBACAphC,SAAA9F,EAAAwE,UAEAxE,EAAAzF,KAAAoI,SAAA88B,WAAA,IAAAz/B,EAAAzF,KAAAoI,SAAA88B,SAAA78B,SACAqhN,EACAtpN,GAAA,oBACA,GAAAqF,EAAA4B,OAAA,CACA,IAAA8/D,EAAA1hE,EAAAzF,KAAAooN,kBAAA3iN,EAAAo3B,QAAAp3B,EAAAo3B,QAAAp3B,EAAAg5D,cAAAh5D,EAAAzF,KAAAooN,kBAAA,KACA3iN,EAAA4B,OAAAe,SAAAqI,QAAAhL,EAAAzF,KAAAoI,SAAA88B,SAAA58B,gBAAA7C,EAAAwE,SAAAk9D,EAFA,CAGA,IAGA1hE,EAAAkkN,YAAA7rN,EAAA,WACAwM,IAAA,CACA83B,gBAAA,OAAA19B,KAAA6kN,gBAAA,IACA73M,MAAA,MACAmB,OAAA,OACAkiC,MAAA,OACAyhC,iBAAA,YACAD,mBAAA,oBACA1tE,SAAA,WACAI,OAAA,IACA64B,QAAA,QAEA6K,KAAA,qBACAvsC,GAAA,yBACAtC,EAAA4G,MAAA4F,IAAA,CACAw3B,QAAA,KAEA,IACA1hC,GAAA,yBACAtC,EAAA4G,MAAA4F,IAAA,CACAw3B,QAAA,OAEA,IACA1hC,GAAA,oBACAqF,EAAAymD,OAAA,WACAzmD,EAAAuiN,OACA,GACA,IACAz8M,SAAA9F,EAAAwE,SACA,EAEAq9M,EAAA7iN,UAAAynD,MAAA,SAAApkC,GACApjB,KAAA6iN,aACA7iN,KAAA8iN,iBAAAjiN,KAAAuiB,GAEAA,GAEA,EAEAw/L,EAAA7iN,UAAAskN,eAAA,WACA,IAAArkN,KAAA8iN,iBAAApqN,QACAsH,KAAA8iN,iBAAA9jM,OACAoE,EACA,EAEAw/L,EAAA7iN,UAAAwM,SAAA,WACA,GAAAvM,KAAA1E,KAAAooN,kBAAA1jN,KAAA+5D,aACA,OAAA/5D,KAAAm4B,QAAAn4B,KAAA+5D,cAAA/5D,KAAA1E,KAAAooN,iBAIA,EAEAd,EAAA7iN,UAAAo3C,WAAA,WACAn3C,KAAAm4B,QAAAz/B,OAAA,GACAsH,KAAA4jN,UAAA,KAAAjB,EAEA,EAEAC,EAAA7iN,UAAA6mC,SAAA,SAAA8M,GACA,GAAAA,EAAAlnC,OAAAxM,KAAA1E,KAAAooN,iBACA,GAAA1jN,KAAAm4B,QAAA,CACA,IAAA32B,EAAAxB,KAAA2jN,qBAAAjwK,EAAAlnC,OACA,OAAAhL,GACAxB,KAAA4jN,UAAApiN,GAAA,EAAAmhN,EAEA,MACA3iN,KAAA+iN,eAAArvK,CAGA,EAEAkvK,EAAA7iN,UAAA4jN,qBAAA,SAAA/yM,GACA,QAAAnY,EAAA,EAAAA,EAAAuH,KAAAm4B,QAAAz/B,OAAAD,IAAA,CAEA,GADAuH,KAAAm4B,QAAA1/B,GAAAuH,KAAA1E,KAAAooN,oBACA9yM,EACA,OAAAnY,CAEA,CAEA,WACA,EAEAmqN,CACA,IACAnrN,OCvYA,sCACA,aAEA,IAAAytN,EAAA,WACAllN,KAAAmlN,kBAAA,GACAnlN,KAAAolN,iBAAA,GACAplN,KAAAq/B,OAAA,EACA,EAaA,OAXA6lL,EAAAnlN,UAAAslN,uBAAA,WACA,OAAAlsN,EAAA0zL,MAAA7sL,KAAAslN,+BAAA,OACA,EAEAJ,EAAAnlN,UAAAulN,6BAAA,WACA,OAAAnsN,EAAAghB,OAAAna,KAAAmlN,mBAAA,SAAAI,GACA,6CAAAA,EAAAC,YACA,gDAAAD,EAAAC,UACA,GACA,EAEA,IAAAN,CAEA,IACAztN,OCvBA,eACA,SACA,aACA,uBACA,WACA,mBACA,SAAA2B,EAAAD,EAAA+rN,EAAAzmL,EAAApP,GAEA,IAAAo2L,EAAA,YAEAC,EAAA,SAAAl5M,GACA,QAAAA,YAAA3T,WAAA2T,EAAA9T,QAAA+sN,IACAj5M,EAAA3T,UAAA,EAAA4sN,KACA,EAEAE,EAAA,SAAAC,GACA,OAAAH,EAAA7xM,KAAAE,UAAA8xM,EACA,EAEAC,EAAA,SAAAC,GACA,OAAAlyM,KAAAC,MAAAiyM,EAAAjtN,UAAA4sN,GACA,EAmBAM,EAAA,SAAAC,EAAAxwI,GACA,IAAAz0E,EAAAf,KACAe,EAAAilN,iBAGAjlN,EAAAzF,KADAk6E,EACA,CACAn2C,OAAAm2C,EAAAh2C,QACA3E,KAAA26C,EAAA36C,MAGA,CACAwE,OAAA,KACAxE,KAAA,IAIA95B,EAAAwE,SAAAxE,EAAAklN,8BACAllN,EAAAmlN,QAAAnlN,EAAAolN,aAAAH,EACA,EAEAD,EAAAhmN,UAAAkmN,4BAAA,WACA,OAAA7sN,EAAA,WACAuM,SAAA,wBACA,EAEAogN,EAAAhmN,UAAAomN,aAAA,WACA,IAAAplN,EAAAf,KAEAkmN,EAAA9sN,EAAA,WACAuM,SAAA,+BACAkB,SAAA9F,EAAAwE,UAgBA,OAdAvF,KAAAgmN,eAAA5gN,UACA8gN,EACAxqN,GAAA,oBACAqF,EAAAqlN,YACA,IAGA,KAAArlN,EAAAzF,KAAAu/B,MACAqrL,EAAArhL,KAAA9jC,EAAAzF,KAAAu/B,MACA4D,EAAAK,aAAA/9B,EAAA,KAAAmlN,IACAlmN,KAAAgmN,eAAA5gN,UACApF,KAAA0+M,eAAAwH,GAGAA,CACA,EAEAH,EAAAhmN,UAAAqmN,WAAA,WACA,IAAArlN,EAAAf,KAIA,GAFAe,EAAAmlN,QAAA18M,OAEAzI,EAAAslN,QAGA,OAFAtlN,EAAAslN,QAAAv9M,YACA/H,EAAAslN,QAAAn7M,QAAA,SAIAnK,EAAAslN,QAAAjtN,EAAA,WACAuM,SAAA,+BACAkB,SAAA9F,EAAAwE,UAEA,IAAA+gN,EAAAtmN,KAAAumN,eACA5gN,SAAA,yBACAkB,SAAA9F,EAAAslN,SAEAG,EAAAptN,EAAA,WACAuM,SAAA,6BACAkB,SAAA9F,EAAAslN,SAEAI,EAAArtN,EAAA,eACA0/C,IAAA/3C,EAAAzF,KAAAu/B,MACAl1B,SAAA,2BACAC,IAAA,CACAoH,MAAA,OACA,qBAEAnG,SAAA2/M,GAEAzlN,EAAAilN,eAAAU,uBACAF,EACA7gN,SAAA,qCAEA2gN,EACA3gN,SAAA,iCAEA3F,KAAA2mN,iBACAhhN,SAAA,2BACAkB,SAAA9F,EAAAslN,SAEArmN,KAAA4mN,4BACAjhN,SAAA,sCACAkB,SAAA9F,EAAAslN,UAOAntN,QAAA,CACA,+BACA,iCACA,4CACA,WACA,IAAA2tN,EAAA,IAAAC,UAAAC,OAAAN,EAAA,IACAO,QAAAV,EAAAjuN,IAAA,GACA4uN,YAAAC,qBACA92B,YAAAl3L,QAAAw9L,MAAA,8BAGAmwB,EAAAM,QAAA,mBACAV,EAAAnrN,KAAA,SAAAurN,GACAztN,EAAAytN,EAAAO,SAAAjmI,QAAAkmI,yBACAR,EAAAltK,OACA,IAEAktK,EAAAnrN,GAAA,qBACAqF,EAAAumN,uBAAAT,EACA,IAEAA,EAAAnrN,GAAA,oCACAqF,EAAAumN,uBAAAT,EACA,IAEAA,EAAAnrN,GAAA,mBACAqF,EAAAilN,eAAAuB,kBACA,GACA,GACA,EAEAxB,EAAAhmN,UAAAwmN,aAAA,WACA,IAAAD,EAAAltN,EAAA,WAgDA,OA9CAA,EAAA,cACA6uC,KAAA,iCACAtiC,SAAA,eACAC,IAAA,wBACAi1B,KAAA,KACAh0B,SAAAy/M,GAEAltN,EAAA,cACA6uC,KAAA,mCACAtiC,SAAA,eACAC,IAAA,yBACAi1B,KAAA,KACAh0B,SAAAy/M,GAEAltN,EAAA,cACA6uC,KAAA,sCACAtiC,SAAA,eACAC,IAAA,iCACAi1B,KAAA,KACAh0B,SAAAy/M,GAEAltN,EAAA,cACA6uC,KAAA,gDACAtiC,SAAA,eACAk1B,KAAA,KACAh0B,SAAAy/M,GAEAltN,EAAA,cACA6uC,KAAA,8CACAtiC,SAAA,eACAk1B,KAAA,MACAh0B,SAAAy/M,GAEAltN,EAAA,4CACA6uC,KAAA,uCACAphC,SAAAy/M,GAEAltN,EAAA,SACAoQ,OACAy+B,KAAA,sCACA4D,OAAAzyC,EAAA,uCACA6uC,KAAA,uCACA4D,OAAAzyC,EAAA,2CACA6uC,KAAA,wCACAphC,SAAAy/M,GAEAA,CACA,EAEAP,EAAAhmN,UAAA4mN,eAAA,WACA,IAAA5lN,EAAAf,KACAwnN,EAAApuN,EAAA,WAiCA,OA/BA2H,EAAA0mN,aAAAruN,EAAA,cACA4T,MAAA,KACAtR,GAAA,qBACA+iC,EAAAgC,iBAAA1/B,EAAA,KAAAA,EAAAmlN,SACAnlN,EAAAzF,KAAA+jC,OAAAt+B,EAAA0mN,aAAA3uK,MACAra,EAAAK,aAAA/9B,EAAA,KAAAA,EAAAmlN,QACA,IACAr/M,SAAA2gN,GACA37K,OAAAzyC,EAAA,cAAAoT,MAAA,KAAAquB,KAAA,SAEA1hC,EAAA+I,MAAAgjN,EAAA7lL,OAAAqoL,eACA1tM,QAAA,SAAAiiB,GAAA,OAAAA,EAAA3jC,MAAA,IAAAgC,aAAA,IACA6f,QAAA,SAAA8hB,GAAA,OAAAA,EAAAylB,QAAAzlB,EAAAylB,OAAAzjB,OAAA,IACAp8B,SAAA,SAAAo6B,GACA7iC,EAAA,cACAoT,MAAAyvB,EAAArhC,GACAigC,KAAAoB,EAAA3jC,OAEAuO,SAAA9F,EAAA0mN,aACA,IAEA1mN,EAAA0mN,aAAA3uK,IAAA/3C,EAAAzF,KAAA+jC,QAEAjmC,EAAA,cACAuM,SAAA,eACAk1B,KAAA,KACAn/B,GAAA,oBACAqF,EAAAilN,eAAA2B,cAAA5mN,EACA,IACA8F,SAAA2gN,GAEAA,CACA,EAEAzB,EAAAhmN,UAAA6mN,0BAAA,WACA,IAAA7lN,EAAAf,KACA4nN,EAAAxuN,EAAA,WACA4T,MAAA,IAsCA,OApCA5T,EAAA,cACAuM,SAAA,eACAk1B,KAAA,KACAn/B,GAAA,oBACAqF,EAAAilN,eAAA6B,iBAAA9mN,EACA,IACA8F,SAAA+gN,GAEAxuN,EAAA,cACAuM,SAAA,eACAk/B,KAAA,YACAnpC,GAAA,oBACAqF,EAAAilN,eAAA8B,cAAA/mN,IACAA,EAAAgnN,cAEA,IACAlhN,SAAA+gN,GAEAxuN,EAAA,cACAuM,SAAA,eACAk/B,KAAA,YACAnpC,GAAA,oBACAqF,EAAAilN,eAAAgC,gBAAAjnN,IACAA,EAAAgnN,cAEA,IACAlhN,SAAA+gN,GAEAxuN,EAAA,cACAuM,SAAA,eACAk1B,KAAA,KACAn/B,GAAA,oBACAqF,EAAAilN,eAAAiC,gBAAAlnN,EACA,IACA8F,SAAA+gN,GAEAA,CACA,EAEA7B,EAAAhmN,UAAAunN,uBAAA,SAAAT,GACA,IAAAp5C,EAAAo5C,EAAAt6M,UAAA,GAGAkhK,IAFAztK,KAAAkmN,QAAArhL,SAGA7kC,KAAAkmN,QAAAzrK,QACAz6C,KAAAkmN,QAAArhL,KAAA4oI,IAGA,KAAAA,GACAztK,KAAA0+M,eAAA1+M,KAAAkmN,SAGAlmN,KAAA1E,KAAAu/B,KAAA4yI,CACA,EAEAs4C,EAAAhmN,UAAA2+M,eAAA,SAAAwH,GACAA,EAAAzrK,QAEA,IAAAytK,EAAA9uN,EAAA,iBACAuM,SAAA,6BACAk1B,KAAA76B,KAAAgmN,eAAAllI,aAAA,2CACAolI,EAAAr6K,OAAAq8K,EACA,EAGAnC,EAAAhmN,UAAAgoN,aAAA,WACA,IAAAhnN,EAAAf,KACAe,EAAAslN,QAAAttN,SACAgI,EAAAslN,QAAA,KAEA1hM,YAAA,WACA5jB,EAAAqlN,YACA,GACA,EAEAL,EAAAhmN,UAAAooN,YAAA,WACAnoN,KAAAqmN,UACArmN,KAAAqmN,QAAA78M,OACAxJ,KAAAkmN,QAAAp9M,OACA9I,KAAAuF,SAAAK,IAAA,CAAAuI,OAAA,SAEA,EAEA43M,EAAAhmN,UAAAqoN,QAAA,WACA,OACAvtL,KAAA76B,KAAA1E,KAAAu/B,KACA2E,QAAAx/B,KAAA1E,KAAA+jC,OAEA,EAEA,IAAAgpL,EAAA,SAAAhvN,GACA,IAAA0H,EAAAf,KAaA,GAXAe,EAAAwE,SAAAlM,EAAAivN,cACAvnN,EAAA+/E,YAAAznF,EAAAynF,YACA//E,EAAA2lN,qBAAArtN,EAAAqtN,qBACA3lN,EAAAwnN,SAAAlvN,EAAAkvN,UAAA,GACAxnN,EAAAqE,SAAA/L,EAAA+L,SACAiqB,EAAArK,KAAAhlB,KAAA,aAEAe,EAAAynN,gBAAApvN,EAAA,WACAuM,SAAA,kBACAkB,SAAA9F,EAAAwE,UAEAlM,EAAA+L,SAAA,CACA,GAAArE,EAAA2lN,qBAAA,CACA,IAAA+B,EAAA,IAAA1C,EAAAhlN,GACAA,EAAAwnN,SAAA1nN,KAAA4nN,GACA1nN,EAAAynN,gBAAA38K,OAAA48K,EAAAljN,SACA,CAEAxE,EAAA2lN,uBACA3lN,EAAAynN,gBACA7iN,SAAA,0BAEA5E,EAAA2nN,6BAAAtvN,EAAA,WACAuM,SAAA,+BACAkB,SAAA9F,EAAAwE,UAEAxE,EAAA4nN,2BAAAvvN,EAAA,WACAuM,SAAA,6BACAkB,SAAA9F,EAAA2nN,8BAEAtvN,EAAA,cACAyhC,KAAA,KACAn/B,GAAA,oBACA,IAAAktN,EAAA,IAAA7C,EAAAhlN,GACAA,EAAAwnN,SAAA1nN,KAAA+nN,GACA7nN,EAAAynN,gBAAA38K,OAAA+8K,EAAArjN,SACA,IACAsB,SAAA9F,EAAA4nN,6BAGAvvN,EAAAlB,UAAAwD,GAAA,kBAAA4c,GACA,IAAAuwM,EAAAzvN,EAAAkf,EAAA+rB,QAAAyrC,QAAA,0BACAg5I,EAAA1vN,EAAAkrJ,KAAAvjJ,EAAAwnN,UAAA,SAAA71L,GACA,OAAAA,EAAAntB,SAAA,KAAAsjN,EAAA,EACA,IACAzvN,EAAAgJ,KAAA0mN,GAAA,SAAAl4M,EAAA24B,GACAA,EAAA4+K,aACA,GACA,GACA,CACA,EA6GA,OA3GAE,EAAAtoN,UAAA8nN,iBAAA,SAAAt+K,GACA,IAAA/nC,EAAAxB,KAAAuoN,SAAAzvN,QAAAywC,GACAq/K,EAAA,IAAA7C,EAAA/lN,MACAA,KAAAuoN,SAAA9mN,OAAAD,EAAA,EAAAonN,GAEAr/K,EAAAhkC,SAAAi1D,OAAAouJ,EAAArjN,SACA,EAEA8iN,EAAAtoN,UAAAkoN,gBAAA,SAAA1+K,GACA,IAAA/nC,EAAAxB,KAAAuoN,SAAAzvN,QAAAywC,GAAA,EACAq/K,EAAA,IAAA7C,EAAA/lN,MACAA,KAAAuoN,SAAA9mN,OAAAD,EAAA,EAAAonN,GAEAr/K,EAAAhkC,SAAA4kF,MAAAy+H,EAAArjN,SACA,EAEA8iN,EAAAtoN,UAAA4nN,cAAA,SAAAp+K,GACA,IAAA/nC,EAAAxB,KAAAuoN,SAAAzvN,QAAAywC,GACAvpC,KAAAuoN,SAAA9mN,OAAAD,EAAA,GAEA+nC,EAAAhkC,SAAAxM,QACA,EAEAsvN,EAAAtoN,UAAA+nN,cAAA,SAAAv+K,GACA,IAAA/nC,EAAAxB,KAAAuoN,SAAAzvN,QAAAywC,GAEA,WAAA/nC,IAIAxB,KAAAuoN,SAAA9mN,OAAAD,EAAA,GACAxB,KAAAuoN,SAAA9mN,OAAAD,EAAA,IAAA+nC,GAEAvpC,KAAAuoN,SAAA/mN,GAAA+D,SAAAi1D,OAAAjxB,EAAAhkC,WAEA,EACA,EAEA8iN,EAAAtoN,UAAAioN,gBAAA,SAAAz+K,GACA,IAAA/nC,EAAAxB,KAAAuoN,SAAAzvN,QAAAywC,GAEA,OAAA/nC,IAAAxB,KAAAuoN,SAAA7vN,SAIAsH,KAAAuoN,SAAA9mN,OAAAD,EAAA,GACAxB,KAAAuoN,SAAA9mN,OAAAD,EAAA,IAAA+nC,GAEAvpC,KAAAuoN,SAAA/mN,GAAA+D,SAAA4kF,MAAA5gD,EAAAhkC,WAEA,EACA,EAEA8iN,EAAAtoN,UAAAgpN,cAAA,WACA5vN,EAAA0I,QAAA7B,KAAAuoN,UAAA,SAAAh/K,GACAA,EAAAhkC,SAAAxM,QACA,IACAiH,KAAAuoN,SAAA,EACA,EAEAF,EAAAtoN,UAAAipN,UAAA,SAAAvjN,GACA,IAAA1E,EAAAf,KAEAe,EAAAgoN,gBAEAtjN,EAAA8iN,UACApvN,EAAA0I,QAAA4D,EAAA8iN,UAAA,SAAAU,GACA,IAAA1/K,EAAA,IAAAw8K,EAAAhlN,EAAAkoN,GACAloN,EAAAwnN,SAAA1nN,KAAA0oC,GACAxoC,EAAAynN,gBAAA38K,OAAAtC,EAAAhkC,SACA,GAEA,EAEA8iN,EAAAtoN,UAAAm8H,WAAA,SAAA1mD,GACA,GAAAkwI,EAAAlwI,GACAx1E,KAAAgpN,UAAAnD,EAAArwI,QACA,CACAx1E,KAAA+oN,gBAEA,IAAAx/K,EAAA,IAAAw8K,EAAA/lN,KAAA,CACA66B,MAtdAruB,EAsdAgpE,GArdA,iBAAAhpE,IAIAA,EACAqT,QAAA,cACAA,QAAA,eACAA,QAAA,cACAA,QAAA,aACAA,QAAA,aACAA,QAAA,cACAA,QAAA,iBACAA,QAAA,iBACAA,QAAA,0BAwcA,MAEA7f,KAAAuoN,SAAA1nN,KAAA0oC,GACAvpC,KAAAwoN,gBAAA38K,OAAAtC,EAAAhkC,SACA,CA1dA,IAAAiH,CA2dA,EAGA67M,EAAAtoN,UAAAqoN,QAAA,WACA,OACAG,SAAAnvN,EAAA8N,IAAAlH,KAAAuoN,UAAA,SAAAh/K,GACA,OAAAA,EAAA6+K,SACA,IAEA,EAEAC,EAAAtoN,UAAA0Q,SAAA,WACA,IAAAhL,EAAAzF,KAAAooN,UACA,OAAAzC,EAAAlgN,EACA,EAEA4iN,EAAAtoN,UAAAgvB,MAAA,WACA/uB,KAAAwoN,gBAAAzvN,SACAiH,KAAA0oN,6BAAA3vN,QACA,EAEA,CACAsvN,iBACA3C,mBACAG,0BACAF,wBAEA,IACAluN,OC9gBA,iCACA,SACA,KACA,UACA,WACA,UACA,cACA,UACA,eACA,aACA,mBACA,SAAA2B,EAAA0K,EAAAwB,EAAAm5B,EAAAjpB,EAAA0zM,EAAArkL,EAAA9zB,EAAAgiC,EAAA0d,GACA,aAEA,IAAA10B,EAAA,CACAzgC,KAAA,CACA6tN,sBAAA,EACA16M,iBAAA,EACAH,kBAAA,EACAg0M,eAAA,EACA8G,qCAAA,EACAj5K,MAAA,CACA8C,OAAAF,EAAAS,WAEAtT,KAAA,YAIAiuE,EAAA7oG,EACA,SAAA+jN,EAAAlmM,GACAgrF,EAAAnpF,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAA1E,KAAAoI,SAAA8R,EAAA1D,+BAAA9R,KAAA1E,KAAAoI,WAAA,GAEA1D,KAAAuF,SACAI,SAAA,oDAEA3F,KAAAuF,SACAI,SAAA,YAEA,IAAA8qD,GAAAC,wBAAA1wD,KAAAuF,SAAAvF,MAEAA,KAAA1E,KAAAoI,SAAAq+F,UAAA,IAAA/hG,KAAA1E,KAAAoI,SAAAq+F,QAAAp+F,SACA3D,KAAAuF,SAAAI,SAAA,aAGA3F,KAAAkK,kBAAA,2BACAlK,KAAAkK,kBAAA,2BAEAlK,KAAAqzC,QAAA,IAAAN,EAAA/yC,UAAA1E,KAAA60C,MAAAnwC,KAAAuF,SACA,CA6PA,OA3PA4oG,EAAAxuG,OAAA0pN,GAEAA,EAAAzvL,SAAA,cAEAyvL,EAAAtpN,UAAAupN,aAAA,SAAArJ,GACAjgN,KAAA4mC,SAAA,CAAAp6B,MAAAxM,KAAAupN,kBAAAtJ,GAAAv6M,KAAAqL,EAAAO,QACA,EAEA+3M,EAAAtpN,UAAAwpN,kBAAA,SAAAtJ,GACA,OAAAA,CACA,EAEAoJ,EAAAtpN,UAAAypN,eAAA,WACAxpN,KAAA2M,eACA,EAEA08M,EAAAtpN,UAAAgH,UAAA,WACA/G,KAAAqzC,QAAAK,SAEA1zC,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAAs4C,UAAAt4C,KAAA2C,OAAA+B,WAAA6zC,gBAAAv4C,KAAA1E,KAAAoJ,YAEA1E,KAAA1E,KAAAgnN,cAGAtiN,KAAAwJ,OAFAxJ,KAAAypN,gBAKAzpN,KAAA1E,KAAA2kN,UACAjgN,KAAAspN,aAAAtpN,KAAA1E,KAAA2kN,UAEAjgN,KAAA1E,KAAAouN,eACA1pN,KAAAuF,SAAAI,SAAA,kBAGA3F,KAAA1E,KAAAk5M,wBACAx0M,KAAAuF,SAAAI,SAAA,6BAGA3F,KAAA2M,eACA,EAEA08M,EAAAtpN,UAAAo3C,WAAA,WACAn3C,KAAA1E,KAAAgnN,cACAtiN,KAAAwJ,OAEAxJ,KAAA2pN,OACA3pN,KAAA2pN,OAAA9uL,KAAA,IAEA76B,KAAAgmN,eAAA9pF,WAAA,GAEA,EAEAmtF,EAAAtpN,UAAA6pN,cAAA,WACA,IAAA/uL,EAAA76B,KAAA66B,KAEA,GAAA76B,KAAA1E,KAAAuuN,aAAA,CACA,GAAAhvL,EAAA,CACA,IAAA2mF,EAAA,IAAAjvG,OAAA,uBACAsoB,IAAAhb,QAAA2hG,EAAA19G,EAAA1G,aAAA,IACA,CAEA,IAAA0sN,EAAA1wN,EAAA,UACAyrC,OAAAiO,SAAAjY,IAAA,IAEA76B,KAAA2pN,OACAlvK,QACA5O,OAAAi+K,GACAlkN,IAAA,CACA8vC,WAAA,SACAo+B,aAAA,cAEA,MACA9zE,KAAA1E,KAAAyuN,WAAAlvL,IACAA,EAAAgK,EAAAgO,MAAAhY,IAEA76B,KAAA2pN,OACA9uL,QAAA,IACAj1B,IAAA,CACA8vC,WAAA,WACAo+B,aAAA,eAIA9zE,KAAA1E,KAAA6tN,sBACAnpN,KAAAqzC,QAAAK,OAAA7Y,GAEA76B,KAAA1E,KAAAgnN,gBACAznL,SAAA,KAAAA,EACA76B,KAAAwJ,OAEAxJ,KAAA8I,OAGA,EAEAugN,EAAAtpN,UAAA6mC,SAAA,SAAA8M,GACA1zC,KAAAuF,SACAqD,YAAA,WAEA8qC,EAAAlnC,MAAA,OAAAknC,EAAAlnC,YAAApG,IAAAstC,EAAAlnC,OAAA,KAAAknC,EAAAlnC,MAAAxM,KAAA1E,KAAAg5C,aAAAZ,EAAAlnC,MAEA08M,EAAAxD,iBAAAhyK,EAAAlnC,QACAxM,KAAAgqN,gBACAhqN,KAAAiqN,eACAjqN,KAAAgmN,eAAA9pF,WAAAxoF,EAAAlnC,OACAxM,KAAA8I,SAEA9I,KAAAkqN,eACAlqN,KAAAypN,gBAEAzpN,KAAA66B,KAAA76B,KAAAs4C,UAAA6D,yBAAAzI,EAAAhuC,KAAAguC,EAAAlnC,OACAxM,KAAA4pN,gBAEA,EAGAP,EAAAtpN,UAAAwM,SAAA,WACA,OAAAvM,KAAA2pN,OACA3pN,KAAA2pN,OAAA9uL,OACA,IACA,EAEAwuL,EAAAtpN,UAAAmqN,aAAA,WACAlqN,KAAAgmN,iBACAhmN,KAAAgmN,eAAAj3L,QACA/uB,KAAAgmN,eAAA,KAEA,EAEAqD,EAAAtpN,UAAAiqN,cAAA,WACAhqN,KAAA2pN,SACA3pN,KAAA2pN,OAAA5wN,SACAiH,KAAA2pN,OAAA,KAEA,EAEAN,EAAAtpN,UAAAkqN,aAAA,WACAjqN,KAAAgmN,iBACAhmN,KAAAgmN,eAAA,IAAAkD,EAAAb,eAAA,CACAC,cAAAtoN,KAAAuF,SACAgjN,SAAAvoN,KAAA1E,KAAAitN,SACAnjN,UAAA,IAGApF,KAAA8+B,eAEA,EAEAuqL,EAAAtpN,UAAA++B,aAAA,WACA9+B,KAAAgmN,eACAvnL,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAgmN,eAAAzgN,UAEAk5B,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAuF,SAEA,EAEA8jN,EAAAtpN,UAAAoqN,mBAAA,WACA,gBAAAnqN,KAAA1E,KAAA4kC,KACA9mC,EAAA,UACAuM,SAAA,2BACA,aAAA3F,KAAA1E,KAAA4kC,KACA9mC,EAAA,UACAuM,SAAA,2BACA,UAAA3F,KAAA1E,KAAA4kC,KACA9mC,EAAA,aACA6uC,KAAA,MAAAjoC,KAAAmH,SAAAu9B,WAAA,IAAA1kC,KAAA1E,KAAA8uN,gBAEAhxN,EAAA,UAEA,EAEAiwN,EAAAtpN,UAAA0pN,cAAA,WACAzpN,KAAA2pN,SAEA3pN,KAAA1E,KAAA6tN,uBAAAnpN,KAAA1E,KAAA+uN,sCACArqN,KAAAsqN,cAAAlxN,EAAA,WACAuM,SAAA,YACAA,SAAA,mBACAC,IAAA,CACAoH,MAAA,OACAmB,OAAA,SAEAtH,SAAA7G,KAAAuF,UAEAvF,KAAAuqN,mBAAAnxN,EAAA,WACAyN,SAAA7G,KAAAsqN,eAEAtqN,KAAA2pN,OAAA3pN,KAAAmqN,qBACAxkN,SAAA,qBACAC,IAAA,CACA8vC,WAAA,WACAvoC,YAAA,OACAF,OAAA,MAEApG,SAAA7G,KAAAuqN,sBAEAvqN,KAAAwqN,iBAAApxN,EAAA,WACAuM,SAAA,oBACAkB,SAAA7G,KAAAuF,UAEAvF,KAAAsqN,cAAAlxN,EAAA,WACAwM,IAAA,CACAiH,QAAA,OACAG,MAAA,OACAmB,OAAA,SAEAtH,SAAA7G,KAAAwqN,kBAEAxqN,KAAA2pN,OAAA3pN,KAAAmqN,qBACAxkN,SAAA,qCACAC,IAAA,CACAiH,QAAA,OACAoqC,cAAA,SACAyqD,KAAA,WACA10F,MAAA,OACAmB,OAAA,SAEAtH,SAAA7G,KAAAsqN,eAEAtqN,KAAA1E,KAAA6tN,sBAAAnpN,KAAA1E,KAAA+uN,uCACArqN,KAAA2pN,OAAA3pN,KAAAmqN,qBACAvkN,IAAA,CACAoxC,SAAA,SACAnqC,QAAA,cACA,qBAAA7M,KAAA1E,KAAA8tN,qCAAA34M,WACA,gCACAzD,MAAA,SAEAnG,SAAA7G,KAAA2pN,SAGA3pN,KAAA1E,KAAAyoM,eACA/jM,KAAAuF,SAAAK,IAAA,CACAqxE,UAAA,OACAD,UAAA,YAKAh3E,KAAA8+B,eAEA,EAEAuqL,EAAAtpN,UAAA0qN,oBAAA,WACAzqN,KAAAuF,SAAAk1C,QACAz6C,KAAA2pN,OAAA,KACA3pN,KAAAypN,gBACAzpN,KAAA4pN,eACA,EAEAP,CACA,IACA5xN,OCjTA,kBACA,SACA,aACA,OACA,SAAA2B,EAAAD,EAAA2K,GACA,aAEA,IAAA4mN,EAAA,CACA,OACA,MACA,OAGAC,EAAA,CAEA,QACA,WAGA,SAAAC,EAAArlN,GACAvF,KAAAuF,WACAvF,KAAA6qN,OAAA,IACA,CA4HA,OA1HAD,EAAA7qN,UAAAq2E,KAAA,SAAA/8E,GACA2G,KAAA+uB,QAEA11B,EAAA2a,KAGA9a,QAAA,CACA,mBACA8G,KAAA8qN,YAAAvoN,KAAAvC,KAAA3G,GACA,EAEAuxN,EAAA7qN,UAAA+qN,YAAA,SAAAzxN,EAAA6vF,GACA,IAAA6hI,EAAA1xN,EAAA0xN,WAAA/qN,KAAAgrN,aAAA3xN,EAAA2a,KACA,GAAA+2M,EAAA,CAGA,IAAAE,EAAA7xN,EAAA,cACA6uC,KAAA,gBAAAjoC,KAAA+qN,WACA9iL,KAAA,MAAA5uC,EAAA2a,KAEApZ,EAAAzB,EAAAugD,SAAA,KACAwxK,EAAA9xN,EAAA,aACA6uC,KAAA,KAAArtC,GACAqtC,KAAA,2DACAA,KAAA,QAAAjoC,KAAAuF,SAAAyH,SACAi7B,KAAA,SAAAjoC,KAAAuF,SAAA4I,UACA85B,KAAA,qBACAA,KAAA,oBACAA,KAAA,SAAA5uC,EAAA8xN,QACAljL,KAAA,kBACAA,KAAA,WAAA5uC,EAAA+xN,UACAnjL,KAAA,OAAA5uC,EAAAgyN,MACApjL,KAAA,WAAA5uC,EAAA62C,UACAjI,KAAA,YAAA8iL,GACAl/K,OAAAo/K,GAEA5xN,EAAA+xN,UACAF,EAAAjjL,KAAA,YACAA,KAAA,kBAGAjoC,KAAAuF,SAAAsmC,OAAAq/K,GAEAlrN,KAAA6qN,OAAA3hI,EAAAgiI,EAAA7yN,IAAA,IACAizN,UAAAX,EACAY,QAAA,OACAC,SAAAnyN,EAAA+xN,SACAC,KAAAhyN,EAAAgyN,KACAn7K,SAAA72C,EAAA62C,SACAi7K,OAAA,CAAA9xN,EAAA8xN,QACAM,QAAA,CACA,CACA/lN,KAAA,SAAAqlN,EACAp6L,IAAAt3B,EAAA2a,QAKAhU,KAAA6qN,OAAAnvN,GAAA,QAAAsE,KAAA0rN,YAAAnpN,KAAAvC,OAEA3G,EAAA+xN,UACAliI,EAAAtuF,GAAAysF,OAAA,WACArnF,KAAA2rN,MACA,IAGAtyN,EAAAuyN,SACA5rN,KAAA6qN,OAAAnvN,GAAA,QAAArC,EAAAuyN,QArDA,CAsDA,EAEAhB,EAAA7qN,UAAAgvB,MAAA,WACA/uB,KAAA6qN,SACA7qN,KAAA6qN,OAAA7vL,UACAh7B,KAAA6qN,OAAA,KAEA,EAEAD,EAAA7qN,UAAA8rN,SAAA,WACA,cAAA7rN,KAAA6qN,MACA,EAEAD,EAAA7qN,UAAAirN,aAAA,SAAAh3M,GACA,IAAAs3L,EAAAt3L,EAAAxb,MAAA,KAAA+b,MAGA,QADAm2M,EAAA5xN,QAAAwyM,GAEA,OAAAA,EAEA,WAAAA,EACA,YAGA,IAAA54L,EAAAsB,EAAAtB,MAAA,aACA,aAAAA,GAAA,GAAAA,EAAAha,OACA,UAEA,IACA,EAEAkyN,EAAA7qN,UAAA2rN,YAAA,WACAtyN,EAAA,WACAyhC,KAAA,8BACAh0B,SAAA7G,KAAAuF,UACAK,IAAA,CACA2oE,gBAAA,QACApqE,SAAA,WACAsC,KAAA,EACAC,IAAA,EACAC,MAAA,EACAC,OAAA,IAEAilC,OAAAzyC,EAAA,YACAyhC,KAAA,8BACAj1B,IAAA,CACAs2B,MAAA,QACA/3B,SAAA,WACAuC,IAAA,MACAD,KAAA,MACA86B,UAAA,0BAEA,EAEAqpL,CACA,IACAnzN,OCpJA,mCACA,SACA,UACA,UACA,WACA,iBACA,OACA,SAAA2B,EAAAkM,EAAAkQ,EAAAipB,EAAAmsL,EAAA9mN,GACA,aAEA,IAAAi4B,EAAA,CACAzgC,KAAA,CACAkR,MAAA,GACA6+M,MAAA,EACAn7K,UAAA,IAIA,SAAA47K,EAAA3oM,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAAgU,IAAA,KAEAhU,KAAA1E,KAAAgJ,KAAAF,EAAA,MACApE,KAAA1E,KAAAgJ,KAAAF,EAAA,KACApE,KAAA1E,KAAAgJ,KAAAD,EAAA,MACArE,KAAA1E,KAAAgJ,KAAAD,EAAA,KAEArE,KAAAuF,SACAI,SAAA,mBAEA84B,EAAAK,aAAA9+B,KACA,CAyDA,OAvDAsF,EAAA3F,OAAAmsN,EAAAxmN,GAEAwmN,EAAAlyL,SAAA,eAEAkyL,EAAA/rN,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,eACA,EAEAm/M,EAAA/rN,UAAA6mC,SAAA,SAAA8M,GACA,IAAAlnC,EAAAgJ,EAAA1D,+BAAA4hC,EAAAlnC,OACAwH,EAAAxH,EAAAwH,KAAAxH,EAAAya,IAEAjT,KAAAtb,OAAA,EACAsH,KAAAgU,IAAAlQ,EAAA1G,aAAA,uBAAA4W,GACA0/B,EAAAlnC,QACAxM,KAAAgU,IAAA0/B,EAAAlnC,OAEAxM,KAAAyI,aACAzI,KAAA+rN,iBACA,EAEAD,EAAA/rN,UAAAgsN,gBAAA,WACA/rN,KAAA6qN,SACA7qN,KAAA6qN,OAAA,IAAAD,EAAA5qN,KAAAuF,WAEA,IAAAlM,EAAA,CACA2a,IAAAhU,KAAAgU,IACAo3M,SAAAprN,KAAA1E,KAAA8vN,SACAD,OAAAnrN,KAAA1E,KAAA6vN,OACAE,KAAArrN,KAAA1E,KAAA+vN,KACAn7K,SAAAlwC,KAAA1E,KAAA40C,UAGAlwC,KAAA8K,eAAA,gBACAzR,EAAAuyN,QAAA5rN,KAAA4K,sBAAArI,KAAAvC,KAAA,eAEAA,KAAA6qN,OAAAz0I,KAAA/8E,EACA,EAEAyyN,EAAA/rN,UAAAo3C,WAAA,WACAn3C,KAAA6qN,QACA7qN,KAAA6qN,OAAA97L,OACA,EAEA+8L,EAAA/rN,UAAA+J,WAAA,WACA9J,KAAAgU,KACAhU,KAAA+rN,iBACA,EAEAD,EAAA/rN,UAAAgK,YAAA,WACA/J,KAAA6qN,QACA7qN,KAAA6qN,OAAA97L,OACA,EAEA+8L,CACA,IACAr0N,OC3FA,qBACA,SACA,UACA,aACA,SAAA2B,EAAAkM,EAAAm5B,GACA,aAEA,IAAA1C,EAAA,CACAzgC,KAAA,CACA0wN,UAAA,KAIA,SAAAC,EAAA9oM,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,8CAAA2iC,EAAA5Y,GAEAsb,EAAAK,aAAA9+B,KACA,CAeA,OAbAsF,EAAA3F,OAAAssN,EAAA3mN,GAEA2mN,EAAAryL,SAAA,QAEAqyL,EAAAlsN,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MAEAA,KAAA1E,KAAA0wN,WACAhsN,KAAAuF,SAAAs/B,KAAA7kC,KAAA1E,KAAA0wN,WAEAhsN,KAAA2M,eACA,EAEAs/M,CACA,IACAx0N,OClCA,qCACA,aACA,eACA,iBACA,2CACA,SAAA0B,EAAA4X,EAAAse,GACA,aAEA,IAEA68L,EAAA,SAAA/xM,EAAA8vC,EAAA9mC,EAAAgpM,GACA98L,EAAArK,KAAAhlB,KAAA,CACA,UACA,kBACA,oBAGAA,KAAAmjB,UACAnjB,KAAAiqD,aACAjqD,KAAAma,SACAna,KAAAqH,YAAA4iD,EAAAtnD,OAAA0E,YACArH,KAAAmsN,iBACA,EAkIA,OAhIAD,EAAAE,aAAA,KAEAF,EAAAnsN,UAAAssN,oBAAA,WACArsN,KAAAmjB,QAAAmpM,YACAtsN,KAAAusN,sBACA,EAEAL,EAAAnsN,UAAAysN,uBAAA,WACAxsN,KAAAysN,oBACAzsN,KAAAusN,uBAEAvsN,KAAA0sN,wBACA,EAEAR,EAAAnsN,UAAA0sN,kBAAA,SAAAE,GACA,IAAAC,EAAA5sN,KAAAqH,YAAAi9C,eAAAtkD,KAAAmjB,QAAAmpM,YACAK,EACAC,EAAArnN,SAAAiE,OAEAojN,EAAArnN,SACAymC,QAAA,CACAwb,OAAA,EACA3F,SAAA,WACA+qK,EAAArnN,SAAAuD,OACA8jN,EAAApjN,MACA,GAGA,EAEA0iN,EAAAnsN,UAAA8sN,kBAAA,WACAX,EAAAE,eACAF,EAAAE,aAAAK,mBAAA,GACAP,EAAAE,aAAA,KAEA,EAEAF,EAAAnsN,UAAA+sN,kBAAA,SAAAC,GACA/sN,KAAA6sN,oBAEA7sN,KAAAgtN,mDAAAhtN,KAAAmjB,SAEA,IAAAypM,EAAA5sN,KAAAqH,YAAAi9C,eAAAtkD,KAAAmjB,QAAAmpM,YACAM,EAAA9jN,OACA8jN,EAAArnN,SACAiE,OACAm9L,OAAA,CACAp/I,SAAA,OACAC,OAAA,IAEA,IAAAylK,EAAAF,EAAA1wK,SACA6wK,EAAAltN,KAAAma,OAAAhT,SAAA5B,SAAA82C,SACAuwK,EAAArnN,SAAAK,IAAA,CACA1B,YAAA,WACAwC,IAAAumN,EAAAvmN,IAAAwmN,EAAAxmN,IACAD,KAAAwmN,EAAAxmN,KAAAymN,EAAAzmN,KAAAsmN,EAAAn1M,aAvEA,GAwEAhR,OAAA,OACAD,MAAA,OACAqG,MAAA4/M,EAAAtxN,KAAAgJ,KAAAF,EACA+J,OAAAy+M,EAAAtxN,KAAAgJ,KAAAD,IAEA0oN,EAAApnN,SAAA,oBAEAumN,EAAAE,aAAApsN,KAEAA,KAAAmtN,wBACA,EAEAjB,EAAAnsN,UAAAitN,mDAAA,WACA,IAAAl0L,EAAA94B,KAAAiqD,WAAAtnD,OAAAm2B,WAEA/3B,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAAmjB,QAAAiqM,UAAA,SAAAC,GACAtsN,EAAAsG,YAAAi9C,eAAA+oK,EAAAC,YAEA1mL,SAAA,CACAlhC,KAAAqL,EAAAE,WAAAK,OACA9E,MAAAssB,EAAAvsB,SAAA8gN,EAAAE,kBAEA,GACA,EAEArB,EAAAnsN,UAAAwsN,qBAAA,WACA,IAAAzzL,EAAA94B,KAAAiqD,WAAAtnD,OAAAm2B,WAKA,GAHA94B,KAAAmjB,QAAA2xB,qBACAhc,EAAAgQ,OAAAlC,SAAA5mC,KAAAmjB,QAAA2xB,oBAAA90C,KAAAmjB,QAAAqqM,sBAEAxtN,KAAAmjB,QAAAmpM,WAAA,CACA,IAAAvrN,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAAmjB,QAAAiqM,UAAA,SAAAC,GACA,IAAAI,EAAA1sN,EAAAsG,YAAAi9C,eAAA+oK,EAAAC,YACAx0L,EAAAgQ,OAAAlC,SAAAymL,EAAAE,gBAAAE,EAAAlhN,WACA,GACA,CAEAvM,KAAAma,OAAAuzM,+BAAA1tN,KAAAmjB,QAAA,eAEAnjB,KAAAmjB,QAAAwqM,cACA3tN,KAAAiqD,WAAA0jK,cACA,EAEAzB,EAAAnsN,UAAA6tN,YAAA,WACA,IAAA90L,EAAA94B,KAAAiqD,WAAAtnD,OAAAm2B,WAEA94B,KAAAmjB,QAAA2xB,qBACAhc,EAAAgQ,OAAAlC,SAAA5mC,KAAAmjB,QAAA2xB,oBAAA90C,KAAAmjB,QAAA0qM,2BAEA7tN,KAAAmjB,QAAAmpM,aACAtsN,KAAAysN,oBAEAtzN,EAAAiJ,KAAApC,KAAAmjB,QAAAiqM,UAAA,SAAAC,GACAv0L,EAAAgQ,OAAAlC,SAAAymL,EAAAE,gBAAA,KACA,KAGAvtN,KAAAma,OAAAuzM,+BAAA1tN,KAAAmjB,QAAA,cACA,EAEA+oM,EAAAnsN,UAAAhH,OAAA,SAAA+0N,GACA9tN,KAAA4tN,cAEA5tN,KAAAmjB,QAAAwqM,eAAAG,GACA9tN,KAAAiqD,WAAA0jK,eAEA3tN,KAAA+tN,gBACA,EAEA7B,CACA,IACAz0N,OC1JA,mCACA,SACA,aACA,UACA,WACA,UACA,iBACA,oCACA,2CACA,SAAA2B,EAAAD,EAAAmM,EAAAm5B,EAAAjpB,EAAA6Z,EAAA68L,GACA,aAEA,IAAA/9G,EAAA7oG,EAEA0oN,EAAA,SAAA7qM,GACAgrF,EAAAnpF,KAAAhlB,KAAA5G,EAAA,SAAA+pB,GACAkM,EAAArK,KAAAhlB,KAAA,CACA,gBAGAA,KAAAuF,SACAI,SAAA,0DAEA3F,KAAAgqL,OAAA5wL,EAAA,UACAuM,SAAA,SACAA,SAAA,qBACAk1B,KAAA76B,KAAA1E,KAAA60C,OACAvqC,IAAA,CACAiH,QAAA,OACAoqC,cAAA,SACAyqD,KAAA,WACA10F,MAAA,SAGAhN,KAAAuF,SACAsmC,OAAAzyC,EAAA,WACAwM,IAAA,CACAs8C,OAAA,UACAr1C,QAAA,OACA6oC,WAAA,WACAvnC,OAAA,OACAnB,MAAA,SAEA6+B,OAAA7rC,KAAAgqL,SAEAvrJ,EAAAK,aAAA9+B,MAEAA,KAAAqnD,gBAAA7xC,EAAA7B,UAAA3T,KAAA1E,KAAA6I,UAEAnE,KAAA6oD,OAAA,CACAM,MAAA,EACAC,4BAAA,EACAC,eAAArpD,KAAAqpD,eAAA9mD,KAAAvC,MACA6pD,gBAAA7pD,KAAAqsN,oBAAA9pN,KAAAvC,OAEA,EAoIA,OAlIAmuG,EAAAxuG,OAAAquN,GAEAA,EAAAp0L,SAAA,eAEAo0L,EAAA5B,aAAA,KAEA4B,EAAAjuN,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,eACA,EAEAqhN,EAAAjuN,UAAAspD,eAAA,WACA,IAAArpD,KAAAiuN,cAAA,CACA,IAAA5mN,EAAArH,KAAA2C,OAAA0E,YAEArH,KAAAiuN,cAAA90N,EAAA+N,IAAAlH,KAAA1E,KAAAsuD,SAAA,SAAAskK,GACA,OAAA7mN,EAAAi9C,eAAA4pK,EAAAtsN,KACA,GACA,CAEA,OAAA5B,KAAAiuN,aACA,EAEAD,EAAAjuN,UAAAouN,oBAAA,SAAAlkK,GACA,OAAA9wD,EAAA4d,UAAA/W,KAAA1E,KAAAsuD,QAAA,CAAAhoD,KAAAqoD,EAAA3uD,KAAAhD,MACA,EAGA01N,EAAAjuN,UAAAquN,qBAAA,WACAj1N,EAAAiJ,KAAApC,KAAAqpD,iBAAArpD,KAAAquN,oBAAA9rN,KAAAvC,MACA,EAEAguN,EAAAjuN,UAAAsuN,oBAAA,SAAApkK,GACA9wD,EAAAiJ,KAAApC,KAAAsuN,4BAAArkK,IAAA,SAAAskK,GACAA,EAAAX,cACAW,EAAAx1N,QAAA,EACA,GACA,EAEAi1N,EAAAjuN,UAAAssN,oBAAA,SAAApiK,GACAjqD,KAAA6sN,oBAEA,IAAA2B,EAAAxuN,KAAAyuN,0BAAAxkK,GAEAlpD,EAAAf,KAKA,GAJA7G,EAAAmI,KAAAktN,GAAA,SAAAjtN,GACA,OAAAA,EAAA4Y,SAAApZ,CACA,IAGAf,KAAAonD,yBADA,CAKA,IAAA8mK,EAAAluN,KAAAmuN,oBAAAlkK,GAEAjqD,KAAA0uN,mCAAAzkK,EAAAikK,GAEAluN,KAAAynD,eAAAznD,KAAAqnD,iBACArnD,KAAAuF,SAAAiE,OAAAm9L,OAAA,CACAp/I,SAAA,OACAC,OAAA,IAGA,IAAAjoD,EAAAS,KAAA2uN,eAAA1kK,EAAAikK,GAAA,GACA3uN,EAAA8sN,sBACArsN,KAAA4uN,0BAAArvN,EAdA,CAeA,EAEAyuN,EAAAjuN,UAAA4uN,eAAA,SAAA1kK,EAAAikK,EAAA/B,GACA,WAAAD,EAAAlsN,KAAAiqD,EAAAikK,EAAA/B,EACA,EAEA6B,EAAAjuN,UAAA8sN,kBAAA,WACAmB,EAAA5B,cACApsN,KAAAysN,kBAAAuB,EAAA5B,cAAA,EACA,EAEA4B,EAAAjuN,UAAA2uN,mCAAA,SAAAzkK,EAAAikK,GACA,GAAAA,EAAAp5K,oBAAA,CAGA,IAAA+5K,EAAA11N,EAAAghB,OAAAna,KAAAyuN,0BAAAxkK,IAAA,SAAA6kK,GACA,OAAAA,EAAA3rM,QAAA2xB,sBAAAo5K,EAAAp5K,mBACA,IAEA37C,EAAAiJ,KAAAysN,GAAA,SAAAC,GACAA,EAAA/1N,QACA,GARA,CASA,EAEAi1N,EAAAjuN,UAAA0uN,0BAAA,SAAAxkK,GACA,OAAAA,EAAA1kD,SAAAjK,KAAA,6BACA,EAEA0yN,EAAAjuN,UAAAuuN,4BAAA,SAAArkK,GACA,IAAAlpD,EAAAf,KACA,OAAA7G,EAAAghB,OAAAna,KAAAyuN,0BAAAxkK,IAAA,SAAAskK,GACA,OAAAA,EAAAp0M,SAAApZ,CACA,GACA,EAEAitN,EAAAjuN,UAAA6uN,0BAAA,SAAAE,GACA,IACAC,EADA/uN,KAAAyuN,0BAAAK,EAAA7kK,YACAviB,OAAAonL,GACAA,EAAA7kK,WAAA1kD,SAAAjK,KAAA,yBAAAyzN,GAEAD,EAAAE,gBAAAhvN,KAAAivN,+BAAA1sN,KAAAvC,KAAA8uN,IAEA9uN,KAAAkvN,mBAAAJ,EACA,EAEAd,EAAAjuN,UAAAkvN,+BAAA,SAAAH,GACA,IAAAK,EAAAnvN,KAAAyuN,0BAAAK,EAAA7kK,YACAlpD,EAAAf,KACAovN,EAAAj2N,EAAAghB,OAAAg1M,GAAA,SAAA5tN,GACA,OAAAA,EAAA4Y,SAAApZ,CACA,IACA+tN,EAAA7kK,WAAA1kD,SAAAjK,KAAA,yBAAA8zN,EACA,EAEApB,EAAAjuN,UAAAsvN,sBAAA,SAAAnB,EAAAjkN,GACA,OAAAikN,KAAAxqN,UAAAwqN,EAAAxqN,SAAAuG,IAAA,EACA,EAEA+jN,EAAAjuN,UAAA2tN,+BAAA,SAAAQ,EAAAjkN,GACA,IAAAK,EAAAtK,KAAAqvN,sBAAAnB,EAAAjkN,GACAK,EAAA3G,SAAA3D,KAAA4C,aAAA0H,EAAA1G,gBACA,EAEAoqN,CACA,IC3LAv2N,OAAA,oFAAA0B,GAAA,gBAAAiH,KACA,IAAA4nL,IAAAC,IAAA,GAAAC,IAAAj2K,MAAAlS,UAAAiT,KAAAm1K,MAAA,WAAAF,KAAAC,IAAAljK,KAAA9jB,UAAA,KACA,KAAAd,KAAA,GACA6nL,KAAA,qRACA,OAAAD,IAAA,UAAA7uL,EAAAu5C,OAAAs1I,MACA,kCAEA,OAAAC,GACA,KAEAxwL,OCXA,mDACA,SACA,aACA,sCACA,SAAA2B,EAAAD,EAAAolC,GACA,aAEA,IAAA+wL,EAAA,SAAAR,GACA9uN,KAAAuF,SAAAnM,EAAAmlC,EAAA,CACA4R,MAAA2+K,EAAA30M,OAAA7e,KAAA60C,SAEAnwC,KAAA8uN,iBAEA9uN,KAAAuvN,gBAAAvvN,KAAAwvN,gBAAAjtN,KAAAvC,MACAA,KAAAyvN,gBAAAzvN,KAAA0vN,mBAAAntN,KAAAvC,KACA,EAyEA,OAvEAsvN,EAAAvvN,UAAA+I,KAAA,WACA9I,KAAA8uN,eAAAa,sBAAA3vN,KAAAuvN,iBACAvvN,KAAA8uN,eAAAc,sBAAA5vN,KAAAyvN,iBAEAzvN,KAAA6vN,QAAA7vN,KAAAuF,SACAjE,KAAA,WACA5F,GAAA,QAAAsE,KAAA8vN,cAAAvtN,KAAAvC,OAEAA,KAAA8uN,eAAA3rM,QAAAmpM,aACAtsN,KAAAuF,SACAI,SAAA,gBACAjK,GAAA,QAAAsE,KAAA+hG,QAAAx/F,KAAAvC,OAEAA,KAAA8uN,eAAA3C,iBACAnsN,KAAA8sN,qBAGA9sN,KAAAuF,SAAAI,SAAA,UACA,EAEA2pN,EAAAvvN,UAAAhH,OAAA,WACA,IAAAwM,EAAAvF,KAAAuF,SAEAvF,KAAAuF,SAAAwqN,QAAA,CACAxjL,KAAA,WACAhnC,EAAAxM,QACA,IAEA6M,IAAA,yBACAtE,KAAA,KAAAqhC,UAAAn4B,IAAA,SAEAxK,KAAA8uN,eAAAkB,yBAAAhwN,KAAAuvN,iBACAvvN,KAAA8uN,eAAAmB,yBAAAjwN,KAAAyvN,gBACA,EAEAH,EAAAvvN,UAAAgiG,QAAA,SAAAzpF,GACAA,EAAA+rB,SAAArkC,KAAA6vN,QAAA,KAGA7vN,KAAAuF,SAAAk9B,SAAA,qBACAziC,KAAAysN,oBACAzsN,KAAAusN,wBAEAvsN,KAAA8sN,oBAEA,EAEAwC,EAAAvvN,UAAA+sN,kBAAA,WACA9sN,KAAA8uN,eAAAhC,kBAAA9sN,KAAAuF,SACA,EAEA+pN,EAAAvvN,UAAAyvN,gBAAA,WACAxvN,KAAAuF,SAAAI,SAAA,mBACA,EAEA2pN,EAAAvvN,UAAA0sN,kBAAA,WACAzsN,KAAA8uN,eAAAtC,wBACA,EAEA8C,EAAAvvN,UAAA2vN,mBAAA,WACA1vN,KAAAuF,SAAAqD,YAAA,mBACA,EAEA0mN,EAAAvvN,UAAA+vN,cAAA,WACA9vN,KAAA8uN,eAAA/1N,QACA,EAEAu2N,EAAAvvN,UAAAwsN,qBAAA,WACAvsN,KAAA8uN,eAAAvC,sBACA,EAEA+C,CACA,IAEA73N,OC3FA,+CACA,SACA,aACA,UACA,WACA,6BACA,SAAA2B,EAAAD,EAAAmM,EAAAm5B,EAAA6wL,GACA,aAEA,IAAAvzL,EAAA,CACAzgC,KAAA,CACA,GAGA40N,EAAA,SAAA/sM,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,WAAA2iC,EAAA5Y,GAEAnjB,KAAAmwN,OAAA/2N,EAAA,wCACAyN,SAAA7G,KAAAuF,UAEAk5B,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAmwN,QAEAnwN,KAAAs6B,MAAA,EACA,EAyDA,OAvDAh1B,EAAA3F,OAAAuwN,EAAA5qN,GAEA4qN,EAAAt2L,SAAA,qBAEAs2L,EAAAnwN,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,eACA,EAEAujN,EAAAnwN,UAAA0H,WAAA,WACA,IAAA1G,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAA2C,OAAA0E,YAAA4hC,eAAA,SAAArnC,GACA,iBAAAA,EAAA8D,MACA9D,EAAAwuN,kBAAArvN,EAAAsvN,gBAAA9tN,KAAAxB,GACA,GACA,EAEAmvN,EAAAnwN,UAAAswN,gBAAA,SAAAvB,GACA,GAAAA,EAAA7kK,WAAA3uD,KAAAhD,OAAA0H,KAAA1E,KAAA2uD,WAAA,CAEA6kK,EAAAE,gBAAAhvN,KAAAswN,mBAAA/tN,KAAAvC,KAAA8uN,IAEA,IAAA38M,EAAA,IAAAm9M,EAAAR,GAEArwL,EAAAK,aAAA9+B,KAAA,KAAAmS,EAAA5M,SAAAvF,KAAA1E,KAAAi1N,WAAA,UAEAvwN,KAAAmwN,OAAAtkL,OAAA15B,EAAA5M,UAEA4M,EAAArJ,OAEA9I,KAAAs6B,MAAAz5B,KAAAsR,EAZA,CAaA,EAEA+9M,EAAAnwN,UAAAuwN,mBAAA,SAAAxB,GACA,IAAA38M,EAAAhZ,EAAAmI,KAAAtB,KAAAs6B,OAAA,SAAAnoB,GACA,OAAAA,EAAA28M,kBACA,IACA,GAAA38M,EAAA,CACAA,EAAApZ,SAEA,IAAAyI,EAAArI,EAAAL,QAAAkH,KAAAs6B,MAAAnoB,GACAnS,KAAAs6B,MAAA74B,OAAAD,EAAA,EACA,CACA,EAEA0uN,EAAAnwN,UAAAowI,OAAA,WACAnwI,KAAAmwN,OAAAvnN,YAAA,aACA5I,KAAA4K,sBAAA,WACA,EAEAslN,EAAAnwN,UAAAq/I,SAAA,WACAp/I,KAAAmwN,OAAAxqN,SAAA,aACA3F,KAAA4K,sBAAA,YACA,EAEAslN,CACA,IAGAz4N,OCpFA,qCACA,SACA,UACA,aACA,SAAA2B,EAAAkM,EAAAm5B,GACA,aAEA,SAAA+xL,EAAArtM,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA+pB,GAEAnjB,KAAAuF,SACAI,SAAA,mBACAC,IAAA,CACAqxE,UAAA,OACAD,UAAA,SAGAv4C,EAAAK,aAAA9+B,KACA,CAgCA,OA9BAsF,EAAA3F,OAAA6wN,EAAAlrN,GAEAkrN,EAAA52L,SAAA,gBAEA42L,EAAAzwN,UAAAgH,UAAA,WACA/G,KAAA2M,gBACA3M,KAAAwJ,MACA,EAEAgnN,EAAAzwN,UAAAyI,QAAA,SAAAD,GACAvI,KAAAywN,YAAAloN,EAAAoW,SAEA3e,KAAA2C,OAAA+tN,cAAAC,YACApoN,EAAA6jC,SAAA,CACA,EAEAokL,EAAAzwN,UAAA0wN,YAAA,SAAA9xM,GACA3e,KAAAuF,SAAAs/B,KAAAlmB,EAAAkB,QAAA,iBACA7f,KAAA8I,MACA,EAEA0nN,EAAAzwN,UAAAo3C,WAAA,WACAn3C,KAAAuF,SAAAs/B,KAAA,IACA7kC,KAAAwJ,MACA,EAEAgnN,EAAAzwN,UAAA6mC,SAAA,SAAA8M,GACA1zC,KAAAywN,YAAA/8K,EAAAlnC,MACA,EAEAgkN,CACA,IACA/4N,OCpDA,qBACA,SACA,aACA,UACA,aACA,SAAA2B,EAAAD,EAAAmM,EAAAm5B,GACA,aAEA,IAAA1C,EAAA,CACAzgC,KAAA,CACAs1N,eAAA,IAIAC,EAAA,SAAA1tM,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAA1E,KAAAs1N,eACA5wN,KAAA8wN,gBAAA13N,EAAA,iCACAyN,SAAA7G,KAAAuF,UACAvF,KAAAuF,SAAAK,IAAA,CAAAoxC,SAAA,UAGAh3C,KAAAuF,SAAAK,IAAA,CAAAoxC,SAAA,YAGAh3C,KAAAkK,kBAAA,2BACAlK,KAAAkK,kBAAA,2BAEAu0B,EAAAK,aAAA9+B,KACA,EAkIA,OAhIAsF,EAAA3F,OAAAkxN,EAAAvrN,GAEAurN,EAAAj3L,SAAA,QAEAi3L,EAAA9wN,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,eACA,EAEAkkN,EAAA9wN,UAAA8H,OAAA,SAAAtC,GACA,OAAAvF,KAAA8G,qBAAAvB,EACA,EAGAsrN,EAAA9wN,UAAA0H,WAAA,WACAzH,KAAA1E,KAAAs1N,eACA5wN,KAAAuF,SAAAK,IAAA,CAAAoxC,SAAA,SAEAh3C,KAAA+wN,4BAEA/wN,KAAA8wN,gBAAAlrN,IAAA,CACAzB,SAAA,WACA4yC,MAAA,QAEAlwC,SAAA7G,KAAAuF,WAGAvF,KAAAuF,SAAAK,IAAA,CAAAoxC,SAAA,WAEA,EAEA65K,EAAA9wN,UAAAixN,mBAAA,WACA,IAAAC,EAAAjxN,KAAAuF,SAAA,GAAAo+B,aACAutL,EAAAlxN,KAAAuF,SAAA,GAAAs+B,YACA9iC,EAAAf,KACAA,KAAA8wN,kBACA9wN,KAAA8wN,gBAAA13N,EAAA,iCACAyN,SAAA7G,KAAAuF,WAEApM,EAAAiJ,KAAApC,KAAAuF,SAAAm9B,YAAA,SAAA2mD,GACAjwF,EAAAiwF,GAAAxiF,SAAA9F,EAAA+vN,gBACA,IACA9wN,KAAA8wN,gBAAAlrN,IAAA,CACAuI,OAAA8iN,EACAjkN,MAAAkkN,EACA/sN,SAAA,WACA4yC,MAAA,QAEAlwC,SAAA7G,KAAAuF,SACA,EAEAsrN,EAAA9wN,UAAAoxN,sBAAA,WACA,GAAAnxN,KAAA8wN,gBAAA,CACA,IAAA/vN,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAA8wN,gBAAApuL,YAAA,SAAA2mD,GACAjwF,EAAAiwF,GAAAxiF,SAAA9F,EAAAwE,SACA,IACAvF,KAAA8wN,gBAAA/3N,QACA,CACA,EAEA83N,EAAA9wN,UAAAsI,iBAAA,WACArI,KAAA1E,KAAAs1N,eACA5wN,KAAA+wN,2BAEA,EAEAF,EAAA9wN,UAAA4H,4BAAA,SAAA/F,GACA,OAAAA,EAAAiG,OAAA7H,KAAA8wN,iBAAA9wN,KAAAuF,SACA,EAEAsrN,EAAA9wN,UAAAqxN,iBAAA,SAAA91N,GACAA,EAAAs1N,eACA5wN,KAAAuF,SAAAK,IAAA,CAAAoxC,SAAA,SACAh3C,KAAAgxN,uBAGAhxN,KAAAuF,SAAAK,IAAA,CAAAoxC,SAAA,YACAh3C,KAAAmxN,wBAEA,EAEAN,EAAA9wN,UAAAsxN,4BAAA,WAMA,OACAJ,GANAjxN,KAAAuF,SAAA,GAAAo+B,aAAA3jC,KAAAuF,SAAA,GAAAm+B,cAAA,EAAA1jC,KAAAuF,SAAA,GAAAm+B,aAAA1jC,KAAAuF,SAAA,GAAAo+B,aAOAutL,GANAlxN,KAAAuF,SAAA,GAAAs+B,YAAA7jC,KAAAuF,SAAA,GAAAq+B,aAAA,EAAA5jC,KAAAuF,SAAA,GAAAq+B,YAAA5jC,KAAAuF,SAAA,GAAAs+B,YAOAytL,qBANAtxN,KAAAuF,SAAA,GAAAo+B,aAAA3jC,KAAAuF,SAAA,GAAAm+B,cAAA,EAOA6tL,uBANAvxN,KAAAuF,SAAA,GAAAs+B,YAAA7jC,KAAAuF,SAAA,GAAAq+B,aAAA,EAQA,EAEAitL,EAAA9wN,UAAAgxN,0BAAA,WACA,IAAAS,EAAAxxN,KAAAqxN,8BAEAG,EAAAF,qBACAtxN,KAAA8wN,gBAAAlrN,IAAA,CACAc,IAAA,EACAE,OAAA,EACAuH,OAAA,KAGAnO,KAAA8wN,gBAAAlrN,IAAA,CACAuI,OAAAqjN,EAAAP,GACAvqN,IAAA,GACAE,OAAA,KAIA4qN,EAAAD,uBACAvxN,KAAA8wN,gBAAAlrN,IAAA,CACAa,KAAA,EACAE,MAAA,EACAqG,MAAA,KAGAhN,KAAA8wN,gBAAAlrN,IAAA,CACAoH,MAAAwkN,EAAAN,GACAzqN,KAAA,GACAE,MAAA,IAGA,EAEAkqN,CACA,IAGAp5N,OCpKA,qBACA,SACA,KACA,UACA,kBACA,SAAA2B,EAAA0K,EAAAwB,EAAA4gF,GACA,aAEA,IAAAnqD,EAAA,CACAzgC,KAAA,CACA4/E,MAAA,CACAh6D,OAAA,GACAsnC,IAAA,IAEAipK,kBAAA,CACArtN,EAAA,KACAC,EAAA,MAEAqtN,gBAAA,CACAttN,EAAA,KACAC,EAAA,MAEAstN,eAAA,IACAC,SAAA,EACA7gL,MAAA,CACArrC,KAAA,UACAwb,MAAA,EACAsnC,IAAA,OAKA,SAAA3yC,EAAAsN,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAA6xN,YAAAz4N,EAAA,WACAwM,IAAA,CACAoH,MAAA,OACAmB,OAAA,SAGAnO,KAAA8xN,WAAA14N,EAAA,WACAwM,IAAA,CACAzB,SAAA,aAGAnE,KAAAuF,SACAsmC,OAAA7rC,KAAA6xN,YAAA7xN,KAAA8xN,YAEA9xN,KAAA+xN,gBACA/xN,KAAA1E,KAAA02N,gBAAAhyN,KAAAiyN,kBAAAjyN,KAAA1E,KAAA02N,gBACAhyN,KAAA1E,KAAAoiC,iBAAA19B,KAAAosM,mBAAApsM,KAAA1E,KAAAoiC,gBACA,CAgHA,OA9GAp4B,EAAA3F,OAAAkW,EAAAvQ,GAEAuQ,EAAA+jB,SAAA,QAEA/jB,EAAA9V,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,eACA,EAEAkJ,EAAA9V,UAAA0H,WAAA,WACAzH,KAAAkyN,0BACA,EAEAr8M,EAAA9V,UAAAmyN,yBAAA,WACA,SAAAlyN,KAAA1E,KAAAsL,QAAA,MAAA5G,KAAA1E,KAAAoL,KACA,MAAA1G,KAAA1E,KAAAmL,MAAA,MAAAzG,KAAA1E,KAAAqL,MADA,CAIA,IAAA5F,EAAAf,KAEAA,KAAAM,OAAA4lF,EAAA,CACAuoG,QAAA,WACA1tL,EAAAoxN,gBAAApxN,EAAAyL,MACA,GAPA,CASA,EAEAqJ,EAAA9V,UAAAqsM,mBAAA,SAAA1uK,GACA19B,KAAA6xN,YAAA5pL,KAAA,MAAAnkC,EAAA3F,iBAAAu/B,GACA,EAEA7nB,EAAA9V,UAAAkyN,kBAAA,SAAAD,GACAhyN,KAAA8xN,WAAA7pL,KAAA,MAAAnkC,EAAA3F,iBAAA6zN,GACA,EAEAn8M,EAAA9V,UAAAo3C,WAAA,WACAn3C,KAAA+xN,eACA,EAEAl8M,EAAA9V,UAAA6mC,SAAA,SAAA8M,GACA1zC,KAAAmyN,gBAAAz+K,EAAAlnC,MACA,EAEAqJ,EAAA9V,UAAAoyN,gBAAA,SAAA3lN,GACA,GAAAA,GAAA,IAAAA,EAEA,CACA,IAAArI,EAAAnE,KAAAoyN,uBAAA5lN,GAEArI,EAAAnE,KAAA1E,KAAA4/E,MAAAh6D,MACA/c,EAAAnE,KAAA1E,KAAA4/E,MAAAh6D,MACA/c,EAAAnE,KAAA1E,KAAA4/E,MAAA1yB,MACArkD,EAAAnE,KAAA1E,KAAA4/E,MAAA1yB,KAEAxoD,KAAAqyN,kBAAAluN,GACAnE,KAAAsyN,eACA,MAXAtyN,KAAA+xN,gBAaA/xN,KAAAwM,OACA,EAEAqJ,EAAA9V,UAAAqyN,uBAAA,SAAA5lN,GACA,gBAAAxM,KAAA1E,KAAAy1C,MAAArrC,MACA8G,EAAAxM,KAAA1E,KAAAy1C,MAAA7vB,QAAAlhB,KAAA1E,KAAA4/E,MAAA1yB,IAAAxoD,KAAA1E,KAAA4/E,MAAAh6D,QAAAlhB,KAAA1E,KAAAy1C,MAAAyX,IAAAxoD,KAAA1E,KAAAy1C,MAAA7vB,OAAAlhB,KAAA1E,KAAA4/E,MAAAh6D,MAEAlhB,KAAA1E,KAAA4/E,MAAAh6D,MAAAlhB,KAAA1E,KAAA4/E,MAAA1yB,IACAxoD,KAAA1E,KAAA4/E,MAAAh6D,MAAAikF,OAAA34F,GAAAxM,KAAA1E,KAAA4/E,MAAAh6D,MAAAikF,OAAA34F,EACA,EAEAqJ,EAAA9V,UAAAgyN,cAAA,WACA/xN,KAAA8xN,WAAAlsN,IAAA,sBACA,EAEAiQ,EAAA9V,UAAAuyN,cAAA,WACAtyN,KAAA8xN,WAAAlsN,IAAA,uBACA,EAEAiQ,EAAA9V,UAAAsyN,kBAAA,SAAAT,GACA,IAAAW,EAAAvyN,KAAAwyN,oBACAC,EAAAzyN,KAAA0yN,oBACAC,EAAA3yN,KAAA1E,KAAAq2N,eAAA,IAAAY,EACAK,EAAA5yN,KAAA1E,KAAAq2N,eAAA,IAAAc,EAEAlxL,EAAA,gBAAAvhC,KAAA1E,KAAAo2N,gBAAAttN,EAAA,SAAApE,KAAA1E,KAAAo2N,gBAAArtN,EAAA,aAAAutN,EAAA,cAAAe,EAAA,KAAAC,EAAA,IACAh+I,EAAA50E,KAAA1E,KAAAo2N,gBAAAttN,EAAA,KAAApE,KAAA1E,KAAAo2N,gBAAArtN,EAAA,IAEArE,KAAA8xN,WACAlsN,IAAA,CACAa,KAAAzG,KAAA1E,KAAAm2N,kBAAArtN,EAAA,IACAsC,IAAA1G,KAAA1E,KAAAm2N,kBAAAptN,EAAA,IAEA,gBAAAk9B,EACA,oBAAAA,EACAA,YAEA,2BAAAqzC,EACA,wBAAAA,EACA,sBAAAA,EACA,mBAAAA,GAEA,EAEA/+D,EAAA9V,UAAAyyN,kBAAA,WACA,OAAAxyN,KAAAuF,SAAAyH,QAAAhN,KAAA1E,KAAAgJ,KAAAF,CACA,EAEAyR,EAAA9V,UAAA2yN,kBAAA,WACA,OAAA1yN,KAAAuF,SAAA4I,SAAAnO,KAAA1E,KAAAgJ,KAAAD,CACA,EAEAwR,CACA,ICrKA,SAAAs8C,EAAA75C,GAAA,iBAAA+4C,SAAA,oBAAAp4D,cAAAo4D,QAAA/4C,IAAA,mBAAA7gB,eAAA65D,IAAA75D,OAAA,OAAA6gB,IAAA65C,EAAA,oBAAAZ,sBAAAY,GAAApxD,MAAA8xN,OAAAv6M,GAAA,EAAAtY,MAAA,4BAAAmyD,EAAA,oBAAA2gK,eAAAC,iBAAAD,OAAAC,gBAAAxwN,KAAAuwN,SAAA,oBAAAE,UAAA,mBAAAA,SAAAD,iBAAAC,SAAAD,gBAAAxwN,KAAAywN,UAAA16M,EAAA,IAAAi9C,WAAA,aAAAiuC,IAAA,IAAArxC,EAAA,UAAA11C,MAAA,mHAAA01C,EAAA75C,EAAA,KAAA85C,EAAA,+HAAA1oB,EAAAyoB,GAAA,uBAAAA,GAAAC,EAAAj4D,KAAAg4D,EAAA,SAAA15D,EAAA,GAAAyjH,EAAA,EAAAA,EAAA,MAAAA,EAAAzjH,EAAAoI,MAAAq7G,EAAA,KAAAzrG,SAAA,IAAA0F,OAAA,oBAAAg8C,EAAA75C,EAAA85C,GAAA,IAAA8pD,GAAA/pD,KAAA,IAAA5mC,SAAA4mC,EAAA8gK,KAAAzvH,KAAA,GAAA0Y,EAAA,MAAAA,EAAA,MAAAA,EAAA,MAAAA,EAAA,OAAA5jG,EAAA,CAAA85C,KAAA,UAAAW,EAAA,EAAAA,EAAA,KAAAA,EAAAz6C,EAAA85C,EAAAW,GAAAmpD,EAAAnpD,GAAA,OAAAz6C,CAAA,iBAAA65C,GAAA,IAAA75C,EAAApX,UAAAxI,OAAA,YAAAwI,UAAA,GAAAA,UAAA,KAAAsiG,GAAA/qG,EAAA05D,EAAA75C,EAAA,IAAA7f,EAAA05D,EAAA75C,EAAA,IAAA7f,EAAA05D,EAAA75C,EAAA,IAAA7f,EAAA05D,EAAA75C,EAAA,QAAA7f,EAAA05D,EAAA75C,EAAA,IAAA7f,EAAA05D,EAAA75C,EAAA,QAAA7f,EAAA05D,EAAA75C,EAAA,IAAA7f,EAAA05D,EAAA75C,EAAA,QAAA7f,EAAA05D,EAAA75C,EAAA,IAAA7f,EAAA05D,EAAA75C,EAAA,QAAA7f,EAAA05D,EAAA75C,EAAA,KAAA7f,EAAA05D,EAAA75C,EAAA,KAAA7f,EAAA05D,EAAA75C,EAAA,KAAA7f,EAAA05D,EAAA75C,EAAA,KAAA7f,EAAA05D,EAAA75C,EAAA,KAAA7f,EAAA05D,EAAA75C,EAAA,MAAAhe,cAAA,IAAAovC,EAAA85D,GAAA,MAAAzxC,UAAA,sCAAAyxC,CAAA,EAAA0Y,EAAA,KACAzkH,OCDA,wBACA,SACA,KACA,SACA,SAAA2B,EAAA0K,EAAAtB,GACA,aAEA,IAIA0wN,EAAA,SAAAxC,EAAAyC,EAAAC,GACApzN,KAAA0wN,gBACA1wN,KAAAmzN,gBACAnzN,KAAAozN,oBACApzN,KAAAqzN,UAPAj6N,EAAA,2CAAAA,EAAA,2BAAA0/C,KAQA,EA8FA,OA5FAo6K,EAAAnzN,UAAAkrC,SAAA,SAAAj3B,EAAA1Y,EAAA+qB,EAAAlD,EAAA7a,EAAAgrN,GAEA,OADAt/M,EAAAlQ,EAAA1G,aAAA4W,GACAhU,KAAAuzN,sBAAAv/M,EAAA1Y,EAAA+qB,EAAAlD,EAAA7a,EAAAgrN,EACA,EAEAJ,EAAAnzN,UAAAwzN,sBAAA,SAAAC,EAAAl4N,EAAA+qB,EAAAlD,EAAA7a,EAAAgrN,GACAh4N,KAAA,GACA+qB,KAAAjtB,EAAA+O,KACAG,KAAAlP,EAAA+O,KACAmrN,MAAA,EACA,IAAAvyN,EAAAf,KA2BA,OAHAmjB,KAAA,GAEAnjB,KAAA0wN,cAAA5nN,OACA9I,KAAAyzN,WAAAD,EAAAl4N,GA1BA,SAAAorB,GACA3lB,EAAA2vN,cAAAlnN,OACA6c,EAAAK,EACA,IACA,SAAAgtM,GASA,SAAAA,EAAA3oM,QAAA,IAAAyoM,EAAA16N,QAAAgL,EAAA1G,aAAA,MAAAk2N,EAGA,IACAhrN,GACA,SACAvH,EAAA2vN,cAAAlnN,MACA,MANA3P,OAAAC,SAAA65N,QAQA,GAIAxwM,EACA,EAEA+vM,EAAAnzN,UAAAsrC,mBAAA,SAAAr3B,EAAA1Y,EAAA+qB,EAAAlD,EAAA7a,GAEA,OADA0L,EAAAlQ,EAAA1G,aAAA4W,GACAhU,KAAAyzN,WAAAz/M,EAAA1Y,GAAA,GAAA+qB,GAAAjtB,EAAA+O,KAAAG,GAAAlP,EAAA+O,KAAAgb,GAAA,GACA,EAEA+vM,EAAAnzN,UAAA0zN,WAAA,SAAAz/M,EAAA1Y,EAAAs4N,EAAAC,EAAA1wM,GACA,IAAAoD,EAAApD,EAAAoD,SAAA,GAQA,OANAA,EAAAutM,qBAAA9zN,KAAAmzN,cACA5sM,EAAAwtM,yBAAA/zN,KAAAozN,kBAEApzN,KAAAqzN,YACA9sM,EAAA,2BAAAvmB,KAAAqzN,WAEA7wN,EAAApJ,EAAAqtB,KAAArtB,EAAAuG,OACA,CACAqU,MACAtO,KAAA,OACAmb,OAAA,EACAvlB,KAAAsY,KAAAE,UAAAxY,GACAqvB,SAAA,OACAjI,YAAA,kCACA6D,UACAF,QAAA,SAAA/qB,EAAAyvB,EAAAhJ,GACA,oBAAAzmB,EAAAyvB,OAIA6oM,EAAAt4N,EAAAyvB,EAAAhJ,GAHAloB,OAAAC,SAAA65N,QAIA,EACArrN,MAAAurN,GAEA1wM,IACA,EAEA+vM,EAAAnzN,UAAAi0N,uBAAA,SAAAN,GACA,IAAA3xM,EACA,IACAA,EAAAnO,KAAAC,MAAA6/M,EAAAthM,aACA,CACA,MAAA6hM,GAAA,CACA,OAAAlyM,KAAApD,OACA,EAEAu0M,EAAAnzN,UAAAm0N,iBAAA,SAAA9wM,GACA,IAAAriB,EAAAf,KACA5G,EAAAf,IAAAyL,EAAA1G,aAAA,wCAAA9B,GACAyF,EAAAsyN,UAAAj6N,EAAAkC,GAAAw9C,MACA11B,GACA,GACA,EAEA8vM,CACA,IACAz7N,OChHA,2BACA,SACA,eACA,mBACA,SAAA2B,EAAAy7C,GACA,aAEA,SAAAs/K,EAAA5uN,GAcA,IAAA6uN,EAbAp0N,KAAAq0N,UAAA,EACAr0N,KAAAo9B,QAAA,EAEAp9B,KAAAuF,WAEAnM,EAAA01J,QAAA/yH,SAAAu4L,WAAA,CACA/lJ,gBAAA,OACAnxC,QAAA,GACA8kB,OAAA,QAEA9oD,EAAA01J,QAAA/yH,SAAAiQ,QAAA,IACA5yC,EAAA01J,QAAA/yH,SAAA4qK,OAAA,IAIAytB,EADAv6N,OAAA3B,SAAAmqC,aACA,iDAAAnpC,QAAAw9L,MAAA,4BAEA,kDAAAx9L,QAAAw9L,MAAA,gCAEA12L,KAAAu0N,aAAAn7N,EAAA,WACA4G,KAAA8xN,WAAA14N,EAAA,WACAyyC,OAAAzyC,EAAAg7N,IACAvoL,OAAA7rC,KAAAu0N,cAEAv0N,KAAAmpL,WAAA/vL,EAAA,WACAyyC,OAAA7rC,KAAA8xN,WACA,CAuGA,OArGAqC,EAAAp0N,UAAAy0N,WAAA,SAAAp3L,GACAp9B,KAAAo9B,SACA,EAEA+2L,EAAAp0N,UAAA+I,KAAA,WACA,IAAA/H,EAAAf,KAEAe,EAAAszN,YACA,IAAAtzN,EAAAszN,WACAtzN,EAAAmoK,MAAA,IAEA,EAEAirD,EAAAp0N,UAAAyJ,KAAA,WACA,IAAAzI,EAAAf,KACAe,EAAAszN,YACAtzN,EAAAszN,UAAA,IACAtzN,EAAAszN,UAAA,EACAr0N,KAAAuF,SAAAkvN,UACAz0N,KAAAu0N,aAAA15L,KAAA,IACA95B,EAAA2f,UACAmE,aAAA9jB,EAAA2f,SACA3f,EAAA2f,aAAAta,GAGA,EAEA+tN,EAAAp0N,UAAA6sD,SAAA,SAAA/xB,GACA76B,KAAA00N,SAAA,MAAA75L,EAAA,OACA,EAEAs5L,EAAAp0N,UAAA20N,SAAA,SAAA7vL,GACA7kC,KAAAu0N,aAAA1vL,OACA,EAEAsvL,EAAAp0N,UAAA40N,YAAA,SAAApvN,GACAvF,KAAA8xN,WAAApvF,SACAn9H,EAAAsB,SAAA7G,KAAAmpL,WACA,EAEAgrC,EAAAp0N,UAAA60N,cAAA,WACA50N,KAAAmpL,WAAA1uI,QACAz6C,KAAA8xN,WAAAjrN,SAAA7G,KAAAmpL,WACA,EAEAgrC,EAAAp0N,UAAA4wN,UAAA,WACA,IAAA5vN,EAAAf,KACAg0I,EAAA7uC,OAAApkG,EAAAszN,WAGA,OAFAtzN,EAAAszN,UAAA,EACAtzN,EAAAyI,OACAwqI,CACA,EAEAmgF,EAAAp0N,UAAA80N,cAAA,SAAA1mM,GACAnuB,KACAq0N,UAAAlmM,EADAnuB,KAEAkpK,MAAA,EACA,EAEAirD,EAAAp0N,UAAAmpK,MAAA,SAAA4rD,GACA,IAAAC,EAAA,CACAxmJ,gBAAA,OACAnxC,QAAAp9B,KAAAo9B,QACA8kB,OAAA,WAGA39C,EAAAswC,EAAAD,gBAEA50C,KAAAuF,SAAAs8D,MAAA,CACAmzJ,MAAAzwN,EACA0wN,aAAA,EACAt2M,QAAA,GACA21M,WAAAS,IAGA/0N,KAAAo9B,QAAA,EAEA,IAAAr8B,EAAAf,KACAA,KAAA0gB,QAAAiE,YAAA,WACA5jB,EAAAszN,UAAA,GACAtzN,EAAAwE,SAAAs8D,MAAA,CACAmzJ,MAAAzwN,EACA0wN,aAAA,EACAX,WAAAS,EACAnvN,IAAA,CACAk3B,QAAA,EACA7vB,OAAA,EACAD,MAAA,MACAtG,IAAA,MACAD,KAAA,MACA66B,UAAA,SACApF,MAAA,OACAF,OAAA,IACAkmB,OAAA,WAEAvjC,QAAA5d,EAAAooL,YAGA,GAAA2rC,EACA,EAEAX,CACA,IAEA18N,OC5IA,oBACA,SACA,4BACA,SAAA2B,EAAA+6N,GACA,aAEA,WAAAA,EAAA/6N,EAAA,QACA,IAEA3B,OCTA,iBACA,uBACA,qBACA,SAAAy7N,EAAAxC,GACA,aAEA,WAAAwC,EAAAxC,EACA,IAEAj5N,OCTA,6BACA,SACA,OACA,OACA,KACA,qBACA,UACA,gBACA,aACA,SAAA2B,EAAAoJ,EAAAujI,EAAAjiI,EAAA2hM,EAAAngM,EAAA0lC,EAAAvM,GACA,aAEA,IAAA1C,EAAA,CACAzgC,KAAA,CACA0lK,KAAA,GACAk0D,uBAAA,aACAv2K,QAAA,gBACA3B,QAAA,UACAm4K,SAAA,UACAC,kBAAA,EACA9wN,KAAA,CAAAF,EAAA,IAAAC,EAAA,KACAgxN,SAAA,GACAC,SAAA,GACAC,wBAAA,EACAC,mBAAA,kBACAjnJ,gBAAA,UACA1tC,YAAA,UACA40L,WAAA,UACAC,mBAAA,IAIAC,EAAA,iDAEAC,EAAA,CACAC,MAAA,oBAEAC,EAAA,GAEA,SAAAC,EAAA5yM,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAAs9C,KAAAlkD,EAAA,WACA6uC,KAAA,mBACAriC,IAAA,CACAoH,MAAA,OACAmB,OAAA,OACAs9B,WAAA,YAEA5kC,SAAA7G,KAAAuF,UAEAvF,KAAAuF,SAAAI,SAAA,mBAAAC,IAAA,CACA8vC,WAAA,aAGA11C,KAAAg2N,YAAAxzN,EAAAu1B,QAEA0G,EAAAK,aAAA9+B,KACA,CA+dA,OA7dAsF,EAAA3F,OAAAo2N,EAAAzwN,GAEAywN,EAAAn8L,SAAA,YAEAm8L,EAAAh2N,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,gBAEA,IAAA6W,EAAAhhB,EAAAu1B,QAEA,OADA/3B,KAAAi2N,WAAAzyM,GACAA,EAAAa,OACA,EAEA0xM,EAAAh2N,UAAAk2N,WAAA,SAAAzyM,GACA,IAAAziB,EAAAf,KAEAylM,EAAAtkL,KAAA,gBAAA7d,MAAA,SAAArK,GACAA,EACAi9N,wBAAA,CACAC,aAAA,kBACAniN,IAAAlQ,EAAA1G,aAAA,0BACA87B,SAAAn4B,EAAA4B,OAAAu2B,SACAk9L,OAAAr1N,EAAAzF,KAAAV,KAEA0I,MAAA,WAEAvC,EAAAs1N,UACA7yM,EAAAc,SACA,GACA,GACA,EAEAyxM,EAAAh2N,UAAAs2N,QAAA,WACAr2N,KAAAs2N,kBACAt2N,KAAA8K,eAAA,qBACA9K,KAAAu2N,6BAEAv2N,KAAAw9C,WACA,EAEAu4K,EAAAh2N,UAAAy2N,SAAA,WACA,IAAAv6L,EAAAj8B,KAAA1E,KAAA65N,SACA,iBAAAl5L,GAAAj8B,KAAA1E,KAAAm7N,iBAAAz2N,KAAA1E,KAAAm7N,iBACAb,EAAA35L,IAAAj8B,KAAA1E,KAAAV,GAAA,IAAAma,KAAAM,MAAA,IAAAN,KAAAwW,UAAA9a,UACA,EAEAslN,EAAAh2N,UAAAu2N,gBAAA,WACA,IAAAI,EAAA,CACAC,UAAA32N,KAAAi+C,WAAAj+C,KAAA1E,KAAA0hD,SACA45K,MAAA52N,KAAAw2N,YAGAx2N,KAAA62N,sBAAA,CAAA3uL,MAAAloC,KAAA1E,KAAAo6N,oBACA11N,KAAA1E,KAAAw7N,4BACA92N,KAAA62N,sBAAA32N,OAAAgyD,OAAA,GAAAlyD,KAAA62N,uBACA72N,KAAA62N,sBAAAh6L,WAAA78B,KAAA1E,KAAAizE,gBACAvuE,KAAA62N,sBAAAh2L,YAAA7gC,KAAA1E,KAAAulC,YACA7gC,KAAA62N,sBAAApB,WAAAz1N,KAAA1E,KAAAm6N,YAGAz1N,KAAAkH,MACAlH,KAAAkH,IAAA,IAAArN,OAAAk9N,OAAAC,KAAAh5K,IAAAh+C,KAAAs9C,KAAAjlD,IAAA,GAAAq+N,GACA12N,KAAAi3N,sBAAA,EACAj3N,KAAAs9C,KAAA13C,IAAA,yBAEA,EAEAmwN,EAAAh2N,UAAAw2N,2BAAA,WACA,IAAAx1N,EAAAf,KAEAnG,OAAAk9N,OAAAC,KAAAt2N,MAAAD,YAAAT,KAAAkH,IAAA,kBAAAxG,GACAK,EAAAzF,KAAA47N,UACAn2N,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAA47N,SAAAx2N,EAAAy2N,OAAAC,OAEAr2N,EAAAzF,KAAA+7N,UACAt2N,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAA+7N,SAAA32N,EAAAy2N,OAAAG,OAEAv2N,EAAAzF,KAAAi8N,aACAvsL,EACAC,SAAA,sBACA/R,SAAAn4B,EAAA4B,OAAAu2B,SACAk9L,OAAAr1N,EAAAzF,KAAAV,GACAw8N,IAAA12N,EAAAy2N,OAAAC,MACAE,IAAA52N,EAAAy2N,OAAAG,QAEAh0N,MAAA,SAAAye,GACAA,EAAAsE,QACAtE,EAAAy1M,oBACAz2N,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SACA7lC,EAAAzF,KAAAi8N,aACAx1M,EAAAy1M,mBAEAz2N,EAAA6J,sBAAA,qBAGA61M,MACA,yDACA//M,EAAAy2N,OAAAC,MACA,IACA12N,EAAAy2N,OAAAG,MACA,gFAGA,IAEAv2N,EAAA6J,sBAAA,mBAEA,GACA,EAEAmrN,EAAAh2N,UAAAy9C,UAAA,WACA,IAAAz8C,EAAAf,KACA,eAAAA,KAAA1E,KAAA45N,uBACAl1N,KAAA1E,KAAAqjD,QACA3+C,KAAAy3N,YAAAz3N,KAAA1E,KAAAqjD,SAEA3+C,KAAA1E,KAAA87N,KAAAp3N,KAAA1E,KAAAg8N,KACAt3N,KAAA03N,gBAAA13N,KAAA1E,MAEA,yBAAA0E,KAAA1E,KAAA45N,uBACAl1N,KAAA2C,OAAAmM,YAAA+kC,2BAAA7zC,KAAA1E,KAAAo8C,YAAA,SAAAp8C,GAEA,GADAyF,EAAA42N,cAAA52N,EAAAmG,KACA,IAAA5L,EAAA68B,QAAAz/B,OACA,QAAAD,EAAA,EAAAA,EAAA6C,EAAA68B,QAAAz/B,OAAAD,IAAA,CACA,IAAAm/N,EAAAt8N,EAAA68B,QAAA1/B,GAAAsI,EAAAzF,KAAAu8N,eAEA,MAAAD,GACA5sL,EACAC,SAAA,sBACA/R,SAAAn4B,EAAA4B,OAAAu2B,SACAk9L,OAAAr1N,EAAAzF,KAAAV,GACA+jD,QAAAi5K,IAEAt0N,KAAAvC,EAAA+2N,eAAAv1N,KAAAxB,EAAAzF,EAAA68B,QAAA1/B,IAEA,MAEAsI,EAAA0rJ,YAAA1rJ,EAAAmG,IAEA,IACA,2BAAAlH,KAAA1E,KAAA45N,wBACAl1N,KAAA2C,OAAAmM,YAAA+kC,2BAAA7zC,KAAA1E,KAAAo8C,YAAA,SAAAp8C,GACAyF,EAAA42N,cAAA52N,EAAAmG,KAEA,IADA,IAAA6wN,GAAA,EACAt/N,EAAA,EAAAA,EAAA6C,EAAA68B,QAAAz/B,OAAAD,IACA,GAAA6C,EAAA68B,QAAA1/B,GAAAsI,EAAAzF,KAAA08N,YAAA18N,EAAA68B,QAAA1/B,GAAAsI,EAAAzF,KAAA28N,WAAA,CACAF,GAAA,EACA,IAAAG,EAAAn3N,EAAAo3N,aAAA78N,EAAA68B,QAAA1/B,IACAoB,OAAAk9N,OAAAC,KAAAt2N,MAAAD,YACAy3N,EACA,QACAn3N,EAAAq3N,cAAA71N,KAAAxB,EAAAzF,EAAA68B,QAAA1/B,KAEAsI,EAAAzF,KAAA85N,kBACAv7N,OAAAk9N,OAAAC,KAAAt2N,MAAAD,YACAy3N,EACA,UACAn3N,EAAAs3N,cAAA91N,KAAAxB,EAAAzF,EAAA68B,QAAA1/B,IAEA,CAEAs/N,EACAh3N,EAAA0rJ,YAAA1rJ,EAAAmG,KAEAnG,EAAAu3N,sBAAAv3N,EAAAmG,IAEA,IAEAlH,KAAAg2N,YAAA1xM,QAAAtkB,KAAAkH,IACA,EAEA6uN,EAAAh2N,UAAAo3C,WAAA/9C,EAAA+O,KAEA4tN,EAAAh2N,UAAA6mC,SAAA,SAAAtrC,GACA0E,KAAAu4N,aAAAj9N,EAAAkR,MACA,EAEAupN,EAAAh2N,UAAAw4N,aAAA,SAAA/rN,GACA,IAAAzL,EAAAf,KACA,kBAAAe,EAAAzF,KAAA45N,uBACAn0N,EAAA02N,YAAAjrN,GACA,sBAAAzL,EAAAzF,KAAA45N,wBACAn0N,EAAA22N,gBAAAlrN,EAEA,EAEAupN,EAAAh2N,UAAA23N,gBAAA,SAAAc,GAGA,IACA,QAAApyN,IAAAoyN,EAAApB,UAAAhxN,IAAAoyN,EAAAlB,IAHAt3N,KAIAy4N,YAAAD,OACA,CACA,IAAAE,EAAAF,EAAA1/N,QAAA,KACA,OAAA4/N,EAAA,CACA,IAAAC,EAAAH,EAAA3/N,UAAA,EAAA6/N,GACAE,EAAAJ,EAAA3/N,UAAA6/N,EAAA,GACAG,EAAAp5M,WAAAk5M,GACAG,EAAAr5M,WAAAm5M,GACAC,EAAA,IAAAA,GAAA,IAAAC,EAAA,KAAAA,GAAA,KAZA94N,KAaAy4N,YAAA,CACArB,IAAAyB,EACAvB,IAAAwB,GAGA,CACA,CACA,OAAAxgN,GAAA,CACA,EAEAy9M,EAAAh2N,UAAA03N,YAAA,SAAA94K,GACA,IAAA59C,EAAAf,KAEAgrC,EACAC,SAAA,sBACA/R,SAAAn4B,EAAA4B,OAAAu2B,SACAk9L,OAAAr1N,EAAAzF,KAAAV,GACA+jD,YAEAr7C,MAAA,SAAAye,GACA,SAAAA,EAAAgJ,OAAA,CACA,IAAAguM,EAAA,IAAAh3M,EAAAq1M,QAAAr1M,EAAAu1M,OACA5wM,EAAAivM,EAAAn2M,KAAAu5M,GACAryM,EAAAhuB,QAAA,GACAqI,EAAA03N,YAAA,CACArB,IAAA1wM,EAAA,GACA4wM,IAAA5wM,EAAA,IAGA,2CAAAskC,SAAAjqD,EAAAzF,KAAA45N,yBACAn0N,EAAA6J,sBAAA,iBAEA,GACA,EAEAmrN,EAAAh2N,UAAA04N,YAAA,SAAAn9N,GACA,IAAAyF,EAAAf,KAEAg5N,EAAA,IAAAn/N,OAAAk9N,OAAAC,KAAAiC,OAAA39N,EAAA87N,IAAA97N,EAAAg8N,KAEAZ,EAAA,CACA11D,KAAAhhK,KAAA1E,KAAA0lK,KACAyrC,OAAAusB,EACArC,UAAA32N,KAAAi+C,WAAAl9C,EAAAzF,KAAA0hD,UAGAh9C,KAAAkH,IAAAgyN,WAAAxC,GAEA,IAAAwB,EAAAn3N,EAAAo3N,kBAAA/xN,EAAA4yN,GACA19N,EAAA+O,SAAA07H,IAEAlsI,OAAAk9N,OAAAC,KAAAt2N,MAAAD,YAAAy3N,EAAA,QAAAn3N,EAAAq3N,cAAA71N,KAAAxB,EAAAzF,IAEA0E,KAAA1E,KAAA85N,kBACAv7N,OAAAk9N,OAAAC,KAAAt2N,MAAAD,YAAAy3N,EAAA,UAAAn3N,EAAAs3N,cAAA91N,KAAAxB,EAAAzF,IAGA0E,KAAA1E,KAAA69N,gBACAn5N,KAAA2C,OAAAm2B,WAAAgQ,OAAAlC,SAAA5mC,KAAA1E,KAAA69N,eAAA79N,EAAA+O,UAGArK,KAAAo5N,sBACA,EAEArD,EAAAh2N,UAAAk+C,WAAA,SAAAjB,GACA,OAAAA,GACA,cACA,OAAAnjD,OAAAk9N,OAAAC,KAAAqC,UAAAC,QACA,gBACA,OAAAz/N,OAAAk9N,OAAAC,KAAAqC,UAAAE,UACA,aACA,OAAA1/N,OAAAk9N,OAAAC,KAAAqC,UAAAG,OACA,QACA,OAAA3/N,OAAAk9N,OAAAC,KAAAqC,UAAAI,QAEA,EAEA1D,EAAAh2N,UAAAq4N,cAAA,SAAAsB,GACA15N,KAAA4K,sBAAA,UAAA8uN,EAAA15N,KAAA1E,KAAA+O,WAAAqvN,EAAArvN,SACA,EAEA0rN,EAAAh2N,UAAA45N,gBAAA,SAAAvC,EAAAE,EAAAsC,GACA,IAAA74N,EAAAf,KACAwjB,EAAApqB,EAAAsqB,WAqBA,OAnBAsnB,EACAC,SAAA,sBACA/R,SAAAn4B,EAAA4B,OAAAu2B,SACAk9L,OAAAr1N,EAAAzF,KAAAV,GACAw8N,MACAE,QAEAh0N,MAAA,SAAAye,GAEA,OAAAA,EAAAgJ,QACA,iBAAAhJ,EAAAgJ,OAEAhqB,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAAgzL,EAAA73M,EAAAy1M,mBAEAz2N,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAAgzL,EAAA74N,EAAAzF,KAAAk6N,oBAEAhyM,EAAAc,SACA,IAEAd,EAAAa,SACA,EAEA0xM,EAAAh2N,UAAAs4N,cAAA13M,eAAA+4M,EAAAxB,GACA,IAAAn3N,EAAAf,KACAA,KAAA1E,KAAAu+N,iBAAA75N,KAAA1E,KAAAw+N,kBACA95N,KAAA2C,OAAAm2B,WAAAgQ,OAAAlC,SAAA5mC,KAAA1E,KAAAu+N,gBAAA3B,EAAAf,OAAAC,OACAp3N,KAAA2C,OAAAm2B,WAAAgQ,OAAAlC,SAAA5mC,KAAA1E,KAAAw+N,gBAAA5B,EAAAf,OAAAG,QAGAt3N,KAAA1E,KAAAi6N,wBAAAv1N,KAAA1E,KAAAy+N,oBACA/5N,KAAA25N,gBAAAzB,EAAAf,OAAAC,MAAAc,EAAAf,OAAAG,MAAAt3N,KAAA1E,KAAAy+N,qBAAAxtL,MACA,WACAxrC,EAAA6J,sBAAA,aAAA8uN,EAAA34N,EAAAzF,KAAA+O,WAAAqvN,EAAArvN,SACA,IAGAtJ,EAAA6J,sBAAA,aAAA8uN,EAAA34N,EAAAzF,KAAA+O,WAAAqvN,EAAArvN,SAEA,EAEA0rN,EAAAh2N,UAAA+3N,eAAA,SAAA4B,EAAA33M,GACA,IAAAhhB,EAAAf,KAEA,UAAA+hB,EAAAgJ,OAAA,CACA,IAAAguM,EAAA,IAAAh3M,EAAAq1M,QAAAr1M,EAAAu1M,OACA5wM,EAAAivM,EAAAn2M,KAAAu5M,GAEA,GAAAryM,EAAAhuB,QAAA,GACA,IAAAw/N,EAAAn3N,EAAAo3N,aAAAuB,EAAA,IAAA7/N,OAAAk9N,OAAAC,KAAAiC,OAAAvyM,EAAA,GAAAA,EAAA,KACA7sB,OAAAk9N,OAAAC,KAAAt2N,MAAAD,YAAAy3N,EAAA,QAAAn3N,EAAAq3N,cAAA71N,KAAAxB,EAAA24N,IACA34N,EAAAzF,KAAA85N,kBACAv7N,OAAAk9N,OAAAC,KAAAt2N,MAAAD,YACAy3N,EACA,UACAn3N,EAAAs3N,cAAA91N,KAAAxB,EAAA24N,EAAAxB,GAEA,CACAn3N,EAAAu3N,sBAAAv3N,EAAAmG,IACA,UAAA4uN,EAAAp9N,QACAsH,KAAAysJ,YAAAzsJ,KAAAkH,IAEA,EAEA6uN,EAAAh2N,UAAA0sJ,YAAA,SAAAvlJ,GACA,IACAkwN,EAAAE,EAAA34K,EAAAq7K,EAAAvxN,EAEA,yBAAAzI,KAAA1E,KAAA45N,wBACAzsN,EAAAzI,KAAA1E,KAAA2+N,YACA7C,EAAA33M,WAAAzf,KAAA1E,KAAA4+N,SACA5C,EAAA73M,WAAAzf,KAAA1E,KAAA6+N,SACAx7K,EAAA3+C,KAAA1E,KAAA8+N,YACAJ,EAAAh6N,KAAA1E,KAAA+5N,UACA,2BAAAr1N,KAAA1E,KAAA45N,yBACAzsN,EAAAzI,KAAA1E,KAAA++N,YACAjD,EAAA33M,WAAAzf,KAAA1E,KAAAg/N,SACAhD,EAAA73M,WAAAzf,KAAA1E,KAAAi/N,SACA57K,EAAA3+C,KAAA1E,KAAAk/N,YACAR,EAAAh6N,KAAA1E,KAAAg6N,UAGAt1N,KAAA23N,cAAAzwN,GAEAuB,IAMAk2C,EACA3T,EACAC,SAAA,sBACA/R,SA5BAl5B,KA4BA2C,OAAAu2B,SACAk9L,OA7BAp2N,KA6BA1E,KAAAV,GACA+jD,YAEAr7C,MAAA,SAAAye,GACA,UAAAA,EAAAgJ,OAAA,CACA,IAAAguM,EAAA,IAAAh3M,EAAAq1M,QAAAr1M,EAAAu1M,OACA5wM,EAAAivM,EAAAn2M,KAAAu5M,GACA,GAAAryM,EAAAhuB,QAAA,GACA,IAAAsgO,EAAA,IAAAn/N,OAAAk9N,OAAAC,KAAAiC,OAAAvyM,EAAA,GAAAA,EAAA,IACAxf,EAAAuzN,UAAAzB,GACA9xN,EAAAwzN,QAAAV,EACA,CACA,CACA,IACA5C,GAAAE,GACApwN,EAAAuzN,UAAA,CAAArD,MAAAE,QACApwN,EAAAwzN,QAAAV,KAGA9yN,EAAAuzN,UAAA,CAAArD,IAAA,UAAAE,IAAA,WACApwN,EAAAwzN,QAAA,IAGA16N,KAAAo5N,uBACA,EAEArD,EAAAh2N,UAAA43N,cAAA,WACA,QAAAl/N,EAAA,EAAAA,EAAAq9N,EAAAp9N,OAAAD,IACAq9N,EAAAr9N,GAAAkiO,OAAA,MAGA7E,EAAA,EACA,EAEAC,EAAAh2N,UAAAu4N,sBAAA,SAAApxN,GACA,OAAA4uN,EAAAp9N,OACAwO,EAAAuzN,UAAA3E,EAAA,GAAA3xN,UACA+C,EAAAwzN,QAAA,SACA,OAAA5E,EAAAp9N,OAAA,CAGA,IAFA,IAAAkiO,EAAA,IAAA/gO,OAAAk9N,OAAAC,KAAA6D,aAEApiO,EAAA,EAAAA,EAAAq9N,EAAAp9N,OAAAD,IACAmiO,EAAAj7N,OAAAm2N,EAAAr9N,GAAA0L,UAGA+C,EAAA4zN,UAAAF,EACA,CACA56N,KAAAo5N,sBACA,EAEArD,EAAAh2N,UAAAg7N,OAAA,WACA,OAAA/6N,KAAAg2N,YAAA3xM,OACA,EAEA0xM,EAAAh2N,UAAAi7N,4BAAA,WACAh7N,KAAA23N,eACA,EAEA5B,EAAAh2N,UAAAq5N,qBAAA,WACAp5N,KAAAi3N,uBACAj3N,KAAAi3N,sBAAA,EACAj3N,KAAAs9C,KAAA13C,IAAA,qBAEA,EAEAmwN,EAAAh2N,UAAAo4N,aAAA,SAAAuB,EAAAV,GACA,GAAAA,GAAAU,EAAA15N,KAAA1E,KAAA08N,YAAA0B,EAAA15N,KAAA1E,KAAA28N,WAAA,CAGA,IAAAC,EAAA,IAAAr+N,OAAAk9N,OAAAC,KAAAkB,OAAA+C,sBAAA,CACA/zN,IAAAlH,KAAAkH,IACA/C,SAAA60N,GAAA,IAAAn/N,OAAAk9N,OAAAC,KAAAiC,OAAAS,EAAA15N,KAAA1E,KAAA08N,WAAA0B,EAAA15N,KAAA1E,KAAA28N,YACAh6D,UAAAj+J,KAAA1E,KAAA85N,mBAGA8F,EAAAh7N,OAAAgyD,OAAA,GAAAlyD,KAAA62N,uBAqBA,OAnBA6C,IACA15N,KAAA1E,KAAA6/N,uCACAD,EAAAr+L,WAAA68L,EAAA15N,KAAA1E,KAAA8/N,wBAAAF,EAAAr+L,WACAq+L,EAAAr6L,YAAA64L,EAAA15N,KAAA1E,KAAA+/N,oBAAAH,EAAAr6L,YACAq6L,EAAAzF,WAAAiE,EAAA15N,KAAA1E,KAAAggO,mBAAAJ,EAAAzF,YAGAz1N,KAAA1E,KAAAigO,oBACAL,EAAAhzL,MAAAwxL,EAAA15N,KAAA1E,KAAAigO,oBAAAL,EAAAhzL,OAGAloC,KAAA1E,KAAAkgO,oBACAtD,EAAA/nL,MAAAupL,EAAA15N,KAAA1E,KAAAkgO,qBAIAtD,EAAA1iJ,QAAA,IAAA37E,OAAAk9N,OAAAC,KAAAkB,OAAAuD,WAAAP,GAAAtvN,QACAkqN,EAAAj1N,KAAAq3N,GAEAA,CA7BA,CA8BA,EAEAnC,CACA,IAEAt+N,OC5hBA,wBACA,WACA,SAAA2B,GAEA,IAAAsiO,EAAA,SAAAphE,EAAA3uH,GACA3rC,KAAAuF,SAAAnM,EAAA,8BACAyN,SAAA8kC,GAEA3rC,KAAA27N,UAAAviO,EAAA,6BACAyyC,OAAAzyC,EAAA,iBACAsC,GAAA,oBACA4+J,EAAA//I,OACA,IACAsxB,OAAAzyC,EAAA,gCACAyN,SAAA7G,KAAAuF,UAEAvF,KAAA47N,aAAAxiO,EAAA,6BACAyyC,OAAAzyC,EAAA,iBACAsC,GAAA,oBACA4+J,EAAAzrF,UACA,IACAhjC,OAAAzyC,EAAA,mCACAyN,SAAA7G,KAAAuF,UAEAvF,KAAA67N,WAAAziO,EAAA,uCACAyN,SAAA7G,KAAAuF,UAEAvF,KAAA87N,SAAA1iO,EAAA,4BACAyyC,OAAAzyC,EAAA,iBACAsC,GAAA,oBACA4+J,EAAA1nG,MACA,IACA/mB,OAAAzyC,EAAA,+BACAyN,SAAA7G,KAAAuF,UAEAvF,KAAA+7N,SAAA3iO,EAAA,6BACAyyC,OAAAzyC,EAAA,iBACAsC,GAAA,oBACA4+J,EAAAhgJ,MACA,IACAuxB,OAAAzyC,EAAA,+BACAyN,SAAA7G,KAAAuF,SACA,EA0BA,OAxBAm2N,EAAA37N,UAAA2zC,OAAA,SAAAgF,EAAAC,EAAA/f,GACA,IAAAg7B,EAAAlb,EAAAC,EAAA,EACAgb,EAAA/6B,GAAA8f,EAAA,GAAAC,EAAA/f,GAAA8f,EAAA,GAAAC,EAEA,IAAAib,IACA5zD,KAAA27N,UAAAnyN,OACAxJ,KAAA47N,aAAApyN,QAGAmqD,IAAA/6B,IACA54B,KAAA87N,SAAAtyN,OACAxJ,KAAA+7N,SAAAvyN,QAGA,IAAAovB,EACA54B,KAAAg8N,aAAA,gBAEAh8N,KAAAg8N,aAAA,IAAApoK,EAAA,OAAAD,EAAA,KAAA/6B,EAAA,KACA,EAEA8iM,EAAA37N,UAAAi8N,aAAA,SAAAnhM,GACA76B,KAAA67N,WAAAhhM,OACA,EAEA6gM,CACA,IACAjkO,OCtEA,mBACA,SACA,UACA,WACA,aACA,UACA,uBACA,YACA,SAAA2B,EAAAkM,EAAAm5B,EAAAtlC,EAAAqc,EAAAkmN,EAAA72L,GACA,aAEA,IAAA9I,EAAA,CACAzgC,KAAA,CACAuwM,qBAAA,EACAC,wBAAA,EACAnzJ,SAAA,KAIA,SAAAsjL,EAAA94M,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAA1E,KAAA0jL,QAAA7lL,EAAA+N,IAAAlH,KAAA1E,KAAA0jL,SAAA,SAAAG,GACA,OAAA3pK,EAAA1D,+BAAAqtK,EACA,IACAn/K,KAAA1E,KAAAoI,SAAA8R,EAAA1D,+BAAA9R,KAAA1E,KAAAoI,WAAA,GAEA1D,KAAAuF,SACAI,SAAA,mBAEA3F,KAAAqjD,SAAAjqD,EAAA,WACAwM,IAAA,CACAzB,SAAA,WACAuC,IAAA,EACAC,MAAA,EACAC,OAAA,EACAH,KAAA,EACAivC,WAAA,WACAsB,SAAA,SAEAnwC,SAAA7G,KAAAuF,UAEAvF,KAAA04C,KAAA,EAEA14C,KAAA8+B,eAEA9+B,KAAA0zC,QACA,CAsNA,OApNApuC,EAAA3F,OAAAs8N,EAAA32N,GAEA22N,EAAAriM,SAAA,OAEAqiM,EAAAl8N,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MAEA,IAAAe,EAAAf,KACAA,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAo8C,YACA,SAAAp8C,GACAyF,EAAA2yC,OAAAp4C,EACA,IACA,SAAAA,GACAyF,EAAA23L,uBAAAp9L,EACA,IAEA0E,KAAAs4C,UAAAt4C,KAAA2C,OAAA+B,WAAA6zC,gBAAAv4C,KAAA1E,KAAAoJ,YACA1E,KAAA2M,eACA,EAEAsvN,EAAAl8N,UAAA++B,aAAA,WACA,IAAA/9B,EAAAf,KAEAe,EAAAzF,KAAA+jC,OAAAt+B,EAAAzF,KAAAkkC,QACAf,EAAAK,aAAA/9B,EAAA,aACA,EAEAk7N,EAAAl8N,UAAA24L,uBAAA,SAAAp9L,GACAA,EAAAo9C,KAAA14C,KAAA04C,KACAp9C,EAAAq9C,SAAA34C,KAAA1E,KAAAq9C,SACA34C,KAAAwtM,iBACAlyM,EAAAkyM,eAAAxtM,KAAAwtM,eAEA,EAEAyuB,EAAAl8N,UAAA0yM,cAAA,WACA,IAAA1xM,EAAAf,KACAA,KAAA2C,OAAAm1C,gBAAA7M,SACAjrC,KAAA1E,KAAAo8C,YACA,SAAAp8C,GAAAyF,EAAA2yC,OAAAp4C,EAAAyF,EAAA,IACA,SAAAzF,GAAAyF,EAAA23L,uBAAAp9L,EAAA,GACA,EAEA2gO,EAAAl8N,UAAAm8N,4BAAA,SAAAvrB,EAAAwrB,EAAAC,EAAAC,EAAAC,GACA,KAAAA,EAAAD,EAAA3jO,OAAA,GAMA,IAFA,IAAA6jO,EAAAF,EAAAC,GAAA5nE,OACA8nE,EAAAJ,EACAI,GAAAL,GACAK,EAAAL,GAAAxrB,EAAA6rB,GAAAD,KAAA5rB,EAAA6rB,EAAA,GAAAD,IACA5rB,EAAA6rB,GAAAD,GAAA,KACAC,GAAA,IAEAx8N,KAAAk8N,4BAAAvrB,EAAA6rB,EAAAJ,EAAAC,EAAAC,EAAA,GAEAF,EADAI,GAAA,EAIA,EAEAP,EAAAl8N,UAAA2zC,OAAA,SAAAp4C,GACA,IAAAyF,EAAAf,KACAe,EAAA07N,iBAAA,KAEAr2N,MAAA9K,KACAA,EAAA,IACAs9B,aAAA,EACAt9B,EAAA68B,QAAA,IAGA,IAAAukM,EAAAvjO,EAAA+N,IAAA5L,EAAA68B,SAAA,SAAAikB,GACA,OAAAhjD,EAAAuG,OAAA,GAAAy8C,EACA,IACAugL,EAAAxjO,EAAAghB,OAAApZ,EAAAzF,KAAA0jL,SAAA,SAAAG,GACA,OAAAA,EAAAlpB,KACA,IACAl1J,EAAAm7N,4BAAAQ,EAAA,EAAAA,EAAAhkO,OAAA,EAAAikO,EAAA,GAEA57N,EAAAzF,KAAAs9B,aAAAt9B,EAAAs9B,aACA73B,EAAAsiD,SAAA5I,QAEAz6C,KAAA1E,KAAAuwM,qBACA,IAAA6vB,EAAA17N,UAAAqjD,UAAA3P,OAAA1zC,KAAA04C,KAAA14C,KAAA1E,KAAAq9C,SAAA34C,KAAA1E,KAAAs9B,cAEA,IAAAs6K,EAAA95M,EAAA,wBACAwM,IAAA,CACAg3N,YAAA77N,EAAAzF,KAAAuhO,gBAAA,aACA7vN,MAAAjM,EAAAzF,KAAAuhO,gBAAA,OAAA97N,EAAA+7N,0BACAx7L,UAAA,OACAy7L,cAAA,EACApgM,WAAA,IAGA,IAAA57B,EAAAzF,KAAAuhO,gBAAA,CACA,IAAAG,EAAA5jO,EAAA,cAAAyN,SAAAqsM,GACA/5M,EAAAiJ,KAAArB,EAAAzF,KAAA0jL,SAAA,SAAAG,GACA69C,EAAAnxL,OAAA,qBAAAszI,EAAAnyK,MAAA,SACA,GACA,CAGA,IAAAiwN,EAAA7jO,EAAA,WAAAyN,SAAAqsM,GACA1D,EAAAp2M,EAAA,QAAAyN,SAAAo2N,GAEA9jO,EAAAiJ,KAAArB,EAAAzF,KAAA0jL,SAAA,SAAAG,GACA,IAAAuzB,EAAAt5M,EAAA,QACAwM,IAAA,WAAA7E,EAAAzF,KAAAuhO,gBAAA,eACAh2N,SAAA2oM,GACAp2M,EAAA,gBACAyhC,KAAAskJ,EAAA+9C,OACAxhO,GAAA,oBAAAqF,EAAA6uM,aAAAzwB,EAAA,IACAt4K,SAAA6rM,EACA,IAEAQ,EAAArsM,SAAA9F,EAAAsiD,UAEA,IAAA2N,EAAAhxD,KAAAgK,gBAAA,WACAmzN,EAAAn9N,KAAAgK,gBAAA,YACAozN,EAAAp9N,KAAAgK,gBAAA,cAGA5Q,EAAAgJ,KAAAs6N,GAAA,SAAAW,EAAAjhL,GACA,IAAAJ,EAAA5iD,EAAA,SAEAD,EAAAiJ,KAAArB,EAAAzF,KAAA0jL,SAAA,SAAAG,GACA,IAAAo1B,EAAAj5M,EAAAq9B,QAAAwmJ,EAAAzqB,QACAloJ,EAAAzL,EAAAu3C,UAAA6D,yBAAAo4J,EAAAn4J,EAAA+iI,EAAAzqB,SAEA,OAAAt4G,EAAA+iI,EAAAzqB,UACAloJ,EAAA,UAGA,IAAAykM,EAAA73M,EAAA,SACAyrC,OAAAiO,SAAAtmC,IACA3F,SAAAm1C,GAEAj7C,EAAAzF,KAAAuhO,iBACA5rB,EAAArrM,IAAA,CAAAoxC,SAAA,UAEA,KAEAga,EAAArtD,SAAAy5N,EAAAz5N,SAAAw5N,EAAAx5N,UACAq4C,EACAr2C,SAAA,gBACAjK,GAAA,oBACA,GAAA0hO,EAAAz5N,SAAAw5N,EAAAx5N,QAAA,CACA,IAAA25N,EAAAthL,EAAAvZ,SAAA,eACAuZ,EAAAn2C,SAAA68B,WAAA95B,YAAA,eACA00N,GACAthL,EAAAr2C,SAAA,cACA,CACA5E,EAAA6J,sBAAA,UAAAwxC,EAAAr7C,EAAAzF,KAAA+O,WACAtJ,EAAA07N,mBAAAY,GACAt8N,EAAA6J,sBAAA,aAAAtP,EAAA68B,QAAAp3B,EAAA07N,kBAAA17N,EAAAzF,KAAA+O,WACAtJ,EAAA07N,iBAAA,MACAY,IAAAt8N,EAAA07N,mBACA17N,EAAA6J,sBAAA,WAAAwxC,EAAAr7C,EAAAzF,KAAA+O,WACAtJ,EAAA07N,iBAAAY,EAEA,IAGArhL,EAAAn1C,SAAAqsM,EACA,IAEAlzM,KAAA1E,KAAAwwM,wBACA,IAAA4vB,EAAA17N,UAAAqjD,UAAA3P,OAAA1zC,KAAA04C,KAAA14C,KAAA1E,KAAAq9C,SAAA34C,KAAA1E,KAAAs9B,aACA,EAEAqjM,EAAAl8N,UAAAwa,MAAA,WACAva,KAAA04C,KAAA,EACA14C,KAAAyyM,eACA,EAEAwpB,EAAAl8N,UAAA8uE,SAAA,WACA7uE,KAAA04C,KAAA,IACA14C,KAAA04C,OACA14C,KAAAyyM,gBAEA,EAEAwpB,EAAAl8N,UAAA6yD,KAAA,WACA5yD,KAAA04C,KAAA3jC,KAAAM,MAAArV,KAAA1E,KAAAs9B,aAAA54B,KAAA1E,KAAAq9C,YACA34C,KAAA04C,OACA14C,KAAAyyM,gBAEA,EAEAwpB,EAAAl8N,UAAAua,KAAA,WACAta,KAAA04C,KAAA3jC,KAAAM,MAAArV,KAAA1E,KAAAs9B,aAAA54B,KAAA1E,KAAAq9C,SAAA,KACA34C,KAAAyyM,eACA,EAEAwpB,EAAAl8N,UAAA+8N,wBAAA,WAEA,OAAA3jO,EAAA4J,OADA/C,KACA1E,KAAA0jL,SAAA,SAAAr4D,EAAAuvC,GACA,OAAAvvC,EAAAuvC,EAAAlpJ,KACA,KACA,EAEAivN,EAAAl8N,UAAA6vM,aAAA,SAAAzwB,GACA,IAAAp+K,EAAAf,KACA0tM,EAAA3sM,EAAAysM,gBAAAzsM,EAAAysM,eAAA,GAAA94C,SAAAyqB,EAAAzqB,SACA3zJ,EAAAysM,eAAA,GAAAE,WAEA3sM,EAAAysM,eAAA,EAAA94C,OAAAyqB,EAAAzqB,OAAAg5C,eACA3sM,EAAA0xM,eACA,EAEAwpB,CACA,IC/PA,SAAAv6I,EAAAtwB,GACA,mBAAA35D,eAAA65D,IACA75D,OAAA,eAAA25D,GACA,iBAAAC,QACAp4D,OAAAo4D,QAAAD,IAEAswB,EAAA67I,aAAAnsK,GAEA,CARA,CAQA,oBAAAv3D,cAAAmG,MAAA,WAGA,uBAAAnG,OACA,YAIA,IAAA2jO,EAAA,oBAAA3jO,eAAAkb,WACAlb,OACA,oBAAAkH,WAAAgU,WACAhU,KACAojG,SAAA,cAAAA,GAIAs5H,EAAAD,EAAAC,uBACAD,EAAAE,0BACAF,EAAAG,6BACA,SAAAv+M,GACA,OAAAo+M,EAAA74M,WAAAvF,EAAA,GACA,EAQA,SAAAw+M,EAAA1lJ,EAAA90D,GACA,IAAAy6M,EAAA39N,OAAAH,UAAA0Q,SAAAuU,KAAAkzD,GACA4lJ,EAAA,mBAAAD,GACA,sBAAAA,GACA,4BAAAA,GACA,oBAAAA,GACA,oBAAAz0M,QAAA8uD,aAAA9uD,QACA,oBAAA20M,UAAA7lJ,aAAA6lJ,SAEAtlO,EAAA,EAAA07B,EAAA+jD,EAAAx/E,OACA,GAAAolO,EACA,KAAArlO,EAAA07B,EAAA17B,IACA2qB,EAAA80D,EAAAz/E,SAGA2qB,EAAA80D,EAEA,CAOA,SAAA8lJ,EAAApyN,GACA,IAAAA,EAAAE,sBACA,OACAkB,MAAApB,EAAAg4B,YACAz1B,OAAAvC,EAAA83B,cAIA,IAAA8wB,EAAA5oD,EAAAE,wBACA,OACAkB,MAAA+H,KAAA81C,MAAA2J,EAAAxnD,OACAmB,OAAA4G,KAAA81C,MAAA2J,EAAArmD,QAEA,CAQA,SAAA8vN,EAAAryN,EAAAqwB,GACA/7B,OAAAyP,KAAAssB,GAAAp6B,SAAA,SAAA+O,GACAhF,EAAAqwB,MAAArrB,GAAAqrB,EAAArrB,EACA,GACA,CAUA,IAAA2sN,EAAA,SAAA3xN,EAAAwX,GAKA,SAAA86M,IACA,IAKAzlO,EAAA07B,EALAkhG,EAAA,GACAr1H,KAAAolD,IAAA,SAAAiB,GACAgvE,EAAAx0H,KAAAwlD,EACA,EAGArmD,KAAAglB,KAAA,SAAAm5M,GACA,IAAA1lO,EAAA,EAAA07B,EAAAkhG,EAAA38H,OAAAD,EAAA07B,EAAA17B,IACA48H,EAAA58H,GAAAusB,KAAAhlB,KAAAm+N,EAEA,EAEAn+N,KAAAjH,OAAA,SAAAstD,GACA,IAAA+3K,EAAA,GACA,IAAA3lO,EAAA,EAAA07B,EAAAkhG,EAAA38H,OAAAD,EAAA07B,EAAA17B,IACA48H,EAAA58H,KAAA4tD,GAAA+3K,EAAAv9N,KAAAw0H,EAAA58H,IAEA48H,EAAA+oG,CACA,EAEAp+N,KAAAtH,OAAA,WACA,OAAA28H,EAAA38H,MACA,CACA,CAOA,SAAA2lO,EAAAzyN,EAAA0yN,GACA,GAAA1yN,EACA,GAAAA,EAAA2yN,gBACA3yN,EAAA2yN,gBAAAn5K,IAAAk5K,OADA,CAKA1yN,EAAA2yN,gBAAA,IAAAL,EACAtyN,EAAA2yN,gBAAAn5K,IAAAk5K,GAEA1yN,EAAA4yN,aAAAtmO,SAAAoqB,cAAA,OACA1W,EAAA4yN,aAAA5yF,IAAA,MACAhgI,EAAA4yN,aAAA1+L,UAAA,gBAEA,IAAA7D,EAAA,CACAwiM,cAAA,OACAt6N,SAAA,WACAsC,KAAA,MACAC,IAAA,MACAC,MAAA,MACAC,OAAA,MACAowC,SAAA,SACAzyC,OAAA,KACAknC,WAAA,SACA80H,SAAA,QAEAm+D,EAAA,CACAv6N,SAAA,WACAsC,KAAA,MACAC,IAAA,MACAuoI,WAAA,MAGAgvF,EAAAryN,EAAA4yN,aAAAviM,GAEA,IAAAk0G,EAAAj4I,SAAAoqB,cAAA,OACA6tH,EAAArwG,UAAA,uBACAm+L,EAAA9tF,EAAAl0G,GAEA,IAAA0iM,EAAAzmO,SAAAoqB,cAAA,OACA27M,EAAAU,EAAAD,GACAvuF,EAAA//G,YAAAuuM,GAEA,IAAAC,EAAA1mO,SAAAoqB,cAAA,OACAs8M,EAAA9+L,UAAA,uBACAm+L,EAAAW,EAAA3iM,GAEA,IAAA4iM,EAAA3mO,SAAAoqB,cAAA,OACA27M,EAAAY,EAAAH,GACAT,EAAAY,EAAA,CAAA7xN,MAAA,OAAAmB,OAAA,SACAywN,EAAAxuM,YAAAyuM,GAEAjzN,EAAA4yN,aAAApuM,YAAA+/G,GACAvkI,EAAA4yN,aAAApuM,YAAAwuM,GACAhzN,EAAAwkB,YAAAxkB,EAAA4yN,cAEA,IAMAM,EAAAC,EANAC,EAAAnlO,OAAAs+E,iBAAAvsE,GACAzH,EAAA66N,IAAAhtL,iBAAA,iBACA,aAAA7tC,GAAA,aAAAA,GAAA,UAAAA,IACAyH,EAAAqwB,MAAA93B,SAAA,YAIA,IAAAG,EAAA05N,EAAApyN,GACAgiL,EAAA,EACAC,EAAA,EACAoxC,GAAA,EACAC,EAAA,EAgBAlpJ,EAAA,WAEA,GAAAipJ,EAAA,CAEA,GADA,IAAArzN,EAAAg4B,aAAA,IAAAh4B,EAAA83B,aAWA,YARAw7L,IACAA,EAAAzB,GAAA,WACAyB,EAAA,EAEAlpJ,GACA,MAMAipJ,GAAA,CAEA,CAjCA,IACAjyN,EACAmB,EADAnB,EAAApB,EAAAg4B,YACAz1B,EAAAvC,EAAA83B,aAEAi7L,EAAA1iM,MAAAjvB,QAAA,QACA2xN,EAAA1iM,MAAA9tB,SAAA,QAEAgiI,EAAA/pG,WAAAp5B,EAAA,GACAmjI,EAAAriI,UAAAK,EAAA,GAEAywN,EAAAx4L,WAAAp5B,EAAA,GACA4xN,EAAA9wN,UAAAK,EAAA,EAyBA,EACAvC,EAAA4yN,aAAAW,YAAAnpJ,EAEA,IAAAopJ,EAAA,WACAL,EAAA,EAEAD,IAEAlxC,EAAAtpL,EAAA0I,MACA6gL,EAAAvpL,EAAA6J,OAEAvC,EAAA2yN,iBACA3yN,EAAA2yN,gBAAAv5M,KAAA1gB,GAEA,EAEAoyC,EAAA,WACApyC,EAAA05N,EAAApyN,IACAkzN,EAAAx6N,EAAA0I,QAAA4gL,GAAAtpL,EAAA6J,SAAA0/K,KAEAkxC,IACAA,EAAAtB,EAAA2B,IAGAppJ,GACA,EAEAqpJ,EAAA,SAAA/sF,EAAAh6I,EAAAgnO,GACAhtF,EAAA5hH,YACA4hH,EAAA5hH,YAAA,KAAAp4B,EAAAgnO,GAEAhtF,EAAA9iH,iBAAAl3B,EAAAgnO,EAEA,EAEAD,EAAAlvF,EAAA,SAAAz5F,GACA2oL,EAAAT,EAAA,SAAAloL,GAGA+mL,EAAAznJ,EA3IA,CA4IA,CAEA4nJ,EAAAhyN,GAAA,SAAAo4H,GACAq6F,EAAAr6F,EAAA5gH,EACA,IAEApjB,KAAA0iI,OAAA,SAAAr8E,GACAk3K,EAAA76F,OAAA92H,EAAAy6C,EACA,EAEArmD,KAAAg2E,MAAA,WACApqE,EAAA4yN,aAAAW,aACA,CACA,EAyBA,GAvBA5B,EAAAvnJ,MAAA,SAAApqE,GACAgyN,EAAAhyN,GAAA,SAAAo4H,GACAA,EAAAw6F,aAAAW,aACA,GACA,EAEA5B,EAAA76F,OAAA,SAAA92H,EAAAy6C,GACAu3K,EAAAhyN,GAAA,SAAAo4H,GACAA,IACAA,EAAAu6F,iBAAA,mBAAAl4K,IACA29E,EAAAu6F,gBAAAxlO,OAAAstD,GACA29E,EAAAu6F,gBAAA7lO,WAEAsrI,EAAAw6F,eACAx6F,EAAAjiI,SAAAiiI,EAAAw6F,eACAx6F,EAAA3zG,YAAA2zG,EAAAw6F,qBAEAx6F,EAAAw6F,oBACAx6F,EAAAu6F,iBAEA,GACA,EAEA,oBAAAgB,iBAAA,CACA,IAAAC,EAAA,IAAAD,kBAAA,SAAAE,GACA,QAAAhnO,KAAAgnO,EACA,GAAAA,EAAA5sM,eAAAp6B,GAEA,IADA,IAAA6hC,EAAAmlM,EAAAhnO,GAAAinO,WACAvrM,EAAA,EAAAA,EAAAmG,EAAA5hC,OAAAy7B,IACAmG,EAAAnG,GAAAqqM,cACAjB,EAAAvnJ,MAAA17C,EAAAnG,GAKA,IAEAj8B,SAAAs3B,iBAAA,6BAAA9uB,GACA8+N,EAAArY,QAAAjvN,SAAAi4B,KAAA,CACAwvM,WAAA,EACAC,SAAA,GAEA,GACA,CAEA,OAAArC,CAEA,IAEA9lO,OC5VA,+BACA,SACA,aACA,UACA,iBACA,SAAA2B,EAAAD,EAAAmM,EAAAi4N,GACA,aAEA,IAAAxhM,EAAA,CACAzgC,KAAA,CACAy7I,KAAA,CACA,CACAvqI,MAAA,EACApD,KAAA,KACAy2N,sBAAA,EACAC,YAAA,IAGA9gD,QAAA,CACA,CAAAxyK,MAAA,EAAApD,KAAA,OAEA22N,iBAAA,CAAAvzN,MAAA,EAAApD,KAAA,MACA42N,oBAAA,CAAAxzN,MAAA,EAAApD,KAAA,MACAmF,2BAAA,IAIA0xN,EAAA,SAAA98M,GAKA,OAJA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAAkgO,aAAA,GAEAlgO,IACA,EAuSA,OArSAsF,EAAA3F,OAAAsgO,EAAA36N,GAEA26N,EAAArmM,SAAA,aAEAqmM,EAAAlgO,UAAAgH,UAAA,WACA/G,KAAA1E,KAAA+S,gBAAAjI,IAAAjN,EAAA4d,UAAA/W,KAAA1E,KAAAy7I,KAAA,CAAA8oF,sBAAA,IACA7/N,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,gBACA3M,KAAAmgO,qCACAngO,KAAAogO,aACA,EAEAH,EAAAlgO,UAAA8H,OAAA,SAAAtC,GACA,OAAAvF,KAAA8G,qBAAAvB,EACA,EAEA06N,EAAAlgO,UAAA0H,WAAA,WACAzH,KAAAqgO,4BACArgO,KAAAsgO,mBACA,EAEAL,EAAAlgO,UAAA4H,4BAAA,SAAA/F,GACA,IAAA2+N,EAAAvgO,KAAAwgO,uBAAA5+N,GACA6+N,EAAAF,EAAAG,YACA,UAAA1gO,KAAA1E,KAAAy7I,KAAAwpF,EAAApuB,UAAA/oM,MACA,OAAApJ,KAAA1E,KAAA0jL,QAAAuhD,EAAA9wB,aAAArmM,KAAA,CACA,IAAAi6C,EAAAjqD,EAAA,UACAuM,SAAA,kBACAC,IAAA,CACAoH,MAAA,OACAmB,OAAA,OACAtB,QAAA,QACA,0BAWA,OARAjL,EAAAyhD,WACAzhD,EAAA2D,SAAAK,IAAA,yBACAhE,EAAA2D,SAAAK,IAAA,uBACAhE,EAAA2D,SAAAK,IAAA,YAEAhE,EAAAyhD,SAAAx8C,SAAA45N,GACA7+N,EAAA++N,sBAAA,EAEA/+N,EAAAiG,OAAAjG,EAAAyhD,SACA,CACA,OAAAzhD,EAAAiG,OAAA44N,EACA,EAEAR,EAAAlgO,UAAAygO,uBAAA,SAAA5+N,GACA,IAAAuwM,EAAAp9L,KAAAoiB,IAAApiB,KAAAsd,KAAAzwB,EAAAtG,KAAAslO,gBAAA,KAAA5gO,KAAA1E,KAAAy7I,KAAAr+I,OAAA,MACA+2M,EAAA16L,KAAAoiB,IAAApiB,KAAAsd,KAAAzwB,EAAAtG,KAAAulO,mBAAA,KAAA7gO,KAAA1E,KAAA0jL,QAAAtmL,OAAA,MACA,OAAAgoO,YAAA1gO,KAAAkgO,aAAA/tB,GAAA1C,GAAA0C,WAAA1C,cACA,EAEAwwB,EAAAlgO,UAAAqgO,YAAA,WACA,IAAAr/N,EAAAf,KACAA,KAAAkgO,aAAA,GAEA/mO,EAAAiJ,KAAArB,EAAAzF,KAAAy7I,MAAA,SAAA36F,EAAA+1J,GACA,IAAA2uB,EAAA,GACAC,EAAAhgO,EAAAigO,iBAAA7uB,GAEAh5M,EAAAiJ,KAAArB,EAAAzF,KAAA0jL,SAAA,SAAAG,EAAAswB,GACA,IAAAwxB,EAAAlgO,EAAAmgO,oBAAAzxB,GAEAgxB,EAAA1/N,EAAAogO,WACA,OAAApgO,EAAAzF,KAAA0jL,QAAAywB,GAAArmM,MAAA,OAAArI,EAAAzF,KAAAy7I,KAAAo7D,GAAA/oM,KAAA,GAAA63N,EAAA38N,KACA,OAAAvD,EAAAzF,KAAAy7I,KAAAo7D,GAAA/oM,MAAA,OAAArI,EAAAzF,KAAA0jL,QAAAywB,GAAArmM,KAAA,GAAA23N,EAAAz8N,KACA28N,EAAA98N,SACA48N,EAAA58N,SACAsrM,EACA0C,GAEA2uB,EAAAjgO,KAAA4/N,EACA,IAEA1/N,EAAAm/N,aAAAr/N,KAAAigO,EACA,GACA,EAEAb,EAAAlgO,UAAAogO,mCAAA,WACAngO,KAAAghO,iBACAhhO,KAAAohO,uBAAAphO,KAAA1E,KAAAy7I,KAAA/2I,KAAA1E,KAAAykO,kBAEA//N,KAAAkhO,oBACAlhO,KAAAohO,uBAAAphO,KAAA1E,KAAA0jL,QAAAh/K,KAAA1E,KAAA0kO,qBAEAhgO,KAAAuF,SAAAK,IAAA,CAAAmH,UAAA/M,KAAAqhO,WAAArhO,KAAA1E,KAAAy7I,KAAA/2I,KAAA1E,KAAAykO,iBAAA,aACA//N,KAAAuF,SAAAK,IAAA,CAAAuhC,SAAAnnC,KAAAqhO,WAAArhO,KAAA1E,KAAA0jL,QAAAh/K,KAAA1E,KAAA0kO,oBAAA,YACA,EAEAC,EAAAlgO,UAAAqhO,uBAAA,SAAAE,EAAAC,GACA,IAAAxgO,EAAAf,KACAwhO,EAAA,GAEAC,EAAAzhO,KAAAqhO,WAAAC,EAAAC,EAAA,MACAG,EAAA1hO,KAAAqhO,WAAAC,EAAAC,EAAA,MAEAI,EAAA,EACAC,EAAA,EAkBA,OAhBAzoO,EAAAiJ,KAAAk/N,GAAA,SAAAh9N,EAAA9C,GACA,IAAAqgO,EAAA9gO,EAAA+gO,WAAAx9N,EAAAm9N,EAAAC,GACAxtF,EACAnzI,EAAAghO,eAAAJ,EAAAC,EAAAH,EAAAC,GAEAF,EAAA3gO,KAAA,CACAyD,KAAAu9N,EACA19N,SAAA+vI,IAGAytF,GACA5gO,EAAAihO,aAAA19N,EAAA,MAAAvD,EAAAihO,aAAAT,EAAA,MACAK,GACA7gO,EAAAihO,aAAA19N,EAAA,MAAAvD,EAAAihO,aAAAT,EAAA,KACA,IAEAC,CACA,EAEAvB,EAAAlgO,UAAA+hO,WAAA,SAAAx9N,EAAAm9N,EAAAC,GACA,aAAAp9N,EAAA8E,KAEA,gBAAAs4N,EAAA,SADAp9N,EAAAkI,MAAAi1N,EACA,IAEAn9N,EAAAkI,MAAA,IAEA,EAEAyzN,EAAAlgO,UAAAgiO,eAAA,SAAAE,EAAAC,EAAAT,EAAAC,GACA,UAAAO,EACAC,EAAA,KAGA,gBAAAR,EAAA,SADAO,EAAAR,EACA,MAAAS,EAAA,KAEA,EAEAjC,EAAAlgO,UAAAiiO,aAAA,SAAA19N,EAAA8E,GACA,OAAA9E,EAAA8E,SACA9E,EAAAkI,MAEA,CACA,EAEAyzN,EAAAlgO,UAAAshO,WAAA,SAAAC,EAAAC,EAAAn4N,GAKA,OAJAjQ,EAAA+I,MAAAo/N,GACAnnN,QAAA,SAAA7V,GAAA,OAAAA,EAAA8E,QAAA,IACArG,QAAA,SAAA4jH,EAAAriH,GAAA,OAAAqiH,EAAAriH,EAAAkI,KAAA,MACAA,SACA80N,EAAA5oO,OAAA,GAAAsH,KAAAgiO,aAAAT,EAAAn4N,EACA,EAEA62N,EAAAlgO,UAAAohO,WAAA,SAAAn0N,EAAAmB,EAAA1H,EAAAC,GACA,OAAAtN,EAAA,UACAwM,IAAA,CACAzB,SAAA,WACA25I,UAAA,aAEA3vI,SACAnB,QACAtG,MACAD,SAEAI,SAAA7G,KAAAuF,SACA,EAEA06N,EAAAlgO,UAAAugO,kBAAA,WACA,GAAAtgO,KAAAmiO,iBAAA,CAIAniO,KAAA1E,KAAAiT,2BAAA,EAEA,QAAA9V,EAAA,EAAAA,EAAAuH,KAAA1E,KAAAy7I,KAAAr+I,OAAAD,IACA,QAAA07B,EAAA,EAAAA,EAAAn0B,KAAA1E,KAAA0jL,QAAAtmL,OAAAy7B,IAEA,OAAAn0B,KAAA1E,KAAAy7I,KAAAt+I,GAAA2Q,MAAA,OAAApJ,KAAA1E,KAAA0jL,QAAA7qJ,GAAA/qB,OACApJ,KAAAgO,YACAhO,KAAAkgO,aAAAznO,GAAA07B,GAAAvuB,IAAA,CACAmH,UAAA,OACAo6B,SAAA,SAIAnnC,KAAAkgO,aAAAznO,GAAA07B,GAAAvuB,IAAA,CACAc,IAAA,GACAD,KAAA,GACAtC,SAAA,WACA,eAAA1L,EAAA,KACA,kBAAA07B,EAAA,KACAiuM,QAAA3pO,EAAA,EACA4pO,WAAAluM,EAAA,KAKAn0B,KAAAsiO,oBAAAtiO,KAAAuiO,kBACAviO,KAAAuF,SAAAK,IAAA,CACAoH,MAAA,OACAmB,OAAA,SAIAnO,KAAAuF,SAAAK,IAAA,CACAiH,QAAAhT,OAAA3B,SAAAmqC,aAAA,kBACAmgM,OAAAxiO,KAAA1E,KAAAykO,iBAAAvzN,MAAAxM,KAAA1E,KAAAykO,iBAAA32N,KACAq5N,UAAAziO,KAAA1E,KAAA0kO,oBAAAxzN,MAAAxM,KAAA1E,KAAA0kO,oBAAA52N,MArCA,CAuCA,EAEA62N,EAAAlgO,UAAAsgO,0BAAA,WACA,GAAArgO,KAAA1E,KAAA+S,WAAA,CAMA,IAFA,IAAAq0N,EAAA,EACAv0N,EAAA,EACA1V,EAAA,EAAAA,EAAAuH,KAAA1E,KAAAy7I,KAAAr+I,OAAAD,IAAA,CACA,QAAA07B,EAAA,EAAAA,EAAAn0B,KAAAkgO,aAAAznO,GAAAC,OAAAy7B,IACAn0B,KAAA1E,KAAAy7I,KAAAt+I,GAAAonO,sBACA1xN,EAAAnO,KAAA1E,KAAAy7I,KAAAt+I,GAAAqnO,YAAA9/N,KAAA1E,KAAAy7I,KAAAt+I,GAAAkqO,WAAA3iO,KAAAuF,SAAAqS,YAAA,GACAxe,EAAA4G,KAAAkgO,aAAAznO,GAAA07B,IACAvuB,IAAA,CACAuI,SACAzH,IAAAg8N,MAGAv0N,EAAA/U,EAAA4G,KAAAkgO,aAAAznO,GAAA07B,IAAAtc,aAAA,GACAze,EAAA4G,KAAAkgO,aAAAznO,GAAA07B,IACAvuB,IAAA,CACAc,IAAAg8N,KAIA,OAAA1iO,KAAA1E,KAAAykO,iBAAA32N,KACAs5N,GAAAv0N,EAAAnO,KAAA1E,KAAAykO,iBAAAvzN,MAEAk2N,GAAAv0N,CAEA,CAEAnO,KAAAuF,SACAK,IAAA,CACAuI,OAAAu0N,EACA31N,UAAA21N,GA/BA,CAiCA,EAEAzC,EAAAlgO,UAAAoiO,eAAA,WACA,OAAAniO,KAAAuiO,iBAAAviO,KAAAsiO,kBACA,EAEArC,EAAAlgO,UAAAwiO,cAAA,WACA,OAAAppO,EAAAk/E,KAAAr4E,KAAA1E,KAAAy7I,MAAA,SAAArtG,GAAA,aAAAA,EAAAtgC,IAAA,GACA,EAEA62N,EAAAlgO,UAAAuiO,iBAAA,WACA,OAAAnpO,EAAAk/E,KAAAr4E,KAAA1E,KAAA0jL,SAAA,SAAArmL,GAAA,aAAAA,EAAAyQ,IAAA,GACA,EAEA62N,EAAAlgO,UAAAsI,iBAAA,WACArI,KAAAqgO,4BACArgO,KAAAsgO,mBACA,EAEAL,EAAAlgO,UAAA6iO,yBAAA,SAAAh5N,GACAA,EAAArE,SAAAK,IAAA,CACAa,KAAA,OACAE,MAAA,OACAD,IAAA,OACAE,OAAA,OACAzC,SAAA,YAEA,EAEA87N,EAAAlgO,UAAAyN,sBAAA,SAAA5D,GAEA,GAAAA,EAAA+2N,qBAGA,GAAA/2N,EAAA4D,uBAAA5D,EAAAtO,KAAAiT,0BACA3E,EAAA4D,sBAAA5D,OACA,CANA5J,KAOA4iO,yBAAAh5N,GACA,IAAAi5N,EAAA,GACAA,EAAA71N,MAAApD,EAAAtO,KAAAgJ,KAAAF,EAAA,KACAy+N,EAAA10N,OAAAvE,EAAAtO,KAAAgJ,KAAAD,EAAA,KACAuF,EAAArE,SAAAK,IAAAi9N,EACA,MAVAv9N,EAAAvF,UAAAyN,sBAAAwX,KAFAhlB,KAEA4J,EAYA,EAEAq2N,CACA,IAGAxoO,OC5UA,uBACA,SACA,UACA,WACA,KACA,UACA,aACA,SAAA2B,EAAAkM,EAAAm5B,EAAA36B,EAAA0R,EAAA6qC,GACA,aAEA,IAAAtkB,EAAA,CACAzgC,KAAA,CACAuwM,qBAAA,EACAC,wBAAA,EACAnzJ,SAAA,GACA9d,KAAA,iBACAuC,QAAA,IACA0lM,cAAA,CACA1+N,EAAA,IACAC,EAAA,KAEA0+N,UAAA,CACA3+N,EAAA,IACAC,EAAA,OAOA,SAAA2+N,EAAA7/M,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAA1E,KAAAynO,UAAAvtN,EAAA1D,+BAAA9R,KAAA1E,KAAAynO,WACA/iO,KAAA1E,KAAAwnO,cAAAttN,EAAA1D,+BAAA9R,KAAA1E,KAAAwnO,eACA9iO,KAAAijO,gBAAA,EAEAjjO,KAAAuF,SACAI,SAAA,iCAEA,IAAA5E,EAAAf,KACAA,KAAAoiG,MAAAhpG,EAAA,WACAwM,IAAA,CACAs8C,OAAA,UACAl1C,MAAA,OACAmB,OAAA,OACA8jE,eAAA,cAEAhqC,KAAA,QAAAjoC,KAAA1E,KAAA60C,OACAlI,KAAA,WAAAjoC,KAAA1E,KAAAk8C,UACA97C,GAAA,kBAAA4c,GACAvX,EAAAmiO,aACA,IACAr8N,SAAA7G,KAAAuF,UAEAvF,KAAAmjO,OAAA/pO,EAAA,WACAoQ,OACA7D,SAAA,mBACAqH,MAAAhN,KAAA1E,KAAAynO,UAAA3+N,GACA+J,OAAAnO,KAAA1E,KAAAynO,UAAA1+N,GACAuB,IAAA,CACAzB,SAAA,WACAuC,IAAA1G,KAAA1E,KAAAwnO,cAAAz+N,EAAA,KACAoC,KAAAzG,KAAA1E,KAAAwnO,cAAA1+N,EAAA,KACA4yE,UAAA,SACAthC,WAAA,WACAnxC,OAAA,OAEAsC,SAAAzN,EAAA,SAEAqlC,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAmjO,QAEAnjO,KAAAojO,cAAApjO,KAAAmjO,OAAAn2N,QACAhN,KAAAqjO,eAAArjO,KAAAmjO,OAAAh1N,SACAnO,KAAA4mC,SAAA,CAAAp6B,MAAAxM,KAAA1E,KAAAu/B,MACA,CA0IA,OAxIAv1B,EAAA3F,OAAAqjO,EAAA19N,GAEA09N,EAAAppM,SAAA,SAEAopM,EAAAjjO,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAAsjO,QAAAtjO,KAAA1E,KAAAgxM,cACAtsM,KAAAw0N,WAAAx0N,KAAA1E,KAAA8hC,SACAp9B,KAAA2M,eACA,EAEAq2N,EAAAjjO,UAAAujO,QAAA,SAAAh3B,GACA,IAAAtvM,EAAAsvM,EAAAxoM,EAAA3F,iBAAAmuM,GAAA,KACAtvM,GACAgD,KAAAoiG,MAAAx8F,IAAA,0BAAA5I,EAAA,IACA,EAEAgmO,EAAAjjO,UAAA0H,WAAA,WACA,IAAA1G,EAAAf,KACA5G,EAAAlB,UAAAwD,GAAA,kBAAA4c,GACAA,EAAA+rB,SAAAtjC,EAAAqhG,MAAA/pG,IAAA,IAAA0I,EAAAkiO,gBACAliO,EAAAwiO,YACA,GACA,EAEAP,EAAAjjO,UAAAyjO,qBAAA,SAAA3oM,GACA,OAAAA,EACAriC,MAAA,MACAwa,KAAA,WACAxa,MAAA,QACAwa,KAAA,UACA6M,QAAA,0BACA,EAEAmjN,EAAAjjO,UAAA0jO,yCAAA,WACA,IAAAv3G,GAAA,IAAA7rE,GACA4E,kBAAAjlD,KAAA1E,KAAA6I,UACAmhD,SAAA,IAAAjF,EAAArgD,KAAAoiG,MAAA/lD,SAAA51C,KAAAzG,KAAAoiG,MAAA/lD,SAAA31C,MACAg9N,GAAA,IAAArjL,GACA4E,kBAAAjlD,KAAA1E,KAAAwnO,eACAx9K,SAAA4mE,GACA,OACAhrG,MAAA,CACAxa,IAAA1G,KAAAoiG,MAAA/lD,SAAA31C,IAAA1G,KAAA1E,KAAAgJ,KAAAD,EAAA,EACAoC,KAAAzG,KAAAoiG,MAAA/lD,SAAA51C,KAAAzG,KAAA1E,KAAAgJ,KAAAF,EAAA,EACA4I,MAAA,EACAmB,OAAA,GAEAq6C,IAAA,CACA9hD,IAAAg9N,EAAAr/N,EACAoC,KAAAi9N,EAAAt/N,EACA4I,MAAAhN,KAAA1E,KAAAynO,UAAA3+N,EACA+J,OAAAnO,KAAA1E,KAAAynO,UAAA1+N,GAGA,EAEA2+N,EAAAjjO,UAAA4jO,iCAAA,WACA,OACAj9N,IAAA1G,KAAAoiG,MAAA/lD,SAAA31C,IAAA1G,KAAA1E,KAAAgJ,KAAAD,EAAA,EACAoC,KAAAzG,KAAAoiG,MAAA/lD,SAAA51C,KAAAzG,KAAA1E,KAAAgJ,KAAAF,EAAA,EACA4I,MAAA,EACAmB,OAAA,EAEA,EAEA60N,EAAAjjO,UAAAmjO,YAAA,WACAljO,KAAAijO,eACAjjO,KAAAujO,aAEAvjO,KAAA4jO,WACA,EAEAZ,EAAAjjO,UAAAwjO,WAAA,WACAvjO,KAAAijO,gBAAA,EAEA,IAAA5+L,EAAArkC,KAAA2jO,mCAEA5iO,EAAAf,KACAA,KAAAmjO,OACAz+M,OACA4iC,QAAAjjB,EAlIA,KAkIA,WACAtjC,EAAAoiO,OACA35N,OACA5D,IAAA,CAAAoH,MAAAjM,EAAAqiO,cAAAj1N,OAAApN,EAAAsiO,gBACA,GACA,EAEAL,EAAAjjO,UAAA6jO,UAAA,WACA5jO,KAAAijO,gBAAA,EAEA,IAAAY,EAAA7jO,KAAAyjO,2CACAzjO,KAAAmjO,OACAz+M,OACA9e,IAAAi+N,EAAA3iN,OACApY,OACAw+C,QAAAu8K,EAAAr7K,IAjJA,IAkJA,EAEAw6K,EAAAjjO,UAAAyJ,KAAA,WACAlE,EAAAvF,UAAAyJ,KAAAwb,KAAAhlB,MAEAA,KAAAijO,gBACAjjO,KAAAujO,YACA,EAEAP,EAAAjjO,UAAAo3C,WAAA,WACAn3C,KAAA4mC,SAAA,CAAAp6B,MAAA,MACA,EAEAw2N,EAAAjjO,UAAA6mC,SAAA,SAAA8M,GAIA,GAHA1zC,KAAAijO,gBACAjjO,KAAAujO,aAEA7vL,EAAAlnC,MAGA,CACA,IAAAs3N,EAAA9jO,KAAAwjO,qBAAA9vL,EAAAlnC,OACAxM,KAAAmjO,OAAAt+L,KAAAi/L,GACA9jO,KAAAoiG,MAAAt5F,MACA,MANA9I,KAAAoiG,MAAA54F,OACAxJ,KAAAmjO,OAAAt+L,KAAA,GAMA,EAEAm+L,EAAAjjO,UAAAwM,SAAA,WACA,WACA,EAEAy2N,EAAAjjO,UAAAy0N,WAAA,SAAAp3L,GACAp9B,KAAAoiG,MAAAx8F,IAAA,CAAAw3B,YAAA,UACA,EAEA4lM,EAAAjjO,UAAAmP,yBAAA,WACAlP,KAAAmjO,OAAApqO,QACA,EAEAiqO,CACA,IC/LAe,eAAA,eAAArxM,EAAA,UAAAA,EAAAsxM,UAAA,SAAAj7M,EAAAqkF,EAAAngE,EAAA50B,EAAAuc,GAAA,IAAAlC,EAAAyB,EAAA17B,EAAAi5D,EAAAl5C,EAAAu6C,EAAAgB,EAAAlC,EAAAwjE,EAAAnZ,EAAA5jG,EAAAyQ,EAAAztB,KAAA82D,EAAArpC,EAAA/b,MAAA08B,EAAA3gB,EAAA5a,OAAAgkD,EAAAppC,EAAA8vC,MAAAxT,GAAA,EAAAjhD,EAAAguD,EAAA,EAAAh6C,GAAA,EAAA/T,EAAAqlC,EAAA,EAAA/wC,EAAAs0C,EAAAmlB,EAAAg7C,EAAAxtF,EAAA,IAAA21C,WAAAnD,EAAA1oB,GAAAyyE,EAAA,IAAA5mD,WAAA3gC,GAAAw9B,EAAA1oB,GAAA,OAAAyyE,EAAAxjH,GAAA,gBAAAs7D,EAAA,CAAA37C,EAAA3f,GAAAw5D,GAAA75C,EAAA3f,EAAA,GAAA2f,EAAA3f,EAAA,GAAA2f,EAAA3f,EAAA,IAAA6qG,EAAA,EAAAn/F,EAAA4oC,EAAAxmC,KAAA2mG,EAAA,EAAAzmG,MAAAymG,EAAA,EAAAw+B,IAAA,WAAA1vB,GAAA,EAAA/nF,GAAAu9B,EAAA8xC,EAAAxkF,SAAAvY,KAAA,EAAA0tB,EAAAu9B,EAAA/qD,MAAAwtB,IAAA,GAAAx7B,IAAAo7D,EAAArC,EAAArtD,EAAA+tD,GAAAj+B,GAAAg+B,EAAA,IAAAgqD,EAAApoD,EAAA5/B,OAAAzB,EAAApa,EAAA3f,GAAAs7D,EAAA,IAAA57C,GAAAqa,GAAAra,IAAAqa,EAAApa,EAAA3f,EAAA,GAAAs7D,EAAA,IAAA57C,GAAAqa,GAAAra,IAAAqa,EAAApa,EAAA3f,EAAA,GAAAs7D,EAAA,IAAA57C,GAAAqa,GAAAra,GAAA,KAAA6jG,GAAA,EAAAt8F,EAAAm0C,EAAA5/B,GAAA,EAAAgoF,EAAApoD,EAAA5/B,GAAA,EAAA4+B,EAAA5+B,EAAA,EAAA4+B,GAAA,IAAAp6D,GAAAk5D,EAAAkC,EAAAhB,GAAAZ,EAAA,IAAAgqD,EAAAtqD,QAAAn/B,EAAApa,EAAA3f,GAAAs7D,EAAA,IAAA57C,GAAAqa,GAAAra,OAAAqa,EAAApa,EAAA3f,EAAA,GAAAs7D,EAAA,IAAA57C,GAAAqa,GAAAra,OAAAqa,EAAApa,EAAA3f,EAAA,GAAAs7D,EAAA,IAAA57C,GAAAqa,GAAAra,IAAAuH,EAAAiyC,GAAA,EAAAsqD,EAAAtqD,GAAA,EAAAkB,IAAA,IAAAv6C,EAAA2b,EAAA,EAAA3b,EAAA45C,IAAAz5D,GAAA08H,EAAAthE,EAAAv7C,GAAA25C,EAAA,IAAAgqD,EAAAkZ,QAAA3iG,EAAApa,EAAA3f,GAAAs7D,EAAA,IAAA57C,GAAAqa,GAAAra,OAAAqa,EAAApa,EAAA3f,EAAA,GAAAs7D,EAAA,IAAA57C,GAAAqa,GAAAra,OAAAqa,EAAApa,EAAA3f,EAAA,GAAAs7D,EAAA,IAAA57C,GAAAqa,GAAAra,IAAAuH,EAAAy1G,GAAA,EAAAlZ,EAAAkZ,GAAA,EAAA78G,IAAAu6C,EAAA3uD,MAAA2uD,EAAA,GAAAv6C,EAAA6sC,MAAA7sC,EAAA,IAAA/f,EAAAi5D,EAAArtD,EAAAqtD,EAAAk6E,MAAA,GAAAnzI,EAAAixC,IAAAqpB,EAAArB,EAAAjrD,MAAA+8F,EAAA3iG,KAAA,CAAAwD,EAAA5L,EAAAgO,KAAAssD,EAAApsD,MAAA+qD,EAAAjrD,KAAAmlI,KAAAl6E,EAAAk6E,MAAAl6E,EAAA/qD,MAAA6R,GAAAgrF,EAAA3iG,KAAA,CAAAwD,EAAA5L,EAAAgO,KAAAirD,EAAA/qD,YAAA6R,EAAAozH,KAAAl6E,EAAAk6E,QAAAnzI,EAAAi5D,EAAArtD,EAAAqtD,EAAAk6E,MAAA,GAAAnzI,EAAAixC,GAAAqpB,EAAAv6C,GAAAgrF,EAAA3iG,KAAA,CAAAwD,EAAA5L,EAAAgO,KAAAssD,EAAApsD,MAAA6R,EAAAozH,IAAAl6E,EAAAk6E,KAAA,CAAA1vB,IAAAxqD,EAAArtD,QAAAqtD,EAAArtD,GAAAqtD,EAAArtD,EAAA+T,MAAAs5C,EAAArtD,GAAA,OAAAm/F,EAAA9qG,OAAA,UAAA4C,KAAAskB,EAAA5S,MAAA+b,EAAA/b,MAAAmB,OAAA4a,EAAA5a,OAAAmqE,OAAA,CAAA2rJ,KAAA7/N,EAAA8/N,KAAA7/N,EAAA8/N,KAAA9+K,EAAA++K,KAAAhsN,GAAA,EAAAsa,EAAA2xM,UAAA,SAAA/rN,EAAAo5C,GAAA,QAAA3oC,EAAAgrC,EAAAp7D,EAAA0f,EAAA8jG,EAAAhoF,EAAA4+B,EAAA,EAAArB,EAAA,EAAAttD,EAAAstD,IAAAuC,EAAA,IAAAqwK,aAAAvxK,GAAAlB,EAAA,EAAAr5C,EAAAF,EAAAtL,MAAAolD,EAAA95C,EAAAnK,OAAAknH,EAAA/8G,EAAAhd,KAAA+pD,EAAA/sC,EAAAggE,OAAA2rJ,KAAA9xK,EAAA75C,EAAAggE,OAAA6rJ,KAAA/rN,EAAAE,EAAAggE,OAAA4rJ,KAAAhoH,EAAA5jG,EAAAggE,OAAA8rJ,KAAA1xM,EAAA,EAAAA,EAAAg/B,EAAAh/B,IAAA,KAAA06E,GAAA17C,EAAAh/B,IAAAg/B,EAAAh/B,GAAAruB,EAAA0Q,KAAAmoD,KAAAkwC,GAAA,EAAAhpG,KAAA,EAAA2Q,KAAAspB,GAAAj6B,GAAA6vD,EAAAvC,EAAAh/B,GAAAuhC,EAAAvC,EAAAh/B,GAAAruB,EAAAwtD,GAAA,EAAAxtD,CAAA,KAAAquB,EAAA,EAAAA,EAAAqgC,EAAArgC,IAAAuhC,EAAAvhC,IAAAm/B,EAAA,IAAA2xC,EAAA,IAAAjuC,WAAA/8C,EAAA45C,GAAA1oB,EAAAgoB,EAAAl5C,EAAAoH,EAAA8xC,EAAAU,EAAA,IAAA/5C,EAAAD,EAAAC,EAAA6jG,EAAA,EAAA7jG,IAAA,IAAA1f,EAAA0sD,EAAA1sD,EAAAw5D,EAAA,EAAAx5D,IAAA,KAAAwjH,EAAA,EAAAhoF,EAAAuV,EAAA/wC,EAAAo6D,EAAArpB,EAAA/wC,EAAAo6D,EAAAgB,GAAAhrC,EAAA1Q,EAAAG,EAAA7f,GAAA+4D,EAAAh/B,EAAAg/B,EAAA/4D,EAAA,EAAA+4D,EAAA/4D,EAAA,EAAA+5B,EAAAyB,EAAAzB,IAAAypF,GAAAkZ,EAAAthE,EAAArhC,GAAAuhC,EAAAvhC,GAAA,IAAAyB,EAAAvU,EAAAvH,EAAA06C,EAAAnzC,EAAAvH,EAAA06C,EAAAgB,EAAAhrC,EAAA2oC,EAAAl5C,EAAAka,EAAAg/B,EAAAr5C,EAAA,EAAAq5C,EAAAr5C,EAAA,EAAAqa,EAAAyB,EAAAzB,IAAAypF,GAAAkZ,EAAAthE,EAAArhC,EAAAla,GAAAy7C,EAAAvhC,GAAA8wE,EAAAz6E,GAAAozF,EAAA,cAAA7gH,KAAAkoG,EAAAx2F,MAAAwL,EAAArK,OAAAikD,EAAAkmB,OAAA,CAAA2rJ,KAAA5+K,EAAA6+K,KAAA9rN,EAAA+rN,KAAAhyK,EAAAiyK,KAAAloH,GAAA,EAAAxpF,EAAA6xM,oBAAA,SAAA/rN,EAAAka,EAAA/G,GAAA,QAAA05B,EAAAzwB,EAAAm+B,EAAAkB,EAAA9B,EAAA95C,EAAAC,EAAAkrF,EAAA5jF,EAAAxH,EAAA,SAAA+jG,EAAA3jG,EAAAnU,GAAA,IAAAquB,EAAAj6B,EAAA2f,EAAAzf,EAAA+4D,EAAAuC,EAAA37C,EAAAD,EAAA8jG,EAAAnvG,MAAAq4C,EAAA82D,EAAAhuG,OAAA4lD,EAAAooD,EAAA7gH,KAAAy3D,EAAA,IAAAwC,WAAAxB,GAAArqB,EAAAyyE,EAAA7jC,OAAA2rJ,KAAAl7M,EAAAozF,EAAA7jC,OAAA6rJ,KAAAvkN,EAAAu8F,EAAA7jC,OAAA4rJ,KAAA9xK,EAAA+pD,EAAA7jC,OAAA8rJ,KAAAloH,EAAA7jG,EAAAgtC,EAAAm+C,EAAA,IAAAjuC,WAAA2mD,GAAA/nF,EAAA,GAAA8Y,EAAAl4B,KAAAoiB,IAAAuS,EAAA,GAAA/d,EAAA5W,KAAAsd,IAAAtJ,EAAA1Q,EAAA,GAAA4d,EAAAlhB,KAAAoiB,IAAAvX,EAAA,GAAAwM,EAAArX,KAAAsd,IAAA+/B,EAAA/M,EAAA,MAAAhhD,KAAA3L,OAAA,MAAAg5D,EAAA,EAAAA,EAAAwqD,EAAAxqD,IAAA,IAAArtD,EAAAqtD,KAAAqB,EAAArB,GAAA,OAAA/4D,EAAAs9B,EAAAt9B,EAAAyzB,EAAA,EAAAzzB,IAAA,IAAA+5B,EAAAua,EAAAva,EAAA/G,EAAA,EAAA+G,IAAA,IAAAqhC,EAAArC,EAAA/4D,EAAA0f,EAAAqa,KAAAuhC,EAAAvC,EAAAr5C,EAAAC,EAAAo5C,EAAAr5C,GAAA,IAAA06C,EAAArB,EAAA,QAAAqB,EAAArB,EAAA,QAAAqB,EAAAkB,IAAA,IAAAlB,EAAAkB,EAAA,QAAAlB,EAAAkB,EAAA,QAAAlB,EAAAz6C,IAAA,IAAAy6C,EAAAz6C,EAAA,QAAAy6C,EAAAz6C,EAAA,KAAA6b,EAAAtzB,KAAA6wD,IAAA,MAAAhoB,EAAA,IAAA/wC,EAAAinB,EAAAjnB,EAAAy5D,EAAA,EAAAz5D,IAAA,IAAAo7D,EAAAp7D,EAAA0f,IAAA8b,EAAAtzB,KAAAlI,EAAA0f,GAAA,GAAA0Q,GAAA1Q,EAAA,MAAA1f,EAAAinB,EAAAjnB,EAAAy5D,EAAA,EAAAz5D,IAAA,IAAAo7D,EAAAp7D,EAAA0f,EAAA0Q,IAAAoL,EAAAtzB,KAAAlI,EAAA0f,EAAA0Q,GAAA,MAAAnJ,EAAA,IAAA8S,EAAAgX,EAAAhX,EAAA3J,EAAA,EAAA2J,IAAA,IAAAqhC,EAAArhC,IAAAyB,EAAAtzB,KAAA6xB,GAAA,GAAA0/B,GAAA/M,EAAA,MAAA3yB,EAAAgX,EAAAhX,EAAA3J,EAAA,EAAA2J,IAAA,IAAAqhC,EAAA3B,EAAA/5C,EAAAqa,IAAAyB,EAAAtzB,KAAAuxD,EAAA/5C,EAAAqa,GAAA,IAAAy/B,EAAAN,EAAA,GAAAu7C,EAAA50F,EAAAH,EAAAuc,EAAApc,EAAA6sC,EAAAjhD,EAAA,EAAAoU,EAAA,MAAA0jG,EAAA/nF,EAAAz7B,OAAA0f,EAAA,EAAAA,EAAA8jG,EAAA9jG,IAAA,KAAAorF,EAAA9xC,EAAAv9B,EAAA/b,IAAA,EAAAy5C,EAAAhxD,KAAA6wD,GAAA/4D,GAAA+4D,GAAAh/B,EAAAg/B,EAAAr5C,MAAA85C,EAAAi7C,EAAA16E,EAAAtuB,EAAAgpG,EAAA16E,EAAAtuB,EAAA6vD,EAAAvC,EAAAl5C,EAAA/f,EAAA+f,EAAAka,EAAA,EAAAla,EAAAka,EAAA,EAAAj6B,EAAA05D,EAAA15D,IAAA,IAAA+qG,EAAAlrF,EAAA27C,EAAAx7D,KAAA+qG,EAAAlrF,GAAA,EAAAu5C,EAAAhxD,KAAAyX,IAAA,IAAA65C,EAAAv9B,EAAAj8B,EAAAyL,EAAAwwB,EAAAj8B,EAAAyL,EAAA6vD,EAAAvC,EAAAl5C,EAAAH,EAAA5f,EAAA+f,EAAA7f,EAAA,EAAA6f,EAAA7f,EAAA,EAAAF,EAAA05D,EAAA15D,IAAA,IAAA+qG,EAAAlrF,EAAA27C,EAAAx7D,EAAA4f,KAAAmrF,EAAAlrF,GAAA,EAAAu5C,EAAAhxD,KAAAyX,GAAA,QAAAu5C,CAAA,CAAAH,CAAAl5C,EAAAka,EAAA/G,GAAAlzB,EAAA,EAAAi6B,EAAA,EAAAtG,EAAA,EAAAsG,IAAAm/B,EAAA,IAAAyyK,aAAA7rO,GAAA2L,EAAA,EAAA+vB,EAAA3b,EAAAxL,MAAAigC,EAAAz0B,EAAArK,OAAA+tG,EAAA1jG,EAAAld,KAAAytB,EAAAvQ,EAAA8/D,OAAA2rJ,KAAA9nH,EAAA3jG,EAAA8/D,OAAA6rJ,KAAA/xK,EAAA55C,EAAA8/D,OAAA4rJ,KAAAnwK,EAAAv7C,EAAA8/D,OAAA8rJ,KAAAnuM,EAAA7d,EAAA1f,OAAAC,EAAA,EAAAA,EAAA+5B,EAAA/5B,IAAAi8B,GAAAlC,EAAA/5B,IAAA+5B,EAAA/5B,GAAA0sD,EAAAtwC,KAAAmoD,KAAAtoC,EAAAxI,GAAArX,KAAAspB,GAAAwzB,EAAAn/B,EAAA/5B,GAAAk5D,EAAAn/B,EAAA/5B,GAAA0sD,EAAAjhD,GAAA,EAAAihD,EAAA,IAAA1sD,EAAA,EAAAA,EAAAF,EAAAE,IAAAk5D,EAAAl5D,IAAAyL,EAAA,IAAAixH,EAAA,IAAA9/D,WAAA2mD,GAAA73G,EAAAquB,EAAAyB,EAAAi5E,EAAA16E,EAAAua,EAAA,IAAAt0C,EAAA,EAAAA,EAAAs9B,EAAAt9B,IAAA,KAAA6qG,EAAA,EAAAlrF,IAAA27C,EAAA77C,EAAAzf,KAAA0f,EAAA47C,EAAA9/B,MAAAvU,EAAAvb,EAAAgU,EAAA5f,EAAA4L,EAAAgU,EAAA5f,EAAA05D,EAAA8B,EAAAvhC,EAAAqgC,EAAArgC,EAAAra,EAAA,EAAAqa,EAAAra,EAAA,EAAA06C,EAAAnzC,EAAAmzC,IAAAywC,GAAA0Y,EAAA/pD,EAAAY,GAAAlB,EAAAkB,GAAA,GAAAywC,EAAA,GAAA6xB,EAAAphE,GAAA,EAAA57C,EAAA0Q,MAAA1Q,KAAA8jG,MAAA9jG,GAAAC,EAAA85C,MAAA95C,KAAAy7C,MAAAz7C,OAAA,KAAAsH,EAAAwtF,EAAA90F,EAAA7f,EAAA20G,EAAA90F,EAAA7f,EAAA05D,EAAA8B,EAAAvhC,EAAAyB,EAAA4+B,EAAArgC,EAAApa,EAAA,EAAAoa,EAAApa,EAAA,EAAAy6C,EAAAnzC,EAAAmzC,IAAAywC,GAAA0Y,EAAA/pD,EAAAY,EAAA5+B,GAAA09B,EAAAkB,GAAAywC,EAAA,IAAA6xB,EAAAphE,GAAA,EAAA57C,EAAA0Q,MAAA1Q,KAAA8jG,MAAA9jG,GAAAC,EAAA85C,MAAA95C,KAAAy7C,MAAAz7C,IAAA+8G,EAAAphE,GAAA,UAAA34D,KAAA+5H,EAAAroH,MAAAmnB,EAAAhmB,OAAA8+B,EAAAqrC,OAAA,CAAA2rJ,KAAAl7M,EAAAm7M,KAAA9xK,EAAA+xK,KAAAhoH,EAAAioH,KAAArwK,GAAA,EAAArhC,EAAA8xM,iBAAA,SAAAhsN,GAAA,QAAAka,EAAAqhC,EAAAhrC,EAAAqpC,EAAAW,EAAAv6C,EAAAxL,MAAA6kD,EAAAr5C,EAAArK,OAAAxV,EAAA6f,EAAAld,KAAA+c,EAAAG,EAAA8/D,OAAA2rJ,KAAAhwK,EAAAz7C,EAAA8/D,OAAA6rJ,KAAA7rN,EAAAE,EAAA8/D,OAAA4rJ,KAAAzrO,EAAA+f,EAAA8/D,OAAA8rJ,KAAAjoH,EAAAloD,EAAA57C,EAAA,EAAAmrF,EAAA/qG,EAAA6f,EAAA,EAAA6b,EAAA,IAAAohC,WAAA4mD,EAAA3Y,GAAA6xB,EAAAtgH,KAAAoiB,IAAA9e,EAAA,GAAAqxB,EAAA30B,KAAAsd,IAAA4hC,EAAAlB,EAAA,GAAAnzC,EAAA7K,KAAAoiB,IAAA7e,EAAA,GAAA65C,EAAAp9C,KAAAsd,IAAA55B,EAAAo5D,EAAA,GAAAH,EAAA9xC,EAAA8xC,EAAAS,EAAA,EAAAT,IAAA,IAAAh/B,EAAA2iG,EAAA3iG,EAAAgX,EAAA,EAAAhX,IAAA,IAAA/5B,EAAAo7D,EAAArC,EAAAqB,EAAArgC,KAAA3J,EAAAgrC,EAAAhB,EAAAX,EAAA2B,EAAAhB,EAAA,IAAAp6D,EAAAo7D,EAAA,QAAAp7D,EAAAo7D,EAAA,QAAAp7D,EAAAowB,IAAA,IAAApwB,EAAAowB,EAAA,QAAApwB,EAAAowB,EAAA,QAAApwB,EAAAy5D,IAAA,IAAAz5D,EAAAy5D,EAAA,QAAAz5D,EAAAy5D,EAAA,KAAAj+B,GAAAu9B,EAAAp5C,GAAA6jG,GAAAzpF,EAAAra,IAAA,UAAAA,EAAA,IAAAq5C,EAAAp5C,EAAAo5C,EAAAj5D,EAAA,EAAAi5D,IAAA,IAAA/4D,EAAA+4D,EAAAqB,KAAA5+B,GAAAu9B,EAAAp5C,GAAA6jG,GAAA,MAAAloD,GAAAlB,EAAA,MAAArB,EAAAp5C,EAAAo5C,EAAAj5D,EAAA,EAAAi5D,IAAA,IAAA/4D,EAAA+4D,EAAAqB,EAAAkB,KAAA9/B,GAAAu9B,EAAAp5C,GAAA6jG,GAAAloD,EAAA57C,IAAA,SAAAC,EAAA,IAAAoa,EAAAra,EAAAqa,EAAAuhC,EAAA,EAAAvhC,IAAA,IAAA/5B,EAAA+5B,KAAAyB,EAAAzB,EAAAra,GAAA,MAAA5f,GAAAo5D,EAAA,MAAAn/B,EAAAra,EAAAqa,EAAAuhC,EAAA,EAAAvhC,IAAA,IAAA/5B,EAAAF,EAAAs6D,EAAArgC,KAAAyB,GAAA17B,EAAA6f,GAAA6jG,GAAAzpF,EAAAra,IAAA,UAAA/c,KAAA64B,EAAAnnB,MAAAmvG,EAAAhuG,OAAAq1F,EAAAnnD,OAAA,CAAAj4C,EAAAiU,EAAAhU,EAAAiU,GAAA,EAAAoa,EAAA+xM,iBAAA,SAAAtwM,GAAA,QAAAzB,EAAA/5B,EAAA6f,EAAAy7C,EAAA37C,EAAA6b,EAAAnnB,MAAAvU,EAAA07B,EAAAhmB,OAAAujD,EAAAv9B,EAAA74B,KAAAy3D,EAAA,GAAAopD,EAAA7jG,EAAA,EAAAy7C,EAAAt7D,EAAA,EAAA4f,EAAA,EAAAA,EAAA07C,EAAA17C,IAAA,IAAAqa,EAAA,EAAAA,EAAAypF,EAAAzpF,IAAA,IAAAg/B,EAAA/4D,EAAA0f,EAAAC,EAAAoa,KAAAla,EAAA7f,EAAA2f,EAAA27C,EAAAt7D,EAAA2f,GAAA,IAAAo5C,EAAA/4D,EAAA,QAAA+4D,EAAA/4D,EAAA,QAAA+4D,EAAAl5C,IAAA,IAAAk5C,EAAAl5C,EAAA,QAAAk5C,EAAAl5C,EAAA,QAAAk5C,EAAAuC,IAAA,IAAAvC,EAAAuC,EAAA,QAAAvC,EAAAuC,EAAA,KAAAlB,EAAAlyD,KAAAlI,IAAA,IAAA0f,EAAA,EAAAA,EAAA5f,EAAA4f,IAAA,IAAAq5C,EAAAr5C,EAAAC,IAAAy6C,EAAAlyD,KAAAwX,EAAAC,GAAA,IAAAoa,EAAA,EAAAA,EAAApa,EAAAoa,IAAA,IAAAg/B,EAAAh/B,IAAAqgC,EAAAlyD,KAAA6xB,GAAA,IAAA/5B,EAAA2f,EAAA,EAAAD,EAAA,EAAAA,EAAA5f,EAAA4f,IAAA,IAAAq5C,EAAAr5C,EAAAC,EAAA3f,IAAAo6D,EAAAlyD,KAAAwX,EAAAC,EAAA3f,GAAA,IAAAA,GAAAF,EAAA,GAAA6f,EAAAoa,EAAA,EAAAA,EAAApa,EAAAoa,IAAA,IAAAg/B,EAAA/4D,EAAA+5B,IAAAqgC,EAAAlyD,KAAAlI,EAAA+5B,GAAA,OAAAqgC,CAAA,EAAArgC,EAAAgyM,cAAA,SAAA9vM,GAAA,QAAApc,EAAA0jG,EAAAC,EAAAkZ,EAAA7xB,EAAA3xC,EAAAjyC,EAAAmzC,EAAAt6D,EAAAw7D,EAAAvhC,EAAApa,EAAAo5C,EAAAS,EAAAh+B,EAAA,SAAAzB,GAAA,QAAAg/B,EAAAqC,EAAArhC,EAAA1lB,MAAAmvG,EAAAzpF,EAAAp3B,KAAA3C,EAAA+5B,EAAA4lD,OAAA2rJ,KAAAhwK,EAAAvhC,EAAA4lD,OAAA6rJ,KAAA9rN,EAAAqa,EAAA4lD,OAAA4rJ,KAAAzrO,EAAAi6B,EAAA4lD,OAAA8rJ,KAAArxK,EAAAkB,EAAAt7D,EAAA,EAAAw7B,EAAA17B,EAAA4f,EAAA,EAAAG,EAAA,IAAA+8C,WAAAxC,EAAA5+B,GAAA7b,EAAAD,EAAAC,EAAA7f,EAAA,EAAA6f,IAAA,IAAAo5C,EAAA/4D,EAAA+4D,EAAAuC,EAAA,EAAAvC,IAAA,IAAAyqD,EAAA7jG,EAAAy7C,EAAArC,KAAAl5C,GAAAF,EAAAD,EAAA,GAAA06C,GAAArB,EAAA/4D,EAAA,cAAA2C,KAAAkd,EAAAxL,MAAA+lD,EAAA5kD,OAAAgmB,EAAAkoB,OAAA,CAAAj4C,EAAAzL,EAAA,EAAA0L,EAAAgU,EAAA,IAAA1f,CAAAi8B,GAAAywB,EAAA,GAAA0O,EAAA,EAAA17C,EAAA8b,EAAAnnB,MAAA3I,EAAA,EAAAgU,EAAA40B,EAAA9Y,EAAAhmB,OAAAikD,EAAAj+B,EAAA74B,KAAA8c,EAAA+b,EAAAkoB,OAAAj4C,IAAA+vB,EAAAkoB,OAAAh4C,EAAA0kB,EAAA,IAAAwsC,WAAAnD,GAAAg7C,EAAA,wDAAA1jE,EAAA,EAAAA,EAAAuD,EAAA,EAAAvD,IAAA,IAAAyyE,EAAA,EAAAA,EAAA9jG,EAAA,EAAA8jG,IAAA,OAAA/pD,EAAAijE,EAAA3rF,EAAArxB,EAAA8jG,GAAA,IAAA3jG,GAAAH,EAAAG,EAAAnU,EAAAmU,GAAAnU,EAAA,OAAA+tD,EAAAijE,EAAA78G,IAAA,IAAAuQ,EAAAssG,EAAA78G,GAAA,KAAAu7C,IAAAlC,EAAA,GAAAkB,GAAAnzC,EAAApH,IAAAH,GAAA,IAAAqa,EAAApa,EAAA7f,EAAA,CAAA2L,EAAA+3G,EAAA93G,EAAAqlC,GAAAuqB,EAAA,YAAAlrC,EAAA2J,EAAAruB,EAAAgU,EAAAqa,EAAAtuB,GAAA2vD,EAAAmoD,EAAA,EAAAA,EAAA,EAAAA,IAAA,IAAA/pD,EAAAi7C,EAAAr6C,KAAA,UAAAX,EAAAoxC,GAAA9xC,EAAA,CAAAttD,EAAAsuB,EAAAtuB,EAAA+tD,EAAA,GAAA9tD,EAAAquB,EAAAruB,EAAA8tD,EAAA,KAAA9tD,EAAAgU,EAAAq5C,EAAAttD,GAAA,CAAA2kB,EAAAy6E,GAAAzvC,EAAA,MAAAhrC,EAAAy6E,IAAA,EAAA9xC,EAAA,eAAAA,EAAA,SAAAh/B,EAAAg/B,EAAAuC,GAAA,GAAA37C,EAAAlU,IAAA3L,EAAA2L,GAAAkU,EAAAjU,IAAA5L,EAAA4L,GAAAquB,EAAAtuB,IAAA6vD,EAAA7vD,GAAAsuB,EAAAruB,IAAA4vD,EAAA5vD,EAAA,WAAA4vD,EAAAvC,EAAAG,EAAAhxD,KAAA,CAAAuD,EAAAkU,EAAAlU,EAAAgU,EAAA/T,EAAAiU,EAAAjU,EAAAD,IAAAkU,EAAAoa,EAAAqgC,KAAA,WAAArB,IAAAG,EAAAhxD,KAAA,CAAAuD,EAAA3L,EAAA2L,EAAAgU,EAAA/T,EAAA5L,EAAA4L,EAAAD,IAAAihD,EAAAxkD,KAAA,CAAA8jO,MAAA/kN,EAAAozC,MAAAe,EAAAzT,OAAAuR,IAAA,QAAAxM,CAAA,EAAA3yB,EAAAkyM,iBAAA,SAAAxsN,EAAAhU,EAAAC,GAAA,QAAAub,EAAAvH,EAAAG,EAAAF,EAAAy6C,EAAAopD,EAAApoD,EAAA3B,EAAA1/B,EAAAy/B,EAAAN,EAAA2xC,EAAA6xB,EAAA3rF,EAAA3gB,EAAA2oC,EAAA/4D,EAAAF,EAAAw7D,EAAA9/B,EAAAi5E,EAAAh1F,EAAA1f,OAAAwjH,EAAA,GAAA72D,EAAA,EAAAA,EAAA+nD,EAAA/nD,IAAA,GAAA/sC,GAAAE,EAAAJ,EAAAitC,IAAA/E,QAAAyS,EAAAv6C,EAAA8nC,OAAA5nD,QAAA2L,EAAA,KAAA83G,EAAA,GAAA9jG,EAAA,EAAAA,EAAA06C,EAAA16C,IAAA8jG,EAAAt7G,KAAA,CAAAuD,EAAAkU,EAAAD,GAAAjU,EAAAC,EAAAiU,EAAAD,GAAAhU,IAAA63G,EAAAr7G,KAAA,CAAA8jO,MAAAnsN,EAAAmsN,MAAA3xK,MAAAx6C,EAAAw6C,MAAA1S,OAAA67D,EAAA0oH,aAAA9xK,GAAA,MAAAgB,EAAA,GAAAhB,EAAA,GAAAX,EAAA,EAAA73C,MAAA,EAAAD,KAAAy4C,EAAA,aAAArgC,EAAA0/B,EAAApzC,SAAA1E,MAAAoY,EAAAnY,MAAA,QAAA43C,GAAA,EAAAN,EAAAn/B,EAAAnY,MAAAqF,EAAA8S,EAAAnY,MAAA,EAAAqF,EAAA8S,EAAApY,KAAAsF,IAAAnnB,EAAA6f,EAAAsH,GAAAq0C,EAAA37C,EAAAoa,EAAAnY,OAAA4Z,EAAA7b,EAAAoa,EAAApY,MAAAo3C,EAAAj5D,EAAA2L,EAAA6vD,EAAA7vD,EAAAzL,EAAAF,EAAA4L,EAAA4vD,EAAA5vD,EAAAgxH,EAAAtgH,KAAA6wC,KAAA8L,IAAA/4D,KAAA+4D,EAAAj5D,EAAA2L,EAAA+vB,EAAA/vB,EAAAzL,EAAAF,EAAA4L,EAAA8vB,EAAA9vB,EAAAqlC,EAAA30B,KAAA6wC,KAAA8L,IAAA/4D,KAAA+4D,EAAAuC,EAAA7vD,EAAA+vB,EAAA/vB,EAAAzL,EAAAs7D,EAAA5vD,EAAA8vB,EAAA9vB,EAAA0kB,EAAAhU,KAAA6wC,KAAA8L,IAAA/4D,MAAA6qG,EAAA6xB,GAAAtgH,KAAA6wC,KAAAlc,IAAA3gB,KAAA2gB,KAAA30B,KAAA6wC,KAAAyvE,IAAAtsG,KAAAssG,EAAAtgH,KAAAD,KAAAnc,EAAAF,EAAA2L,EAAAstD,EAAAj5D,EAAA4L,EAAA4vD,EAAA7vD,EAAA+vB,EAAA9vB,EAAA8vB,EAAA/vB,EAAA6vD,EAAA5vD,GAAA0kB,IAAAopC,IAAAN,EAAAjyC,EAAAuyC,EAAAqxC,GAAArxC,EAAA/tD,IAAA2vD,EAAAlzD,KAAAgxD,GAAAO,EAAAvxD,KAAA,CAAA0Z,MAAAmY,EAAAnY,MAAAD,KAAAu3C,IAAAO,EAAAvxD,KAAA,CAAA0Z,MAAAs3C,EAAAv3C,KAAAoY,EAAApY,OAAA,QAAA83C,EAAA15D,OAAA,OAAAyjH,EAAA,GAAAppD,EAAAgB,EAAAr7D,OAAAq7D,EAAA24D,MAAA,SAAAh6F,EAAAg/B,GAAA,OAAAh/B,EAAAg/B,CAAA,IAAAr5C,EAAA,EAAAA,EAAA06C,EAAA16C,IAAA8jG,EAAAt7G,KAAA,CAAAuD,EAAAkU,EAAAy7C,EAAA17C,IAAAjU,EAAAC,EAAAiU,EAAAy7C,EAAA17C,IAAAhU,IAAA63G,EAAAr7G,KAAA,CAAA8jO,MAAAnsN,EAAAmsN,MAAA3xK,MAAAx6C,EAAAw6C,MAAA1S,OAAA67D,EAAA0oH,aAAArsN,EAAA8nC,OAAA5nD,QAAA,QAAAwjH,CAAA,EAAAxpF,CAAA,IACAj7B,OAAA,iCAEAA,OC1BA,6BACA,SACA,UACA,kCACA,WACA,mBACA,SAAA2B,EAAAkM,EAAAy8M,EAAAtjL,GACA,aAEA,IAAA1C,EAAA,CACAzgC,KAAA,CACAwpO,oBAAA,KAIAC,EAAA,WAEAC,EAAA,CACAC,eAAA,GACAC,iBAAA,GACAC,WAAA,EACAC,YAAA,EACAC,YAAA,EACAP,oBAAA/oM,EAAAzgC,KAAAwpO,oBACAQ,UAAA,KACAC,SAAA,KACAhrI,KAAA,KACAirI,UAAA,KACAC,WAAA,EACAC,WAAA,GAGA,SAAAC,EAAAxiN,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,WAAA2iC,EAAA5Y,GAEA6hN,EAAAF,oBAAA9kO,KAAA1E,KAAAwpO,oBAEA9kO,KAAAqhD,OAAAjoD,EAAA,WACAwM,IAAA,CACAoH,MAAA,OACAmB,OAAA,OACA6oC,SAAA,WAEAnwC,SAAA7G,KAAAuF,UAEAvF,KAAA+gG,QAAA3nG,EAAA,cACAwM,IAAA,CACAzB,SAAA,WACAuC,IAAA,MACAD,KAAA,MACAuG,MAAA,OACAmB,OAAA,OACA6oC,SAAA,WAEAnwC,SAAA7G,KAAAuF,UAGAk5B,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAqhD,QAEArhD,KAAAgiN,oBAEAhiN,KAAAkK,kBAAA,0BACA,CAgKA,OA9JA5E,EAAA3F,OAAAgmO,EAAA5jB,GAEA4jB,EAAA/rM,SAAA,YAEA+rM,EAAA5lO,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MAEAA,KAAA2M,gBAEA,IAAA5L,EAAAf,KAEAA,KAAA8K,eAAAi6N,KACA/kO,KAAA+gG,QAAArlG,GAAA,oBAAA4c,GACA0sN,EAAAS,WAAA,EACAT,EAAAE,iBAAAF,EAAAC,eAEA,IAAA3sN,EAAAqsI,QAAAqgF,EAAAzqI,MACAx5F,EAAA6B,aAAA7B,EAAAzF,KAAAoI,SAAAqhO,GAAAnhO,gBAAAgQ,KAAAE,UAAA/S,EAAA6kO,oBAEA,IAEA5lO,KAAA+gG,QAAArlG,GAAA,sBAAA4c,GAEA0sN,EAAAU,YACA3kO,EAAA8kO,aACAb,EAAAU,WAAA,GAGA,IAAAptN,EAAAqsI,QACAqgF,EAAAS,WAAA,EACAT,EAAAQ,UAAAzkO,EAAA+kO,iBAAAxtN,GACAvX,EAAAglO,SAAAf,EAAAQ,UAAAphO,EAAA4gO,EAAAQ,UAAAnhO,IAEA2gO,EAAAS,WAAA,CAEA,IAEAzlO,KAAA+gG,QAAArlG,GAAA,sBAAA4c,GACA,GAAA0sN,EAAAS,UAAA,CACA,IAAA5zK,EAAA9wD,EAAA+kO,iBAAAxtN,GACA,GAAAu5C,EAAAztD,GAAA4gO,EAAAQ,UAAAphO,GAAAytD,EAAAxtD,GAAA2gO,EAAAQ,UAAAnhO,EAAA,CACA,IAAAq+J,EAAA7wG,EAAAztD,EAAA4gO,EAAAQ,UAAAphO,EACAu+J,EAAA9wG,EAAAxtD,EAAA2gO,EAAAQ,UAAAnhO,EACAs0D,EAAA5jD,KAAA6wC,KAAA88G,IAAAC,KACAqjE,EAAAjxN,KAAAD,IAAA4tJ,GACAujE,EAAAlxN,KAAAD,IAAA6tJ,GACAjmG,EAAAspK,EAAAC,EAAAvjE,EAAAsjE,EAAArjE,EAAAsjE,EACAvpK,IAAA,EAAAA,EAAA,EAAAA,EAAA,EACA,IAAAwpK,EAAAnxN,KAAAsd,IAAAtd,KAAAoiB,IAAA6tM,EAAAC,eAAAlwN,KAAAM,MAAAqnD,EAAA/D,GAAA,QACAutK,GAAAlB,EAAAE,mBACAF,EAAAE,iBAAAgB,EACAnlO,EAAAglO,SAAAf,EAAAQ,UAAAphO,EAAA4gO,EAAAQ,UAAAnhO,GAEA,CACA,CACA,IAEA,EAEAshO,EAAA5lO,UAAA6lO,iBAAA,WACA,IAAAzgE,EAAA4+D,eAAAW,cAAAM,EAAAzqI,MACA,OAAAwpI,eAAAa,iBAAAz/D,EAAA6/D,EAAAF,oBAAA,EACA,EAGAa,EAAA5lO,UAAAomO,6BAAA,SAAAhhE,EAAAihE,GAEApB,EAAAU,YACA1lO,KAAA6lO,aACAb,EAAAU,WAAA,GAGA,IAAAtyL,EAAA4xL,EAAAM,UAAA7pO,QAEA2qO,GACAhzL,EAAAizL,UAAA,IAAArB,EAAAM,UAAAt4N,MAAAg4N,EAAAM,UAAAn3N,QAGA,QAAA1V,EAAA,EAAAA,EAAA0sK,EAAAzsK,SAAAD,EAAA,CACA26C,EAAAqmD,YAEA,IAAAv9D,EAAAipI,EAAA1sK,GAAAksO,MAAA,aACA3kO,KAAAsmO,SAAAlzL,EAAA+xH,EAAA1sK,GAAA6nD,OAAApkB,EACA,CACA,EAEAypM,EAAA5lO,UAAAumO,SAAA,SAAAlzL,EAAAkN,EAAApkB,GACAkX,EAAAqnD,OAAAn6C,EAAA,GAAAl8C,EAAAk8C,EAAA,GAAAj8C,GACA,QAAA8vB,EAAA,EAAAA,EAAAmsB,EAAA5nD,OAAAy7B,IACAif,EAAAsnD,OAAAp6C,EAAAnsB,GAAA/vB,EAAAk8C,EAAAnsB,GAAA9vB,GAGA63B,IACAkX,EAAA6lD,YAAA/8D,EACAkX,EAAAqrD,SAEA,EAEAknI,EAAA5lO,UAAA8lO,WAAA,WACA,IAAAU,EAAAvmO,KAAA+gG,QAAA1oG,IAAA,GACAqiF,EAAA16E,KAAAqhD,OAAAhpD,IAAA,GAEAkuO,EAAAv5N,MAAA0tE,EAAA1tE,MACAu5N,EAAAp4N,OAAAusE,EAAAvsE,OAEA62N,EAAAM,UAAA,CACAt4N,MAAA0tE,EAAA1tE,MACAmB,OAAAusE,EAAAvsE,OACA1S,QAAA8qO,EAAAlqJ,WAAA,OAEA2oJ,EAAAzqI,KAAA,KAEA,IAAAisI,EAAAtuO,SAAAoqB,cAAA,UAAA+5D,WAAA,MACAmqJ,EAAApqJ,OAAApvE,MAAAg4N,EAAAM,UAAAt4N,MACAw5N,EAAApqJ,OAAAjuE,OAAA62N,EAAAM,UAAAn3N,OACAq4N,EAAAlqJ,UAAA5B,EAAA,IAAAA,EAAA1tE,MAAA0tE,EAAAvsE,QAEA62N,EAAAM,UAAAhqO,KAAAkrO,EAAA3pJ,aAAA,IAAAmoJ,EAAAM,UAAAt4N,MAAAg4N,EAAAM,UAAAn3N,OACA,EAEAw3N,EAAA5lO,UAAAgmO,SAAA,SAAA3hO,EAAAC,GAEA,IAAAo2B,EAAA,CACAn/B,KAAA0pO,EAAAM,UAAAhqO,UACA0R,MAAAg4N,EAAAM,UAAAt4N,MACAmB,OAAA62N,EAAAM,UAAAn3N,OACA0qD,MAAA,GAGAmsK,EAAAzqI,KAAAwpI,eAAAC,UAAAvpM,EAAAr2B,EAAAC,EAAA2gO,EAAAE,kBACAF,EAAAzqI,KAAAwpI,eAAAQ,oBAAAS,EAAAzqI,KAAAyqI,EAAAG,YAEAnlO,KAAAmmO,6BAAAnmO,KAAA4lO,oBAAA,EACA,EAEAD,EAAA5lO,UAAA+lO,iBAAA,SAAAxtN,GACA,IAAAu5C,EAAAz4D,EAAAkf,EAAA+rB,QAAAgY,SAGA,OACAj4C,EAHA2Q,KAAA81C,OAAAvyC,EAAAnN,SAAAmN,EAAA/M,OAAAsmD,EAAAprD,MAIApC,EAHA0Q,KAAA81C,OAAAvyC,EAAAlN,SAAAkN,EAAA9M,OAAAqmD,EAAAnrD,KAKA,EAEAi/N,EAAA5lO,UAAAwiN,YAAA,SAAA5xL,EAAAg9H,GACA3tJ,KAAAqhD,OACApZ,KAAA,MAAA0lH,GACA1lH,KAAA,MAAAtX,GAEA3wB,KAAA1E,KAAAgnN,eACAtiN,KAAA8I,MACA,EAEA68N,EAAA5lO,UAAA0mO,qBAAA,SAAA5hL,GACA7kD,KAAAmmO,6BAAAvyN,KAAAC,MAAAgxC,EAAA0rH,YAAA,EACA,EAEAo1D,CACA,IACAluO,OChOA,yBACA,SACA,UACA,WACA,4BACA,eACA,SAAA2B,EAAAkM,EAAAm5B,EAAAknM,EAAAxsO,GACA,aAEA,IAAAutO,EAAA,GACAC,EAAA,mBAEA,SAAAC,EAAAzjN,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,gBAAA+pB,GAEAnjB,KAAAqhD,OAAAjoD,EAAA,WACAwM,IAAA,CACAoH,MAAA,OACAmB,OAAA,OACA6oC,SAAA,WAEAnwC,SAAA7G,KAAAuF,UAEAvF,KAAA+gG,QAAA3nG,EAAA,cACAwM,IAAA,CACAzB,SAAA,WACAuC,IAAA,MACAD,KAAA,MACAuG,MAAA,OACAmB,OAAA,OACA6oC,SAAA,WAEAnwC,SAAA7G,KAAAuF,UAEAk5B,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAqhD,QAEArhD,KAAAgiN,oBACAhiN,KAAAkK,kBAAA,0BACA,CAwDA,OAtDA5E,EAAA3F,OAAAinO,EAAAjB,GAEAiB,EAAAhtM,SAAA,UAEAgtM,EAAA7mO,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,gBAEA,IAAA5L,EAAAf,KACAA,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAo8C,YACA,SAAAp8C,GAAAyF,EAAA8+M,QAAAvkN,EACA,IAEA0E,KAAAo6B,kBACA,EAEAwsM,EAAA7mO,UAAA8/M,QAAA,SAAAvkN,GACA,IAAAyF,EAAAf,KACA5G,EAAAgJ,KAAA9G,EAAAurO,SAAA,SAAAj2N,EAAA8V,GACAggN,EAAA7lO,KAAA6lB,GACA3lB,EAAAolO,6BAAAvyN,KAAAC,MAAA6S,EAAA3lB,EAAAzF,KAAAwrO,gBAAA,SACA,GACA,EAEAF,EAAA7mO,UAAAq6B,iBAAA,WACA,GAAAp6B,KAAA8K,eAAA67N,GAAA,CACA3mO,KAAA+gG,QAAAn7F,IAAA,CAAAs8C,OAAA,YACA,IAAAnhD,EAAAf,KACAA,KAAA+gG,QAAArlG,GAAA,kBAAA4c,GACA,IAAAnU,EAAApD,EAAA+kO,iBAAAxtN,GACA86B,EAAAryC,EAAAggG,QAAA1oG,IAAA,GAAAgkF,WAAA,MACAjpC,EAAAizL,UAAA,IAAAtlO,EAAAsgD,OAAAhpD,IAAA,GAAA2U,MAAAjM,EAAAsgD,OAAAhpD,IAAA,GAAA8V,QAEAhV,EAAAiJ,KAAAskO,GAAA,SAAAn2D,GACA,IAAApL,EAAAvxJ,KAAAC,MAAA08J,EAAAw2D,MACA,IAAA5hE,EAAAw/D,MACA,QAAAlsO,EAAA,EAAAA,EAAA0sK,EAAAzsK,OAAAD,IAAA,CACA26C,EAAAqmD,YACA,IAAAv9D,EAAAipI,EAAA1sK,GAAAksO,MAAA,aAGA,GAFA5jO,EAAAulO,SAAAlzL,EAAA+xH,EAAA1sK,GAAA6nD,OAAApkB,GAEAkX,EAAA4zL,cAAA7iO,EAAAC,EAAAD,EAAAE,GAIA,OAHA+uC,EAAAspC,UAAA,MACAtpC,EAAAomD,YACAz4F,EAAA6B,aAAA7B,EAAAzF,KAAAoI,SAAAijO,GAAA/iO,gBAAA2sK,EAAAxvK,EAAAzF,KAAA+O,UAAA,MAGA,CACA,GACA,GACA,CACA,EAEAu8N,CACA,IACAnvO,OChGA,uBACA,SACA,KACA,UACA,aACA,SAAA2B,EAAA0K,EAAAwB,EAAAm5B,GACA,aAEA,IAAA1C,EAAA,CACAzgC,KAAA,CACAqQ,OAAA,OACAqI,IAAA,GACAklB,SAAA,GACAJ,WAAA,GACAooL,cAAA,GACA71H,UAAA,SAIA,SAAA47I,EAAA9jN,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GACA,IAAApiB,EAAAf,KAyBA,OAvBAA,KAAAohN,QAAAhoN,EAAA,cACA6uC,KAAA,YAAAlnC,EAAAzF,KAAA+vF,WACAzlF,IAAA,CACAoH,MAAA,OACAmB,OAAA,OACA6tB,OAAA,IAEAn1B,SAAA9F,EAAAwE,UAEAxE,EAAAwE,SACAI,SAAA,mBACAC,IAAA,CACA8vC,WAAA,aAGAjX,EAAAK,aAAA/9B,GAEAf,KAAA4rC,kBAAA,SAAAtzB,GAEA,IAAAusC,EAAAvsC,EAAAusC,KAAAvsC,EAAAusC,KAAA,QACA9jD,EAAA6B,aAAA7B,EAAAzF,KAAAV,GAAA,IAAA0d,EAAArO,UAAA46C,EACA,IAEA9jD,CACA,CA8EA,OA5EAuE,EAAA3F,OAAAsnO,EAAA3hO,GAEA2hO,EAAArtM,SAAA,SAEAqtM,EAAAlnO,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,eACA,EAEAs6N,EAAAlnO,UAAA0H,WAAA,WACAzH,KAAAohN,QACAn5K,KAAA,MAAAjoC,KAAAknO,eACA,EAEAD,EAAAlnO,UAAAmnO,aAAA,WACA,YAAAlnO,KAAA1E,KAAAqQ,OACA,OAAA3L,KAAA1E,KAAA0Y,IAGA,IAAAmzN,EAAAnnO,KAAAonO,yBAEA,OADAtjO,EAAA1G,aAAA,qBAAA4C,KAAA1E,KAAA49B,UACA,eAAAjO,mBAAArX,KAAAE,UAAAqzN,GACA,EAEAF,EAAAlnO,UAAAqnO,uBAAA,WACA,IAAApnO,KAAA1E,KAAAw9B,WACA,SAEA,IAAAA,EAAA94B,KAAA2C,OAAAm2B,WACAquM,EAAA,GAKA,OAJAhuO,EAAAiJ,KAAApC,KAAA1E,KAAAw9B,YAAA,SAAAuuM,GACAF,EAAAE,GAAAvuM,EAAAvsB,SAAA86N,EACA,IAEAF,CACA,EAEAF,EAAAlnO,UAAA6rC,iBAAA,SAAAxoB,GACA,IAAA0oB,EAAAjyC,OAAA21B,iBAAA,iCACAuc,EAAAlyC,OAAA21B,iBAAA,sBACAzuB,EAAAf,KAEAnG,OAAAiyC,GAAAC,GAAA,SAAAzzB,GACA,GAAAA,EAAA3M,SAAA5K,EAAAqgN,QAAA/oN,IAAA,GAAA04B,cAEA,IACA,IAAAywL,EAAA5tM,KAAAC,MAAAyE,EAAAhd,MACA8nB,EAAAo+L,EACA,OAAA77L,GAEA,CAEA,MACA,EAEAshN,EAAAlnO,UAAA0hN,qBAAA,SAAAD,GACAxhN,KAAAohN,QAAA/oN,IAAA,GAAA04B,cAAA2wL,YAAA9tM,KAAAE,UAAA0tM,GAAA,IACA,EAEAylB,EAAAlnO,UAAA+I,KAAA,WACA9I,KAAAohN,QACAx7M,IAAA,qBAEAN,EAAAvF,UAAA+I,KAAAkc,KAAAhlB,KACA,EAEAinO,EAAAlnO,UAAAyJ,KAAA,WAGAxJ,KAAAohN,QACAn5K,KAAA,UACAriC,IAAA,kBAEAN,EAAAvF,UAAAyJ,KAAAwb,KAAAhlB,KACA,EAEAinO,CACA,IACAxvO,OC/HA,qBACA,SACA,UACA,WACA,KACA,UACA,iBACA,eACA,SAAA2B,EAAAkM,EAAAm5B,EAAA36B,EAAA0R,EAAAi7C,EAAA1d,GACA,aAEA,IAAAhX,EAAA,CACAzgC,KAAA,CACA45M,qBAAA,yBACAoyB,YAAA,EACAC,eAAA,IACAC,gBAAA,IACAC,cAAA,EACAC,cAAA,EACA51J,kBAAA,EACA10C,QAAA,IACAykL,aAAA,EACAC,kBAAA,EACA3xK,MAAA,CACA8C,OAAAF,EAAAS,WAEAlvC,KAAA,CACAF,EAAA,IACAC,EAAA,OAKA,SAAAyR,EAAAqN,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GACAnjB,KAAA1E,KAAAoI,SAAA8R,EAAA1D,+BAAA9R,KAAA1E,KAAAoI,UAEA1D,KAAAqhD,OAAAjoD,EAAA,WACAwM,IAAA,CACAoH,MAAA,OACAmB,OAAA,OACA6oC,SAAA,WAEA/O,KAAA,WAAAjoC,KAAA1E,KAAAk8C,UACA3wC,SAAA7G,KAAAuF,UAEAvF,KAAAuF,SACAI,SAAA,mBAEA3F,KAAAqzC,QAAA,IAAAN,EAAA/yC,UAAA1E,KAAA60C,MAAAnwC,KAAAqhD,QAEA5iB,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAqhD,QAEArhD,KAAAkK,kBAAA,2BACAlK,KAAAkK,kBAAA,0BACA,CAsIA,OApIA5E,EAAA3F,OAAAmW,EAAAxQ,GAEAwQ,EAAA8jB,SAAA,QAEA9jB,EAAA/V,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAAqzC,QAAAK,SAEA1zC,KAAAqiN,gBAAAriN,KAAA1E,KAAA45M,sBAEA,IAAA8H,EAAAh9M,KAAA2nO,eACA3qB,GACAh9M,KAAAi1L,SAAA+nB,GAKA,MAAAh9M,KAAA1E,KAAA8hC,SACAp9B,KAAAw0N,WAAAx0N,KAAA1E,KAAA8hC,SAEAp9B,KAAAqjB,aACArjB,KAAA2M,eACA,EAEAmJ,EAAA/V,UAAA4nO,aAAA,WACA,OAAA3nO,KAAA1E,KAAAgxM,aACAxoM,EAAA3F,iBAAA6B,KAAA1E,KAAAgxM,cAGAtsM,KAAA1E,KAAAshN,QACA94M,EAAA5G,UAAA8C,KAAA1E,KAAAshN,SAEA,IACA,EAEA9mM,EAAA/V,UAAAk1L,SAAA,SAAAj4L,GACAgD,KAAAqhD,OAAAz7C,IAAA,0BAAA5I,EAAA,IACA,EAEA8Y,EAAA/V,UAAAsjB,WAAA,WACA,IAAAtiB,EAAAf,KAEAA,KAAA1E,KAAA6Y,YACAnU,KAAA1E,KAAA6Y,UAAAqB,EAAAtB,mCAAAlU,KAAA1E,KAAA6Y,WAEAnU,KAAAqhD,OACA17C,SAAA,aACAjK,GAAA,kBAAAgF,GACA7G,OAAAu8E,KAAAr1E,EAAAzF,KAAA6Y,UAAApT,EAAAzF,KAAAgsO,WAAA,kBACA5mO,EAAA4qD,iBACA,KAGAtrD,KAAA1E,KAAA6Y,WAGAnU,KAAA1E,KAAA6Y,UAAAqB,EAAAtB,mCAAAlU,KAAA1E,KAAA6Y,YAEA,IAAAs8C,GAAAC,wBAAA1wD,KAAAuF,SAAAvF,KAAA,MACA,SAAAU,GACA7G,OAAAu8E,KAAAr1E,EAAAzF,KAAA6Y,UAAApT,EAAAzF,KAAAgsO,WAAA,kBACA5mO,EAAA4qD,iBACA,MARA,IAAAmF,GAAAC,wBAAA1wD,KAAAuF,SAAAvF,OAUAA,KAAAgO,YAAAhO,KAAA8K,eAAA,gBACA9K,KAAAqhD,OAAA17C,SAAA,aAEA3F,KAAA1E,KAAAoI,UAAA1D,KAAA1E,KAAAoI,SAAAq+F,UAAA,IAAA/hG,KAAA1E,KAAAoI,SAAAq+F,QAAAp+F,SACA3D,KAAAqhD,OACA17C,SAAA,aACAjK,GAAA,qBAAA4c,GACA,KAAAA,EAAAguC,SACAvlD,EAAA6B,aAAA7B,EAAAzF,KAAAoI,SAAAq+F,QAAAn+F,gBACA,GAEA,EAEAkS,EAAA/V,UAAAy0N,WAAA,SAAAp3L,GACAp9B,KAAAqhD,OAAAz7C,IAAA,CAAAw3B,UAAA,KACA,EAGAtnB,EAAA/V,UAAAsiN,gBAAA,SAAAjX,GACA,SAAAA,EACAprM,KAAAqhD,OAAAz7C,IAAA,+BACA,kBAAAwlM,EACAprM,KAAAqhD,OAAAz7C,IAAA,2BACA,SAAAwlM,EACAprM,KAAAqhD,OAAAz7C,IAAA,kBAAA5F,KAAA1E,KAAAisO,eAAAvnO,WAAA1E,KAAAksO,gBAAA,MACA,2BAAAp8B,GACAprM,KAAAqhD,OAAAz7C,IAAA,CACA,4BACA,gCACA,sBAAA5F,KAAA1E,KAAAqmN,yBAAA,IAAA3hN,KAAA1E,KAAAsmN,yBAMA,IAAAhxK,EAAA,QACA5wC,KAAA4nO,cAAA5nO,KAAA1E,KAAAusO,mBACA,MACA7nO,KAAA1E,KAAAmsO,cACA,YACAznO,KAAA4nO,cAAA5nO,KAAA1E,KAAAwsO,mBACA,MACA9nO,KAAA1E,KAAAosO,cACA,MAEA1nO,KAAAqhD,OAAAz7C,IAAA,sBAAAgrC,GAEA5wC,KAAAqhD,OAAAz7C,IAAA,oBAAA5F,KAAA1E,KAAAw2E,iBAAA,qBACA,EAEAh8D,EAAA/V,UAAA6nO,cAAA,SAAAp7N,GAEA,OAAAA,GACA,WAMA,UACA,WALA,aAQA,QACA,YAPA,YAIA,aACA,aAIA,EAEAsJ,CACA,IACAre,OC/LA,2BACA,SACA,KACA,UACA,WACA,UACA,eACA,SAAA2B,EAAA0K,EAAAwB,EAAAm5B,EAAAjpB,EAAArc,GACA,aAEA,IAAA4iC,EAAA,CACAzgC,KAAA,CACAumN,aAAA,EACAC,kBAAA,IAIA,SAAAimB,EAAA5kN,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GACA,IAAApiB,EAAAf,KAEAe,EAAAzF,KAAAoI,SAAA8R,EAAA1D,+BAAA/Q,EAAAzF,KAAAoI,UAEA3C,EAAAyL,MAAAxM,KAAA1E,KAAAinD,UACA,KACA,EACAxhD,EAAAwqF,OAAA,GAEAxqF,EAAAwE,SACAI,SAAA,mBACAC,IAAA,CACAoxC,SAAA,WAGAj2C,EAAAsgD,OAAAjoD,EAAA,WACAoQ,OACA3C,SAAA9F,EAAAwE,UAEAk5B,EAAAK,aAAA/9B,EACA,CAsHA,OApHAuE,EAAA3F,OAAAooO,EAAAziO,GAEAyiO,EAAAnuM,SAAA,WAEAmuM,EAAAhoO,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,gBACA3M,KAAAgoO,YACA,EAEAD,EAAAhoO,UAAAioO,WAAA,WACA,IAAAjnO,EAAAf,KAEAurF,EAAAvrF,KAAA1E,KAAAiwF,OAEAvrF,KAAA1E,KAAAinD,YACAgpC,IAAA7jD,OAAA,EACAugM,SAAAjoO,KAAA1E,KAAAinD,UACAqR,KAAA,KACAD,GAAA,SAIAx6D,EAAA0I,QAAA0pF,GAAA,SAAA9wD,GACA,IAAAzmB,EAAAlQ,EAAA3F,iBAAAs8B,EAAAwtM,UAEA7uO,EAAA,UACAsC,GAAA,mBACAwsO,EAAAloO,KAAAgU,EAAAymB,EAAAwtM,SAAAxtM,EAAAk5B,GAAAl5B,EAAAm5B,KACA,IACA3rB,KAAA,MAAAj0B,EACA,IAEA,IAAAk0N,EAAA,SAAA5wL,EAAAtjC,EAAAi0N,EAAAt0K,EAAAC,GACA,IAAAu0K,EAAA,GACAA,EAAAn0N,MACAm0N,EAAAF,WACAE,EAAAn7N,MAAAsqC,EAAAtqC,MACAm7N,EAAAh6N,OAAAmpC,EAAAnpC,OACAg6N,EAAAx0K,KACAw0K,EAAAv0K,OAEA7yD,EAAAwqF,OAAA1qF,KAAAsnO,GAEApnO,EAAAqnO,yBAAAD,IACApnO,EAAAsnO,aAAAF,EAEA,CACA,EAEAJ,EAAAhoO,UAAAwiN,YAAA,WACA,IAAAxhN,EAAAf,KACAsoO,EAAAnvO,EAAAmI,KAAAtB,KAAAurF,QAAA,SAAA9wD,GACA,OAAA15B,EAAAqnO,yBAAA3tM,EACA,IACAz6B,KAAAqoO,aAAAC,EACA,EAEAP,EAAAhoO,UAAAqoO,yBAAA,SAAA3tM,GACA,cAAAz6B,KAAAwM,OAAAxM,KAAAwM,OAAAiuB,EAAAm5B,MAAA5zD,KAAAwM,MAAAiuB,EAAAk5B,IAAA3zD,KAAAwM,QAAAiuB,EAAAm5B,IACA,EAEAm0K,EAAAhoO,UAAAsoO,aAAA,SAAA5tM,GACA,GAAAA,GAEA,GAAAA,EAAAzmB,MAAAhU,KAAAqhD,OAAApZ,KAAA,QACA,qBAAAxN,EAAA2wK,aAAA,CACA,IAAAjrC,EAAA1lI,EAAAztB,MAAAytB,EAAAtsB,OACAquC,EAAAx8C,KAAAuF,SAAAyH,QACA0vC,EAAA18C,KAAAuF,SAAA4I,SACAu8H,EAAAluF,EACAmuF,EAAAnuF,EAAA2jH,EAEAx1B,EAAAjuF,IACAguF,EAAAhuF,EAAAyjH,EACAx1B,EAAAjuF,GAGA18C,KAAAqhD,OACAr0C,MAAA09H,GACAv8H,OAAAw8H,EACA,MACA3qI,KAAAqhD,OACAr0C,MAAAhN,KAAAuF,SAAAyH,SACAmB,OAAAnO,KAAAuF,SAAA4I,UAGAnO,KAAAqhD,OACApZ,KAAA,MAAAxN,EAAAzmB,KACAlL,MACA,OA1BA9I,KAAAqhD,OAAApZ,KAAA,SA2BA,EAEA8/L,EAAAhoO,UAAAo3C,WAAA,WACAn3C,KAAAwM,MAAA,KACAxM,KAAAuiN,aACA,EAEAwlB,EAAAhoO,UAAA6mC,SAAA,SAAA8M,GACA,IAAA60L,EAAA9oN,WAAAi0B,EAAAlnC,OACAxM,KAAAwM,MAAAy9F,MAAAs+H,GAAA,KAAAA,EACAvoO,KAAAuiN,aACA,EAEAwlB,EAAAhoO,UAAAuiD,gBAAA,WACA,OAAAtiD,KAAA1E,KAAAinD,UAEAz+C,EAAA3F,iBAAA6B,KAAA1E,KAAAinD,WADAz+C,EAAA5G,UAAA,8BAEA,EAEA6qO,EAAAhoO,UAAAyoO,aAAA,SAAAtpB,GACA,OAAAA,EACAp7M,EAAA3F,iBAAA+gN,GACAp7M,EAAA5G,UAAA,8BACA,EAEA6qO,CACA,IACAtwO,OC/JA,qBACA,SACA,aACA,UACA,WACA,eACA,UACA,aACA,qBACA,cACA,OACA,SAAA2B,EAAAD,EAAAmM,EAAAm5B,EAAA1tB,EAAAyE,EAAAu9B,EAAA+tC,EAAA/sC,EAAAjwC,GACA,aAEA,IAAAi4B,EAAA,CACAzgC,KAAA,CACA60C,MAAA,CACA8C,OAAAF,EAAAS,WAEAS,SAAA,CACAlvC,mBAAA,EACAmvC,YAAA,EACAO,YAAA,aAEAg0L,gBAAA,EACAC,aAAA,IACAxlF,aAAA,OAIA,SAAAylF,EAAAxlN,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAA1E,KAAAoI,SAAA8R,EAAA1D,+BAAA9R,KAAA1E,KAAAoI,WAAA,GAEA1D,KAAAm1C,mBAAApkC,EAAAE,WAAAK,OAEA,IAAA4iM,EAAAl0M,KAAA1E,KAAAstO,YAAA,kBACA5oO,KAAA6oO,OAAAzvO,EAAA,eAAA86M,EAAA,OACAvuM,SAAA,mBACAsiC,KAAA,OAAAjoC,KAAA1E,KAAAhD,MACA2vC,KAAA,WAAAjoC,KAAA1E,KAAAk8C,UACAvP,KAAA,cAAAjoC,KAAA1E,KAAAw7C,WACA7O,KAAA,eAAAjoC,KAAA1E,KAAA4nJ,cACApqG,IAAA94C,KAAA1E,KAAAg5C,cAAA,IACA1uC,IAAA,CACAoH,MAAA,OACAmB,OAAA,SAEAtH,SAAA7G,KAAAuF,UAEAvF,KAAA1E,KAAAstO,aACA5oO,KAAA8oO,oBACA9oO,KAAA+oO,qBAEA/oO,KAAAgpO,uBAGAhpO,KAAA6oO,OAAA,GAAA94M,aAAA,YAEA/vB,KAAAqzC,QAAA,IAAAN,EAAA/yC,UAAA1E,KAAA60C,MAAAnwC,KAAA6oO,QAEA,IAAA9nO,EAAAf,KACAipO,EAAAjpO,KAAAgK,gBAAA,aACAi/N,EAAAtlO,SACA3D,KAAA6oO,OAAAntO,GAAA,mBACAqF,EAAA6B,aAAAqmO,EAAArlO,gBACA,IAGA,IAAAi1C,EAAA74C,KAAAgK,gBAAA,gBACA6uC,EAAAl1C,SACA3D,KAAA6oO,OAAAntO,GAAA,kBAAAgF,GACA,KAAAA,EAAA4lD,SACAvlD,EAAA6B,aAAAi2C,EAAAj1C,gBAEA,IAGA,IAAAslO,EAAAlpO,KAAAgK,gBAAA,WACAk/N,EAAAvlO,UACA3D,KAAAyK,sBAAAzK,KAAA6oO,OAAA,sBACA1vO,EAAAglC,IAAAp9B,EAAA,2BACAA,EAAAooO,sBAAApoO,EAAAwL,WACA,IACAvM,KAAAyK,sBAAAzK,KAAA6oO,OAAA,iBAAA1vO,EAAAy+C,UAAA,WACA72C,EAAAooO,wBAAApoO,EAAAwL,aACAxL,EAAAooO,sBAAApoO,EAAAwL,WACAxL,EAAA6B,aAAAsmO,EAAAtlO,iBAEA,GAAA5D,KAAA1E,KAAAotO,gBAGA1oO,KAAAuF,SACAK,IAAA,CACA8vC,WAAA,aAGAjX,EAAAK,aAAA9+B,KAAA,KAAAA,KAAA6oO,OACA,CAsLA,OApLAvjO,EAAA3F,OAAAgpO,EAAArjO,GAEAqjO,EAAA/uM,SAAA,QAEA+uM,EAAA5oO,UAAAgH,UAAA,WACA/G,KAAA6oO,OACA5gM,KAAA,KAAAjoC,KAAAmH,SAAAu9B,WAAA,IAAA1kC,KAAA1E,KAAAV,IACAoF,KAAAqzC,QAAAK,SACA1zC,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2C,OAAAsxC,SAAAhzC,MAAAjB,MACAA,KAAAs4C,UAAAt4C,KAAA2C,OAAA+B,WAAA6zC,gBAAAv4C,KAAA1E,KAAAoJ,YACAqvC,EAAAh0C,UAAAw0C,2BAAAv0C,MAEAA,KAAA2M,gBACA3M,KAAAqjB,YACA,EAEAslN,EAAA5oO,UAAA0H,WAAA,WACAzH,KAAA6oO,OAAA/nJ,aACA,EAEA6nJ,EAAA5oO,UAAAsjB,WAAA,WACA,IAAAtiB,EAAAf,KACAA,KAAA6oO,OAAAntO,GAAA,oBACAqF,EAAAiL,0BACAhM,KAAA+vB,aAAA,QAAA/vB,KAAAwM,MACA,IAEAxM,KAAA1E,KAAA2mD,UACAjiD,KAAA6oO,OAAAnyN,KAAA,eAEA1W,KAAA1E,KAAA8tO,cACAppO,KAAA6oO,OAAA5gM,KAAA,YAAAjoC,KAAA1E,KAAA+tO,UACA,EAEAV,EAAA5oO,UAAA45C,MAAA,WACA35C,KAAA6oO,OAAA39N,QAAA,QACA,EAEAy9N,EAAA5oO,UAAAiL,mBAAA,WACA,OAAAhL,KAAAuM,UACA,EAEAo8N,EAAA5oO,UAAAwM,SAAA,WACA,OAAAvM,KAAAs4C,UAAAgxL,uBAAAtpO,KAAAm1C,mBAAAn1C,KAAA6oO,OAAA/vL,MACA,EAEA6vL,EAAA5oO,UAAAo3C,WAAA,WACAn3C,KAAA6oO,OAAA/vL,IAAA,IACA94C,KAAA6oO,OAAA,GAAA94M,aAAA,YACA/vB,KAAAmpO,sBAAA,GACAnpO,KAAAgM,yBACA,EAEA28N,EAAA5oO,UAAA6mC,SAAA,SAAA8M,GACA,IAAA7Y,EAAA76B,KAAAs4C,UAAA6D,yBAAAzI,EAAAhuC,KAAA,OAAAguC,EAAAlnC,MAAA,GAAAknC,EAAAlnC,OACAxM,KAAA6oO,OAAA/vL,IAAAje,GACA76B,KAAA6oO,OAAA,GAAA94M,aAAA,QAAA8K,GACA76B,KAAAm1C,mBAAAzB,EAAAhuC,KACA1F,KAAAmpO,sBAAAz1L,EAAAlnC,MACAxM,KAAAgM,yBACA,EAEA28N,EAAA5oO,UAAA+oO,kBAAA,WACA,IAAA/nO,EAAAf,KACAA,KAAAupO,gBAAAnwO,EAAA,yCACAsd,KAAA,yBACA9Q,IAAA,CACAzB,SAAA,WACAuC,IAAA,MACAC,MAAA,MACA46B,UAAA,qBAEA7lC,GAAA,oBACA,aAAAqF,EAAA8nO,OAAA,GAAAnjO,KACA3E,EAAAyoO,sBAEAzoO,EAAAgoO,mBAEA,IACAliO,SAAA7G,KAAAuF,SACA,EAEAojO,EAAA5oO,UAAAipO,qBAAA,WACAhpO,KAAAupO,kBACAvpO,KAAAupO,gBAAAxwO,gBACAiH,KAAAupO,gBAEA,EAEAZ,EAAA5oO,UAAA0pO,oBAAA,WACA,OAAAzpO,KAAA1E,KAAAouO,oBACA5lO,EAAA3F,iBAAA6B,KAAA1E,KAAAouO,qBAEA,IACA,EAEAf,EAAA5oO,UAAA4pO,sBAAA,WACA,OAAA3pO,KAAA1E,KAAAsuO,sBACA9lO,EAAA3F,iBAAA6B,KAAA1E,KAAAsuO,uBAEA,IACA,EAEAjB,EAAA5oO,UAAAgpO,kBAAA,WACA/oO,KAAAupO,iBACAvpO,KAAA8oO,oBAEA,IAAApjO,EAAA,OACAs3M,EAAAh9M,KAAAypO,sBACAzsB,GAAAh9M,KAAA1E,KAAAstO,aAAA5oO,KAAA1E,KAAAmtO,eACAzoO,KAAA6pO,kBAAA7sB,EAAAt3M,GACA1F,KAAA1E,KAAAstO,aACA5oO,KAAA8pO,oBAAApkO,GAGA1F,KAAA6oO,OAAA,GAAAnjO,KAAA,UACA,EAEAijO,EAAA5oO,UAAAypO,oBAAA,WACAxpO,KAAAupO,iBACAvpO,KAAA8oO,oBAEA,IAAApjO,EAAA,SACAs3M,EAAAh9M,KAAA2pO,wBACA3sB,GAAAh9M,KAAA1E,KAAAstO,aAAA5oO,KAAA1E,KAAAmtO,eACAzoO,KAAA6pO,kBAAA7sB,EAAAt3M,GACA1F,KAAA1E,KAAAstO,aACA5oO,KAAA8pO,oBAAApkO,GAGA1F,KAAA6oO,OAAA,GAAAnjO,KAAA,MACA,EAEAijO,EAAA5oO,UAAA8pO,kBAAA,SAAApvM,EAAA/0B,GACA1F,KAAAupO,gBACA3jO,IAAA,CACAoH,MAAA,OACAmB,OAAA,OACAuvB,gBAAA,OAAAxkC,QAAAw9L,MAAAj8J,GAAA,IACAw3C,eAAA,cAEArpE,YAAA,mCAEA,WAAAlD,EACAtM,EAAA4G,KAAAupO,iBACA7yN,KAAA,yBAEA,SAAAhR,GACAtM,EAAA4G,KAAAupO,iBACA7yN,KAAA,wBAEA,EAEAiyN,EAAA5oO,UAAA+pO,oBAAA,SAAApkO,GACAtM,EAAA4G,KAAAupO,iBACA3jO,IAAA,CACAoH,MAAA,GACAmB,OAAA,GACAuvB,gBAAA,GACAu0C,eAAA,KAEA,WAAAvsE,EACAtM,EAAA4G,KAAAupO,iBACA7yN,KAAA,yBACA/Q,SAAA,sBACAiD,YAAA,gBAEA,SAAAlD,GACAtM,EAAA4G,KAAAupO,iBACA7yN,KAAA,yBACA/Q,SAAA,gBACAiD,YAAA,qBAEA,EAEA+/N,EAAA5oO,UAAA2+M,eAAA,SAAA5lK,GACA94C,KAAA6oO,OAAA5gM,KAAA,cAAA6Q,EACA,EAEA6vL,CACA,IAEAlxO,OC5RA,mCACA,SACA,OACA,KACA,UACA,aACA,SAAA2B,EAAAoJ,EAAAsB,EAAAwB,EAAAm5B,GACA,aAEA,IAAA1C,EAAA,CACAzgC,KAAA,CACAyuO,gBAAA,IAIA,SAAAC,EAAA7mN,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GACA,IAAApiB,EAAAf,KAuBA,OArBAe,EAAAkpO,sBAAA,EACAlpO,EAAAmpO,YAAA,EACAnpO,EAAAopO,0BAAA/jO,EACArF,EAAAqpO,uBAAAhkO,EAEArF,EAAAspO,SAAAjxO,EAAA,WACAwM,IAAA,CACAoH,MAAA,OACAmB,OAAA,OACA6tB,OAAA,IAEAn1B,SAAA9F,EAAAwE,UAEAxE,EAAAwE,SACAI,SAAA,mBACAC,IAAA,CACA8vC,WAAA,aAGAjX,EAAAK,aAAA/9B,GAEAA,CACA,CAqHA,OAnHAuE,EAAA3F,OAAAqqO,EAAA1kO,GAEA0kO,EAAApwM,SAAA,eAEAowM,EAAAjqO,UAAAgH,UAAA,WACA,IAAAhG,EAAAf,KAEAA,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,gBAEA3M,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAgvO,mBACA,SAAAhvO,GACAyF,EAAAwpO,YAAAjvO,EACAyF,EAAAkpO,sBAAA,EACAlpO,EAAAypO,iBACA,IAEA,IAAAC,EAAA1pO,EAAAzF,KAAAovO,aAAA,cAEAlnN,EAAAhhB,EAAAu1B,QASA,OARA7+B,QAAA,YAAAuxO,EAAA,qBACA,SAAAE,GACAnnN,EAAAc,UAEAvjB,EAAAopO,qBAAAQ,EACA5pO,EAAAypO,iBACA,IAEAhnN,EAAAa,OACA,EAEA2lN,EAAAjqO,UAAA0H,WAAA,WACAzH,KAEAkqO,YAAA,EAFAlqO,KAGAwqO,iBACA,EAEAR,EAAAjqO,UAAAyqO,gBAAA,WACA,IAAAzpO,EAAAf,KAEAe,EAAAkpO,sBACAlpO,EAAAmpO,YACAnpO,EAAAopO,uBAEAppO,EAAAkpO,sBAAA,EAEApwO,OAAA+wO,SACA/wO,OAAA+wO,QAAA9wE,SACAjgK,OAAA+wO,QAAA9wE,QAAA+wE,YACAhxO,OAAA+wO,QAAA9wE,QAAA+wE,WAAAC,0BACAjxO,OAAA+wO,QAAA9wE,QAAA+wE,WAAAC,2BAAA,WACA/pO,EAAAgqO,cACA,IACA,SAAAziO,GACA2gB,QAAA3gB,MAAA,iCAAAA,EACA,GACA,CACAzO,OAAA+wO,QAAA9wE,QAAA+wE,WAAAG,WAAAC,OACApxO,OAAA+wO,QAAA9wE,QAAA+wE,WAAAG,WAAAE,eAGAnqO,EAAAgqO,eAEA,EAEAf,EAAAjqO,UAAAgrO,aAAA,WACA,IAAAhqO,EAAAf,KACAuqO,EAAAxpO,EAAAwpO,YAAApyM,QAAA,GAEAn4B,KAAAoqO,mBACApqO,KAAAoqO,kBAAApvM,UAEA,IAAAyvM,EAAA1pO,EAAAzF,KAAAovO,aAAA,cACAvnN,EAAA,CACAgoN,SAAA,kBAAAZ,EAAAxpO,EAAAzF,KAAA8vO,iBACAj6M,WAAApwB,EAAAspO,SAAA,GACAgB,SAAA,CACAC,YAAAf,EAAAxpO,EAAAzF,KAAAiwO,iBAEAC,gBAAA,CACAC,oBAAA,EACAC,wBAAA,EACAC,gBAAA,GAMAC,yBAAA,CAGAC,8BAAA,IAIAC,EAAA,IAAA/qO,EAAAopO,qBAAAM,EAAAtnN,GAEApiB,EAAAqpO,kBAAA0B,EAEA/qO,EAAAzF,KAAAyuO,gBACA+B,EAAAC,eAAA,UAAAxB,EAAAxpO,EAAAzF,KAAA0wO,oBAGA,IAAAC,EAAA1B,EAAAxpO,EAAAzF,KAAA4wO,+BACAD,GACAH,EAAAC,eAAA,YAAAE,GAGAH,EAAAt8M,iBAAA,2BACAzuB,EAAA6J,sBAAA,eACA,GACA,EAEAo/N,CACA,IC9JA,SAAA73K,EAAA75C,GAAA,iBAAA+4C,SAAA,oBAAAp4D,cAAAo4D,QAAA/4C,IAAA,mBAAA7gB,eAAA65D,IAAA75D,OAAA,WAAA6gB,IAAA65C,KAAApxD,MAAAorO,SAAA7zN,GAAA,EAAAtY,MAAA,iCAAAsY,IAAA65C,GAAA,IAAAC,EAAAoxC,EAAAtjG,OAAAyP,KAAA2I,GAAA,OAAApY,OAAAksO,wBAAAh6K,EAAAlyD,OAAAksO,sBAAA9zN,GAAA65C,IAAAC,IAAAj4C,QAAA,SAAAg4C,GAAA,OAAAjyD,OAAAmsO,yBAAA/zN,EAAA65C,GAAAywC,UAAA,KAAAY,EAAA3iG,KAAAI,MAAAuiG,EAAApxC,IAAAoxC,CAAA,UAAA33E,EAAA23E,GAAA,QAAArxC,EAAA,EAAAA,EAAAjxD,UAAAxI,OAAAy5D,IAAA,KAAA15D,EAAA,MAAAyI,UAAAixD,GAAAjxD,UAAAixD,GAAA,GAAAA,EAAA,EAAA75C,EAAApY,OAAAzH,IAAA,GAAAoJ,SAAA,SAAAswD,GAAA,IAAA75C,EAAA85C,EAAA95C,EAAAkrF,EAAArxC,EAAA15D,EAAA25D,EAAAD,GAAAC,KAAA95C,EAAApY,OAAAu7E,eAAAnjE,EAAA85C,EAAA,CAAA5lD,MAAA2lD,EAAAywC,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAxqF,EAAA85C,GAAAD,CAAA,IAAAjyD,OAAAosO,0BAAApsO,OAAAqsO,iBAAA/oI,EAAAtjG,OAAAosO,0BAAA7zO,IAAA6f,EAAApY,OAAAzH,IAAAoJ,SAAA,SAAAswD,GAAAjyD,OAAAu7E,eAAA+nB,EAAArxC,EAAAjyD,OAAAmsO,yBAAA5zO,EAAA05D,GAAA,WAAAqxC,CAAA,UAAAA,EAAArxC,GAAA,OAAAqxC,EAAA,mBAAAjwC,QAAA,iBAAAA,OAAAC,SAAA,SAAArB,GAAA,cAAAA,CAAA,WAAAA,GAAA,OAAAA,GAAA,mBAAAoB,QAAApB,EAAAlyD,cAAAszD,QAAApB,IAAAoB,OAAAxzD,UAAA,gBAAAoyD,CAAA,GAAAA,EAAA,UAAAz/B,IAAA,OAAAA,EAAAxyB,OAAAgyD,QAAA,SAAAC,GAAA,QAAA75C,EAAA,EAAAA,EAAApX,UAAAxI,OAAA4f,IAAA,KAAA85C,EAAAoxC,EAAAtiG,UAAAoX,GAAA,IAAA85C,KAAAoxC,EAAAtjG,OAAAH,UAAA8yB,eAAA7N,KAAAw+E,EAAApxC,KAAAD,EAAAC,GAAAoxC,EAAApxC,GAAA,QAAAD,CAAA,GAAAlxD,MAAAjB,KAAAkB,UAAA,UAAAwoC,EAAAyoB,GAAA,gBAAAA,GAAA,GAAAlgD,MAAAiS,QAAAiuC,GAAA,OAAA4B,EAAA5B,EAAA,EAAAA,IAAA,SAAAA,GAAA,uBAAAoB,QAAA,MAAApB,EAAAoB,OAAAC,WAAA,MAAArB,EAAA,qBAAAlgD,MAAA2hD,KAAAzB,EAAA,EAAAA,IAAA,SAAAA,EAAA75C,GAAA,GAAA65C,EAAA,qBAAAA,EAAA,OAAA4B,EAAA5B,EAAA75C,GAAA,IAAA85C,EAAAlyD,OAAAH,UAAA0Q,SAAAuU,KAAAmtC,GAAAzzD,MAAA,qBAAA0zD,EAAA,WAAAA,GAAAD,EAAAlyD,YAAAkyD,EAAAlyD,YAAA3H,KAAA85D,IAAA,QAAAA,EAAAngD,MAAA2hD,KAAAzB,GAAA,cAAAC,GAAA,2CAAAj4D,KAAAi4D,GAAA2B,EAAA5B,EAAA75C,QAAA,IAAA65C,IAAA,qBAAAJ,UAAA,oJAAAgC,EAAA5B,EAAA75C,IAAA,MAAAA,KAAA65C,EAAAz5D,UAAA4f,EAAA65C,EAAAz5D,QAAA,QAAA05D,EAAA,EAAAoxC,EAAA,IAAAvxF,MAAAqG,GAAA85C,EAAA95C,EAAA85C,IAAAoxC,EAAApxC,GAAAD,EAAAC,GAAA,OAAAoxC,CAAA,UAAArxC,KAAA,uBAAAt4D,eAAAO,UAAA,QAAAA,UAAAC,UAAAqY,MAAAy/C,EAAA,KAAA9tD,EAAA8tD,EAAA,yDAAA/5C,EAAA+5C,EAAA,SAAAvyC,EAAAuyC,EAAA,YAAA+pD,EAAA/pD,EAAA,aAAAA,EAAA,aAAAA,EAAA,YAAAC,EAAAD,EAAA,mBAAAx5D,EAAAw5D,EAAA,YAAAA,EAAA,YAAA95C,EAAA,CAAA0pJ,SAAA,EAAAyqE,SAAA,YAAAv4K,EAAA9B,EAAA75C,EAAA85C,GAAAD,EAAA3iC,iBAAAlX,EAAA85C,GAAA/tD,GAAAgU,EAAA,UAAA06C,EAAAZ,EAAA75C,EAAA85C,GAAAD,EAAAl3B,oBAAA3iB,EAAA85C,GAAA/tD,GAAAgU,EAAA,UAAAw5C,EAAAM,EAAA75C,GAAA,GAAAA,IAAA,MAAAA,EAAA,KAAAA,IAAAzf,UAAA,IAAAs5D,GAAA,OAAAA,EAAA96C,QAAA,OAAA86C,EAAA96C,QAAAiB,GAAA,GAAA65C,EAAAs6K,kBAAA,OAAAt6K,EAAAs6K,kBAAAn0N,GAAA,GAAA65C,EAAAu6K,sBAAA,OAAAv6K,EAAAu6K,sBAAAp0N,EAAA,OAAA65C,GAAA,iBAAAw6K,EAAAx6K,EAAA75C,EAAA85C,EAAAoxC,GAAA,GAAArxC,EAAA,CAAAC,KAAAl6D,SAAA,YAAAogB,IAAA,MAAAA,EAAA,IAAA65C,EAAAhhC,aAAAihC,IAAAP,EAAAM,EAAA75C,IAAAkrF,GAAArxC,IAAAC,EAAA,OAAAD,YAAAC,IAAAD,GAAA15D,EAAA05D,GAAA3vC,MAAA/pB,IAAAP,UAAAO,EAAA+pB,KAAAgvB,SAAA/4C,EAAA+pB,KAAA/pB,EAAA04B,YAAA,KAAA14B,EAAA,gBAAA+f,EAAAuQ,EAAA,gBAAA0E,EAAA0kC,EAAA75C,EAAA85C,GAAA,IAAAoxC,EAAArxC,GAAA75C,IAAA65C,EAAAy6K,UAAAz6K,EAAAy6K,UAAAx6K,EAAA,gBAAA95C,IAAAkrF,GAAA,IAAArxC,EAAAryB,UAAA,KAAAjgB,QAAAkJ,EAAA,KAAAlJ,QAAA,IAAAvH,EAAA,SAAA65C,EAAAryB,WAAA0jE,GAAApxC,EAAA,IAAA95C,EAAA,KAAAuH,QAAAkJ,EAAA,gBAAAgN,EAAAo8B,EAAA75C,EAAA85C,GAAA,IAAAoxC,EAAArxC,KAAAl2B,MAAA,GAAAunE,EAAA,aAAApxC,EAAA,OAAAl6D,SAAAmuF,aAAAnuF,SAAAmuF,YAAAlO,iBAAA/lB,EAAAl6D,SAAAmuF,YAAAlO,iBAAAhmB,EAAA,IAAAA,EAAA06K,eAAAz6K,EAAAD,EAAA06K,mBAAA,IAAAv0N,EAAA85C,IAAA95C,GAAAkrF,EAAAlrF,OAAAkrF,IAAA,IAAAlrF,EAAAxf,QAAA,UAAAwf,EAAA,WAAAA,GAAA85C,GAAA,iBAAAA,EAAA,mBAAA/M,EAAA8M,EAAA75C,GAAA,IAAA85C,EAAA,uBAAAD,EAAAC,EAAAD,OAAA,OAAAqxC,EAAAztE,EAAAo8B,EAAA,mBAAAqxC,GAAA,SAAAA,IAAApxC,EAAAoxC,EAAA,IAAApxC,IAAA95C,IAAA65C,IAAAhhC,aAAA,IAAA14B,EAAAoB,OAAAizO,WAAAjzO,OAAAkzO,iBAAAlzO,OAAAmzO,WAAAnzO,OAAAozO,YAAA,OAAAx0O,GAAA,IAAAA,EAAA25D,EAAA,UAAAV,EAAAS,EAAA75C,EAAA85C,GAAA,GAAAD,EAAA,KAAAqxC,EAAArxC,EAAA15C,qBAAAH,GAAA7f,EAAA,EAAAixC,EAAA85D,EAAA9qG,OAAA,GAAA05D,EAAA,KAAA35D,EAAAixC,EAAAjxC,IAAA25D,EAAAoxC,EAAA/qG,MAAA,OAAA+qG,CAAA,mBAAA0pI,IAAA,OAAAh1O,SAAAi1O,kBAAAj1O,SAAAqgB,eAAA,UAAA4jG,EAAAhqD,EAAA75C,EAAA85C,EAAAoxC,EAAA/qG,GAAA,GAAA05D,EAAArmD,uBAAAqmD,IAAAt4D,OAAA,KAAA6vC,EAAAhX,EAAAqhC,EAAAn0C,EAAAjnB,EAAAujH,EAAA7jG,EAAA85C,IAAAt4D,QAAAs4D,EAAAhhC,YAAAghC,IAAA+6K,KAAAx6M,GAAAgX,EAAAyoB,EAAArmD,yBAAApF,IAAAqtD,EAAArqB,EAAAjjC,KAAAmZ,EAAA8pB,EAAA9iC,OAAAjO,EAAA+wC,EAAA/iC,MAAAu1G,EAAAxyE,EAAAv7B,OAAAu7B,EAAA18B,QAAA+mD,EAAArhC,EAAA,EAAA9S,EAAA/lB,OAAA+e,YAAAjgB,EAAAkB,OAAA6e,WAAAwjG,EAAAriH,OAAA+e,YAAA/e,OAAA6e,YAAA,IAAAJ,GAAA85C,IAAAD,IAAAt4D,SAAApB,KAAA05D,EAAAhhC,YAAA9sB,GAAA,MAAA5L,KAAAqT,wBAAA,SAAAiqB,EAAAt9B,EAAA,cAAA25D,GAAA,WAAAr8B,EAAAt9B,EAAA,kBAAAw7D,EAAAx7D,EAAAqT,wBAAA4mB,GAAAuhC,EAAAvtD,IAAAwS,SAAA6c,EAAAt9B,EAAA,qBAAAs7D,GAAAE,EAAAxtD,KAAAyS,SAAA6c,EAAAt9B,EAAA,sBAAAmnB,EAAA8S,EAAAgX,EAAAv7B,OAAAxV,EAAAo7D,EAAArqB,EAAA18B,MAAA,aAAAvU,IAAA04B,YAAA,OAAAqyE,GAAArxC,IAAAt4D,SAAA2pG,GAAAlrF,EAAA+sC,EAAA5sD,GAAA05D,KAAA75C,EAAAoa,EAAAy/B,EAAA75C,KAAAD,EAAAC,IAAAsH,GAAA8S,GAAAy/B,IAAA+pD,GAAA/pD,GAAAx5D,GAAAo7D,GAAAyvC,IAAAnrF,GAAAmrF,KAAA,CAAA98F,IAAAgsB,EAAAjsB,KAAAstD,EAAAntD,OAAAgZ,EAAAjZ,MAAAhO,EAAAqU,MAAAqL,EAAAlK,OAAA+tG,EAAA,WAAApmF,EAAAq8B,EAAA75C,EAAA85C,GAAA,QAAAoxC,EAAA5uE,EAAAu9B,GAAA,GAAA15D,EAAA0jH,EAAAhqD,GAAA75C,GAAAkrF,GAAA,KAAA95D,EAAAyyE,EAAA3Y,GAAApxC,GAAA,aAAAA,GAAA,SAAAA,EAAA1oB,GAAAjxC,KAAAixC,GAAA,OAAA85D,EAAA,GAAAA,IAAA0pI,IAAA,MAAA1pI,EAAA5uE,EAAA4uE,GAAA,qBAAA4pI,EAAAj7K,EAAA75C,EAAA85C,EAAAoxC,GAAA,QAAA/qG,EAAA,EAAAixC,EAAA,EAAAhX,EAAAy/B,EAAAzvB,SAAAgH,EAAAhX,EAAAh6B,QAAA,aAAAg6B,EAAAgX,GAAAzN,MAAApvB,SAAA6lB,EAAAgX,KAAA2jM,GAAAhtE,QAAA78D,GAAA9wE,EAAAgX,KAAA2jM,GAAAn/D,UAAAy+D,EAAAj6M,EAAAgX,GAAA0oB,EAAA6rG,UAAA9rG,GAAA,OAAA15D,IAAA6f,EAAA,OAAAoa,EAAAgX,GAAAjxC,GAAA,CAAAixC,GAAA,sBAAA4jM,EAAAn7K,EAAA75C,GAAA,QAAA85C,EAAAD,EAAAo7K,iBAAAn7K,QAAAi7K,GAAAhtE,OAAA,SAAAtqI,EAAAq8B,EAAA,YAAA95C,IAAAu5C,EAAAO,EAAA95C,KAAA85C,IAAAo7K,uBAAA,OAAAp7K,GAAA,cAAAnlB,EAAAklB,EAAA75C,GAAA,IAAA85C,EAAA,MAAAD,MAAAhhC,WAAA,cAAAghC,IAAAq7K,wBAAA,aAAAr7K,EAAAg1B,SAAApjB,eAAA5R,IAAAk7K,GAAA5nL,OAAAntC,IAAAu5C,EAAAM,EAAA75C,IAAA85C,IAAA,OAAAA,CAAA,UAAAhmC,EAAA+lC,GAAA,IAAA75C,EAAA,EAAA85C,EAAA,EAAAoxC,EAAA0pI,IAAA,GAAA/6K,EAAA,OAAAzoB,GAAAjxC,EAAA4sD,EAAA8M,IAAAz/B,EAAAj6B,IAAA4f,QAAAC,GAAA65C,EAAA/rB,WAAAsD,EAAA0oB,GAAAD,EAAArkD,UAAArV,EAAA05D,IAAAqxC,IAAArxC,IAAAhhC,aAAA,OAAA7Y,EAAA85C,EAAA,UAAAx9B,EAAAu9B,EAAA75C,GAAA,IAAA65C,MAAArmD,sBAAA,OAAAohO,IAAA,IAAA96K,EAAAD,EAAAqxC,GAAA,QAAApxC,EAAAz5C,YAAAy5C,EAAAvuB,aAAAuuB,EAAAv5C,aAAAu5C,EAAAzuB,aAAA,KAAAlrC,EAAAs9B,EAAAq8B,GAAA,GAAAA,EAAAz5C,YAAAy5C,EAAAvuB,cAAA,QAAAprC,EAAAu+E,WAAA,UAAAv+E,EAAAu+E,YAAA5kB,EAAAv5C,aAAAu5C,EAAAzuB,eAAA,QAAAlrC,EAAAw+E,WAAA,UAAAx+E,EAAAw+E,WAAA,KAAA7kB,EAAAtmD,uBAAAsmD,IAAAl6D,SAAAi4B,KAAA,OAAA+8M,IAAA,GAAA1pI,GAAAlrF,EAAA,OAAA85C,EAAAoxC,GAAA,UAAApxC,IAAAjhC,YAAA,OAAA+7M,GAAA,UAAAj3M,EAAAk8B,EAAA75C,GAAA,OAAAvD,KAAA81C,MAAAsH,EAAAzrD,OAAAqO,KAAA81C,MAAAvyC,EAAA5R,MAAAqO,KAAA81C,MAAAsH,EAAA1rD,QAAAsO,KAAA81C,MAAAvyC,EAAA7R,OAAAsO,KAAA81C,MAAAsH,EAAAhkD,UAAA4G,KAAA81C,MAAAvyC,EAAAnK,SAAA4G,KAAA81C,MAAAsH,EAAAnlD,SAAA+H,KAAA81C,MAAAvyC,EAAAtL,MAAA,UAAA4oB,EAAAtd,EAAA85C,GAAA,sBAAAD,EAAA35C,IAAA,KAAA25C,EAAAjxD,WAAAxI,OAAA4f,EAAA0M,KAAAhlB,KAAAmyD,EAAA,IAAA75C,EAAArX,MAAAjB,KAAAmyD,GAAA35C,EAAAmM,YAAA,WAAAnM,OAAA,IAAA45C,GAAA,WAAAtyD,EAAAqyD,EAAA75C,EAAA85C,GAAAD,EAAA/rB,YAAA9tB,EAAA65C,EAAArkD,WAAAskD,CAAA,UAAAj5D,EAAAg5D,GAAA,IAAA75C,EAAAze,OAAA4zO,QAAAr7K,EAAAv4D,OAAAuvB,QAAAvvB,OAAA6zO,MAAA,OAAAp1N,KAAAq1N,IAAAr1N,EAAAq1N,IAAAx7K,GAAAxgB,WAAA,GAAAygB,IAAAD,GAAA1M,OAAA,MAAA0M,EAAAxgB,WAAA,YAAAhmB,EAAAwmC,EAAA75C,GAAAyd,EAAAo8B,EAAA,uBAAAp8B,EAAAo8B,EAAA,MAAA75C,EAAA5R,KAAAqvB,EAAAo8B,EAAA,OAAA75C,EAAA7R,MAAAsvB,EAAAo8B,EAAA,QAAA75C,EAAAtL,OAAA+oB,EAAAo8B,EAAA,SAAA75C,EAAAnK,OAAA,UAAA+nB,EAAAi8B,GAAAp8B,EAAAo8B,EAAA,eAAAp8B,EAAAo8B,EAAA,UAAAp8B,EAAAo8B,EAAA,WAAAp8B,EAAAo8B,EAAA,YAAAp8B,EAAAo8B,EAAA,iBAAAh+B,EAAA,gBAAAp8B,MAAAypB,UAAA,IAAAmT,EAAA,GAAA1I,EAAA,CAAA2hN,qBAAA,GAAAC,EAAA,CAAAC,MAAA,SAAAx1N,GAAA,QAAA65C,KAAAlmC,KAAA4G,eAAAs/B,SAAA75C,MAAA65C,GAAAlmC,EAAAkmC,IAAAx9B,EAAA9yB,SAAA,SAAAswD,GAAA,GAAAA,EAAA47K,aAAAz1N,EAAAy1N,WAAA,sCAAArmM,OAAApvB,EAAAy1N,WAAA,sBAAAp5M,EAAA9zB,KAAAyX,EAAA,EAAA01N,YAAA,SAAA11N,EAAA85C,EAAAoxC,GAAA,IAAArxC,EAAAnyD,UAAAiuO,eAAA,EAAAzqI,EAAAlzE,OAAA,WAAA6hC,EAAA87K,eAAA,OAAAx1O,EAAA6f,EAAA,SAAAqc,EAAA9yB,SAAA,SAAAswD,GAAAC,EAAAD,EAAA47K,cAAA37K,EAAAD,EAAA47K,YAAAt1O,IAAA25D,EAAAD,EAAA47K,YAAAt1O,GAAAozB,EAAA,CAAAuyI,SAAAhsG,GAAAoxC,IAAApxC,EAAAjvC,QAAAgvC,EAAA47K,aAAA37K,EAAAD,EAAA47K,YAAAz1N,IAAA85C,EAAAD,EAAA47K,YAAAz1N,GAAAuT,EAAA,CAAAuyI,SAAAhsG,GAAAoxC,IAAA,KAAA0qI,kBAAA,SAAA97K,EAAAoxC,EAAA/qG,EAAA05D,GAAA,QAAA75C,KAAAqc,EAAA9yB,SAAA,SAAAswD,GAAA,IAAA75C,EAAA65C,EAAA47K,YAAA37K,EAAAjvC,QAAA7K,IAAA65C,EAAAy7K,wBAAAz7K,EAAA,IAAAA,EAAAC,EAAAoxC,EAAApxC,EAAAjvC,UAAAi7I,SAAAhsG,EAAAD,EAAAhvC,QAAAivC,EAAAjvC,QAAAivC,EAAA95C,GAAA65C,EAAAz/B,EAAAj6B,EAAA05D,EAAAp2B,UAAA,IAAAq2B,EAAAjvC,QAAA,KAAAumB,EAAA0oB,EAAAjvC,QAAA0P,eAAAva,SAAA,KAAAoxB,EAAA1pC,KAAAmuO,aAAA/7K,EAAA95C,EAAA85C,EAAAjvC,QAAA7K,OAAA85C,EAAAjvC,QAAA7K,GAAAoxB,EAAA,GAAA0kM,mBAAA,SAAA91N,EAAA85C,GAAA,IAAAoxC,EAAA,UAAA7uE,EAAA9yB,SAAA,SAAAswD,GAAA,mBAAAA,EAAAk8K,iBAAA37M,EAAA8wE,EAAArxC,EAAAk8K,gBAAArpN,KAAAotC,EAAAD,EAAA47K,YAAAz1N,GAAA,IAAAkrF,CAAA,EAAA2qI,aAAA,SAAA71N,EAAA85C,EAAAoxC,GAAA,IAAA/qG,EAAA,OAAAk8B,EAAA9yB,SAAA,SAAAswD,GAAA75C,EAAA65C,EAAA47K,aAAA57K,EAAAm8K,iBAAA,mBAAAn8K,EAAAm8K,gBAAAl8K,KAAA35D,EAAA05D,EAAAm8K,gBAAAl8K,GAAAptC,KAAA1M,EAAA65C,EAAA47K,YAAAvqI,GAAA,IAAA/qG,CAAA,YAAA81O,EAAAp8K,GAAA,IAAA75C,EAAA65C,EAAAisG,SAAAhsG,EAAAD,EAAAq8K,OAAAhrI,EAAArxC,EAAA75D,KAAAG,EAAA05D,EAAAs8K,SAAA/kM,EAAAyoB,EAAAu8K,QAAAh8M,EAAAy/B,EAAAw8K,KAAA56K,EAAA5B,EAAAy8K,OAAAhvN,EAAAuyC,EAAA2+G,SAAAn4K,EAAAw5D,EAAA08K,SAAA3yH,EAAA/pD,EAAA28K,kBAAAz2N,EAAA85C,EAAA48K,kBAAA96K,EAAA9B,EAAA33B,cAAAu4B,EAAAZ,EAAA68K,YAAAn9K,EAAAM,EAAA88K,qBAAA,GAAA32N,KAAA85C,KAAAj+B,GAAA,KAAA3b,EAAAuQ,EAAAzQ,EAAA6K,QAAAgvC,EAAA,KAAAqxC,EAAA5qG,OAAA,GAAAmrE,cAAAy/B,EAAArtF,OAAA,IAAAtc,OAAAq1O,aAAA7qO,GAAA+T,GAAAI,EAAAtgB,SAAAi3O,YAAA,UAAAC,UAAA5rI,GAAA,MAAAhrF,EAAA,IAAA02N,YAAA1rI,EAAA,CAAA6rI,SAAA,EAAAC,YAAA,IAAA92N,EAAAm7C,GAAAjhC,GAAA0/B,EAAA55C,EAAAo7C,KAAAG,GAAA3B,EAAA55C,EAAArG,KAAA1Z,GAAA25D,EAAA55C,EAAAitC,MAAA/b,EAAAlxB,EAAAs4J,SAAAlxJ,EAAApH,EAAAq2N,SAAAl2O,EAAA6f,EAAAs2N,kBAAA5yH,EAAA1jG,EAAAu2N,kBAAA12N,EAAAG,EAAAgiB,cAAAy5B,EAAAz7C,EAAA+2N,SAAAx8K,IAAAy8K,iBAAA,MAAAnqL,EAAAqM,EAAA7lC,IAAA,GAAAgmC,GAAAg8K,EAAAO,mBAAA5qI,EAAAlrF,IAAA,IAAA+sC,KAAAqM,EAAAl5C,EAAA6sC,GAAAqM,EAAArM,GAAA+M,KAAAq9K,cAAAj3N,GAAAuQ,EAAAopC,IAAAppC,EAAAopC,GAAAntC,KAAA1M,EAAAE,EAAA,WAAA40F,EAAAj7C,EAAA75C,GAAA,IAAA85C,GAAAoxC,EAAA,EAAAtiG,UAAAxI,aAAA,IAAAwI,UAAA,GAAAA,UAAA,OAAAukC,IAAA+9D,EAAA,SAAArxC,EAAA75C,GAAA,SAAA65C,EAAA,aAAAC,EAAAoxC,EAAA,SAAArxC,EAAA75C,GAAA,SAAA65C,EAAA,iBAAAC,EAAAoxC,EAAA,GAAA/qG,EAAAyH,OAAAyP,KAAAwiD,GAAAzoB,EAAA,EAAAA,EAAAjxC,EAAAC,OAAAgxC,IAAA0oB,EAAA35D,EAAAixC,GAAA,GAAApxB,EAAAxf,QAAAs5D,KAAAoxC,EAAApxC,GAAAD,EAAAC,IAAA,OAAAoxC,CAAA,EAAArxC,EAAA75C,GAAA,GAAApY,OAAAksO,sBAAA,QAAA3zO,EAAAyH,OAAAksO,sBAAAj6K,GAAAzoB,EAAA,EAAAA,EAAAjxC,EAAAC,OAAAgxC,IAAA0oB,EAAA35D,EAAAixC,GAAA,GAAApxB,EAAAxf,QAAAs5D,IAAAlyD,OAAAH,UAAA2vO,qBAAA1qN,KAAAmtC,EAAAC,KAAAoxC,EAAApxC,GAAAD,EAAAC,IAAA,OAAAoxC,CAAA,CAAA/qG,CAAA+qG,EAAAr3E,GAAA0hN,EAAAG,YAAAzrO,KAAA8qO,GAAAQ,CAAA17K,EAAA75C,EAAAuT,EAAA,CAAA8jN,OAAAt6G,EAAAu6G,SAAA32J,EAAA42J,QAAAz6G,EAAAo5G,OAAAp1O,EAAA02O,OAAAC,EAAAC,WAAAC,EAAAvB,QAAAnxH,EAAA2yH,YAAAC,EAAAC,YAAAC,GAAArB,YAAAsB,GAAAC,eAAAlD,GAAAh6F,OAAA74G,cAAA43B,EAAA0+G,SAAA0/D,GAAA1B,kBAAAjqI,GAAAgqI,SAAAt1G,GAAAw1G,kBAAA0B,GAAAC,mBAAAC,GAAAC,qBAAAC,GAAAC,eAAA,WAAAX,GAAA,GAAAY,cAAA,WAAAZ,GAAA,GAAAa,sBAAA,SAAA7+K,GAAA7iB,EAAA,CAAA8uH,SAAA9lJ,EAAAhgB,KAAA65D,EAAA33B,cAAA43B,GAAA,GAAAoxC,GAAA,KAAAr3E,EAAA,iBAAAmjB,EAAA6iB,GAAAo8K,EAAA1iN,EAAA,CAAAmjN,YAAAsB,GAAA5B,QAAAnxH,EAAAkxH,SAAAp5G,EAAAm5G,OAAAp1O,EAAA03K,SAAA0/D,GAAA1B,kBAAAjqI,GAAAgqI,SAAAt1G,GAAAw1G,kBAAA0B,IAAAt+K,GAAA,KAAAkjE,EAAAp8C,EAAAm8C,EAAAh8H,EAAA22O,EAAAE,EAAA1yH,EAAA4yH,EAAAK,GAAAj3G,GAAA10B,GAAA4rI,GAAAxlG,GAAAqlG,GAAAW,GAAAC,GAAAC,GAAAjkI,GAAAkkI,GAAAC,GAAAhB,GAAAiB,GAAAC,GAAAC,GAAAC,GAAAC,IAAA,EAAAC,IAAA,EAAAC,GAAA,GAAAC,IAAA,EAAAC,IAAA,EAAA5xI,GAAA,GAAA6xI,IAAA,EAAAC,GAAA,GAAAC,GAAA,oBAAA/5O,SAAAg6O,GAAA9/K,EAAA+/K,GAAA/5N,GAAA/T,EAAA,mBAAA+tO,GAAAH,KAAAt5O,IAAAy5D,GAAA,cAAAl6D,SAAAoqB,cAAA,OAAA+vN,GAAA,cAAAJ,GAAA,IAAA5tO,EAAA,aAAA8tD,EAAAj6D,SAAAoqB,cAAA,YAAA6vC,EAAAl2B,MAAAqsD,QAAA,+BAAAn2B,EAAAl2B,MAAAwiM,aAAA,KAAA6T,GAAA,SAAAngL,EAAA75C,GAAA,IAAA85C,EAAAr8B,EAAAo8B,GAAAqxC,EAAAtqF,SAAAk5C,EAAAplD,OAAAkM,SAAAk5C,EAAA3wB,aAAAvoB,SAAAk5C,EAAA1wB,cAAAxoB,SAAAk5C,EAAAnxB,iBAAA/nB,SAAAk5C,EAAApxB,kBAAAvoC,EAAA20O,EAAAj7K,EAAA,EAAA75C,GAAAoxB,EAAA0jM,EAAAj7K,EAAA,EAAA75C,GAAAoa,EAAAj6B,GAAAs9B,EAAAt9B,GAAAs7D,EAAArqB,GAAA3T,EAAA2T,GAAA9pB,EAAA8S,GAAAxZ,SAAAwZ,EAAAxlB,YAAAgM,SAAAwZ,EAAAvlB,aAAAgvG,EAAA1jH,GAAAuU,MAAAmlD,EAAA4B,GAAA76C,SAAA66C,EAAA7mD,YAAAgM,SAAA66C,EAAA5mD,aAAAgvG,EAAAzyE,GAAA18B,MAAA,eAAAolD,EAAAvlD,QAAA,WAAAulD,EAAAnb,eAAA,mBAAAmb,EAAAnb,cAAA,iCAAAmb,EAAAvlD,QAAAulD,EAAAmgL,oBAAA/5O,MAAA,KAAAE,QAAA,0BAAAD,GAAAi6B,EAAA2d,OAAA,SAAA3d,EAAA2d,OAAA/3B,EAAA,SAAAoa,EAAA2d,MAAA,gBAAA3G,GAAA,SAAAqqB,EAAA90C,OAAA80C,EAAA90C,QAAA3G,EAAA,yBAAA7f,IAAA,UAAAi6B,EAAA7lB,SAAA,SAAA6lB,EAAA7lB,SAAA,UAAA6lB,EAAA7lB,SAAA,SAAA6lB,EAAA7lB,SAAA22F,GAAA5jF,GAAA,SAAAwyC,EAAA+/K,KAAAzoM,GAAA,SAAA0oB,EAAA+/K,KAAA3uI,EAAA5jF,EAAAuyC,GAAA,yBAAAqgL,GAAA,SAAArgL,GAAA,SAAA4B,EAAArqB,EAAAhX,GAAA,gBAAAy/B,EAAA75C,EAAA85C,EAAAoxC,GAAA,IAAA/qG,EAAA05D,EAAAhvC,QAAA8yI,MAAA39J,MAAAggB,EAAA6K,QAAA8yI,MAAA39J,MAAA65D,EAAAhvC,QAAA8yI,MAAA39J,OAAAggB,EAAA6K,QAAA8yI,MAAA39J,KAAA,cAAAoxC,IAAAhX,IAAAj6B,IAAA,MAAAixC,IAAA,IAAAA,IAAAhX,GAAA,UAAAgX,IAAA,mBAAAA,EAAAqqB,EAAArqB,EAAAyoB,EAAA75C,EAAA85C,EAAAoxC,GAAA9wE,EAAAqhC,CAAA5B,EAAA75C,EAAA85C,EAAAoxC,IAAAlrF,GAAAoa,EAAAy/B,EAAA75C,GAAA6K,QAAA8yI,MAAA39J,MAAA,IAAAoxC,GAAA,iBAAAA,OAAApxB,GAAAoxB,EAAA12B,OAAA,EAAA02B,EAAA5wC,QAAAwf,IAAA,MAAAA,EAAA,GAAA85C,EAAAD,EAAA8jG,MAAA7jG,GAAA,UAAAoxC,EAAApxC,OAAA,CAAA95D,KAAA85D,IAAA95C,EAAAhgB,KAAA85D,EAAA95D,KAAAggB,EAAAm6N,UAAA1+K,EAAA3B,EAAAsgL,MAAA,GAAAp6N,EAAAq6N,SAAA5+K,EAAA3B,EAAAwgL,KAAAt6N,EAAAu6N,YAAAzgL,EAAAygL,YAAA1gL,EAAA8jG,MAAA39I,CAAA,EAAAq4N,GAAA,YAAA0B,IAAAj9G,GAAAr/F,EAAAq/F,EAAA,mBAAAy7G,GAAA,YAAAwB,IAAAj9G,GAAAr/F,EAAAq/F,EAAA,wBAAA09G,GAAA3gL,GAAA,GAAAkjE,EAAA,CAAAljE,IAAAzsB,QAAAysB,EAAAzsB,QAAA,GAAAysB,EAAA,IAAA75C,GAAA7f,EAAA05D,EAAAhnD,QAAAu+B,EAAAyoB,EAAA/mD,QAAAwmO,GAAAv5J,MAAA,SAAAlmB,GAAA,IAAA75C,EAAA65C,EAAAh+B,GAAAhR,QAAA4vN,wBAAAzF,EAAAn7K,GAAA,KAAAC,EAAA+pD,EAAAhqD,GAAAqxC,EAAA/qG,GAAA25D,EAAA3rD,KAAA6R,GAAA7f,GAAA25D,EAAAzrD,MAAA2R,IAAAoxB,GAAA0oB,EAAA1rD,IAAA4R,GAAAoxB,GAAA0oB,EAAAxrD,OAAA0R,EAAA,OAAAkrF,GAAAlrF,EAAAoa,EAAAy/B,OAAA,MAAAz/B,GAAA,GAAApa,EAAA,KAAA85C,EAAAoxC,EAAA,OAAApxC,KAAAD,IAAAt/B,eAAAu/B,KAAAoxC,EAAApxC,GAAAD,EAAAC,IAAAoxC,EAAAn/D,OAAAm/D,EAAAgrI,OAAAl2N,EAAAkrF,EAAAj/D,oBAAA,EAAAi/D,EAAAl4C,qBAAA,EAAAhzC,EAAA6b,GAAA6+M,YAAAxvI,EAAA,MAAA/qG,EAAAixC,EAAAhX,CAAA,UAAAugN,GAAA9gL,GAAAkjE,KAAAlkG,WAAAgD,GAAA++M,iBAAA/gL,EAAA9tB,OAAA,UAAAgpM,GAAAl7K,EAAA75C,GAAA,IAAA65C,MAAA3gB,UAAA,IAAA2gB,EAAA3gB,SAAA,mDAAA9J,OAAA,GAAAj3B,SAAAuU,KAAAmtC,IAAAnyD,KAAAsyI,GAAAngF,EAAAnyD,KAAAmjB,QAAA7K,EAAAoa,EAAA,GAAApa,GAAA65C,EAAAh+B,GAAAn0B,KAAA,IAAAoyD,EAAAoxC,EAAA/qG,EAAA,CAAAw9J,MAAA,KAAAvpC,MAAA,EAAAoZ,UAAA,EAAAuwD,MAAA,KAAA97B,OAAA,KAAA0D,UAAA,WAAA9jK,KAAAg4D,EAAAg1B,UAAA,WAAAgsJ,cAAA,EAAAC,YAAA,EAAAC,sBAAA,KAAAC,mBAAA,EAAAtgK,UAAA,kBAAAs/J,GAAAngL,EAAAnyD,KAAAmjB,QAAA,EAAAowN,WAAA,iBAAAC,YAAA,kBAAAC,UAAA,gBAAAxf,OAAA,SAAA95M,OAAA,KAAAu5N,iBAAA,EAAA3qO,UAAA,EAAAigI,OAAA,KAAA68D,QAAA,SAAA1zI,EAAA75C,GAAA65C,EAAA0zI,QAAA,OAAAvtL,EAAAiwE,YAAA,EAAAorJ,YAAA,EAAAC,gBAAA,EAAAC,WAAA,UAAA1qO,MAAA,EAAA2qO,kBAAA,EAAAC,qBAAA5uI,OAAAjsF,SAAAisF,OAAAtrG,QAAAqf,SAAArf,OAAA2mG,iBAAA,OAAAwzI,eAAA,EAAAC,cAAA,oBAAAC,gBAAA,EAAAC,kBAAA,EAAAC,eAAA,CAAAhwO,EAAA,EAAAC,EAAA,GAAAgwO,gBAAA,IAAAhH,GAAAgH,gBAAA,iBAAAx6O,SAAAqiH,EAAA62H,qBAAA,OAAA3gL,KAAAy7K,EAAAK,kBAAAluO,KAAAmyD,EAAA15D,KAAA25D,KAAA95C,MAAA85C,GAAA35D,EAAA25D,IAAA,IAAAoxC,KAAAgvI,GAAAl6N,GAAAtY,KAAA,MAAAwjG,EAAA5qG,OAAA,uBAAAoH,KAAAwjG,KAAAxjG,KAAAwjG,GAAAxjG,KAAAwjG,GAAAjhG,KAAAvC,YAAAs0O,iBAAAh8N,EAAA07N,eAAA5B,GAAApyO,KAAAs0O,kBAAAt0O,KAAAmjB,QAAA4wN,oBAAA,GAAAz7N,EAAA+7N,eAAApgL,EAAA9B,EAAA,cAAAnyD,KAAAu0O,cAAAtgL,EAAA9B,EAAA,YAAAnyD,KAAAu0O,aAAAtgL,EAAA9B,EAAA,aAAAnyD,KAAAu0O,cAAAv0O,KAAAs0O,kBAAArgL,EAAA9B,EAAA,WAAAnyD,MAAAi0D,EAAA9B,EAAA,YAAAnyD,OAAA4xO,GAAA/wO,KAAAb,KAAAsyI,IAAAh6H,EAAA+9K,OAAA/9K,EAAA+9K,MAAAh+L,KAAA2H,KAAA0sH,KAAAp0G,EAAA+9K,MAAAh+L,IAAA2H,OAAA,IAAA0yB,EAAA1yB,KAAA,eAAAsY,EAAAkrF,EAAA,UAAAgxI,sBAAA,WAAAhxI,EAAA,GAAAxjG,KAAAmjB,QAAApa,WAAA,GAAArK,MAAAsmB,KAAAhlB,KAAAsyI,GAAA5vG,UAAA7gC,SAAA,SAAAswD,GAAA,IAAA75C,EAAA85C,EAAA,SAAAr8B,EAAAo8B,EAAA,YAAAA,IAAAk7K,GAAAhtE,QAAA78D,EAAA3iG,KAAA,CAAAwjC,OAAA8tB,EAAAqC,KAAA2nD,EAAAhqD,KAAA75C,EAAAuT,EAAA,GAAA23E,IAAA9qG,OAAA,GAAA87D,OAAArC,EAAAsiL,wBAAAriL,EAAA/M,EAAA8M,GAAA,MAAA75C,EAAA5R,KAAA0rD,EAAAW,EAAAz6C,EAAA7R,MAAA2rD,EAAA95C,GAAA65C,EAAAuiL,SAAAp8N,EAAA,KAAAq8N,kBAAA,SAAAxiL,GAAAqxC,EAAA3iG,KAAAsxD,EAAA,EAAAyiL,qBAAA,SAAAziL,GAAAqxC,EAAA/hG,OAAA,SAAA0wD,EAAA75C,GAAA,QAAA85C,KAAAD,EAAA,GAAAA,EAAAt/B,eAAAu/B,GAAA,QAAAoxC,KAAAlrF,EAAA,GAAAA,EAAAua,eAAA2wE,IAAAlrF,EAAAkrF,KAAArxC,EAAAC,GAAAoxC,GAAA,OAAA2B,OAAA/yC,GAAA,UAAAoxC,EAAA,CAAAn/D,OAAA8tB,IAAA,IAAA0iL,WAAA,SAAA1iL,GAAA,IAAAx5D,EAAAqH,KAAA,IAAAA,KAAAmjB,QAAApa,UAAA,OAAA8b,aAAAvM,QAAA,mBAAA65C,QAAA,IAAA+pD,GAAA,EAAA7jG,EAAA,EAAAmrF,EAAA3hG,SAAA,SAAAswD,GAAA,IAAA75C,EAAA,EAAA85C,EAAAD,EAAA9tB,OAAAm/D,EAAApxC,EAAAsiL,SAAAj8O,EAAA0jH,EAAA/pD,GAAA1oB,EAAA0oB,EAAA0iL,aAAApiN,EAAA0/B,EAAA2iL,WAAAhhL,EAAA5B,EAAAqC,KAAA50C,EAAAylC,EAAA+M,GAAA,GAAAxyC,IAAAnnB,EAAAiO,KAAAkZ,EAAAmzC,EAAAt6D,EAAAgO,MAAAmZ,EAAAtH,GAAA85C,EAAA4iL,OAAAv8O,EAAA25D,EAAAqiL,uBAAAx+M,EAAAyT,EAAAjxC,KAAAw9B,EAAAutE,EAAA/qG,KAAAs7D,EAAArtD,IAAAjO,EAAAiO,MAAAqtD,EAAAttD,KAAAhO,EAAAgO,QAAA+8F,EAAA98F,IAAAjO,EAAAiO,MAAA88F,EAAA/8F,KAAAhO,EAAAgO,QAAA0rD,EAAA4B,EAAAn0C,EAAA8pB,IAAAhX,IAAA/5B,EAAAwqB,QAAA7K,EAAAvD,KAAA6wC,KAAA7wC,KAAAud,IAAA1S,EAAAlZ,IAAAyrD,EAAAzrD,IAAA,GAAAqO,KAAAud,IAAA1S,EAAAnZ,KAAA0rD,EAAA1rD,KAAA,IAAAsO,KAAA6wC,KAAA7wC,KAAAud,IAAA1S,EAAAlZ,IAAAgjC,EAAAhjC,IAAA,GAAAqO,KAAAud,IAAA1S,EAAAnZ,KAAAijC,EAAAjjC,KAAA,IAAAisB,EAAA3pB,WAAAktB,EAAAx9B,EAAA+qG,KAAApxC,EAAA0iL,aAAAtxI,EAAApxC,EAAA2iL,WAAAt8O,EAAA6f,KAAA3f,EAAAwqB,QAAApa,UAAApQ,EAAA2uD,QAAA8K,EAAA2B,EAAAt7D,EAAA6f,QAAA4jG,GAAA,EAAA7jG,EAAAtD,KAAAoiB,IAAA9e,EAAAC,GAAAuM,aAAAutC,EAAA6iL,qBAAA7iL,EAAA6iL,oBAAAtwN,YAAA,WAAAytC,EAAA8iL,cAAA,EAAA9iL,EAAA0iL,aAAA,KAAA1iL,EAAAsiL,SAAA,KAAAtiL,EAAA2iL,WAAA,KAAA3iL,EAAAqiL,sBAAA,OAAAn8N,GAAA85C,EAAAqiL,sBAAAn8N,EAAA,IAAAuM,aAAAvM,GAAA4jG,EAAA5jG,EAAAqM,YAAA,8BAAAwtC,MAAA,GAAA95C,GAAA,mBAAA85C,OAAAqxC,EAAA,IAAAl8C,QAAA,SAAA6K,EAAA75C,EAAA85C,EAAAoxC,GAAA,IAAA/qG,EAAAixC,EAAA85D,IAAAztE,EAAAo8B,EAAA,iBAAAp8B,EAAAo8B,EAAA,gBAAA15D,GAAAixC,EAAA2b,EAAArlD,KAAAsyI,MAAA5oG,EAAAhX,EAAAgX,OAAArxB,EAAA5f,GAAA6f,EAAA7R,KAAA2rD,EAAA3rD,OAAAhO,GAAA,GAAAixC,GAAApxB,EAAA5R,IAAA0rD,EAAA1rD,MAAAgjC,GAAA,GAAAyoB,EAAAgjL,aAAA18O,EAAA05D,EAAAijL,aAAA1rM,EAAA3T,EAAAo8B,EAAA,2BAAA15D,EAAA,MAAAixC,EAAA,SAAA1pC,KAAAq1O,gBAAAljL,EAAAvuB,YAAA7N,EAAAo8B,EAAA,0BAAAqxC,EAAA,MAAAxjG,KAAAmjB,QAAA6lH,OAAA,IAAAhpI,KAAAmjB,QAAA6lH,OAAA,KAAAjzG,EAAAo8B,EAAA,mDAAAA,EAAAggF,UAAAttH,aAAAstC,EAAAggF,UAAAhgF,EAAAggF,SAAAxtH,YAAA,WAAAoR,EAAAo8B,EAAA,iBAAAp8B,EAAAo8B,EAAA,gBAAAA,EAAAggF,UAAA,EAAAhgF,EAAAgjL,YAAA,EAAAhjL,EAAAijL,YAAA,IAAA5xI,GAAA,GAAAp/F,GAAA,UAAAkxO,GAAAnjL,EAAA75C,EAAA85C,EAAAoxC,EAAA/qG,EAAAixC,EAAAhX,EAAAqhC,GAAA,IAAAn0C,EAAAjnB,EAAAujH,EAAA/pD,EAAAh+B,GAAA9b,EAAA6jG,EAAA/4F,QAAAoyN,OAAA,OAAA17O,OAAAq1O,aAAA7qO,GAAA+T,GAAAwH,EAAA1nB,SAAAi3O,YAAA,UAAAC,UAAA,cAAAxvN,EAAA,IAAAsvN,YAAA,QAAAG,SAAA,EAAAC,YAAA,IAAA1vN,EAAA+zC,GAAAr7C,EAAAsH,EAAAg0C,KAAAzB,EAAAvyC,EAAAsuJ,QAAA97G,EAAAxyC,EAAA41N,YAAAhyI,EAAA5jF,EAAA61N,QAAAh9O,GAAA6f,EAAAsH,EAAA81N,YAAAhsM,GAAAyyE,EAAA7jG,GAAAsH,EAAA+1N,gBAAA5hL,EAAAn0C,EAAA4a,cAAA9H,EAAAy/B,EAAAs9K,cAAA7vN,GAAAvH,IAAA2M,KAAAk3F,EAAAt8F,EAAA8S,GAAA/5B,CAAA,UAAAi9O,GAAAzjL,KAAA8rG,WAAA,WAAA43E,KAAA9D,IAAA,WAAA+D,GAAA3jL,GAAA,OAAAxtC,WAAAwtC,EAAA,YAAA4jL,GAAA5jL,GAAA,OAAAttC,aAAAstC,EAAA,CAAA8/K,KAAAt5O,GAAAT,SAAAs3B,iBAAA,kBAAA2iC,GAAA,GAAAw/K,GAAA,OAAAx/K,EAAA5tB,iBAAA4tB,EAAA7G,iBAAA6G,EAAA7G,kBAAA6G,EAAAsmG,0BAAAtmG,EAAAsmG,2BAAAk5E,IAAA,QAAAtE,GAAAttO,UAAA,CAAAE,YAAAotO,GAAA6F,iBAAA,SAAA/gL,GAAAnyD,KAAAsyI,GAAAvwI,SAAAowD,QAAAnyD,KAAAsyI,KAAAg/F,GAAA,OAAA0E,cAAA,SAAA7jL,EAAA75C,GAAA,yBAAAtY,KAAAmjB,QAAA6vD,UAAAhzE,KAAAmjB,QAAA6vD,UAAAhuD,KAAAhlB,KAAAmyD,EAAA75C,EAAA+8G,GAAAr1H,KAAAmjB,QAAA6vD,SAAA,EAAAuhK,YAAA,SAAAj8N,GAAA,GAAAA,EAAAg3N,WAAA,KAAAl9K,EAAApyD,KAAAwjG,EAAAxjG,KAAAsyI,GAAAngF,EAAAnyD,KAAAmjB,QAAA1qB,EAAA05D,EAAAuhL,gBAAAhqM,EAAApxB,EAAA5S,KAAAgtB,EAAApa,EAAAotB,SAAAptB,EAAAotB,QAAA,IAAAptB,EAAA29N,aAAA,UAAA39N,EAAA29N,aAAA39N,EAAAy7C,GAAArhC,GAAApa,GAAA+rB,OAAAzkB,EAAAtH,EAAA+rB,OAAAi+C,aAAAhqE,EAAAtb,MAAAsb,EAAAtb,KAAA,IAAAsb,EAAA49N,cAAA59N,EAAA49N,eAAA,KAAAniL,EAAAp7D,EAAAw5D,EAAAh4C,OAAA,YAAAg4C,GAAA6/K,GAAAt5O,OAAA,UAAA4f,EAAA65C,EAAA15C,qBAAA,SAAA25C,EAAA95C,EAAA5f,OAAA05D,KAAA,KAAAoxC,EAAAlrF,EAAA85C,GAAAoxC,EAAA3iB,SAAAmxJ,GAAAnxO,KAAA2iG,EAAA,GAAAA,IAAA6xB,KAAA,wBAAAl7H,KAAAuvC,IAAA,IAAApxB,EAAAqsI,QAAAxyF,EAAA2zE,YAAAlmH,EAAAu2N,oBAAAn2O,KAAAs0O,kBAAAp4H,IAAAnoD,GAAA,WAAAA,EAAA5iB,QAAA4yB,mBAAAhQ,EAAA44K,EAAA54K,EAAA5B,EAAA8rG,UAAAz6D,GAAA,KAAAzvC,EAAAo+E,UAAA89F,IAAAl8K,GAAA,IAAAy8K,GAAAvjM,EAAA8mB,GAAA8wC,GAAA53D,EAAA8mB,EAAA5B,EAAA8rG,WAAA,mBAAAtlK,GAAA,GAAAA,EAAAqsB,KAAAhlB,KAAAsY,EAAAy7C,EAAA/zD,MAAA,OAAAsvC,EAAA,CAAA8uH,SAAAhsG,EAAAo8K,OAAA5uN,EAAAtnB,KAAA,SAAAm2O,SAAA16K,EAAA46K,KAAAnrI,EAAAorI,OAAAprI,IAAA4J,EAAA,SAAAh7C,EAAA,CAAA3sB,IAAAntB,SAAA7f,GAAA6f,EAAAg3N,YAAAh3N,EAAAisB,uBAAA,GAAA5rC,OAAAH,MAAA,KAAA6/E,MAAA,SAAAlmB,GAAA,GAAAA,EAAAw6K,EAAA/sN,EAAAuyC,EAAA9vC,OAAAmhF,GAAA,UAAAl0D,EAAA,CAAA8uH,SAAAhsG,EAAAo8K,OAAAr8K,EAAA75D,KAAA,SAAAm2O,SAAA16K,EAAA66K,OAAAprI,EAAAmrI,KAAAnrI,IAAA4J,EAAA,SAAAh7C,EAAA,CAAA3sB,IAAAntB,KAAA,iBAAA7f,GAAA6f,EAAAg3N,YAAAh3N,EAAAisB,kBAAA4tB,EAAAooG,SAAAoyE,EAAA/sN,EAAAuyC,EAAAooG,OAAA/2D,GAAA,IAAAxjG,KAAAo2O,kBAAA99N,EAAAoa,EAAAqhC,EAAA,IAAAqiL,kBAAA,SAAAjkL,EAAA75C,EAAA85C,GAAA,IAAAoxC,EAAA/qG,EAAAuH,KAAA0pC,EAAAjxC,EAAA65I,GAAA5/G,EAAAj6B,EAAA0qB,QAAA4wC,EAAArqB,EAAAg0C,cAAAtrB,IAAAijE,GAAAjjE,EAAAjhC,aAAAuY,IAAA85D,EAAA2Y,EAAA/pD,GAAAh5D,EAAAswC,EAAAuvC,GAAAo8C,EAAAjjE,GAAAjhC,WAAA4+M,EAAA16G,EAAAxzC,YAAAouJ,EAAA79K,EAAA64E,GAAAv4G,EAAAujI,MAAAg7E,GAAA,CAAA5sM,OAAAgpM,GAAAn/D,QAAA74C,EAAAlqH,SAAAmN,GAAA65C,GAAAhnD,QAAAC,SAAAkN,GAAA65C,GAAA/mD,SAAAgmO,GAAAH,GAAA9lO,QAAAq4F,EAAA/8F,KAAA4qO,GAAAJ,GAAA7lO,QAAAo4F,EAAA98F,IAAA1G,KAAAq2O,QAAA/9N,GAAA65C,GAAAhnD,QAAAnL,KAAAs2O,QAAAh+N,GAAA65C,GAAA/mD,QAAAiqH,EAAAp5F,MAAA,qBAAAunE,EAAA,WAAA4J,EAAA,aAAA30G,EAAA,CAAAgtC,IAAA0sB,IAAAk7K,GAAAY,cAAAx1O,EAAA89O,WAAA99O,EAAA+9O,6BAAA52N,GAAAnnB,EAAA67O,kBAAAj/G,EAAA4oC,WAAA,GAAAxlK,EAAAg+O,kBAAAtkL,EAAA75C,GAAAg3B,EAAA,CAAA8uH,SAAA3lK,EAAAH,KAAA,SAAAkiC,cAAA23B,IAAA1kC,EAAA4nG,EAAA3iG,EAAA8gN,aAAA,KAAA9gN,EAAAuhM,OAAAz7N,MAAA,KAAAqJ,SAAA,SAAAswD,GAAAT,EAAA2jE,EAAAljE,EAAA9vC,OAAAuzN,GAAA,IAAA3hL,EAAAF,EAAA,WAAA++K,IAAA7+K,EAAAF,EAAA,YAAA++K,IAAA7+K,EAAAF,EAAA,YAAA++K,IAAA7+K,EAAAF,EAAA,UAAAt7D,EAAA89O,SAAAtiL,EAAAF,EAAA,WAAAt7D,EAAA89O,SAAAtiL,EAAAF,EAAA,cAAAt7D,EAAA89O,SAAA32N,GAAA5f,KAAAs0O,kBAAAt0O,KAAAmjB,QAAA4wN,oBAAA,EAAA1+G,EAAA4oC,WAAA,GAAA7wD,EAAA,aAAAptG,KAAA,CAAAylC,IAAA0sB,KAAAz/B,EAAAvpB,OAAAupB,EAAAohN,mBAAAx7N,GAAAtY,KAAAs0O,kBAAAl8N,GAAA/T,GAAAm/F,IAAA6pI,GAAAY,cAAAjuO,KAAAu2O,WAAAtiL,EAAAF,EAAA,UAAAt7D,EAAAi+O,qBAAAziL,EAAAF,EAAA,WAAAt7D,EAAAi+O,qBAAAziL,EAAAF,EAAA,cAAAt7D,EAAAi+O,qBAAAziL,EAAAF,EAAA,YAAAt7D,EAAAk+O,8BAAA1iL,EAAAF,EAAA,YAAAt7D,EAAAk+O,8BAAAjkN,EAAA2hN,gBAAApgL,EAAAF,EAAA,cAAAt7D,EAAAk+O,8BAAAl+O,EAAAm+O,gBAAAjyN,WAAA6+E,EAAA9wE,EAAAvpB,QAAA,EAAAwtO,6BAAA,SAAAxkL,OAAAzsB,QAAAysB,EAAAzsB,QAAA,GAAAysB,EAAAp9C,KAAAoiB,IAAApiB,KAAAD,IAAAq9C,EAAAhnD,QAAAnL,KAAAq2O,QAAAthO,KAAAD,IAAAq9C,EAAA/mD,QAAApL,KAAAs2O,UAAAvhO,KAAAM,MAAArV,KAAAmjB,QAAA4wN,qBAAA/zO,KAAAs0O,iBAAAz6O,OAAA2mG,kBAAA,KAAAxgG,KAAA02O,qBAAA,EAAAA,oBAAA,WAAArhH,GAAAugH,GAAAvgH,GAAAxwG,aAAA7kB,KAAA42O,iBAAA52O,KAAAw2O,2BAAA,EAAAA,0BAAA,eAAArkL,EAAAnyD,KAAAsyI,GAAA50D,cAAA3qB,EAAAZ,EAAA,UAAAnyD,KAAA02O,qBAAA3jL,EAAAZ,EAAA,WAAAnyD,KAAA02O,qBAAA3jL,EAAAZ,EAAA,cAAAnyD,KAAA02O,qBAAA3jL,EAAAZ,EAAA,YAAAnyD,KAAA22O,8BAAA5jL,EAAAZ,EAAA,YAAAnyD,KAAA22O,8BAAA5jL,EAAAZ,EAAA,cAAAnyD,KAAA22O,6BAAA,EAAAF,kBAAA,SAAAtkL,EAAA75C,QAAA,SAAA65C,EAAA8jL,aAAA9jL,GAAAnyD,KAAAs0O,iBAAAh8N,EAAAtY,KAAAmjB,QAAAkxN,eAAApgL,EAAA/7D,SAAA,cAAA8H,KAAA62O,cAAA5iL,EAAA/7D,SAAAogB,EAAA,wBAAAtY,KAAA62O,eAAA5iL,EAAAohE,EAAA,UAAAr1H,MAAAi0D,EAAA76D,EAAA,YAAA4G,KAAA82O,eAAA,IAAA5+O,SAAAq4K,UAAAulE,IAAA,WAAA59O,SAAAq4K,UAAA91H,OAAA,IAAA5gD,OAAA22K,eAAAC,iBAAA,OAAAt+G,GAAA,GAAA4kL,aAAA,SAAA5kL,EAAA75C,GAAA,IAAA85C,EAAAs/K,IAAA,EAAAt4O,GAAAi8H,GAAAjoB,EAAA,cAAAptG,KAAA,CAAAylC,IAAAntB,IAAAtY,KAAAs0O,iBAAArgL,EAAA/7D,SAAA,WAAA+6O,IAAA7gL,EAAApyD,KAAAmjB,QAAAgvC,GAAA1kC,EAAA4nG,EAAAjjE,EAAAqhL,WAAA,GAAAhmN,EAAA4nG,EAAAjjE,EAAAmhL,YAAA,GAAAlG,GAAAh6F,OAAArzI,KAAAmyD,GAAAnyD,KAAAg3O,eAAA1nM,EAAA,CAAA8uH,SAAAp+J,KAAA1H,KAAA,QAAAkiC,cAAAliB,KAAAtY,KAAAi3O,UAAA,EAAAC,iBAAA,cAAAhG,GAAA,CAAAlxO,KAAAq2O,OAAAnF,GAAA/lO,QAAAnL,KAAAs2O,OAAApF,GAAA9lO,QAAAulO,KAAA,QAAAx+K,EAAAj6D,SAAAi/O,iBAAAjG,GAAA/lO,QAAA+lO,GAAA9lO,SAAAkN,EAAA65C,OAAAmwB,aAAAnwB,IAAAmwB,WAAA60J,iBAAAjG,GAAA/lO,QAAA+lO,GAAA9lO,YAAAkN,KAAA65C,EAAA,GAAAkjE,EAAAlkG,WAAAgD,GAAA++M,iBAAA/gL,GAAA75C,EAAA,MAAAA,EAAA6b,IAAA7b,EAAA6b,GAAA6+M,YAAA,CAAA7nO,QAAA+lO,GAAA/lO,QAAAC,QAAA8lO,GAAA9lO,QAAAi5B,OAAA8tB,EAAAq8K,OAAAl2N,MAAAtY,KAAAmjB,QAAAywN,eAAA,YAAAt7N,GAAA65C,EAAA75C,GAAA6Y,YAAA0/M,IAAA,GAAAgG,aAAA,SAAA1kL,GAAA,GAAA8+K,GAAA,KAAA7+K,GAAA95C,EAAAtY,KAAAmjB,SAAAgxN,kBAAA3wI,EAAAlrF,EAAA87N,eAAA37O,EAAA05D,EAAAzsB,QAAAysB,EAAAzsB,QAAA,GAAAysB,EAAAzoB,EAAA0rF,GAAA/vE,EAAA+vE,GAAA,GAAA1iG,EAAA0iG,GAAA1rF,KAAAhX,EAAAqhC,EAAAqhE,GAAA1rF,KAAArxB,EAAAC,EAAA45N,IAAAT,IAAArlN,EAAAqlN,IAAA/+M,GAAAj6B,EAAA0S,QAAA8lO,GAAA9lO,QAAAq4F,EAAAp/F,IAAAsuB,GAAA,IAAApa,IAAA,GAAA4nF,GAAA,OAAAxtE,GAAA,GAAAqhC,GAAAt7D,EAAA2S,QAAA6lO,GAAA7lO,QAAAo4F,EAAAn/F,IAAA0vD,GAAA,IAAAz7C,IAAA,GAAA4nF,GAAA,OAAAnsC,GAAA,OAAAs5K,GAAAh6F,SAAAq+F,GAAA,IAAAt/K,GAAAr9C,KAAAoiB,IAAApiB,KAAAD,IAAArc,EAAA0S,QAAAnL,KAAAq2O,QAAAthO,KAAAD,IAAArc,EAAA2S,QAAApL,KAAAs2O,SAAAlkL,EAAA,OAAApyD,KAAA82O,aAAA3kL,GAAA,GAAAijE,IAAA1rF,KAAApxB,GAAAoa,GAAAy+M,IAAA,GAAAznM,EAAAqpB,GAAAgB,GAAAm5C,IAAA,IAAAxjE,EAAA,CAAAhX,EAAA,EAAAg/B,EAAA,EAAA/4D,EAAA,EAAA0f,EAAA,EAAAC,EAAAoa,EAAAqgC,EAAAgB,GAAArqB,EAAA,UAAAhC,OAAAgC,EAAAhX,EAAA,KAAAgV,OAAAgC,EAAAgoB,EAAA,KAAAhqB,OAAAgC,EAAA/wC,EAAA,KAAA+uC,OAAAgC,EAAArxB,EAAA,KAAAqvB,OAAAgC,EAAApxB,EAAA,KAAAovB,OAAAgC,EAAAqpB,EAAA,KAAAh9B,EAAAq/F,EAAA,kBAAA1rF,GAAA3T,EAAAq/F,EAAA,eAAA1rF,GAAA3T,EAAAq/F,EAAA,cAAA1rF,GAAA3T,EAAAq/F,EAAA,YAAA1rF,GAAAynM,GAAAz+M,EAAAw6E,GAAAn5C,EAAAm9K,GAAAz4O,GAAA05D,EAAAm9K,YAAAn9K,EAAA5tB,gBAAA,GAAAyyM,aAAA,eAAA5hH,EAAA,KAAAjjE,EAAAnyD,KAAAmjB,QAAA+wN,eAAAh8O,SAAAi4B,KAAA/2B,EAAAkf,EAAA6jG,EAAAkZ,GAAA,EAAA68G,IAAA,EAAA//K,GAAAC,EAAApyD,KAAAmjB,QAAA,GAAA+uN,GAAA,KAAAT,GAAAt/K,EAAA,WAAAp8B,EAAA07M,GAAA,sBAAA17M,EAAA07M,GAAA,cAAAA,KAAAv5O,UAAAu5O,MAAAtgN,WAAAsgN,KAAAv5O,SAAAi4B,MAAAshN,KAAAv5O,SAAAqgB,iBAAAk5N,KAAAv5O,WAAAu5O,GAAAvE,KAAA50N,EAAA5R,KAAA+qO,GAAA3jO,UAAAwK,EAAA7R,MAAAgrO,GAAArrM,YAAAqrM,GAAAvE,IAAAhtI,GAAA9zE,EAAAqlN,GAAA,CAAAhkN,EAAA2nG,EAAAC,EAAA1jF,WAAA,GAAAygB,EAAAmhL,YAAA,GAAA9lN,EAAA2nG,EAAAhjE,EAAA6hL,eAAA,GAAAxmN,EAAA2nG,EAAAhjE,EAAAqhL,WAAA,GAAA19M,EAAAq/F,EAAA,iBAAAr/F,EAAAq/F,EAAA,gBAAAr/F,EAAAq/F,EAAA,2BAAAr/F,EAAAq/F,EAAA,YAAAr/F,EAAAq/F,EAAA,MAAA98G,EAAA5R,KAAAqvB,EAAAq/F,EAAA,OAAA98G,EAAA7R,MAAAsvB,EAAAq/F,EAAA,QAAA98G,EAAAtL,OAAA+oB,EAAAq/F,EAAA,SAAA98G,EAAAnK,QAAA4nB,EAAAq/F,EAAA,iBAAAr/F,EAAAq/F,EAAA,WAAA88G,GAAA,oBAAAn8M,EAAAq/F,EAAA,mBAAAr/F,EAAAq/F,EAAA,wBAAAi4G,GAAAhtE,MAAAjrC,EAAAjjE,EAAA/hC,YAAAglG,GAAAr/F,EAAAq/F,EAAA,mBAAAg8G,GAAAl4N,SAAAk8G,EAAAn5F,MAAAjvB,OAAA,SAAAqkO,GAAAn4N,SAAAk8G,EAAAn5F,MAAA9tB,QAAA,WAAA2oO,aAAA,SAAA3kL,EAAA75C,GAAA,IAAA85C,EAAApyD,KAAAwjG,EAAArxC,EAAA2uJ,aAAAroN,EAAA25D,EAAAjvC,QAAAiqF,EAAA,YAAAptG,KAAA,CAAAylC,IAAA0sB,IAAAk7K,GAAAY,cAAAjuO,KAAAu2O,WAAAnpI,EAAA,aAAAptG,MAAAqtO,GAAAY,iBAAA1wH,EAAApkH,EAAAk8H,IAAA+hH,gBAAA,MAAA75H,EAAA0gD,WAAA,EAAA1gD,EAAAthF,MAAA,kBAAAj8B,KAAAq3O,aAAA5pN,EAAA8vF,EAAAv9G,KAAAmjB,QAAAqwN,aAAA,GAAAnG,GAAA5nL,MAAA83D,GAAAnrD,EAAAklL,QAAAxB,IAAA,WAAA1oI,EAAA,QAAAh7C,GAAAi7K,GAAAY,gBAAA77K,EAAAjvC,QAAAmwN,mBAAAl6O,EAAA8wF,aAAAqzB,EAAA8X,GAAAjjE,EAAAilL,aAAA/nM,EAAA,CAAA8uH,SAAAhsG,EAAA95D,KAAA,cAAAggB,GAAAmV,EAAA4nG,EAAA58H,EAAAg7O,WAAA,GAAAn7N,GAAAq5N,IAAA,EAAAv/K,EAAAmlL,QAAAp3N,YAAAiyC,EAAA8kL,iBAAA,MAAAnkL,EAAA76D,SAAA,UAAAk6D,EAAAmkL,SAAAxjL,EAAA76D,SAAA,WAAAk6D,EAAAmkL,SAAAxjL,EAAA76D,SAAA,cAAAk6D,EAAAmkL,SAAA/yI,MAAAg0I,cAAA,OAAA/+O,EAAAotM,SAAAptM,EAAAotM,QAAA7gL,KAAAotC,EAAAoxC,EAAA6xB,IAAAphE,EAAA/7D,SAAA,OAAAk6D,GAAAr8B,EAAAs/F,EAAA,8BAAAq8G,IAAA,EAAAt/K,EAAAqlL,aAAA3B,GAAA1jL,EAAA2kL,aAAAx0O,KAAA6vD,EAAA95C,EAAA65C,IAAA8B,EAAA/7D,SAAA,cAAAk6D,GAAAi+K,IAAA,EAAAn0H,GAAAnmF,EAAA79B,SAAAi4B,KAAA,wBAAA6iN,YAAA,SAAA5gL,GAAA,IAAAoxC,EAAA/qG,EAAAixC,EAAAyoB,EAAAz/B,EAAA1yB,KAAAsyI,GAAAv+E,EAAA3B,EAAA/tB,OAAA/rB,EAAAtY,KAAAmjB,QAAAvD,EAAAtH,EAAA29I,MAAAt9J,EAAA00O,GAAAh6F,OAAAn3B,EAAA+uB,KAAArrH,EAAAvH,EAAAC,EAAAo0G,KAAAz4D,EAAAq8K,IAAA33O,EAAAo6D,EAAA/yD,KAAA6xD,GAAA,MAAAkgL,GAAA,aAAA3/K,EAAA7tB,gBAAA6tB,EAAAk9K,YAAAl9K,EAAA7tB,iBAAAwvB,EAAA44K,EAAA54K,EAAAz7C,EAAA2lJ,UAAAvrI,GAAA,GAAAwD,EAAA,YAAAm3M,GAAAY,cAAA,OAAAp8K,EAAA,GAAAwjE,EAAAtzH,SAAAqwD,EAAA/tB,SAAA0vB,EAAAo+E,UAAAp+E,EAAAohL,YAAAphL,EAAAqhL,YAAAriL,EAAA2kL,wBAAA3jL,EAAA,OAAAm5K,GAAA,MAAAyE,IAAA,EAAAh5O,IAAA2f,EAAAwtH,WAAA5pB,EAAA7jG,IAAA5f,EAAAwgF,IAAA7/E,GAAAk3O,KAAAtwO,YAAAwvO,YAAAvkG,GAAAwnG,UAAAzyO,KAAArH,EAAA08H,EAAAjjE,KAAAxyC,EAAA+yN,SAAA3yO,KAAArH,EAAA08H,EAAAjjE,IAAA,IAAA1oB,EAAA,aAAA1pC,KAAAg2O,cAAA5jL,EAAA2B,GAAAyvC,EAAA2Y,EAAAkZ,GAAAn/F,EAAA,iBAAAm3M,GAAAY,cAAA,OAAAp8K,EAAA,GAAAp5D,EAAA,OAAAwgF,EAAA7/E,EAAAgL,IAAApE,KAAAq3O,aAAAnhN,EAAA,UAAAm3M,GAAAY,gBAAA8B,EAAA32O,EAAA8wF,aAAAmrC,EAAA06G,GAAA32O,EAAAg3B,YAAAilG,IAAA63G,GAAA,QAAA10N,EAAA80N,EAAA56M,EAAApa,EAAA2lJ,aAAA,SAAA9rG,EAAA75C,EAAA85C,GAAA,OAAAA,EAAA+pD,EAAAmxH,EAAAl7K,EAAAkgF,GAAAlgF,EAAAjvC,QAAA86I,YAAA3lJ,EAAA65C,EAAAhnD,QAAAinD,EAAAzrD,MAAA,IAAAwrD,EAAAhnD,SAAAinD,EAAAzrD,OAAAwrD,EAAA/mD,QAAAgnD,EAAAxrD,QAAAurD,EAAAhnD,SAAAinD,EAAA3rD,KAAA0rD,EAAAhnD,QAAAinD,EAAAzrD,OAAAwrD,EAAA/mD,QAAAgnD,EAAA1rD,KAAAyrD,EAAAhnD,SAAAinD,EAAAzrD,OAAAwrD,EAAA/mD,QAAAgnD,EAAAxrD,OAAA,IAAAwrD,EAAA1oB,EAAA1pC,QAAAwY,EAAA25H,SAAA,IAAA35H,IAAA68G,EAAA,OAAA63G,GAAA,OAAAn5K,EAAAv7C,GAAAka,IAAA0/B,EAAA/tB,OAAA7rB,EAAAu7C,KAAA37C,EAAA+jG,EAAApoD,KAAA,IAAAuhL,GAAAl8O,EAAAs5B,EAAA2iG,EAAA7xB,EAAAzvC,EAAA37C,EAAAg6C,IAAA2B,GAAA,OAAA3vD,IAAAoU,KAAAqpE,YAAAnvD,EAAAw3D,aAAAmrC,EAAA78G,EAAAqpE,aAAAnvD,EAAAtC,YAAAilG,GAAAp8C,EAAAvmD,EAAAkC,IAAAs4M,GAAA,WAAA10N,GAAA,SAAA25C,EAAA75C,EAAA85C,GAAA,OAAAA,EAAA+pD,EAAAixH,EAAAh7K,EAAAkgF,GAAA,EAAAlgF,EAAAjvC,SAAA,IAAA7K,EAAA65C,EAAAhnD,QAAAinD,EAAA3rD,KAAA,IAAA0rD,EAAA/mD,QAAAgnD,EAAA1rD,KAAAyrD,EAAAhnD,QAAAinD,EAAAzrD,MAAAwrD,EAAA/mD,QAAAgnD,EAAA1rD,IAAA,IAAAyrD,EAAA/mD,QAAAgnD,EAAAxrD,QAAAurD,EAAAhnD,QAAAinD,EAAA3rD,IAAA,EAAA2rD,EAAA1oB,EAAA1pC,MAAA,KAAA+oB,EAAAqkN,EAAA16M,EAAA,EAAApa,GAAA,MAAA+8G,EAAA,OAAA63G,GAAA,MAAA90N,EAAA+jG,EAAApoD,EAAAhrC,IAAA,IAAAusN,GAAAl8O,EAAAs5B,EAAA2iG,EAAA7xB,EAAAzvC,EAAA37C,EAAAg6C,GAAA,UAAAhuD,IAAAsuB,EAAAw3D,aAAAmrC,EAAAtsG,GAAAkwD,EAAAvmD,EAAAkC,IAAAs4M,GAAA,WAAAn5K,EAAA5iC,aAAAuB,EAAA,KAAA2yB,EAAAqM,EAAArtD,EAAAmU,EAAAJ,EAAA+jG,EAAApoD,GAAA3nC,EAAAipG,EAAAlkG,aAAAuB,EAAAuD,KAAAo/F,EAAA8c,UAAA9c,EAAA2/G,QAAAxxI,EAAA73E,EAAAooC,EAAAo+E,UAAAp+E,EAAAihL,QAAA58N,EAAAwd,GAAAu8B,EAAAzoB,GAAAzT,EAAAxvB,KAAAwvB,EAAAvvB,IAAAkZ,EAAAuyC,EAAAl8B,EAAAtvB,MAAAsvB,EAAArvB,OAAA4R,EAAA25C,EAAAl8B,EAAAjpB,MAAAipB,EAAA9nB,OAAA4a,EAAAopC,EAAAxmC,EAAAllB,KAAAklB,EAAAjlB,IAAAuvB,EAAAk8B,EAAAxmC,EAAAhlB,MAAAglB,EAAA/kB,OAAA+kB,EAAAwmC,EAAAxmC,EAAA3e,MAAA2e,EAAAxd,SAAAynB,IAAA7M,GAAAnJ,IAAAqW,GAAAL,EAAApd,EAAA,IAAAuQ,EAAA4C,EAAA,IAAAiK,EAAA8T,EAAA,aAAA3gB,GAAAvQ,EAAAsd,EAAAi+B,EAAA,cAAAj+B,EAAAu/F,EAAA,cAAA78G,EAAA1K,eAAA,KAAAwjO,KAAAv9K,IAAArC,EAAAt5C,EAAAwd,GAAAi8M,IAAA,EAAAC,IAAA77M,GAAA3d,EAAA86N,YAAAhnN,GAAA,KAAAi5B,EAAA,SAAA8M,EAAA75C,EAAA85C,EAAAoxC,EAAA/qG,EAAAixC,EAAAhX,EAAAqhC,GAAA,IAAAn0C,EAAA4jF,EAAArxC,EAAA/mD,QAAA+mD,EAAAhnD,QAAAxS,EAAA6qG,EAAApxC,EAAAjkD,OAAAikD,EAAAplD,MAAAmlD,EAAAqxC,EAAApxC,EAAA1rD,IAAA0rD,EAAA3rD,KAAA+8F,IAAApxC,EAAAxrD,OAAAwrD,EAAAzrD,MAAAyrD,GAAA,MAAA1/B,EAAA,GAAAqhC,GAAAy9K,GAAA74O,EAAAF,GAAA,GAAAo5O,SAAA,IAAAN,GAAAp/K,EAAAx5D,EAAA+wC,EAAA,EAAA9pB,IAAA4jF,EAAA7qG,EAAA+wC,EAAA,IAAAmoM,GAAAz/K,GAAA,cAAAm/K,GAAA3xN,EAAAuyC,EAAAq/K,GAAAhuI,EAAAguI,GAAA5xN,EAAA,OAAA2xN,QAAA,GAAAp/K,EAAAx5D,GAAA,EAAAF,GAAA,EAAAmnB,KAAA4jF,EAAA7qG,GAAA,EAAAF,GAAA,kBAAA05D,GAAA,OAAAllB,EAAAooF,GAAApoF,EAAAklB,GAAA,MAAA75C,GAAA,OAAA85C,KAAA1/B,KAAA9S,EAAAuyC,EAAAx5D,EAAA+wC,EAAA,GAAA85D,EAAA7qG,EAAA+wC,EAAA,EAAA9pB,GAAAuyC,EAAAx5D,EAAA,EAAAinB,EAAA,QAAAwyC,EAAA2B,EAAA37C,EAAAsxB,EAAAzT,EAAA,EAAA3d,EAAA66N,cAAA,MAAA76N,EAAA+6N,sBAAA/6N,EAAA66N,cAAA76N,EAAA+6N,sBAAAvB,GAAAR,KAAAv9K,IAAA,QAAA56D,EAAA8zC,EAAAooF,IAAAhxH,EAAA40E,EAAAv2C,SAAAvpC,GAAAksD,MAAA,SAAAtvB,EAAA1xB,EAAA,YAAAA,IAAA+wH,KAAA,OAAA/vE,GAAAhhD,IAAA0vD,EAAA,OAAAm5K,GAAA,GAAAqE,GAAAlsL,EAAA,IAAA15B,GAAA2lN,GAAAv9K,GAAA4jL,mBAAAvrN,GAAA,WAAA6J,EAAAq/M,GAAAl8O,EAAAs5B,EAAA2iG,EAAA7xB,EAAAzvC,EAAA37C,EAAAg6C,EAAAhmC,EAAA,IAAAi5B,IAAA,WAAApvB,IAAA,IAAAA,IAAA7J,EAAA,IAAA6J,GAAA87M,IAAA,EAAAptN,WAAAkxN,GAAA,IAAAzxO,IAAAgoB,IAAAT,EAAA+G,EAAAtC,YAAAilG,GAAAthE,EAAA5iC,WAAA+4D,aAAAmrC,EAAAjpG,EAAAT,EAAAooC,GAAAv7C,GAAA1Y,EAAA0Y,EAAA,EAAAuQ,EAAAvQ,EAAA1K,WAAAmrE,EAAAo8C,EAAAlkG,gBAAA,IAAAugC,GAAAogL,KAAAN,GAAAz8N,KAAAD,IAAA48C,EAAAyqD,EAAApoD,GAAAn+B,KAAAhB,IAAAs4M,GAAA,MAAAx6M,EAAA3wB,SAAAszH,GAAA,OAAA63G,GAAA,qBAAAh3M,EAAAi8B,EAAA75C,GAAA80F,EAAAj7C,EAAAY,EAAAlnC,EAAA,CAAA4Z,IAAA2sB,EAAAwlL,QAAA17H,EAAAg+C,KAAAxwH,EAAA,wBAAAixH,OAAAliK,EAAAo/O,SAAAr0I,EAAAs0I,WAAA1/N,EAAA2/N,QAAA1/N,EAAA2/N,aAAA/jL,EAAA5vB,OAAA0vB,EAAAkkL,UAAA/K,EAAAqI,OAAA,SAAApjL,EAAA75C,GAAA,OAAAg9N,GAAAl8O,EAAAs5B,EAAA2iG,EAAA7xB,EAAArxC,EAAAgqD,EAAAhqD,GAAAC,EAAA95C,EAAA,EAAA4/N,QAAAtjN,GAAAtc,GAAA,UAAAlU,IAAA8xB,EAAA,4BAAA68B,EAAAyhL,wBAAAzhL,IAAAkB,KAAAugL,uBAAA,UAAAtH,EAAA/6K,GAAA,OAAAj8B,EAAA,qBAAAiiN,UAAAhmL,QAAA+pD,EAAAvjH,EAAA0+O,aAAA1+O,EAAAy/O,WAAArlL,OAAAkB,IAAAxmC,EAAA4nG,GAAAi7G,IAAA33O,GAAAwqB,QAAAowN,YAAA,GAAA9lN,EAAA4nG,EAAA/8G,EAAAi7N,YAAA,IAAAjD,KAAAv9K,OAAAs6K,GAAAh6F,OAAAi9F,GAAAv9K,MAAAs6K,GAAAh6F,QAAAi9F,QAAA,MAAAr8K,IAAAlB,MAAA2kL,sBAAA3jL,GAAAhB,EAAA8hL,YAAA,WAAA3+M,EAAA,6BAAA68B,EAAA2kL,sBAAA,QAAA3kL,IAAAkB,MAAA4gL,aAAA5gL,EAAAyjL,sBAAA,QAAA3jL,IAAAshE,MAAA8c,UAAAp+E,IAAArhC,IAAAqhC,EAAAo+E,YAAAm/F,GAAA,MAAAh5N,EAAAs7N,gBAAAxhL,EAAAo8K,QAAAz6K,IAAA77D,WAAAm9H,EAAAlkG,WAAAgD,GAAA++M,iBAAA9gL,EAAA/tB,QAAA8tB,GAAA2gL,GAAA1gL,KAAA95C,EAAAs7N,gBAAAxhL,EAAA9G,iBAAA8G,EAAA9G,kBAAAuG,GAAA,WAAAj9B,IAAA2kG,GAAAtsF,EAAAooF,GAAAo7G,GAAAxjM,EAAAooF,EAAA/8G,EAAA2lJ,WAAA3uH,EAAA,CAAA8uH,SAAArrG,EAAAz6D,KAAA,SAAAq2O,KAAAj8M,EAAAm8M,SAAAt1G,GAAAw1G,kBAAA0B,GAAAj2M,cAAA43B,GAAA,GAAAslL,sBAAA,KAAAW,eAAA,WAAAtlL,EAAA76D,SAAA,YAAA8H,KAAA62O,cAAA9jL,EAAA76D,SAAA,YAAA8H,KAAA62O,cAAA9jL,EAAA76D,SAAA,cAAA8H,KAAA62O,cAAA9jL,EAAA76D,SAAA,WAAA46O,IAAA//K,EAAA76D,SAAA,YAAA46O,IAAA//K,EAAA76D,SAAA,YAAA46O,GAAA,EAAAwF,aAAA,eAAAnmL,EAAAnyD,KAAAsyI,GAAA50D,cAAA3qB,EAAAZ,EAAA,UAAAnyD,KAAAu2O,SAAAxjL,EAAAZ,EAAA,WAAAnyD,KAAAu2O,SAAAxjL,EAAAZ,EAAA,YAAAnyD,KAAAu2O,SAAAxjL,EAAAZ,EAAA,cAAAnyD,KAAAu2O,SAAAxjL,EAAA76D,SAAA,cAAA8H,KAAA,EAAAu2O,QAAA,SAAApkL,GAAA,IAAA75C,EAAAtY,KAAAsyI,GAAAlgF,EAAApyD,KAAAmjB,QAAAo2G,GAAAtsF,EAAAooF,GAAAo7G,GAAAxjM,EAAAooF,EAAAjjE,EAAA6rG,WAAA7wD,EAAA,OAAAptG,KAAA,CAAAylC,IAAA0sB,IAAA8mB,EAAAo8C,KAAAlkG,WAAAooG,GAAAtsF,EAAAooF,GAAAo7G,GAAAxjM,EAAAooF,EAAAjjE,EAAA6rG,WAAAovE,GAAAY,gBAAA4D,GAAAC,GAAAJ,IAAA,EAAAjpN,cAAAzoB,KAAAu3O,SAAA1yN,aAAA7kB,KAAA42O,iBAAAb,GAAA/1O,KAAAs3O,SAAAvB,GAAA/1O,KAAAy3O,cAAAz3O,KAAAs0O,kBAAAvhL,EAAA76D,SAAA,OAAA8H,MAAA+yD,EAAAz6C,EAAA,YAAAtY,KAAA82O,eAAA92O,KAAAq4O,iBAAAr4O,KAAAs4O,eAAAp8H,GAAAnmF,EAAA79B,SAAAi4B,KAAA,kBAAA4F,EAAAs/F,EAAA,gBAAAljE,IAAAk+K,KAAAl+K,EAAAm9K,YAAAn9K,EAAA5tB,iBAAA6tB,EAAAuhL,YAAAxhL,EAAA7G,mBAAA8pE,KAAAjkG,YAAAikG,EAAAjkG,WAAAd,YAAA+kG,IAAAh8H,IAAA6/E,GAAAq3J,IAAA,UAAAA,GAAAd,cAAAjyH,KAAApsF,YAAAosF,EAAApsF,WAAAd,YAAAktF,GAAA8X,IAAAr1H,KAAAs0O,iBAAAvhL,EAAAsiE,EAAA,UAAAr1H,MAAA41O,GAAAvgH,KAAAp5F,MAAA,kBAAAo0M,KAAAqB,IAAAjkN,EAAA4nG,GAAAi7G,IAAAtwO,MAAAmjB,QAAAowN,YAAA,GAAA9lN,EAAA4nG,EAAAr1H,KAAAmjB,QAAAqwN,aAAA,GAAAlkM,EAAA,CAAA8uH,SAAAp+J,KAAA1H,KAAA,WAAAq2O,KAAA11J,EAAA41J,SAAA,KAAAE,kBAAA,KAAAv0M,cAAA23B,IAAA/4D,IAAA6/E,GAAA,GAAAsgD,KAAAjqF,EAAA,CAAAk/L,OAAAv1J,EAAA3gF,KAAA,MAAAq2O,KAAA11J,EAAA21J,OAAAx1O,EAAAohC,cAAA23B,IAAA7iB,EAAA,CAAA8uH,SAAAp+J,KAAA1H,KAAA,SAAAq2O,KAAA11J,EAAAz+C,cAAA23B,IAAA7iB,EAAA,CAAAk/L,OAAAv1J,EAAA3gF,KAAA,OAAAq2O,KAAA11J,EAAA21J,OAAAx1O,EAAAohC,cAAA23B,IAAA7iB,EAAA,CAAA8uH,SAAAp+J,KAAA1H,KAAA,OAAAq2O,KAAA11J,EAAAz+C,cAAA23B,KAAAm+K,OAAA/4I,QAAAgiC,KAAAi3G,IAAA,GAAAj3G,KAAAjqF,EAAA,CAAA8uH,SAAAp+J,KAAA1H,KAAA,SAAAq2O,KAAA11J,EAAAz+C,cAAA23B,IAAA7iB,EAAA,CAAA8uH,SAAAp+J,KAAA1H,KAAA,OAAAq2O,KAAA11J,EAAAz+C,cAAA23B,KAAAk7K,GAAAh6F,SAAA,MAAA9Z,KAAA,IAAAA,QAAAi3G,GAAAC,GAAA5rI,IAAAv1D,EAAA,CAAA8uH,SAAAp+J,KAAA1H,KAAA,MAAAq2O,KAAA11J,EAAAz+C,cAAA23B,IAAAnyD,KAAAu3F,WAAAv3F,KAAAi3O,UAAA,EAAAA,SAAA,WAAA7pI,EAAA,UAAAptG,MAAA5G,EAAAi8H,EAAAp8C,EAAAm8C,EAAA26G,EAAAxyH,EAAA0yH,EAAAE,EAAAc,GAAAC,GAAAb,GAAA92G,GAAAk3G,GAAAD,GAAA3rI,GAAAysI,GAAAC,GAAAjB,GAAArlG,GAAAoiG,GAAAn/D,QAAAm/D,GAAAhtE,MAAAgtE,GAAA5nL,MAAA4nL,GAAAh6F,OAAA,KAAA2+F,GAAAnwO,SAAA,SAAAswD,KAAA0uB,SAAA,KAAAmxJ,GAAAt5O,OAAAy4O,GAAAjkI,GAAA,GAAAqrI,YAAA,SAAApmL,GAAA,OAAAA,EAAAzsD,MAAA,yBAAA1F,KAAAu2O,QAAApkL,GAAA,qCAAAkjE,IAAAr1H,KAAAgzO,YAAA7gL,GAAA,SAAAA,KAAA2uJ,eAAA3uJ,EAAA2uJ,aAAA03B,WAAA,QAAArmL,EAAAm9K,YAAAn9K,EAAA5tB,gBAAA,EAAA4tB,IAAA,wBAAAA,EAAA5tB,iBAAA,EAAAiyI,QAAA,mBAAArkH,EAAA75C,EAAA,GAAA85C,EAAApyD,KAAAsyI,GAAA5vG,SAAA8gE,EAAA,EAAA/qG,EAAA25D,EAAA15D,OAAAgxC,EAAA1pC,KAAAmjB,QAAAqgF,EAAA/qG,EAAA+qG,IAAAmpI,EAAAx6K,EAAAC,EAAAoxC,GAAA95D,EAAAu0H,UAAAj+J,KAAAsyI,IAAA,IAAAh6H,EAAAzX,KAAAsxD,EAAA2lB,aAAApuC,EAAAmqM,aAAA,SAAA1hL,GAAA,QAAA75C,EAAA65C,EAAAhhB,QAAAghB,EAAAryB,UAAAqyB,EAAAxhC,IAAAwhC,EAAA5vC,KAAA4vC,EAAAo2B,YAAAn2B,EAAA95C,EAAA5f,OAAA8qG,EAAA,EAAApxC,KAAAoxC,GAAAlrF,EAAAu8C,WAAAzC,GAAA,OAAAoxC,EAAA/yF,SAAA,KAAA0hD,IAAA,OAAA75C,CAAA,EAAAo0G,KAAA,SAAAv6D,EAAA75C,GAAA,IAAA85C,EAAA,GAAAoxC,EAAAxjG,KAAAsyI,GAAAtyI,KAAAw2K,UAAA30K,SAAA,SAAAswD,EAAA75C,GAAAq0N,EAAAr0N,EAAAkrF,EAAA9gE,SAAApqB,GAAAtY,KAAAmjB,QAAA86I,UAAAz6D,GAAA,KAAApxC,EAAAD,GAAA75C,EAAA,GAAAtY,MAAAsY,GAAAtY,KAAAw0O,wBAAAriL,EAAAtwD,SAAA,SAAAswD,GAAAC,EAAAD,KAAAqxC,EAAAnzE,YAAA+hC,EAAAD,IAAAqxC,EAAApzE,YAAAgiC,EAAAD,IAAA,IAAA75C,GAAAtY,KAAA60O,YAAA,EAAAt9I,KAAA,eAAAplC,EAAAnyD,KAAAmjB,QAAAkzK,MAAAlkI,KAAAz6D,KAAAy6D,EAAAz6D,IAAAsI,KAAA,EAAA8vE,QAAA,SAAA3d,EAAA75C,GAAA,OAAAq0N,EAAAx6K,EAAA75C,GAAAtY,KAAAmjB,QAAA86I,UAAAj+J,KAAAsyI,IAAA,IAAAr/F,OAAA,SAAAkf,EAAA75C,GAAA,IAAA85C,EAAApyD,KAAAmjB,QAAA,YAAA7K,EAAA,OAAA85C,EAAAD,GAAA,IAAAqxC,EAAAqqI,EAAAM,aAAAnuO,KAAAmyD,EAAA75C,GAAA85C,EAAAD,QAAA,IAAAqxC,IAAAlrF,EAAA,UAAA65C,GAAAqgL,GAAApgL,EAAA,EAAA84B,QAAA,WAAAkiB,EAAA,UAAAptG,MAAA,IAAAmyD,EAAAnyD,KAAAsyI,GAAAngF,EAAAh+B,GAAA,KAAA4+B,EAAAZ,EAAA,YAAAnyD,KAAAu0O,aAAAxhL,EAAAZ,EAAA,aAAAnyD,KAAAu0O,aAAAxhL,EAAAZ,EAAA,cAAAnyD,KAAAu0O,aAAAv0O,KAAAs0O,kBAAAvhL,EAAAZ,EAAA,WAAAnyD,MAAA+yD,EAAAZ,EAAA,YAAAnyD,OAAAiS,MAAAlS,UAAA8B,QAAAmjB,KAAAmtC,EAAAsmL,iBAAA,yBAAAtmL,KAAAilL,gBAAA,gBAAAp3O,KAAAu2O,UAAAv2O,KAAAw2O,4BAAA5E,GAAAnwO,OAAAmwO,GAAA94O,QAAAkH,KAAAsyI,IAAA,GAAAtyI,KAAAsyI,GAAAngF,EAAA,MAAAklL,WAAA,WAAAlH,IAAA/iI,EAAA,YAAAptG,MAAAqtO,GAAAY,gBAAAl4M,EAAAwnF,EAAA,kBAAAv9G,KAAAmjB,QAAAmwN,mBAAA/1H,EAAApsF,YAAAosF,EAAApsF,WAAAd,YAAAktF,GAAA4yH,GAAA,KAAAiI,WAAA,SAAAjmL,GAAA,UAAAA,EAAAq9K,YAAAW,IAAA/iI,EAAA,YAAAptG,MAAAqtO,GAAAY,gBAAA54G,EAAAlkG,YAAA/3B,GAAA4G,KAAAmjB,QAAA8yI,MAAA48E,YAAA9C,EAAA32O,EAAA8wF,aAAAqzB,EAAAwyH,GAAA32O,EAAAg3B,YAAAmtF,GAAAnkH,EAAA8wF,aAAAqzB,EAAA8X,GAAAr1H,KAAAmjB,QAAA8yI,MAAA48E,aAAA7yO,KAAAsnD,QAAA+tE,EAAA9X,GAAAxnF,EAAAwnF,EAAA,cAAA4yH,GAAA,IAAAnwO,KAAAq3O,YAAA,GAAApF,IAAAh+K,EAAA/7D,SAAA,sBAAAi6D,IAAAk7K,GAAAh6F,QAAAq+F,KAAAv/K,EAAAm9K,YAAAn9K,EAAA5tB,gBAAA,IAAA8oM,GAAAqL,MAAA,CAAAh9O,GAAAu4D,EAAAzpD,IAAAuoD,EAAAntD,IAAAmwB,EAAAz0B,KAAAowD,EAAAptB,GAAA,SAAA6tB,EAAA75C,GAAA,QAAAq0N,EAAAx6K,EAAA75C,EAAA65C,GAAA,IAAAxyD,OAAA,SAAAwyD,EAAA75C,GAAA,GAAA65C,GAAA75C,EAAA,QAAA85C,KAAA95C,IAAAua,eAAAu/B,KAAAD,EAAAC,GAAA95C,EAAA85C,IAAA,OAAAD,CAAA,EAAAwmL,SAAA/iN,EAAAk6C,QAAA68J,EAAA3kG,YAAAv6G,EAAAg4B,MAAAtsD,EAAAqI,MAAAyrC,EAAA2rM,SAAA9C,GAAA+C,eAAA9C,GAAA+C,gBAAAxG,GAAAyG,SAAA3L,GAAAC,GAAAh1O,IAAA,SAAA85D,GAAA,OAAAA,EAAAh+B,EAAA,EAAAk5M,GAAAS,MAAA,mBAAA37K,EAAAjxD,UAAAxI,OAAA4f,EAAA,IAAArG,MAAAkgD,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAA95C,EAAA85C,GAAAlxD,UAAAkxD,IAAA95C,IAAA,GAAArY,cAAAgS,MAAAqG,EAAA,GAAAA,GAAAzW,SAAA,SAAAswD,GAAA,IAAAA,EAAApyD,YAAAoyD,EAAApyD,UAAAE,YAAA,qEAAAynC,OAAA,GAAAj3B,SAAAuU,KAAAmtC,MAAAumL,QAAArL,GAAAqL,MAAA7sN,IAAA,GAAAwhN,GAAAqL,OAAAvmL,EAAAumL,QAAA7K,EAAAC,MAAA37K,EAAA,KAAAk7K,GAAA38N,OAAA,SAAAyhD,EAAA75C,GAAA,WAAA+0N,GAAAl7K,EAAA75C,EAAA,MAAA0gO,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAA,GAAAj6E,KAAAguE,GAAAzwN,QAAA,mBAAA28N,KAAAD,GAAAz3O,SAAA,SAAAswD,GAAA1pC,cAAA0pC,EAAAqnL,IAAA,IAAAF,GAAA,YAAAG,KAAAhxN,cAAA4wN,GAAA,KAAAK,GAAAC,GAAA/jN,GAAA,SAAAw8B,EAAAD,EAAA75C,EAAAkrF,GAAA,GAAArxC,EAAAkuF,OAAA,KAAA5nJ,EAAAixC,GAAA0oB,EAAA1sB,QAAA0sB,EAAA1sB,QAAA,GAAA0sB,GAAAjnD,QAAAunB,GAAA0/B,EAAA1sB,QAAA0sB,EAAA1sB,QAAA,GAAA0sB,GAAAhnD,QAAA2oD,EAAA5B,EAAA0oG,kBAAAj7I,EAAAuyC,EAAA2oG,YAAAniK,EAAAu0O,IAAAhxH,GAAA,EAAA+8H,KAAA3gO,IAAA2gO,GAAA3gO,EAAAihO,KAAAP,GAAA7mL,EAAAkuF,OAAA5nJ,EAAA05D,EAAAynL,UAAA,IAAAZ,QAAApkN,EAAAtc,GAAA,SAAAD,EAAA,EAAA47C,EAAA+kL,GAAA,OAAAjmL,EAAAkB,EAAAz7C,GAAAq5C,EAAAsqD,EAAAppD,IAAArsD,IAAAqiB,EAAA8oC,EAAAjrD,OAAAy+C,EAAAwM,EAAAprD,KAAAirD,EAAAG,EAAAlrD,MAAAtC,EAAAwtD,EAAA7kD,MAAAoL,EAAAy5C,EAAA1jD,OAAAie,OAAA,EAAAwJ,EAAAm9B,EAAAlvB,YAAA1qC,EAAA45D,EAAApvB,aAAAhY,EAAAoK,EAAAg9B,GAAA78B,EAAA68B,EAAA3sB,WAAAyrB,EAAAkB,EAAAjlD,UAAAmoB,EAAA88B,IAAAp6D,GAAAyzB,EAAA/nB,EAAAuxB,IAAA,SAAAjK,EAAAqrD,WAAA,WAAArrD,EAAAqrD,WAAA,YAAArrD,EAAAqrD,WAAA5+D,EAAAjf,IAAA,SAAAwyB,EAAAsrD,WAAA,WAAAtrD,EAAAsrD,WAAA,YAAAtrD,EAAAsrD,aAAA7qD,EAAA/nB,EAAAuxB,IAAA,SAAAjK,EAAAqrD,WAAA,WAAArrD,EAAAqrD,WAAA5+D,EAAAjf,IAAA,SAAAwyB,EAAAsrD,WAAA,WAAAtrD,EAAAsrD,YAAA/gD,EAAA9J,IAAArX,KAAAD,IAAA48C,EAAAhoB,IAAAqqB,GAAA79B,EAAA7xB,EAAAuxB,IAAA7gB,KAAAD,IAAAuwC,EAAA3b,IAAAqqB,KAAA79B,GAAA27B,EAAA57B,IAAAlhB,KAAAD,IAAAiU,EAAA2J,IAAAqhC,GAAAlC,EAAAz5C,EAAAjf,IAAA4b,KAAAD,IAAA0D,EAAAka,IAAAqhC,KAAAlC,GAAA,IAAAynL,GAAAjhO,GAAA,QAAAjU,EAAA,EAAAA,GAAAiU,EAAAjU,IAAAk1O,GAAAl1O,KAAAk1O,GAAAl1O,GAAA,IAAAk1O,GAAAjhO,GAAAwhO,IAAA3jN,GAAAojN,GAAAjhO,GAAAyhO,IAAAjoL,GAAAynL,GAAAjhO,GAAAi6H,KAAAv/E,IAAAumL,GAAAjhO,GAAAi6H,GAAAv/E,EAAAumL,GAAAjhO,GAAAwhO,GAAA3jN,EAAAojN,GAAAjhO,GAAAyhO,GAAAjoL,EAAAppC,cAAA6wN,GAAAjhO,GAAAmhO,KAAA,GAAAtjN,GAAA,GAAA27B,IAAAqqD,GAAA,EAAAo9H,GAAAjhO,GAAAmhO,IAAAr5N,YAAA,WAAAqjF,GAAA,IAAAxjG,KAAA+5O,OAAA1M,GAAAh6F,OAAAwjG,aAAAuC,IAAA,IAAAjnL,EAAAmnL,GAAAt5O,KAAA+5O,OAAAD,GAAAR,GAAAt5O,KAAA+5O,OAAAD,GAAAl6N,EAAA,EAAAtH,EAAAghO,GAAAt5O,KAAA+5O,OAAAF,GAAAP,GAAAt5O,KAAA+5O,OAAAF,GAAAj6N,EAAA,qBAAAnnB,GAAA,aAAAA,EAAAusB,KAAAqoN,GAAAn/D,QAAA/8I,WAAAgD,GAAA7b,EAAA65C,EAAAC,EAAAgnL,GAAAE,GAAAt5O,KAAA+5O,OAAAznG,KAAAxyI,EAAAw5O,GAAAt5O,KAAA+5O,OAAAznG,GAAAh6H,EAAA65C,EAAA,EAAA5vD,KAAA,CAAAw3O,MAAA1hO,IAAA,MAAAA,GAAA,OAAA85C,EAAA6nL,cAAA/lL,IAAAt7D,IAAAs7D,EAAAr/B,EAAAq/B,GAAA,KAAAorG,GAAAnjD,CAAA,QAAAvjH,EAAA,SAAAw5D,GAAA,IAAA75C,EAAA65C,EAAA33B,cAAA43B,EAAAD,EAAA68K,YAAAxrI,EAAArxC,EAAAw9K,OAAAl3O,EAAA05D,EAAAo+K,eAAA7mM,EAAAyoB,EAAA6+K,sBAAAt+M,EAAAy/B,EAAAu+K,mBAAAv+K,IAAAy+K,qBAAAt4N,IAAA7f,EAAA25D,GAAA35D,EAAAi6B,IAAApa,IAAAqyC,gBAAAryC,EAAAqyC,eAAAjyD,OAAA4f,EAAAqyC,eAAA,GAAAryC,IAAApgB,SAAAi/O,iBAAA7+N,EAAAnN,QAAAmN,EAAAlN,SAAA+mD,IAAA15D,MAAA65I,GAAAvwI,SAAAuW,KAAAoxB,EAAA,SAAA1pC,KAAAi6O,QAAA,CAAAtK,OAAAnsI,EAAAwrI,YAAA58K,KAAA,WAAAsvG,KAAA,UAAAw4E,KAAA,CAAAx4E,GAAA3hK,UAAA,CAAAozH,WAAA,KAAAypC,UAAA,SAAAzqG,OAAA28K,kBAAA9uO,KAAAmzH,WAAAhhE,CAAA,EAAA8nL,QAAA,SAAA9nL,GAAA,IAAA75C,EAAA65C,EAAAw9K,OAAAv9K,EAAAD,EAAA68K,YAAAhvO,KAAAo+J,SAAAo2E,wBAAApiL,KAAAoiL,yBAAAriL,EAAAi7K,EAAAptO,KAAAo+J,SAAA9rB,GAAAtyI,KAAAmzH,WAAAnzH,KAAAmjB,UAAAnjB,KAAAo+J,SAAA9rB,GAAApoD,aAAA5xE,EAAA65C,GAAAnyD,KAAAo+J,SAAA9rB,GAAAliH,YAAA9X,GAAAtY,KAAAo+J,SAAAy2E,aAAAziL,KAAAyiL,YAAA,EAAAjzO,KAAAjJ,GAAA+5B,EAAAgvI,GAAA,CAAAqsE,WAAA,kBAAAmM,GAAAn6O,UAAA,CAAAk6O,QAAA,SAAA9nL,GAAA,IAAA75C,EAAA65C,EAAAw9K,QAAAx9K,IAAA68K,aAAAhvO,KAAAo+J,UAAAo2E,wBAAAl8N,EAAA6Y,YAAA7Y,EAAA6Y,WAAAd,YAAA/X,GAAA65C,EAAA0iL,YAAA,EAAAjzO,KAAAjJ,GAAA+5B,EAAAwnN,GAAA,CAAAnM,WAAA,sBAAAoM,GAAA3sG,GAAA4sG,GAAAC,GAAA74E,GAAA5D,GAAA,GAAA08E,GAAA,GAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,WAAAC,GAAAtoL,EAAAoxC,GAAA82I,GAAAz4O,SAAA,SAAAswD,EAAA75C,MAAAkrF,EAAA9gE,SAAAyvB,EAAAwoL,eAAAvoL,EAAA+yC,OAAA7sF,GAAA,KAAAkrF,EAAAtZ,aAAA/3B,EAAA75C,GAAAkrF,EAAApzE,YAAA+hC,EAAA,aAAAyoL,KAAAh9E,GAAA/7J,SAAA,SAAAswD,OAAAioL,IAAAjoL,EAAAhhC,YAAAghC,EAAAhhC,WAAAd,YAAA8hC,EAAA,WAAAk7K,GAAAS,MAAA,wBAAA37K,IAAA,QAAAA,KAAAnyD,KAAA+7B,SAAA,CAAAskH,QAAA,EAAAw6F,yBAAA,EAAAhgF,kBAAA,GAAAC,YAAA,GAAAk/E,cAAA,GAAAh6O,KAAA,MAAAmyD,EAAAv5D,OAAA,uBAAAoH,KAAAmyD,KAAAnyD,KAAAmyD,GAAAnyD,KAAAmyD,GAAA5vD,KAAAvC,MAAA,QAAAmyD,EAAApyD,UAAA,CAAAqwO,YAAA,SAAAj+K,OAAA33B,cAAAx6B,KAAAo+J,SAAAk2E,gBAAArgL,EAAA/7D,SAAA,WAAA8H,KAAA86O,mBAAA96O,KAAAmjB,QAAAkxN,eAAApgL,EAAA/7D,SAAA,cAAA8H,KAAA+6O,2BAAA5oL,EAAAzsB,QAAAuuB,EAAA/7D,SAAA,YAAA8H,KAAA+6O,2BAAA9mL,EAAA/7D,SAAA,YAAA8H,KAAA+6O,0BAAA,EAAAC,kBAAA,SAAA7oL,OAAA33B,cAAAx6B,KAAAmjB,QAAA83N,gBAAA9oL,EAAAq8K,QAAAxuO,KAAA86O,kBAAA3oL,EAAA,EAAAvwD,KAAA,WAAA5B,KAAAo+J,SAAAk2E,gBAAAvhL,EAAA76D,SAAA,WAAA8H,KAAA86O,oBAAA/nL,EAAA76D,SAAA,cAAA8H,KAAA+6O,2BAAAhoL,EAAA76D,SAAA,YAAA8H,KAAA+6O,2BAAAhoL,EAAA76D,SAAA,YAAA8H,KAAA+6O,4BAAAtB,KAAAF,KAAA10N,aAAArM,UAAA,GAAA0iO,QAAA,WAAA9B,GAAAH,GAAAD,GAAA35E,GAAAg6E,GAAAH,GAAAC,GAAA,KAAAG,GAAA5gP,OAAA,GAAAqiP,0BAAA,SAAA5oL,GAAAnyD,KAAA86O,kBAAA3oL,GAAA,IAAA2oL,kBAAA,SAAAxiO,EAAA85C,GAAA,IAAAoxC,EAAA/qG,EAAAuH,KAAA0pC,GAAApxB,EAAAotB,QAAAptB,EAAAotB,QAAA,GAAAptB,GAAAnN,QAAAunB,GAAApa,EAAAotB,QAAAptB,EAAAotB,QAAA,GAAAptB,GAAAlN,QAAA+mD,EAAAj6D,SAAAi/O,iBAAAztM,EAAAhX,GAAA0mN,GAAA9gO,EAAA85C,GAAApyD,KAAAmjB,QAAA03N,yBAAAziO,GAAA/T,GAAA63G,GAAAy9H,GAAArhO,EAAAtY,KAAAmjB,QAAAgvC,EAAAC,GAAAoxC,EAAA5uE,EAAAu9B,GAAA,IAAAktG,IAAAg6E,IAAA3vM,IAAAwvM,IAAAxmN,IAAAymN,KAAAE,IAAAI,KAAAJ,GAAAl5N,aAAA,eAAAgyC,EAAAv9B,EAAA18B,SAAAi/O,iBAAAztM,EAAAhX,IAAA,GAAAy/B,IAAAqxC,MAAArxC,EAAAonL,MAAAI,GAAArhO,EAAA7f,EAAA0qB,QAAAgvC,EAAAC,EAAA,OAAA8mL,GAAAxvM,EAAAyvM,GAAAzmN,IAAA1yB,KAAAmjB,QAAA62N,cAAAplN,EAAAu9B,GAAA,KAAA+6K,IAAAyM,GAAArhO,EAAAtY,KAAAmjB,QAAAyR,EAAAu9B,GAAA,OAAAonL,IAAA,GAAA7mN,EAAAy/B,EAAA,CAAA47K,WAAA,SAAAH,qBAAA,MAAAP,GAAAS,MAAAoM,GAAAx4E,IAAA2rE,GAAAS,MAAA,wBAAA37K,IAAAnyD,KAAA+7B,SAAA,CAAAo/M,UAAA,kCAAAhpL,EAAApyD,UAAA,CAAA68J,UAAA,SAAAzqG,OAAAw9K,OAAA+J,GAAAvnL,CAAA,EAAAipL,cAAA,SAAAjpL,GAAA,IAAA75C,EAAA65C,EAAA8lL,UAAA7lL,EAAAD,EAAA9tB,OAAAm/D,EAAArxC,EAAAojL,OAAA98O,EAAA05D,EAAAo+K,eAAA7mM,EAAAyoB,EAAA+lL,QAAAxlN,EAAAy/B,EAAA7hC,OAAA73B,EAAA0qB,QAAAk4N,OAAAlpL,EAAAnyD,KAAAo+J,SAAA9rB,GAAA75I,EAAAuH,KAAAmjB,QAAAivC,OAAAD,MAAAunL,OAAA,IAAAl2I,EAAApxC,IAAA3kC,EAAA2kC,EAAA35D,EAAA0iP,WAAA,GAAA/oL,GAAA,KAAAD,OAAAunL,IAAAjsN,EAAA0kC,EAAA15D,EAAA0iP,WAAA,IAAAzxM,IAAApxB,GAAA,GAAAoa,IAAA,EAAA9wB,KAAA,SAAAuwD,GAAA,IAAA75C,EAAA85C,EAAAoxC,EAAArxC,EAAAo+K,eAAA93O,EAAA05D,EAAA68K,YAAAtlM,EAAAyoB,EAAAw9K,OAAAj9M,EAAAj6B,GAAAuH,KAAAo+J,SAAArqG,EAAA/zD,KAAAmjB,QAAAu2N,IAAAjsN,EAAAisN,GAAA3lL,EAAAonL,WAAA,GAAAzB,KAAA3lL,EAAAsnL,MAAA5iP,KAAA0qB,QAAAk4N,OAAA3xM,IAAAgwM,KAAAhnN,EAAA8hN,wBAAA9hN,IAAA8wE,KAAAgxI,wBAAApiL,EAAAsnL,GAAAvnL,GAAA75C,EAAAoxB,GAAAvY,WAAA4iC,EAAA3B,EAAAjhC,WAAAghC,GAAA4B,IAAA5B,EAAAmpL,YAAAlpL,KAAA2B,EAAAunL,YAAAhjO,KAAA7f,EAAAw0C,EAAA30B,GAAAoxB,EAAAuD,EAAAmlB,GAAAD,EAAAmpL,YAAAvnL,IAAAt7D,EAAAixC,OAAAyoB,EAAA+3B,aAAA93B,EAAAD,EAAAzvB,SAAAjqC,IAAAs7D,EAAAm2B,aAAA5xE,EAAAy7C,EAAArxB,SAAAgH,KAAAhX,EAAAmiN,aAAAniN,IAAA8wE,KAAAqxI,aAAA,EAAAqG,QAAA,WAAAxB,GAAA,OAAAhnN,EAAAy/B,EAAA,CAAA47K,WAAA,OAAAM,gBAAA,kBAAAkN,SAAA7B,GAAA,MAAArM,GAAAS,MAAA,wBAAA37K,EAAAqxC,GAAA,QAAArxC,KAAAnyD,KAAA,MAAAmyD,EAAAv5D,OAAA,uBAAAoH,KAAAmyD,KAAAnyD,KAAAmyD,GAAAnyD,KAAAmyD,GAAA5vD,KAAAvC,OAAAwjG,EAAArgF,QAAAq4N,wBAAAh4I,EAAArgF,QAAAkxN,eAAApgL,EAAA/7D,SAAA,YAAA8H,KAAAy7O,qBAAAxnL,EAAA/7D,SAAA,UAAA8H,KAAAy7O,oBAAAxnL,EAAA/7D,SAAA,WAAA8H,KAAAy7O,sBAAAxnL,EAAA/7D,SAAA,UAAA8H,KAAA07O,eAAAznL,EAAA/7D,SAAA,QAAA8H,KAAA27O,aAAA37O,KAAA+7B,SAAA,CAAA6/M,cAAA,oBAAAC,aAAA,KAAAL,uBAAA,EAAA31C,QAAA,SAAA1zI,EAAA75C,GAAA,IAAA85C,EAAA,GAAAwrG,GAAAllK,QAAA80I,KAAAhqC,EAAAo6D,GAAA/7J,SAAA,SAAAswD,EAAA75C,GAAA85C,IAAA95C,EAAA,SAAA65C,EAAAo2B,WAAA,IAAAn2B,EAAA95C,EAAAiwE,YAAAp2B,EAAA0zI,QAAA,OAAAzzI,EAAA,UAAAD,EAAApyD,UAAA,CAAA+7O,kBAAA,EAAAC,aAAA,EAAAC,iBAAA,SAAA7pL,OAAAw9K,OAAAyK,GAAAjoL,CAAA,EAAA8pL,WAAA,WAAAj8O,KAAA+7O,aAAAn+E,GAAA9kK,QAAAshP,GAAA,EAAA8B,WAAA,SAAA/pL,GAAA,IAAA75C,EAAA65C,EAAAisG,SAAAjsG,IAAA7hC,OAAA,GAAAtwB,KAAA+7O,YAAA,SAAA3pL,EAAA,EAAAA,EAAAwrG,GAAAllK,OAAA05D,IAAAkoL,GAAAz5O,KAAA1H,EAAAykK,GAAAxrG,KAAAkoL,GAAAloL,GAAAuoL,cAAA/8E,GAAAxrG,GAAAuoL,cAAAL,GAAAloL,GAAA6rG,WAAA,EAAAq8E,GAAAloL,GAAAn2B,MAAA,kBAAAxO,EAAA6sN,GAAAloL,GAAApyD,KAAAmjB,QAAAy4N,eAAA,GAAAh+E,GAAAxrG,KAAAgoL,IAAA3sN,EAAA6sN,GAAAloL,GAAApyD,KAAAmjB,QAAAqwN,aAAA,GAAAl7N,EAAA++N,aAAAllL,GAAA,GAAA1M,MAAA,SAAA0M,GAAA,IAAA75C,EAAA65C,EAAAisG,SAAAhsG,EAAAD,EAAAq8K,OAAAhrI,EAAArxC,EAAA6+K,sBAAA7+K,IAAA7hC,OAAAtwB,KAAA+7O,cAAA/7O,KAAAmjB,QAAAmwN,mBAAA11E,GAAAllK,QAAA80I,KAAAl1H,IAAAoiO,IAAA,EAAAtoL,GAAAoxC,EAAA,SAAArxC,KAAA,EAAAgqL,UAAA,SAAAhqL,GAAA,IAAA75C,EAAA65C,EAAA4+K,cAAA3+K,EAAAD,EAAAq8K,OAAAr8K,IAAA7hC,OAAAtwB,KAAA+7O,cAAArB,IAAA,EAAAtoL,GAAAkoL,GAAAz4O,SAAA,SAAAswD,GAAAp8B,EAAAo8B,EAAA,iBAAA75C,IAAAkpJ,IAAA,EAAArvG,IAAA,EAAAiqL,UAAA,SAAAjqL,GAAA,IAAA75C,EAAAtY,KAAAoyD,GAAAD,EAAAisG,SAAAjsG,EAAA2+K,gBAAA3+K,IAAA7hC,OAAAtwB,KAAA+7O,cAAAzB,GAAAz4O,SAAA,SAAAswD,GAAAp8B,EAAAo8B,EAAA,kBAAA75C,EAAA6K,QAAAmwN,mBAAAnhL,EAAAhhC,YAAAghC,EAAAhhC,WAAAd,YAAA8hC,EAAA,IAAAC,IAAAovG,IAAA,EAAArvG,IAAA,EAAAkqL,gBAAA,SAAAlqL,KAAAisG,UAAAp+J,KAAA+7O,aAAAvuG,OAAA8uG,UAAAb,qBAAA79E,GAAA/7J,SAAA,SAAAswD,KAAAwoL,cAAA1tM,EAAAklB,EAAA,IAAAyrG,MAAAlxC,MAAA,SAAAv6D,EAAA75C,GAAA,OAAA65C,EAAAwoL,cAAAriO,EAAAqiO,aAAA,IAAAF,IAAA,GAAArK,YAAA,SAAAj+K,GAAA,IAAA75C,EAAA85C,EAAApyD,KAAAmyD,IAAAisG,SAAAp+J,KAAA+7O,cAAA/7O,KAAAmjB,QAAAupG,OAAAv6D,EAAAqiL,wBAAAx0O,KAAAmjB,QAAApa,YAAA60J,GAAA/7J,SAAA,SAAAswD,OAAAioL,IAAArkN,EAAAo8B,EAAA,0BAAA75C,EAAA6jG,EAAAi+H,IAAA,SAAAx8E,GAAA/7J,SAAA,SAAAswD,OAAAioL,IAAAzuN,EAAAwmC,EAAA75C,EAAA,IAAAiiO,GAAAC,IAAA,IAAAroL,EAAA0iL,YAAA,WAAA0F,GAAAC,IAAA,EAAApoL,EAAAjvC,QAAApa,WAAA60J,GAAA/7J,SAAA,SAAAswD,GAAAj8B,EAAAi8B,EAAA,IAAAC,EAAAjvC,QAAAupG,MAAAkuH,IAAA,MAAA2B,SAAA,SAAApqL,GAAA,IAAA75C,EAAA65C,EAAA9tB,OAAA+tB,EAAAD,EAAA8lL,UAAA9lL,IAAA7hC,OAAAkqN,KAAA58E,GAAA9kK,QAAAwf,KAAA85C,GAAA,GAAAD,IAAA,EAAAwoG,OAAA,SAAAxoG,GAAA,IAAAC,EAAAoxC,EAAAlrF,EAAA65C,EAAA6lL,aAAAv/O,EAAA05D,EAAAq8K,OAAA9kM,EAAAyoB,EAAAisG,SAAA1rI,EAAAy/B,EAAA0lL,SAAA,EAAAj6E,GAAAllK,SAAAklK,GAAA/7J,SAAA,SAAAswD,GAAAzoB,EAAAirM,kBAAA,CAAAtwM,OAAA8tB,EAAAqC,KAAAgmL,GAAAr+H,EAAAhqD,GAAAz/B,IAAAwD,EAAAi8B,KAAAuiL,SAAAhiN,EAAApa,EAAAs8N,qBAAAziL,EAAA,IAAAqoL,IAAA,EAAApoL,GAAApyD,KAAAmjB,QAAAmwN,kBAAA9vI,EAAA/qG,EAAAmlK,GAAA/7J,SAAA,SAAAswD,EAAA75C,MAAAkrF,EAAA9gE,SAAAyvB,EAAAwoL,eAAAvoL,EAAA+yC,OAAA7sF,GAAA,KAAAkrF,EAAAtZ,aAAA/3B,EAAA75C,GAAAkrF,EAAApzE,YAAA+hC,EAAA,MAAA6oL,kBAAA,SAAA7oL,GAAA,IAAA75C,EAAA85C,EAAAD,EAAAisG,SAAA56D,EAAArxC,EAAAylL,QAAAn/O,EAAA05D,EAAAgmL,UAAAzuM,EAAAyoB,EAAAo+K,eAAA79M,EAAAy/B,EAAAy9K,SAAA77K,EAAA5B,EAAA68K,YAAA78K,EAAAnyD,KAAAmjB,QAAA1qB,IAAA+qG,GAAA95D,EAAA2tM,aAAAkD,IAAA,EAAApoL,EAAAppD,WAAA,EAAA60J,GAAAllK,SAAA8hP,KAAAh3I,IAAA95D,EAAAvmB,QAAAupG,OAAA34D,KAAAz7C,EAAA6jG,EAAAi+H,IAAA,SAAAx8E,GAAA/7J,SAAA,SAAAswD,OAAAioL,KAAAzuN,EAAAwmC,EAAA75C,GAAAoa,EAAAtC,YAAA+hC,GAAA,IAAAqoL,IAAA,GAAAh3I,IAAAg3I,IAAAI,KAAA,EAAAh9E,GAAAllK,QAAA8qG,EAAAg+D,GAAA93H,EAAA0uM,WAAAhmL,GAAA1oB,EAAAvmB,QAAApa,YAAAy4J,IAAAh+D,GAAA82I,GAAAz4O,SAAA,SAAAswD,GAAAzoB,EAAAirM,kBAAA,CAAAtwM,OAAA8tB,EAAAqC,KAAA6lL,KAAAloL,EAAAuiL,SAAA2F,GAAAloL,EAAAsiL,sBAAA,SAAA/qM,EAAA0uM,WAAAhmL,IAAA,EAAAoqL,yBAAA,SAAArqL,GAAA,IAAA75C,EAAA65C,EAAA0lL,SAAAzlL,EAAAD,EAAAylL,QAAAzlL,IAAAo+K,eAAA3yE,GAAA/7J,SAAA,SAAAswD,KAAAsiL,sBAAA,QAAAtiL,EAAAhvC,QAAApa,YAAAqpD,GAAAD,EAAAmqL,UAAAP,cAAA1B,GAAA3nN,EAAA,GAAApa,KAAA+sC,EAAA+0L,IAAA,GAAAC,GAAA3zO,KAAA4R,EAAAy6C,EAAAsnL,GAAA5zO,MAAA6R,IAAA,EAAAmkO,0BAAA,WAAAjC,SAAA,EAAAI,KAAA,EAAAh5O,KAAA,SAAAuwD,GAAA,IAAA75C,EAAA65C,EAAA33B,cAAA43B,EAAAD,EAAAq8K,OAAAhrI,EAAArxC,EAAAy9K,SAAAn3O,EAAA05D,EAAAisG,SAAA10H,EAAAyoB,EAAA6+K,sBAAAt+M,EAAAy/B,EAAA2+G,SAAA/8G,EAAA5B,EAAA68K,YAAApvN,EAAAm0C,GAAA/zD,KAAAo+J,SAAA,GAAA9lJ,EAAA,KAAA3f,EAAAujH,EAAA7jG,EAAA47C,EAAAj0D,KAAAmjB,QAAA4vC,EAAAywC,EAAA9gE,SAAA,IAAA+3M,GAAA,GAAAxmL,EAAA4nL,eAAA77O,KAAA87O,kBAAA97O,KAAAy7O,qBAAAhuN,EAAA2sN,GAAAnmL,EAAA2nL,gBAAAh+E,GAAA9kK,QAAAshP,MAAAx8E,GAAA9kK,QAAAshP,IAAAx8E,GAAAn8J,OAAAm8J,GAAA9kK,QAAAshP,IAAA,GAAAD,GAAA,KAAA5L,EAAA,CAAAnwE,SAAA3lK,EAAA+1O,OAAAp8K,EAAA95D,KAAA,WAAAm2O,SAAA2L,GAAA5/M,cAAAliB,QAAA,IAAAslJ,GAAA/8J,KAAAu5O,IAAA7L,EAAA,CAAAnwE,SAAA3lK,EAAA+1O,OAAAp8K,EAAA95D,KAAA,SAAAm2O,SAAA2L,GAAA5/M,cAAAliB,MAAAirI,UAAA42F,IAAA1hP,EAAA65I,GAAAvwI,SAAAo4O,IAAA,KAAAtoL,EAAA5kB,EAAAktM,IAAAhoL,EAAAllB,EAAAmtM,IAAA,IAAAvoL,IAAAM,GAAAN,IAAAM,EAAA,QAAA35C,EAAAuQ,EAAA8oC,EAAAM,GAAA35C,EAAAq5C,EAAAM,IAAA35C,EAAA25C,EAAAN,EAAA,GAAAr5C,EAAAuQ,EAAAvQ,KAAAolJ,GAAA9kK,QAAAi6D,EAAAv6C,MAAAiV,EAAAslC,EAAAv6C,GAAAy7C,EAAA2nL,eAAA,GAAAh+E,GAAA/8J,KAAAkyD,EAAAv6C,IAAA+1N,EAAA,CAAAnwE,SAAA3lK,EAAA+1O,OAAAp8K,EAAA95D,KAAA,SAAAm2O,SAAA17K,EAAAv6C,GAAAgiB,cAAAliB,IAAA,MAAA6hO,GAAAC,GAAA5sG,GAAA5tH,CAAA,CAAA66N,IAAAz6O,KAAA+7O,cAAAvB,IAAA,GAAAh3I,EAAArvE,GAAAhR,QAAAupG,MAAAlpB,IAAApxC,IAAA,EAAAwrG,GAAAllK,SAAAC,EAAAwjH,EAAAi+H,IAAAl+H,EAAAjvE,EAAAmtM,GAAA,SAAAp6O,KAAAmjB,QAAAy4N,cAAA,MAAArB,IAAAtmL,EAAAlrD,YAAAqxO,GAAA3F,sBAAA,MAAA70N,EAAA40N,wBAAA+F,KAAAtmL,EAAAlrD,YAAAqxO,GAAA1F,SAAA/7O,EAAAilK,GAAA/7J,SAAA,SAAAswD,GAAA,IAAA75C,EAAA65C,EAAAsiL,sBAAA,KAAAtiL,IAAAioL,KAAA9hO,EAAAkiO,GAAAr+H,EAAAhqD,GAAAx5D,EAAAw5D,EAAAuiL,SAAAp8N,EAAAsH,EAAA+0N,kBAAA,CAAAtwM,OAAA8tB,EAAAqC,KAAAl8C,IAAA,KAAAsiO,KAAAh9E,GAAA/7J,SAAA,SAAAswD,GAAAY,EAAAmpD,GAAA1Y,EAAAtZ,aAAA/3B,EAAAY,EAAAmpD,IAAA1Y,EAAApzE,YAAA+hC,GAAA+pD,GAAA,IAAAxpF,IAAAua,EAAAmtM,MAAA/hO,GAAA,EAAAulJ,GAAA/7J,SAAA,SAAAswD,KAAAwoL,gBAAA1tM,EAAAklB,KAAA95C,GAAA,MAAAA,GAAAqxB,EAAA,YAAAk0H,GAAA/7J,SAAA,SAAAswD,GAAAj8B,EAAAi8B,EAAA,IAAAvyC,EAAAi1N,cAAArnG,GAAA5tH,IAAAwyC,IAAAoxC,GAAAzvC,GAAA,UAAAA,EAAAy7K,cAAA8K,GAAAz4O,SAAA,SAAAswD,KAAAhhC,YAAAghC,EAAAhhC,WAAAd,YAAA8hC,EAAA,MAAAuqL,cAAA,WAAA18O,KAAA+7O,YAAAtB,IAAA,EAAAH,GAAA5hP,OAAA,GAAAikP,cAAA,WAAA38O,KAAAy7O,qBAAA1oL,EAAA76D,SAAA,YAAA8H,KAAAy7O,oBAAA1oL,EAAA76D,SAAA,UAAA8H,KAAAy7O,oBAAA1oL,EAAA76D,SAAA,WAAA8H,KAAAy7O,oBAAA1oL,EAAA76D,SAAA,UAAA8H,KAAA07O,eAAA3oL,EAAA76D,SAAA,QAAA8H,KAAA27O,YAAA,EAAAF,mBAAA,SAAAtpL,GAAA,cAAAsoL,QAAAjtG,KAAAxtI,KAAAo+J,UAAAjsG,GAAAw6K,EAAAx6K,EAAA9tB,OAAArkC,KAAAmjB,QAAA86I,UAAAj+J,KAAAo+J,SAAA9rB,IAAA,IAAAngF,GAAA,IAAAA,EAAAwyF,QAAA,KAAAiZ,GAAAllK,QAAA,KAAA4f,EAAAslJ,GAAA,GAAAnwI,EAAAnV,EAAAtY,KAAAmjB,QAAAy4N,eAAA,GAAAh+E,GAAA5+I,QAAAuvN,EAAA,CAAAnwE,SAAAp+J,KAAAo+J,SAAAowE,OAAAxuO,KAAAo+J,SAAA9rB,GAAAh6I,KAAA,WAAAm2O,SAAAn2N,EAAAkiB,cAAA23B,GAAA,GAAAupL,cAAA,SAAAvpL,KAAAvhD,MAAA5Q,KAAAmjB,QAAA04N,eAAA77O,KAAA87O,kBAAA,IAAAH,YAAA,SAAAxpL,KAAAvhD,MAAA5Q,KAAAmjB,QAAA04N,eAAA77O,KAAA87O,kBAAA,KAAAppN,EAAAy/B,EAAA,CAAA47K,WAAA,YAAA2K,MAAA,CAAAz6F,OAAA,SAAA9rF,GAAA,IAAA75C,EAAA65C,EAAAhhC,WAAAgD,GAAA7b,KAAA6K,QAAAm5N,aAAA1+E,GAAA9kK,QAAAq5D,KAAAq7E,SAAAl1H,IAAAk1H,GAAA8uG,UAAAb,qBAAAjuG,GAAAl1H,GAAAmV,EAAA0kC,EAAA75C,EAAA6K,QAAAy4N,eAAA,GAAAh+E,GAAA/8J,KAAAsxD,GAAA,EAAAyqL,SAAA,SAAAzqL,GAAA,IAAA75C,EAAA65C,EAAAhhC,WAAAgD,GAAAi+B,EAAAwrG,GAAA9kK,QAAAq5D,GAAA75C,KAAA6K,QAAAm5N,YAAAlqL,IAAA3kC,EAAA0kC,EAAA75C,EAAA6K,QAAAy4N,eAAA,GAAAh+E,GAAAn8J,OAAA2wD,EAAA,MAAAi8K,gBAAA,eAAAj8K,EAAApyD,KAAAwjG,EAAA,GAAA/qG,EAAA,UAAAmlK,GAAA/7J,SAAA,SAAAswD,GAAA,IAAA75C,EAAAkrF,EAAA3iG,KAAA,CAAAg8O,iBAAA1qL,EAAA3wD,MAAA2wD,EAAAwoL,gBAAAriO,EAAAkiO,IAAAroL,IAAAioL,IAAA,EAAAI,GAAAvtM,EAAAklB,EAAA,SAAAC,EAAAjvC,QAAAy4N,cAAA,KAAA3uM,EAAAklB,GAAA15D,EAAAoI,KAAA,CAAAg8O,iBAAA1qL,EAAA3wD,MAAA8W,GAAA,KAAAgiB,MAAAoP,EAAAk0H,IAAAk/E,OAAA,GAAAp1M,OAAA4yM,IAAAyC,YAAAv5I,EAAAw5I,YAAAvkP,EAAA,EAAA61O,gBAAA,CAAAuN,aAAA,SAAA1pL,GAAA,gBAAAA,IAAA73D,eAAA63D,EAAA,YAAAA,EAAAz5D,SAAAy5D,IAAAv5D,OAAA,GAAAmrE,cAAA5R,EAAAh8C,OAAA,IAAAg8C,CAAA,OAAAk7K,EAAA,IACA51O,OCFA,mBACA,SACA,aACA,SAAA2B,EAAA+yO,GACA,aAEA,OACA8Q,cAAA,SAAA52H,GACA8lH,EAAAz7N,OAAA21G,EAAA9gH,SAAA,IACAwD,UAAAs9G,EAAAt9G,UACAwqO,WAAAltH,EAAAktH,WACAS,cAAA3tH,EAAA2tH,cACA3zF,OAAAh6B,EAAAh7B,UACAwvE,kBAAAx0C,EAAAw0C,kBACAC,YAAAz0C,EAAAy0C,YACAP,OAAAl0C,EAAAk0C,OACAt9I,QAAA,SAAAwoB,GACA,IAAA7qC,EAAAxB,EAAAqsC,EAAAtzB,MAAA7W,KAAA,MACA+qH,EAAAzkH,KAAAgJ,sBAAA,YAAAhQ,GAEAxB,EAAA,sBAAAwM,IAAA,aACA,EACA2vO,OAAA,SAAA9vM,GACA,OAAAA,EAAAgwM,QAAAp+N,QAAAgvG,EAAA62H,SACA,EACAC,MAAA,SAAA13M,GACA,IAAA7qC,EAAAxB,EAAAqsC,EAAAtzB,KAAAq7N,wBAAAlyO,KAAA,MACAV,EACAyrH,EAAAzkH,KAAAgJ,sBAAA,UAAAhQ,GAEAyrH,EAAAzkH,KAAAgJ,sBAAA,eAAAxE,EACA,GAEA,EAEA,IAEA3O,OCrCA,mBACA,SACA,aACA,UACA,WACA,UACA,iBACA,OACA,gBACA,oBACA,iBACA,kBACA,gBACA,SAAA2B,EAAAD,EAAAmM,EAAAm5B,EAAAjpB,EAAA6Z,EAAA7sB,EAAA0jF,EAAAyhG,EAAAl3H,EAAA2sL,EAAArpM,GACA,aAEA,IAEAspM,EAAA,iHAEAthN,EAAA,CACAzgC,KAAA,CACAgJ,KAAA,CAAAF,EAAA,IAAAC,EAAA,KACAi5O,eAAA,GACAC,eAAA,GACAC,WAAA,IACAC,WAAA,GACA52M,OAAA,WACA62M,cAAA,SACAC,kBAAA,iBACA1pM,SAAA,CACAlvC,mBAAA,EACAmvC,YAAA,EACAO,YAAA,aAEAmpM,eAAA,EACAjlM,SApBA,IAqBAlC,gBAAA,EACAonM,kBAAA,GACAC,mBAAA,EACAC,eAAA,GACAC,kBAAA,OACAC,mBAAA,EACApe,sBAAA,EACA8C,WAAA,EACA7C,YAAA,EACAhvK,eAAA,IACAotL,eAAA,GACAC,cAAA,GACAC,kBAAA,EACAC,kBAAA,EACAC,kBAAA,OACAC,kBAAA,MACAC,eAAA,EACAC,gBAAA,GACAC,4BAAA,EACAxJ,cAAA,IACAr6E,kBAAA,IACAC,YAAA,GACA6jF,sBAAA,EACAC,uBAAA,IAIAC,EAAA,IAEAC,EAAA,KACAC,EAAA,KACAC,EAAA,KAEAC,GAAA,EAEA,SAAArpO,EAAAuN,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GACAkM,EAAArK,KAAAhlB,KAAA,CACA,eAGA,IAAAe,EAAAf,KAEAe,EAAAzF,KAAAoI,SAAA8R,EAAA1D,+BAAA/Q,EAAAzF,KAAAoI,UAEA3C,EAAAm+O,sBAEAn+O,EAAA+M,UAAA,EACA/M,EAAAqlC,WAAA,EACArlC,EAAAo+O,UAAA,EACAp+O,EAAAinF,SAAA,EACAjnF,EAAAq+O,WAAA,EACAr+O,EAAAs+O,eAAA,GACAt+O,EAAAu+O,mBAAA,EACAv+O,EAAAw+O,oBAAA,EAEAx+O,EAAAzF,KAAA8iP,iBACAr9O,EAAAw+O,sBAEAx+O,EAAAu+O,qBAGAv+O,EAAAy+O,aAAA,EACAz+O,EAAA0+O,WAAA,KACA1+O,EAAAosM,eAAA,EACApsM,EAAA0+I,SAAA,EACA1+I,EAAAwE,SACAI,SAAA,6BACAC,IAAA,CACA8vC,WAAA,aAEA30C,EAAA40C,MAAAv8C,EAAA,WACA6uC,KAAA,iBACAriC,IAAA,CACA47B,QAAA,OAIAN,SAAA,EACAglK,aAAA,YAEAr/L,SAAA9F,EAAAwE,UAGAvF,KAAA2wD,mBAAA5vD,EAAA40C,MAEA31C,KAAA0/O,4BACA1/O,KAAAM,OAAA4lF,EACA,CACAuoG,QAAAt1L,EAAAw/O,SAAA34O,KAAA2/O,mCAAAp9O,KAAAvC,MAAA,MAIAy+B,EAAAK,aAAA/9B,GAGAA,EAAA40C,MAAAj6C,GAAA,iDAAA4c,GACA,IAAAg6H,EAAAvxI,EAAA40C,MAAAt9C,IAAA,IACAi6I,EAAA3uG,aAAA2uG,EAAAz5H,cAAAy5H,EAAAzuG,YAAAyuG,EAAA35H,cACAL,EAAAgzC,iBACA,IAEA,eAAAtrD,KAAA1E,KAAAurC,QACA7mC,KAAAuF,SAAAK,IAAA,wBAEA5F,KAAAyK,sBAAArR,EAAAS,QAAA,qBACAkH,EAAA6+O,sBACA7+O,EAAA8+O,4BACA,IACA9+O,EAAA++O,YAAA,EAEA9/O,KAAA1E,KAAAsjP,wBACA5+O,KAAA1E,KAAAkiP,WAAA,IACAx9O,KAAA1E,KAAAmiP,WAAA,GACAz9O,KAAA1E,KAAAgiP,eAAA,EACAt9O,KAAA1E,KAAAiiP,eAAA,EAEA,CAmLA,SAAAh5M,EAAAjsB,GACAA,EAAAisB,gBACA,CAnLAj/B,EAAA3F,OAAAiW,GAEAA,EAAAgkB,SAAA,OAEAhkB,EAAA7V,UAAA6/O,oBAAA,WACA,kBAAA5/O,KAAA1E,KAAAurC,QAAA7mC,KAAA1E,KAAA+iP,iBAAA,CAGA,IAAA0B,EAAA3mP,EAAA4G,KAAAuF,SAAAm9B,WAAAnoB,SAAAvN,QAAAhN,KAAA1E,KAAAgiP,eACAtwO,EAAAhN,KAAA1E,KAAAkiP,WACArmN,EAAAnqB,EAAAhN,KAAA1E,KAAAgiP,eAEA,GAAAt9O,KAAA8F,KAAApN,OAAAy+B,EAAA4oN,EAAA,CACA,IAAA/gE,EAAAjqK,KAAAM,MAAA0qO,EAAA5oN,IACAnqB,EAAA+yO,EAAA/gE,EAAAh/K,KAAA1E,KAAAgiP,gBAEAnmN,EAAAn3B,KAAA1E,KAAAgiP,iBACAtwO,EAAA+yO,GAAA/gE,EAAA,GAAAh/K,KAAA1E,KAAAgiP,eAEA,CAEAnkP,EAAAiJ,KAAApC,KAAA8F,MAAA,SAAAlE,GACAA,EAAA2D,SAAAK,IAAA,QAAAoH,EAAA,KACA,GAhBA,CAiBA,EAEA4I,EAAA7V,UAAAigP,oBAAA,SAAAv2M,GACAzpC,KAAA1E,KAAAsiP,gBAEA59O,KAAAigP,wBACAx2M,EAAAkP,SAAA34C,KAAA1E,KAAAq9C,SAAA34C,KAAAs/O,mBAEA71M,EAAAkP,SAAA34C,KAAA1E,KAAAq9C,SAGAlP,EAAA+O,uBAAAx4C,KAAA1E,KAAAm7C,eACAhN,EAAAiP,KAAA,EAEA14C,KAAA1E,KAAA4kP,2BAAAlgP,KAAA1E,KAAA6kP,yBACAngP,KAAAogP,uBAAA,EACA32M,EAAA42M,gBAAArgP,KAAA1E,KAAA6kP,wBAEA,EAEAvqO,EAAA7V,UAAAmP,yBAAA,WACAlP,KAAAsgP,sBACAtgP,KAAA2C,OAAAmM,YACAyxO,6BAAAvgP,KAAAsgP,qBAEA,EAEA1qO,EAAA7V,UAAAgH,UAAA,WACA,IAAAhG,EAAAf,KA2BA,GAzBAA,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2C,OAAAsxC,SAAAhzC,MAAAjB,MACA+zC,EAAAh0C,UAAAw0C,2BAAAv0C,MAEAA,KAAA1E,KAAAklP,qBACAxgP,KAAAsgP,qBAAAtgP,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAo8C,YACA,SAAAp8C,EAAAmlP,GACA,OAAA1/O,EAAA8kM,QAAAvqM,EAAAmlP,EACA,IACA,SAAAh3M,GAEA9kB,YAAA,WAEA5jB,EAAA+M,UAAA/M,EAAA4vD,mBAAA7iD,YACA/M,EAAAqlC,WAAArlC,EAAA4vD,mBAAAvqB,YACA,MAEArlC,EAAAi/O,oBAAAv2M,EACA,GACAzpC,KAAA0gP,WAAAn+O,KAAAvC,QAGAA,KAAAgQ,eAAA,IAAA23K,EAAA3nL,KAAA2C,QAEA3C,KAAA1E,KAAA2iP,kBAAA,CACA,IAAAjuO,EAAAhQ,KAAA+P,oBACAC,GACAA,EAAA63K,cAAA7nL,KAAA1E,KAAAo8C,WAEA,CAEA13C,KAAA2M,gBAEA3M,KAAA2gP,mBAAA3gP,KAAA1E,KAAA+S,YAAArO,KAAAyM,cAEAzM,KAAA2gP,oBACA,eAAA3gP,KAAA1E,KAAAurC,QACA7mC,KAAA21C,MACA/vC,IAAA,CACAoxE,UAAA,OACAC,UAAA,WAGAj3E,KAAA21C,MACA/vC,IAAA,CACAzB,SAAA,aAGAnE,KAAA0/O,6BAKA7lP,OAAA21B,kBACA31B,OAAA21B,iBAAA,uBAAAlX,GACA,IAAAA,EAAAq1E,QACAr1E,EAAAisB,gBACA,IAGAvkC,KAAAyK,sBAAAzK,KAAA2C,OAAAmF,eAAA,SAAA9H,KAAA2/O,mCAAAp9O,KAAAvC,QAEAA,KAAA2wD,mBAAA3wD,KAAA2C,OAAAmF,iBAEA9H,KAAA21C,MACA/vC,IAAA,CACAoxE,UAAA,eAAAh3E,KAAA1E,KAAAurC,OAAA,gBACAowC,UAAA,eAAAj3E,KAAA1E,KAAAurC,OAAA,gBACA1iC,SAAA,WACAuC,IAAA,EACAC,MAAA,EACAC,OAAA,EACAH,KAAA,IAGAzG,KAAA0/O,4BACA1/O,KAAAyK,sBAAAzK,KAAA21C,MAAA,SAAA31C,KAAA2/O,mCAAAp9O,KAAAvC,OAEAA,KAAAyK,sBAAAzK,KAAA21C,MAAA,qBACA50C,EAAA++O,YAAA,EACA/+O,EAAA6/O,mBACA7/O,EAAA6/O,oBAAA,EAEA7/O,EAAA8/O,gBAAA,CAEA,IAEA7gP,KAAAyK,sBAAAzK,KAAA21C,MAAA,+BACA50C,EAAA++O,YAAA,CACA,IAEA9/O,KAAAyK,sBAAAzK,KAAA21C,MAAA,wBACA50C,EAAAk+O,WAAA,CACA,IAEAj/O,KAAAyK,sBAAAzK,KAAA21C,MAAA,sBACA50C,EAAAk+O,WAAA,CACA,IAEA,EAEArpO,EAAA7V,UAAA+gP,aAAA,SAAApgL,GACA1gE,KAAA4gP,oBAAA,EACA5gP,KAAA21C,MAAA7nC,UAAA4yD,EACA,EAEA9qD,EAAA7V,UAAA2gP,WAAA,SAAAK,GACA,IAAAC,EAAA7nP,EAAA4d,UAAA/W,KAAA8F,KAAA,CACAlL,GAAAmmP,IAEAC,IACAA,EAAAr+O,OAAA2xI,UACA0sG,EAAA7xO,oCACA6xO,EAAAz7O,SAAAxM,SACAiH,KAAA4O,WAAAoyO,GAEA,EAEAprO,EAAA7V,UAAAkhP,yBAAA,WACAjhP,KAAA1E,KAAA+S,YAAA,CACA,EAOA,IAAA6yO,GAAA,EACA,IACArnP,OAAA21B,iBAAA,YAAAtvB,OAAAu7E,eAAA,cACApjF,IAAA,WAAA6oP,GAAA,KAEA,OAAA5oO,GAAA,CAEA,IAAA6oO,IAAAD,GAAA,CAAA1U,SAAA,GACA4U,EAAA,YAAAlpP,SAAAoqB,cAAA,4BAEA1M,EAAA7V,UAAAshP,cAAA,WACAxnP,OAAA21B,iBAAA,iBAAA+U,GAAA,GACA1qC,OAAA21B,iBAAA4xN,EAAA78M,EAAA48M,GACAtnP,OAAA21B,iBAAA,YAAA+U,EAAA48M,EACA,EAEAvrO,EAAA7V,UAAAuhP,aAAA,WACAznP,OAAAohC,oBAAA,iBAAAsJ,GAAA,GACA1qC,OAAAohC,oBAAAmmN,EAAA78M,EAAA48M,GACAtnP,OAAAohC,oBAAA,YAAAsJ,EAAA48M,EACA,EAEAvrO,EAAA7V,UAAAyN,sBAAA,SAAA5D,GACA,IAAAyyC,EAAAr8C,KAAAuhP,gBACAj9O,EAAAtE,KAAAwhP,cAEAC,EAAA,CACAt9O,SAAA,YAGA,qBAAAnE,KAAA1E,KAAAurC,QACA46M,EAAA,cACAA,EAAA,aACAA,EAAA,UAAAn9O,EAAAD,EAAA,KACAo9O,EAAA,UAAAplM,EAAAh4C,EAAA,KACAo9O,EAAA,WAAAplM,EAAAj4C,EAAA,KACAq9O,EAAA,YAAAplM,EAAAj4C,EAAA,OAEApE,KAAA1E,KAAA8iP,iBAGAqD,EAAA,QAAAzhP,KAAA1E,KAAAijP,kBAAA,4BAAAliM,EAAAh4C,EAAA,KAFAo9O,EAAA,QAAAzhP,KAAA1E,KAAAijP,kBAAA,4BAAAliM,EAAAh4C,EAAA,KAGAo9O,EAAA,OAAAn9O,EAAAD,EAAA,KAEA,OAAAuF,EAAAtO,KAAAmL,WAAAL,IAAAwD,EAAAtO,KAAAmL,MACA,OAAAmD,EAAAtO,KAAAqL,YAAAP,IAAAwD,EAAAtO,KAAAqL,OACA86O,EAAA,gBACAA,EAAA,WAAA73O,EAAAtO,KAAAmL,KAAA,KACAg7O,EAAA,YAAA73O,EAAAtO,KAAAqL,MAAA,OAEA86O,EAAA,qBAAAzhP,KAAA1E,KAAAurC,OAAA,uBACA46M,EAAA,SAAAzhP,KAAA1E,KAAAgjP,kBAAA,4BAAAjiM,EAAAj4C,EAAA,KACAq9O,EAAA,MAAAn9O,EAAAF,EAAA,OAKA,eAAApE,KAAA1E,KAAAurC,QACA,WAAA7mC,KAAA1E,KAAA0iP,oBACAp0O,EAAAtO,KAAAomP,QACAD,EAAA,cACA73O,EAAAtO,KAAAqmP,SACAF,EAAA,iBAIA73O,EAAArE,SAAAK,IAAA67O,EACA,EAEA7rO,EAAA7V,UAAA8lM,QAAA,SAAAvqM,EAAAmlP,GACA,IAAA1/O,EAAAf,KAEA,GAAAygP,EAAA,CACAzgP,KAAA8N,UAAA9N,KAAA2wD,mBAAA7iD,YACA9N,KAAAomC,WAAApmC,KAAA2wD,mBAAAvqB,aAEApmC,KAAAy/I,WAEA1+I,EAAA0+I,WAAA1+I,EAAAzF,KAAAq9C,WACA53C,EAAAu+O,qBACAv+O,EAAA0+I,SAAA,GAGA,IAAAmiG,EAAA5hP,KAAA6hP,UAAAvmP,GACA0E,KAAAw/O,cAAAlkP,EAAA68B,QAAAz/B,OAAAkpP,EAAAzpN,QAAAz/B,OACAsH,KAAA8hP,WAAAxmP,EAAAsmP,GAAA,EAAAnB,EACA,MACA,GAAA1/O,EAAAo+O,WAAAp+O,EAAAq+O,UAGA,OAAAr+O,EAAA2yC,OAAAp4C,GAFAyF,EAAA0+O,WAAAnkP,CAIA,CACA,EAEAsa,EAAA7V,UAAA0H,WAAA,WAGA,GAFAzH,KAAAm/O,UAAA,EAEAn/O,KAAA1E,KAAA2kN,WAAAjgN,KAAAy/O,aAAAz/O,KAAA1E,KAAAo8C,WAAA,CACA,IAAAqqM,EAAA/hP,KAAA1E,KAAA2kN,SAAAznN,MAAA,MAEA,GAAAupP,EAAArpP,OAAA,GACA,IAAAigC,EAAAx/B,EAAA+N,IAAA66O,EAAA/iO,QAAAxmB,MAAA,eAAAgU,GACA,OAAAA,EAAA6V,MACA,IAEA00H,EAAA59I,EAAA+N,IAAA66O,GAAA,SAAA1sK,GACA,OAAAl8E,EAAA+N,IAAAmuE,EAAA78E,MAAA,eAAAgU,GACA,OAAAA,EAAA6V,MACA,GACA,IAEA/mB,EAAA,CAEAq9B,QAAAx/B,EAAAia,OAAAja,EAAA+N,IAAAyxB,GAAA,SAAA+7H,GACA,OAAAA,EAAA,gBACA,KAEAv8H,QAAAh/B,EAAA+N,IAAA6vI,GAAA,SAAA36F,GACA,OAAAjjD,EAAAia,OAAAja,EAAA+N,IAAAk1C,GAAA,SAAA5vC,EAAA/T,GACA,OAAAkgC,EAAAlgC,IAAA+T,IACA,IACA,IAEAosB,aAAAm+G,EAAAr+I,QAGAsH,KAAA6lM,QAAAvqM,EACA,CACA,CAEA,OADA0E,KAAAgiP,oBACAhiP,KAAAiiP,kBACA,EAEArsO,EAAA7V,UAAAkiP,iBAAA,WACA,GAAAjiP,KAAAy/O,WAAA,CACA,IAAA/4N,EAAA1mB,KAAA0zC,OAAA1zC,KAAAy/O,YAEA,OADAz/O,KAAAy/O,WAAA,KACA/4N,CACA,CACA,EAEA9Q,EAAA7V,UAAA45C,MAAA,WACA35C,KAAA21C,MAAAzqC,QAAA,QACA,EAEA0K,EAAA7V,UAAAm/O,oBAAA,WACA,IAAAn+O,EAAAf,KASA7G,EAAA+I,MAAAnB,EAAAoE,YACAgV,QAAA,SAAA+nO,GACA,YAAA97O,IAAA87O,EAAA5mP,KAAA6mP,gBACA,IAEAphP,EAAAqhP,kBAAAjpP,EAAAghB,OAAApZ,EAAAoE,YAAA,SAAA+8O,GACA,eAAAA,EAAA5mP,KAAA6mP,gBACA,IAEA,IAAAphP,EAAAqhP,kBAAA1pP,SACAqI,EAAAqhP,kBAAA,CAAArhP,EAAAshP,2BAGAthP,EAAAuhP,oBAAAnpP,EAAAghB,OAAApZ,EAAAoE,YAAA,SAAA+8O,GACA,iBAAAA,EAAA5mP,KAAA6mP,gBACA,IAEAphP,EAAAwhP,qBAAAppP,EAAAghB,OAAApZ,EAAAoE,YAAA,SAAA+8O,GACA,kBAAAA,EAAA5mP,KAAA6mP,gBACA,IAEAphP,EAAAyhP,mBAAArpP,EAAAghB,OAAApZ,EAAAoE,YAAA,SAAA+8O,GACA,yBAAAA,EAAA5mP,KAAA6mP,kBACA,kBAAAD,EAAA5mP,KAAA6mP,gBACA,IAEAphP,EAAA0hP,qBACAtpP,EAAAmI,KAAAP,EAAAoE,YAAA,SAAA+8O,GACA,mBAAAA,EAAA5mP,KAAA6mP,gBACA,KAAAphP,EAAA2hP,6BAEA3hP,EAAA4hP,sBACAxpP,EAAAmI,KAAAP,EAAAoE,YAAA,SAAA+8O,GACA,oBAAAA,EAAA5mP,KAAA6mP,gBACA,KAAAphP,EAAA6hP,8BAEA7hP,EAAAoE,WAAApE,EAAAuhP,oBACA56M,OAAA3mC,EAAAwhP,sBACA76M,OAAA3mC,EAAAqhP,mBACA16M,OAAA3mC,EAAAyhP,oBACA96M,OAAA,CACA3mC,EAAA0hP,qBACA1hP,EAAA4hP,uBAEA,EAEA/sO,EAAA7V,UAAAsiP,uBAAA,WACA,OAAAriP,KAAA1E,KAAAsjP,sBACA,CACAtjP,KAAA,CACAoK,KAAA,WACAy8O,iBAAA,OACAh+O,SAAA,CAAAC,EAAA,EAAAC,EAAA,GACAC,KAAA,CAAAF,EAAA,IAAAC,EAAA,IACAE,OAAA,EAAA23B,MAAA,QAEA/2B,WAAA,CACA,CAAA7J,KAAA,CAAAoK,KAAA,cAAApN,KAAA,OAAAgM,KAAA,CAAAF,EAAA,IAAAC,EAAA,IAAAF,SAAA,CAAAC,EAAA,GAAAC,EAAA,QAIA,CACA/I,KAAA,CACAoK,KAAA,WACAy8O,iBAAA,OACAh+O,SAAA,CAAAC,EAAA,GAAAC,EAAA,IACAC,KAAA,CAAAF,EAAA,IAAAC,EAAA,IACAE,OAAA,EAAA23B,MAAA,QAEA/2B,WAAA,GAEA,EAEAyQ,EAAA7V,UAAA2iP,2BAAA,WACA,OACApnP,KAAA,CACAoK,KAAA,WACAy8O,iBAAA,WACAh+O,SAAA,CAAAC,EAAA,GAAAC,EAAA,IACAC,KAAA,CAAAF,EAAA,IAAAC,EAAA,KAEAc,WAAA,CACA,CAAA7J,KAAA,CAAAoK,KAAA,SAAAm1B,KAAA,YAAAv2B,KAAA,CAAAF,EAAA,IAAAC,EAAA,IAAAF,SAAA,CAAAC,EAAA,EAAAC,EAAA,KACA,CAAA/I,KAAA,CAAAoK,KAAA,cAAApN,KAAA,QAAAgM,KAAA,CAAAF,EAAA,GAAAC,EAAA,IAAAF,SAAA,CAAAC,EAAA,EAAAC,EAAA,IAAAg7B,OAAA,CAAAqiB,OAAA,CAAA7mB,KAAA,CAAA4B,MAAA,SAAA94B,SAAA,MACA,CAAArI,KAAA,CAAAoK,KAAA,OAAAm1B,KAAA,QAAAv2B,KAAA,CAAAF,EAAA,GAAAC,EAAA,IAAAF,SAAA,CAAAC,EAAA,GAAAC,EAAA,OAGA,EAEAuR,EAAA7V,UAAA6iP,4BAAA,WACA,OACAtnP,KAAA,CACAoK,KAAA,WACAy8O,iBAAA,YACAh+O,SAAA,CAAAC,EAAA,GAAAC,EAAA,IACAC,KAAA,CAAAF,EAAA,IAAAC,EAAA,KAEAc,WAAA,EACA7J,KAAA,CAAAoK,KAAA,QAAAk3M,QAAA,yBAAAt4M,KAAA,CAAAF,EAAA,IAAAC,EAAA,IAAAF,SAAA,CAAAC,EAAA,EAAAC,EAAA,MAGA,EAEAuR,EAAA7V,UAAAsG,uBAAA,WACA,mBAAArG,KAAA1E,KAAAoiP,aACA,EAEA9nO,EAAA7V,UAAAwM,SAAA,WACA,OAAAvM,KAAA6iP,cAIA,WAAA7iP,KAAA1E,KAAAoiP,cACA,IAAA19O,KAAA6iP,cAAAnqP,OAAAsH,KAAA6iP,cAAA,GAAAjoP,GAAA,KAGAzB,EAAA0zL,MAAA7sL,KAAA6iP,cAAA,MAPA,IAQA,EAEAjtO,EAAA7V,UAAA6mC,SAAA,SAAA8M,GACA,IAAA1zC,KAAA6iP,eAAA7iP,KAAAo/O,UACAp/O,KAAAq/O,eAAAx+O,KAAAb,KAAA4mC,SAAArkC,KAAAvC,KAAA0zC,SAEA,GAAAA,EAAAlnC,MAEA,CACA,IAAAs2O,EAAA1pP,EAAA8qB,QAAAwvB,EAAAlnC,OAAAknC,EAAAlnC,MAAA,CAAAknC,EAAAlnC,OAEA,WAAAxM,KAAA1E,KAAAoiP,eAAAoF,EAAApqP,OAAA,IACAoqP,EAAA,CAAAA,EAAA,KAEA9iP,KAAA+iP,gBAAAD,EACA,MARA9iP,KAAAm3C,aAUAn3C,KAAAgM,yBACA,EAEA4J,EAAA7V,UAAAo3C,WAAA,WACA,GAAAn3C,KAAA6iP,cAAA,CAIA,IAAA9hP,EAAAf,KACA7G,EAAAiJ,KAAArB,EAAA+E,MAAA,SAAAk9O,IACA,IAAA7pP,EAAAL,QAAAiI,EAAA8hP,cAAAG,IACAjiP,EAAAkiP,qBAAA,SAAAD,EAEA,IACAjiP,EAAA8hP,cAAA,GACA7iP,KAAAgM,yBATA,CAUA,EAEA4J,EAAA7V,UAAAkM,QAAA,WACA,OAAAjM,KAAA1E,KAAA24C,WAAAj0C,KAAA1E,KAAA24C,SAAAC,cACAl0C,KAAA6iP,eAAA7iP,KAAA6iP,cAAAnqP,QAAA,CACA,EAEAkd,EAAA7V,UAAAgjP,gBAAA,SAAAG,GACA,IAAAniP,EAAAf,KACAmjP,EAAAnjP,KAAA6iP,cACAO,EAAA,GAEAjqP,EAAAiJ,KAAApC,KAAA8F,MAAA,SAAAk9O,IACA,IAAA7pP,EAAAL,QAAAoqP,EAAAF,EAAApoP,KACAwoP,EAAAviP,KAAAmiP,GACAjiP,EAAAkiP,qBAAA,WAAAD,KACA,IAAA7pP,EAAAL,QAAAqqP,EAAAH,IACAjiP,EAAAkiP,qBAAA,SAAAD,EAEA,IAEAhjP,KAAA6iP,cAAAO,CACA,EAEA,IAAAC,EAAA,SAAA72O,EAAA8nC,GACA,OAAA9nC,QAAA8nC,EAAA9nC,CACA,EAEAoJ,EAAA7V,UAAAwhP,cAAA,WACA,OACAn9O,EAAAi/O,EAAArjP,KAAA1E,KAAAgiP,eAAAt9O,KAAAoiP,kBAAA,GAAA9mP,KAAA6I,SAAAC,GACAC,EAAAg/O,EAAArjP,KAAA1E,KAAAiiP,eAAAv9O,KAAAoiP,kBAAA,GAAA9mP,KAAA6I,SAAAE,GAEA,EAEAuR,EAAA7V,UAAAyhP,YAAA,WACA,OACAp9O,EAAAi/O,EAAArjP,KAAA1E,KAAAkiP,WAAAx9O,KAAAoiP,kBAAA,GAAA9mP,KAAAgJ,KAAAF,GACAC,EAAAg/O,EAAArjP,KAAA1E,KAAAmiP,WAAAz9O,KAAAoiP,kBAAA,GAAA9mP,KAAAgJ,KAAAD,GAEA,EAEAuR,EAAA7V,UAAAkf,MAAA,WACA9lB,EAAA0I,QAAA7B,KAAA8F,MAAA,SAAAlE,GACA,SAAAA,EAAAtG,KAAA6mP,kBACAvgP,EAAAe,OAAA2xI,UAGA1yI,EAAAuN,mCAEA,IAEAnP,KAAA21C,MAAA8E,QACAz6C,KAAAgP,iBACAhP,KAAAsjP,aAAA,KACAtjP,KAAAujP,gBAAA,IACA,EAEA3tO,EAAA7V,UAAAiiP,kBAAA,WACA,IAAAjhP,EAAAf,KACAA,KAAAwjP,uBACA,IAAAC,EAAA1iP,EAAA4B,OAAA0E,YACAC,YAAAvG,EAAAwhP,qBAAA,CAAA/+L,SAAA,IAEArqD,EAAAiJ,KAAAqhP,GAAA,SAAAC,GACA3iP,EAAAmH,QAAAw7O,GACAA,EAAA77O,OAAA9G,EAAAwiP,gBAAAxiP,EAAAzF,KAAA8iP,iBACA,GACA,EAEAxoO,EAAA7V,UAAA2zC,OAAA,SAAAp4C,GAIA,GAHA0E,KAAAif,QACAjf,KAAAwjP,uBAEAloP,EAAA,CAGA,IAAAyF,EAAAf,KACAe,EAAAq+O,WAAA,EACAr+O,EAAA8hP,cAAA,GAEA9hP,EAAA4iP,oBACA5iP,EAAA63B,aAAAt9B,EAAAs9B,aACA73B,EAAAitM,kBAAA1yM,EAAAs9B,aAAA73B,EAAAu+O,mBAAA,EAAAv+O,EAAAzF,KAAAq9C,UAEA53C,EAAAzF,KAAAm7C,iBACA11C,EAAAosM,cAAA7xM,EAAAs9B,aAAA73B,EAAAzF,KAAAq9C,UAEA,IAAAirM,EAAA7iP,EAAA4B,OAAA0E,YACAC,YAAAvG,EAAAuhP,oBAAA,CAAA9+L,SAAA,IAEAqgM,EAAA,GA4CA,OA1CA1qP,EAAAiJ,KAAAwhP,GAAA,SAAAE,GACA/iP,EAAAmH,QAAA47O,GACA/iP,EAAAgjP,aAAAD,GAEA/iP,EAAAijP,gBAAAF,IAEA,IAAArzL,GACAC,wBACAozL,EAAAv+O,SACAxE,EACA+iP,EAAA39O,gBACA/M,EAAA+O,KACA,KACApH,EAAA40C,MACAv8C,EAAA+O,MAGA07O,EAAAhjP,KAAAijP,EAAAj8O,OAAA9G,EAAAwiP,gBAAAxiP,EAAAzF,KAAA8iP,mBACAr9O,EAAAkjP,sBAAAH,EACA,IAEAD,EAAAhjP,KAAAE,EAAA+gP,WAAAxmP,IAEAqpB,YAAA,WACA,IAAAu/N,EAAAnjP,EAAAojP,wBAAApjP,EAAAzF,KAAAgiP,eAAAv8O,EAAAzF,KAAAkiP,WAAA/9N,WAAA1e,EAAA40C,MAAA/vC,IAAA,UAAA7E,EAAAqjP,uBACArjP,EAAAwiP,gBACA39O,IAAA,CACAoH,MAAAk3O,IAEA,SAAAnjP,EAAAzF,KAAA0iP,mBAAA,eAAAj9O,EAAAzF,KAAAurC,QACA1tC,EAAA4+B,OAAA,WACA,IAAAyxJ,EAAA,EACA,WAAAzoL,EAAAzF,KAAA0iP,kBACAx0D,GAAAzoL,EAAA40C,MAAA,GAAA9R,YAAA9iC,EAAA40C,MAAA3oC,SAAA,EACA,UAAAjM,EAAAzF,KAAA0iP,oBACAx0D,EAAAzoL,EAAA40C,MAAA,GAAA9R,YAAA9iC,EAAA40C,MAAA3oC,SAEAjM,EAAA40C,MAAAvP,WAAAojJ,EACA,GAEA,IAEAhnL,EAAA+E,IAAAs8O,EA5DA,CA6DA,EAEAjuO,EAAA7V,UAAAkgP,sBAAA,WACA,OAAAjgP,KAAA1E,KAAAsiP,eACA59O,KAAA1E,KAAA+oP,gCACA,IAAArkP,KAAAs/O,kBACA,EAEA1pO,EAAA7V,UAAA4jP,kBAAA,WACA3jP,KAAA6wM,WAAA,EACA7wM,KAAAskP,cAAA,EACAtkP,KAAAukP,YAAA,EACAvkP,KAAAw/O,aAAA,EACAx/O,KAAAmtM,eAAA,EAEAntM,KAAAigP,0BACAjgP,KAAAs/O,mBAAA,EACA,EAEA1pO,EAAA7V,UAAAkkP,sBAAA,SAAAO,GACAxkP,KACAukP,aACA,EAEA3uO,EAAA7V,UAAA0kP,sBAAA,WACAzkP,KACAukP,aACA,EASA3uO,EAAA7V,UAAA2kP,uBAAA,SAAAC,EAAAC,GACA,IACAC,EAAA1rP,EAAAijH,KAAAjjH,EAAAohB,MAAAoqO,GADA3kP,KACA1E,KAAAyiP,gBAMA,OALA8G,EAAAC,WAAA,CACA3sN,QAAAwsN,EACAhsN,QAAAisN,EAAAjsN,QACAC,aAAA+rN,EAAAjsP,QAEAmsP,CACA,EAuBAjvO,EAAA7V,UAAA8hP,UAAA,SAAAvmP,GACA,IAAAyF,EAAAf,KACA+9O,EAAAh9O,EAAAzF,KAAAyiP,eACA,IAAAA,GAAA,IAAAA,EAAArlP,OACA,OAAA4C,EAEA,IA3BAk5I,EAAAuwG,EACAC,EAMAC,EACAC,EAmBAC,GA3BA3wG,EA2BAl5I,EAAA68B,QA3BA4sN,EA2BA,SAAAK,GACA,OA5CA,SAAAA,EAAAC,GAEA,OADAlsP,EAAA+N,IAAAm+O,GAAA,SAAAC,GAAA,OAAAF,EAAAE,EAAA,IACAtyO,KAJA,IAKA,CAyCAuyO,CAAAH,EAAArH,EACA,EA5BAiH,EAAA7rP,EAAA+N,IAAAstI,GAAA,SAAAriI,GACA,OACAvB,IAAAm0O,EAAA5yO,GACA3F,MAAA2F,EAEA,IACA8yO,EAAA,GACAC,EAAA,GACA/rP,EAAAiJ,KAAA4iP,GAAA,SAAAQ,GACA,IAAAvvF,EAAAgvF,EAAAO,EAAA50O,KACAqlJ,IACAA,EAAA,GACAgvF,EAAAO,EAAA50O,KAAAqlJ,EACAivF,EAAArkP,KAAAo1J,IAEAA,EAAAp1J,KAAA2kP,EAAAh5O,MACA,IACA04O,GAaAO,EAAAtsP,EAAA+N,IAAAi+O,GAAA,SAAAlvF,GACA,OAAAl1J,EAAA2jP,uBAAAzuF,EAAA36J,EACA,IAEA,OACAs9B,aAAAt9B,EAAAs9B,aACAD,QAAAx/B,EAAAijH,KAAA9gH,EAAAq9B,QAAAolN,GACA5lN,QAAAstN,EAEA,EAEA7vO,EAAA7V,UAAAikP,gBAAA,SAAAhB,GACA,IAAAjiP,EAAAf,KACAgjP,EAAAuB,YAAAxjP,EAAAwjP,YACAvB,EAAAnyC,WAAA9vM,EAAA8vM,WACAmyC,EAAAsB,cAAAvjP,EAAAujP,aACA,EAEA1uO,EAAA7V,UAAA2lP,mBAAA,SAAAvzO,GACAnS,KACAykP,wBADAzkP,KAEA4O,WAAAuD,GACAA,EAAA5M,SAAAxM,QACA,EAEA6c,EAAA7V,UAAA4lP,gBAAA,WAEA,IADA,IAAA5kP,EAAAf,KACAvH,EAAAsI,EAAA+E,KAAApN,OAAA,EAAAD,GAAA,EAAAA,IACA,YAAAsI,EAAA+E,KAAArN,GAAA6C,KAAA6mP,iBACA,OAAAphP,EAAA+E,KAAArN,GAEA,WACA,EAEAmd,EAAA7V,UAAA6lP,iBAAA,WACA,QAAAntP,EAAA,EAAAA,EAAAuH,KAAA8F,KAAApN,OAAAD,IACA,YAAAuH,KAAA8F,KAAArN,GAAA6C,KAAA6mP,iBACA,OAAAniP,KAAA8F,KAAArN,GAEA,WACA,EAEAmd,EAAA7V,UAAA8lP,kBAAA,WACA,OAAA7lP,KAAA1E,KAAAyiP,gBAAA/9O,KAAA1E,KAAAyiP,eAAArlP,OAAA,CACA,EAEA,IAiBAotP,EAAA,EAEA,GAAAjsP,OAAAC,SAAAC,OAAArB,OAAA,CACA,IAAAqtP,EAAAvwO,EAAAvC,cAAApZ,OAAAC,SAAAC,OAAAlB,UAAA,IACA,GAAAktP,EAAAC,cAAA,CACA,IAAAC,EAAA/sO,SAAA6sO,EAAAC,cAAA,IACAC,EAAA,GAAAA,EAAA,OACAH,EAAAG,EACA,CACA,CAmoCA,OAjoCArwO,EAAA7V,UAAAokP,wBAAA,SAAAl3O,EAAAi5O,EAAAnG,EAAAoG,GACA,GAAAA,GAAA,eAAAnmP,KAAA1E,KAAAurC,QAAA7mC,KAAA1E,KAAA+iP,iBACA,iBAAAr+O,KAAA1E,KAAA0iP,mBACAh+O,KAAAujP,gBACA39O,IAAA,CACAyqC,MAAArwC,KAAA1E,KAAA0iP,oBAEA,IACA,qBAAAh+O,KAAA1E,KAAAurC,QAAA,aAAA7mC,KAAA1E,KAAAurC,OACA,cAEA,GAGA,IAAAu/M,EACAn1N,EAAAjxB,KAAAuF,SAAA,GAAA0rB,WACAo1N,EAAArmP,KAAAoiP,kBAAA,GAAA9mP,KACAgrP,EAAA,OAAAD,EAAA5/O,WAAAL,IAAAigP,EAAA5/O,KACA8/O,EAAA,OAAAF,EAAA1/O,YAAAP,IAAAigP,EAAA1/O,MACA,GAAA2/O,GAAAC,EAAA,CAEA,GADAt1N,EAAApY,aAAAoY,EAAA0S,aACA,CACA,IAAAimG,EACA34G,EAAA2S,YACA3S,EAAAtY,YACAO,SAAA9f,EAAA63B,GAAArrB,IAAA,sBACAsT,SAAA9f,EAAA63B,GAAArrB,IAAA,uBACAwgP,EAAApmP,KAAAuF,SAAA,GAAAuG,wBAAAkB,MAAA48H,CACA,MACAw8G,EAAApmP,KAAAuF,SAAA,GAAAuG,wBAAAkB,KAEA,MAEA,IAAAA,EAGAA,EADA,SAAAhN,KAAA1E,KAAA0iP,kBACA/wO,EAAAi5O,EAEA,EAAAj5O,EAAAi5O,EAGA,IAAAM,EAAAxmP,KAAAymP,mBAEA,kBAAAzmP,KAAA1E,KAAAurC,OAAA,CAEA,IADA,IAAApuC,EAAA,EACAA,EAAA+tP,EAAA,GACAx5O,IAAAC,EAAAi5O,EACAztP,IAGA2tP,EAAA,WAAApmP,KAAA1E,KAAA0iP,kBAAAhxO,EAAA,EAAAC,EAAAD,CACA,wBAAAhN,KAAA1E,KAAAurC,OAAA,CACA2/M,IAAAxmP,KAAAukP,cACAiC,EAAAxmP,KAAAukP,aAGA,IADA9rP,EAAA,EACAuU,EAAAC,EAAAi5O,GAAAnG,GAAAtnP,EAAA+tP,EAAA,GACAx5O,IAAAC,EAAAi5O,EACAztP,IAEAuH,KAAA0mP,wBAAA1mP,KAAAsjP,eACAt2O,GAAAhN,KAAAsjP,aAAA/9O,SAAAqS,YAAA,IAEAwuO,EAAAp5O,CACA,8BAAAhN,KAAA1E,KAAAurC,QAAA,aAAA7mC,KAAA1E,KAAAurC,OAAA,CACA2/M,GAAAxmP,KAAAukP,YACA6B,EAAA,GAEAx8G,EADA34G,EAAApY,aAAAoY,EAAA0S,aAEA1S,EAAA2S,YACA3S,EAAAtY,YACAO,SAAA9f,EAAA63B,GAAArrB,IAAA,sBACAsT,SAAA9f,EAAA63B,GAAArrB,IAAA,uBACA,EANA,IAQA+gP,EAAA3mP,KAAAuF,SAAA,GAAAuG,wBAAAkB,MAEA,IAAA25O,IACAA,EAAA3mP,KAAAuF,SAAAqS,cAGAwuO,EAAAO,EAAA/8G,CACA,CACA,CACA,OAAAnqH,WAAA2mO,EACA,EAIAxwO,EAAA7V,UAAAyjP,qBAAA,WACAxjP,KAAAujP,kBACAvjP,KAAAujP,gBAAAnqP,EAAA,UACAyN,SAAA7G,KAAA21C,OAEA31C,KAAA1E,KAAAkjP,eACApB,EAAAH,cAAA,CACAr7O,KAAA5B,KACAuF,SAAAvF,KAAAujP,gBACArG,SAAA,sBACA3J,WAAA,aACAS,cAAAh0O,KAAA1E,KAAAqjP,qBACApkF,OAAAv6J,KAAA1E,KAAAmjP,gBAAA,8BACA11O,UAAA/I,KAAA1E,KAAA45O,cACA7pJ,YAAArrF,KAAA1E,KAAAojP,4BAAA1+O,KAAA21C,MAAA,GACAklH,kBAAA76J,KAAA1E,KAAAu/J,kBACAC,YAAA96J,KAAA1E,KAAAw/J,eAKA96J,KAAA4mP,gCACA,EAEAhxO,EAAA7V,UAAA8/O,2BAAA,WACA7/O,KAAAujP,iBAGAvjP,KAAA4mP,gCACA,EAEAhxO,EAAA7V,UAAA6mP,+BAAA,WACA,IAAA7lP,EAAAf,KACA2kB,YAAA,WACA,IAAAu/N,EAAAnjP,EAAAojP,wBAAApjP,EAAAzF,KAAAgiP,eAAAv8O,EAAAzF,KAAAkiP,WAAA/9N,WAAA1e,EAAA40C,MAAA/vC,IAAA,UAAA7E,EAAAqjP,uBAEA,SAAArjP,EAAAzF,KAAA0iP,kBACAj9O,EAAAwiP,gBACA39O,IAAA,CACAoH,MAAAk3O,EACA/2O,YAAA,SAEA,WAAApM,EAAAzF,KAAA0iP,kBACAj9O,EAAAwiP,gBACA39O,IAAA,CACAoH,MAAAk3O,EACAj3O,OAAA,WAEA,UAAAlM,EAAAzF,KAAA0iP,mBACAj9O,EAAAwiP,gBACA39O,IAAA,CACAoH,MAAAk3O,EACAh3O,WAAA,QAGA,GACA,EAEA0I,EAAA7V,UAAA+hP,WAAA,SAAAxmP,EAAAsmP,EAAAiF,EAAApG,GACA,GAAAzgP,KAAA6F,OAAA,CAEA,IAAA9E,EAAAf,KAEAe,EAAAyiP,uBAGAziP,EAAAwE,SAAAqD,YAAA,sBAEA7H,EAAAq+O,WAAA,EAEAwC,KAAA7gP,EAAA8gP,UAAAvmP,GACAyF,EAAA63B,aAAAgpN,EAAAhpN,aAEA,IAAAkuN,EAAA/lP,EAAAzF,KAAAwrP,WAAA,KAEAC,EAAAhmP,EAAA4kP,kBACAqB,EAAAD,KAAAE,UACAC,EAAA/tP,EAAAohB,MAAAqnO,EAAAzpN,SAEAp3B,EAAA8kP,qBAAAmB,GAAAE,GAAA/tP,EAAAguP,QACAhuP,EAAAijH,KAAA4qI,EAAAjmP,EAAAzF,KAAAyiP,gBACA5kP,EAAAijH,KAAA8qI,EAAAnmP,EAAAzF,KAAAyiP,mBACAmJ,EAAApC,WAAA3sN,QAAA6uN,EAAAlC,WAAA3sN,QAAAuP,OAAAw/M,EAAApC,WAAA3sN,SACAp3B,EAAA2kP,mBAAAqB,IAGA,IAAApuN,EAAAipN,EAAAjpN,QACAR,EAAAypN,EAAAzpN,QAqCA,OAnCA78B,EAAAuiB,OACA7d,KAAAonP,UAAA9rP,EAAAuiB,MAAAupO,UACApnP,KAAAs/O,mBAAAhkP,EAAAuiB,MAAAwpO,QAAA/rP,EAAAuiB,MAAAupO,WAEApnP,KAAAonP,UAAApnP,KAAAonP,WAAA,EAGArmP,EAAAzF,KAAAklP,oBAAAz/O,EAAAzF,KAAAgsP,qBACAnvN,EAAAh/B,EAAAghB,OAAAge,GAAA,SAAAzR,GACA,YAAAtgB,IAAAsgB,EAAAogO,IAAA,OAAApgO,EAAAogO,EACA,IACA/lP,EAAAzF,KAAA2iP,oBACA9lN,EAAAh/B,EAAAghB,OAAAge,GAAA,SAAAzR,GACA,OAAA3lB,EAAA4B,OAAA4kP,WAAA7gO,EAAA3lB,EAAAzF,KAAAksP,eACA,MAGAzmP,EAAAzF,KAAA8iP,kBAAAr9O,EAAA0mP,eACAtvN,IAAAq2D,WAGAr1F,EAAAiJ,KAAA+1B,GAAA,SAAAuvN,GACA,IAAA1G,EAAA7nP,EAAA4d,UAAAhW,EAAA+E,KAAA,CACAlL,GAAA8sP,EAAAZ,KAEA9F,IACAA,EAAAn7C,QAAAltK,EAAA+uN,GACA1G,EAAA2G,cAEAxvN,EAAAh/B,EAAAghB,OAAAge,GAAA,SAAAuR,GACA,OAAAA,IAAAg+M,CACA,IAEA,IAEAllP,EAAA0E,IAAAixB,GAAA,SAAAyvN,GACA,IAAAC,EAAA9mP,EAAA4B,OAAAkjL,KAAA+hE,EAAA7mP,IAAAzF,KAAAwrP,WAEA,OAAA/lP,EAAAqhP,kBAAA1pP,OAAA,EACA8J,EAAAO,OAAAhC,EAAAqhP,mBAAA,SAAAsF,EAAAl7O,EAAAhL,GACA,OAAAkmP,IAEAt+N,OAAAuM,cAAAnpB,EAAAlR,KAAA8H,WACAoS,EAAA7B,UAAAnH,GAGAq7O,EAAA3kP,WAAAC,sBAAAqJ,EAAAlR,KAAA8H,WAGAC,SAAAwkP,GAAA,GACA,CAAA9mP,EAAAzF,KAAAo8C,YAAAkwM,IAEAtkP,MAAA,SAAAC,GACA,GAAAA,EAAAC,gBACA,OAAAgS,EAAA7B,UAAAnH,EAEA,IACA,SAEAgJ,EAAA7B,UAAA5S,EAAAqhP,kBAAA,GAEA,IAAA9+O,MAAA,SAAAwkP,GACA/mP,EAAA0lP,mBAAA,EAEAttP,EAAAiJ,KAAA0lP,GAAA,SAAAz+M,GACAA,EAAAliC,SAAApG,EAAAoG,QACA,IACA,IAAA4gP,EAAAhnP,EAAA4B,OAAA0E,YACAC,YAAAwgP,EAAA,CAAAtkM,SAAA,IACAwkM,EAnRA,SAAA1sP,EAAAgJ,GAIA,IAHA,IAAA7L,EAAA,EAAA07B,EAAA,EACA8zN,EAAA,GACAvhO,EAAA,CAAAuhO,GACAxvP,EAAA6C,EAAA5C,QACAy7B,IAAA7vB,IACA6vB,EAAA,EACA8zN,EAAA,GACAvhO,EAAA7lB,KAAAonP,IAEAA,EAAApnP,KAAAvF,EAAA7C,IACAA,IACA07B,IAEA,OAAAzN,CACA,CAoQAwhO,CAAAH,EAAAjC,GACA,OAAAtjP,EAAAO,OAAAilP,GAAA,SAAAnkC,EAAAokC,EAAAE,GACA,IAAAC,EAAA,GAkCA,OAjCAjvP,EAAAiJ,KAAA6lP,GAAA,SAAAjF,EAAAqF,GACA,IAAA7mP,EAAA2mP,EAAArC,EAAAuC,EACA,IAAA7mP,EACAwhP,EAAA1nP,KAAAomP,SAAA,EACAlgP,EAAA,IAAA22B,EAAAz/B,SACAsqP,EAAA1nP,KAAAqmP,QAAA,GAEAngP,EAAA,GACAT,EAAAkjP,sBAAA8D,EAAAvmP,EAAA,IAEAT,EAAAmH,QAAA86O,GAEA,IAAA4E,EAAAzvN,EAAA32B,GAEAwhP,EAAApoP,GAAAgtP,EAAAd,GACA9D,EAAArgP,OAAA5B,EAAA4B,OAAAkjL,KAAA+hE,EAAA7mP,IAAAzF,KAAAwrP,WACA9D,EAAA78O,gBAAAyhP,EAAA7mP,EAAAzF,KAAA+O,UACA24O,EAAAn9C,QAAAltK,EAAAivN,GACA7mP,EAAAzF,KAAAkjP,gBACAwE,EAAAz9O,SAAAjK,KAAA,KAAAssP,EAAA7mP,EAAAzF,KAAA+O,WACA,SAAA24O,EAAA1nP,KAAA6mP,kBACAa,EAAAz9O,SAAAI,SAAA,uBAGAq9O,EAAAz9O,SAAAK,IAAA,eACAo9O,EAAAz9O,SAAAK,IAAA,wBAEA7E,EAAAzF,KAAA2iP,mBAAAl9O,EAAA4B,OAAA4kP,WAAAK,EAAA7mP,EAAAzF,KAAAksP,kBACAzmP,EAAAijP,gBAAAhB,GACAoF,EAAAvnP,KAAAmiP,EAAAn7O,OAAA9G,EAAAwiP,gBAAAxiP,EAAAzF,KAAA8iP,kBAAAr9O,EAAA0mP,aAAAhH,IACA1/O,EAAA0lP,qBAEA,IACAjkP,EAAA+E,IAAA6gP,GAAA9kP,MAAA,WACA,GAAAvC,EAAAzF,KAAA8iP,kBAAAr9O,EAAAunP,iBACAzB,IAAA9lP,EAAAzF,KAAAwiP,mBAAA/8O,EAAA2+O,4BAAA,CACA,IAAA/7M,EAAA5iC,EAAA40C,MAAAj/B,KAAA,gBACA3V,EAAA+/O,aAAAn9M,EAAA5iC,EAAAunP,gBACA,CAEA,GAAAvnP,EAAA0mP,aACA,kBAAA1mP,EAAAzF,KAAAurC,OAAA,CACA,IAAAhD,EAAA9iC,EAAA40C,MAAAj/B,KAAA,eACA3V,EAAA4vD,mBAAAvqB,WAAAvC,EAAA9iC,EAAAwnP,eACA,MACA5kN,EAAA5iC,EAAA40C,MAAAj/B,KAAA,gBACA3V,EAAA4vD,mBAAA7iD,UAAA61B,EAAA5iC,EAAAunP,gBACA,CAEA,GACA,SACAE,MAAAT,GACAzkP,MAAA,SAAAykP,GACAA,EAAArvP,OAAA,IACAqI,EAAAkjP,sBAAA8D,IAAArvP,OAAA,IACA,IAAAqvP,EAAA,GAAA5iP,WAAAzM,QAAA,UAAAqvP,EAAA,GAAA5iP,WAAA,GAAA7J,KAAAoK,KACA3E,EAAAqjP,uBAAA,EACA,IAAA2D,EAAA,GAAA5iP,WAAAzM,QAAA,sBAAAqvP,EAAA,GAAA5iP,WAAA,GAAA7J,KAAAoK,OAAAqiP,EAAA,GAAA5iP,WAAA,GAAA7J,KAAAmT,iBAAAs5O,EAAA,GAAA5iP,WAAA,GAAA7J,KAAAgT,oBACAvN,EAAA0nP,sBAAA,GAEA1nP,EAAA6+O,uBAEAzmP,EAAAiJ,KAAA2lP,GAAA,SAAA/E,EAAAxhP,GAOA,GANAT,EAAAqjP,uBACApB,EAAAz9O,SACAK,IAAA,CACAoxC,SAAA,WAGA,aAAAj2C,EAAAzF,KAAAurC,QAAA9lC,EAAAyhP,mBAAA9pP,OAAA,GAEA,IADA,IAAAgwP,EAAA,GACAjwP,EAAA,EAAAA,EAAAsI,EAAAyhP,mBAAA9pP,OAAAD,IACAiwP,EAAA7nP,KAAAE,EAAA4B,OAAA0E,YAAA28C,WAAAjjD,EAAAyhP,mBAAA/pP,KAGA,IAAA4qD,EAAAjqD,EAAA,iCACAm8M,EAAAn8M,EAAA,mCAuBA,GArBAD,EAAAiJ,KAAAi7O,GAAA,SAAA3mO,GACA2sC,EAAAz9C,IAAA8Q,EAAAssO,EAAAz9O,SAAAK,IAAA8Q,GAAA,IACA,IAEA2sC,EAAAz9C,IAAA,CAAAzB,SAAA,aACAoxM,EACA3vM,IAAA,CACAoxC,SAAA,SACA7yC,SAAA,GACAgK,OAAA60O,EAAAz9O,SAAAsS,cAAA9W,EAAAzF,KAAAiiP,eAAA,OAEA12O,SAAAw8C,GAEA2/L,EAAAz9O,SACAK,IAAA,CACAzB,SAAA,WACA8I,OAAA,IAEApG,SAAA0uM,GAGA,IAAAmzC,EAAAhwP,QAAAgwP,EAAA,GAAAptP,KAAA6mP,iBAAAn3L,SAAA,SACA,IAAAssF,EAAAoxG,EAAA,GACAA,EAAA,GAAAA,EAAA,GACAA,EAAA,GAAApxG,CACA,CAEA,IAAA7+I,EAAA,EAAAA,EAAAiwP,EAAAhwP,OAAAD,IAAA,CACA,IAAA0pP,EAAAuG,EAAAjwP,GAAA6C,KAAA6mP,iBACAA,EAAAn3L,SAAA,SACAjqD,EAAAmH,QAAAwgP,EAAAjwP,IACAiwP,EAAAjwP,GAAAoP,OAAA0tM,GAAAjyM,MAAA,SAAAw1C,GACA,IAAAl3C,EAAAb,EAAA4nP,mBAAAD,EAAA,8BACA9mP,EAAA2D,SAAAI,SAAA,cACA,IAAAe,EAAA,IAAAgiP,EAAAhwP,QAAAsqP,EAAAz9O,SAAAsS,cAAA,QAAAmrO,EAAAz9O,SAAAsS,cAAA,KACAjW,EAAA2D,SAAAK,IAAA,CACAzB,SAAA,WACAI,OAAA,EACAkC,MAAAu8O,EAAAz9O,SAAAqS,aAAA,KACAlR,MACAuG,OAAA,EACAw+B,WAAA,SACAuL,SAAA,SACA7oC,OAAA60O,EAAAz9O,SAAAsS,cAAA,KACA7K,MAAAg2O,EAAAz9O,SAAAqS,aAAA,OAEA7W,EAAA6nP,qBAAAhnP,EACA,KACAugP,EAAAn3L,SAAA,WACAjqD,EAAAmH,QAAAwgP,EAAAjwP,IACAiwP,EAAAjwP,GAAAoP,OAAA0tM,GAAAjyM,MAAA,SAAAw1C,GACA,IAAAl3C,EAAAb,EAAA4nP,mBAAAD,EAAA,gCACA9mP,EAAA2D,SAAAI,SAAA,eACA/D,EAAA2D,SAAAK,IAAA,CACAzB,SAAA,WACAI,OAAA,EACAmC,KAAAs8O,EAAAz9O,SAAAsS,cAAA,KACApR,KAAAu8O,EAAAz9O,SAAAqS,aAAA,KACA3K,OAAA,EACAw+B,WAAA,SACAuL,SAAA,SACA7oC,OAAA60O,EAAAz9O,SAAAsS,cAAA,KACA7K,MAAAg2O,EAAAz9O,SAAAqS,aAAA,OAEA7W,EAAA6nP,qBAAAhnP,EACA,KAEA,IAAAgmP,EAAAzvN,EAAA32B,GACAknP,EAAAjwP,GAAA0N,gBAAAyhP,EAAA7mP,EAAAzF,KAAA+O,SACA,EAEAtJ,EAAAzF,KAAA8iP,kBAAAr9O,EAAA0mP,aACApkM,EAAAx8C,SAAA9F,EAAAwiP,iBAEAlgM,EAAAu4F,UAAA76I,EAAAwiP,iBACAxiP,EAAA6nP,qBAAA5F,GACAA,EAAAz9O,SAAAI,SAAA,eACA,EAEA5E,EAAAiJ,gBAAA,YAAArG,SAAA5C,EAAAiJ,gBAAA,WAAArG,UACAq/O,EAAAz9O,SAAAK,IAAA,CAAAs8C,OAAA,aAGA,IAAAuO,GACAC,wBACAsyL,EAAAz9O,SACAxE,EACAiiP,EAAA78O,iBACA,SAAAmS,GACAvX,EAAA8nP,oBAAA7F,EAAA1qO,EACA,GACA,KACAvX,EAAA40C,OACA,SAAAr9B,GACAvX,EAAA+nP,wBAAA9F,EAAA1qO,EACA,IAIA,OAAA0qO,EAAA1nP,KAAAoL,UAAAN,IAAA48O,EAAA1nP,KAAAoL,KACA,OAAAs8O,EAAA1nP,KAAAsL,aAAAR,IAAA48O,EAAA1nP,KAAAsL,SACA7F,EAAA0nP,sBAAA1nP,EAAAqjP,wBACA,eAAArjP,EAAAzF,KAAAurC,SACA9lC,EAAAwiP,gBAAA39O,IAAA,iBACAo9O,EAAAz9O,SAAAK,IAAA,iBACAo9O,EAAAz9O,SAAAK,IAAA,iBACA7E,EAAA40C,MAAA/vC,IAAA,cAAAo9O,EAAA1nP,KAAAoL,KACA3F,EAAA40C,MAAA/vC,IAAA,iBAAAo9O,EAAA1nP,KAAAsL,QAEA,IAEA7F,EAAAq+O,WAAA,EAEAjmP,EAAAiJ,KAAArB,EAAAs+O,gBAAA,SAAAj8N,GACAA,GACA,IACAriB,EAAAs+O,eAAA,GAEAt+O,EAAAgoP,0BAEAhoP,EAAA2+O,4BACA3+O,EAAA4+O,qCAEA5+O,EAAAiP,eAAA83K,qBAEA/mL,EAAAunP,gBAAAvnP,EAAA40C,MAAAj/B,KAAA,iBACA3V,EAAAzF,KAAAwiP,mBAAA/8O,EAAA2+O,2BAAA,EAAA3+O,EAAAzF,KAAAmiP,WAAA18O,EAAAzF,KAAAiiP,gBAEAx8O,EAAAwnP,eAAAxnP,EAAA40C,MAAAj/B,KAAA,gBACA3V,EAAAzF,KAAAwiP,mBAAA/8O,EAAA2+O,2BAAA,EAAA3+O,EAAAzF,KAAAkiP,WAAAz8O,EAAAzF,KAAAgiP,eACA,IACAh6O,MAAA,WAsCA,OArCAnK,EAAA4+B,OAAA,WAEA,IAAAh3B,EAAA0mP,aAIA,GAAA1mP,EAAAq/O,sBAAA,CAEA,IAAA4C,EAAA7pP,EAAA4d,UAAAhW,EAAA+E,KAAA,CACAlL,GAAAmG,EAAA4B,OAAAm2B,WAAAvsB,SAAAxL,EAAAzF,KAAA6kP,0BAGA6C,IACAA,EAAAz9O,SAAA,GAAAyjP,eAAA,CACAC,SAAA,UACApnL,MAAA,SACAuqF,OAAA,WAGArrJ,EAAAq/O,uBAAA,EAEA,MACA,IAAAr/O,EAAAu+O,qBACAv+O,EAAA+M,UAAA/M,EAAA40C,MAAA,GAAAhS,cACA5iC,EAAA4vD,mBAAA7iD,UAAA/M,EAAA+M,WAEA/M,EAAAqlC,WAAArlC,EAAA40C,MAAA,GAAA9R,aACA9iC,EAAA4vD,mBAAAvqB,WAAArlC,EAAAqlC,aAGArlC,EAAAzF,KAAA8iP,mBAAAyI,GACA9lP,EAAA+/O,aAAA//O,EAAA40C,MAAAj/B,KAAA,gBAGA,IACA3V,EAAAwE,SAAAI,SAAA,sBAEA5E,EAAAkhP,kBACA,IACA32M,OAAA,SAAAhzB,GACAvX,EAAA4B,OAAAyoC,aAAAu/I,gBAAAryK,EACA,GACA,GAlWA,CAmWA,EAEA1C,EAAA7V,UAAA4oP,mBAAA,SAAAD,EAAAhjP,EAAAwjP,GACA,OAAA/vP,EAAAmI,KAAAonP,GAAA,SAAAv2O,GACA,OAAAA,EAAA7W,KAAA6mP,mBAAAz8O,GACAyM,EAAA5M,WACA4M,EAAA5M,SAAAk9B,SAAAymN,EACA,GACA,EAEAtzO,EAAA7V,UAAA6oP,qBAAA,SAAA5F,GACAA,EAAAz9O,SAAA7J,GAAA,iCAAAsE,KAAAslC,iBAAA/iC,KAAAvC,OACAgjP,EAAAz9O,SAAA7J,GAAA,mBAAAsE,KAAAmpP,eAAA5mP,KAAAvC,KAAAgjP,IACAA,EAAAz9O,SAAA7J,GAAA,sBAAAsE,KAAAulC,gBAAAhjC,KAAAvC,MACA,EAEA4V,EAAA7V,UAAAylC,WAAA,SAAAC,GACA,OAAAA,EAAAC,SACAD,EAAAjL,cAAAkL,SACA,EAAAv6B,QAAAs6B,EAAAt6B,QAAAC,QAAAq6B,EAAAr6B,SACA,EAEAwK,EAAA7V,UAAAulC,iBAAA,SAAAG,GACA,IAAA2jN,EAAAppP,KAAAwlC,WAAAC,GAAA,GACAw5M,GAAA,EACAH,EAAAsK,EAAAj+O,QACA4zO,EAAAqK,EAAAh+O,QACA,IAAAi+O,EAAAjwP,EAAAqsC,EAAA8iG,eACAt7H,EAAAjN,KAAA1E,KAAAgiP,eACA+L,EAAA5mN,SAAA,kBACA4mN,EAAA5mN,SAAA,oBAAAvpB,SAAAmwO,EAAAzjP,IAAA,SACAxM,EAAAiwP,EAAA/uG,SAAA,qBAAA10I,IAAA,CAAAa,MAAA4iP,EAAAr8O,QAAAC,EAAA,OACA,IAAAiM,SAAAmwO,EAAAzjP,IAAA,UACAxM,EAAAiwP,EAAA/uG,SAAA,qBAAA10I,IAAA,CAAAa,KAAA4iP,EAAAr8O,QAAAC,EAAA,QAGAw4B,EAAA6lB,iBACA,EAEA11C,EAAA7V,UAAAupP,YAAA,SAAAC,GACA,GAAAvpP,KAAAwpP,gBAAAD,EAAA,KAAAvpP,KAAAwpP,eAAA/8C,OAAA,IAEAzsM,KAAAwpP,eAAA/8C,OAAAnlJ,QAAA,CAAA7gD,KAAA,QACA,IAAAuG,EAAAhN,KAAAwpP,eAAA/8C,OAAA70L,aACAnR,EAAAzG,KAAAwpP,eAAA/iP,KACAE,EAAA3G,KAAAwpP,eAAA7iP,MAEAF,EAAA6gD,QACA,CACA7gD,MAAAuG,EAAA,MAEA,CACA60C,SAAA,WACAp7C,EAAAb,IAAA,CAAA6lC,WAAA,UACA,IAIA9kC,EAAA2gD,QACA,CACA7gD,KAAAuG,EAAA,MAEA,CACA60C,SAAA,WACAl7C,EAAAf,IAAA,CAAA6lC,WAAA,UACA,IAxBAzrC,KA2BAwpP,eAAA,IACA,CACA,EAEA5zO,EAAA7V,UAAAwlC,gBAAA,SAAAE,GACA,IACA8jN,EADAF,EAAAjwP,EAAAqsC,EAAA8iG,eAQAkhH,GAHAF,EAHAF,EAAA5mN,SAAA,gBAGA4mN,EAFAjwP,EAAAiwP,EAAA/uG,SAAA,sBAKAA,SAAA,gBACAovG,EAAAH,EAAAjvG,SAAA,eACAphI,SAAA9f,EAAA,oBAAAwM,IAAA,UAEA,GAAAq5O,GAAAj/O,KAAA8/O,WAAA,CAOA,IAAA6J,EACAC,EAPA5pP,KAAAspP,YAAAC,GAEAvK,IACAA,EAAAuK,EAAA3jP,IAAA,SAKA6/B,EAAAC,SACAikN,EAAAlkN,EAAAC,QAAA,GAAAv6B,QACAy+O,EAAAnkN,EAAAC,QAAA,GAAAt6B,UAEAu+O,EAAAlkN,EAAAt6B,QACAy+O,EAAAnkN,EAAAr6B,SAGA,IAAAy6B,EAAAi5M,EAAA6K,EACA7jN,EAAAi5M,EAAA6K,EAEA,GAAA70O,KAAAD,IAAA+wB,GAAA9wB,KAAAD,IAAAgxB,IAAA9lC,KAAA6pP,eAAA,CACA,IAAAC,EAAA5wO,SAAA8lO,IAAA2K,EAAA7K,GACAj3L,EAAAiiM,EAAA,KAEA78O,EAAAjN,KAAA1E,KAAAgiP,eAIA,IAFAwM,GAAA,GAAAJ,EAAAhxP,OAAA,GAAAoxP,GAAA,GAAAL,EAAA/wP,OAAA,IACA6wP,EAAA3jP,IAAA,OAAAiiD,IACAi3L,IAAAC,EACA,OAGA+K,EAAA,GACA9pP,KAAAqhP,gBACArhP,KAAA6pP,gBAAA,EAEAJ,EAAA7jP,IAAA,CACAa,KAAA,EAAAwG,EAAAw8O,EAAA7xO,aAAA,KACA6zB,WAAA,KAEAi+M,EAAA9jP,IAAA,CACA6lC,WAAA,YAEAq+M,EAAA,IACA9pP,KAAAqhP,gBACArhP,KAAA6pP,gBAAA,EAEAH,EAAA9jP,IAAA,CACAa,KAAA,EAAAwG,EAAAy8O,EAAA9xO,aAAA,KACA6zB,WAAA,KAEAg+M,EAAA7jP,IAAA,CACA6lC,WAAA,WAIA,CACA,CACA,EAEA71B,EAAA7V,UAAAopP,eAAA,SAAAnG,EAAAv9M,GACAzlC,KAAAshP,eACAthP,KAAA6pP,gBAAA,EACA7pP,KAAA8/O,YAAA,EACAb,GAAA,EACAD,EAAA,KACA,IACAuK,EADAF,EAAAjwP,EAAAqsC,EAAA8iG,eAKAghH,EAHAF,EAAA5mN,SAAA,gBAGA4mN,EAFAjwP,EAAAiwP,EAAA/uG,SAAA,qBAKA,IAAAzyF,EAAA3uC,SAAAqwO,EAAA3jP,IAAA,SACAoH,EAAAkM,SAAAqwO,EAAA3xO,cAEAumO,EAAAn+O,KAAA1E,KAAA6iP,cAAA,IACAD,EAAAl+O,KAAA1E,KAAA4iP,eAAA,IAEAuL,EAAAF,EAAAjvG,SAAA,gBACAovG,EAAAH,EAAAjvG,SAAA,eAEArtI,EAAAjN,KAAA1E,KAAAgiP,eAEAvoO,KAAAD,IAAA+yC,GAAA76C,GAAAkxO,EACAr2L,GAAA,GACA7nD,KAAA4K,sBAAA,aAAAo4O,EAAA78O,iBACAojP,EAAAjiM,QAAA,CACA7gD,KAAAuG,EAAAC,EAAA,OAEAy8O,EAAApiM,QAAA,CACA7gD,KAAA,UAGAzG,KAAA4K,sBAAA,YAAAo4O,EAAA78O,iBACAojP,EAAAjiM,QAAA,CACA7gD,MAAAuG,EAAAC,EAAA,OAEAw8O,EAAAniM,QAAA,CACA7gD,KAAA,SAGAsO,KAAAD,IAAA+yC,GAAA76C,GAAAmxO,GACAt2L,GAAA,GACA0hM,EAAAjiM,QAAA,CACA7gD,KAAAuG,EAAAmxO,EAAAlxO,EAAA,OAEAy8O,EAAApiM,QAAA,CACA7gD,KAAAuG,EAAAmxO,EAAAnxO,EAAA,SAGAu8O,EAAAjiM,QAAA,CACA7gD,MAAAuG,EAAAmxO,EAAAlxO,EAAA,OAEAw8O,EAAAniM,QAAA,CACA7gD,MAAAuG,EAAAmxO,EAAAnxO,EAAA,QAGAhN,KAAAwpP,eAAA,CAAA/8C,OAAA88C,EAAA5iP,MAAA8iP,EAAAhjP,KAAAijP,KAEAH,EAAAjiM,QAAA,CAAA7gD,KAAA,QACAohD,GAAA,EACA6hM,EAAApiM,QACA,CACA7gD,MAAAuG,EAAA,MAEA,CACA60C,SAAA,WACA6nM,EAAA9jP,IAAA,CAAA6lC,WAAA,UACA,IAIAg+M,EAAAniM,QACA,CACA7gD,KAAAuG,EAAA,MAEA,CACA60C,SAAA,WACA4nM,EAAA7jP,IAAA,CAAA6lC,WAAA,UACA,IAIAzrC,KAAAwpP,eAAA,KAEA,EAEA5zO,EAAA7V,UAAA2mP,qBAAA,WACA,SAAA1mP,KAAA1E,KAAAsiP,gBAAA59O,KAAA+pP,eAAA/pP,KAAA1E,KAAAwiP,kBAKA,EAEAloO,EAAA7V,UAAAgpP,wBAAA,WACA,GAAA/oP,KAAA0mP,uBAAA,CAGA,IAAAxC,EAAAlkP,KAAAmkP,wBAAAnkP,KAAA1E,KAAAgiP,eAAAt9O,KAAA1E,KAAAkiP,WAAA/9N,WAAAzf,KAAA21C,MAAA/vC,IAAA,UAAA5F,KAAAokP,uBACApkP,KAAAujP,gBACA39O,IAAA,CACAoH,MAAAk3O,IAGAlkP,KAAA1E,KAAAm7C,iBAAAz2C,KAAAgqP,wBACAhqP,KAAAiqP,iBATA,CAUA,EAEAr0O,EAAA7V,UAAAiqP,qBAAA,WACA,OAAAhqP,KAAA1E,KAAAuiP,kBAAA,GAAA79O,KAAAs/O,mBAAAt/O,KAAA1E,KAAAuiP,mBAAA,CACA,EAEAjoO,EAAA7V,UAAAgkP,aAAA,SAAAf,GAEAA,EAAAn9C,QAAA,CAAAjoD,MAAA,iBAAAA,MADA59I,KACA44B,cACA,EAEAhjB,EAAA7V,UAAAkqP,gBAAA,WACA,IAAAlpP,EAAAf,KAEAsjP,EAAAviP,EAAA4B,OAAA0E,YAAA28C,WAAAxuC,EAAA7B,UAAA5S,EAAA0hP,sBAAA,CAAAj/L,SAAA,IAEAziD,EAAAinF,SAAAjnF,EAAAq+O,WAAAr+O,EAAAuiP,eAIAviP,EAAAuiP,eACAviP,EAAAmH,QAAAo7O,GACAviP,EAAAgjP,aAAAT,GACAviP,EAAAijP,gBAAAV,GACAA,EAAAz7O,OAAA9G,EAAAwiP,gBAAAxiP,EAAAzF,KAAA8iP,kBACA96O,MAAA,WAWA,GAVAggP,EAAA/9O,SACAI,SAAA,sBACAC,IAAA,oBACAlK,GAAA,oBACAqF,EAAAmpP,qBAAAnpP,EAAA40C,MAAA7nC,YACA/M,EAAA6N,WAAA00O,GACAA,EAAA/9O,SAAAxM,SACAgI,EAAAuiP,aAAA,KACAviP,EAAA4tM,cACA,IACA5tM,EAAAq9O,kBAAAr9O,EAAAunP,kBAAAvnP,EAAAzF,KAAAwiP,kBAAA,CACA,IAAAqM,EAAAppP,EAAA40C,MAAAj/B,KAAA,iBACA3V,EAAAzF,KAAAwiP,kBAAA,EAAA/8O,EAAAzF,KAAAmiP,WAAA18O,EAAAzF,KAAAiiP,gBACAx8O,EAAA+/O,aAAAqJ,EAAAppP,EAAAunP,gBAAAvnP,EAAAmpP,qBACA,CACA,IAEA,EAEAt0O,EAAA7V,UAAA2/O,yBAAA,WACA,OAAA1/O,KAAA1E,KAAAsiP,eAAA59O,KAAA1E,KAAAm7C,cACA,EAEA7gC,EAAA7V,UAAA4/O,mCAAA,WACA,MAAA3/O,KAAA+pP,eAAAhpP,KAAAqpP,kBAAApqP,KAAAm/O,WAAAn/O,KAAA1E,KAAAo8C,YAAA13C,KAAA1E,KAAA2kN,WAAAjgN,KAAA2C,OAGA,GAAA3C,KAAA2gP,mBACA,GAAA3gP,KAAA1E,KAAA8iP,iBAgBA,CACA,OAAAp+O,KAAA2C,OAAAmF,eAAAgG,YAEA,YADA9N,KAAAqqP,sBAIArqP,KAAA21C,MAAA,GAAAhS,aAAA3jC,KAAA21C,MAAA,GAAA98B,aACA7Y,KAAA2wD,mBAAA7iD,YAAA+wO,GACA7+O,KAAAsqP,sBAEA,KA1BA,CACA,kBAAAtqP,KAAA1E,KAAAurC,OAAA,OAEA,GAAA7mC,KAAA2wD,mBAAA7iD,YAAA+wO,EAEA,YADA7+O,KAAAsqP,uBAIA,IAAAC,EAAAvqP,KAAA1E,KAAAsL,QAAA,EACA4jP,EAAAxqP,KAAA2C,OAAA4K,YAAAsK,cACAwoF,EAAArgG,KAAA2C,OAAAmF,eAAA+P,cACA4yO,EAAAD,EAAAnqJ,EAAArgG,KAAA2C,OAAAmF,eAAAgG,aAEA08O,IAAAnqJ,GAAAoqJ,EAAA5L,EAAA0L,IACAvqP,KAAAqqP,qBAEA,MAYA,GAAArqP,KAAA1E,KAAA8iP,iBAqBA,CACA,OAAAp+O,KAAA21C,MAAA7nC,YAEA,YADA9N,KAAAqqP,sBAIArqP,KAAA21C,MAAA,GAAAhS,aAAA3jC,KAAA21C,MAAA,GAAA98B,aACA7Y,KAAA2wD,mBAAA7iD,YAAA+wO,GACA7+O,KAAAsqP,sBAEA,MA9BA,kBAAAtqP,KAAA1E,KAAAurC,OAAA,CACA,GAAA7mC,KAAA2wD,mBAAAvqB,aAAAy4M,EAEA,YADA7+O,KAAAsqP,uBAIAtqP,KAAA21C,MAAA,GAAA9R,YAAA7jC,KAAA21C,MAAA,GAAAh9B,YACA3Y,KAAA2wD,mBAAAvqB,aAAAy4M,GACA7+O,KAAAqqP,qBACA,MACA,IAAAxxO,EAAA7Y,KAAA21C,MAAA,GAAA98B,aACA,OAAAA,EAAA,OAEA7Y,KAAA21C,MAAA,GAAAhS,aAAA9qB,EACA7Y,KAAA2wD,mBAAA7iD,YAAA+wO,EACA7+O,KAAAqqP,sBACArqP,KAAA1E,KAAA4kP,2BAAAlgP,KAAA2wD,mBAAA7iD,YAAA+wO,GACA7+O,KAAAsqP,sBAEA,CAaA,EAEA10O,EAAA7V,UAAA4tN,aAAA,WACA,IAAA5sN,EAAAf,KACAA,KAAA2C,OAAAm1C,gBAAA7M,SACAjrC,KAAA1E,KAAAo8C,YACA,SAAA31B,GACA5oB,EAAAiJ,KAAArB,EAAA2pP,wCAAA,SAAA/pP,GACAA,EAAAsO,QAAA8S,EACA,GACA,IACA,SAAA0nB,GACA1oC,EAAAi/O,oBAAAv2M,EACA,GACA,EAEA7zB,EAAA7V,UAAA2qP,qCAAA,WACA,IAAA3pP,EAAAf,KACA2qP,EAAA5pP,EAAA4B,OAAAm1C,gBAAAhO,wBACA/oC,EAAAi/O,oBAAA2K,GACA,IAAAC,EAAA7pP,EAAA4B,OAAAmM,YAAAi5K,oCAAAhnL,EAAAzF,KAAAo8C,YAEA,OAAAv+C,EAAAghB,OAAAywO,GAAA,SAAAjqP,GACA,IAAA8oC,EAAA1oC,EAAA4B,OAAAm1C,gBAAAhO,wBAGA,MAFA,mBAAAnpC,EAAA,kBACAA,EAAA6pC,iBAAAf,GACAtwC,EAAAguP,QAAAwD,EAAAlhN,EACA,GACA,EAEA7zB,EAAA7V,UAAAgqP,YAAA,WACA,IAAAhpP,EAAAf,KACA,OAAAe,EAAAzF,KAAAklP,qBAEAz/O,EAAAzF,KAAAm7C,gBACA11C,EAAAosM,cACApsM,EAAA63B,aAAA73B,EAAAy+O,aAAAz+O,EAAAu+O,mBAAAv+O,EAAAzF,KAAAq9C,SACA,EAEA/iC,EAAA7V,UAAA4uM,aAAA,WACA,IAAA5tM,EAAAf,KACAe,EAAAinF,SAAAjnF,EAAAq+O,YAIAr+O,EAAAinF,SAAA,EACAjnF,EAAA8pP,kBAEA9pP,EAAAk+O,UACAt6N,YAAA,WACA5jB,EAAA+pP,eACA,QAEA/pP,EAAA+pP,gBAEA,EAEAl1O,EAAA7V,UAAAsqP,oBAAA,WACArqP,KAAAgqP,wBAAAhqP,KAAAmtM,gBACAntM,KAAAynP,cAAA,EACAznP,KAAA2uM,eAEA,EAEA/4L,EAAA7V,UAAAuqP,qBAAA,WACAtqP,KAAAoqP,gBAAApqP,KAAAonP,UAAA,GAAApnP,KAAAonP,UAAApnP,KAAAu/O,qBAAA,EAEAv/O,KAAAoqP,kBACApqP,KAAAynP,cAAA,EACAznP,KAAA2uM,eAEA,EAEA/4L,EAAA7V,UAAA+qP,cAAA,WACA,IAAA/pP,EAAAf,KACAe,EAAA4B,OAAAm1C,gBAAAzM,mBACAtqC,EAAAzF,KAAAo8C,YACA,SAAAp8C,GACA,IAAAsmP,EAAA7gP,EAAA8gP,UAAAvmP,GACAyF,EAAAy+O,cAAAlkP,EAAA68B,QAAAz/B,OAAAkpP,EAAAzpN,QAAAz/B,OACAqI,EAAAosM,cAAA7xM,EAAA68B,QAAAz/B,OAAAqI,EAAAzF,KAAAq9C,SACA53C,EAAAinF,SAAA,EACAjnF,EAAA0mP,aACA1mP,EAAAw+O,sBAEAx+O,EAAAu+O,qBAEAv+O,EAAA0+I,SAAA,EACA1+I,EAAAgqP,kBACAhqP,EAAA+gP,WAAAxmP,EAAAsmP,EAAA7gP,EAAA8/O,gBAAA,GACA9/O,EAAA8/O,gBAAA,CACA,IACA,SAAAp3M,GACA1oC,EAAA0mP,aACAh+M,EAAAiP,KAAA33C,EAAAqmP,UAAArmP,EAAAw+O,oBAEA91M,EAAAiP,KAAA33C,EAAAqmP,UAAArmP,EAAAu+O,mBAEA71M,EAAAkP,SAAA53C,EAAAzF,KAAAq9C,SACAlP,EAAA+O,uBAAAz3C,EAAAzF,KAAAwiP,mBAAA/8O,EAAAzF,KAAAm7C,cACA,IACA,SAAAnuC,GACAvH,EAAAinF,SAAA,EACAjnF,EAAAgqP,kBACAhqP,EAAAgoP,yBACA,GACA,EAEAnzO,EAAA7V,UAAA8qP,gBAAA,WACA,IAAA9pP,EAAAf,KACA,GAAAe,EAAAinF,UAAAjnF,EAAAiqP,cAAA,CAIA,IAAAA,EAAAjqP,EAAA4B,OAAA0E,YAAA28C,WAAAxuC,EAAA7B,UAAA5S,EAAA4hP,uBAAA,CAAAn/L,SAAA,IAEAziD,EAAAinF,UAAAjnF,EAAAiqP,gBAIAjqP,EAAAiqP,gBACAjqP,EAAAmH,QAAA8iP,GACAjqP,EAAAijP,gBAAAgH,GACAA,EAAAnjP,OAAA9G,EAAA40C,MAAA50C,EAAAzF,KAAA8iP,kBAXA,CAaA,EAEAxoO,EAAA7V,UAAAgrP,gBAAA,WACA,IAAAhqP,EAAAf,KAEAe,EAAAiqP,gBACAjqP,EAAA6N,WAAA7N,EAAAiqP,eACAjqP,EAAAiqP,cAAAzlP,SAAAxM,SACAgI,EAAAiqP,cAAA,KAEA,EAEAp1O,EAAA7V,UAAA+oP,wBAAA,SAAA9F,EAAA1qO,GACA,IAAAvX,EAAAf,KACA,gBAAAe,EAAAzF,KAAAoiP,eAEA,GAAAplO,GAAAvX,EAAAkqP,6BAAA3yO,GAAA,CACA,IAAA4yO,EAAAnqP,EAAA8hP,cAAA/pP,QAAAkqP,IACA,IAAAkI,GACAnqP,EAAA8hP,cAAAhiP,KAAAmiP,GACAjiP,EAAAkiP,qBAAA,WAAAD,KAEAjiP,EAAA8hP,cAAAphP,OAAAypP,EAAA,GACAnqP,EAAAkiP,qBAAA,SAAAD,GAEA,OAEA,QAAAjiP,EAAA8hP,cAAA/pP,QAAAkqP,GAAA,CACA,OAAAjiP,EAAA8hP,cAAAnqP,OACAqI,EAAA8hP,cAAAhiP,KAAAmiP,OACA,CACA,IAAAmI,EAAApqP,EAAA8hP,cAAA,GACA9hP,EAAAkiP,qBAAA,SAAAkI,GACApqP,EAAA8hP,cAAA,GAAAG,CACA,CACAjiP,EAAAkiP,qBAAA,WAAAD,EACA,MAAAjiP,EAAAkqP,6BAAA3yO,KACAvX,EAAA8hP,cAAA,GACA9hP,EAAAkiP,qBAAA,SAAAD,IAGAjiP,EAAAiL,yBACA,EAEA4J,EAAA7V,UAAA8oP,oBAAA,SAAA7F,EAAA1qO,GACA,IAAAvX,EAAAf,KACA,aAAAe,EAAAzF,KAAAoiP,cAEAplO,GAAAvX,EAAAkqP,6BAAA3yO,IAEA,IADAvX,EAAA8hP,cAAA/pP,QAAAkqP,IAEA,IAAAjiP,EAAA8hP,cAAAnqP,QACAqI,EAAA6J,sBAAA,WAAAo4O,EAAA78O,iBAEApF,EAAA6J,sBAAA,eAAAo4O,EAAA78O,mBAEA,IAAApF,EAAA8hP,cAAAnqP,QACAqI,EAAA6J,sBAAA,aAAAo4O,EAAA78O,iBAEApF,EAAA6J,sBAAA,iBAAAo4O,EAAA78O,kBAGApF,EAAA6J,sBAAA,UAAAo4O,EAAA78O,kBAGA,IAAApF,EAAA8hP,cAAAnqP,OACAqI,EAAA6J,sBAAA,WAAAo4O,EAAA78O,iBACAmS,GAAAvX,EAAAkqP,6BAAA3yO,IACAvX,EAAA6J,sBAAA,aAAAo4O,EAAA78O,iBAEApF,EAAA6J,sBAAA,UAAAo4O,EAAA78O,iBAEA,EAEAyP,EAAA7V,UAAAkrP,6BAAA,SAAA3yO,GACA,oBAAAtY,KAAA1E,KAAAqiP,mBAEA,mBAAA39O,KAAA1E,KAAAqiP,oBACArlO,EAAA6jI,SAAA7jI,EAAAgrI,QACA,EAEA1tI,EAAA7V,UAAAkjP,qBAAA,SAAA/jN,EAAAt9B,GACA68B,EAAAK,aAAAl9B,EAAA,eAAAs9B,EACA,EAGAtpB,EAAA7V,UAAAg2M,SAAA,SAAAC,GACA,IAAAh2M,KAAAgoF,QAAA,CAGAhoF,KAAAgoF,SAAA,EAEA,IAAAjnF,EAAAf,KACAA,KAAA2C,OAAAm1C,gBAAAzM,mBACArrC,KAAA1E,KAAAo8C,YACA,SAAAp8C,GACAyF,EAAA23C,KAAAs9J,EACAj1M,EAAAu+O,mBAAAtpC,EAAA,EACAj1M,EAAA63B,aAAAt9B,EAAAs9B,aACA73B,EAAAosM,cAAA7xM,EAAAs9B,aAAA73B,EAAAzF,KAAAq9C,SACA53C,EAAAinF,SAAA,EAEAjnF,EAAA40C,MAAA8E,QAAA3sC,UAAA,GACA/M,EAAA40C,MAAA8E,QAAArU,WAAA,GACArlC,EAAA+E,KAAA,GACA/E,EAAAwiP,gBAAA,KACAxiP,EAAAuiP,aAAA,KAEAviP,EAAA+gP,WAAAxmP,EAAA,YACAyF,EAAAitM,kBAAA1yM,EAAAs9B,aAAA73B,EAAA23C,KAAA33C,EAAAzF,KAAAq9C,SACA,IACA,SAAAlP,GACAA,EAAAiP,KAAAs9J,EACAvsK,EAAAkP,SAAA53C,EAAAzF,KAAAq9C,SACAlP,EAAA+O,wBAAA,EACA/O,EAAA+jK,eAAAzsM,EAAAysM,cACA,IACA,WACAzsM,EAAAinF,SAAA,EACAjnF,EAAAgoP,yBACA,GAhCA,CAiCA,EAEAnzO,EAAA7V,UAAAqrP,8BAAA,WACA,GAAAprP,KAAAo/O,UACAp/O,KAAAq/O,eAAAx+O,KAAAb,KAAAorP,8BAAA7oP,KAAAvC,WACA,CACA,IAAAu/K,EAAAv/K,KAAA4lP,mBACArmE,GACAv/K,KAAA6oP,oBAAAtpE,EACA,CACA,EAEA3pK,EAAA7V,UAAAsrP,yBAAA,SAAAxmM,GACA,GAAA7kD,KAAAo/O,UACAp/O,KAAAq/O,eAAAx+O,KAAAb,KAAAqrP,yBAAA9oP,KAAAvC,KAAA6kD,QACA,CACA,IAAAm+L,EAAA7pP,EAAA4d,UAAA/W,KAAA8F,KAAA,CAAAlL,GAAAiqD,EAAAymM,SACA,GAAAtI,EAAA,CACA,IACAuI,EADAvI,EAAAz9O,SACA82C,SACAmuJ,EAAAxqM,KAAA2wD,mBAAAtU,SACAmvM,EAAA,CACA9kP,IAAA6kP,EAAA7kP,IAAA8jM,EAAA9jM,IAAA1G,KAAA2wD,mBAAA7iD,YACArH,KAAA8kP,EAAA9kP,KAAA+jM,EAAA/jM,KAAAzG,KAAA2wD,mBAAAvqB,cAGA,eAAApmC,KAAA1E,KAAAurC,OACA7mC,KAAA2wD,mBAAAvqB,WAAAolN,EAAA/kP,MAEAzG,KAAA2wD,mBAAA7iD,UAAA09O,EAAA9kP,IAEA,CACA,CACA,EAEAkP,CACA,IAEAne,OCxiEA,2BACA,SACA,aACA,UACA,WACA,UACA,SACA,SAAA2B,EAAAD,EAAAmM,EAAAm5B,EAAAjpB,EAAAhT,GACA,aAEA,IAAAu5B,EAAA,CACAzgC,KAAA,CACA+jC,OAAA,CAAAqiB,OAAA,GAAA/9C,SAAA,GACA8nP,mBAAA,EACAC,sBAAA,EACAtoP,UAAA,KAIA,SAAAuoP,EAAAxoO,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAA1E,KAAA4I,YAAA,WACAlE,KAAA1E,KAAA+jC,OAAA7pB,EAAA1D,+BAAA9R,KAAA1E,KAAA+jC,QAEAr/B,KAAAuF,SACAI,SAAA,8BACAC,IAAA,CACA8vC,WAAA,aAGAjX,EAAAK,aAAA9+B,UAAAoG,gBAAA,UAEApG,KAAAS,YAAA,aAAAT,KAAA4rP,8BAAArpP,KAAAvC,OAEAA,KAAA0iC,SAAA,EACA,CA+MA,OA7MAp9B,EAAA3F,OAAAgsP,GAEAA,EAAA/xN,SAAA,WAEA+xN,EAAA5rP,UAAA6rP,8BAAA,SAAAhiP,GACA,YAAAA,EAAAlE,MAAAkE,EAAAtO,KAAAklP,oBAAAxgP,KAAA4nP,SAAA5nP,KAAA4nP,QAAA9C,WACAl7O,EAAAi8L,QAAA7lM,KAAA4nP,QAAA9C,gBACA,CACA,IAAA/jP,EAAAf,KACA4J,EAAAnJ,YAAA,cACA,SAAAmJ,GACA7I,EAAA6qP,8BAAAhiP,EACA,IAEA5J,KAAA0iC,SAAA7hC,KAAA+I,GAEAA,EAAA,oBACAA,EAAAiiP,oBACA,CACA,EAEAF,EAAA5rP,UAAA8lM,QAAA,SAAAltK,EAAAivN,GAGA,GAFA5nP,KAAA24B,UAEA34B,KAAA4nP,QAAA,CACA,IAAA7mP,EAAAf,KACA7G,EAAA0I,QAAA1I,EAAAwW,KAAAgpB,IAAA,SAAA+7H,GACA3zJ,EAAA6mP,QAAAlzF,GAAAkzF,EAAAlzF,EACA,GACA,MACA10J,KAAA4nP,SAEA,EAEA+D,EAAA5rP,UAAAknP,QAAA,WACA,OAAAjnP,KAAA4nP,OACA,EAEA+D,EAAA5rP,UAAA+rP,eAAA,WACA,IAAA/qP,EAAAf,KACAiH,EAAA9N,EAAA+N,IAAAnG,EAAAoE,YAAA,SAAAxM,GAEA,OADAA,EAAAwO,SAAApG,EAAAoG,SACAxO,CACA,IACAyO,EAAApH,KAAA2C,OAAA0E,YACAC,YAAAL,EAAA,CAAAu8C,SAAA,IAEAziD,EAAAf,KACA7G,EAAAiJ,KAAAgF,GAAA,SAAAxF,GACAA,EAAAuE,gBAAApF,EAAAoF,gBACApF,EAAAmH,QAAAtG,EACA,GACA,EAEA+pP,EAAA5rP,UAAAgH,UAAA,WAcA,MAbA,eAAA/G,KAAA6F,OAAAvK,KAAAurC,QACA7mC,KAAAyG,UAAAL,EACApG,KAAA2G,WAAAP,GACA,aAAApG,KAAA6F,OAAAvK,KAAAurC,QACA7mC,KAAA0G,SAAAN,EACApG,KAAA4G,YAAAR,IAEApG,KAAAyG,UAAAL,EACApG,KAAA2G,WAAAP,EACApG,KAAA0G,SAAAN,EACApG,KAAA4G,YAAAR,GAEApG,KAAA2M,gBACA3M,KAAA8rP,gBACA,EAEAH,EAAA5rP,UAAA8H,OAAA,SAAAtC,EAAAwmP,EAAAtL,GACA,IAAA1/O,EAAAf,KAEA,OAAAwC,EAAAzB,EAAAgG,aACAzD,MAAA,WACA,IAAAvC,EAAAiG,QAAA,CAEA+kP,IAAAtL,EACA1/O,EAAAwE,SAAAq2I,UAAAr2I,GAEAxE,EAAAwE,SAAAsB,SAAAtB,GAEA,IAAA0C,EAAA,GAMA,OAJA9O,EAAA0I,QAAAd,EAAA+E,MAAA,SAAAlE,GACAqG,EAAApH,KAAAE,EAAA4G,4BAAA/F,GACA,IAEAY,EAAA+E,IAAAU,EAZA,CAaA,IACA3E,MAAA,WACA,OAAAvC,EAAA0G,YACA,GACA,EAEAkkP,EAAA5rP,UAAA0H,WAAA,WACA,IAAAukP,EAAAhsP,KAAA1E,KAAAmwP,mBACA,GAAAO,EAAA,CACA,IAAAp6B,EAAA,EAEAq6B,EAAAjsP,KAAAuF,SAAAK,IAAA,aACA,GAAAqmP,GAAA,SAAAA,EAAA,CACA,IAAAC,EAAAD,EAAAzzP,MAAA,QAAAA,MAAA,QAAAA,MAAA,KACAo5N,EAAA78M,KAAA81C,MAAA91C,KAAAu4C,MAAA4+L,EAAA,GAAAA,EAAA,SAAAn3O,KAAAspB,IACA,CAEA,IACA8tN,EAAAv6B,EADA78M,KAAAM,MAAAN,KAAAwW,SAAAygO,EAAA,EAAAA,GAGAhsP,KAAAuF,SAAAK,IAAA,8BAAAumP,EAAA,QACAnsP,KAAAuF,SAAAK,IAAA,2BAAAumP,EAAA,QACAnsP,KAAAuF,SAAAK,IAAA,yBAAAumP,EAAA,QACAnsP,KAAAuF,SAAAK,IAAA,0BAAAumP,EAAA,QACAnsP,KAAAuF,SAAAK,IAAA,sBAAAumP,EAAA,OACA,CACAnsP,KAAAqgO,4BAEArgO,KAAA2nP,aACA,EAEAgE,EAAA5rP,UAAA4nP,YAAA,WACA,GAAA3nP,KAAA4nP,QAAA,CAGA,IAAA7mP,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAA0iC,UAAA,SAAA94B,GACAA,EAAAg9B,UAAA7lC,EAAA43B,SAAAx/B,EAAAglC,IAAAp9B,EAAA6mP,QAAAh+O,EAAAtO,KAAAhD,OACAsR,EAAAg9B,SAAA,CACAlhC,KAAA3E,EAAA43B,QAAA/uB,EAAAtO,KAAAhD,MACAkU,MAAAzL,EAAA6mP,QAAAh+O,EAAAtO,KAAAhD,QAIAsR,EAAAlI,gBAAA,oBAAAX,EAAA6mP,QACA,IAEA5nP,KAAAosP,8BAdA,CAeA,EAEAT,EAAA5rP,UAAAyN,sBAAA,SAAA5D,GACA,wBAAA5J,KAAA6F,OAAAvK,KAAAurC,QAAAj9B,EAAAtO,KAAAiT,0BAAA,CACA,IAAA3I,EAAA5F,KAAAyN,eAAA7D,EAAAtO,MACAsK,EAAAzB,SAAA,SACAyF,EAAArE,SAAAK,MACA,MACAgE,EAAArE,SAAAK,IAAA5F,KAAAyN,eAAA7D,EAAAtO,OAGA0E,KAAA6F,OAAAvK,KAAAkjP,eAAA50O,EAAAtO,KAAAhD,OAAA0H,KAAA6F,OAAAvK,KAAAmjP,iBACA70O,EAAArE,SAAAI,SAAA,wBAEA,EAEAgmP,EAAA5rP,UAAAssP,UAAA,WACA,OACA,CAAAz7O,IAAA,SAAApE,MAAA,UACA,CAAAoE,IAAA,QAAApE,MAAA,SACA,CAAAoE,IAAA,WAAApE,MAAA,YAEA,EAEAm/O,EAAA5rP,UAAAsgO,0BAAA,WACA,GAAArgO,KAAA6F,OAAAvK,KAAAukO,qBAAA,CACA,IAAA9+N,EAAAf,KACA2kB,YAAA,WACA,IAAAilH,EAAA,EACA7oI,EAAAwE,SAAA,GAAA+iN,4BAAA3kL,aAAA5iC,EAAAwE,SAAA,GAAA+iN,4BAAAzvM,eAEA+wH,EAAA7oI,EAAAurP,kBAAAvrP,EAAAwE,SAAA,GAAA+iN,8BAEA,IAAAn6M,EAAApN,EAAA8E,OAAAvK,KAAAwkO,YAAA/+N,EAAA8E,OAAAvK,KAAAqnO,YAAA5hO,EAAAwE,SAAA,GAAAq+B,YAAAgmG,GACA7oI,EAAAwE,SACAK,IAAA,CACAuI,UAEA,MACA,CACA,EAEAw9O,EAAA5rP,UAAAsI,iBAAA,WACArI,KAAAqgO,2BACA,EAEAsrB,EAAA5rP,UAAAusP,kBAAA,SAAA1gP,GACA,OAAAA,EAAAg4B,YACAh4B,EAAA+M,YACA8G,WAAA04D,iBAAAvsE,GAAAq1B,iBACAxhB,WAAA04D,iBAAAvsE,GAAAo1B,iBACA,EAEA2qN,EAAA5rP,UAAAqsP,6BAAA,WACA,IAAArrP,EAAAf,KAEA,GAAAA,KAAA6F,OAAAvK,KAAAkjP,eAAAx+O,KAAA6F,OAAAvK,KAAAmjP,gBAAA,CACA,IAAA8N,EAAAvsP,KAAA0iC,SAAAphC,MAAA,SAAAohC,GACA,OAAAA,EAAApnC,KAAAhD,OAAAyI,EAAA8E,OAAAvK,KAAAmjP,eACA,IAEA8N,GACAA,EAAAhnP,SAAAI,SAAA,wBAEA,CACA,EAEAgmP,CACA,IACAl0P,OCrPA,yCACA,WACA,SAAA2B,GAEA,IAAAozP,EAAA,SAAAC,EAAAC,GACA1sP,KAAA2sP,aAAAF,EACAnrP,KAAA,MACAtB,KAAA4sP,cAAAF,EACAprP,KAAA,MAEAtB,KAAA6sP,cAAA,GACA7sP,KAAA8sP,eAAA,GAEA,IAAA/rP,EAAAf,KACAA,KAAA2sP,aAAAvqP,MAAA,SAAA3J,GACAsI,EAAA8rP,cAAAp0P,GAAAuH,KAAA8L,wBAAAqC,MACA,IACAnO,KAAA4sP,cAAAxqP,MAAA,SAAA3J,GACAsI,EAAA+rP,eAAAr0P,GAAAuH,KAAA8L,wBAAAqC,MACA,GACA,EAEAq+O,EAAAzsP,UAAAgtP,KAAA,WACA,IAAAhsP,EAAAf,KACAA,KAAA2sP,aAAAvqP,MAAA,SAAA3J,EAAAmT,GACA,IAAAohP,EAAA5zP,EAAAwS,GACAqhP,EAAA7zP,EAAA2H,EAAA6rP,cAAAv0P,IAAAI,IAEAy0P,EAAAnsP,EAAA8rP,cAAAp0P,GACA00P,EAAApsP,EAAA+rP,eAAAr0P,GAGAy0P,EAAAC,GACAH,EAAA7+O,OAAA++O,GACAD,EAAA9+O,OAAA++O,IACAC,EAAAD,IACAF,EAAA7+O,OAAAg/O,GACAF,EAAA9+O,OAAAg/O,GAEA,GACA,EAEA,IAAAC,EAAA,SAAAX,EAAAC,GACA1sP,KAAAqtP,eAAAZ,EACAnrP,KAAA,YACAA,KAAA,UACAtB,KAAAstP,gBAAAZ,EACAprP,KAAA,YACAA,KAAA,MAEAtB,KAAAutP,aAAA,GACAvtP,KAAAwtP,cAAA,GAEA,IAAAzsP,EAAAf,KACAA,KAAAqtP,eAAAjrP,MAAA,SAAA3J,GACAsI,EAAAwsP,aAAA90P,GAAA,CACAmf,WAAA5X,KAAA8L,wBAAAkB,MACAA,MAAA5T,EAAA4G,MAAAgN,QAAA,EAEA,IACAhN,KAAAstP,gBAAAlrP,MAAA,SAAA3J,GACAsI,EAAAysP,cAAA/0P,GAAA,CACAmf,WAAA5X,KAAA8L,wBAAAkB,MACAA,MAAA5T,EAAA4G,MAAAgN,QAAA,EAEA,GACA,EAuCA,OArCAogP,EAAArtP,UAAAgtP,KAAA,WACA,IAAAhsP,EAAAf,KACAA,KAAAqtP,eAAAjrP,MAAA,SAAA3J,EAAAmT,GACA,IAAA6hP,EAAAr0P,EAAAwS,GACA8hP,EAAAt0P,EAAA2H,EAAAusP,gBAAAj1P,IAAAI,IAEAk1P,EAAA5sP,EAAAwsP,aAAA90P,GAAAuU,MACA4gP,EAAA7sP,EAAAysP,cAAA/0P,GAAAuU,MAEA6gP,EAAA9sP,EAAAwsP,aAAA90P,GAAAmf,WACAk2O,EAAA/sP,EAAAysP,cAAA/0P,GAAAmf,WAGA,GAAAi2O,EAAAC,EAAA,CACA,IAAA9gP,EAAA+H,KAAAskD,KAAAw0L,GAAAC,EAAAF,IACAF,EAAA9nP,IAAA,CACA,YAAAoH,EAAA,KACA,YAAAA,EAAA,OAEAygP,EAAA7nP,IAAA,CACA,YAAAoH,EAAA,KACA,YAAAA,EAAA,MAEA,SAAA8gP,EAAAD,EAAA,CACA7gP,EAAA+H,KAAAskD,KAAAy0L,GAAAD,EAAAF,IACAF,EAAA7nP,IAAA,CACA,YAAAoH,EAAA,KACA,YAAAA,EAAA,OAEA0gP,EAAA9nP,IAAA,CACA,YAAAoH,EAAA,KACA,YAAAA,EAAA,MAEA,CACA,GACA,EAEA,CACA+gP,QAAA,SAAA35K,GACA,IAAA45K,EAAA,CACA,IAAAxB,EAAAp4K,EAAA65K,cAAA75K,EAAA85K,iBACA,IAAA1B,EAAAp4K,EAAA+5K,WAAA/5K,EAAAg6K,cACA,IAAAhB,EAAAh5K,EAAA65K,cAAA75K,EAAA+5K,YACA,IAAAf,EAAAh5K,EAAA85K,gBAAA95K,EAAAg6K,eAGAj1P,EAAAiJ,KAAA4rP,GAAA,SAAAK,GACAA,EAAAtB,MACA,GACA,EAEA,IACAt1P,OCxHA,uBACA,SACA,aACA,KACA,UACA,WACA,wCACA,UACA,mBACA,SAAA2B,EAAAD,EAAA2K,EAAAwB,EAAAm5B,EAAA6vN,EAAAzpN,EAAA4rB,GACA,aAEA,IAAA10B,EAAA,CACAzgC,KAAA,CACAizP,WAAA,GACAC,eAAA,GACAC,cAAA,KACAC,kBAAA,GACAC,uBAAA,SACAC,UAAA,KACAC,iCAAA,aACAC,4BAAA,eAIAC,EAAA,SAAA/xB,EAAAgyB,GACA,IAAAC,EAAA71P,EAAA,SACAyN,SAAAm2N,GACAgyB,GACAC,EAAArpP,IAAA,QAAAopP,EACA,EAEAE,EAAA,SAAA/rO,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,SAAA2iC,EAAA5Y,GAEAnjB,KAAAiuP,cAAA70P,EAAA,YACAuM,SAAA,iBACA3F,KAAAmvP,qBAAA/1P,EAAA,UACAwM,IAAA,CACAyqC,MAAA,OACA2G,SAAA,WAEAnL,OAAA7rC,KAAAiuP,eAEAjuP,KAAAmuP,WAAA/0P,EAAA,YACAuM,SAAA,cACAC,IAAA,yBACA5F,KAAAovP,kBAAAh2P,EAAA,UACAwM,IAAA,CACAzB,SAAA,WACAuC,IAAA,EACAD,KAAA,EACAG,OAAA,EACAowC,SAAA,WAEAnL,OAAA7rC,KAAAmuP,YAEAnuP,KAAAkuP,gBAAA90P,EAAA,YACAuM,SAAA,mBACA3F,KAAAqvP,uBAAAj2P,EAAA,WACAwM,IAAA,qBACAimC,OAAAzyC,EAAA,WACAwM,IAAA,CACAyqC,MAAA,OACA,yBAEAxE,OAAA7rC,KAAAkuP,kBAEAluP,KAAAouP,aAAAh1P,EAAA,YACAuM,SAAA,gBACA3F,KAAAsvP,oBAAAl2P,EAAA,UACAwM,IAAA,CACA,oBACAzB,SAAA,WACAuC,IAAA,EACAD,KAAA,EACAE,MAAA,EACAC,OAAA,IAEAilC,OAAA7rC,KAAAouP,cAEApuP,KAAAuvP,QAAAn2P,EAAA,WACAwM,IAAA,CACAoxC,SAAA,SACAhqC,MAAA,OACAmB,OAAA,SAEA09B,OAAA7rC,KAAAmvP,qBAAAnvP,KAAAqvP,wBACAxjN,OAAAzyC,EAAA,WAAAwM,IAAA,iBACAimC,OAAA7rC,KAAAovP,kBAAApvP,KAAAsvP,qBAEAtvP,KAAAuF,SACAI,SAAA,mBACAkmC,OAAA7rC,KAAAuvP,SAEA9wN,EAAAK,aAAA9+B,KAAA,cAEAA,KAAAotM,YAAA,EACAptM,KAAAwvP,QAAA,KAEA,IAAAzuP,EAAAf,KACAA,KAAAsvP,oBAAA5zP,GAAA,qBACAutB,QAAAhU,IAAAlU,EAAAuuP,oBAAAxhP,aACA/M,EAAAquP,kBAAAthP,UAAA/M,EAAAuuP,oBAAAxhP,aACA/M,EAAAsuP,uBAAAjpN,WAAArlC,EAAAuuP,oBAAAlpN,aACA,IAEApmC,KAAA0zC,QACA,EAEApuC,EAAA3F,OAAAuvP,GAEAA,EAAAt1N,SAAA,SAEAs1N,EAAAnvP,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MAEA,IAAAe,EAAAf,KACAA,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAo8C,YACA,SAAAp8C,GACAyF,EAAAqsM,YAAA,EACArsM,EAAAyuP,QAAAl0P,EACAyF,EAAA2yC,OAAAp4C,EACA,IACA,SAAAmuC,GACA1oC,EAAA23L,uBAAAjvJ,EACA,IAEAzpC,KAAA2M,eACA,EAEAuiP,EAAAnvP,UAAA24L,uBAAA,SAAAnuJ,EAAAmO,GACA14C,KAAA1E,KAAAq9C,WAGApO,EAAAoO,SAAA34C,KAAA1E,KAAAq9C,SACApO,EAAAmO,QAAA,EACA,EAEAw2M,EAAAnvP,UAAA0vP,8BAAA,SAAAC,GACA,IAAAC,EAAAx2P,EAAAgsB,OAAAnlB,KAAA1E,KAAAizP,YAAA,SAAAzzG,GACA,OAAAA,EAAAtxI,IACA,IAEAomP,EAAAx2P,EAAA,cACAyN,SAAA7G,KAAAmuP,YACA0B,EAAAz2P,EAAA,cACAyN,SAAA7G,KAAAiuP,eAEA90P,EAAAiJ,KAAAutP,GAAA,SAAAG,GACAf,EAAAa,EAAAE,EAAA9iP,OACA+hP,EAAAc,EAAAC,EAAA9iP,MACA,IAEA,IAAA+iP,EAAA32P,EAAA,cACAyN,SAAA7G,KAAAouP,cACA4B,EAAA52P,EAAA,cACAyN,SAAA7G,KAAAkuP,iBAEAntP,EAAAf,KAMA,GALA7G,EAAAu2P,GAAAn5G,OAAA,WACAw4G,EAAAgB,EAAAhvP,EAAAzF,KAAA20P,aACAlB,EAAAiB,EAAAjvP,EAAAzF,KAAA20P,YACA,IAEAjwP,KAAA1E,KAAA20P,YAAA,CACA,IAAAC,EAAA,CACA,uBACAljP,MAAA0iP,EAAA1vP,KAAA1E,KAAA20P,aAEAjwP,KAAAkuP,gBAAAtoP,IAAAsqP,GACAlwP,KAAAouP,aAAAxoP,IAAAsqP,EACA,MACA,IAAA1hP,EAAA,CACA,sBACAxB,MAAA,QAEAhN,KAAAkuP,gBAAAtoP,IAAA4I,GACAxO,KAAAouP,aAAAxoP,IAAA4I,EACA,CACA,EAEA0gP,EAAAnvP,UAAA2zC,OAAA,SAAAp4C,GACA,IAAAyF,EAAAf,KACAwzB,EAAAxzB,KAAA1E,KAEAA,KAAA,CACAq9B,QAAA,GACAR,QAAA,GACAS,aAAA,GAGA54B,KAAAuvP,QAAA7sH,SAEA1iI,KAAAiuP,cACAxzM,QACAz6C,KAAAmuP,WACA1zM,QACAz6C,KAAAkuP,gBACAzzM,QACAz6C,KAAAouP,aACA3zM,QAEA,IAAAk1M,EAAAx2P,EAAAgsB,OAAAqO,EAAA+6N,YAAA,SAAAzzG,GAAA,OAAAA,EAAAtxI,IAAA,IAGA2mP,EAAAh3P,EAAAi3P,QAAA90P,EAAA68B,SAAA,SAAAk4N,GAAA,OAAAtvP,EAAAuvP,UAAAD,EAAA,IACAE,EAAAp3P,EAAAi3P,QAAA90P,EAAA68B,SAAA,SAAAk4N,GAAA,OAAAtvP,EAAAyvP,aAAAH,EAAA,IAEAX,EAAAv2P,EAAAwW,KAAA4gP,GAAA73P,OACAqI,EAAA0uP,8BAAAC,GAEA,IAAAe,EAAAt3P,EAAA0zL,MAAAr5J,EAAAi7N,cAAA,UACAiC,EAAAv3P,EAAAgJ,QAAAhJ,EAAA0zL,MAAAr5J,EAAAk7N,kBAAA,WACAhnN,OAAA+oN,GACAE,EAAAx3P,EAAAwW,KAAA4gP,GAAA7jI,MAAA,SAAAkkI,EAAAC,GACA,IAAAC,EAAAP,EAAAK,GAAA,GACAG,EAAAR,EAAAM,GAAA,GACA,OAAA9vP,EAAAiwP,iBAAAF,EAAAC,EAAAL,EACA,IAGAt3P,EAAA,QACAyyC,OAAA1yC,EAAA+I,MAAAsxB,EAAA+6N,YACAppO,QAAA,SAAA21H,GACA,OAAAA,EAAAtxI,IACA,IACAtC,KAAA,SAAA4oP,GACA,IAAAnmC,EAAAvwN,EAAA,YACAyhC,KAAAi1N,EAAA98L,OAUA,MARA,aAAAjyD,EAAAzF,KAAAuzP,mCACAllC,EAAAhkN,SAAA,0BAEA5E,EAAAzF,KAAA21P,qBACAtnC,EAAA/jN,IAAA,SAAA7E,EAAAzF,KAAA41P,cAAA,OAIA93P,EAAA,QACAyyC,OAAA89K,EACA,IACAn9M,SACA3F,SAAA7G,KAAAiuP,eAGA70P,EAAA,QACAyyC,OAAA1yC,EAAA+N,IAAAypP,GAAA,SAAAQ,GACA,IACAC,EADAb,EAAAY,GACA,GAEA1iD,EACAt1M,EAAA+I,MAAAsxB,EAAAi7N,eACAt0O,QAAA,SAAAk3O,GAAA,OAAAA,EAAA7nP,IAAA,IACAqjL,MAAA,UACA3lL,KAAA,SAAAoqP,GAAA,OAAAF,EAAAE,EAAA,IACA9kP,QACAwG,KAAA,KAEA22M,EAAAvwN,EAAA,YACAyhC,KAAA4zK,GASA,MAPA,aAAA1tM,EAAAzF,KAAAwzP,8BACAnlC,EAAAhkN,SAAA,0BAEA5E,EAAAzF,KAAA21P,qBACAtnC,EAAA/jN,IAAA,SAAA7E,EAAAzF,KAAA41P,cAAA,OAGA93P,EAAA,QACAyyC,OAAA89K,EACA,KACA9iN,SAAA7G,KAAAkuP,iBAGA,IAAAqD,EAAAp4P,EAAA0zL,MAAAr5J,EAAA+6N,WAAA,UACAiD,EAAAr4P,EAAAgJ,QAAAhJ,EAAA0zL,MAAAr5J,EAAAg7N,eAAA,WACA9mN,OAAA6pN,GACAE,EAAAt4P,EAAAwW,KAAAwgP,GAAAzjI,MAAA,SAAAkkI,EAAAC,GACA,IAAAC,EAAAX,EAAAS,GAAA,GACAG,EAAAZ,EAAAU,GAAA,GACA,OAAA9vP,EAAAiwP,iBAAAF,EAAAC,EAAAS,EACA,IAEAE,EAAA1xP,KAAAgK,gBAAA,WACA2nP,EAAA3xP,KAAAgK,gBAAA,sBAEA7Q,EAAAiJ,KAAAqvP,GAAA,SAAAG,GACA,IAAAC,EAAA1B,EAAAyB,GACAE,EAAAD,EAAA,GAGAz4P,EAAA,QACAyyC,OAAA1yC,EAAA+N,IAAAyoP,GAAA,SAAAG,GACA,IAAAiC,EAAAD,EAAAhC,EAAAp7F,QACAs9F,EAAA54P,EAAA,QACAyhC,KAAAk3N,GAEAE,EAAAz+N,EAAA0+N,oBAAAJ,EAAAt+N,EAAA0+N,qBAAA,KAMA,OALAnxP,EAAAmJ,kBAAA,6BAAA8nP,EAAAC,GAEAN,EAAAhuP,SACAquP,EAAArsP,SAAA,aAEAqsP,CACA,KACAnrP,SAAA9F,EAAAotP,YAGA/0P,EAAA,QACAyyC,OAAA1yC,EAAA+N,IAAAypP,GAAA,SAAAQ,GAEA,IAAAd,EAAAl3P,EAAAmI,KAAAuwP,GAAA,SAAAM,GAAA,OAAApxP,EAAAyvP,aAAA2B,KAAAhB,CAAA,IACAiB,EAAAh5P,EAAA,QACAwM,IAAA,aAAA7E,EAAAzF,KAAAqzP,wBACA9zN,KAAAw1N,KAAA78N,EAAAo7N,UAAA,GAAAl6F,SAAA,IAEA29F,EAAAhC,KAAA78N,EAAA4nM,uBACAi3B,GACAD,EAAAxsP,IAAA,mBAAAysP,GAGA,IAAAC,EAAAjC,KAAA78N,EAAAkzJ,eACA4rE,GACAF,EAAAnqN,KAAA,QAAApD,EAAAgO,MAAAy/M,IAEA,IAAAC,EAAAlC,KAAA78N,EAAAnpB,UAQA,OANA,IAAAomD,GAAAC,wBAAA0hM,EAAArxP,EAAAwxP,IAEAb,EAAA/tP,eAAAyC,IAAAmsP,IAAA/+N,EAAAnpB,WAAAtJ,EAAA+J,eAAA,iBACAsnP,EAAAzsP,SAAA,aAGAysP,CACA,KACAvrP,SAAA9F,EAAAqtP,aACA,IAEApuP,KAAAuF,SACAsmC,OAAA7rC,KAAAuvP,SAEAj0P,EAAA68B,QAAAz/B,OAAA,GACAsH,KAAAwyP,aAEAl3P,EAAAs9B,aAAAt9B,EAAA68B,QAAAz/B,QACAsH,KAAAyyP,qBAAA9B,EAAAj4P,OACA,EAEAw2P,EAAAnvP,UAAAyyP,WAAA,WACAlE,EAAAP,QAAA/tP,MAEAA,KAAAqvP,uBACAzpP,IAAA,cAAA5F,KAAAmvP,qBAAAv3O,aAAA,MAEA5X,KAAAsvP,oBACA1pP,IAAA,CACAc,IAAA1G,KAAAqvP,uBAAAx3O,cAAA,KACApR,KAAAzG,KAAAmvP,qBAAAv3O,aAAA,OAGA5X,KAAAovP,kBACAxpP,IAAA,CACAc,IAAA1G,KAAAqvP,uBAAAx3O,cAAA,KACA7K,MAAAhN,KAAAmvP,qBAAAv3O,aAAA,OAEA9J,UAAA,GAEA9N,KAAAqvP,uBAAAjpN,WAAA,EACA,EAEA8oN,EAAAnvP,UAAA0yP,qBAAA,SAAAC,GACA,IAAA3xP,EAAAf,KACA2yP,EAAAv5P,EAAA,QACAyN,SAAA7G,KAAAouP,cACAwE,EAAAx5P,EAAA,QACA6uC,KAAA,UAAAyqN,GACA7rP,SAAA8rP,GACA3yP,KAAA6yP,gBAAAz5P,EAAA,UACAuM,SAAA,2BACAk1B,KAAA76B,KAAA1E,KAAAw3P,cAAA,gBACAp3P,GAAA,oBAAAqF,EAAA4tM,cAAA,IACA9nM,SAAA+rP,GACAn0N,EAAAK,aAAA9+B,KAAA,KAAAA,KAAA6yP,gBAAA7yP,KAAA1E,KAAAy3P,cACA,EAEA7D,EAAAnvP,UAAA4uM,aAAA,WACA,IAAA3uM,KAAAgoF,QAAA,CAEAhoF,KAAAgoF,SAAA,EAGA,IAAAjnF,EAAAf,KACAA,KAAA2C,OAAAm1C,gBAAA7M,SACAlqC,EAAAzF,KAAAo8C,YACA,SAAAs7M,GACAjyP,EAAAqsM,cACArsM,EAAAinF,SAAA,EAEA,IAAAirK,EAAAlyP,EAAAyuP,QAAAr3N,QAAAuP,OAAAsrN,EAAA76N,SACAh/B,EAAAwG,OAAAoB,EAAAyuP,QAAAwD,EAAA,CAAA76N,QAAA86N,IACAlyP,EAAA2yC,OAAA3yC,EAAAyuP,QACA,IACA,SAAA/lN,GACA1oC,EAAA23L,uBAAAjvJ,EAAA1oC,EAAAqsM,YACA,IACA,SAAA9kM,GACAvH,EAAAinF,SAAA,CAEA,GArBA,CAsBA,EAEA,IAEA+8J,EAAA,SAAAK,EAAAC,GAIA,OAHAlsP,EAAA+N,IAAAm+O,GAAA,SAAAC,GACA,OAAAF,EAAAE,EACA,IACAtyO,KANA,IAOA,EAwBA,OAtBAk8O,EAAAnvP,UAAAuwP,UAAA,SAAAlL,GACA,IAAAmM,EAAAp4P,EAAA0zL,MAAA7sL,KAAA1E,KAAAizP,WAAA,UACA,OAAAxJ,EAAAK,EAAAmM,EACA,EAEArC,EAAAnvP,UAAAywP,aAAA,SAAApL,GACA,IAAAqL,EAAAt3P,EAAA0zL,MAAA7sL,KAAA1E,KAAAmzP,cAAA,UACA,OAAA1J,EAAAK,EAAAqL,EACA,EAEAvB,EAAAnvP,UAAAixP,iBAAA,SAAAF,EAAAC,EAAAmC,GACA,OAAA/5P,EAAA4J,OAAAmwP,GAAA,SAAAC,EAAAC,GACA,WAAAD,EACAA,EAEArC,EAAAsC,KAAArC,EAAAqC,GACA,EAEAtC,EAAAsC,GAAArC,EAAAqC,IAAA,GACA,KACA,EAEAlE,CACA,IACAz3P,OC9bA,+BACA,SACA,UACA,YACA,SAAA2B,EAAAkM,EAAAkQ,GACA,aAEA,IAAA49B,EAEA,SAAAigN,EAAAlwO,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA+pB,GACA,IAAApiB,EAAAf,KAEAe,EAAAzF,KAAAoI,SAAA8R,EAAA1D,+BAAA/Q,EAAAzF,KAAAoI,UAEA3C,EAAAuyP,eAAA,GACAvyP,EAAAwyP,yBAAA,GACAxyP,EAAAyyP,SAAA,IAAAtzP,OACAa,EAAA0yP,eAAA,KACA1yP,EAAA2yP,aAAA,KACA3yP,EAAA4yP,gBAAA,iFACA5yP,EAAA6yP,YAAA,GACA7yP,EAAA8yP,eAAA,GACA9yP,EAAA+yP,iBAAA,GAEA/yP,EAAAwE,SACAI,SAAA,mBACAC,IAAA,CACAoxE,UAAA,OACAC,UAAA,SACA,mBAAAl2E,EAAAzF,KAAA4gC,QAGAn7B,EAAA2+M,UAAAtmN,EAAA,cACAsC,GAAA,mBAAA8Q,GACAzL,EAAAzF,KAAAy4P,eAAAhzP,EAAA2+M,UAAA5mK,MACA/3C,EAAAizP,eACAjzP,EAAAkzP,gBACAlzP,EAAAmzP,SACA,IACAtuP,IAAA,CACAzB,SAAA,WACAuC,IAAA,MACAD,KAAA,OACAwG,OAAA,EACA6vB,QAAA,IAEAj2B,SAAA9F,EAAAwE,UAEAxE,EAAAozP,QAAA/6P,EAAA,cACAyN,SAAA9F,EAAAwE,UAEA,QAAA9M,EAAA,EAAAA,EAAAsI,EAAA4yP,gBAAAj7P,OAAAD,IAAA,CACA,IAAAinN,EAAAtmN,EAAA,cACA0/C,IAAA/3C,EAAA4yP,gBAAAl7P,IACAoiC,KAAA95B,EAAA4yP,gBAAAl7P,IACAoO,SAAA9F,EAAA2+M,WACA3+M,EAAAzF,KAAAy4P,iBAAAhzP,EAAA4yP,gBAAAl7P,IACAinN,EAAAhpM,KAAA,cAEA,CACA,CAkxBA,OAhxBApR,EAAA3F,OAAA0zP,EAAA/tP,GAEA+tP,EAAAz5N,SAAA,aAEAy5N,EAAAtzP,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MAEA,IAAAe,EAAAf,KACAA,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAo8C,YACA,SAAAp8C,GACAyF,EAAA2yC,OAAAp4C,EACA,IAEA0E,KAAAs4C,UAAAt4C,KAAA2C,OAAA+B,WAAA6zC,kBACAv4C,KAAA2M,eACA,EAEA0mP,EAAAtzP,UAAA0H,WAAA,WACAzH,KAAAo0P,aACA,EAEAf,EAAAtzP,UAAA2zC,OAAA,SAAAA,GAIA,IAHA,IAAA3yC,EAAAf,KAEA0mB,EAAA,GACAjuB,EAAA,EAAAA,EAAAi7C,EAAAvb,QAAAz/B,OAAAD,IAAA,CACA,IAAA43P,EAAA38M,EAAAvb,QAAA1/B,GACA47P,EAAA,CACAz5P,GAAAy1P,EAAAtvP,EAAAzF,KAAAylL,UACAuzE,KAAAjE,EAAAtvP,EAAAzF,KAAAi5P,YACAC,aAAAnE,EAAAtvP,EAAAzF,KAAAm5P,oBACAC,cAAArE,EAAAtvP,EAAAzF,KAAAq5P,qBAAA5zP,EAAAu3C,UAAAglK,iBAAA+yC,EAAAtvP,EAAAzF,KAAAq5P,sBAAA,KACAC,eAAAvE,EAAAtvP,EAAAzF,KAAAu5P,sBAAA9zP,EAAAu3C,UAAAglK,iBAAA+yC,EAAAtvP,EAAAzF,KAAAu5P,uBAAA,MAEAnuO,EAAA7lB,KAAAwzP,EACA,CACAtzP,EAAAuyP,eAAA5sO,EACA,QAAAyN,EAAA,EAAAA,EAAApzB,EAAAuyP,eAAA56P,OAAAy7B,IACApzB,EAAAuyP,eAAAn/N,GAAAugO,eACA3zP,EAAAuyP,eAAAn/N,GAAAugO,cAAAz/F,SAAA,IACAl0J,EAAAuyP,eAAAn/N,GAAAygO,gBACA7zP,EAAAuyP,eAAAn/N,GAAAygO,eAAA3/F,SAAA,IAGAl0J,EAAAkzP,gBACAlzP,EAAAmzP,SACA,EAEAb,EAAAtzP,UAAA+0P,kBAAA,WAOA,IANA,IAEAC,EAFA/0P,KAEAszP,eACA0B,EAAA7vJ,OAAA8vJ,UACAC,EAAA/vJ,OAAAgwJ,UAEA18P,EAAA,EAAAA,EAAAs8P,EAAAr8P,OAAAD,IAAA,CACA,IAAA47P,EAAAU,EAAAt8P,GAEA47P,EAAAK,gBACAM,EAAAjgP,KAAAsd,IAAA2iO,EAAAX,EAAAK,cAAAlzO,WACA0zO,EAAAngP,KAAAoiB,IAAA+9N,EAAAb,EAAAK,cAAAlzO,YAGA6yO,EAAAO,iBACAI,EAAAjgP,KAAAsd,IAAA2iO,EAAAX,EAAAO,eAAApzO,WACA0zO,EAAAngP,KAAAoiB,IAAA+9N,EAAAb,EAAAO,eAAApzO,WAEA,CACA,OAAA6Q,IAAA,IAAAt6B,KAAAi9P,GAAA79N,IAAA,IAAAp/B,KAAAm9P,GACA,EAEA7B,EAAAtzP,UAAAk0P,cAAA,WACA,IAAAlzP,EAAAf,KACA+3J,EAAAh3J,EAAA+zP,oBACAE,EAAAj9F,EAAA1lI,IACA6iO,EAAAn9F,EAAA5gI,IAMA,OAHAp2B,EAAAyyP,SAAA4B,SAAA,GACAr0P,EAAAyyP,SAAA7+F,MAAA,GAEA5zJ,EAAAzF,KAAAy4P,gBACA,YACAiB,EAAA,IAAAj9P,KAAAi9P,EAAA3iG,cAAA,GACAt+F,EAAA76C,SAAAg8O,EAAA7iG,cAAA,GACAtxJ,EAAAyyP,SAAA9yL,OAAA3M,EAAAihM,EAAA3iG,cACA6iG,EAAA,IAAAn9P,KAAAg8D,EAAA,GAEA,QAAA5/B,EAAA,EAAAA,EAAApzB,EAAAyyP,SAAA9yL,OAAAvsC,IACApzB,EAAAyyP,SAAA4B,SAAAjhO,GAAA6gO,EAAA3iG,cAAAl+H,EAEA,MAEA,gBACA6gO,EAAA,IAAAj9P,KAAAi9P,EAAA3iG,cAAA,GACAt+F,EAAA76C,SAAAg8O,EAAA7iG,cAAA,GACAtxJ,EAAAs0P,SAAAL,EAAAjhM,GAEA,IAAAA,EAAA76C,SAAAg8O,EAAA7iG,cAAA,GACAtxJ,EAAAyyP,SAAA9yL,OAAA,EAAA3M,EAAA,EAAAihM,EAAA3iG,cACA6iG,EAAA,IAAAn9P,KAAAg8D,EAAA,GAEA,IAAAhB,EAAA,EACA,IAAA5+B,EAAA,EAAAA,EAAApzB,EAAAyyP,SAAA9yL,OAAAvsC,IACA,IAAA4+B,IACAA,EAAA,GACAA,IACAhyD,EAAAyyP,SAAA4B,SAAAjhO,GAAA,MAEA,MAEA,cACA6gO,EAAA,IAAAj9P,KAAAi9P,EAAA3iG,cAAA2iG,EAAA5iG,YACA8iG,EAAA,IAAAn9P,KAAAm9P,EAAA7iG,cAAA6iG,EAAA9iG,WAAA,GACArxJ,EAAAs0P,SAAAL,EAAA97O,SAAAg8O,EAAA7iG,cAAA,GAAA6iG,GAEAn0P,EAAAyyP,SAAA9yL,OAAAw0L,EAAA9iG,WAAA4iG,EAAA5iG,WAAA,IAAA8iG,EAAA7iG,cAAA2iG,EAAA3iG,eAEA,QAAAtpI,EAAA,EAAAA,EAAAhoB,EAAAyyP,SAAA9yL,OAAA33C,IAAA,CACA,IAAAusO,EAAAv0P,EAAAw0P,aAAA,IAAAx9P,KAAAi9P,EAAA3iG,cAAA2iG,EAAA5iG,WAAArpI,GAAAqpI,YAEArxJ,EAAAyyP,SAAA4B,SAAArsO,GAAAusO,EAAAj9J,MACA,CACA,MAEA,YACA28J,EAAA,IAAAj9P,KAAAi9P,EAAA3iG,cAAA2iG,EAAA5iG,WAAA4iG,EAAA/8P,UAAA+8P,EAAA/mG,UACAinG,EAAA,IAAAn9P,KAAAm9P,EAAA7iG,cAAA6iG,EAAA9iG,WAAA8iG,EAAAj9P,UAAA,EAAAi9P,EAAAjnG,UACAltJ,EAAAs0P,SAAAL,EAAA97O,SAAAg8O,EAAA7iG,cAAA,GAAA6iG,GACAn0P,EAAAyyP,SAAA9yL,OAAA3rD,KAAA81C,MAAAqqM,EAAA,QAAAngP,KAAA81C,MAAAmqM,EAAA,QACAj0P,EAAAy0P,UAAAR,GACA,MAEA,yBACAA,EAAA,IAAAj9P,KAAAi9P,EAAA3iG,cAAA2iG,EAAA5iG,WAAA4iG,EAAA/8P,WACAi9P,EAAA,IAAAn9P,KAAAm9P,EAAA7iG,cAAA6iG,EAAA9iG,WAAA8iG,EAAAj9P,UAAA,GACA8I,EAAA00P,UAAAT,EAAAE,GACAn0P,EAAAyyP,SAAA9yL,OAAA3rD,KAAA81C,MAAAqqM,EAAA,OAAAngP,KAAA81C,MAAAmqM,EAAA,OAEA,QAAA5iM,EAAA,EAAAA,EAAArxD,EAAAyyP,SAAA9yL,OAAAtO,IACArxD,EAAAyyP,SAAA4B,SAAAhjM,GAAA,IAAAr6D,KAAAi9P,EAAA3iG,cAAA2iG,EAAA5iG,WAAA4iG,EAAA/8P,UAAAm6D,GAAAn6D,UAEA,MAEA,wBACA+8P,EAAA,IAAAj9P,KAAAi9P,EAAA3iG,cAAA2iG,EAAA5iG,WAAA4iG,EAAA/8P,WACAi9P,EAAA,IAAAn9P,KAAAm9P,EAAA7iG,cAAA6iG,EAAA9iG,WAAA8iG,EAAAj9P,UAAA,GACA8I,EAAAyyP,SAAA9yL,OAAA3rD,KAAA81C,MAAAqqM,EAAA,OAAAngP,KAAA81C,MAAAmqM,EAAA,OACAj0P,EAAA20P,SAAAV,EAAAE,GACA,IAAA9iM,EAAA,EAAAA,EAAArxD,EAAAyyP,SAAA9yL,OAAAtO,IACArxD,EAAAyyP,SAAA4B,SAAAhjM,GAAArxD,EAAA40P,eAAA,IAAA59P,KAAAi9P,EAAA3iG,cAAA2iG,EAAA5iG,WAAA4iG,EAAA/8P,UAAAm6D,GAAA67F,UAOAltJ,EAAAyyP,SAAAoC,YAAAV,EACAn0P,EAAAyyP,SAAAqC,aAAAb,EACAj0P,EAAAyyP,SAAAt6J,UAAA,GAEAn4F,EAAA+0P,YACA,EAEAzC,EAAAtzP,UAAA01P,UAAA,SAAAT,EAAAE,GAIA,IAHA,IACArmJ,EAAAqmJ,EAAA9iG,WAAA4iG,EAAA5iG,WAAA,IAAA8iG,EAAA7iG,cAAA2iG,EAAA3iG,eAAA,EAEA55J,EAAA,EAAAA,EAAAo2G,EAAAp2G,IAAA,CACA,IAAAs9P,EAAA,IAAAh+P,KAAAi9P,EAAA3iG,cAAA2iG,EAAA5iG,WAAA35J,GACAu9P,EAAA,IAAAj+P,KAAAi9P,EAAA3iG,cAAA2iG,EAAA5iG,WAAA35J,EAAA,UAEAs9P,EAAAv0O,UAAAwzO,EAAAxzO,YACAu0O,EAAAf,GACAE,EAAA1zO,UAAAw0O,EAAAx0O,YACAw0O,EAAAd,GAEA,IACAlrJ,EAAA,CACAnvE,KAdA76B,KAYAu1P,aAAAQ,EAAA3jG,YAEAv3H,KAAA,IAAAk7N,EAAA1jG,cACA0jG,MACAC,QAhBAh2P,KAkBAwzP,SAAA7+F,MAAAl8J,GAAAuxG,CAGA,CACA,EAIAqpJ,EAAAtzP,UAAAs1P,SAAA,SAAAz1O,EAAAm0C,EAAAmhM,GAIA,IAHA,IACAvmJ,EAAA56C,EAAAn0C,EAAAyyI,cAEAl2C,EAAA,EAAAA,EAAAxN,EAAAwN,IAAA,CACA,IAAA45I,EAAA,IAAAh+P,KAAA6nB,EAAAyyI,cAAAl2C,EAAA,GACA65I,EAAA,IAAAj+P,KAAA6nB,EAAAyyI,cAAAl2C,EAAA,YACA45I,EAAAv0O,UAAA5B,EAAA4B,YACAu0O,EAAAn2O,GAEAs1O,GACAA,EAAA1zO,UAAAw0O,EAAAx0O,YACAw0O,EAAAd,GAGA,IAAAlrJ,EAAA,CACAnvE,KAAAjb,EAAAyyI,cAAAl2C,EACA45I,MACAC,QAjBAh2P,KAoBAwzP,SAAA7+F,MAAAx4C,GAAAnS,CACA,CACA,EAEAqpJ,EAAAtzP,UAAA21P,SAAA,SAAAV,EAAAE,GAQA,IAPA,IAEAt1O,EAAA,IAAA7nB,KAAAi9P,EAAA3iG,cAAA2iG,EAAA5iG,WAAA4iG,EAAA/8P,UAAA+8P,EAAA/mG,UACAxnD,EAAA,IAAA1uG,KAAA6nB,EAAAyyI,cAAA,GAAApE,SACA1nD,EAAA,IAAAxuG,KAAA6nB,EAAAyyI,cAAA,IAAA5rD,GACAuhB,EAAAjzG,KAAA81C,MAAAjrC,EAAA,QAAA7K,KAAA81C,MAAA07C,EAAA,QACA7lC,EAAA3rD,KAAA81C,MAAAqqM,EAAA,QAAAngP,KAAA81C,MAAAmqM,EAAA,UACAv8P,EAAA,EAAAA,EAAAioE,EAAAjoE,IAAA,EACAuvH,EAAA,QAAAA,KACAA,EAAA,GACA,IAAA+tI,EAAA,IAAAh+P,KAAA6nB,EAAAyyI,cAAAzyI,EAAAwyI,WAAAxyI,EAAA3nB,UAAA,EAAAQ,GACAu9P,EAAA,IAAAj+P,KAAA6nB,EAAAyyI,cAAAzyI,EAAAwyI,WAAAxyI,EAAA3nB,UAAA,GAAAQ,EAAA,IAEAs9P,EAAAv0O,UAAAwzO,EAAAxzO,YACAu0O,EAAAf,GACAgB,EAAAx0O,UAAA0zO,EAAA1zO,YACAw0O,EAAAd,GAEA,IAAAlrJ,EAAA,CACAnvE,KAAAmtF,EAAA,QAAAjwH,KAAA6nB,EAAAyyI,cAAAzyI,EAAAwyI,WAAAxyI,EAAA3nB,UAAA,EAAAQ,GAAA45J,cACA0jG,MACAC,QArBAh2P,KAwBAwzP,SAAA7+F,MAAAl8J,GAAAuxG,EACAge,GACA,CAEA,EAEAqrI,EAAAtzP,UAAAy1P,UAAA,SAAAR,GAMA,IALA,IACAvuJ,EAAA,IAAA1uG,KAAAi9P,EAAA3iG,cAAA,GAAApE,SACA1nD,EAAA,IAAAxuG,KAAAi9P,EAAA3iG,cAAA,IAAA5rD,GACAovJ,EAAA,IAAA99P,KAAAi9P,EAAA3iG,cAAA2iG,EAAA5iG,WAAA4iG,EAAA/8P,WACA+vH,EAAAjzG,KAAA81C,MAAAgrM,EAAA,QAAA9gP,KAAA81C,MAAA07C,EAAA,QACA9tG,EAAA,EAAAA,EALAuH,KAKAwzP,SAAA9yL,OAAAjoE,KACAuvH,EAAA,QAAAA,KACAA,EAAA,GAPAhoH,KASAwzP,SAAA4B,SAAA38P,GAAAuvH,EACAA,GAEA,EAEAqrI,EAAAtzP,UAAA+1P,WAAA,WACA,IAAA/0P,EAAAf,KAEAe,EAAAizP,eACAjzP,EAAAyyP,SAAAv8G,MAAA,GACA,QAAAx+I,EAAA,EAAAA,EAAAsI,EAAAyyP,SAAA9yL,OAAAjoE,IAAA,CACA,IAAAw9P,EAAA,CACAp7N,KAAA95B,EAAAyyP,SAAA4B,SAAA38P,GACAy9P,cAAA,KACAC,mBAAA,GACAC,oBAAA,GACAC,YAAA,mBACAC,UAAA,uBAGAv1P,EAAAyyP,SAAAv8G,MAAAx+I,GAAAw9P,CACA,CACA,EAEA5C,EAAAtzP,UAAAw2P,YAAA,SAAAj+O,GACA,IAAAvX,EAAAf,KACAyrD,EAAA,CAAArnD,EAAAkU,EAAAjN,QAAAhH,EAAAiU,EAAAhN,SACAihC,GAAA,GAEAA,GAAAxrC,EAAA+yP,iBAAAp7P,OAAA,IACA6zC,EAAAxrC,EAAAy1P,kBAAAz1P,EAAA+yP,iBAAAroM,EAAA,WAEAlf,GAAAxrC,EAAA6yP,YAAAl7P,OAAA,IACA6zC,EAAAxrC,EAAAy1P,kBAAAz1P,EAAA6yP,YAAAnoM,EAAA,WAEAlf,GAAAxrC,EAAA8yP,eAAAn7P,OAAA,GACAqI,EAAAy1P,kBAAAz1P,EAAA8yP,eAAApoM,EAAA,SAEA1qD,EAAA01P,SACA,EAEApD,EAAAtzP,UAAAi0P,aAAA,WACA,IAAAjzP,EAAAf,KACA,GAAAe,EAAAozP,cAAA/tP,IAAArF,EAAAozP,QAAA,CAGApzP,EAAAozP,QAAAnnP,MAAAjM,EAAAzF,KAAAgJ,KAAAF,EACArD,EAAAozP,QAAAhmP,OAAApN,EAAAzF,KAAAgJ,KAAAD,EAEA,IAAA2I,EAAAjM,EAAAyyP,SAAA9yL,OAAA3/D,EAAA21P,gBAAA31P,EAAAgzP,gBACA/mP,EAAA,OACAA,EAAA,MAEAA,EAAAjM,EAAAzF,KAAAgJ,KAAAF,IACArD,EAAAozP,QAAAnnP,SAEAjM,EAAAozP,QAAAlsN,KAAA,SAAAlnC,EAAAozP,QAAAhmP,QACApN,EAAAozP,QAAAlsN,KAAA,QAAAlnC,EAAAozP,QAAAnnP,MAbA,CAcA,EAEAqmP,EAAAtzP,UAAAq0P,YAAA,WACA,IAAArzP,EAAAf,KAEAe,EAAAozP,QAAAz4P,GAAA,kBAAA4c,GACAvX,EAAAw1P,YAAAj+O,EACA,IAEAvX,EAAAizP,eAEA5gN,EAAAryC,EAAAozP,QAAA,GAAA93K,WAAA,KACA,EAGAg3K,EAAAtzP,UAAAm0P,QAAA,WACA,IAAAnzP,EAAAf,KACA,GAAAe,EAAAozP,cAAA/tP,IAAArF,EAAAozP,QAAA,CAIApzP,EAAAyyP,SAAA/0O,OADA,IAIA,IADA,IAAAk4O,GAAA51P,EAAAozP,QAAA,WAAApzP,EAAAyyP,SAAA9yL,OACAjoE,EAAA,EAAAA,EAAAsI,EAAAyyP,SAAA9yL,OAAAjoE,IACAsI,EAAAyyP,SAAAv8G,MAAAx+I,GAAA2L,EALA,IAKA3L,EAAA,EACAsI,EAAAyyP,SAAAv8G,MAAAx+I,GAAA4L,EAAAtD,EAAAozP,QAAAhmP,OAAA,EAAApN,EAAAyyP,SAAAt6J,UAAA,EACAn4F,EAAAyyP,SAAAv8G,MAAAx+I,GAAA2f,EAAAu+O,EACA51P,EAAAyyP,SAAAv8G,MAAAx+I,GAAAw7D,EAAAlzD,EAAAyyP,SAAAt6J,UAEAn4F,EAAAyyP,SAAAv8G,MAAAx+I,GAAAqzG,IAAA/qG,EAAAyyP,SAAAv8G,MAAAx+I,GAAA2L,EAAArD,EAAAyyP,SAAAv8G,MAAAx+I,GAAA2f,EAAA,EAGArX,EAAA61P,kBACA71P,EAAA81P,mBACA91P,EAAA+1P,qBACA/1P,EAAA01P,SAlBA,CAoBA,EAEApD,EAAAtzP,UAAA82P,iBAAA,WACA,IAAA91P,EAAAf,KACAi3J,EAAA,IAAAl/J,KACA,GAAAk/J,GAAAl2J,EAAAyyP,SAAAoC,aAAA3+F,GAAAl2J,EAAAyyP,SAAAqC,aAAA,CACA,IAAAkB,EAAAh2P,EAAAi2P,OAAA//F,GACAggG,EAAA,CACAp8N,KAAA,eACAmvE,KAAAitD,EAAAigG,qBACA9yP,EAAA2yP,EAAA3jN,EAAAklD,YAAA,gBAAAtrF,MAAA,KACA3I,EAAAtD,EAAAozP,QAAAhmP,OAAA,IACAiK,EAAAg7B,EAAAklD,YAAA,gBAAAtrF,MAAA,GACAinD,EAAAlzD,EAAAozP,QAAAhmP,OAAA,GACAmoP,UAAA,sBACAD,YAAA,oBACAH,cAAA,IAEAn1P,EAAA0yP,eAAA,CAAA0D,IAAAF,EAAAnrJ,IAAAirJ,EACA,MACAh2P,EAAA0yP,eAAA,IAEA,EAEAJ,EAAAtzP,UAAA+2P,mBAAA,WACA,IAAA/1P,EAAAf,KACA,QAAAoG,IAAArF,EAAAyyP,SAAA7+F,MAAA,WAAA5zJ,EAAAyyP,SAAA7+F,MAAA,GAGA,QAAAl8J,EAAA,EAAAA,EAAAsI,EAAAyyP,SAAA7+F,MAAAj8J,OAAAD,IAAA,CACA,IAAAuxG,EAAAjpG,EAAAyyP,SAAA7+F,MAAAl8J,GACAs9P,EAAAh1P,EAAAi2P,OAAAhtJ,EAAA+rJ,KACAC,EAAAj1P,EAAAi2P,OAAAhtJ,EAAAgsJ,MACAj1P,EAAAyyP,SAAA7+F,MAAAl8J,GAAAqzG,IAAA/2F,KAAA81C,OAAAkrM,EAAAC,GAAA,EACA,CACA,EAEA3C,EAAAtzP,UAAAi3P,OAAA,SAAAhtJ,GACA,IACA8B,EADA/qG,EAAAf,KAMA,OAFA8rG,GAFA/qG,EAAAozP,QAAAnnP,MAAA,EAAAjM,EAAAyyP,SAAA/0O,UAEA1d,EAAAyyP,SAAAoC,YAAAp0O,UAAAzgB,EAAAyyP,SAAAqC,aAAAr0O,YAAAwoF,EAAAxoF,UAAAzgB,EAAAyyP,SAAAqC,aAAAr0O,YACAsqF,GAAA/qG,EAAAyyP,SAAA/0O,MAEA,EAEA40O,EAAAtzP,UAAAy2P,kBAAA,SAAAY,EAAA3rM,EAAAjb,GAEA,IADA,IAAAzvC,EAAAf,KACAvH,EAAA2+P,EAAA1+P,OAAA,EAAAD,GAAA,EAAAA,IACA,GAAAgzD,EAAArnD,GAAAgzP,EAAA3+P,GAAA2L,GAAAqnD,EAAArnD,GAAAgzP,EAAA3+P,GAAA2L,EAAAgzP,EAAA3+P,GAAA2f,GACAqzC,EAAApnD,GAAA+yP,EAAA3+P,GAAA4L,GAAAonD,EAAApnD,GAAA+yP,EAAA3+P,GAAA4L,EAAA+yP,EAAA3+P,GAAAw7D,EAAA,CAEA,GAAAmjM,IAAAr2P,EAAA+yP,iBAAA,CACA,IAAAl5P,EAAAw8P,EAAA3+P,GAAAmC,GACAmG,EAAA6B,aAAA7B,EAAAzF,KAAAoI,SAAAq+F,QAAAn+F,gBAAAhJ,EACA,CAEA,aAAA41C,EAAA,CAEA,QAAArc,EAAA,EAAAA,EAAApzB,EAAA+yP,iBAAAp7P,OAAAy7B,IACA,GAAApzB,EAAA+yP,iBAAA3/N,GAAAgjO,MAAAC,EAAA3+P,GACA,SAGA,QAAA2N,IAAAgxP,EAAA3+P,GAAA+7P,cAAA,KAAA4C,EAAA3+P,GAAA+7P,aACA,SAEAphN,EAAAjX,KAAA,cAEA,IAAAtB,EAAAu8N,EAAA3+P,GAAA+7P,aAAA4C,EAAA3+P,GAAA+7P,aAAAh8P,MAAA,aAEAg8P,EAAA,GACAj0F,EAAA62F,EAAA3+P,GAAA2f,EAAA,GACA/T,EAAA+yP,EAAA3+P,GAAA4L,EACA7C,EAAA,EAEAgzP,EAAAhzP,GAAA,gBAEAgzP,IADAhzP,GACA,GACA,QAAA26G,EAAA,EAAAA,EAAAthF,EAAAniC,OAAAyjH,IAEA/oE,EAAAklD,YAAAk8J,EAAAhzP,IAAAwL,OAAAuzJ,IAEAi0F,IADAhzP,GACA,IAEAgzP,EAAAhzP,IAAAq5B,EAAAshF,GAAA,IAGA,IAAAk7I,EAAA,CACAx8N,KAAA25N,EACApwP,EAAAgzP,EAAA3+P,GAAA2L,EAAA,GACAC,IACA+T,EAAAmoJ,EAAA,GACAtsG,EAAA,GAAAugM,EAAA97P,OACA49P,UAAA,yBACAD,YAAA,kBACAc,IAAAC,EAAA3+P,IAGA,GAAA4+P,EAAApjM,EAAA5vD,EAAAtD,EAAAozP,QAAAhmP,OAAA,CAEA,IAAA8oE,EAAAogL,EAAApjM,EAAA5vD,EAAAtD,EAAAozP,QAAAhmP,OACAkpP,EAAAhzP,IAAA4yE,CACA,CAKA,GAHAogL,EAAAjzP,EAAA,IACAizP,EAAAjzP,EAAA,GAEAizP,EAAAjzP,EAAAizP,EAAAj/O,EAAArX,EAAAozP,QAAAnnP,MAAA,CACA,IAAAgqE,EAAAqgL,EAAAj/O,EAAAg/O,EAAA3+P,GAAA2L,EAAArD,EAAAozP,QAAAnnP,MACAqqP,EAAAjzP,EAAAgzP,EAAA3+P,GAAA2L,EAAA4yE,CACA,CAGA,OADAj2E,EAAA+yP,iBAAAjzP,KAAAw2P,IACA,CACA,CACA,aAAA7mN,EAEA,OADAzvC,EAAA+yP,iBAAAryP,OAAAhJ,EAAA,IACA,CAEA,CAEA,QACA,EAEA46P,EAAAtzP,UAAA62P,gBAAA,WACA,IAAA71P,EAAAf,KACAozC,EAAA8lD,UAAA,EACAn4F,EAAA6yP,YAAA,GACA7yP,EAAAuyP,eAAAzxP,SAAA,SAAAwyP,GACA,SAAAA,EAAAK,cAAA,CAGA,IAEAt8O,EAFAk/O,EAAAv2P,EAAAi2P,OAAA3C,EAAAK,eAKAt8O,EADA,KAAAi8O,EAAAC,WAAAluP,IAAAiuP,EAAAC,KACAlhN,EAAAklD,YAAA+7J,EAAAK,cAAAwC,sBAAAlqP,MAAA,GAEAomC,EAAAklD,YAAA+7J,EAAAC,MAAA,SAGA,IAAAiD,EAAA,CACA38P,GAAAy5P,EAAAz5P,GACAigC,KAAAw5N,EAAAC,KACAE,aAAAH,EAAAG,aACAxqJ,KAAAqqJ,EAAAK,cAAAwC,qBACA9yP,EAAAkzP,EAAAl/O,EAAA,EACA/T,EAAAtD,EAAAozP,QAAAhmP,OAAA,EACAiK,IACA67C,EAAAlzD,EAAAozP,QAAAhmP,OAAA,GACArU,SAAAw9P,EACAhB,UAAA,sBACAD,YAAA,kBACA3wP,KAAA,IACAwwP,cAAA,GACAsB,OAAA,GAGAz2P,EAAA6yP,YAAA/yP,KAAA02P,GACAx2P,EAAA6yP,YAAAl7P,OAAA,GACAqI,EAAA02P,gBAAA12P,EAAA6yP,YAAA2D,EA/BA,CAiCA,IAEAx2P,EAAA8yP,eAAA,GACA9yP,EAAAuyP,eAAAzxP,SAAA,SAAAwyP,GACA,SAAAA,EAAAO,eAAA,CAGA,IAEAx8O,EAFAs/O,EAAA32P,EAAAi2P,OAAA3C,EAAAO,gBAKAx8O,EADA,KAAAi8O,EAAAC,WAAAluP,IAAAiuP,EAAAC,KACAlhN,EAAAklD,YAAA+7J,EAAAO,eAAAsC,sBAAAlqP,MAAA,GAEAomC,EAAAklD,YAAA+7J,EAAAC,MAAA,SAIA,IAAAqD,EAAA,CACA/8P,GAAAy5P,EAAAz5P,GACAigC,KAAAw5N,EAAAC,KACAE,aAAAH,EAAAG,aACAxqJ,KAAAqqJ,EAAAO,eAAAsC,qBACAp9P,SAAA49P,EACAtzP,EAAAszP,EAAAt/O,EAAA,EACA/T,EAAAtD,EAAAozP,QAAAhmP,OAAApN,EAAAozP,QAAAhmP,OAAA,IACAiK,IACA67C,EAAAlzD,EAAAozP,QAAAhmP,OAAA,GACAmoP,UAAA,sBACAD,YAAA,kBACA3wP,KAAA,IACAwwP,cAAA,GACAsB,OAAA,GAGAz2P,EAAA8yP,eAAAhzP,KAAA82P,GACA52P,EAAA8yP,eAAAn7P,OAAA,GACAqI,EAAA02P,gBAAA12P,EAAA8yP,eAAA8D,EAhCA,CAkCA,GACA,EAEAtE,EAAAtzP,UAAAw1P,aAAA,SAAAqC,GACA,OAAAA,GACA,OACA,OAAAv/J,OAAA,IAAAx9D,KAAA,WACA,OACA,OAAAw9D,OAAA,IAAAx9D,KAAA,YACA,OACA,OAAAw9D,OAAA,IAAAx9D,KAAA,SACA,OACA,OAAAw9D,OAAA,IAAAx9D,KAAA,SACA,OACA,OAAAw9D,OAAA,IAAAx9D,KAAA,OACA,OACA,OAAAw9D,OAAA,IAAAx9D,KAAA,QACA,OACA,OAAAw9D,OAAA,IAAAx9D,KAAA,QACA,OACA,OAAAw9D,OAAA,IAAAx9D,KAAA,YACA,OACA,OAAAw9D,OAAA,IAAAx9D,KAAA,aACA,OACA,OAAAw9D,OAAA,IAAAx9D,KAAA,WACA,QACA,OAAAw9D,OAAA,IAAAx9D,KAAA,YACA,QACA,OAAAw9D,OAAA,IAAAx9D,KAAA,YAGA,EAEAw4N,EAAAtzP,UAAA41P,eAAA,SAAAkC,GACA,OAAAA,GACA,OACA,UACA,OAIA,OACA,UAHA,OACA,UAGA,OACA,UACA,QACA,UAEA,EAEAxE,EAAAtzP,UAAA03P,gBAAA,SAAAK,EAAAtjM,GAGA,IAFA,IAAAzzD,EAAAf,KACAqE,EAAAmwD,EAAAnwD,EACAub,EAAAk4O,EAAAp/P,OAAA,EAAAknB,GAAA,EAAAA,IAAA,CAEA,IAAA6xE,EAAAqmK,EAAAl4O,GAEA,GAAA40C,EAAApwD,GAAAqtF,EAAArtF,EAAAqtF,EAAAr5E,GAAAq5E,EAAArtF,GAAAowD,EAAApwD,EAAAowD,EAAAp8C,GAAAq5E,IAAAj9B,EAAA,CACA,OAAAi9B,EAAA+lK,QACA,OACAhjM,EAAAgjM,OAAA,EACA,KAAAhjM,EAAA9uD,KACA8uD,EAAAnwD,EAAAotF,EAAAptF,EAAAotF,EAAAx9B,EAAAlzD,EAAAozP,QAAAhmP,OAAA,GAGAqmD,EAAAnwD,EAAAotF,EAAAptF,EAAAotF,EAAAx9B,EAAAlzD,EAAAozP,QAAAhmP,OAAA,GACA,MACA,OACAqmD,EAAAgjM,OAAA,EAEA,KAAAhjM,EAAA9uD,KACA8uD,EAAAnwD,EAAAotF,EAAAptF,EAAAotF,EAAAx9B,EAAAlzD,EAAAozP,QAAAhmP,OAAA,GAEAqmD,EAAAnwD,EAAAotF,EAAAptF,EAAAotF,EAAAx9B,EAAAlzD,EAAAozP,QAAAhmP,OAAA,GACA,MACA,OACAqmD,EAAAgjM,OAAA,EACAhjM,EAAAnwD,IAMA,KACA,CACA,CACA,EAGAgvP,EAAAtzP,UAAA02P,QAAA,WACA,IAAA11P,EAAAf,KACAe,EAAAqlO,cACArlO,EAAA0yP,gBACA1yP,EAAAg3P,SAAAh3P,EAAA0yP,eAAA0D,IAAAp2P,EAAA0yP,eAAA3nJ,KAEA,QAAAtI,EAAA,EAAAA,EAAAziG,EAAAyyP,SAAA7+F,MAAAj8J,OAAA8qG,IACAziG,EAAAi3P,SAAAj3P,EAAAyyP,SAAA7+F,MAAAnxD,IAEA,QAAApxC,EAAA,EAAAA,EAAArxD,EAAAyyP,SAAAv8G,MAAAv+I,OAAA05D,IACArxD,EAAAk3P,QAAAl3P,EAAAyyP,SAAAv8G,MAAA7kF,IAEA,QAAA35D,EAAA,EAAAA,EAAAsI,EAAA6yP,YAAAl7P,OAAAD,IACAsI,EAAAg3P,SAAAh3P,EAAA6yP,YAAAn7P,GAAAsI,EAAA6yP,YAAAn7P,GAAAqB,UAEA,QAAAq6B,EAAA,EAAAA,EAAApzB,EAAA6yP,YAAAl7P,OAAAy7B,IACApzB,EAAAk3P,QAAAl3P,EAAA6yP,YAAAz/N,GAAApzB,EAAA6yP,YAAAz/N,GAAAr6B,UAEA,QAAAqiH,EAAA,EAAAA,EAAAp7G,EAAA8yP,eAAAn7P,OAAAyjH,IACAp7G,EAAAg3P,SAAAh3P,EAAA8yP,eAAA13I,GAAAp7G,EAAA8yP,eAAA13I,GAAAriH,UAEA,QAAAi6D,EAAA,EAAAA,EAAAhzD,EAAA8yP,eAAAn7P,OAAAq7D,IACAhzD,EAAAk3P,QAAAl3P,EAAA8yP,eAAA9/L,GAAAhzD,EAAA8yP,eAAA9/L,GAAAj6D,UAEAiH,EAAA0yP,gBACA1yP,EAAAk3P,QAAAl3P,EAAA0yP,eAAA0D,IAAAp2P,EAAA0yP,eAAA3nJ,KAEA,QAAA/iF,EAAA,EAAAA,EAAAhoB,EAAA+yP,iBAAAp7P,OAAAqwB,IACAhoB,EAAAm3P,gBAAAn3P,EAAA+yP,iBAAA/qO,GAEA,EAEAsqO,EAAAtzP,UAAAi4P,SAAA,SAAAhuJ,GAEA52D,EAAAspC,UAAA,mBACAtpC,EAAA6lD,YAAA,mBACA7lD,EAAAjX,KAAA,cACAiX,EAAA9R,UAAA,SACA8R,EAAA8lD,UAAA,EAEA,IAAAlsF,EAAAomC,EAAAklD,YAAA0R,EAAAnvE,MAAA7tB,MACAomC,EAAAglD,SAAA4R,EAAAnvE,KAAAmvE,EAAA8B,IARA9rG,KAQAm0P,QAAAhmP,OAAA,OAAAnB,EAEA,EAEAqmP,EAAAtzP,UAAAg4P,SAAA,SAAAvjM,EAAAs3C,GACA,IAAA/qG,EAAAf,KACAkhB,EAAAngB,EAAAozP,QAAAhmP,OAAA,EAAApN,EAAAyyP,SAAAt6J,UAAA,EACA,MAAA1kC,EAAA9uD,OACAwb,EAAAngB,EAAAozP,QAAAhmP,OAAA,EAAApN,EAAAyyP,SAAAt6J,UAAA,GAEA9lD,EAAA8lD,UAAA,EACA9lD,EAAAqmD,YACArmD,EAAA6lD,YAAAzkC,EAAA6hM,YACAjjN,EAAAqnD,OAAAqR,EAAA5qF,GACAkyB,EAAAsnD,OAAAoR,EAAAt3C,EAAAnwD,GACA+uC,EAAAqrD,QACA,EAEA40J,EAAAtzP,UAAAm4P,gBAAA,SAAA1jM,GAGAphB,EAAA8lD,UAAA,EACA9lD,EAAAjX,KAAA,cACAiX,EAAAspC,UAAAloB,EAAA8hM,UACAljN,EAAA6lD,YAAAzkC,EAAA6hM,YACAjjN,EAAA+kN,WAAA3jM,EAAApwD,EAAAowD,EAAAnwD,EAAAmwD,EAAAp8C,EAAAo8C,EAAAP,GACA7gB,EAAAupC,SAAAnoB,EAAApwD,EAAAowD,EAAAnwD,EAAAmwD,EAAAp8C,EAAAo8C,EAAAP,GACA7gB,EAAAspC,UAAA,mBACAtpC,EAAA9R,UAAA,SACA,QAAA7oC,EAAA,EAAAA,EAAA+7D,EAAA35B,KAAAniC,OAAAD,IACA26C,EAAAglD,SAAA5jC,EAAA35B,KAAApiC,GAAA+7D,EAAApwD,EAAAowD,EAAAp8C,EAAA,EAAAo8C,EAAAnwD,EAAA,IAAA5L,EAAA,GAAA+7D,EAAAp8C,EAGA,EAEAi7O,EAAAtzP,UAAAk4P,QAAA,SAAAzjM,EAAAs3C,GAEAA,IACAA,EAAAt3C,EAAApwD,EAAAowD,EAAAp8C,EAAA,GAEAg7B,EAAA8lD,UAAA,EACA9lD,EAAAspC,UAAAloB,EAAA8hM,UACAljN,EAAA6lD,YAAAzkC,EAAA6hM,YACAjjN,EAAAupC,SAAAnoB,EAAApwD,EAAAowD,EAAAnwD,EAAAmwD,EAAAp8C,EAAAo8C,EAAAP,GACA7gB,EAAA+kN,WAAA3jM,EAAApwD,EAAAowD,EAAAnwD,EAAAmwD,EAAAp8C,EAAAo8C,EAAAP,GAEA7gB,EAAA9R,UAAA,SACA,IAAAJ,EAAAnsB,KAAA81C,MAXA7qD,KAWA1E,KAAAgJ,KAAA,OAEA48B,EAAA,KACAA,EAAA,IACAA,EAAA,KACAA,EAAA,IAEAA,EAAAszB,EAAA0hM,gBACAh1N,EAAAszB,EAAA0hM,eAEA9iN,EAAAjX,KAAA+E,EAAA,YACAkS,EAAAspC,UAAA,mBACAloB,EAAAw1C,MACA52D,EAAAglD,SAAA5jC,EAAA35B,KAAAixE,EAAAt3C,EAAAnwD,EAAAmwD,EAAAP,EAAA,EAAAO,EAAAp8C,EAAAo8C,EAAAP,EAAA,GACA7gB,EAAAglD,SAAA5jC,EAAAw1C,KAAA8B,EAAAt3C,EAAAnwD,EAAAmwD,EAAAP,EAAAO,EAAAP,EAAA,EAAAO,EAAAp8C,EAAAo8C,EAAAP,EAAA,IAGA7gB,EAAAglD,SAAA5jC,EAAA35B,KAAAixE,EAAAt3C,EAAAnwD,EAAAmwD,EAAAP,EAAAO,EAAAP,EAAA,EAAAO,EAAAp8C,EAAAo8C,EAAAP,GAEA7gB,EAAAwnD,WACA,EAEAy4J,EAAAtzP,UAAAqmO,YAAA,WAEAhzL,EAAAizL,UAAA,IADArmO,KACAm0P,QAAAnnP,MADAhN,KACAm0P,QAAAhmP,OACA,EAEAklP,EAAAtzP,UAAA22P,gBAAA,SAAA/2O,GACA,OAAAA,GACA,YACA,WACA,gBAEA,cACA,WACA,YACA,WACA,QACA,UAEA,EAGA0zO,EAAAtzP,UAAAq4P,QAAA,WAEA,OADAp4P,KACAq4P,aAAAC,WACA,IAAAl/P,EAAAipB,KAFAriB,KAEA1H,KACA,EAEA+6P,CACA,IAKA57P,OCr1BA,2BACA,SACA,UACA,aACA,SAAA2B,EAAAkM,EAAAm5B,GACA,aAEA,IAAA1C,EAAA,CACAzgC,KAAA,CACA2kN,SAAA,wFACA37M,KAAA,CACAF,EAAA,IACAC,EAAA,MAKA,SAAAk0P,EAAAp1O,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,6BAAA2iC,EAAA5Y,EACA,CAmHA,OAjHA7d,EAAA3F,OAAA44P,EAAAjzP,GAEAizP,EAAA3+N,SAAA,WAEA2+N,EAAAx4P,UAAAy4P,YAAA,WACAx4P,KAAAy4P,WAAAz4P,KAAAuF,SAAA,IACAvF,KAAAy4P,WAAAz4P,KAAAuF,SAAAjE,KAAA,wBACAtB,KAAAy4P,WAAAz4P,KAAAuF,SAAAjE,KAAA,2BACAtB,KAAAy4P,WAAAz4P,KAAAuF,SAAAjE,KAAA,wBACA,EAEAi3P,EAAAx4P,UAAA04P,WAAA,SAAAlzP,EAAAusC,EAAAygK,GACA,MAAAA,EACA9zK,EAAAK,aAAA9+B,KAAA,KAAAuF,EAAAvF,KAAA1E,KAAA+jC,OAAAyS,GAEArT,EAAAK,aAAA9+B,KAAA,KAAAuF,EAAAvF,KAAA1E,KAAA+jC,OAAAyS,EAAAygK,EACA,EAEAgmD,EAAAx4P,UAAA0H,WAAA,WACAzH,KAAA2M,gBACA3M,KAAA04P,cACA14P,KAAAw4P,aACA,EAEAD,EAAAx4P,UAAA44P,cAAA,WACA34P,KAAAuF,SAAAk1C,QACAz6C,KAAA04P,cACA14P,KAAAw4P,aACA,EAEAD,EAAAx4P,UAAA24P,YAAA,WACA,GAAA14P,KAAA1E,KAAA2kN,SAAA,CAEA,IAAA24C,EAAA54P,KAAA64P,gBAEA74P,KAAAuF,SAEAsmC,OAAAzyC,EAAA,aAEAyyC,OAAAzyC,EAAA,WACAyyC,OAAAzyC,EAAA,UACAyyC,OAAA1yC,EAAA+N,IAAA0xP,EAAAryO,SAAA,SAAAu0H,GACA,OAAA1hJ,EAAA,UACAyhC,KAAAigH,EAAAjgH,KAAAxY,QACAzc,IAAA,QAAAk1I,EAAA9tI,MAAA,EAAA8tI,EAAA9tI,MAAA,WACA,OAEA6+B,OAAAzyC,EAAA,WACAyyC,OAAA1yC,EAAA+N,IAAA0xP,EAAA7W,OACA,SAAA1sK,GACA,OAAAj8E,EAAA,UACAyyC,OAAA1yC,EAAA+N,IAAAmuE,GACA,SAAAx6C,GACA,OAAAzhC,EAAA,QAAAyhC,OAAAxY,OACA,IACA,MAxBA,CAyBA,EAEAk2O,EAAAx4P,UAAA84P,cAAA,WACA,IAAA9W,EAAA/hP,KAAA1E,KAAA2kN,SAAAznN,MAAA,MACA8oO,EAAA,KAEA,OAAAygB,EAAArpP,OAGA,GAFA4oO,EAAAnoO,EAAAmhB,KAAAynO,GAAArvO,MAAA,oBAEA,CACAqvO,EAAAxtO,MAEA+sN,EAAAnoO,EAAA+N,IAAAo6N,EAAA,GAAA9oO,MAAA,eAAA8L,GACA,WAAA6gG,OAAA7gG,EACA,IAEA,IAAAw0P,EAAA3/P,EAAA4J,OAAAu+N,GAAA,SAAA3nM,EAAAr1B,GAAA,OAAAq1B,EAAAr1B,CAAA,MAEAg9N,EAAAnoO,EAAA+N,IAAAo6N,GAAA,SAAAh9N,GACA,WAAAA,GAAA,IAAAw0P,EAAA,EACAx0P,EAAAw0P,EAAA,GACA,GACA,MACAx3B,EAAA,GAIAygB,EAAA5oP,EAAA+N,IAAA66O,GAAA,SAAA1sK,GACA,OAAAA,EAAA78E,MAAA,IACA,IAEA,IAAAugQ,EAAA5/P,EAAA+I,MAAA6/O,GACA76O,KAAA,SAAAmuE,GACA,OAAAA,EAAA38E,MACA,IACAy+B,KAAA,SAAAz+B,GACA,OAAAA,CACA,IACA8T,QAQA,OANArT,EAAAiJ,KAAA2/O,GAAA,SAAA1sK,GACA,GAAAA,EAAA38E,SAAAqgQ,EACA,QAAAtgQ,EAAA48E,EAAA38E,OAAAD,EAAAsgQ,EAAAtgQ,IACA48E,EAAAx0E,KAAA,GACA,IAEA,CACA0lB,QAAAptB,EAAA+N,IAAA66O,EAAA/iO,SAAA,SAAA6b,EAAApiC,GACA,OACAoiC,OACA7tB,MAAAs0N,EAAA7oO,IAAA,EAEA,IACAspP,QAEA,EAEAwW,CACA,IACA9gQ,OCxIA,gBACA,WACA,SAAA2B,GAEA,IAAA4/P,EAAA,SAAAxsP,GACA,GAAAxM,KAAA1E,KAAA2J,SAAA,CAGA,IAAAg0P,EAAAj5P,KAAA2C,OAAAy1C,KAAA1V,SAAA,2BAEA/d,YAAA,WACAvqB,UAAAC,UAAAN,OAAA,gBACA,IAAAyS,EACAysP,EAAArzP,IAAA,CAAAmD,UAAA,4BAEAkwP,EAAArzP,IAAA,CAAAmD,UAAA,4BAIA,IAAAmwP,EAAA1sP,EAAA,EACA,QAAAA,EAAA,MACA,OAEAysP,EAAAv2N,WAAAtgC,MAAA,WACAhJ,EAAA4G,MAAA4F,IAAA,kBAAAszP,GAEA9/P,EAAA4G,MAAA0iC,WAAAtgC,MAAA,WACAhJ,EAAA4G,MAAA4F,IAAA,SAAAszP,EACA,GACA,GACA,GAxBA,CAyBA,EAgBA,OACAC,UAfA,WACA,OAAAn5P,KAAA1E,KAAA0hC,WAAA52B,IAAApG,KAAA1E,KAAA0hC,MAAAh9B,KAAA1E,KAAA89P,QACAJ,EAAAh0O,KAAAhlB,UAAA1E,KAAA0hC,MACAh9B,KAAA1E,KAAA89P,SACAJ,EAAAh0O,KAAAhlB,KAAA,EAEA,EAUAg5P,eACAK,uBATA,WACAr5P,KAAAs5P,aAAAt5P,KAAAs2C,kBACAt2C,KAAAs5P,YAAA1zP,IAAA,CAAAuI,OAAAnO,KAAAs2C,iBAAA5/B,KAAA,iBAEA,EAOA,IAEAjf,OCtDA,oCACA,SACA,OACA,SAAA2B,EAAA0K,GACA,aAEA,IAEAy1P,EAAA,SAAAC,GACAx5P,KAAAw5P,cAEAx5P,KAAAy5P,kBAAAz5P,KAAA05P,gBAAAn3P,KAAAvC,MACAA,KAAA25P,sBAAA,IACA,EAsIA,OApIAJ,EAAAx5P,UAAA65P,MAAA,WACA55P,KAAAohN,QAAAhoN,EAAA,cACA6uC,KAAA,YAAAjoC,KAAAw5P,YAAAl+P,KAAA+vF,WACAzlF,IAAA,CACAoH,MAAA,OACAmB,OAAA,OACA6tB,OAAA,EACAnvB,QAAA,OACAgtP,mBAAA,IAEAhzP,SAAA7G,KAAAw5P,YAAAj0P,UACA1L,OAAA21B,iBAAA,UAAAxvB,KAAAy5P,mBAAA,EACA,EAEAF,EAAAx5P,UAAA+I,KAAA,SAAAowB,GAKA,GAJAl5B,KAAAohN,QACAn5K,KAAA,MAAAjoC,KAAAknO,aAAAhuM,IACAtzB,IAAA,sBAEA5F,KAAA25P,uBAAA,aAAA35P,KAAAw5P,YAAAj0P,SAAAK,IAAA,aACA,IAAA7E,EAAAf,KACAA,KAAAohN,QAAA1lN,GAAA,mBACAqF,EAAA44P,wBAEA54P,EAAA44P,sBAAAx5O,aAAA,WACA,GAAApf,EAAAqgN,QAAA,GAAArwL,cAAA,CAEA,IAAA+oO,EAAA1gQ,EAAA2H,EAAAqgN,QAAA,GAAArwL,cAAA74B,SAAAi4B,MAAA7uB,KAAA,2BAGA,GAFAw4P,EAAAp3N,SAAA,wBAAA98B,IAAA,qBAEA,IAAAk0P,EAAAphQ,OAAA,CAEAohQ,EAAAl0P,IAAA,qBAEA7E,EAAAqgN,QAAAp0M,MAAA8sP,EAAA,GAAAj2N,aACA9iC,EAAAy4P,YAAAj0P,SAAAyH,MAAA8sP,EAAA,GAAAj2N,aAGA,IAAA64G,EAAA,EACAo9G,EACAp3N,WACAvoB,QAAA,SAAA1hB,EAAA4sD,GACA,GAAAjsD,EAAAisD,GAAA5iB,SAAA,gCACA,IAAA0+C,EAAA/nF,EAAAisD,GAAA/jD,KAAA,aACA,QAAA6/E,KACA/nF,EAAA+nF,EAAApwD,cAAA74B,SAAAi4B,MAAA7uB,KAAA,2BACA5I,MAEA,IAAA0J,MAAA,SAAA3J,EAAA4sD,GACAq3F,EAAA3nI,KAAAoiB,IAAAulH,EAAAr3F,EAAA1hB,aACA,IACAm2N,EAAAl0P,IAAA,SAAA82I,EAAA,MAEA37I,EAAAqgN,QAAAjzM,OAAA2rP,EAAA,GAAAn2N,cACA5iC,EAAAy4P,YAAAj0P,SAAA4I,OAAA2rP,EAAA,GAAAn2N,aAxBA,CALA,CA+BA,GAjEA,KAkEA,GACA,CACA,EAEA41N,EAAAx5P,UAAAyJ,KAAA,WACAxJ,KAAAohN,UAEAphN,KAAA25P,wBACAlxO,cAAAzoB,KAAA25P,uBACA35P,KAAA25P,sBAAA,MAGA35P,KAAAohN,QACAn5K,KAAA,UACAriC,IAAA,kBACA,EAEA2zP,EAAAx5P,UAAAmnO,aAAA,SAAAhuM,GACA,IAAAA,EAAA,oBAEA,IAAAwS,EAAA5nC,EAAA1G,aAAA,qBAAA87B,GAEAuQ,EAAA,GAEAS,EAAAlqC,KAAAw5P,YAAA72P,OAAAm2B,WAAAoR,QAAAC,SACAhxC,EAAAwW,KAAAu6B,GAAAxxC,OAAA,IACA+wC,EAAAS,QAAAt2B,KAAAE,UAAAo2B,IAEA,IAAA6vN,EAAA/5P,KAAAw5P,YAAApyB,yBAIA,OAHAjuO,EAAAwW,KAAAoqP,GAAArhQ,OAAA,IACA+wC,EAAA3Q,WAAAllB,KAAAE,UAAAimP,IAEA/5P,KAAAw5P,YAAA72P,OAAAqR,IAAA21B,QAAA+B,EAAAjC,EACA,EAEA8vN,EAAAx5P,UAAA25P,gBAAA,SAAA/6O,GACA,IAAA6iM,EAAAxhN,KAAAg6P,oBAAAr7O,GACA,GAAA6iM,EAEA,4BAAAA,EAAAv3M,WAAAjK,KAAAw5P,YAAAl+P,KAAA2+P,sBACAj6P,KAAAw5P,YAAAU,+BAAAl6P,KAAAw5P,YAAAl+P,KAAAkmN,OACA,CAEA,IAAA38J,EAAA28J,EAAA38J,KAAA28J,EAAA38J,KAAA,QACA7kD,KAAAw5P,YAAA52P,aAAA5C,KAAAw5P,YAAAl+P,KAAAV,GAAA,IAAA4mN,EAAAv3M,UAAA46C,EACA,CACA,EAEA00M,EAAAx5P,UAAAi6P,oBAAA,SAAA1hP,GACA,GAAAA,EAAA3M,SAAA3L,KAAAohN,QAAA/oN,IAAA,GAAA04B,cAGA,IAEA,OADAnd,KAAAC,MAAAyE,EAAAhd,KAEA,OAAAqqB,GAEA,CAGA,EAEA4zO,EAAAx5P,UAAA0hN,qBAAA,SAAAD,GACA,IAAA24C,EAAAn6P,KAAAw5P,YAAAryP,SAAA7L,KAAA4oC,WACA,IACArqC,OAAAC,SAAA8E,SAAA,KAAA/E,OAAAC,SAAA0oB,KACAxiB,KAAAohN,QAAA/oN,IAAA,GAAA04B,cAAA2wL,YAAA9tM,KAAAE,UAAA0tM,GAAA24C,EACA,EAEAZ,EAAAx5P,UAAAyI,QAAApP,EAAA+O,KAEAoxP,EAAAx5P,UAAAi7B,QAAA,WACAnhC,OAAAohC,oBAAA,UAAAj7B,KAAAy5P,kBACA,EAEAF,CACA,IAEA9hQ,OCtJA,wBACA,OACA,SAAAqM,GACA,aAEA,IAAAs2P,EAAA,SAAAt2P,EAAAvK,gBAAA,IAAAuK,EAAArK,2BAIA4gQ,EAAA,SAAAC,GACA,IACA,IAAAz8O,EAAA08O,eAAAC,QAAAF,GACA,OAAAz8O,EAAAjK,KAAAC,MAAAgK,GAAA,EACA,CACA,MAAAvF,GACA,QACA,CACA,EAEAmiP,EAAA,SAAAH,EAAAI,GACA,IACAA,EAAAhiQ,OAdA,IAeAgiQ,EAAAj5P,OAfA,MAeAi5P,EAAAhiQ,QAEA,IAAAmlB,EAAAjK,KAAAE,UAAA4mP,GACAH,eAAAI,QAAAL,EAAAz8O,EACA,CACA,MAAAvF,GAAA,CACA,EAEAsiP,EAAA,SAAAC,EAAAC,EAAAC,GACA/6P,KAAA86P,aACA96P,KAAA+6P,gBACA/6P,KAAAs6P,SAAAF,EAAA,IAAAS,EACA76P,KAAA06P,MAAA16P,KAAA+6P,cAAA/6P,KAAAs6P,SACA,EAsCA,OApCAM,EAAAI,iBAAA,SAAAH,GACA,WAAAD,EAAAC,EAAAJ,EAAAJ,EACA,EAEAO,EAAAK,SAAA,SAAAJ,GACA,IAAAK,EAAA,GACA,WAAAN,EACAC,GACA,SAAAH,GACAQ,EAAAR,CACA,IACA,SAAAA,GACA,OAAAQ,CACA,GACA,EAEAN,EAAA76P,UAAAc,KAAA,SAAAmT,GACA,IAAAxS,EAAAwS,EAAAlb,QAAA,KAEA0I,GAAA,IACAwS,IAAAnb,UAAA,EAAA2I,IAEAxB,KAAA06P,MAAA75P,KAAAmT,GACAhU,KAAA86P,WAAA96P,KAAAs6P,SAAAt6P,KAAA06P,MACA,EAEAE,EAAA76P,UAAAwU,IAAA,WACA,OAAAvU,KAAA06P,MAAAhiQ,OACA,YAEA,IAAAyiQ,EAAAn7P,KAAA06P,MAAAnmP,MAGA,OAFAvU,KAAA86P,WAAA96P,KAAAs6P,SAAAt6P,KAAA06P,OAEAS,CACA,EAEAP,CACA,IACAnjQ,OC3EA,mBACA,KACA,wBACA,SAAAqM,EAAA82P,GACA,aAEA,IAAAQ,EAAA,SAAAC,EAAArnP,EAAAsnP,EAAAC,GACAv7P,KAAAw7P,gBAAAH,EACAr7P,KAAAgU,MACAhU,KAAAu7P,aACAv7P,KAAAs7P,SACA,EAoCA,OAlCAF,EAAAJ,iBAAA,SAAAK,EAAArnP,EAAAunP,GACA,WAAAH,EAAAC,EAAArnP,EAAA4mP,EAAAI,iBAAA,OAAAO,EACA,EAEAH,EAAAH,SAAA,SAAAI,EAAArnP,EAAAunP,GACA,WAAAH,EAAAC,EAAArnP,EAAA4mP,EAAAK,SAAA,OAAAM,EACA,EAEAH,EAAAr7P,UAAA07P,WAAA,SAAAviO,EAAAgR,EAAApB,EAAA4yN,GACA,GAAAA,EAAA,CACA,IAAA1nP,EAAAlQ,EAAA1G,aAAA,qBAAA87B,GACAJ,EAAA,GACA3/B,EAAAwW,KAAAu6B,GAAAxxC,SACAogC,EAAAoR,QAAAt2B,KAAAE,UAAAo2B,IACA/wC,EAAAwW,KAAAm5B,GAAApwC,SACAogC,aAAAllB,KAAAE,UAAAg1B,IACA,IAAA4C,EAAA1rC,KAAAgU,IAAA21B,QAAA31B,EAAA8kB,GACA94B,KAAAgU,IAAA2nP,QAAAjwN,EAAAgwN,EACA,MACA17P,KAAAs7P,QAAAz6P,KAAAb,KAAAw7P,iBACAx7P,KAAAw7P,gBAAAtiO,EAEAl5B,KAAAu7P,WAAAriO,EAAAgR,EAAApB,EAEA,EAEAsyN,EAAAr7P,UAAA67P,aAAA,SAAA1xN,EAAApB,GACA,IAAA+yN,EAAA77P,KAAAs7P,QAAA/mP,MACAsnP,IAEA77P,KAAAw7P,gBAAAK,EACA77P,KAAAu7P,WAAAM,EAAA3xN,EAAApB,GACA,EAEAsyN,CACA,IACA3jQ,OCjDA,uBACA,eACA,SAAA0B,GAEA,IAAA45B,EAAA,GAEA,OAEA+oO,cAAA,WACAjiQ,OAAAkiQ,WACAr6C,YAAA,CAAAh8M,KAAA,sBACA,EAEA4tC,UAAA,WACA,QAAAz5C,OAAAkiQ,SACA,EAEAC,aAAA,SAAAC,GACApiQ,OAAAkiQ,WACAliQ,OAAAkiQ,UAAAG,QAAAF,aAAAC,EACA,EAEAE,iBAAA,SAAAz3N,EAAAthB,GACAvpB,OAAAkiQ,WACAliQ,OAAAkiQ,UAAAG,QAAAC,iBAAAz3N,EAAAthB,EACA,EAEAg5O,mBAAA,SAAA13N,GACA7qC,OAAAkiQ,WACAliQ,OAAAkiQ,UAAAG,QAAAE,mBAAA13N,EACA,EAEA23N,YAAA,SAAAj5O,GACA2P,EAAAlyB,KAAAuiB,EACA,EAEAk5O,cAAA,WACAvpO,EAAAlxB,SAAA,SAAAuhB,GACAA,GACA,IAEA2P,EAAA,EACA,EAEAwpO,eAAA,SAAAC,GACAzpO,IAAA5Y,QAAA,SAAAiJ,GACA,OAAAA,IAAAo5O,CACA,GACA,EAIA,IACA/kQ,OCrDA,mBACA,KACA,SACA,eACA,SAAAqM,EAAA1K,EAAAD,GAEA,IAAAsjQ,EAAA,SAAAzoP,GACAhU,KAAAgU,MACAhU,KAAA08P,UAAA,EACA18P,KAAA6qC,UAAA,EACA,EA2DA,OAzDA4xN,EAAA18P,UAAAU,YAAA,SAAA2iB,GACApjB,KAAA6qC,UAAAhqC,KAAAuiB,EACA,EAEAq5O,EAAA18P,UAAAoB,eAAA,SAAAiiB,GACA,IAAA5hB,EAAAxB,KAAA6qC,UAAA/xC,QAAAsqB,GACA5hB,GAAA,GACAxB,KAAA6qC,UAAAppC,OAAAD,EAAA,EACA,EAEAi7P,EAAA18P,UAAAohB,KAAA,SAAA+X,EAAAgR,EAAApB,EAAAjrB,EAAA8+O,GACA38P,KAAA08P,WAAA,EAEAtjQ,EAAAqtB,KAAA,CACA/gB,KAAA,OACAsO,IAAAhU,KAAAgU,IAAA21B,QAAA7lC,EAAA1G,aAAA,2BACAyjB,OAAA,EACAvlB,KAAAsY,KAAAE,UAAA,CACAlZ,GAAAs+B,EACAyjO,oBAEAhyO,SAAA,OACAjI,YAAA,oCAEApf,KAAAtD,KAAA48P,aAAAr6P,KAAAvC,KAAAk5B,EAAAgR,EAAApB,EAAAjrB,EAAA7d,KAAA08P,WACA,EAEAD,EAAA18P,UAAA68P,aAAA,SAAA1jO,EAAAgR,EAAApB,EAAAjrB,EAAA6+O,EAAAphQ,GACA,GAAAohQ,IAAA18P,KAAA08P,UAEA,GAAAphQ,EAAAuhQ,cAAA,CAGA,IAAAC,EAAA,qBAAA5jO,EAEAJ,EAAA,GACA3/B,EAAAwW,KAAAu6B,GAAAxxC,SACAogC,EAAAoR,QAAAt2B,KAAAE,UAAAo2B,IACA/wC,EAAAwW,KAAAm5B,GAAApwC,SACAogC,aAAAllB,KAAAE,UAAAg1B,IAEA,IAAAi0N,EAAA/8P,KAAAgU,IAAA21B,QAAA7lC,EAAA1G,aAAA0/P,GAAAhkO,GACA94B,KAAAgU,IAAA2nP,QAAAoB,EACA,MACA5jQ,EAAA0I,QAAA7B,KAAA6qC,WAAA,SAAAlqC,GACAA,EACArF,EACA,CACA4uC,UACApB,SACAk0N,OAAA1hQ,EAAA2hQ,kBAEAp/O,EACA,GAEA,EAEA4+O,CAEA,IACAhlQ,OCxEA,8BACA,aAEA,IAAA2wF,OAAAhiF,EAuBA,OAEAsgC,YAvBA,SAAAt8B,EAAAkP,GACAlP,EACAxB,aAAA,SAAApH,EAAAs+B,GACA,WAAAA,EAAAyrK,YAAA,kBACA,IAEAjyL,IAEAlP,EACAzE,SAAA,4BAAA2T,EAAA1e,IAEAwtF,IACAA,EAAAlwF,SAAAoqB,cAAA,SACApqB,SAAAi4B,KAAAC,YAAAg4D,IAGAA,EAAAj2C,UAAA,6BAAA74B,EAAA1e,GAAA,0CAAA0e,EAAA1e,GAAA,wCAGA,EAQA,IACAnD,OCjCA,kBACA,WACA,SAAA2B,GACA,aAEA,IAAA8jQ,EAyBA,OACAC,UAxBA,SAAA53P,GACA23P,EAKAA,EAAAt0P,YAAA,qBAJAs0P,EAAA9jQ,EAAA,WACAuM,SAAA,eACAkB,SAAAzN,EAAA,SAKAurB,YAAA,WACA,IAAA6vC,EAAAjvD,EAAA,GAAAuG,wBAEAoxP,EACAv3P,SAAA,qBACAC,IAAA,CACAc,IAAA8tD,EAAA9tD,IAAA,KACAD,KAAA+tD,EAAA/tD,KAAA,KACA0H,OAAAqmD,EAAArmD,OAAA,KACAnB,MAAAwnD,EAAAxnD,MAAA,MAEA,GACA,EAKA,IACAvV,OClCA,oCACA,SACA,KACA,OACA,sBACA,kBACA,sBACA,kBACA,eACA,gBACA,mBACA,SAAA2B,EAAA0K,EAAAtB,EAAAiiC,EAAA22N,EAAAgC,EAAAX,EAAAY,EAAAniO,EAAAoiO,GACA,aAEA,IAAAC,EAAA,SAAA/D,GACAx5P,KAAAw5P,cACAx5P,KAAAw9P,eAAAx9P,KAAAy9P,WAAAl7P,KAAAvC,MACAA,KAAA09P,gBAAA19P,KAAAq4B,aAAA91B,KAAAvC,KACA,EAiPA,OA/OAu9P,EAAAx9P,UAAA65P,MAAA,WAqBA,GApBA55P,KAAAqjD,SAAAjqD,EAAA,0CACAyN,SAAA7G,KAAAw5P,YAAAj0P,UACAK,IAAA,CACAoH,MAAA,OACAmB,OAAA,OACA6tB,OAAA,EACAnvB,QAAA,OACAmqC,SAAA,SAAAh3C,KAAAw5P,YAAAl+P,KAAA+vF,UACA,OACA,WAEArrF,KAAA29P,MAAAvkQ,EAAA,uCACAyN,SAAA7G,KAAAqjD,UACArjD,KAAA49P,QAAAxkQ,EAAA,WACAwM,IAAA,CACAoH,MAAA,OACAmB,OAAA,SAEAtH,SAAA7G,KAAAw5P,YAAA72P,OAAAy1C,OAEAglN,EAAA9pN,YAAA,CACA,IAAAvyC,EAAAf,KACAA,KAAA69P,gBAAA,WACA98P,EAAAyvC,QACAzvC,EAAA+8P,gBAAA/8P,EAAAyvC,OACA,EACA4sN,EAAAf,YAAAr8P,KAAA69P,gBACA,CACA,EAEAN,EAAAx9P,UAAA+I,KAAA,SAAAowB,GACA,GAAAA,EAAA,CAEA,IAAAgR,EAAAlqC,KAAAw5P,YAAA72P,OAAAm2B,WAAAoR,QAAAC,SACArB,EAAA9oC,KAAAw5P,YAAApyB,yBAEApnO,KAAA5F,UAAAghQ,EAAAH,SAAA/hO,EAAAl5B,KAAAw5P,YAAA72P,OAAAqR,IAAAhU,KAAA+9P,cAAAx7P,KAAAvC,OACAA,KAAAg+P,aAAA,IAAAvB,EAAAz8P,KAAAw5P,YAAA72P,OAAAqR,KACAhU,KAAAg+P,aAAAv9P,YAAAT,KAAAw9P,gBAEAx9P,KAAA+9P,cAAA7kO,EAAAgR,EAAApB,EATA,CAUA,EAEAy0N,EAAAx9P,UAAA09P,WAAA,SAAAjuE,EAAA12J,GAIA,GAHA94B,KAAAqjD,SAAAz9C,IAAA,qBACA5F,KAAA49P,QAAAh4P,IAAA,qBAEA4pL,EAAA35H,KAAA9sB,eAAA,CACA,IAAAvnC,EAAAxB,KAAA28P,gBAAA7jQ,QAAA02L,EAAA35H,KAAA9sB,gBACA/oC,KAAA28P,gBAAA38P,KAAA28P,gBAAAj+P,MAAA,EAAA8C,EAAA,GACAxB,KAAA28P,gBAAA38P,KAAA28P,gBACAj1N,OAAAvuC,EAAA+N,IAAAsoL,EAAA35H,KAAAooM,SAAA,SAAAztN,GACA,OAAAA,SAAA51C,EACA,KAEAoF,KAAAwwC,OAAA5H,WAAA4mJ,EAAA35H,KAAAooM,QAAAnlO,EAAAgQ,OAAA0mJ,EAAA35H,KAAA9sB,eACA,MACA/oC,KAAA28P,gBAAAxjQ,EAAA+N,IAAAsoL,EAAA35H,KAAAooM,SAAA,SAAAztN,GACA,OAAAA,SAAA51C,EACA,IAEA,IAAAuuC,EAAAqmJ,EAAA35H,KAAAooM,QAAA,GAAAztN,OACAysN,EAAAztE,EAAA35H,KAAAooM,QAAA,GAAAhB,iBACA7yN,EAAAolJ,EAAA35H,KAAAooM,QAAAvlQ,OAAA,KAAAogC,EAAAgQ,OAEA0H,EAAA,IAAA/L,EAAA0E,EAAA0sB,KAAA71D,KAAAw5P,YAAA72P,OAAAzH,YAAAioB,SACAqtB,EAAAtH,SAAAC,GACAqH,EAAA7tC,OAAA3C,KAAAw5P,YAAA72P,OAAAu7P,kBAAA/0N,EAAAqH,EAAApG,EAAA6yN,EAAAj9P,KAAAqjD,SAAArjD,KAAA29P,OAAA,GACAntN,EAAA7tC,OAAAs7B,QAAAj+B,KACAwwC,EAAA7tC,OAAAvI,UAAA4F,KAAA5F,UACAo2C,EAAA7tC,OAAAi7P,QAAA59P,KAAA49P,QACAptN,EAAAtG,QAAA/wC,EAAAssD,MAAA3sB,EAAAoR,SACAsG,EAAA1H,OAAA3vC,EAAAssD,MAAA3sB,EAAAgQ,QAEA9oC,KAAAw5P,YAAAl+P,KAAA6iQ,6BACA3tN,EAAA7tC,OAAAe,SAAA06P,qBAAAp+P,KAAA09P,iBAEAltN,EAAA7tC,OAAAe,SAAA26P,oBAAAr+P,KAAA09P,iBAGA,IAAA72N,EAAA3L,EAAA3hB,iBAAAi3B,GAUA,GATA6sN,EAAA32N,YAAA1mC,KAAA29P,MAAA92N,GACA2J,EAAA9J,YAAAG,GAEA2J,EAAA1pC,qBAAA1N,KAEAgkQ,EAAA9pN,aACAtzC,KAAA89P,gBAAAttN,GAGA,aAAAxwC,KAAAw5P,YAAAj0P,SAAAK,IAAA,aAAA5F,KAAAw5P,YAAAl+P,KAAA2+P,sBAAA,CAIA,GAHAj6P,KAAAw5P,YAAAj0P,SAAA4I,OAAA,QAGAnO,KAAAw5P,YAAAl+P,KAAA2+P,sBAAA,CACA,IAAAzpN,EAAA5jC,UAAA,CACA,IAAAuB,GAAAqiC,EAAAl1C,KAAAoL,KAAA,GAAA8pC,EAAAl1C,KAAAgJ,KAAAD,GAAAmsC,EAAAl1C,KAAAsL,QAAA,GACA5G,KAAAw5P,YAAAj0P,SAAA4I,SACA,CAEA,IAAAnB,GAAAwjC,EAAAl1C,KAAAmL,MAAA,GAAA+pC,EAAAl1C,KAAAgJ,KAAAF,GAAAosC,EAAAl1C,KAAAqL,OAAA,GACA3G,KAAAw5P,YAAAj0P,SAAAyH,QACA,CAIA5T,EAAA8tC,UAAAlnC,KAAAw5P,YAAAl+P,KAAAmL,OACArN,EAAA8tC,UAAAlnC,KAAAw5P,YAAAl+P,KAAAqL,QACAvN,EAAA8tC,UAAAiC,EAAA0sB,KAAAv6D,KAAAmL,OACArN,EAAA8tC,UAAAiC,EAAA0sB,KAAAv6D,KAAAqL,OACA3G,KAAAw5P,YAAAj0P,SAAAK,IAAA,iBACA5F,KAAAw5P,YAAAl+P,KAAA2+P,uBACAj6P,KAAAw5P,YAAAj0P,SAAAyH,MAAA,OACA,CAEAhN,KAAAs+P,uBAEAt+P,KAAAwwC,SAEAA,EAAA5H,WAAA4mJ,EAAA35H,KAAAooM,QAAAv/P,MAAA,GAAAo6B,EAAAgQ,QAEA9oC,KAAAqjD,SAAAv1C,UAAA,EACA,CAEA9N,KAAAwwC,OAAA7tC,OAAA+tN,cAAAC,WACA,EAEA4sC,EAAAx9P,UAAA+9P,gBAAA,SAAAttN,GACA4sN,EAAAjB,iBAAA3rN,EAAA9L,WAAA1kC,KAAAu+P,eAAAh8P,KAAAvC,OAEAo9P,EAAApB,aAAA,CACAt2P,KAAA,yBACA8qC,SACAguN,iBAAAx+P,KAAAw5P,YAAAryP,SAAAu9B,WACA+5N,WAAA,GAEA,EAEAlB,EAAAx9P,UAAAw+P,eAAA,SAAA5/O,GACA,OAAAA,EAAAjZ,MAEA,6BACA1F,KAAA+9P,cAAA/9P,KAAAwwC,OAAAl1C,KAAAV,GAAAoF,KAAAwwC,OAAAtG,QAAAlqC,KAAAwwC,OAAA1H,QACA,MAEA,gCACAw0N,EAAAH,UAAAn9P,KAAAqjD,UAIA,EAEAk6M,EAAAx9P,UAAAg+P,cAAA,SAAA7kO,EAAAgR,EAAApB,GACA9oC,KAAAg+P,aAAA78O,KAAA+X,EAAAgR,EAAApB,EAAA,KAAA9oC,KAAA28P,gBACA,EAEAY,EAAAx9P,UAAAyJ,KAAA,WACA,GAAAxJ,KAAAqjD,SAAA,CAEArjD,KAAAqjD,SAAAz9C,IAAA,kBACA5F,KAAA49P,QAAAh4P,IAAA,kBAEA,IAAA7E,EAAAf,MACA,SAAA0+P,IACA39P,EAAAyvC,QAAA,IAAAzvC,EAAAyvC,OAAA7tC,OAAA+tN,cAAA2D,UACA1vM,WAAA+5O,EAAA,KAEA39P,EAAAu9P,sBAEA,CAEAI,EAdA,CAeA,EAEAnB,EAAAx9P,UAAA0hN,qBAAA,SAAAD,GACAxhN,KAAAwwC,QAEAxwC,KAAAwwC,OAAA5tC,aAAA4+M,EAAAv3M,UAAAu3M,EAAA38J,KAAA,GACA,EAEA04M,EAAAx9P,UAAAyI,QAAA,SAAAD,GACAvI,KAAAwwC,QACAxwC,KAAAwwC,OAAAhoC,QAAAD,EACA,EAEAg1P,EAAAx9P,UAAAs4B,aAAA,SAAA/f,GACA,GAAAtY,KAAAw5P,YAAAl+P,KAAA4lN,gBAAA,IAAAlhN,KAAAw5P,YAAAl+P,KAAA4lN,cAAApoN,QAAAwf,EAAArO,WAAA,CAGA,IAAAuZ,EAAAhhB,EAAAu1B,QAEA8sB,EAAAvsC,EAAAusC,KAAAvsC,EAAAusC,KAAA,QAUA,OATA7kD,KAAAw5P,YAAA72P,OAAAe,SAAAqI,QACA/L,KAAAw5P,YAAAl+P,KAAAV,GAAA,IAAA0d,EAAArO,eACA7D,EACAy+C,GACA,WACArhC,EAAAc,SACA,GACAhM,EAAAqmP,mBAEAn7O,EAAAa,OAdA,CAeA,EAEAk5O,EAAAx9P,UAAAu+P,qBAAA,WACAt+P,KAAAwwC,SAEA4sN,EAAA9pN,aACA8pN,EAAApB,aAAA,CACAt2P,KAAA,4BACA8qC,OAAAxwC,KAAAwwC,SAIAxwC,KAAAwwC,OAAA7tC,OAAAe,SAAAk7P,kBAAA5+P,KAAA09P,iBACA19P,KAAAwwC,OAAA7tC,OAAA2xI,UACAt0I,KAAAwwC,OAAArhC,oCAEAiuP,EAAA9pN,aACA8pN,EAAAhB,mBAAAp8P,KAAAwwC,OAAA9L,YAGA1kC,KAAAwwC,OAAA,KACA,EAEA+sN,EAAAx9P,UAAAi7B,QAAA,WACAh7B,KAAAs+P,uBAEAt+P,KAAAg+P,eACAh+P,KAAAg+P,aAAA78P,eAAAnB,KAAAw9P,gBACAx9P,KAAAg+P,aAAA,MAGAh+P,KAAA69P,iBACAT,EAAAb,eAAAv8P,KAAA69P,gBAEA,EAEAN,CACA,IAEA9lQ,OCtQA,iCACA,SACA,UACA,eACA,eACA,mBACA,mBACA,aACA,SAAA2B,EAAAkM,EAAAu5P,EAAAhqN,EAAA0kN,EAAAgE,EAAA9+N,GACA,aAEA,IAGA1C,EAAA,CACAzgC,KAAA,CACAgJ,KAAA,CAAAF,EAAA,IAAAC,EAAA,IACA60B,SAAA,GACAmyD,UAAA,OACAvyD,WAAA,GACAooL,cAAA,GACAzD,gBAAA,IACA10M,UAAA,OACAo+B,SAAA,KACAp6B,UAAA,KACAktP,uBAAA,EACA6E,aAAA,iBAIAC,EAAA,SAAA57O,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,gCAAA2iC,EAAA5Y,GAEAnjB,KAAA1E,KAAA2J,UAGAjF,KAAAyK,sBAAArR,EAAAS,QAAA,SAAAglQ,EAAAxF,uBAAA92P,KAAAvC,OAGAy+B,EAAAK,aAAA9+B,KACA,EAyUA,OAvUAsF,EAAA3F,OAAAo/P,EAAAz5P,GAEAy5P,EAAAnlO,SAAA,cAEAmlO,EAAAh/P,UAAAgH,UAAA,WACA/G,KAAAg/P,eAAAh/P,KAAA2C,OAAAzH,YAAA+jQ,WACA,IAAA1B,EAAAv9P,MACA,IAAAu5P,EAAAv5P,MACAA,KAAAg/P,eAAApF,QAEA55P,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAAi6P,sBAAAj6P,KAAAk/P,yBAAAl/P,KAAAm/P,yBACAn/P,KAAA2M,gBACA3M,KAAAo/P,qBACAp/P,KAAAq/P,cACAr/P,KAAAs/P,gBACA,EAEAP,EAAAh/P,UAAAm6P,+BAAA,SAAAqF,EAAAjnP,GACA,OAAAinP,EAAA74P,UACAN,IAAAm5P,EAAA74P,KACA,OAAA64P,EAAA34P,aACAR,IAAAm5P,EAAA34P,QACA5G,KAAAuF,SAAA4I,OAAAmK,EAAAknP,OAEA,OAAAD,EAAA94P,WACAL,IAAAm5P,EAAA94P,MACA,OAAA84P,EAAA54P,YACAP,IAAAm5P,EAAA54P,OACA3G,KAAAuF,SAAAyH,MAAAsL,EAAAmnP,MAEA,EAEAV,EAAAh/P,UAAAu/P,eAAA,WACA,WAAAt/P,KAAA1E,KAAAyN,WACA/I,KAAAuF,SAAAI,SAAA,wBAEA,EAEAo5P,EAAAh/P,UAAAo/P,uBAAA,WACAn/P,KAAA1E,KAAAyR,WACA/M,KAAAuF,SAAAK,IAAA,YAAA5F,KAAA1E,KAAAyR,UAAA,MAGA/M,KAAA1E,KAAA6rC,UACAnnC,KAAAuF,SAAAK,IAAA,WAAA5F,KAAA1E,KAAA6rC,SAAA,KAEA,EAEA43N,EAAAh/P,UAAAm/P,uBAAA,WACAl/P,KAAAuF,SAAAK,IAAA,CACAmH,UAAA,GACAo6B,SAAA,IAEA,EAEA43N,EAAAh/P,UAAAs/P,YAAA,WACAr/P,KAAAuF,SAAAK,IAAA,SAvFA,KAuFA5F,KAAA1E,KAAAiJ,OACA,EAEAw6P,EAAAh/P,UAAA0H,WAAA,WACAnC,EAAAvF,UAAA0H,WAAAxG,MAAAjB,KAAAkB,WACAlB,KAAA0/P,iBAAA1/P,KAAA1E,MAEA0E,KAAAyI,aACAzI,KAAA8I,OAGA9I,KAAAgO,aACAhO,KAAA2/P,eACA3/P,KAAAs2C,iBACA1wC,IAAA,CACAoxC,SAAA,SAEAnL,OAAA7rC,KAAAuF,UACAvF,KAAA1E,KAAA2J,UACAjF,KAAAuF,SACAsB,SAAA7G,KAAA2C,OAAAi7P,SAGA,EAEAmB,EAAAh/P,UAAAq/P,mBAAA,WACAp/P,KAAA1E,KAAA2J,WAGA,MAAAjF,KAAA1E,KAAAoL,KAAA,MAAA1G,KAAA1E,KAAAsL,QACA5G,KAAAuF,SACAK,IAAA,CACAa,KAAA,KACAE,MAAA,KACAsG,OAAA,SAKA,MAAAjN,KAAA1E,KAAAoL,KACA1G,KAAAuF,SAAAK,IAAA,MAAA5F,KAAA1E,KAAAoL,KAAA1G,KAAAuP,cAAAjU,KAAAoL,KAAA,IACA,MAAA1G,KAAA1E,KAAAsL,QACA5G,KAAAuF,SAAAK,IAAA,SAAA5F,KAAA1E,KAAAsL,QAAA5G,KAAAuP,cAAAjU,KAAAsL,QAAA,KAEA5G,KAAAuF,SACAK,IAAA,CACAc,IAAA1G,KAAA4/P,4BAAA,KACAh5P,OAAA,KACAH,KAAA,KACAE,MAAA,KACAsG,OAAA,SAGA,EAEA8xP,EAAAh/P,UAAA8/P,4BAAA,WACA,IAAA3P,EAAA92P,EAAAS,QAAAmT,QACA,OAAAkjP,EAAAlwP,KAAA1E,KAAAgJ,KAAAF,GAAA,MAAA8rP,EAAAlwP,KAAA1E,KAAAgJ,KAAAF,GAAA,GACA,EAEA26P,EAAAh/P,UAAA6/P,0BAAA,WACA,IAAAE,EAAA1mQ,EAAAS,QAAAsU,SACA,OAAA2xP,EAAA9/P,KAAA1E,KAAAgJ,KAAAD,GAAA,MAAAy7P,EAAA9/P,KAAA1E,KAAAgJ,KAAAD,GAAA,GACA,EAEA06P,EAAAh/P,UAAA+I,KAAA,WACA,IAAAowB,EAAAl5B,KAAA+/P,cACA//P,KAAAg/P,eAAAl2P,KAAAowB,GAEAl5B,KAAAuF,SAAAI,SAAA,QAEAL,EAAAvF,UAAA+I,KAAAkc,KAAAhlB,MAEAA,KAAAs2C,mBACAt2C,KAAAggQ,8BACAhgQ,KAAAs2C,iBAAAxtC,QAEA9I,KAAAs5P,cACAuF,EAAAxF,uBAAAr0O,KAAAhlB,MACAA,KAAAs5P,YAAAxwP,OACA9I,KAAAs5P,YAAA1wP,YAAA,WAEAi2P,EAAA1F,UAAAn0O,KAAAhlB,MAEAA,KAAAigQ,2BAEA,EAEAlB,EAAAh/P,UAAAyJ,KAAA,WACAxJ,KAAAuF,SAAAqD,YAAA,QAEA5I,KAAAg/P,eAAAx1P,OAEAxJ,KAAAkgQ,+BAEA56P,EAAAvF,UAAAyJ,KAAAwb,KAAAhlB,MAEA,IAAAe,EAAAf,KACA2kB,YAAA,WACA5jB,EAAAu4P,cACAv4P,EAAAu4P,YAAA3zP,SAAA,UACA5E,EAAAu4P,YAAA9vP,OAEA,IACAxJ,KAAAs2C,kBACAt2C,KAAAs2C,iBAAA9sC,OAEAxJ,KAAA1E,KAAA89P,SACAyF,EAAA7F,aAAAh0O,KAAAhlB,KAAA,EAEA,EAEA++P,EAAAh/P,UAAAkgQ,0BAAA,WACAjgQ,KAAAkgQ,+BACA,IAAAn/P,EAAAf,KAAAmgQ,EAAApoQ,KAAAinG,MACAh/F,KAAAogQ,uBAAA,SAAA1/P,GACA3I,KAAAinG,MAAAmhK,EAAA,IAAAp/P,EAAAwE,SAAA,KAAA7E,EAAA2jC,QAAAjrC,EAAA2I,SAAAhB,EAAAwE,SAAA,GAAA7E,EAAA2jC,SAIAjrC,EAAAsH,EAAA2jC,QAAAC,GAAA,cAGAvjC,EAAAm/P,+BAEAn/P,EAAAzF,KAAA+kQ,4BACAt/P,EAAAyI,OACAzI,EAAA6J,sBAAA,qBACA,EAEA5K,KAAA2C,OAAAy1C,KAAA18C,GAAA,mBAAAsE,KAAAogQ,uBACA,EAEArB,EAAAh/P,UAAAmgQ,6BAAA,WACAlgQ,KAAAogQ,yBACApgQ,KAAA2C,OAAAy1C,KAAA5tC,IAAA,mBAAAxK,KAAAogQ,wBACApgQ,KAAAogQ,uBAAA,KAEA,EAEArB,EAAAh/P,UAAA2/P,iBAAA,YACA1/P,KAAA1E,KAAAg8M,aAAAt3M,KAAA1E,KAAA2J,YACAjF,KAAAs2C,iBAAAt2C,KAAAs2C,kBAAAl9C,EAAA,WAAAoQ,OACAxJ,KAAAs5P,YAAAt5P,KAAAs5P,aAAAlgQ,EAAA,WAAAyN,SAAA7G,KAAAs2C,kBAEAt2C,KAAAsgQ,wBAEAtgQ,KAAA1E,KAAA2J,SACAjF,KAAAs2C,iBAAAzvC,SAAA7G,KAAA2C,OAAAi7P,SACA59P,KAAA1E,KAAAsM,UACA5H,KAAAs2C,iBAAAzvC,SAAA7G,KAAA2C,OAAAmF,gBAEA9H,KAAAs2C,iBAAAzvC,SAAA7G,KAAAmH,SAAA5B,UAGA,EAEAw5P,EAAAh/P,UAAAugQ,sBAAA,YACAtgQ,KAAA1E,KAAAg8M,aAAAt3M,KAAA1E,KAAA2J,YACAjF,KAAAs2C,iBACA1wC,IAAA,CACAzB,SAAA,WACAuC,IAAA,EACAE,OAAA,EACAH,KAAA,EACAE,MAAA,EACApC,OAAA,EACA0yE,UAAA,WAGAj3E,KAAAs5P,YACA1zP,IAAA,CACAzB,SAAA,WACAuC,IAAA,EACAE,OAAA,EACAH,KAAA,EACAE,MAAA,EACApC,OAAA,EACAgqE,gBAAAvuE,KAAA1E,KAAAg8M,YAAAt3M,KAAA1E,KAAAkiN,cAAA,mBACApgL,QAAAp9B,KAAA1E,KAAAmiN,gBAAA,MAGAz9M,KAAAyI,aACAzI,KAAAggQ,8BAGA,SAAAhgQ,KAAA1E,KAAAyN,WACA/I,KAAAs5P,YAAA3zP,SAAA,oCAGA,EAEAo5P,EAAAh/P,UAAAigQ,4BAAA,WACAhgQ,KAAA2C,OAAAzH,YAAA+jQ,YACAj/P,KAAAs2C,iBAAA1wC,IAAA,SAAAivC,EAAAD,iBAEA50C,KAAAgO,YAAAhO,KAAA2/P,gBACA3/P,KAAAuF,SAAAK,IAAA,SAAAivC,EAAAD,mBAGA50C,KAAAs2C,iBAAA1wC,IAAA,SAhSA,IAgSA5F,KAAA1E,KAAAiJ,QAEAvE,KAAAs5P,aACAt5P,KAAAs5P,YAAA1zP,IAAA,SAnSA,IAmSA5F,KAAA1E,KAAAiJ,OAAA,GAGA,EAEAw6P,EAAAh/P,UAAAggQ,YAAA,WACA,wBAAA//P,KAAA1E,KAAAwjQ,aACA9+P,KAAA2C,OAAAm2B,WAAAvsB,SAAAvM,KAAA1E,KAAAilQ,mBAEA,iBAAAvgQ,KAAA1E,KAAAwjQ,aACA9+P,KAAA1E,KAAA49B,SAEA,gBAAAl5B,KAAA1E,KAAAwjQ,aACA9+P,KAAAwgQ,oBADA,CAIA,EAEAzB,EAAAh/P,UAAAqnO,uBAAA,WACA,IAAApnO,KAAA1E,KAAAw9B,WACA,SAEA,IAAA/3B,EAAAf,KACAmnO,EAAA,GAKA,OAJAhuO,EAAAiJ,KAAApC,KAAA1E,KAAAw9B,YAAA,SAAAuuM,GACAF,EAAAE,GAAAtmO,EAAA4B,OAAAm2B,WAAAvsB,SAAA86N,EACA,IAEAF,CACA,EAEA43B,EAAAh/P,UAAA0hN,qBAAA,SAAAD,GACAxhN,KAAAg/P,eAAAv9C,qBAAAD,EACA,EAEAu9C,EAAAh/P,UAAA4/P,aAAA,WACA,OAAA3/P,KAAA1E,KAAA2J,UAAAjF,KAAAs2C,gBACA,EAEAyoN,EAAAh/P,UAAAyI,QAAA,SAAAD,GACAvI,KAAAg/P,eAAAx2P,QAAAD,EACA,EAEAw2P,EAAAh/P,UAAAmP,yBAAA,WACAlP,KAAAkgQ,+BACArB,EAAA7F,aAAAh0O,KAAAhlB,KAAA,GAEAA,KAAAg/P,gBACAh/P,KAAAg/P,eAAAhkO,UAEAh7B,KAAAs2C,kBACAt2C,KAAAs2C,iBAAAv9C,QACA,EAEAgmQ,EAAAh/P,UAAA6mC,SAAA,SAAA8M,GACAA,EAAAlnC,OAAA,gBAAAxM,KAAA1E,KAAAwjQ,eACA9+P,KAAAwgQ,eAAA9sN,EAAAlnC,MACAxM,KAAAyI,aAAAzI,KAAA8I,OAEA,EAEAi2P,EAAAh/P,UAAAiL,mBAAA,WAEA,EAEA+zP,EAAAh/P,UAAAo3C,WAAA/9C,EAAA+O,KAEA42P,CACA,IAEAtnQ,OCpXA,+BACA,SACA,UACA,eACA,eACA,aACA,SAAA2B,EAAAkM,EAAAu5P,EAAAhqN,EAAApW,GACA,aAEA,IAGA1C,EAAA,CACAzgC,KAAA,CACAgJ,KAAA,CAAAF,EAAA,IAAAC,EAAA,IACAo5M,gBAAA,IACA27C,SAAA,EACAp8N,KAAA,EACAquD,UAAA,OACAtuD,UAAA,CACAp5B,SAAA,EACAu4B,MAAA,qBACA93B,EAAA,EACAC,EAAA,EACA24B,KAAA,EACAC,OAAA,GAEAI,eAAA,CACA15B,SAAA,EACA25B,cAAA,EACAC,eAAA,EACAC,kBAAA,EACAC,iBAAA,GAEA14B,mBAAA,EACAC,wBAAA,eAIAy7P,EAAA,SAAAt9O,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,WAAA2iC,EAAA5Y,GAEAnjB,KAAA1E,KAAA2J,UAGAjF,KAAAyK,sBAAArR,EAAAS,QAAA,SAAAglQ,EAAAxF,uBAAA92P,KAAAvC,OAGAy+B,EAAAK,aAAA9+B,KACA,EAwOA,OAtOAsF,EAAA3F,OAAA8gQ,EAAAn7P,GAEAm7P,EAAA7mO,SAAA,aAEA6mO,EAAA1gQ,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,gBACA3M,KAAAo/P,qBACAp/P,KAAAq/P,aACA,EAEAoB,EAAA1gQ,UAAAs/P,YAAA,WACAr/P,KAAAuF,SAAAK,IAAA,SArDA,KAqDA5F,KAAA1E,KAAAiJ,OACA,EAEAk8P,EAAA1gQ,UAAA0H,WAAA,WACAnC,EAAAvF,UAAA0H,WAAAxG,MAAAjB,KAAAkB,WACAlB,KAAA0/P,iBAAA1/P,KAAA1E,KACA,EAEAmlQ,EAAA1gQ,UAAAq/P,mBAAA,WACAp/P,KAAA1E,KAAA2J,WAGA,OAAAjF,KAAA1E,KAAAoL,UAAAN,IAAApG,KAAA1E,KAAAoL,KAAA,OAAA1G,KAAA1E,KAAAsL,aAAAR,IAAApG,KAAA1E,KAAAsL,QACA5G,KAAAuF,SACAK,IAAA,CACAa,KAAA,KACAE,MAAA,KACAsG,OAAA,SAGAjN,KAAAqF,qBAIA,OAAArF,KAAA1E,KAAAoL,KACA1G,KAAAuF,SAAAK,IAAA,MAAA5F,KAAA1E,KAAAoL,KAAA1G,KAAAuP,cAAAjU,KAAAoL,KAAA,IAEA,OAAA1G,KAAA1E,KAAAsL,QACA5G,KAAAuF,SAAAK,IAAA,SAAA5F,KAAA1E,KAAAsL,QAAA5G,KAAAuP,cAAAjU,KAAAsL,QAAA,MAGA5G,KAAAuF,SACAK,IAAA,CACAc,IAAA1G,KAAA4/P,4BAAA,KACAh5P,OAAA,KACAH,KAAA,KACAE,MAAA,KACAsG,OAAA,SAGA,EAEAwzP,EAAA1gQ,UAAA8/P,4BAAA,WACA,IAAA3P,EAAA92P,EAAAS,QAAAmT,QACA,OAAAkjP,EAAAlwP,KAAA1E,KAAAgJ,KAAAF,GAAA,MAAA8rP,EAAAlwP,KAAA1E,KAAAgJ,KAAAF,GAAA,GACA,EAEAq8P,EAAA1gQ,UAAA6/P,0BAAA,WACA,IAAAE,EAAA1mQ,EAAAS,QAAAsU,SACA,OAAA2xP,EAAA9/P,KAAA1E,KAAAgJ,KAAAD,GAAA,MAAAy7P,EAAA9/P,KAAA1E,KAAAgJ,KAAAD,GAAA,GACA,EAEAo8P,EAAA1gQ,UAAAwG,eAAA,SAAAC,GACAxG,KAAAuF,SACAK,IAAA,CACAa,KAAA,OAAAD,EAAAC,KAAA,OAAAD,EAAAC,KAAA,KACAC,IAAA,OAAAF,EAAAE,IAAA,OAAAF,EAAAE,IAAA,KACAC,MAAA,OAAAH,EAAAG,MAAA,OAAAH,EAAAG,MAAA,KACAC,OAAA,OAAAJ,EAAAI,OAAA,OAAAJ,EAAAI,OAAA,OAGA5G,KAAAs2C,kBACAt2C,KAAAuF,SAAAsB,SAAAzN,EAAA,QAEA,EAEAqnQ,EAAA1gQ,UAAA+I,KAAA,WACAxD,EAAAvF,UAAA+I,KAAAkc,KAAAhlB,MAEAA,KAAAs2C,mBACAt2C,KAAAs2C,iBAAA1wC,IAAA,CACAuI,OAAA,OACA6oC,SAAAh3C,KAAA2/P,eAAA,YAEA3/P,KAAAggQ,8BACAhgQ,KAAAs2C,iBAAAxtC,QAEA9I,KAAAs5P,cACAuF,EAAAxF,uBAAAr0O,KAAAhlB,MACAA,KAAAs5P,YAAAxwP,QAEA+1P,EAAA1F,UAAAn0O,KAAAhlB,MAEAA,KAAAigQ,2BACA,EAEAQ,EAAA1gQ,UAAAyJ,KAAA,WACAxJ,KAAAkgQ,+BAEA56P,EAAAvF,UAAAyJ,KAAAwb,KAAAhlB,MAEA,IAAAe,EAAAf,KACA2kB,YAAA,WACA5jB,EAAAu4P,aACAv4P,EAAAu4P,YAAA9vP,MAEA,IACAxJ,KAAAs2C,kBACAt2C,KAAAs2C,iBAAA9sC,OAEAxJ,KAAA1E,KAAA89P,SACAyF,EAAA7F,aAAAh0O,KAAAhlB,KAAA,EAEA,EAEAygQ,EAAA1gQ,UAAAkgQ,0BAAA,WACAjgQ,KAAAkgQ,+BACA,IAAAn/P,EAAAf,KAAAmgQ,EAAApoQ,KAAAinG,MACAh/F,KAAAogQ,uBAAA,SAAA1/P,GACA3I,KAAAinG,MAAAmhK,EAAA,IAAAp/P,EAAAwE,SAAA,KAAA7E,EAAA2jC,QAAAjrC,EAAA2I,SAAAhB,EAAAwE,SAAA,GAAA7E,EAAA2jC,SAIAjrC,EAAAsH,EAAA2jC,QAAAC,GAAA,cAGAvjC,EAAAm/P,+BAEAn/P,EAAAzF,KAAA+kQ,4BACAt/P,EAAAyI,OAEAzI,EAAA6J,sBAAA,qBACA,EACA5K,KAAA2C,OAAAy1C,KAAA18C,GAAA,mBAAAsE,KAAAogQ,uBACA,EAEAK,EAAA1gQ,UAAAmgQ,6BAAA,WACAlgQ,KAAAogQ,yBACApgQ,KAAA2C,OAAAy1C,KAAA5tC,IAAA,mBAAAxK,KAAAogQ,wBACApgQ,KAAAogQ,uBAAA,KAEA,EAEAK,EAAA1gQ,UAAA2/P,iBAAA,YACA1/P,KAAA1E,KAAAg8M,aAAAt3M,KAAA1E,KAAA2J,YACAjF,KAAAs2C,iBAAAt2C,KAAAs2C,kBAAAl9C,EAAA,WAAAoQ,OACAxJ,KAAAs5P,YAAAt5P,KAAAs5P,aAAAlgQ,EAAA,WAAAyN,SAAA7G,KAAAs2C,kBAEAt2C,KAAAsgQ,wBAEAtgQ,KAAA1E,KAAA2J,UAAAjF,KAAA1E,KAAAolQ,cAAA1gQ,KAAA1E,KAAAolQ,aAAA/8P,QACA3D,KAAAs2C,iBAAAzvC,SAAA7G,KAAA2C,OAAAi7P,SACA59P,KAAA1E,KAAAsM,UACA5H,KAAAs2C,iBAAAzvC,SAAA7G,KAAA2C,OAAAmF,gBAEA9H,KAAAs2C,iBAAAzvC,SAAA7G,KAAAmH,SAAA5B,UAGAvF,KAAAs2C,iBAAAzK,OAAA7rC,KAAAuF,UAEA,EAEAk7P,EAAA1gQ,UAAAugQ,sBAAA,YACAtgQ,KAAA1E,KAAAg8M,aAAAt3M,KAAA1E,KAAA2J,YACAjF,KAAAs2C,iBACA1wC,IAAA,CACAzB,SAAA,WACAuC,IAAA,EACAE,OAAA,EACAH,KAAA,EACAE,MAAA,EACApC,OAAA,EACA0yE,UAAA,WAGAj3E,KAAAs5P,YACA1zP,IAAA,CACAzB,SAAA,WACAuC,IAAA,EACAE,OAAA,EACAH,KAAA,EACAE,MAAA,EACApC,OAAA,EACAgqE,gBAAAvuE,KAAA1E,KAAAg8M,YAAAt3M,KAAA1E,KAAAkiN,cAAA,mBACApgL,QAAAp9B,KAAA1E,KAAAmiN,gBAAA,MAGAz9M,KAAAyI,aACAzI,KAAAggQ,8BAGA,EAEAS,EAAA1gQ,UAAAigQ,4BAAA,WACAhgQ,KAAA2C,OAAAzH,YAAA+jQ,WACAj/P,KAAAs2C,iBAAA1wC,IAAA,SAAAivC,EAAAD,kBAEA50C,KAAAs2C,iBAAA1wC,IAAA,SAjPA,IAiPA5F,KAAA1E,KAAAiJ,QAEAvE,KAAAs5P,aACAt5P,KAAAs5P,YAAA1zP,IAAA,SApPA,IAoPA5F,KAAA1E,KAAAiJ,OAAA,GAGA,EAEAk8P,EAAA1gQ,UAAA8H,OAAA,SAAAtC,GACA,IAAAxE,EAAAf,KACA,OAAAA,KAAA8G,qBAAAvB,GACAjC,MAAA,WACAvC,EAAA0H,aACA1H,EAAA+H,MAEA,GACA,EAEA23P,EAAA1gQ,UAAA4/P,aAAA,WACA,OAAA3/P,KAAA1E,KAAA2J,UAAAjF,KAAAs2C,gBACA,EAEAmqN,EAAA1gQ,UAAAmP,yBAAA,WACAlP,KAAAkgQ,+BACArB,EAAA7F,aAAAh0O,KAAAhlB,KAAA,GAEAA,KAAAs2C,kBACAt2C,KAAAs2C,iBAAAv9C,QAEA,EAEA0nQ,CACA,IAEAhpQ,OC5RA,kCACA,SACA,eACA,SAAA2B,EAAAD,GACA,aAEA,IAAAwnQ,EAAA,SAAA/+P,GACA5B,KAAA4B,OAEA5B,KAAAqsM,IAAAjzM,EAAA,WACAuM,SAAA,kBACAkB,SAAAjF,EAAA2D,SACA,EA4PA,OA1PAo7P,EAAA5gQ,UAAA8H,OAAAzO,EAAA+O,KAEAw4P,EAAA5gQ,UAAA6gQ,SAAA,SAAAtmO,GACAt6B,KAAA6gQ,kBACA7gQ,KAAAogO,YAAA9lM,GACAt6B,KAAA8gQ,WACA9gQ,KAAA+iP,kBACA/iP,KAAA+gQ,aACA,EAEAJ,EAAA5gQ,UAAAqgO,YAAA,SAAA9lM,GACA,IAAAv5B,EAAAf,KACAA,KAAAi3I,MAAA99I,EAAA+I,MAAAo4B,GACApzB,KAAA,SAAAiL,GACA,OACAvX,GAAAuX,EAAApR,EAAAa,KAAAtG,KAAAylL,UACA/tH,MAAA7gD,EAAApR,EAAAa,KAAAtG,KAAA0lQ,iBAEA,IACA95P,KAAA,SAAAiL,GACA,OAAApR,EAAAogO,WAAAhvN,EACA,IACA3F,OACA,EAEAm0P,EAAA5gQ,UAAAohO,WAAA,SAAAhvN,GACA,IAAAixC,EAAAhqD,EAAA,8BAAAD,EAAAugD,SAAA,wBACAhjC,KAAA,UAAA1W,KAAA4B,KAAAtG,KAAA2lQ,oBAEAjhQ,KAAA4B,KAAAtG,KAAA2lQ,oBACA79M,EAAAz9C,SAAA,0BAGA,IAAAu7P,EAAA,CACAtmQ,GAAAuX,EAAAvX,GACAimF,UAAA7gF,KAAA4B,KAAAtG,KAAA2lQ,mBACA50D,IAAAjzM,EAAA,yCACA+nQ,MAAA,WACAD,EAAArgL,SAAA,EACAz9B,EACA1sC,KAAA,cACA/Q,SAAA,yBACA,EACAy7P,QAAA,WACAF,EAAArgL,SAAA,EACAz9B,EACA1sC,KAAA,cACA/Q,SAAA,2BACA,GAGA3F,KAAA4B,KAAAtG,KAAA2mD,UACAmB,EAAA1sC,KAAA,eAEA,IAAA3V,EAAAf,KAoBA,OAnBAojD,EACA1nD,GAAA,qBACAwlQ,EAAA70D,IAAArkE,YAAA,0BACAk5H,EAAArgL,QAAAz9B,EAAA1sC,KAAA,WAEA3V,EAAAa,KAAAoK,0BACAjL,EAAAa,KAAAgJ,sBAAA,WAEAs2P,EAAArgL,QACA9/E,EAAAa,KAAAgJ,sBAAA,eAAAs2P,EAAAtmQ,IAEAmG,EAAAa,KAAAgJ,sBAAA,iBAAAs2P,EAAAtmQ,IAEAmG,EAAAsgQ,iBACA,IAEArhQ,KAAAshQ,eAAAl+M,EAAAjxC,EAAA6gD,OACAnsD,SAAAq6P,EAAA70D,KAEA60D,CACA,EAEAP,EAAA5gQ,UAAAuhQ,eAAA,SAAAl+M,EAAA4P,GACA,IAAAuuM,EAAAvhQ,KAAA4B,KAAAtG,KAAA2nD,gBACA7pD,EAAA,+BACAyyC,OAAAuX,GACA1nD,GAAA,kBAAA4c,GACAA,EAAA+rB,SAAArkC,MACAojD,EAAAl4C,QAAA,QACA,IACA9R,EAAA,sCACAyyC,OAAAuX,GACAvX,OAAAzyC,EAAA,+DACAyyC,OAAAzyC,EAAA,wBAEAooQ,EAAApoQ,EAAA,WACAwM,IAAA,CACAiH,QAAA,OACA6oC,WAAA,aAGA+rN,EAAAroQ,EAAA,WACAwM,IAAA,CACAiH,QAAA,OACA60P,SAAA,QAEA76P,SAAA26P,GAEApoQ,EAAA,WACAwM,IAAA,CACAiH,QAAA,OACAoqC,cAAA,SACA9U,WAAA,aACAF,eAAA,WAEA4J,OAAA01N,GACA16P,SAAA46P,GAEA,IAAAn3C,EAAAlxN,EAAA,WACAwM,IAAA,CACAiH,QAAA,OACAoqC,cAAA,WAEAtxC,SAAA,qBACAkB,SAAA46P,GAMA,OAJAroQ,EAAA,eAAAgqD,EAAAnb,KAAA,cACApN,KAAAm4B,GACAnsD,SAAAyjN,GAEAk3C,CACA,EAEAb,EAAA5gQ,UAAAshQ,gBAAA,WACA,GAAArhQ,KAAA2hQ,KAAA,CAGA,IAAAC,EAAA5hQ,KAAA2hQ,KAAArgQ,KAAA,SAEAnI,EAAA4d,UAAA/W,KAAAi3I,MAAA,CAAAp2D,SAAA,IAGA+gL,EAAAlrP,KAAA,cAFAkrP,EAAAlrP,KAAA,aALA,CAQA,EAEAiqP,EAAA5gQ,UAAA+gQ,SAAA,WACA,IAAAl/P,EAAA5B,KAAA4B,KAEAq1I,EAAA99I,EAAA0zL,MAAA7sL,KAAAi3I,MAAA,OACAj3I,KAAA2hQ,OACA1qH,EAAA,CAAAj3I,KAAA2hQ,MAAAj6N,OAAAuvG,IAEA,IAAA4qH,EAAA1oQ,EAAA+I,MAAA+0I,GACAm5G,SAAA,SAAA6F,EAAAz0P,GACA,OAAAuT,KAAAM,MAAA7T,EAAAI,EAAAtG,KAAAwmQ,gBACA,IACA56P,KAAA,SAAAk1C,GACA,OAAAhjD,EAAA,WAAAwM,IAAA,CACAoH,MAAA,OACAH,QAAA,QACA+vN,YAAA,UAAA/wL,OAAAuQ,EACA,IACA5vC,QACAxM,KAAAqsM,IAAA5xJ,QAIA,IAFA,IAAAsnN,EAAA9qH,EAAAv+I,OAAAsH,KAAA4B,KAAAtG,KAAAwmQ,gBACAE,EAAAhiQ,KAAA4B,KAAAtG,KAAAwmQ,gBAAAC,EACAtpQ,EAAA,EAAAA,EAAAupQ,GAAAD,EAAA,EAAAtpQ,IACAopQ,IAAAnpQ,OAAA,GAAAmzC,OAAAzyC,EAAA,YAGA4G,KAAAqsM,IACAxgK,OAAAzyC,EAAA,WAAAuM,SAAA,0BAAAkmC,OAAAg2N,GACA,EAEAlB,EAAA5gQ,UAAAkf,MAAA,WACA9lB,EAAAiJ,KAAApC,KAAAi3I,OAAA,SAAAg/G,GACAA,EAAAmL,SACA,IAEAphQ,KAAA4B,KAAAoK,0BACAhM,KAAAqhQ,iBACA,EAEAV,EAAA5gQ,UAAAghQ,YAAA,WACA/gQ,KAAAqsM,IAAA/qM,KAAA,SACAiZ,QACA0tB,KAAA,WAAAjoC,KAAA4B,KAAAtG,KAAAk8C,SACA,EAEAmpN,EAAA5gQ,UAAA6mC,SAAA,SAAA2pI,GACAvwK,KAAAuwK,YACAvwK,KAAA+iP,iBACA,EAEA4d,EAAA5gQ,UAAA8gQ,gBAAA,WACA,GAAA7gQ,KAAA4B,KAAAtG,KAAA2mQ,aAAA,CACA,IAAAlhQ,EAAAf,KAEAojD,EAAAhqD,EAAA,8BAAAD,EAAAugD,SAAA,wBACAhjC,KAAA,UAAA1W,KAAA4B,KAAAtG,KAAA2lQ,oBACAvlQ,GAAA,qBACA,IAEAmlF,EAFAznF,EAAA4G,MAEA0W,KAAA,WAEAvd,EAAAiJ,KAAArB,EAAAk2I,OAAA,SAAAg/G,GACAp1K,IAAAo1K,EAAAp1K,SACAo1K,EAAAkL,QACApgQ,EAAAa,KAAAgJ,sBAAA,eAAAqrP,EAAAr7P,MACAimF,GAAAo1K,EAAAp1K,UACAo1K,EAAAmL,UACArgQ,EAAAa,KAAAgJ,sBAAA,iBAAAqrP,EAAAr7P,IAEA,IAEAmG,EAAAa,KAAAoK,0BACAjL,EAAAa,KAAAgJ,sBAAA,UACA,IAEA5K,KAAA4B,KAAAtG,KAAA2mD,UACAmB,EAAA1sC,KAAA,eAEA1W,KAAA2hQ,KAAA3hQ,KAAAshQ,eAAAl+M,EAAApjD,KAAA4B,KAAAtG,KAAA4mQ,eACA,CACA,EAEAvB,EAAA5gQ,UAAAgjP,gBAAA,WACA,GAAA/iP,KAAAuwK,UAAA,CAGA,IAAAxvK,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAAi3I,OAAA,SAAAg/G,IACA,IAAAl1P,EAAAwvK,UAAAz3K,QAAAm9P,EAAAr7P,IAEAq7P,EAAAkL,QAEAlL,EAAAmL,SACA,IAEAphQ,KAAA4B,KAAAoK,0BACAhM,KAAAqhQ,iBAZA,CAaA,EAEAV,EAAA5gQ,UAAAwM,SAAA,WACA,OAAApT,EAAA+I,MAAAlC,KAAAi3I,OACAl9H,MAAA,CAAA8mE,SAAA,IACA35E,KAAA,SAAA+uP,GACA,OAAAA,EAAAr7P,EACA,IACA4R,OACA,EAEAm0P,EAAA5gQ,UAAAi7B,QAAA5hC,EAAA+O,KAEAw4P,CACA,IACAlpQ,OC1QA,kCACA,SACA,eACA,SAAA2B,EAAAD,GACA,aAEA,IAAAgpQ,EAAA,SACA3tH,EACA55I,EACAo4D,EACA6tB,GACA7gF,KAAAw0I,OAEAx0I,KAAApF,KACAoF,KAAAgzD,QACAhzD,KAAA6gF,YAEA7gF,KAAAojD,UAAAhqD,EAAA,+BACAuM,SAAA,aAAA6uI,EAAA5yI,KAAAtG,KAAA+jC,QACA3oB,KAAA,UAAA1W,KAAA6gF,SACAnlF,GAAA,SAAAsE,KAAAoiQ,kBAAA7/P,KAAAvC,OAEA,IAAAqiQ,EAAAjpQ,EAAA,sCACAwM,IAAA,uBACAimC,OAAA7rC,KAAAojD,WACAvX,OAAAzyC,EAAA,+BAAAwM,IAAA,mBAEA5F,KAAAuF,SAAAnM,EAAA,UACAuM,SAAA,aACAkmC,OAAAzyC,EAAA,UACAyyC,OAAAw2N,GACA,EAgEA,OA9DAF,EAAApiQ,UAAAuiQ,YAAA,WACAtiQ,KAAAojD,UAAA1sC,KAAA,cACA,EAEAyrP,EAAApiQ,UAAAwiQ,gBAAA,SAAA1xP,GACA7Q,KAAAuF,SACAsmC,OAAA1yC,EAAA+N,IAAA2J,EAAA7Q,KAAAwiQ,kBAAAjgQ,KAAAvC,OACA,EAEAmiQ,EAAApiQ,UAAAyiQ,kBAAA,SAAAh2P,GACA,OAAApT,EAAA,UACAyhC,KAAAruB,GACA9Q,GAAA,QAAAsE,KAAAyiQ,aAAAlgQ,KAAAvC,MACA,EAEAmiQ,EAAApiQ,UAAAqiQ,kBAAA,WACApiQ,KAAA6J,SACA7J,KAAA0iQ,UACA1iQ,KAAA2iQ,eACA,EAEAR,EAAApiQ,UAAA0iQ,aAAA,WACAziQ,KAAA6J,SACA7J,KAAA0iQ,UACA1iQ,KAAA2iQ,eACA,EAEAR,EAAApiQ,UAAA4iQ,cAAA,WACA3iQ,KAAAw0I,KAAA5pI,sBAAA,WAEA5K,KAAA6gF,QACA7gF,KAAAw0I,KAAA5pI,sBAAA,eAAA5K,KAAApF,IAEAoF,KAAAw0I,KAAA5pI,sBAAA,iBAAA5K,KAAApF,GACA,EAEAunQ,EAAApiQ,UAAA2iQ,QAAA,WACA1iQ,KAAA6gF,QAAA7gF,KAAAojD,UAAA9e,GAAA,YAEAtkC,KAAAw0I,KAAAouH,gBACA5iQ,KAAAw0I,KAAAxoI,yBACA,EAEAm2P,EAAApiQ,UAAA8J,OAAA,WACA7J,KAAA6gF,QACA7gF,KAAAohQ,UAEAphQ,KAAAmhQ,OACA,EAEAgB,EAAApiQ,UAAAqhQ,QAAA,WACAphQ,KAAAuF,SAAAqD,YAAA,YACA5I,KAAAojD,UAAA1sC,KAAA,cACA1W,KAAA0iQ,SACA,EAEAP,EAAApiQ,UAAAohQ,MAAA,WACAnhQ,KAAAuF,SAAAI,SAAA,YACA3F,KAAAojD,UAAA1sC,KAAA,cACA1W,KAAA0iQ,SACA,EAEAP,CACA,IACA1qQ,OCjGA,yCACA,SACA,aACA,WACA,iBACA,iBACA,SAAA2B,EAAAD,EAAAslC,EAAA0jO,EAAAttN,GACA,aAEA,IAGAguN,EAAA,SAAAjhQ,GACA5B,KAAA4B,OACA5B,KAAAqsM,IAAAjzM,EAAA,WACA4G,KAAA21C,MAAAv8C,EAAA,WAEA4G,KAAA8iQ,aAAA1pQ,EAAA,WACAuM,SAAA,6CACAk1B,KAAAj5B,EAAAtG,KAAAwlF,aAAA,IACA9gF,KAAAqsM,IAAAh1J,QAAAr3C,KAAA8iQ,aACA,EAwSA,OAtSAD,EAAA9iQ,UAAA8H,OAAA,WACA7H,KAAAqsM,IACA1mM,SAAA,6BAEA3F,KAAA2pN,OAAAvwN,EAAA,WACAuM,SAAA,2CAEA,IAAA5E,EAAAf,KAEAA,KAAA+iQ,eAAA3pQ,EAAA,UACAuM,SAAA,kCAEA3F,KAAA4B,KAAAtG,KAAA2mD,WACAjiD,KAAAyhG,QAAAroG,EAAA,WACAuM,SAAA,0BACAsiC,KAAA,WAAAjoC,KAAA4B,KAAAtG,KAAAk8C,UACA97C,GAAA,oBAAA4c,GA9BA,KA+BAA,EAAA8rB,OAAArjC,EAAAwnK,SA9BA,KAiCAjwJ,EAAA8rB,OAAArjC,EAAAwnK,WACAxnK,EAAAguB,QACAzW,EAAAisB,mBAJAxjC,EAAAq1E,OACA99D,EAAAisB,iBAKA,IAEAvkC,KAAAqsM,IACA3wM,GAAA,oBACAqF,EAAAwnK,SACAxnK,EAAAguB,QAEAhuB,EAAAq1E,MACA,KAGAp2E,KAAAyhG,QACA56F,SAAA7G,KAAA+iQ,gBAEA/iQ,KAAAqsM,IACAxgK,OAAA7rC,KAAA2pN,OAAA3pN,KAAA+iQ,gBACAl8P,SAAA7G,KAAA4B,KAAA2D,UAEAvF,KAAA21C,MACAnsC,OACA7D,SAAA,wBACAA,SAAA,iBACAA,SAAA,kBACAkB,SAAA7G,KAAA4B,KAAAe,OAAAy1C,MAEA,iBAAAp4C,KAAA4B,KAAAtG,KAAA+jC,QACAZ,EAAAK,aAAA9+B,KAAA4B,KAAA,KAAA5B,KAAA21C,OAGA31C,KAAA4B,KAAAtG,KAAA68C,aACAn4C,KAAA21C,MAAAhwC,SAAA3F,KAAAgjQ,yBAEAhjQ,KAAAijQ,UAAAjjQ,KAAAkjQ,sBAAA3gQ,KAAAvC,MACAA,KAAAmjQ,WAAAnjQ,KAAAojQ,cAAA7gQ,KAAAvC,MAEA5G,EAAAlB,UAAAwD,GAAA,QAAAsE,KAAAijQ,WACAjjQ,KAAA4B,KAAAe,OAAAmF,eAAApM,GAAA,SAAAsE,KAAAmjQ,YACAnjQ,KAAAqjQ,mBAAA,EACA,EAEAR,EAAA9iQ,UAAAmjQ,sBAAA,SAAA5qP,GACA,GAAAtY,KAAAuoK,SAAA,CAGA,IAAA+6F,EAAA,IAAAlqQ,EAAAkf,EAAA+rB,QAAAyrC,QAAA9vE,KAAA4B,KAAA2D,UAAA7M,OACA6qQ,EAAA,IAAAnqQ,EAAAkf,EAAA+rB,QAAAyrC,QAAA9vE,KAAA21C,OAAAj9C,OAEA4qQ,GAAAC,GACAvjQ,KAAA+uB,OANA,CAOA,EAEA8zO,EAAA9iQ,UAAAqjQ,cAAA,WACApjQ,KAAA21C,MAAAnsC,MACA,EAEAq5P,EAAA9iQ,UAAAijQ,sBAAA,WACA,OAAAvkO,EAAAiB,wBAAA,aAAA1/B,KAAA4B,KAAAtG,KAAA68C,YACA,EAEA0qN,EAAA9iQ,UAAAwoK,OAAA,WACA,OAAAvoK,KAAA21C,MAAArR,GAAA,WACA,EAEAu+N,EAAA9iQ,UAAAq2E,KAAA,WACAp2E,KAAAqsM,IACAzjM,YAAA,aACAjD,SAAA,YAEA,IAAAgmC,EAAA3rC,KAAA4B,KAAA2D,SACA6yC,EAAAp4C,KAAA4B,KAAAe,OAAAy1C,KACA1xC,EAAAilC,EAAA0Q,SAAA31C,IAAA0xC,EAAAiE,SAAA31C,IAAAilC,EAAA9zB,cAAA,EACApR,EAAAklC,EAAA0Q,SAAA51C,KAAA2xC,EAAAiE,SAAA51C,KAEAi2I,EAAAtkG,EAAAjqC,SAAAzH,EAEA+1C,EAAAz8C,KAAA21C,MAAA/9B,aAAA5X,KAAA21C,MAAAj9B,aACA1Y,KAAA21C,MACA/vC,IAAA,CACAc,MACAD,OACAi2I,aAAA,IAAAA,EAAA,YACA1vI,MAAA2+B,EAAA/zB,aAAA6kC,EACAl4C,OAAAswC,EAAAF,uBAEA7rC,MACA,EAEA+5P,EAAA9iQ,UAAAgvB,MAAA,WACA/uB,KAAAqsM,IACAzjM,YAAA,YACAjD,SAAA,aACA3F,KAAA21C,MAAAnsC,OACAxJ,KAAA4B,KAAAgJ,sBAAA,YACA,EAEAi4P,EAAA9iQ,UAAAiM,wBAAA,WACAhM,KAAA4B,KAAAoK,yBACA,EAEA62P,EAAA9iQ,UAAA6K,sBAAA,SAAAX,EAAAI,GACArK,KAAA4B,KAAAgJ,sBAAAX,EAAAI,EACA,EAEAw4P,EAAA9iQ,UAAA6gQ,SAAA,SAAAtmO,EAAA0kJ,GACAh/K,KAAA21C,MAAA8E,QAEA,IAAA15C,EAAAf,KAEA,GAAAA,KAAA4B,KAAAtG,KAAA2mQ,aAAA,CACA,IAAArnQ,EAAAzB,EAAAugD,SAAA,eACA8pN,EAAApqQ,EAAA,WACAuM,SAAA,cACAC,IAAA,CACAiH,QAAA,OACA60P,SAAA,QAEA71N,OAAAzyC,EAAA,sCACAwM,IAAA,iBACAimC,OAAAzyC,EAAA,8BAAAwB,EAAA,QACA+K,SAAA,aAAA5E,EAAAa,KAAAtG,KAAA+jC,QACA3oB,KAAA,UAAA1W,KAAA4B,KAAAtG,KAAA2lQ,oBACAvlQ,GAAA,qBACAtC,EAAA4G,MAEA0W,KAAA,WACA3V,EAAA0iQ,YAEA1iQ,EAAAke,QAEAle,EAAAa,KAAAgJ,sBAAA,UACA,KACAihC,OAAAzyC,EAAA,+BAAAwM,IAAA,oBACAimC,OAAAzyC,EAAA,eAAAwB,EAAA,QAAA+K,SAAA,aAAAk1B,KAAA76B,KAAA4B,KAAAtG,KAAA4mQ,iBACAliQ,KAAA21C,MAAA9J,OAAA23N,GAEA,iBAAAxjQ,KAAA4B,KAAAtG,KAAA+jC,QACAZ,EAAAK,aAAA9+B,KAAA4B,KAAA,KAAA4hQ,EAAA,WAEA,CAEAxkF,EAAA7lL,EAAA40H,WAAAixD,EAAA7lL,EAAAk0H,MAAArtH,KAAA4B,KAAAtG,KAAAkgD,cAAA,CAAAx7C,KAAA4B,KAAAtG,KAAAylL,YAGA,IAAAmyB,EAAA95M,EAAA,aAEA,GAAA4lL,EAAAtmL,OAAA,GACA,IAAAgrQ,EAAAtqQ,EAAA,UACAuM,SAAA,mBACAA,SAAA,cAEA0oL,EAAAl1L,EAAA+N,IAAA83K,GAAA,SAAAG,GACA,OAAA/lL,EAAA,UACAuM,SAAA,cACAk1B,KAAAskJ,EACA,IACAwkF,EAAAvqQ,EAAA,UACAuM,SAAA,eACAkmC,OAAA63N,GACA73N,OAAAwiJ,GACA6kB,EAAArnK,OAAA83N,GAEA,iBAAA3jQ,KAAA4B,KAAAtG,KAAA+jC,QACAZ,EAAAK,aAAA9+B,KAAA4B,KAAA,KAAA+hQ,EAAA,cAEA,CAEA,IAAAC,EAAA5kF,EAAA,GACA+B,EAAA/gL,KAAA4B,KAAAtG,KAAAylL,SAEA/gL,KAAA+2I,KAAA59I,EAAA+N,IAAAozB,GAAA,SAAAnoB,GACA,IAAAiqC,EAAA,IAAA+lN,EAAAphQ,EAAAoR,EAAA4uK,GAAA5uK,EAAAyxP,GAAA7iQ,EAAAa,KAAAq/P,oBAMA,OAJA7kN,EAAAmmN,gBAAAppQ,EAAA+N,IAAA83K,GAAA,SAAAG,GACA,OAAAhtK,EAAAgtK,EACA,KAEA/iI,CACA,IAEAp8C,KAAA4B,KAAAtG,KAAA2lQ,oBACA9nQ,EAAAiJ,KAAApC,KAAA+2I,MAAA,SAAA36F,GACAA,EAAA+kN,OACA,IAGA,IAAAU,EAAA1oQ,EAAA0zL,MAAA7sL,KAAA+2I,KAAA,YACAm8D,EAAArnK,OAAAg2N,GAEA7hQ,KAAA21C,MAAA9J,OAAAqnK,GAEAlzM,KAAA6jQ,UACA,EAEAhB,EAAA9iQ,UAAAkf,MAAA,WACA,IAAAle,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAA+2I,MAAA,SAAA36F,GACAA,EAAAykC,UACAzkC,EAAAglN,UACArgQ,EAAAa,KAAAgJ,sBAAA,iBAAAwxC,EAAAxhD,IAEA,GACA,EAEAioQ,EAAA9iQ,UAAA0jQ,UAAA,WACA,IAAA1iQ,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAA+2I,MAAA,SAAA36F,GACAA,EAAAykC,UACAzkC,EAAA+kN,QACApgQ,EAAAa,KAAAgJ,sBAAA,eAAAwxC,EAAAxhD,IAEA,GACA,EAEAioQ,EAAA9iQ,UAAA6mC,SAAA,SAAA2pI,GACAvwK,KAAAuwK,YACAvwK,KAAA6jQ,UACA,EAEAhB,EAAA9iQ,UAAA8jQ,SAAA,WACA,GAAA7jQ,KAAAuwK,UAAA,CAGA,IAAAxvK,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAA+2I,MAAA,SAAA36F,IACA,IAAAr7C,EAAAwvK,UAAAz3K,QAAAsjD,EAAAxhD,IAEAwhD,EAAA+kN,QAEA/kN,EAAAglN,SACA,GATA,CAUA,EAEAyB,EAAA9iQ,UAAA6iQ,cAAA,WACA,IAIAkB,EAJA3qQ,EAAA+I,MAAAlC,KAAA+2I,MACAh9H,MAAA,CAAA8mE,SAAA,IACAgsG,MAAA,SACArgL,QACAwG,KAAA,MAEAhT,KAAAqjQ,mBAAAS,GACA9jQ,KAAA2pN,OAAA9uL,KAAAipO,EACA,EAEAjB,EAAA9iQ,UAAAwM,SAAA,WACA,OAAApT,EAAA+I,MAAAlC,KAAA+2I,MACAh9H,MAAA,CAAA8mE,SAAA,IACAgsG,MAAA,MACArgL,OACA,EAEAq2P,EAAA9iQ,UAAAsjQ,kBAAA,SAAA56P,GACAzI,KAAA8iQ,aAAAj5P,SAAApB,GACAzI,KAAA2pN,OAAA9/M,QAAApB,GAEAA,GAAAzI,KAAA4B,KAAA2D,SACAvF,KAAA4B,KAAA2D,SAAAI,SAAA,oCACA3F,KAAA4B,KAAA2D,UACAvF,KAAA4B,KAAA2D,SAAAqD,YAAA,oCAGA5I,KAAAqsM,IACAxgK,OAAA7rC,KAAA2pN,OAAA3pN,KAAA+iQ,eACA,EAEAF,EAAA9iQ,UAAAi7B,QAAA,WACAh7B,KAAA21C,MAAA58C,SACAK,EAAAlB,UAAAsS,IAAA,QAAAxK,KAAAijQ,WACAjjQ,KAAA4B,KAAAe,OAAAmF,eAAA0C,IAAA,SAAAxK,KAAAmjQ,WACA,EAEAN,CACA,IACAprQ,OC/TA,iCACA,SACA,UACA,WACA,UACA,aACA,iCACA,wCACA,gBACA,SAAA2B,EAAAkM,EAAAm5B,EAAAjpB,EAAArc,EAAA4qQ,EAAAlB,EAAA9uN,GACA,aAEA,IAAAhY,EAAA,CACAzgC,KAAA,CACAkgD,cAAA,GACAulI,SAAA,KACA+gF,gBAAA,EACAG,cAAA,EACAC,eAAA,MACAj/M,iBAAA,EACAhP,SAAA,CACAlvC,mBAAA,EACAmvC,YAAA,EACAO,YAAA,aAEAwsN,oBAAA,EACAngL,YAAA,KAIA,SAAAkjL,EAAA7gP,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAA0gC,qBAAA,CACA7F,KAAA,CAAA6B,cAAA,WAGA18B,KAAA1E,KAAAoI,SAAA8R,EAAA1D,+BAAA9R,KAAA1E,KAAAoI,UAEA1D,KAAAikQ,eAAA,GACAjkQ,KAAAs6B,MAAA,KACAt6B,KAAAg/K,QAAA,KAEAh/K,KAAAuF,SACAI,SAAA,uCACAC,IAAA,CACA8vC,WAAA,aAGA11C,KAAAkkQ,gBACAlkQ,KAAA8+B,cACA,CAyDA,OAvDAx5B,EAAA3F,OAAAqkQ,EAAA1+P,GAEA0+P,EAAApqO,SAAA,cAEAoqO,EAAAjkQ,UAAAsG,uBAAA,WACA,QACA,EAEA29P,EAAAjkQ,UAAAmkQ,cAAA,WACAlkQ,KAAA1E,KAAA6oQ,iBACAnkQ,KAAA+nM,QAAA,IAAA86D,EAAA7iQ,MAEAA,KAAA+nM,QAAA,IAAAg8D,EAAA/jQ,KACA,EAEAgkQ,EAAAjkQ,UAAA++B,aAAA,WACAL,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAuF,SACA,EAEAy+P,EAAAjkQ,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2C,OAAAsxC,SAAAhzC,MAAAjB,MAEA,IAAAe,EAAAf,KACAA,KAAA2C,OAAAmM,YAAA+kC,2BAAA7zC,KAAA1E,KAAAo8C,YAAA,SAAAp8C,GACAyF,EAAAgnM,QAAA64D,SAAAtlQ,EAAA68B,QAAAh/B,EAAAwW,KAAArU,EAAAq9B,SACA,IACAob,EAAAh0C,UAAAw0C,2BAAAxzC,GACAf,KAAA2M,eACA,EAEAq3P,EAAAjkQ,UAAA0H,WAAA,WACAzH,KAAAokQ,eACA,EAEAJ,EAAAjkQ,UAAAqkQ,cAAA,WACApkQ,KAAA+nM,QAAAlgM,QACA,EAEAm8P,EAAAjkQ,UAAAwM,SAAA,WACA,OAAAvM,KAAA+nM,QAAAx7L,UACA,EAEAy3P,EAAAjkQ,UAAAo3C,WAAA,WACAn3C,KAAA+nM,QAAA9oL,OACA,EAEA+kP,EAAAjkQ,UAAA6mC,SAAA,SAAA8M,GACA1zC,KAAA+nM,QAAAnhK,SAAA8M,EAAAlnC,MACA,EAEAw3P,EAAAjkQ,UAAAmP,yBAAA,WACAlP,KAAA+nM,QAAA/sK,SACA,EAEAgpO,CACA,IC5GAvsQ,OAAA,cACA,WACA,SAAA2B,GAEA,IAAAirQ,EAAA,CACAC,SAAA,KACAC,SAAA,KACA9pD,aAAArhN,EAAA+O,KACAwhG,MAAAvwG,EAAA+O,KACAg/G,QAAA/tH,EAAA+O,KACAtD,iBAAA,IACAD,eAAA,KAGAxL,EAAAgmB,GAAAolP,WAAA,SAAAh4P,GACA,OAAAtL,UAAAxI,OAKAsH,KAAAoC,MAAA,WACAhJ,EAAA4G,MACA84C,IAAAtsC,EAAAiE,WACA,IAPA,OAAArX,EAAA4G,MAAA84C,YAAA1yC,IAAAhN,EAAA4G,MAAA84C,OAAA,KAAA1/C,EAAA4G,MAAA84C,MACA,KACA,IAAAqsD,OAAA/rG,EAAA4G,MAAA84C,MAOA,EAEA1/C,EAAAgmB,GAAAqlP,aAAA,SAAAprQ,GAGA,OAFAA,EAAAD,EAAAuG,OAAA,GAAA0kQ,EAAAhrQ,GAEA2G,KAAAoC,MAAA,WACA,IAAAqmD,EAAArvD,EAAA4G,MACA0kQ,EAAAj8M,EAAA3P,MACA2hK,EAAAphN,EAAAohN,aACA9wG,EAAAtwG,EAAAswG,MACAwd,EAAA9tH,EAAA8tH,QACAtiH,EAAAxL,EAAAwL,iBACAD,EAAAvL,EAAAuL,eAEA6jD,EACA/sD,GAAA,oBAAA4c,IAEA,IAAAlf,EAAA0uB,QAAAxP,EAAAguC,QAAA,qCAEA,IAAAhuC,EAAAguC,UAAA,IAAAhuC,EAAA6jI,SAEA,IAAA7jI,EAAAguC,UAAA,IAAAhuC,EAAA6jI,SAEA,IAAA7jI,EAAAguC,UAAA,IAAAhuC,EAAA6jI,SAEA7jI,EAAAguC,SAAA,IAAAhuC,EAAAguC,SAAA,IAKAhuC,EAAAirI,WAAAjrI,EAAAguC,QAAA,IAAAhuC,EAAAguC,QAAA,MAAAhuC,EAAAguC,QAAA,IAAAhuC,EAAAguC,QAAA,MACAhuC,EAAAisB,gBACA,IACA7oC,GAAA,oBACA,IAAAipQ,EAAAl8M,EAAA3P,MACAj5B,QAAAjb,EAAA,IACAib,QAAAhb,EAAA,KACA,QAAA8/P,GAAA,MAAAA,EAOA,OANAD,EAAAC,EACAlqD,EAAA,WACA,KAAAkqD,EACAh7J,IAEAwd,KAIA,IAAA/tH,EAAA8tC,UAAAy9N,GAGA,OAFAl8M,EAAA3P,IAAA4rN,QACA/6J,IAIA,IAAAmS,EAAA,IAAA3W,OAAAw/J,GAGA,MAAAtrQ,EAAAirQ,UAAAxoJ,EAAAziH,EAAAirQ,UACAI,EAAA5oJ,EACA2+F,EAAA,MACAtzF,KACA,MAAA9tH,EAAAkrQ,UAAAzoJ,EAAAziH,EAAAkrQ,UACAG,EAAArrQ,EAAAkrQ,SACA97M,EAAA3P,IAAAz/C,EAAAkrQ,UACA9pD,EAAAphN,EAAAkrQ,UACA56J,MAEA+6J,EAAA5oJ,EACA2+F,EAAA3+F,GACAnS,IAEA,IACAjuG,GAAA,mBACA,IAAAipQ,EAAAl8M,EAAA3P,MACAj5B,QAAAjb,EAAA,IACAib,QAAAhb,EAAA,KAEA,GAAA8/P,GAAA16J,MAAA06J,GACAl8M,EAAA3P,IAAA,IACA2hK,EAAA,MACA9wG,SACA,SAAAtwG,EAAAirQ,UAAAK,EAAA,CACA,IAAAx/J,OAAAw/J,GACAtrQ,EAAAirQ,WACAI,EAAArrQ,EAAAirQ,SACA77M,EAAA3P,IAAAz/C,EAAAirQ,UACA7pD,EAAAphN,EAAAirQ,WAEA36J,GACA,CACA,GACA,GACA,CACA,IACAlyG,OCvHA,mCACA,SACA,KACA,UACA,WACA,4BACA,UACA,eACA,aACA,aACA,gBACA,SAAA2B,EAAA0K,EAAAwB,EAAAm5B,EAAAmmO,EAAApvP,EAAAzE,EAAAgiC,EAAAy7D,EAAAz6D,GACA,aAEA,IAAAhY,EAAA,CACAzgC,KAAA,CACA60C,MAAA,CACA8C,OAAAF,EAAAS,WAEAS,SAAA,CACAlvC,mBAAA,EACAmvC,YAAA,EACAO,YAAA,YACAyuG,aAAA,MAEAwlF,aAAA,MAIA,SAAAm8B,EAAA1hP,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAA1E,KAAAoI,SAAA8R,EAAA1D,+BAAA9R,KAAA1E,KAAAoI,WAAA,GAEA1D,KAAAm1C,mBAAApkC,EAAAE,WAAAG,OACA,CA+VA,OA7VA9L,EAAA3F,OAAAklQ,EAAAv/P,GAEAu/P,EAAAjrO,SAAA,eAEAirO,EAAA9kQ,UAAA+kQ,YAAA,WACA,OAAA9kQ,KAAA1E,KAAAwpQ,aAAA9kQ,KAAA1E,KAAA8tO,YACA,EAEAy7B,EAAA9kQ,UAAAglQ,YAAA,WACA,QAAA/kQ,KAAA1E,KAAAypQ,WACA,EAEAF,EAAA9kQ,UAAAilQ,aAAA,WACA,OAAAhlQ,KAAA1E,KAAA8tO,aACAppO,KAAA1E,KAAA+tO,UACArpO,KAAA1E,KAAAipQ,SAAA9zP,WAAA/X,MACA,EAEAmsQ,EAAA9kQ,UAAAklQ,YAAA,WACA,OAAAjlQ,KAAA1E,KAAAgpQ,QACA,EAEAO,EAAA9kQ,UAAAmlQ,YAAA,WACA,OAAAllQ,KAAA1E,KAAAwpQ,YACA9kQ,KAAA1E,KAAAipQ,SACAxvP,KAAAud,IAAA,OAAA6yE,OAAAnlG,KAAA1E,KAAA+tO,YAAA,CACA,EAEAw7B,EAAA9kQ,UAAAolQ,aAAA,WACA,OAAAnlQ,KAAA1E,KAAAgkC,QAAA,KAAAt/B,KAAA1E,KAAAgkC,OACAt/B,KAAAolQ,QAAAvqO,KAAA76B,KAAA1E,KAAAgkC,QAEAt/B,KAAAolQ,QAAAvqO,KAAA,GACA,EAEAgqO,EAAA9kQ,UAAA++B,aAAA,WACAL,EAAAK,aAAA9+B,KAAA,KAAAA,KAAA6oO,OACA,EAEAg8B,EAAA9kQ,UAAAslQ,YAAA,WACA,QAAArlQ,KAAA1E,KAAAgqQ,oBAAA,CACA,IAAAC,EAAAnsQ,EAAA,2BAQA,OANA4G,KAAA8kQ,eACAS,EAAAt9N,KAAA,MAAAjoC,KAAAklQ,eAEAllQ,KAAA+kQ,eACAQ,EAAAt9N,KAAA,MAAAjoC,KAAAilQ,eAEAM,CACA,CAEA,IAAArxD,EAAAl0M,KAAA1E,KAAAstO,YAAA,kBACAC,EAAAzvO,EAAA,eAAA86M,EAAA,OACAuwD,aAAA,CACAF,SAAAvkQ,KAAA8kQ,cAAA9kQ,KAAAklQ,mBAAA9+P,EACAk+P,SAAAtkQ,KAAA+kQ,cAAA/kQ,KAAAilQ,mBAAA7+P,EACAxB,eAAA5E,KAAAs4C,UAAA1zC,eACAC,iBAAA7E,KAAAs4C,UAAAzzC,mBAEA+/P,mBAAA,CACA/5K,UAAA7qF,KAAAs4C,UAAAzzC,mBAMA,OAHA7E,KAAA8kQ,eACAj8B,EAAA5gM,KAAA,MAAAjoC,KAAAglQ,gBAEAn8B,CACA,EAEAg8B,EAAA9kQ,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2C,OAAAsxC,SAAAhzC,MAAAjB,MACAA,KAAAs4C,UAAAt4C,KAAA2C,OAAA+B,WAAA6zC,gBAAAv4C,KAAA1E,KAAAoJ,YACAqvC,EAAAh0C,UAAAw0C,2BAAAv0C,MAEAA,KAAAolQ,QAAAhsQ,EAAA,YACAwM,IAAA,CACAyqC,MAAA,OACA3O,aAAA,MACAtF,WAAA,8BACA8E,SAAA,OACAvE,WAAA,MAEA91B,SAAA7G,KAAAuF,UAEAvF,KAAA6+M,MAAAzlN,EAAA,YACAwM,IAAA,CACAiH,QAAA,UAEAhG,SAAA7G,KAAAuF,UAEAvF,KAAA6oO,OAAA7oO,KAAAqlQ,cACAp9N,KAAA,OAAAjoC,KAAA1E,KAAAhD,MACA2vC,KAAA,KAAAjoC,KAAAmH,SAAAu9B,WAAA,IAAA1kC,KAAA1E,KAAAV,IACAqtC,KAAA,WAAAjoC,KAAA1E,KAAAk8C,UACAvP,KAAA,cAAAjoC,KAAA1E,KAAAw7C,WACA7O,KAAA,eAAAjoC,KAAA1E,KAAA4nJ,cACAv9I,SAAA,mBACAC,IAAA,CACAoH,MAAA,OACAmB,OAAAnO,KAAA1E,KAAAgJ,KAAAD,EAAA,OAEAwC,SAAA7G,KAAA6+M,OAEA7+M,KAAA1E,KAAAstO,aACA5oO,KAAA8oO,oBACA9oO,KAAA+oO,qBAEA/oO,KAAAgpO,uBAIAhpO,KAAAqzC,QAAA,IAAAN,EAAA/yC,UAAA1E,KAAA60C,MAAAnwC,KAAA6oO,QACA7oO,KAAAqzC,QAAAK,SAEA1zC,KAAAkK,kBAAA,mBAAAlK,KAAA6oO,QAEA,IAAA9nO,EAAAf,KACAkpO,EAAAlpO,KAAAgK,gBAAA,WACAk/N,EAAAvlO,UACA3D,KAAAyK,sBAAAzK,KAAA6oO,OAAA,sBACA1vO,EAAAglC,IAAAp9B,EAAA,2BACAA,EAAAooO,sBAAApoO,EAAAwL,WACA,IACAvM,KAAAyK,sBAAAzK,KAAA6oO,OAAA,iBAAA1vO,EAAAy+C,UAAA,WACA72C,EAAAooO,wBAAApoO,EAAAwL,aACAxL,EAAAooO,sBAAApoO,EAAAwL,WACAxL,EAAA6B,aAAAsmO,EAAAtlO,iBAEA,GAAA5D,KAAA1E,KAAAotO,gBAGA1oO,KAAAuF,SACAI,SAAA,mBACAC,IAAA,CACA8vC,WAAA,WACA1oC,MAAAhN,KAAA1E,KAAAgJ,KAAAF,EAAA,KACA+J,OAAAnO,KAAA1E,KAAAgJ,KAAAD,EAAA,OAGArE,KAAA8+B,eAEA9+B,KAAA6oO,OAAAntO,GAAA,kBAAA4c,GACAvX,EAAAykQ,cACAzkQ,EAAAiL,0BAEA,KAAAsM,EAAAguC,SACAvlD,EAAA6J,sBAAA,eACA,IAEA5K,KAAA1E,KAAA2mD,UACAjiD,KAAA6oO,OAAAnyN,KAAA,eAEA1W,KAAAmlQ,eAEAnlQ,KAAA2M,eACA,EAEAk4P,EAAA9kQ,UAAA45C,MAAA,WACA35C,KAAA6oO,OAAA39N,QAAA,QACA,EAEA25P,EAAA9kQ,UAAAiL,mBAAA,WACA,OAAAhL,KAAAuM,UACA,EAEAs4P,EAAA9kQ,UAAAwM,SAAA,WACA,WAAAvM,KAAA6oO,OAAA/vL,MACA,MAGA,IAAA94C,KAAA1E,KAAAgqQ,oBACAtlQ,KAAA6oO,OAAA/vL,MAEA94C,KAAAs4C,UAAAgxL,uBAAAtpO,KAAAm1C,mBAAAn1C,KAAA6oO,OAAA/vL,MACA,EAEA+rN,EAAA9kQ,UAAAo3C,WAAA,WACAn3C,KAAA6oO,OAAA/vL,IAAA,IACA94C,KAAAgM,0BACAhM,KAAAmpO,sBAAAnpO,KAAAuM,UACA,EAEAs4P,EAAA9kQ,UAAA6mC,SAAA,SAAA8M,GAQA,GAPAA,EAAAhuC,OAAAqL,EAAAE,WAAAK,QAAAoiC,EAAAhuC,KAGA1F,KAAAm1C,mBAAAzB,EAAAhuC,KAFA1F,KAAAm1C,mBAAApkC,EAAAE,WAAAG,SAMA,IAAApR,KAAA1E,KAAAgqQ,oBACAtlQ,KAAA6oO,OAAA/vL,IAAApF,EAAAlnC,OACAxM,KAAAmpO,sBAAAz1L,EAAAlnC,UACA,CACA,IAAAquB,EAAA76B,KAAAs4C,UAAA6D,yBAAAn8C,KAAAm1C,mBAAAzB,EAAAlnC,OACAxM,KAAA6oO,OAAA/vL,IAAAje,GACA76B,KAAAmpO,sBAAAnpO,KAAAuM,UACA,CAEAvM,KAAAgM,yBACA,EAEA64P,EAAA9kQ,UAAAoM,SAAA,WACA,IAAAK,EAAAxM,KAAAuM,WAEA,OAAAC,UAIA,IAAAA,EAAA9T,UAIAU,EAAA8tC,UAAA16B,GAKA,EAEAq4P,EAAA9kQ,UAAA+oO,kBAAA,WACA,IAAA/nO,EAAAf,KACAA,KAAAupO,gBAAAnwO,EAAA,yCACAsd,KAAA,yBACA9Q,IAAA,CACAzB,SAAA,WACAuC,IAAA,OACAD,KAAA,OACAmtE,UAAA,OACAvjC,MAAA,UAEA30C,GAAA,oBACA,aAAAqF,EAAA8nO,OAAA,GAAAnjO,KACA3E,EAAAyoO,sBAEAzoO,EAAAgoO,mBAEA,IACAliO,SAAA7G,KAAAuF,SACA,EAEAs/P,EAAA9kQ,UAAAipO,qBAAA,WACAhpO,KAAAupO,kBACAvpO,KAAAupO,gBAAAxwO,gBACAiH,KAAAupO,gBAEA,EAEAs7B,EAAA9kQ,UAAA0pO,oBAAA,WACA,OAAAzpO,KAAA1E,KAAAouO,oBACA5lO,EAAA3F,iBAAA6B,KAAA1E,KAAAouO,qBAEA,IACA,EAEAm7B,EAAA9kQ,UAAA4pO,sBAAA,WACA,OAAA3pO,KAAA1E,KAAAsuO,sBACA9lO,EAAA3F,iBAAA6B,KAAA1E,KAAAsuO,uBAEA,IACA,EAEAi7B,EAAA9kQ,UAAAgpO,kBAAA,WACA/oO,KAAAupO,iBACAvpO,KAAA8oO,oBAEA,IAAApjO,EAAA,OACAs3M,EAAAh9M,KAAAypO,sBACAzsB,GAAAh9M,KAAA1E,KAAAstO,aAAA5oO,KAAA1E,KAAAmtO,eACAzoO,KAAA6pO,kBAAA7sB,EAAAt3M,GACA1F,KAAA1E,KAAAstO,aACA5oO,KAAA8pO,oBAAApkO,GAEA1F,KAAA6oO,OAAA,GAAAnjO,KAAA,UACA,EAEAm/P,EAAA9kQ,UAAAypO,oBAAA,WACAxpO,KAAAupO,iBACAvpO,KAAA8oO,oBAEA,IAAApjO,EAAA,SACAs3M,EAAAh9M,KAAA2pO,wBACA3sB,GAAAh9M,KAAA1E,KAAAstO,aAAA5oO,KAAA1E,KAAAmtO,eACAzoO,KAAA6pO,kBAAA7sB,EAAAt3M,GACA1F,KAAA1E,KAAAstO,aACA5oO,KAAA8pO,oBAAApkO,GAGA1F,KAAA6oO,OAAA,GAAAnjO,KAAA,MACA,EAEAm/P,EAAA9kQ,UAAA8pO,kBAAA,SAAApvM,EAAA/0B,GACA1F,KAAAupO,gBACA3jO,IAAA,CACAoH,MAAA,OACAmB,OAAA,OACAuvB,gBAAA,OAAAxkC,QAAAw9L,MAAAj8J,GAAA,IACAw3C,eAAA,cAEArpE,YAAA,mCAEA,WAAAlD,EACAtM,EAAA4G,KAAAupO,iBACA7yN,KAAA,yBAEA,SAAAhR,GACAtM,EAAA4G,KAAAupO,iBACA7yN,KAAA,wBAEA,EAEAmuP,EAAA9kQ,UAAA+pO,oBAAA,SAAApkO,GACAtM,EAAA4G,KAAAupO,iBACA3jO,IAAA,CACAoH,MAAA,GACAmB,OAAA,GACAuvB,gBAAA,GACAu0C,eAAA,KAEA,WAAAvsE,EACAtM,EAAA4G,KAAAupO,iBACA7yN,KAAA,yBACA/Q,SAAA,sBACAiD,YAAA,gBAEA,SAAAlD,GACAtM,EAAA4G,KAAAupO,iBACA7yN,KAAA,yBACA/Q,SAAA,gBACAiD,YAAA,qBAEA,EAEAi8P,EAAA9kQ,UAAAylQ,YAAA,WACA,GAAAxlQ,KAAA6oO,OAAA/vL,OAAA94C,KAAA1E,KAAAmqQ,eAAA,CACA,IAAAC,EAAAxsP,SAAAlZ,KAAAs4C,UAAAxzC,kBACA6gQ,EAAA3lQ,KAAA6oO,OAAA/vL,MAAAtgD,MAAAwH,KAAAs4C,UAAAzzC,kBACA,oBAAA6gQ,GAAA,IACAC,EAAAjtQ,OAAA,GAAAitQ,EAAA,GAAAjtQ,OAAAgtQ,EACA1lQ,KAAA6oO,OAAA/vL,IAAA6sN,EAAA,GAAA3lQ,KAAAs4C,UAAAzzC,iBAAA8gQ,EAAA,GAAA9sQ,UAAA,EAAA6sQ,IACA,IAAAA,GACA1lQ,KAAA6oO,OAAA/vL,IAAA6sN,EAAA,IAGA,CACA,EAEAd,CACA,IACAptQ,OCpYA,+BACA,SACA,UACA,aACA,SAAA2B,EAAAkM,EAAAm5B,GACA,aAEA,IAAA1C,EAAA,CACAzgC,KAAA,CACAsqQ,WAAA,EACAC,WAAA,KACAC,cAAA,EACAC,cAAA,IACAC,UAAA,EACAC,UAAA,IACAC,UAAA,EACAC,UAAA,KACAv/G,WAAA,EACAw/G,cAAA,uCACAC,kBAAA,QAIA,SAAAC,EAAAnjP,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,mDAAA2iC,EAAA5Y,GAEAsb,EAAAK,aAAA9+B,KACA,CA8IA,OA5IAsF,EAAA3F,OAAA2mQ,EAAAhhQ,GAEAghQ,EAAA1sO,SAAA,aAEA0sO,EAAAvmQ,UAAA0H,WAAA,WACAzH,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MAEAA,KAAA2M,gBAEA3M,KAAAiqD,WAAAjqD,KAAA2C,OAAA0E,YAAAi9C,eAAAtkD,KAAA1E,KAAA2uD,YACAjqD,KAAAiqD,YACAjqD,KAAAiqD,WAAAs8M,iBAAAvmQ,KAAAwmQ,WAAAjkQ,KAAAvC,MACA,EAEAsmQ,EAAAvmQ,UAAA0mQ,YAAA,WAGA,GAFAzmQ,KAAA0mQ,OAAAttQ,EAAA,mCAEA4G,KAAA1E,KAAAsqQ,WAAA5lQ,KAAA1E,KAAAwqQ,aAAA,CACA,IAAAa,EAAAvtQ,EAAA,gCAEA4G,KAAA1E,KAAAsqQ,YACA5lQ,KAAAysP,OAAArzP,EAAA,yCACAyhC,KAAA76B,KAAA1E,KAAAuqQ,YACAnqQ,GAAA,QAAAsE,KAAA4mQ,cAAArkQ,KAAAvC,OACA6G,SAAA8/P,GACAloO,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAysP,OAAAzsP,KAAA1E,KAAA+jC,OAAA,iCAGAr/B,KAAA1E,KAAAwqQ,eACA9lQ,KAAAkkN,UAAA9qN,EAAA,4CACAyhC,KAAA76B,KAAA1E,KAAAyqQ,eACArqQ,GAAA,QAAAsE,KAAA6mQ,iBAAAtkQ,KAAAvC,OACA6G,SAAA8/P,GACAloO,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAkkN,UAAAlkN,KAAA1E,KAAA+jC,OAAA,iCAGAr/B,KAAA0mQ,OAAA76N,OAAA86N,EACA,CAQA,GANA3mQ,KAAA1E,KAAAsrJ,YACA5mJ,KAAA2pN,OAAAvwN,EAAA,+BACAyN,SAAA7G,KAAA0mQ,QACAjoO,EAAAK,aAAA9+B,KAAA,KAAAA,KAAA2pN,OAAA3pN,KAAA1E,KAAA+jC,OAAA,aAGAr/B,KAAA1E,KAAA4qQ,UAAAlmQ,KAAA1E,KAAA0qQ,SAAA,CACA,IAAAc,EAAA1tQ,EAAA,mCAEA4G,KAAA1E,KAAA0qQ,WACAhmQ,KAAA+mQ,MAAA3tQ,EAAA,wCACAyhC,KAAA76B,KAAA1E,KAAA2qQ,WACAvqQ,GAAA,QAAAsE,KAAAgnQ,aAAAzkQ,KAAAvC,OACA6G,SAAAigQ,GACAroO,EAAAK,aAAA9+B,KAAA,KAAAA,KAAA+mQ,MAAA/mQ,KAAA1E,KAAA+jC,OAAA,iCAGAr/B,KAAA1E,KAAA4qQ,WACAlmQ,KAAAinQ,MAAA7tQ,EAAA,wCACAyhC,KAAA76B,KAAA1E,KAAA6qQ,WACAzqQ,GAAA,QAAAsE,KAAAknQ,aAAA3kQ,KAAAvC,OACA6G,SAAAigQ,GACAroO,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAinQ,MAAAjnQ,KAAA1E,KAAA+jC,OAAA,iCAGAr/B,KAAA0mQ,OAAA76N,OAAAi7N,EACA,CAEA,WAAA9mQ,KAAA1E,KAAA+qQ,kBACArmQ,KAAAuF,SAAAK,IAAA,CACAiH,QAAA,OACAoqC,cAAA,SACAhV,eAAA,WAEA,WAAAjiC,KAAA1E,KAAA+qQ,kBACArmQ,KAAAuF,SAAAK,IAAA,CACAiH,QAAA,OACAoqC,cAAA,SACAhV,eAAA,aAGAjiC,KAAAuF,SAAAK,IAAA,CACAiH,QAAA,UACAoqC,cAAA,GACAhV,eAAA,KAIAjiC,KAAA0mQ,OAAA7/P,SAAA7G,KAAAuF,SACA,EAEA+gQ,EAAAvmQ,UAAA6mQ,cAAA,WACA5mQ,KAAAiqD,YACAjqD,KAAAiqD,WAAA8rJ,SAAA,EACA,EAEAuwD,EAAAvmQ,UAAA8mQ,iBAAA,WACA7mQ,KAAAiqD,YACAjqD,KAAAiqD,WAAA8rJ,SAAA/1M,KAAA41C,YAAA,EACA,EAEA0wN,EAAAvmQ,UAAAinQ,aAAA,WACAhnQ,KAAAiqD,YACAjqD,KAAAiqD,WAAA8rJ,SAAA/1M,KAAA41C,YAAA,EACA,EAEA0wN,EAAAvmQ,UAAAmnQ,aAAA,WACAlnQ,KAAAiqD,YACAjqD,KAAAiqD,WAAA8rJ,SAAA/1M,KAAAmnQ,mBACA,EAEAb,EAAAvmQ,UAAAymQ,WAAA,SAAAxwN,EAAAJ,EAAAwxN,GACApnQ,KAAAg2C,uBACAh2C,KAAA41C,cACA51C,KAAAonQ,aACApnQ,KAAAmnQ,mBAAApyP,KAAAM,MAAA2gC,EAAAoxN,EAAA,KAEApnQ,KAAA0mQ,QACA1mQ,KAAAymQ,cAEA,IAAAY,EAAA,IAAAzxN,EACA0xN,EAAA1xN,IAAA51C,KAAAmnQ,mBAEAI,EAAA3xN,EAAAwxN,EAAA,EACAI,EAAAF,EAAAC,EAAAvxN,EAAAoxN,EAAA,GAAAxxN,EAAA,GAAAwxN,EAEApnQ,KAAAysP,QAAAzsP,KAAAysP,OAAAzkH,YAAA,cAAAq/H,GACArnQ,KAAAkkN,WAAAlkN,KAAAkkN,UAAAl8E,YAAA,cAAAq/H,GACArnQ,KAAA+mQ,OAAA/mQ,KAAA+mQ,MAAA/+H,YAAA,cAAAs/H,GACAtnQ,KAAAinQ,OAAAjnQ,KAAAinQ,MAAAj/H,YAAA,cAAAs/H,GAEAtnQ,KAAA2pN,QACA3pN,KAAA2pN,OAAA9uL,KAAA76B,KAAA1E,KAAA8qQ,cACAvmP,QAAA,mBAAA+1B,EAAA,GACA/1B,QAAA,0BAAA7f,KAAAmnQ,mBAAA,GACAtnP,QAAA,8BAAA0nP,GACA1nP,QAAA,6BAAA2nP,GACA3nP,QAAA,4BAAAm2B,GAEA,EAEAswN,CACA,IACA7uQ,OC3KA,yBACA,SACA,YACA,SAAA2B,EAAAkM,GACA,aAEA,IAAAy2B,EAAA,CACAzgC,KAAA,CACAmsQ,gBAAA,UAIA,SAAAC,EAAAvkP,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GACAnjB,KAAAuF,SAAAI,SAAA3F,KAAA1E,KAAAmsQ,gBACA,CAUA,OARAniQ,EAAA3F,OAAA+nQ,EAAApiQ,GAEAoiQ,EAAA9tO,SAAA,UAEA8tO,EAAA3nQ,UAAAgH,UAAA,WACA/G,KAAA2M,eACA,EAEA+6P,CACA,IACAjwQ,OC3BA,yBACA,SACA,KACA,YACA,SAAA2B,EAAA0K,EAAAwB,GACA,aAEA,SAAAqiQ,EAAAxkP,GACA,IAAAykP,EAAAxuQ,EAAA,iIACAkM,EAAA0f,KAAAhlB,KAAA5G,EAAAwuQ,GAAAzkP,EACA,CAwCA,OAtCA7d,EAAA3F,OAAAgoQ,GAEAA,EAAA/tO,SAAA,UAIA+tO,EAAA5nQ,UAAAgH,UAAA,WACA,IAAAzL,EAAA,CACA49B,SAAAl5B,KAAA6F,OAAAvK,KAAAV,GACAitQ,QAAA7nQ,KAAA1E,KAAAV,GACAk+B,WAAA94B,KAAA2C,OAAAm2B,WAAAqhB,0BAGAp5C,EAAAf,KAEAA,KAAA2C,OAAAqoC,WAAAC,SAAA,uBAAA3vC,GACAixC,MAAA,SAAA7lB,GACA,IAAAgyH,EAAAt/I,EAAA,gBACAA,EAAA,iDAAA0/C,IAAApyB,EAAA,aAAA7f,SAAA6xI,GACAt/I,EAAA,qDAAA0/C,IAAApyB,EAAA,eAAA7f,SAAA6xI,GACAt/I,EAAA,mDAAA0/C,IAAApyB,EAAA,cAAA7f,SAAA6xI,GACAt/I,EAAA,uDAAA0/C,IAAApyB,EAAA,gBAAA7f,SAAA6xI,GACAt/I,EAAA,uDAAA0/C,IAAApyB,EAAA,gBAAA7f,SAAA6xI,GAEA,IAAAovH,EAAAhuQ,SAAA8E,SAAA,KAAA9E,SAAA0oB,KAAA1e,EAAA1G,aAAA,gCAAA2D,EAAAzF,KAAAV,GAAA,YAAA8rB,EAAA,cACAttB,EAAA,yDAAA0/C,IAAAgvN,GAAAjhQ,SAAA6xI,GAEA,IAAAqvH,EAAAjuQ,SAAA8E,SAAA,KAAA9E,SAAA0oB,KAAA1e,EAAA1G,aAAA,sBAAA2D,EAAAzF,KAAA0sQ,eACA5uQ,EAAA,2DAAA0/C,IAAAivN,GAAAlhQ,SAAA6xI,GACAt/I,EAAA,+DAAA0/C,IAAAivN,GAAAlhQ,SAAA6xI,GACAt/I,EAAA,yDAAA0/C,IAAAivN,GAAAlhQ,SAAA6xI,EACA,GACA,EAEAivH,EAAA5nQ,UAAAkoQ,eAAA,WACA7uQ,EAAA,gBAAA8uQ,QACA,EAEAP,CACA,IAQAlwQ,OC3DA,cACA,WACA,SAAA2B,GACA,aAEA,IAAA+uQ,EAAA,SAAA37P,EAAA6lB,EAAA8E,GACA,OAAApiB,KAAAoiB,IAAA9E,EAAAtd,KAAAsd,IAAA7lB,EAAA2qB,GACA,EAEAixO,EAAA,SAAAC,GAEA,UADAA,KAAA,MAEA,YAGA,IACAC,EACAC,EAFA36J,EAAAy6J,EAAA7vQ,MAAA,OAWA,GARA,GAAAo1G,EAAAl1G,QACA4vQ,EAAAD,EAAAlyP,OAAA,EAAApB,KAAAsd,IAAAg2O,EAAA3vQ,OAAA,IACA6vQ,EAAAF,EAAA3vQ,OAAA,EAAA2vQ,EAAAlyP,OAAA,EAAApB,KAAAsd,IAAAg2O,EAAA3vQ,OAAA,aAEA4vQ,EAAA16J,EAAA,GACA26J,EAAA36J,EAAA,IAGAx0G,EAAA8tC,UAAAohO,QACA,OAAAA,EAAA5vQ,OAGA,YAFA4vQ,EAAA,CAGA,CAEA,GAAAlvQ,EAAA8tC,UAAAqhO,QACA,OAAAA,EAAA7vQ,OAGA,YAFA6vQ,EAAA,CAGA,CAKA,OACAv5J,MAJAs5J,EAAAlvQ,EAAA8tC,UAAAohO,KAAA,EAKA76J,QAJA86J,EAAAnvQ,EAAA8tC,UAAAqhO,KAAA,EAMA,EAEAv/O,EAAA,SAAAgmF,EAAAvB,GACA,IAAA+6J,EAAA,SAAA1vN,GAEA,IADA,IAAApyB,EAAAoyB,EAAAroC,WACAiW,EAAAhuB,OAAA,GACAguB,EAAA,IAAAA,EAEA,OAAAA,CACA,EACA,OAAA8hP,EAAAx5J,GAAA,IAAAw5J,EAAA/6J,EACA,EAEA,OACAg7J,UAAA,SAAAC,GACA,IAAAA,GAAA,IAAAA,EACA,cAEA,IAAA15J,EAAAj6F,KAAAM,MAAAqzP,EAAA,MACAj7J,EAAA14F,KAAAM,OAAAqzP,EAAA,KAAA15J,GAAA,IACA,OAAAhmF,EAAAgmF,EAAAvB,EACA,EAEAk7J,SAAA,SAAAhmQ,EAAAimQ,GACA,IAAAA,EACA,cAEA,IAAA5+J,EAAArnG,EAAA+B,WAAA6zC,kBAAA+kK,iBAAAsrD,GACA,SAAA5+J,EACA,mBAAA4+J,EAAA,6BAEA,OAAA5/O,EAAAghF,EAAAqrD,WAAArrD,EAAAmhF,aACA,EAEA09E,QAAA,SAAAR,GACA,IAAAS,EAAAV,EAAAC,GACA,aAAAS,EAAA,KACA,KAAAX,EAAAW,EAAA95J,MAAA,SAAAm5J,EAAAW,EAAAr7J,QAAA,KACA,EAEAs7J,OAAA,SAAApmQ,EAAA0lQ,GACA,IAAAS,EAAAV,EAAAC,GACA,SAAAS,EAAA,YACA,IAAA9+J,EAAA,IAAAjyG,KAAA,SAAA+wQ,EAAA95J,MAAA85J,EAAAr7J,QAAA,GACA,OAAA9qG,EAAA+B,WAAA6zC,kBAAAimK,kBAAAx0G,EACA,EAEA,IACAvyG,OC/FA,yCACA,SACA,eACA,SAAA2B,EAAA4vQ,GACA,aAEA,SAAAC,EAAA3lO,EAAA3gC,GACA3C,KAAAsjC,YACAtjC,KAAAkpQ,UAAA,GACAlpQ,KAAAg9P,OAAA,GACAh9P,KAAA84B,WAAAn2B,EAAAm2B,WACA94B,KAAAs4C,UAAA31C,EAAA+B,WAAA6zC,iBACA,CAkiBA,OAhiBA0wN,EAAAlpQ,UAAAopQ,qBAAA,WACA/vQ,EAAAlB,UAAAsS,IAAA,aACApR,EAAAlB,UAAAsS,IAAA,aACApR,EAAA,QAAAwM,IAAA,mBACA,EAEAqjQ,EAAAlpQ,UAAAqpQ,uBAAA,SAAA9wP,GACAtY,KAAAg9P,OAAAqM,QAAA/wP,EAAAnN,QAEA,IAAApK,EAAAf,KACAspQ,EAAAlwQ,IAAAkf,EAAA+rB,QAAA/rB,EAAAixP,YAAA,IACA,GAAAD,EAAA7mO,SAAA,aAAA6mO,EAAAzjQ,SAAA48B,SAAA,aACA,IAAA/8B,EAAA4jQ,EAAArhO,KAAA,WACAuhO,EAAAF,EAAArhO,KAAA,mBAIA,OAHAjoC,KAAAg9P,OAAAyM,YAAArwQ,EAAAkf,EAAA+rB,QAAA/rB,EAAAixP,YAAA,GAGA7jQ,GACA,iBACA1F,KAAAg9P,OAAA0M,YAAAjqP,WAAAzf,KAAAg9P,OAAAyM,YAAAxtO,MAAAx1B,MACAzG,KAAAg9P,OAAA2M,aAAAlqP,WAAAzf,KAAAg9P,OAAAyM,YAAAxtO,MAAAt1B,OAEAvN,EAAAlB,UAAAwD,GAAA,sBAAA4c,GACAvX,EAAA6oQ,QAAAtxP,EACA,IACAlf,EAAAlB,UAAAwD,GAAA,sBAAA4c,GACAA,EAAAkiB,cAAAkL,UAAAptB,IAAAkiB,cAAAkL,QAAA,IACA3kC,EAAA6oQ,QAAAtxP,EACA,IAEA,MACA,mBAMA,GALAlf,EAAA,QAAAwM,IAAA,SAAAxM,EAAA4G,KAAAg9P,OAAAyM,aAAA7jQ,IAAA,WAEA5F,KAAAg9P,OAAA0M,YAAAjqP,WAAArmB,EAAA4G,KAAAg9P,OAAAyM,aAAA5jQ,SAAA,GAAAo2B,MAAAx1B,MACAzG,KAAAg9P,OAAA2M,aAAAlqP,WAAArmB,EAAA4G,KAAAg9P,OAAAyM,aAAA5jQ,SAAA,GAAAo2B,MAAAt1B,OAEA,QAAA6iQ,EAAA,CACApwQ,EAAAlB,UAAAwD,GAAA,sBAAA4c,GACAvX,EAAA8oQ,cAAAvxP,EACA,IACAlf,EAAAlB,UAAAwD,GAAA,sBAAA4c,GACAA,EAAAkiB,cAAAkL,UAAAptB,IAAAkiB,cAAAkL,QAAA,IACA3kC,EAAA8oQ,cAAAvxP,EACA,IACA,KACA,CACA,SAAAkxP,IACApwQ,EAAAlB,UAAAwD,GAAA,sBAAA4c,GACAvX,EAAA+oQ,eAAAxxP,EACA,IACAlf,EAAAlB,UAAAwD,GAAA,sBAAA4c,GACAA,EAAAkiB,cAAAkL,UAAAptB,IAAAkiB,cAAAkL,QAAA,IACA3kC,EAAA+oQ,eAAAxxP,EACA,KA3CA,CA+CA,EAEA2wP,EAAAlpQ,UAAAgqQ,aAAA,SAAAC,EAAAC,GAIA,IAHA,IAAAC,EAAAlqQ,KAAAkpQ,UAAAiB,SACAC,EAAApqQ,KAAAkpQ,UAAAmB,UAAAL,GAAAM,UAAAL,GAAAj6M,MAEAv3D,EAAA,EAAAA,EAAAuH,KAAAkpQ,UAAAmB,UAAAL,GAAAM,UAAA5xQ,OAAAD,IACA,GAAAA,GAAAwxQ,EAAA,CACA,IAAAzhN,EAAAxoD,KAAAkpQ,UAAAmB,UAAAL,GAAAM,UAAA7xQ,GAAA8xQ,IAEA/hN,EAAA0hN,GAAA1hN,GAAA4hN,EAAA,GAAApqQ,KAAAkpQ,UAAA19K,WACA0+K,EAAA1hN,EAEA,CAIA,OADA0hN,GAAAlqQ,KAAAkpQ,UAAAiB,UACAnqQ,KAAAg9P,OAAA18E,SACA,EAEA2oF,EAAAlpQ,UAAAyqQ,cAAA,SAAAR,EAAAC,GAIA,IAHA,IAAAQ,EAAAzqQ,KAAAkpQ,UAAAwB,SACAC,EAAA3qQ,KAAAkpQ,UAAAmB,UAAAL,GAAAM,UAAAL,GAAAM,IAEA9xQ,EAAA,EAAAA,EAAAuH,KAAAkpQ,UAAAmB,UAAAL,GAAAM,UAAA5xQ,OAAAD,IACA,GAAAA,GAAAwxQ,EAAA,CACA,IAAA/oP,EAAAlhB,KAAAkpQ,UAAAmB,UAAAL,GAAAM,UAAA7xQ,GAAAu3D,MAEA9uC,EAAAupP,GAAAvpP,GAAAypP,EAAA,GAAA3qQ,KAAAkpQ,UAAA19K,WACAi/K,EAAAvpP,EAEA,CAIA,OADAupP,EAAAzqQ,KAAAkpQ,UAAAwB,SAAAD,GACAzqQ,KAAAg9P,OAAA18E,SACA,EAEA2oF,EAAAlpQ,UAAA8pQ,cAAA,SAAAvxP,GACA,IAAAsyP,EAAAxxQ,EAAA4G,KAAAsjC,WAAAhiC,KAAA,eAAA0L,QACAg9P,EAAA5wQ,EAAA4G,KAAAg9P,OAAAyM,aAAA5jQ,2BAAAoiC,KAAA,QACAgiO,EAAA7wQ,EAAA4G,KAAAg9P,OAAAyM,aAAA5jQ,SAAAoiC,KAAA,QAEA4iO,GAAAvyP,EAAAnN,QAAAnL,KAAAg9P,OAAAqM,SAAAuB,EAAA,IACAC,EAAA91P,KAAA81C,MAAAggN,GAAA7qQ,KAAAg9P,OAAA18E,UAAAtgL,KAAAkpQ,UAAA19K,YAAAxrF,KAAAg9P,OAAA18E,UAAAtgL,KAAAkpQ,UAAA19K,UAEA,IAAA0+K,EAAAlqQ,KAAA+pQ,aAAAC,EAAAC,GACAa,EAAA,IAAArrP,WAAArmB,EAAA4G,KAAAg9P,OAAAyM,aAAA5jQ,SAAA,GAAAo2B,MAAAt1B,OAAA3G,KAAAg9P,OAAA18E,UAAAtgL,KAAAkpQ,UAAA19K,SAEA0+K,EAAA,IAAAA,EAAA,GACAY,EAAA,MAAAA,EAAA,KAEA,IAAA/iN,EAAA/nD,KAAAg9P,OAAA0M,YAAAmB,EAEA9iN,EAAAmiN,IAAAniN,EAAAmiN,GACAniN,EAAA+iN,IAAA/iN,EAAA+iN,GAEA1xQ,EAAA4G,KAAAg9P,OAAAyM,aAAA5jQ,SAAA,GAAAo2B,MAAAx1B,KAAAshD,EAAA,IAEA/nD,KAAA+qQ,YAAA3xQ,EAAA4G,KAAAg9P,OAAAyM,aAAA5jQ,SACA,EAEAojQ,EAAAlpQ,UAAA+pQ,eAAA,SAAAxxP,GACA,IAAAsyP,EAAAxxQ,EAAA4G,KAAAsjC,WAAAhiC,KAAA,eAAA0L,QACAg9P,EAAA5wQ,EAAA4G,KAAAg9P,OAAAyM,aAAA5jQ,2BAAAoiC,KAAA,QACAgiO,EAAA7wQ,EAAA4G,KAAAg9P,OAAAyM,aAAA5jQ,SAAAoiC,KAAA,QAEA4iO,GAAAvyP,EAAAnN,QAAAnL,KAAAg9P,OAAAqM,SAAAuB,EAAA,IACAC,EAAA91P,KAAA81C,MAAAggN,GAAA7qQ,KAAAg9P,OAAA18E,UAAAtgL,KAAAkpQ,UAAA19K,YAAAxrF,KAAAg9P,OAAA18E,UAAAtgL,KAAAkpQ,UAAA19K,UAEA,IAAAi/K,EAAAzqQ,KAAAwqQ,cAAAR,EAAAC,GACAe,EAAA,IAAAvrP,WAAArmB,EAAA4G,KAAAg9P,OAAAyM,aAAA5jQ,SAAA,GAAAo2B,MAAAx1B,MAAAzG,KAAAg9P,OAAA18E,UAAAtgL,KAAAkpQ,UAAA19K,SAEAi/K,EAAA,IAAAA,EAAA,GACAO,EAAA,MAAAA,EAAA,KAEA,IAAAC,EAAAjrQ,KAAAg9P,OAAA2M,aAAAkB,EAEAI,EAAAR,IAAAQ,EAAAR,GACAQ,EAAAD,IAAAC,EAAAD,GAEA5xQ,EAAA4G,KAAAg9P,OAAAyM,aAAA5jQ,SAAA,GAAAo2B,MAAAt1B,MAAAskQ,EAAA,IAEAjrQ,KAAA+qQ,YAAA3xQ,EAAA4G,KAAAg9P,OAAAyM,aAAA5jQ,SACA,EAEAojQ,EAAAlpQ,UAAA6pQ,QAAA,SAAAtxP,GACA,IAAAsyP,EAAAxxQ,EAAA4G,KAAAsjC,WAAAhiC,KAAA,eAAA0L,QACAg9P,EAAA5wQ,EAAA4G,KAAAg9P,OAAAyM,aAAA5jQ,kBAAAoiC,KAAA,QACAgiO,EAAA7wQ,EAAA4G,KAAAg9P,OAAAyM,aAAAxhO,KAAA,QAEA4iO,GAAAvyP,EAAAnN,QAAAnL,KAAAg9P,OAAAqM,SAAAuB,EAAA,IACAC,EAAA91P,KAAA81C,MAAAggN,GAAA7qQ,KAAAg9P,OAAA18E,UAAAtgL,KAAAkpQ,UAAA19K,YAAAxrF,KAAAg9P,OAAA18E,UAAAtgL,KAAAkpQ,UAAA19K,UAEA,IAAAi/K,EAAAzqQ,KAAAwqQ,cAAAR,EAAAC,GACAC,EAAAlqQ,KAAA+pQ,aAAAC,EAAAC,GAEAC,EAAA,IAAAA,EAAA,GACAO,EAAA,IAAAA,EAAA,GAEA,IAAAS,EAAA9xQ,EAAA4G,KAAAg9P,OAAAyM,aAEAzpQ,KAAA6qD,MAAA7qD,KAAAg9P,OAAA0M,YAAAmB,GAAA7qQ,KAAA6qD,MAAAq/M,IACAlqQ,KAAA6qD,MAAA7qD,KAAAg9P,OAAA2M,aAAAkB,GAAA7qQ,KAAA6qD,MAAA4/M,KAGAzqQ,KAAAg9P,OAAAyM,YAAAyB,EAAA5pQ,KAAA,8BACAtB,KAAA8pQ,eAAAxxP,GAEAtY,KAAAg9P,OAAAyM,YAAAyB,EAAA5pQ,KAAA,6BACAtB,KAAA6pQ,cAAAvxP,GAEAtY,KAAAg9P,OAAAyM,YAAAyB,EAAA,GACA,EAEAjC,EAAAlpQ,UAAA8qD,MAAA,SAAAsgN,GACA,IAAAP,EAAAxxQ,EAAA4G,KAAAsjC,WAAAhiC,KAAA,eAAA0L,QACA5I,EAAApE,KAAAg9P,OAAA18E,UAAAtgL,KAAAkpQ,UAAA19K,SAGA1lE,EADA/Q,KAAA81C,MAAAsgN,EAAA,IAAAP,GACAA,EAAA,IAGA,OAFA9kP,EAAA/Q,KAAA81C,MAAA/kC,EAAA1hB,IAGA,EAEA6kQ,EAAAlpQ,UAAAgrQ,YAAA,SAAAK,GACA,IAAAlqP,GAAAzB,WAAA2rP,EAAA,GAAAnvO,MAAAx1B,MAAAzG,KAAAg9P,OAAA18E,UAAAtgL,KAAAkpQ,UAAAiB,UAAA70P,QAAAtV,KAAAkpQ,UAAApkQ,kBACA0jD,IAAA,IAAA/oC,WAAA2rP,EAAA,GAAAnvO,MAAAt1B,QAAA3G,KAAAg9P,OAAA18E,UAAAtgL,KAAAkpQ,UAAAiB,UAAA70P,QAAAtV,KAAAkpQ,UAAApkQ,kBAEAoc,EAAAnM,KAAA81C,MAAA3pC,EAAAlhB,KAAAkpQ,UAAA19K,UAAAxrF,KAAAkpQ,UAAA19K,SACAhjC,EAAAzzC,KAAA81C,MAAArC,EAAAxoD,KAAAkpQ,UAAA19K,UAAAxrF,KAAAkpQ,UAAA19K,SAEA,IAAAw+K,EAAA5wQ,EAAAgyQ,GAAAvlQ,kBAAAoiC,KAAA,QACAgiO,EAAA7wQ,EAAAgyQ,GAAAnjO,KAAA,QAEAjoC,KAAAkpQ,UAAAmB,UAAAL,GAAAM,UAAAL,GAAAj6M,MAAAhwD,KAAAg9P,OAAAqO,cAAArrQ,KAAAsrQ,kBAAApqP,KACAlhB,KAAAkpQ,UAAAmB,UAAAL,GAAAM,UAAAL,GAAAM,IAAAvqQ,KAAAg9P,OAAAqO,cAAArrQ,KAAAsrQ,kBAAA9iN,KAEA,IAEA+iN,EAFA3tH,EAAA59I,KAAAkpQ,UAAAmB,UAAAL,GAAAwB,QAIAD,EADA,GAAAvrQ,KAAAkpQ,UAAAuC,WACAzC,EAAAP,UAAA7qH,GAEAA,EAGAxkJ,EAAAgyQ,GAAAvlQ,kBAAAvE,KAAA,cAAAu5B,KAAA0wO,EACA,EAEAtC,EAAAlpQ,UAAA2rQ,YAAA,WACAtyQ,EAAA4G,KAAAsjC,WAAAZ,WAAA3pC,QACA,EAEAkwQ,EAAAlpQ,UAAA4rQ,YAAA,WACA,IAAAC,EAAA,mEACA5rQ,KAAAkpQ,UAAA2C,iBADA,0FAEA7rQ,KAAAkpQ,UAAA4C,WAFA,6TAOA1yQ,EAAA4G,KAAAsjC,WAAAuI,OAAA+/N,GAEA,QAAAnzQ,EAAA,EAAAA,EAAAuH,KAAAkpQ,UAAAmB,UAAA3xQ,OAAAD,IACAuH,KAAA+rQ,OAAA/rQ,KAAAkpQ,UAAAmB,UAAA5xQ,MAGA,GAAAuH,KAAAkpQ,UAAA8C,UACAhsQ,KAAAisQ,YAGA,IAAAlrQ,EAAAf,KACA5G,EAAAlB,UAAAwD,GAAA,sBACAqF,EAAAooQ,sBACA,IACA/vQ,EAAAlB,UAAAwD,GAAA,uBACAqF,EAAAooQ,sBACA,GACA,EAEAF,EAAAlpQ,UAAAgsQ,OAAA,SAAAG,EAAAC,GAEA,IAAAZ,EAEAA,EADAvrQ,KAAAkpQ,UAAAuC,WACAzC,EAAAP,UAAAyD,EAAAV,QAAAl2P,QAAAtV,KAAAkpQ,UAAApkQ,mBAEAonQ,EAAAV,QAAAl2P,QAAAtV,KAAAkpQ,UAAApkQ,kBAEA,IAAAsnQ,EAAA,GACA,MAAAF,EAAAG,oBACAD,IAAA,UAAAF,EAAAG,kBAAA,MAGA,IAAAC,EAAA,0BAAAH,EAAA,2EACAC,EAAA,aAAAF,EAAAl2O,GAAA,YAAAk2O,EAAAK,gBAAA,KAAAL,EAAAM,aADA,0CAEAN,EAAAl2O,GAAA,KAEA,SAAAk2O,EAAAO,gBAAA,MAAAP,EAAAQ,cAAA,CACA,IAAAC,GAAAT,EAAAO,eAAAzsQ,KAAAkpQ,UAAAiB,UAAAnqQ,KAAAg9P,OAAA18E,UACAssF,EAAA,KAAAV,EAAAQ,cAAA1sQ,KAAAkpQ,UAAAiB,UAAAnqQ,KAAAg9P,OAAA18E,UACAgsF,GAAA,iEAAAK,EAAAl8P,WAAA,aACA67P,GAAA,kEAAAM,EAAAn8P,WAAA,YACA,CAEA,SAAAy7P,EAAAW,gBAAA,MAAAX,EAAAY,cAAA,CACA,IAAAC,GAAAb,EAAAW,eAAA7sQ,KAAAkpQ,UAAAiB,UAAAnqQ,KAAAg9P,OAAA18E,UACA0sF,EAAA,KAAAd,EAAAY,cAAA9sQ,KAAAkpQ,UAAAiB,UAAAnqQ,KAAAg9P,OAAA18E,UACAgsF,GAAA,iEAAAS,EAAAt8P,WAAA,aACA67P,GAAA,kEAAAU,EAAAv8P,WAAA,YACA,CAEA,QAAAhY,EAAA,EAAAA,EAAAuH,KAAAg9P,OAAAiQ,WAAAx0Q,IAAA,CACA,IAAAy0Q,EAAAltQ,KAAAg9P,OAAAmQ,YAAA10Q,EACA20Q,EAAAptQ,KAAAg9P,OAAAmQ,aAAA10Q,EAAA,GACA40Q,EAAAH,EAAAltQ,KAAAg9P,OAAA18E,UACAgtF,EAAA,KAAAJ,GAAAhB,EAAAl8M,MAAAhwD,KAAAkpQ,UAAAiB,WAAAnqQ,KAAAg9P,OAAA18E,UACAitF,GAAAL,GAAAhB,EAAA3B,IAAAvqQ,KAAAkpQ,UAAAiB,WAAAnqQ,KAAAg9P,OAAA18E,UACAktF,EAAA,IAAAJ,EAAAptQ,KAAAg9P,OAAA18E,UAEAgsF,GAAA,2DAAAe,EAAA58P,WAAA,WAAA68P,EAAA78P,WAAA,aACA67P,GAAA,yDAAAiB,EAAA98P,WAAA,WAAA+8P,EAAA/8P,WAAA,YACA,CAEA,IAAAhY,EAAA,EAAAA,EAAAyzQ,EAAA5B,UAAA5xQ,OAAAD,IACA,SAAAyzQ,EAAA5B,UAAA7xQ,GAAAu3D,MAAA,CAEA,IAAA9uC,EAAAlhB,KAAAytQ,eAAAvB,EAAA5B,UAAA7xQ,GAAAu3D,OACAxH,EAAAxoD,KAAAytQ,eAAAvB,EAAA5B,UAAA7xQ,GAAA8xQ,KACA,GAAArpP,IAAAsnC,EAAA,SAEA,IAAAklN,EAAAxsP,EAAAlhB,KAAAg9P,OAAA18E,UACAqtF,GAAA3tQ,KAAAg9P,OAAA9hL,MAAA1yB,GAAAxoD,KAAAg9P,OAAA18E,UACA1lL,EAAAsxQ,EAAA5B,UAAA7xQ,GAAAu9B,GACA43O,EAAA,GAEA1B,EAAA5B,UAAA7xQ,GAAAo1Q,eACAD,EAAA,oBAGA1B,EAAA5B,UAAA7xQ,GAAAq1Q,YACAF,EAAA,eAGA1B,EAAA5B,UAAA7xQ,GAAAs1Q,YACAH,EAAA,eAGAhzQ,GAAAoF,KAAAqpC,MAAA2kO,gBACAJ,GAAA,aAGAxB,EAAA,GACA,MAAAF,EAAA5B,UAAA7xQ,GAAAw1Q,kBACA7B,IAAA,eAAAF,EAAA5B,UAAA7xQ,GAAAw1Q,gBAAA,MAKA,MAAA/B,EAAA5B,UAAA7xQ,GAAAy1Q,mBACA9B,IAAA,UAAAF,EAAA5B,UAAA7xQ,GAAAy1Q,iBAAA,MAGA5B,GAAA,0EAAAsB,EAAA,WACAn1Q,EADA,aAEAmC,EAFA,YAGAsxQ,EAAAV,QAHA,iBAIAkC,EAAAj9P,WAAA,MACA27P,EACA,UAAAuB,EAAAl9P,WANA,cAOAy7P,EAAA5B,UAAA7xQ,GAAAs6C,QAPA,UAQAm5N,EAAA5B,UAAA7xQ,GAAAs6C,QARA,4FASAm5N,EAAAl2O,GAAA,WACAk2O,EAAA5B,UAAA7xQ,GAAAsd,KACA,2FAAAm2P,EAAAl2O,GAXA,gBAaA,CAKA,IAAAm4O,EAAA/0Q,EAFAkzQ,GAAA,gCAAAf,EAAA,gBAKA,GAFAnyQ,EAAA4G,KAAAsjC,WAAAhiC,KAAA,YAAAuqC,OAAAsiO,IAEA,IAAAnuQ,KAAAkpQ,UAAAjnN,SAAA,CACA,IAAAlhD,EAAAf,KACAmuQ,EAAAzyQ,GAAA,sBAAA4c,GACAvX,EAAAqoQ,uBAAA9wP,EACA,IACA61P,EAAAzyQ,GAAA,uBAAA4c,GACAA,EAAAkiB,cAAAkL,UAAAptB,IAAAkiB,cAAAkL,QAAA,IACA3kC,EAAAqoQ,uBAAA9wP,EACA,IAEA61P,EAAA7sQ,KAAA,yBAAA5F,GAAA,oBACAqF,EAAAqtQ,iBAAAh1Q,EAAA4G,MAAAioC,KAAA,UACA,IACAkmO,EAAA7sQ,KAAA,yBAAA5F,GAAA,uBACAqF,EAAAqtQ,iBAAAh1Q,EAAA4G,MAAAioC,KAAA,UACA,IAEAkmO,EAAA7sQ,KAAA,aAAA5F,GAAA,oBACAqF,EAAAstQ,qBAAAj1Q,EAAA4G,MAAAioC,KAAA,UACA,GAEA,CACA,EAEAghO,EAAAlpQ,UAAA0tQ,eAAA,SAAAa,GACA,IACA7iN,GADAzrD,KAAAg9P,OAAA,cAAAh9P,KAAAuuQ,kBAAAD,MACAtuQ,KAAAkpQ,UAAAiB,SACA,OAAA1+M,EAAA,IACAA,EAAAzrD,KAAAg9P,OAAA9hL,MAAAl7E,KAAAg9P,OAAA9hL,MACAzvB,CACA,EAEAw9M,EAAAlpQ,UAAAwuQ,kBAAA,SAAAvkK,GACA,WAAAjyG,KAAAiyG,GAAAhqG,KAAAg9P,OAAA2L,UAAA,GACA,EAEAM,EAAAlpQ,UAAAurQ,kBAAA,SAAAkD,GACA,IAAAxkK,EAAA,IAAAjyG,KAAAiI,KAAAg9P,OAAA2L,UAEA,OADA3+J,EAAAmrD,WAAAnrD,EAAAo0G,aAAAowD,GACAxkK,CACA,EAEAi/J,EAAAlpQ,UAAAksQ,UAAA,WACA,QAAAxzQ,EAAA,EAAAA,GAAAuH,KAAAg9P,OAAA9hL,MAAAl7E,KAAAkpQ,UAAAuF,aAAAh2Q,IAAA,CACA,IAGAi2Q,EAAA,sCAHAjoQ,EAAAzG,KAAA6qD,MAAA7qD,KAAAg9P,OAAA18E,UAAAtgL,KAAAkpQ,UAAAuF,aAAAh2Q,IAGA,aAFAkO,EAAA3G,KAAA6qD,MAAA7qD,KAAAg9P,OAAA18E,UAAAtgL,KAAAkpQ,UAAAuF,cAAAzuQ,KAAAg9P,OAAA9hL,MAAAl7E,KAAAkpQ,UAAAuF,aAAAh2Q,EAAA,KAEA,MACAA,EAAAuH,KAAAkpQ,UAAAyF,mBAAA,IACAD,IAAA7uP,QAAA,yCAEA6uP,GAAA,SACAt1Q,EAAA4G,KAAAsjC,WAAAhiC,KAAA,2BAAAuqC,OAAA6iO,GAGA,IAAAE,EAAA,GACA,GAAA5uQ,KAAAkpQ,UAAA2F,gBAAA7uQ,KAAAkpQ,UAAA4F,kBACA,MAAA9uQ,KAAAkpQ,UAAAuC,YACA,GAAAhzQ,EAAAuH,KAAAkpQ,UAAA6F,mBAAA,GAEA,IADA,IAAAC,EAAAhvQ,KAAAkpQ,UAAAiB,SAAA,EAAAnqQ,KAAAkpQ,UAAAuF,aACAO,GAAAhvQ,KAAAg9P,OAAAmQ,aACA6B,GAAAhvQ,KAAAg9P,OAAAmQ,YAEAyB,GAAA,2CAAA5F,EAAAP,UAAAuG,GAAA,SACA,OAGAJ,GAAA,4CAAA5uQ,KAAAkpQ,UAAAiB,SAAA,EAAAnqQ,KAAAkpQ,UAAAuF,cAAA,eAGA,GAAAzuQ,KAAAkpQ,UAAAuC,aACAzrQ,KAAAkpQ,UAAAiB,SAAA,EAAAnqQ,KAAAkpQ,UAAAuF,cAAA,UACAG,GAAA,mDAIA,KAAAA,GAAA5uQ,KAAAkpQ,UAAA2F,gBAAAz1Q,EAAA4G,KAAAsjC,WAAAhiC,KAAA,4BAAAuqC,OAAA,6CAAAplC,EAAA,YAAAE,EAAA,MAAAioQ,EAAA,UACA,KAAAA,GAAA5uQ,KAAAkpQ,UAAA4F,mBAAA11Q,EAAA4G,KAAAsjC,WAAAhiC,KAAA,4BAAAuqC,OAAA,6CAAAplC,EAAA,YAAAE,EAAA,MAAAioQ,EAAA/uP,QAAA,2CACA,CAOA,GALAzmB,EAAA4G,KAAAsjC,WAAAhiC,KAAA,wBAAAc,MAAA,WACA,IAAAijD,EAAAjsD,EAAA4G,MACAqlD,EAAAz/C,IAAA,OAAAy/C,EAAAr4C,QAAA,UACA,IAEA,GAAAhN,KAAAkpQ,UAAAuC,WAAA,CACA,IAAAhzQ,EAAA,EAAAA,EAAAuH,KAAAg9P,OAAAiQ,WAAAx0Q,IAAA,CAGAi2Q,EAAA,oDAFAjoQ,EAAAzG,KAAA6qD,MAAA7qD,KAAAg9P,OAAA18E,UAAAtgL,KAAAg9P,OAAAmQ,YAAA10Q,IAEA,aADAkO,EAAA3G,KAAA6qD,MAAA7qD,KAAAg9P,OAAA18E,UAAAtgL,KAAAg9P,OAAAmQ,aAAAntQ,KAAAg9P,OAAA9hL,MAAAl7E,KAAAg9P,OAAAmQ,YAAA10Q,EAAA,KACA,aACAW,EAAA4G,KAAAsjC,WAAAhiC,KAAA,2BAAAuqC,OAAA6iO,GACAE,EAAA,6CAAAnoQ,EAAA,YAAAE,EAAA,mDAAA3G,KAAAivQ,aAAAx2Q,GAAA,gBACAuH,KAAAkpQ,UAAA2F,gBAAAz1Q,EAAA4G,KAAAsjC,WAAAhiC,KAAA,4BAAAuqC,OAAA+iO,GACA5uQ,KAAAkpQ,UAAA4F,mBAAA11Q,EAAA4G,KAAAsjC,WAAAhiC,KAAA,4BAAAuqC,OAAA+iO,EAAA/uP,QAAA,kCACA,CAEA6uP,EAAA,oDADAjoQ,EAAAzG,KAAA6qD,MAAA7qD,KAAAg9P,OAAA18E,UAAAtgL,KAAAg9P,OAAAmQ,YAAA10Q,IACA,wBACAW,EAAA4G,KAAAsjC,WAAAhiC,KAAA,2BAAAuqC,OAAA6iO,EACA,CAEA,QAAAv6O,EAAA,EAAAA,EAAAn0B,KAAAkpQ,UAAAgG,UAAAx2Q,OAAAy7B,IAAA,CACA,IACA1tB,EACAE,EAFAlO,EAAAuH,KAAAkpQ,UAAAgG,UAAA/6O,GAAA/hB,MAAApS,KAAAkpQ,UAAAuF,aAGAC,EAAA,qDAFAjoQ,EAAAzG,KAAA6qD,MAAA7qD,KAAAg9P,OAAA18E,UAAAtgL,KAAAkpQ,UAAAuF,aAAAh2Q,IAEA,aADAkO,EAAA3G,KAAA6qD,MAAA7qD,KAAAg9P,OAAA18E,UAAAtgL,KAAAkpQ,UAAAuF,cAAAzuQ,KAAAg9P,OAAA9hL,MAAAl7E,KAAAkpQ,UAAAuF,aAAAh2Q,EAAA,KACA,aACAW,EAAA4G,KAAAsjC,WAAAhiC,KAAA,2BAAAuqC,OAAA6iO,GACAE,EAAA,6CAAAnoQ,EAAA,YAAAE,EAAA,sDAAAqiQ,EAAAP,UAAAzoQ,KAAAkpQ,UAAAgG,UAAA/6O,GAAA/hB,OAAA,gBACApS,KAAAkpQ,UAAA2F,gBAAAz1Q,EAAA4G,KAAAsjC,WAAAhiC,KAAA,4BAAAuqC,OAAA+iO,GACA5uQ,KAAAkpQ,UAAA4F,mBAAA11Q,EAAA4G,KAAAsjC,WAAAhiC,KAAA,4BAAAuqC,OAAA+iO,EAAA/uP,QAAA,kCACA,CACA,EAEAopP,EAAAlpQ,UAAAkvQ,aAAA,SAAA5yN,GACA,IAAAr8C,KAAAg9P,OAAAqO,cAAA,SACA,GAAAphK,MAAAjqG,KAAAg9P,OAAA2L,UAAA,SACA,IAAA3+J,EAAA,IAAAjyG,KAAAiI,KAAAg9P,OAAA2L,UAEA,OADA3+J,EAAAhyG,QAAAgI,KAAAg9P,OAAA2L,SAAA1wQ,UAAAokD,GACAr8C,KAAAs4C,UAAAo6G,WAAA1oD,EACA,EAEAi/J,EAAAlpQ,UAAAquQ,iBAAA,SAAAxzQ,GAEA,EAEAquQ,EAAAlpQ,UAAAsuQ,qBAAA,SAAAzzQ,GAEA,EAEAquQ,EAAAlpQ,UAAAovQ,kBAAA,WACA,QAAA12Q,EAAA,EAAAA,EAAAuH,KAAAkpQ,UAAAmB,UAAA3xQ,OAAAD,IACA,QAAA07B,EAAA,EAAAA,EAAAn0B,KAAAkpQ,UAAAmB,UAAA5xQ,GAAA6xQ,UAAA5xQ,OAAAy7B,IAAA,CAEA,IAAAi7O,EAAApvQ,KAAAkpQ,UAAAmB,UAAA5xQ,GAAA6xQ,UAAAn2O,GAAA67B,MACAq/M,EAAArvQ,KAAAkpQ,UAAAmB,UAAA5xQ,GAAA6xQ,UAAAn2O,GAAAm7O,WACAC,EAAAvvQ,KAAAkpQ,UAAAmB,UAAA5xQ,GAAA6xQ,UAAAn2O,GAAAo2O,IACAiF,EAAAxvQ,KAAAkpQ,UAAAmB,UAAA5xQ,GAAA6xQ,UAAAn2O,GAAAs7O,SAOA,GALA,OAAAL,gBAAAr3Q,OAAAq3Q,IAAAxxD,eACA,OAAAyxD,gBAAAt3Q,OAAAs3Q,IAAAzxD,eACA,OAAA2xD,gBAAAx3Q,OAAAw3Q,IAAA3xD,eACA,OAAA4xD,gBAAAz3Q,OAAAy3Q,IAAA5xD,eAEAwxD,IAAAC,GAAAE,IAAAC,EAAA,QACA,CAEA,QACA,EAEAvG,EAAAlpQ,UAAA2vQ,cAAA,WACA,IAAAp0Q,EAAA,GACA,GAAA8K,MAAApG,KAAAkpQ,WAAA9iQ,MAAApG,KAAAkpQ,UAAAmB,UAAA,OAAA/uQ,EAEA,QAAA7C,EAAA,EAAAA,EAAAuH,KAAAkpQ,UAAAmB,UAAA3xQ,OAAAD,IACA,QAAA07B,EAAA,EAAAA,EAAAn0B,KAAAkpQ,UAAAmB,UAAA5xQ,GAAA6xQ,UAAA5xQ,OAAAy7B,IACA,GAAAn0B,KAAAkpQ,UAAAmB,UAAA5xQ,GAAA6xQ,UAAAn2O,GAAA67B,OAAAhwD,KAAAkpQ,UAAAmB,UAAA5xQ,GAAA6xQ,UAAAn2O,GAAAm7O,YAAAtvQ,KAAAkpQ,UAAAmB,UAAA5xQ,GAAA6xQ,UAAAn2O,GAAAo2O,KAAAvqQ,KAAAkpQ,UAAAmB,UAAA5xQ,GAAA6xQ,UAAAn2O,GAAAs7O,SAAA,CACA,IAAAE,EAAA,CACA35O,GAAAh2B,KAAAkpQ,UAAAmB,UAAA5xQ,GAAA6xQ,UAAAn2O,GAAA6B,GACAg6B,MAAAhwD,KAAAg9P,OAAAqO,cAAArrQ,KAAAs4C,UAAAkmK,kBAAAx+M,KAAAkpQ,UAAAmB,UAAA5xQ,GAAA6xQ,UAAAn2O,GAAA67B,OAAAhwD,KAAAkpQ,UAAAmB,UAAA5xQ,GAAA6xQ,UAAAn2O,GAAA67B,MACAu6M,IAAAvqQ,KAAAg9P,OAAAqO,cAAArrQ,KAAAs4C,UAAAkmK,kBAAAx+M,KAAAkpQ,UAAAmB,UAAA5xQ,GAAA6xQ,UAAAn2O,GAAAo2O,KAAAvqQ,KAAAkpQ,UAAAmB,UAAA5xQ,GAAA6xQ,UAAAn2O,GAAAo2O,KAGAvqQ,KAAAkpQ,UAAAmB,UAAA5xQ,GAAA6xQ,UAAAn2O,GAAAm7O,WAAAtvQ,KAAAkpQ,UAAAmB,UAAA5xQ,GAAA6xQ,UAAAn2O,GAAA67B,MACAhwD,KAAAkpQ,UAAAmB,UAAA5xQ,GAAA6xQ,UAAAn2O,GAAAs7O,SAAAzvQ,KAAAkpQ,UAAAmB,UAAA5xQ,GAAA6xQ,UAAAn2O,GAAAo2O,IAEAjvQ,EAAAuF,KAAA8uQ,EACA,CAGA,OAAAr0Q,CACA,EAEA2tQ,EAAAlpQ,UAAA+sD,KAAA,SAAAzjB,EAAAumO,GACA5vQ,KAAA0rQ,cAEA1rQ,KAAAg9P,OAAA9hL,MAAA,EACAl7E,KAAAg9P,OAAAmQ,YAAA,EACAntQ,KAAAg9P,OAAAiQ,WAAA,EACAjtQ,KAAAg9P,OAAA18E,UAAA,EACAtgL,KAAAg9P,OAAAqM,QAAA,KACArpQ,KAAAg9P,OAAAyM,YAAA,KACAzpQ,KAAAg9P,OAAA0M,YAAA,KACA1pQ,KAAAg9P,OAAA2M,aAAA,KAEA3pQ,KAAAkpQ,UAAA0G,EACA5vQ,KAAAqpC,QACArpC,KAAAg9P,OAAAqO,cAAArrQ,KAAAkpQ,UAAAmC,cAEArrQ,KAAAg9P,OAAAmQ,YAAAntQ,KAAAkpQ,UAAAwB,SAAA1qQ,KAAAkpQ,UAAAiB,SACAnqQ,KAAAg9P,OAAA2L,SAAA3oQ,KAAAs4C,UAAAglK,iBAAAt9M,KAAA84B,WAAAvsB,SAAAvM,KAAAkpQ,UAAA2G,oBACA7vQ,KAAAg9P,OAAA+L,OAAA/oQ,KAAAs4C,UAAAglK,iBAAAt9M,KAAA84B,WAAAvsB,SAAAvM,KAAAkpQ,UAAA4G,kBACA7lK,MAAAjqG,KAAAg9P,OAAA+L,UAAA/oQ,KAAAg9P,OAAA+L,OAAA/oQ,KAAAs4C,UAAAglK,iBAAAt9M,KAAA84B,WAAAvsB,SAAAvM,KAAAkpQ,UAAA2G,qBAEA7vQ,KAAAg9P,OAAAiQ,WAAAl4P,KAAA81C,OAAA7qD,KAAAg9P,OAAA+L,OAAA/oQ,KAAAg9P,OAAA2L,UAAA,SACA1+J,MAAAjqG,KAAAg9P,OAAAiQ,cAAAjtQ,KAAAg9P,OAAAiQ,WAAA,GACAjtQ,KAAAg9P,OAAA9hL,MAAAl7E,KAAAg9P,OAAAmQ,YAAAntQ,KAAAg9P,OAAAiQ,WAEAjtQ,KAAAg9P,OAAA18E,UAAA,IAAAtgL,KAAAg9P,OAAA9hL,MAEAl7E,KAAA2rQ,YAAAiE,EACA,EAEA3G,CAEA,IACAxxQ,OCjjBA,qCACA,SACA,UACA,wCACA,aACA,UACA,aACA,SAAA2B,EAAAkM,EAAA2jQ,EAAA9vQ,EAAAqc,EAAAipB,GACA,aAEA,SAAAsxO,EAAA5sP,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA+pB,GAEAnjB,KAAA1E,KAAAoI,SAAA8R,EAAA1D,+BAAA9R,KAAA1E,KAAAoI,UAEA1D,KAAAuF,SACAI,SAAA,mBAEA3F,KAAAgwQ,YAAA,GACAhwQ,KAAAiwQ,YAAA,GAEAxxO,EAAAK,aAAA9+B,KAAA,iBACA,CAmUA,OAjUAsF,EAAA3F,OAAAowQ,EAAAzqQ,GAEAyqQ,EAAAn2O,SAAA,gBAEAm2O,EAAAhwQ,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAAs4C,UAAAt4C,KAAA2C,OAAA+B,WAAA6zC,kBAEA,IAAAx3C,EAAAf,KACAA,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAo8C,YACA,SAAAw4N,GACA9pQ,MAAArF,EAAAzF,KAAA60Q,6BACApvQ,EAAA4B,OAAAm1C,gBAAA7M,SACAlqC,EAAAzF,KAAA60Q,6BACA,SAAA70Q,GACAyF,EAAAivQ,YAAA10Q,EAAA68B,QACAp3B,EAAA2yC,OAAAw8N,EACA,IACA,SAAA3lO,GACAA,EAAAoO,SAAA,IACA,IAGAvyC,MAAArF,EAAAzF,KAAA60Q,6BACApvQ,EAAA4B,OAAAm1C,gBAAA7M,SACAlqC,EAAAzF,KAAA80Q,6BACA,SAAA90Q,GACAyF,EAAAkvQ,YAAA30Q,EAAA68B,QACAp3B,EAAA2yC,OAAAw8N,EACA,IACA,SAAA3lO,GACAA,EAAAoO,SAAA,IACA,IAGA53C,EAAA2yC,OAAAw8N,EACA,IAEAlwQ,KAAA8pL,YACA9pL,KAAA2M,eACA,EAEAojQ,EAAAhwQ,UAAA+pL,UAAA,WACA,IAAAX,EAAA/vL,EAAA,WACAuM,SAAA,0BACAkB,SAAA7G,KAAAuF,UACAvF,KAAA4rQ,MAAA,IAAA3C,EAAA9/E,EAAA,GAAAnpL,KAAA2C,OACA,EAEAotQ,EAAAhwQ,UAAAswQ,mBAAA,WACA,IAAArwQ,KAAA4rQ,MAAA,SAEA,IAAA7qQ,EAAAf,KACA,OACAyqC,gBAAA,QACA6lO,QAAAvvQ,EAAAzF,KAAAV,GACAovC,MAAA7wC,EAAA+N,IAAAlH,KAAA4rQ,MAAA8D,iBAAA,SAAAa,GACA,IAAAj1Q,EAAA,GAIA,OAHAA,EAAAyF,EAAAzF,KAAAk1Q,gBAAAD,EAAAvgN,MACA10D,EAAAyF,EAAAzF,KAAAm1Q,eAAAF,EAAAhG,IAEA,CACAz6M,SAAAygN,EAAAv6O,GACA16B,OAEA,IAEA,EAEAy0Q,EAAAhwQ,UAAA2zC,OAAA,SAAAp4C,GACA,IAAAyF,EAAAf,KACA0mB,EAAAvtB,EAAA+I,MAAA5G,EAAA68B,SACAi4N,SAAA,SAAAj+O,GACA,OAAAA,EAAApR,EAAAzF,KAAAo1Q,qBACA,IACAxpQ,KAAA,SAAAozB,GACA,IAAAilJ,EAAAjlJ,EAAA,GACAq2O,EAAAx3Q,EAAAmI,KAAAP,EAAAivQ,aAAA,SAAAY,GAAA,OAAAA,EAAA7vQ,EAAAzF,KAAAu1Q,oBAAAtxF,EAAAx+K,EAAAzF,KAAAo1Q,qBAAA,IACAI,EAAA33Q,EAAAmI,KAAAP,EAAAkvQ,aAAA,SAAAW,GAAA,OAAAA,EAAA7vQ,EAAAzF,KAAAy1Q,oBAAAxxF,EAAAx+K,EAAAzF,KAAAo1Q,qBAAA,IACA,OACA16O,GAAAupJ,EAAAx+K,EAAAzF,KAAAylL,UACA/wH,MAAAuvH,EAAAx+K,EAAAzF,KAAA01Q,aACAzG,IAAAhrF,EAAAx+K,EAAAzF,KAAA21Q,aACA5E,kBAAA9sF,EAAAx+K,EAAAzF,KAAA41Q,6BACA3E,gBAAAhtF,EAAAx+K,EAAAzF,KAAA61Q,4BAAA5xF,EAAAx+K,EAAAzF,KAAAm5P,oBACA+X,aAAAjtF,EAAAx+K,EAAAzF,KAAAm5P,oBACA2c,WAAA7xF,EAAAx+K,EAAAzF,KAAAo1Q,sBACAW,oBAAA9xF,EAAAx+K,EAAAzF,KAAAi5P,YACAkY,eAAA,MAAAkE,EAAA,KAAAA,EAAA5vQ,EAAAzF,KAAAg2Q,sBACA5E,cAAA,MAAAiE,EAAA,KAAAA,EAAA5vQ,EAAAzF,KAAAi2Q,qBACA1E,eAAA,MAAAiE,EAAA,KAAAA,EAAA/vQ,EAAAzF,KAAAk2Q,sBACA1E,cAAA,MAAAgE,EAAA,KAAAA,EAAA/vQ,EAAAzF,KAAAm2Q,qBACAnH,UAAAnxQ,EAAA+N,IAAAozB,GAAA,SAAAnoB,GACA,OACA6jB,GAAA7jB,EAAApR,EAAAzF,KAAAo2Q,kBACA37P,KAAA5D,EAAApR,EAAAzF,KAAAi5P,YACA+a,WAAAvuQ,EAAAzF,KAAA+vQ,cAAAtqQ,EAAAu3C,UAAAglK,iBAAAnrM,EAAApR,EAAAzF,KAAAq2Q,sBAAAx/P,EAAApR,EAAAzF,KAAAq2Q,qBACAlC,SAAA1uQ,EAAAzF,KAAA+vQ,cAAAtqQ,EAAAu3C,UAAAglK,iBAAAnrM,EAAApR,EAAAzF,KAAAs2Q,qBAAAz/P,EAAApR,EAAAzF,KAAAs2Q,oBACA/D,aAAA17P,EAAApR,EAAAzF,KAAAuyQ,cACAE,UAAA57P,EAAApR,EAAAzF,KAAAyyQ,WACAD,UAAA37P,EAAApR,EAAAzF,KAAAwyQ,WACAG,gBAAA97P,EAAApR,EAAAzF,KAAA2yQ,iBACAC,iBAAA/7P,EAAApR,EAAAzF,KAAA4yQ,kBACAn7N,aAAA3sC,IAAArF,EAAAzF,KAAA+3C,QAAA,GAAAlhC,EAAApR,EAAAzF,KAAA+3C,SACA2c,MAAAjvD,EAAAzF,KAAA+vQ,cAAAtqQ,EAAAu3C,UAAAglK,iBAAAnrM,EAAApR,EAAAzF,KAAAq2Q,sBAAAx/P,EAAApR,EAAAzF,KAAAq2Q,qBACApH,IAAAxpQ,EAAAzF,KAAA+vQ,cAAAtqQ,EAAAu3C,UAAAglK,iBAAAnrM,EAAApR,EAAAzF,KAAAs2Q,qBAAAz/P,EAAApR,EAAAzF,KAAAs2Q,oBACAC,cAAA1/P,EAAApR,EAAAzF,KAAAw2Q,eAEA,IACAtG,MAAA,WACA,OAAAryQ,EAAA4J,OAAA/C,KAAAsqQ,WAAA,SAAA1sH,EAAAm0H,GACA,IAAAC,EAAAp0H,EAAAm0H,EAAAxH,IAAAwH,EAAA/hN,MACA,OAAAi6C,MAAA+nK,GAAAp0H,GAAA,IAAA7lJ,KAAAg6Q,EAAAxH,KAAA,IAAAxyQ,KAAAg6Q,EAAA/hN,QAAA,IACAgiN,CACA,KACA,EAEA,IACAxlQ,QAIA,GAFAxM,KAAAiyQ,aAAAvrP,EAEA,GAAAttB,EAAA4G,KAAA4rQ,MAAAtoO,WAAAhiC,KAAA,aAAA5I,OACA,IAAAw5Q,EAAA94Q,EAAA4G,KAAA4rQ,MAAAtoO,WAAAhiC,KAAA,gBAAAwM,UAGA9N,KAAAmyQ,oBAEA/rQ,MAAA8rQ,IACA94Q,EAAA4G,KAAA4rQ,MAAAtoO,WAAAhiC,KAAA,gBAAAwM,UAAAokQ,EAEA,EAEAnC,EAAAhwQ,UAAAoyQ,kBAAA,WAGA,GAFAnyQ,KAAA4rQ,MAAA9+M,KAAA9sD,UAAAoyQ,6BAEApyQ,KAAA1E,KAAAoI,UAAA1D,KAAA1E,KAAAoI,SAAAq+F,UAAA,IAAA/hG,KAAA1E,KAAAoI,SAAAq+F,QAAAp+F,QAAA,CACA,IAAA5C,EAAAf,KAEAA,KAAA4rQ,MAAAwC,iBAAA,SAAAxzQ,GACA,IAAAy3Q,EAAAl5Q,EAAA+I,MAAAnB,EAAAkxQ,cACA/qQ,KAAA,SAAA0Y,GACA,OAAAA,EAAA0qP,SACA,IACA9pQ,UACAc,MAAA,SAAAgxQ,GACA,OAAAA,EAAAt8O,KAAAp7B,CACA,IACA4R,QAEAzL,EAAA6qQ,MAAAuD,oBACApuQ,EAAAzF,KAAAoI,UAAA3C,EAAAzF,KAAAoI,SAAAw0O,UAAA,IAAAn3O,EAAAzF,KAAAoI,SAAAw0O,QAAAv0O,SACA5C,EAAA6B,aAAA7B,EAAAzF,KAAAoI,SAAAw0O,QAAAt0O,gBAAAyuQ,EAAAR,eAEA9wQ,EAAAzF,KAAAoI,UAAA3C,EAAAzF,KAAAoI,SAAAq+F,UAAA,IAAAhhG,EAAAzF,KAAAoI,SAAAq+F,QAAAp+F,SACA5C,EAAA6B,aAAA7B,EAAAzF,KAAAoI,SAAAq+F,QAAAn+F,gBAAAyuQ,EAAAR,eAGA9wQ,EAAAitQ,cAAApzQ,EACAxB,EAAA,kCAAAwP,YAAA,YACAxP,EAAA,iCAAAwB,EAAA,MAAA+K,SAAA,WACA,CACA,CACA,GAAA3F,KAAA1E,KAAAoI,UAAA1D,KAAA1E,KAAAoI,SAAA2qQ,uBAAA,IAAAruQ,KAAA1E,KAAAoI,SAAA2qQ,qBAAA1qQ,QAAA,CACA5C,EAAAf,KACAA,KAAA4rQ,MAAAyC,qBAAA,SAAAzzQ,GACA,IAAAy3Q,EAAAl5Q,EAAA+I,MAAAnB,EAAAkxQ,cACA3wQ,MAAA,SAAAgxQ,GAAA,OAAAA,EAAAt8O,IAAAp7B,CAAA,IACA4R,QAEAzL,EAAA6B,aAAA7B,EAAAzF,KAAAoI,SAAA2qQ,qBAAAzqQ,gBAAAyuQ,EAAAjB,WACA,CACA,CAEApxQ,KAAAuyQ,WACA,EAEAxC,EAAAhwQ,UAAAwyQ,UAAA,WACA,IACApkQ,EADA69L,EAAA9yL,SAAAlZ,KAAAuF,SAAAjE,KAAA,QAAAsE,IAAA,WAGA,GAAA5F,KAAA1E,KAAAk3Q,YAAA,EACArkQ,EAAAnO,KAAA1E,KAAAk3Q,aAAAxmE,EAAA,OACA,CACA,IAAAymE,EAAAzyQ,KAAAuF,SACAjE,KAAA,cACAsE,IAAA,aAEAuI,EAAAnO,KAAA1E,KAAAgJ,KAAAD,EAAA2nM,EAAA,EACA79L,GAAA,EAAA+K,SAAAu5P,GACAtkQ,GAAA,EAAA+K,SAAAu5P,GACAtkQ,EAAA4G,KAAAM,MAAAlH,EAAA,IAAA69L,EAAA,EACA,CAEAhsM,KAAAuF,SACAjE,KAAA,uBACAsE,IAAA,CACAuI,SAAA,MAEA,EAEA4hQ,EAAAhwQ,UAAA2yQ,gBAAA,SAAAphQ,GACA,uBAAAA,EACAA,EAEAmO,WAAAnO,EAEA,EAEAy+P,EAAAhwQ,UAAA4yQ,iBAAA,SAAArhQ,GACA,wBAAAA,EACAA,EAEA,QAAAA,CAEA,EAEAy+P,EAAAhwQ,UAAAqyQ,0BAAA,WACA,OACAnwN,SAAAjiD,KAAA1E,KAAA2mD,SACA2wN,SAAA5yQ,KAAA2yQ,iBAAA3yQ,KAAA1E,KAAAs3Q,UACAnH,WAAAzrQ,KAAA2yQ,iBAAA3yQ,KAAA1E,KAAAmwQ,YACAJ,cAAArrQ,KAAA1E,KAAA+vQ,cACAwE,kBAAA7vQ,KAAA1E,KAAAu0Q,kBACAC,gBAAA9vQ,KAAA1E,KAAAw0Q,gBACA3F,SAAAnqQ,KAAA0yQ,gBAAA1yQ,KAAA1E,KAAA6uQ,UACAO,SAAA1qQ,KAAA0yQ,gBAAA1yQ,KAAA1E,KAAAovQ,UACAl/K,SAAAxrF,KAAA0yQ,gBAAA1yQ,KAAA1E,KAAAkwF,UACAijL,aAAAzuQ,KAAA0yQ,gBAAA1yQ,KAAA1E,KAAAmzQ,cACAE,kBAAA3uQ,KAAA0yQ,gBAAA1yQ,KAAA1E,KAAAqzQ,mBACAI,kBAAA/uQ,KAAA0yQ,gBAAA1yQ,KAAA1E,KAAAyzQ,mBACAjqQ,iBAAA9E,KAAA0yQ,gBAAA1yQ,KAAA1E,KAAAwJ,kBACA+mQ,iBAAA7rQ,KAAA1E,KAAAuwQ,iBACAC,WAAA9rQ,KAAA1E,KAAAwwQ,WACA0G,YAAAxyQ,KAAA0yQ,gBAAA1yQ,KAAA1E,KAAAk3Q,aAEAnI,UAAArqQ,KAAA6yQ,kBAEA3D,UAAAlvQ,KAAA8yQ,YAAA9yQ,KAAA1E,KAAAy3Q,iBACA/G,SAAAhsQ,KAAA2yQ,iBAAA3yQ,KAAA1E,KAAA0wQ,UACA6C,eAAA7uQ,KAAA2yQ,iBAAA3yQ,KAAA1E,KAAAuzQ,gBACAC,kBAAA9uQ,KAAA2yQ,iBAAA3yQ,KAAA1E,KAAAwzQ,mBACAkE,sBAAAhzQ,KAAA2yQ,iBAAA3yQ,KAAA1E,KAAA03Q,uBAEA,EAEAjD,EAAAhwQ,UAAA+yQ,YAAA,SAAAjiQ,GACA,IAAAoiQ,EAAA,GACA,IAEA,IADA,IAAAn6N,EAAAjoC,EAAArY,MAAA,KACAC,EAAA,EAAAA,EAAAqgD,EAAApgD,OAAAD,IACAw6Q,EAAAx6Q,GAAAmb,KAAAC,MAAAD,KAAAE,UAAA,CAAA1B,MAAA,KAAApS,KAAA0yQ,gBAAA55N,EAAArgD,MAEA,OAAAy6Q,GAAA,CACA,OAAAD,CACA,EAEAlD,EAAAhwQ,UAAA8yQ,gBAAA,WACA,IAAAM,EAAA,GAEA,IAAAnzQ,KAAA1E,KAAAs3Q,UAAA,IAAA5yQ,KAAA1E,KAAAs3Q,SAAAl6Q,OACA,OAAAsH,KAAAiyQ,aAGA,IAkBAmB,EAAA,CACAp9O,GAAA,UACAg6B,MAAA,MACAu6M,IAAA,MACAiC,aAAA,SACA6E,oBAAA,OACA/G,UAAA,IAAAr4P,OAGAmhQ,EAAA9I,UAAA,GA3BA,CACAt0O,GAAA,aACAjgB,KAAA,OACAu5P,WAAA,MACAG,SAAA,MACAz/M,MAAA,MACAu6M,IAAA,OAsBA6I,EAAA9I,UAAA,GAnBA,CACAt0O,GAAA,aACAjgB,KAAA,YACAu5P,WAAA,MACAG,SAAA,MACAz/M,MAAA,MACAu6M,IAAA,OAeA,QAAA9xQ,EAAA,GAAAA,EAAA,GAAAA,IAAA,CACA,IAAAs5Q,EAAAn+P,KAAAC,MAAAD,KAAAE,UAAAs/P,IAEArB,EAAAvG,MAAA,WAEA,IADA,IAAA5tH,EAAA,EACAnlJ,EAAA,EAAAA,EAAAuH,KAAAsqQ,UAAA5xQ,OAAAD,IACAmlJ,GAAA59I,KAAAsqQ,UAAA7xQ,GAAA8xQ,IAAAvqQ,KAAAsqQ,UAAA7xQ,GAAAu3D,MAEA,OAAA4tF,CACA,EAEAnlJ,EAAA,OACAs5Q,EAAAzH,UAAA,GAAAyD,UAAA,GAGAgE,EAAA/7O,IAAAv9B,EACAs5Q,EAAAvF,cAAA/zQ,EAAA,EACA06Q,EAAA16Q,EAAA,IAAAs5Q,EAEAA,EAAAzH,UAAA,GAAAt0O,GAAA+7O,EAAA/7O,GAAA+7O,EAAAzH,UAAA,GAAAt0O,GACA+7O,EAAAzH,UAAA,GAAAt0O,GAAA+7O,EAAA/7O,GAAA+7O,EAAAzH,UAAA,GAAAt0O,EACA,CAEA,OAAAm9O,CACA,EAEApD,CACA,IACAt4Q,OC3VA,iCACA,SACA,UACA,aACA,SAAA2B,EAAAkM,EAAAm5B,GACA,aAEA,IAAA1C,EAAA,CACAzgC,KAAA,CACAgpQ,SAAA,EACAC,SAAA,MAIA,SAAA8O,EAAAlwP,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAAuF,SAAAI,SAAA,mBAEA3F,KAAAszQ,UAAAl6Q,EAAA,WACAuM,SAAA,mBACAC,IAAA,CACAuI,OAAA,SAEAtH,SAAA7G,KAAAuF,UAEAk5B,EAAAK,aAAA9+B,MACAy+B,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAszQ,UAAA,iBAEAtzQ,KAAAszQ,UAAA1tQ,IAAA,CAAAoH,MAAA,MACA,CAyBA,OAvBA1H,EAAA3F,OAAA0zQ,EAAA/tQ,GAEA+tQ,EAAAz5O,SAAA,cAEAy5O,EAAAtzQ,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,eACA,EAEA0mQ,EAAAtzQ,UAAA6mC,SAAA,SAAA8M,GACA1zC,KAAAuzQ,YAAA7/N,EAAAlnC,MACA,EAEA6mQ,EAAAtzQ,UAAAo3C,WAAA,WACAn3C,KAAAuzQ,YAAA,EACA,EAEAF,EAAAtzQ,UAAAwzQ,YAAA,SAAA9lG,GACA,IACAG,GADA74J,KAAAoiB,IAAAn3B,KAAA1E,KAAAgpQ,SAAAvvP,KAAAsd,IAAA5S,WAAAguJ,GAAAztK,KAAA1E,KAAAipQ,WACAvkQ,KAAA1E,KAAAgpQ,WAAAtkQ,KAAA1E,KAAAipQ,SAAAvkQ,KAAA1E,KAAAgpQ,UAAA,IACAtkQ,KAAAszQ,UAAA1tQ,IAAA,CAAAoH,MAAA4gK,EAAA,KACA,EAEAylG,CACA,IACA57Q,OCzDA,2BACA,aACA,UACA,kBACA,SAAA0B,EAAAuG,EAAAsrC,GACA,aAEA,IAOAwoO,EACAC,EARAC,EAAA,+BACAC,EAAA,wBAEA9oO,EAAA,GACA+oO,EAAA,GACAC,EAAA,GAMA,GAAAn0Q,EAAA7D,6BAAA,CACA,IAAAi4Q,EAAA,CACAr2N,OAAA/9C,EAAA3D,oBACAg4Q,UAAAr0Q,EAAAvD,uBACA63Q,kBAAAt0Q,EAAArD,sBACA43Q,MAAAv0Q,EAAAzD,oBAGAi4Q,SAAAC,cAAAL,GAEA15Q,UAAA0B,cAAAs4Q,kBAAA9wQ,MAAA,SAAAywB,GACA0/O,EAAA1/O,EACAy/O,EAAAU,SAAAV,YAEAC,KAAApgI,QACAogI,EAAApgI,OAAAquE,YAAA,CACAh8M,KAAA,kBACArM,OAAAy6Q,EACA7xK,KAAAviG,EAAA/D,sBACAqY,IAAAtU,EAAAjD,6BAGA,GACA,CAEA,IAAA43Q,EAAA,SAAAC,GACAn7Q,EAAAiJ,KAAAwxQ,GAAA,SAAAxwP,GACAA,EAAAmxP,aAAAvpC,WAAAspC,EACA,IACAV,EAAA,EACA,EAEAY,EAAA,SAAA35Q,GACA,IAAA45Q,iBAAA,iBAEA3lP,UAAA,SAAAxW,GACA,IAAAqG,EAAArG,EAAAhd,KAEAu4Q,EAAAhzQ,KAAA8d,GAEAxlB,EAAAiJ,KAAAyoC,GAAA,SAAAlqC,GACAA,EAAAge,EACA,GACA,EAIA60P,EAAAkB,SAAA,CACAC,0BAAAlB,EACAmB,SAAAl1Q,EAAAnD,sBACA+G,MAAA,SAAAuxQ,GACA,IAAAC,EAAAC,aAAAva,QAAAkZ,GACAsB,EAAAD,aAAAva,QAAAmZ,GAEAmB,IAAAD,GAAAG,IAAAn6Q,EACAmwC,EAAAC,SAAA,qCACA,CACAqpO,SAAAO,EACAI,UAAA,MACAC,SAAA,QAEA3oO,MAAA,WACAwoO,aAAApa,QAAA+Y,EAAAmB,GACAE,aAAApa,QAAAgZ,EAAA94Q,GAEAw5Q,EAAAQ,EACA,GAAAz7Q,EAAA+O,MAEAksQ,EAAAQ,EAEA,IAAAvpO,OAAA,SAAA3lB,GACA,iCAAAA,EAAA+sG,MAAAkhJ,EAAAl7Q,OAAA,EACA27Q,IAEAprP,QAAA3gB,MAAAqd,EACA,IAMA6tP,EAAA2B,WAAA,SAAA3oP,GACA,IAAA7N,EAAA6N,EAAAlxB,KAEAqjB,EAAAy2P,YAAA,EAEAvB,EAAAhzQ,KAAA8d,GAEAxlB,EAAAiJ,KAAAyoC,GAAA,SAAAlqC,GACAA,EAAAge,EACA,GACA,GACA,EAEA,OAEA02P,oBAAA,SAAAx6Q,EAAAy6Q,GACA9B,GAAA,iBAAA35Q,SACA+5Q,EAAA/yQ,KAAAy0Q,GACAd,IACA,EAEAe,4BAAA,SAAA16Q,EAAAy6Q,GACA9B,GAAA,iBAAA35Q,SAGA+5Q,EAAA/yQ,KAAAy0Q,GAEA,YAAAf,aAAAvpC,YAGAwpC,EAAA35Q,GACA,EAEA26Q,yBAAA,WACA,OAAA3B,EAAAn7Q,OAAA,CACA,EAEA+8Q,4BAAA,WACA,OAAA5B,CACA,EAEApzQ,YAAA,SAAA2iB,GACAynB,EAAAhqC,KAAAuiB,EACA,EAEAjiB,eAAA,SAAAiiB,GACAynB,EAAA1xC,EAAAghB,OAAA0wB,GAAA,SAAA6qO,GACA,OAAAA,IAAAtyP,CACA,GACA,EAGA,IACA3rB,OCxJA,2DACA,SACA,aACA,UACA,UACA,4BACA,SAAA2B,EAAAD,EAAAuG,EAAA4F,EAAAqwQ,GACA,aAEA,SAAAC,EAAAzyP,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,WAAA+pB,GACAnjB,KAAAW,SAAAX,KAAA61Q,mBAAAtzQ,KAAAvC,MAAA,EACA,CAoDA,OAlDAsF,EAAA3F,OAAAi2Q,GAEAA,EAAAh8O,SAAA,2BAEAg8O,EAAA71Q,UAAA0H,WAAA,WACA/H,EAAA7D,8BACAmE,KAAA2C,OAAAe,SAAAoyQ,WAAA91Q,KAAA+1Q,iBAAAxzQ,KAAAvC,MACA,EAEA41Q,EAAA71Q,UAAAg2Q,iBAAA,SAAAC,GACA,IAAAj1Q,EAAAf,KAMA,GALA21Q,EAAAJ,4BAAAv1Q,KAAA2C,OAAAzH,YAAAL,QAAA,SAAAo7Q,EAAA3B,GACA,YAAA2B,GACAl1Q,EAAA6J,sBAAA,iBAAA0pQ,EACA,IAEAqB,EAAAH,2BAAA,CACA,IAAAU,EAAAP,EAAAF,8BAGAz1Q,KAAA2C,OAAAe,SAAAoyQ,WAAA91Q,KAAAm2Q,oBAAA5zQ,KAAAvC,MAAA,EAAAk2Q,GACA,CAEAP,EAAAl1Q,YAAAT,KAAAW,UAEAq1Q,GACA,EAEAJ,EAAA71Q,UAAAo2Q,oBAAA,SAAAC,EAAAF,EAAAF,GACA78Q,EAAAiJ,KAAA8zQ,EAAAl2Q,KAAA61Q,mBAAAtzQ,KAAAvC,KAAAo2Q,IACAJ,GACA,EAEAJ,EAAA71Q,UAAA81Q,mBAAA,SAAAO,EAAAC,GACA,IAAAt1Q,EAAAf,KACA7G,EAAAiJ,KAAAjJ,EAAAwW,KAAA0mQ,IAAA,SAAA3/P,GACA3V,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAAlwB,EAAA2/P,EAAA3/P,GACA,IAEA0/P,EACAp2Q,KAAA4K,sBAAA,kCAEA5K,KAAA4K,sBAAA,iCAEA,EAEAgrQ,EAAA71Q,UAAAmP,yBAAA,WACAymQ,EAAAx0Q,eAAAnB,KAAAW,SACA,EAEAi1Q,CACA,IACAn+Q,OClEA,uBACA,SACA,KACA,YACA,SAAA2B,EAAA0K,EAAAwB,GACA,aAEA,IAAAy2B,EAAA,CACAzgC,KAAA,CACAonB,YAAA,iBACA8yD,QAAA,KAIA,SAAA8gM,EAAAnzP,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,WAAA2iC,EAAA5Y,GAEAnjB,KAAAuF,SACAI,SAAA,mBACAC,IAAA,CACA,gCACA,6BAEA,CAyBA,OAvBAN,EAAA3F,OAAA22Q,EAAAhxQ,GAEAgxQ,EAAA18O,SAAA,SAEA08O,EAAAv2Q,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,gBACA3M,KAAAi1L,SAAAj1L,KAAAghN,cACA,EAEAs1D,EAAAv2Q,UAAAk1L,SAAA,SAAAjhL,GACAhU,KAAAuF,SAAAK,IAAA,0BAAAoO,EAAA,IACA,EAEAsiQ,EAAAv2Q,UAAAihN,YAAA,WACA,OAAAl9M,EAAA1G,aAAA,qCACA4C,KAAAmH,SAAA7L,KAAAV,GACA,aAAAoF,KAAA1E,KAAAV,GACA,eAAAqwB,mBAAArX,KAAAE,UAAA9T,KAAA2C,OAAAm2B,WAAAqhB,2BACA,UAAAn6C,KAAA1E,KAAAgJ,KAAAF,EACA,WAAApE,KAAA1E,KAAAgJ,KAAAD,EACA,EAEAiyQ,CACA,IACA7+Q,OClDA,iCACA,SACA,UACA,aACA,SAAA2B,EAAAkM,EAAAm5B,GACA,aAEA,IAAA1C,EAAA,CACAzgC,KAAA,CACA2nD,iBAAA,IAIA,SAAAszN,EAAApzP,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAAw2Q,oBAEAx2Q,KAAAuF,SACAI,SAAA,mBACAC,IAAA,CACA8vC,WAAA,aAGAjX,EAAAK,aAAA9+B,KACA,CAmFA,OAjFAsF,EAAA3F,OAAA42Q,EAAAjxQ,GAEAixQ,EAAA38O,SAAA,cAEA28O,EAAAx2Q,UAAAy2Q,kBAAA,WACA,IAAAz1Q,EAAAf,KACAA,KAAA6oO,OAAAzvO,EAAA,4BACA6uC,KAAA,QAAAjoC,KAAA1E,KAAAkR,OACAy7B,KAAA,WAAAjoC,KAAA1E,KAAAk8C,UACA97C,GAAA,qBACAqF,EAAA01Q,eAEAr9Q,EAAA4G,MAAAskC,GAAA,aACAvjC,EAAA21Q,sBACA,IAEA12Q,KAAA1E,KAAA2nD,gBACAjjD,KAAA6oO,OACAhiO,SAAA7G,KAAAuF,UAEAvF,KAAAqjD,SAAAjqD,EAAA,sCACAyyC,OAAA7rC,KAAA6oO,QACAh9L,OAAAzyC,EAAA,8CACAyN,SAAA7G,KAAAuF,UAGAvF,KAAA2pN,OAAAvwN,EAAA,YACAyhC,KAAA76B,KAAA1E,KAAAu/B,MACAh0B,SAAA7G,KAAAuF,SACA,EAEAgxQ,EAAAx2Q,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MAEAA,KAAA2M,gBAIA,IAAAxG,EAAAnG,KAAAgL,qBAMA,GALAhL,KAAA6oO,OAAA5gM,KAAA,OAAA9hC,EAAAnG,KAAA6F,OAAAvK,KAAAV,GAAA,IAAAuL,EAAAnG,KAAA6F,OAAAvK,KAAAV,IAEAoF,KAAA6F,OAAA2G,QAAAxM,KAAA1E,KAAAkR,OACAxM,KAAA6oO,OAAAnyN,KAAA,cAEA1W,KAAA6F,OAAAvK,KAAA2mD,SACAjiD,KAAA6oO,OAAAnyN,KAAA,mBACA,CACA,IAAA3V,EAAAf,KACAA,KAAA2pN,OACAjuN,GAAA,oBACAqF,EAAAk9I,SACAl9I,EAAA01Q,cACA,GACA,CACA,EAEAF,EAAAx2Q,UAAA22Q,qBAAA,WAIA12Q,KAAA1E,KAAAoI,UAAA1D,KAAA1E,KAAAoI,SAAA88B,WAAA,IAAAxgC,KAAA1E,KAAAoI,SAAA88B,SAAA78B,SACA3D,KAAA4C,aAAA5C,KAAA1E,KAAAoI,SAAA88B,SAAA58B,gBACA,EAEA2yQ,EAAAx2Q,UAAA02Q,aAAA,WACA,IAAAjqQ,EAAAxM,KAAA1E,KAAAkR,MACAxM,KAAA6F,OAAA8wQ,4BAAAnqQ,EACA,EAEA+pQ,EAAAx2Q,UAAAk+I,OAAA,WACAj+I,KAAA6oO,OAAAvkM,GAAA,cAGAtkC,KAAA6oO,OAAAnyN,KAAA,cACA1W,KAAA02Q,uBACA,EAEAH,EAAAx2Q,UAAA62Q,SAAA,WACA52Q,KAAA6oO,OAAAnyN,KAAA,aACA,EAEA6/P,CACA,IACA9+Q,OC9GA,2CACA,SACA,UACA,UACA,eACA,SAAA2B,EAAAkM,EAAAkQ,EAAArc,GACA,aAEA,IAAA4iC,EAAA,CACAzgC,KAAA,CACA24C,SAAA,CACAlvC,mBAAA,EACAmvC,YAAA,EACAO,YAAA,eAKA,SAAAoiO,EAAA1zP,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAA1E,KAAAoI,SAAA8R,EAAA1D,+BAAA9R,KAAA1E,KAAAoI,UACA1D,KAAAwM,MAAAxM,KAAA1E,KAAAkR,KACA,CA6FA,OA3FAlH,EAAA3F,OAAAk3Q,EAAAvxQ,GAEAuxQ,EAAAj9O,SAAA,mBAMAi9O,EAAA92Q,UAAA4M,cAAAvT,EAAA+O,KAEA0uQ,EAAA92Q,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2C,OAAAsxC,SAAAhzC,MAAAjB,MACAA,KAAAuF,SACAK,IAAA,CACAzB,SAAA,WACAI,OAAAvE,KAAA8M,aAEA,EAEA+pQ,EAAA92Q,UAAA0H,WAAA,WACAzH,KAAA82Q,uBACA92Q,KAAAgM,yBACA,EAEA6qQ,EAAA92Q,UAAA+2Q,qBAAA,WACA,IAAA92Q,KAAA8F,KAAApN,SAGAsH,KAAA1E,KAAA24C,SACAj0C,KAAA8F,KAAA,GAAAP,SAAAI,SAAA,mBAEA3F,KAAA8F,KAAA,GAAAP,SAAAqD,YAAA,mBACA,EAEAiuQ,EAAA92Q,UAAAiM,wBAAA,WACA,IAAAhM,KAAA8F,KAAApN,SAGAsH,KAAAiM,UACAjM,KAAA8F,KAAA,GAAAP,SAAAI,SAAA,iBAEA3F,KAAA8F,KAAA,GAAAP,SAAAqD,YAAA,iBACA,EAEAiuQ,EAAA92Q,UAAA8H,OAAA,SAAAtC,GACA,OAAAvF,KAAA8G,qBAAAvB,EACA,EAEAsxQ,EAAA92Q,UAAA42Q,4BAAA,SAAAI,GACA/2Q,KAAAwM,QAAAuqQ,IAGA/2Q,KAAAwM,MAAAuqQ,EAGA/2Q,KAAA4K,sBAAA,WAAAmsQ,GACA/2Q,KAAA4K,sBAAA,UAAAmsQ,GAEA/2Q,KAAAgM,0BACA,EAEA6qQ,EAAA92Q,UAAAwM,SAAA,WACA,OAAAvM,KAAAwM,KACA,EAEAqqQ,EAAA92Q,UAAA6mC,SAAA,SAAA8M,GACA,IAAAlnC,EAAA,OAAAknC,EAAAlnC,YAAApG,IAAAstC,EAAAlnC,MAAAknC,EAAAlnC,MAAAknC,EAAAlnC,MAAAiE,WACAumQ,EAAA79Q,EAAAmI,KAAAtB,KAAA8F,MAAA,SAAAlE,GACA,OAAAA,EAAAtG,KAAAkR,SACA,IACAwqQ,GACAh3Q,KAAAwM,QACAwqQ,EAAA/4H,UAEAj+I,KAAAm3C,aAGAn3C,KAAAgM,yBACA,EAEA6qQ,EAAA92Q,UAAAo3C,WAAA,WACAn3C,KAAAwM,MAAA,KAEArT,EAAAiJ,KAAApC,KAAA8F,MAAA,SAAAlE,GACAA,EAAAg1Q,UACA,IAEA52Q,KAAAgM,yBACA,EAEA6qQ,CACA,IACAp/Q,OCtHA,+CACA,SACA,UACA,UACA,aACA,aACA,SAAA2B,EAAAkM,EAAAkQ,EAAArc,EAAAslC,GACA,aAEA,IAAA1C,EAAA,CACAzgC,KAAA,CACA24C,SAAA,CACAlvC,mBAAA,EACAmvC,YAAA,EACAO,YAAA,aAEA/tC,IAAA,EACAD,KAAA,IAIA,SAAAwwQ,EAAA9zP,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAA1E,KAAAoI,SAAA8R,EAAA1D,+BAAA9R,KAAA1E,KAAAoI,UACA1D,KAAAwM,MAAAxM,KAAA1E,KAAAkR,KACA,CAsFA,OApFAlH,EAAA3F,OAAAs3Q,EAAA3xQ,GAEA2xQ,EAAAr9O,SAAA,qBAEAq9O,EAAAl3Q,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2C,OAAAsxC,SAAAhzC,MAAAjB,MACAA,KAAA2M,eACA,EAEAsqQ,EAAAl3Q,UAAA0H,WAAA,WACAzH,KAAA82Q,uBACA92Q,KAAAgM,0BAEAhM,KAAA8F,KAAA,IACA24B,EAAAK,aAAA9+B,KAAA,KAAAA,KAAA8F,KAAA,GAAAP,SAAA,eAAAvF,KAAA8F,KAAA,GAAAP,SACA,EAEA0xQ,EAAAl3Q,UAAA+2Q,qBAAA,WACA,IAAA92Q,KAAA8F,KAAApN,SAGAsH,KAAA1E,KAAA24C,UAAAj0C,KAAA1E,KAAA24C,SAAAC,WACAl0C,KAAA8F,KAAA,GAAAP,SAAAI,SAAA,mBAEA3F,KAAA8F,KAAA,GAAAP,SAAAqD,YAAA,mBACA,EAEAquQ,EAAAl3Q,UAAAiM,wBAAA,WACA,IAAAhM,KAAA8F,KAAApN,SAGAsH,KAAAiM,UACAjM,KAAA8F,KAAA,GAAAP,SAAAI,SAAA,iBAEA3F,KAAA8F,KAAA,GAAAP,SAAAqD,YAAA,iBACA,EAEAquQ,EAAAl3Q,UAAA8H,OAAA,SAAAtC,GACA,OAAAvF,KAAA8G,qBAAAvB,EACA,EAEA0xQ,EAAAl3Q,UAAA42Q,4BAAA,SAAAI,GACA/2Q,KAAAwM,QAAAuqQ,IAGA/2Q,KAAAwM,MAAAuqQ,EAGA/2Q,KAAA4K,sBAAA,WAAAmsQ,GACA/2Q,KAAA4K,sBAAA,UAAAmsQ,GAEA/2Q,KAAAgM,0BACA,EAEAirQ,EAAAl3Q,UAAAwM,SAAA,WACA,OAAAvM,KAAAwM,KACA,EAEAyqQ,EAAAl3Q,UAAA6mC,SAAA,SAAA8M,GACA,IAAAlnC,EAAA,OAAAknC,EAAAlnC,YAAApG,IAAAstC,EAAAlnC,MAAAknC,EAAAlnC,MAAAknC,EAAAlnC,MAAAiE,WACAumQ,EAAA79Q,EAAAmI,KAAAtB,KAAA8F,MAAA,SAAAlE,GACA,OAAAA,EAAAtG,KAAAkR,SACA,IACAwqQ,GACAh3Q,KAAAwM,QACAwqQ,EAAA/4H,UAEAj+I,KAAAm3C,aAGAn3C,KAAAgM,yBACA,EAEAirQ,EAAAl3Q,UAAAo3C,WAAA,WACAn3C,KAAAwM,MAAA,KAEArT,EAAAiJ,KAAApC,KAAA8F,MAAA,SAAAlE,GACAA,EAAAg1Q,UACA,IAEA52Q,KAAAgM,yBACA,EAEAirQ,CACA,IAEAx/Q,OCnHA,yCACA,SACA,UACA,WACA,gBACA,SAAA2B,EAAAkM,EAAAm5B,EAAAsV,GACA,aAEA,IAAAhY,EAAA,CACAzgC,KAAA,CACAurC,OAAA,aACAoc,iBAAA,EACAhP,SAAA,CACAlvC,mBAAA,EACAmvC,YAAA,EACAO,YAAA,eAKA,SAAAyiO,EAAA/zP,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAAwM,MAAA,KAEAxM,KAAAm3Q,cAAA/9Q,EAAA,YAEA4G,KAAAuF,SACAI,SAAA,mBAKAkmC,OAAAzyC,EAAA,WACAwM,IAAA,CACA8vC,WAAA,WACAsB,SAAA,OACAhqC,MAAA,OACAmB,OAAA,SAEA09B,OAAA7rC,KAAAm3Q,gBAEA14O,EAAAK,aAAA9+B,KACA,CAgGA,OA9FAsF,EAAA3F,OAAAu3Q,EAAA5xQ,GAEA4xQ,EAAAt9O,SAAA,kBAEAs9O,EAAAn3Q,UAAAgH,UAAA,WACA,IAAAhG,EAAAf,KACAA,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2C,OAAAsxC,SAAAhzC,MAAAjB,MACAA,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAo8C,YACA,SAAAp8C,GACAyF,EAAA2yC,OAAAp4C,EACA,IACAy4C,EAAAh0C,UAAAw0C,2BAAAxzC,GACAf,KAAA2M,eACA,EAEAuqQ,EAAAn3Q,UAAA2zC,OAAA,SAAAp4C,GAGA,GAFA0E,KAAAm3Q,cAAA18N,QAEAn/C,EAAA,CAGA,IAAAyF,EAAAf,KACA5G,EAAAgJ,KAAA9G,EAAA68B,SAAA,SAAAvnB,EAAA8V,GACA,IAAA0wP,EAAAr2Q,EAAAzF,KAAAV,GAAA,IAAA8rB,EAAA3lB,EAAAzF,KAAA+7Q,WAEAC,EAAAl+Q,EAAA,0BACA6uC,KAAA,OAAAlnC,EAAAzF,KAAAV,IACAqtC,KAAA,KAAAmvO,GACAnvO,KAAA,QAAAvhB,EAAA3lB,EAAAzF,KAAA+7Q,YACA37Q,GAAA,qBACAqF,EAAAzF,KAAAkR,MAAA8qQ,EAAAx+N,MACA/3C,EAAAiL,0BACAjL,EAAA6J,sBAAA,WAAA7J,EAAAzF,KAAAkR,OACAzL,EAAA6J,sBAAA,UAAA7J,EAAAzF,KAAAkR,MACA,IAEAslN,EAAA/wN,EAAAzF,KAAA2nD,gBACAq0N,EACAl+Q,EAAA,sCACAyyC,OAAAyrO,GACAzrO,OAAAzyC,EAAA,8CAEAuwN,EAAAvwN,EAAA,aACA6uC,KAAA,MAAAmvO,GACAv8O,KAAAnU,EAAA3lB,EAAAzF,KAAAg+L,cACA/zL,EAAAnM,EAAA,YACAwM,IAAA,CACAiH,QAAA,iBAEAg/B,OAAAimL,GACAjmL,OAAA89K,GAEA,eAAA5oN,EAAAzF,KAAAurC,OACA9lC,EAAAo2Q,cAAAtrO,OAAAtmC,GAEAxE,EAAAo2Q,cAAAtrO,OAAAzyC,EAAA,WAAAyyC,OAAAtmC,GAEA,IAEAvF,KAAAu3Q,4BAAAv3Q,KAAA1E,KAAAkR,MAxCA,CAyCA,EAEA0qQ,EAAAn3Q,UAAAwM,SAAA,WACA,OAAAvM,KAAA1E,KAAAkR,KACA,EAEA0qQ,EAAAn3Q,UAAAo3C,WAAA,WACAn3C,KAAAu3Q,4BAAA,MACAv3Q,KAAAgM,yBACA,EAEAkrQ,EAAAn3Q,UAAA6mC,SAAA,SAAA8M,GACA1zC,KAAAu3Q,4BAAA7jO,EAAAlnC,OACAxM,KAAAgM,yBACA,EAEAkrQ,EAAAn3Q,UAAAw3Q,4BAAA,SAAA/qQ,GACAxM,KAAA1E,KAAAkR,QAEAA,EACAxM,KAAAm3Q,cACAz0O,WACAphC,KAAA,gBAAAkL,EAAA,MACAkK,KAAA,cAEA1W,KAAAm3Q,cACAz0O,WACAphC,KAAA,+BACAoV,KAAA,aAEA,EAEAwgQ,CACA,IAKAz/Q,OCjJA,6BACA,SACA,UACA,WACA,eACA,SAAA2B,EAAAkM,EAAAm5B,EAAAsU,GACA,aAEA,IAAAhX,EAAA,CACAzgC,KAAA,CACA60C,MAAA,CACA8C,OAAAF,EAAAS,aAKA,SAAAgkO,EAAAr0P,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAAuF,SAAAI,SAAA,mBACA3F,KAAAqzC,QAAA,IAAAN,EAAA/yC,UAAA1E,KAAA60C,MAAAnwC,KAAAuF,UAEAk5B,EAAAK,aAAA9+B,KACA,CAwBA,OAtBAsF,EAAA3F,OAAA63Q,EAAAlyQ,GAEAkyQ,EAAA59O,SAAA,YAEA49O,EAAAz3Q,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,gBACA3M,KAAAqzC,QAAAK,QACA,EAEA8jO,EAAAz3Q,UAAA6mC,SAAA,SAAA8M,GACA1zC,KAAAy3Q,mBAAA/jO,EAAAlnC,MACA,EAEAgrQ,EAAAz3Q,UAAAo3C,WAAA,WACAn3C,KAAAy3Q,mBAAA,GACA,EAEAD,EAAAz3Q,UAAA03Q,mBAAA,SAAAv7O,GACAl8B,KAAAuF,SAAAK,IAAA,mBAAAs2B,EACA,EAEAs7O,CACA,IACA//Q,OCjDA,8DACA,aAEA,SAAAigR,EAAAtzQ,EAAAC,GACA,IAAA8/D,EAAAwzM,EAAAhyN,EAAAmyH,EAAAr/K,EAAAswB,EAAAqpC,EAAAwlN,EAAAC,EAAA7iN,EAAAilC,EAAAumB,EAAAK,EAAA/X,EAAAuB,EAAA8kB,EAAAI,EAQA,IANA5pE,EAAA,GACA58B,EAAA,GACAo7C,EAAA,GACAwzM,EAAA,GACA7/F,EAAA,GACA8/F,EAAA,GACAn/Q,EAAA,EAAAqwG,GAPA12C,EAAAhuD,EAAA1L,QAOA,KAAAowG,EAAArwG,EAAAqwG,EAAArwG,EAAAqwG,EAAA,GAAAA,EAAArwG,GAAA,EAAAA,GAAA,EACAktD,EAAAltD,IAAA4L,EAAA5L,EAAA,GAAA4L,EAAA5L,KAAA2L,EAAA3L,EAAA,GAAA2L,EAAA3L,IACAA,EAAA,IACAswB,EAAAtwB,IAAAktD,EAAAltD,EAAA,GAAAktD,EAAAltD,IAAA,GAMA,IAHAswB,EAAA,GAAA48B,EAAA,GACA58B,EAAAqpC,EAAA,GAAAzM,EAAAyM,EAAA,GACAylN,EAAA,GACAp/Q,EAAA,EAAA4xG,EAAAj4C,EAAA,KAAAi4C,EAAA5xG,EAAA4xG,EAAA5xG,EAAA4xG,EAAA,GAAAA,EAAA5xG,GAAA,EAAAA,GAAA,EACA,IAAAktD,EAAAltD,IACAo/Q,EAAAh3Q,KAAApI,GAGA,IAAAu8D,EAAA,EAAAwrD,EAAAq3J,EAAAn/Q,OAAAs8D,EAAAwrD,EAAAxrD,IAEAjsC,EADAtwB,EAAAo/Q,EAAA7iN,IACAjsC,EAAAtwB,EAAA,KAEA,IAAAA,EAAA,EAAA02H,EAAA/8D,EAAA,KAAA+8D,EAAA12H,EAAA02H,EAAA12H,EAAA02H,EAAA,GAAAA,EAAA12H,GAAA,EAAAA,GAAA,EACA0rE,EAAA1rE,GAAAswB,EAAAtwB,GAAAktD,EAAAltD,GACAk/Q,EAAAl/Q,GAAAswB,EAAAtwB,EAAA,GAAAktD,EAAAltD,GACAq/K,EAAAr/K,GAAAsc,KAAAud,IAAA6xC,EAAA1rE,GAAA,GAAAsc,KAAAud,IAAAqlP,EAAAl/Q,GAAA,GACAm/Q,EAAAn/Q,GAAA,EAAAsc,KAAA6wC,KAAAkyH,EAAAr/K,IAGA,IADAo/Q,EAAA,GACAp/Q,EAAA,EAAA82H,EAAAn9D,EAAA,KAAAm9D,EAAA92H,EAAA82H,EAAA92H,EAAA82H,EAAA,GAAAA,EAAA92H,GAAA,EAAAA,GAAA,EACAq/K,EAAAr/K,GAAA,GACAo/Q,EAAAh3Q,KAAApI,GAGA,IAAAwhG,EAAA,EAAA4mB,EAAAg3J,EAAAn/Q,OAAAuhG,EAAA4mB,EAAA5mB,IAEAlxE,EADAtwB,EAAAo/Q,EAAA59K,IACA29K,EAAAn/Q,GAAA0rE,EAAA1rE,GAAAktD,EAAAltD,GACAswB,EAAAtwB,EAAA,GAAAm/Q,EAAAn/Q,GAAAk/Q,EAAAl/Q,GAAAktD,EAAAltD,GAEAuH,KAAAoE,IAAA1F,MAAA,EAAA0zD,GACApyD,KAAAqE,IAAA3F,MAAA,EAAA0zD,GACApyD,KAAA+oB,GACA,CAqBA,OAnBA2uP,EAAA33Q,UAAA+3Q,YAAA,SAAA1zQ,GACA,IAAA6vD,EAAA8jN,EAAAC,EAAAC,EAAAx/Q,EAAA05D,EAAAwS,EAAA6kI,EAAA1gG,EACA,IAAArwG,EAAAqwG,EAAA9oG,KAAAoE,EAAA1L,OAAA,GAAAowG,GAAA,EAAArwG,GAAA,EAAAA,GAAA,MACAuH,KAAAoE,EAAA3L,IAAA2L,GADA0kG,GAAA,EAAArwG,GAAA,EAAAA,GAAA,GAcA,OATAw7D,EAAAj0D,KAAAoE,EAAA3L,EAAA,GAAAuH,KAAAoE,EAAA3L,GACA05D,GAAA/tD,EAAApE,KAAAoE,EAAA3L,IAAAw7D,EACA0Q,EAAA5vD,KAAAud,IAAA6/B,EAAA,GAGA6lN,GAFAxuE,EAAAz0L,KAAAud,IAAA6/B,EAAA,IAEA,EAAAwS,EAAAxS,EACA4lN,GAAA,EAAAvuE,EAAA,EAAA7kI,EACAszM,EAAAzuE,EAAA7kI,GAHA,EAAA6kI,EAAA,EAAA7kI,EAAA,GAIA3kE,KAAAqE,EAAA5L,GAAAu/Q,EAAA/jN,EAAAj0D,KAAA+oB,EAAAtwB,GAAAs/Q,EAAA/3Q,KAAAqE,EAAA5L,EAAA,GAAAw/Q,EAAAhkN,EAAAj0D,KAAA+oB,EAAAtwB,EAAA,EAEA,EAEAi/Q,CACA,IACAjgR,OCzEA,kDACA,aAEA,SAAAygR,EAAAt9Q,EAAAu9Q,EAAAC,EAAAC,GACAr4Q,KAAApF,KACAoF,KAAAm4Q,SACAn4Q,KAAAo4Q,gBACAp4Q,KAAAq4Q,oBAAAjyQ,IAAAiyQ,EAAAD,EAAAC,EAEAr4Q,KAAAs4Q,sBAAAt4Q,KAAAo4Q,cACAp4Q,KAAAu4Q,uBAAAv4Q,KAAAq4Q,cACA,CAcA,OAZAH,EAAAn4Q,UAAAy4Q,WAAA,WACA,OAAAx4Q,KAAAs4Q,uBAAAt4Q,KAAAo4Q,eAIAp4Q,KAAAu4Q,wBAAAv4Q,KAAAq4Q,cAKA,EAEAH,CACA,IACAzgR,OC3BA,wKACA,SAAA2B,EAAAD,EAAAu+Q,EAAA1O,EAAAkP,GACA,aAEA,SAAAO,EAAAn1O,GACAtjC,KAAAsjC,YACAtjC,KAAA04Q,aAAA,EACA14Q,KAAA24Q,+BAAAvyQ,EACApG,KAAAkpQ,UAAA,KACAlpQ,KAAA44Q,WAAA,IACA,CAghBA,OA9gBAH,EAAA14Q,UAAA84Q,WAAA,SAAAz0Q,GACA,OAAA2Q,KAAA81C,MAAA,IAAAzmD,GAAA,GACA,EAEAq0Q,EAAA14Q,UAAA+4Q,cAAA,SAAA10Q,EAAAC,GACA,OAAA0Q,KAAA81C,MAAA,IAAAzmD,GAAA,KAAA2Q,KAAA81C,MAAA,IAAAxmD,GAAA,GACA,EAEAo0Q,EAAA14Q,UAAAg5Q,aAAA,SAAAC,GACA,OAAA7/Q,EAAAmI,KAAAtB,KAAA44Q,WAAAK,YAAA,SAAAC,GACA,OAAAA,EAAAC,MAAAH,CACA,IAAAI,UACA,EAEAX,EAAA14Q,UAAAs5Q,aAAA,SAAAC,GACA,OAAAngR,EAAAmI,KAAAtB,KAAA44Q,WAAAW,YAAA,SAAAC,GACA,OAAAA,EAAAL,MAAAG,CACA,IAAAF,UACA,EAEAX,EAAA14Q,UAAA05Q,iBAAA,SAAAC,GACA,IAAA34Q,EAAAf,KACA,OAAA7G,EAAAmI,KAAAP,EAAA63Q,WAAAK,YAAA,SAAAC,GACA,OAAAn4Q,EAAA+3Q,cAAAI,EAAAE,WAAAM,EACA,IAAAP,IACA,EAEAV,EAAA14Q,UAAA45Q,iBAAA,SAAAC,GACA,IAAA74Q,EAAAf,KACA,OAAA7G,EAAAmI,KAAAP,EAAA63Q,WAAAW,YAAA,SAAAC,GACA,OAAAz4Q,EAAA+3Q,cAAAU,EAAAJ,WAAAQ,EACA,IAAAT,IACA,EAEAV,EAAA14Q,UAAA85Q,mBAAA,SAAArtQ,GACA,OAAAA,EAAAxM,KAAAkpQ,UAAA4Q,YAAA95Q,KAAAkpQ,UAAA6Q,QAAA/5Q,KAAAkpQ,UAAA4Q,WAAA,GACA,EAEArB,EAAA14Q,UAAAi6Q,mBAAA,SAAAxtQ,GACA,OAAAA,EAAAxM,KAAAkpQ,UAAA+Q,YAAAj6Q,KAAAkpQ,UAAAgR,QAAAl6Q,KAAAkpQ,UAAA+Q,WAAA,GACA,EAEAxB,EAAA14Q,UAAAo6Q,YAAA,SAAAb,GACA,OAAAngR,EAAAmI,KAAAtB,KAAA44Q,WAAAvO,WAAA,SAAAkG,GACA,OAAAA,EAAA4H,QAAAmB,CACA,GACA,EAEAb,EAAA14Q,UAAAq6Q,iBAAA,WACAp6Q,KAAA44Q,WAAA,CACAyB,kBAAAr6Q,KAAAg6Q,mBAAAh6Q,KAAAkpQ,UAAA+Q,UAAAj6Q,KAAAkpQ,UAAAoR,kBACAC,eAAAv6Q,KAAAg6Q,mBAAAh6Q,KAAAkpQ,UAAA+Q,UAAAj6Q,KAAAkpQ,UAAAsR,eACAC,kBAAAz6Q,KAAA65Q,mBAAA75Q,KAAAkpQ,UAAA4Q,UAAA95Q,KAAAkpQ,UAAAwR,kBACAC,eAAA36Q,KAAA65Q,mBAAA75Q,KAAAkpQ,UAAA4Q,UAAA95Q,KAAAkpQ,UAAA0R,eACArB,WAAAv5Q,KAAA66Q,qBACA5B,WAAAj5Q,KAAA86Q,qBACAzQ,UAAAjkQ,MAAApG,KAAAkpQ,UAAAmB,UAAA,GAAArqQ,KAAAkpQ,UAAAmB,UAEA,EAEAoO,EAAA14Q,UAAA86Q,mBAAA,WAGA,IAFA,IAAAtB,EAAA,GAEAn1Q,EAAApE,KAAAkpQ,UAAA+Q,UAAA71Q,GAAApE,KAAAkpQ,UAAAgR,QAAA91Q,GAAApE,KAAAkpQ,UAAAoR,iBACAf,EAAA14Q,KAAA,CACAs4Q,KAAA/0Q,EACAg1Q,WAAAp5Q,KAAAg6Q,mBAAA51Q,KAIA,OAAAm1Q,CACA,EAEAd,EAAA14Q,UAAA+6Q,mBAAA,WAGA,IAFA,IAAA7B,EAAA,GAEA50Q,EAAArE,KAAAkpQ,UAAA4Q,UAAAz1Q,GAAArE,KAAAkpQ,UAAA6Q,QAAA11Q,GAAArE,KAAAkpQ,UAAAwR,iBACAzB,EAAAp4Q,KAAA,CACAs4Q,KAAA90Q,EACA+0Q,WAAAp5Q,KAAA65Q,mBAAAx1Q,KAIA,OAAA40Q,CACA,EAEAR,EAAA14Q,UAAA4rQ,YAAA,WACA,IAAAC,EAAAxyQ,EAAA,SACA+9J,MAAA,UAGAn3J,KAAA+6Q,qBAAAnP,GAEA5rQ,KAAAkpQ,UAAA2F,iBACA7uQ,KAAAg7Q,YAAApP,GACA5rQ,KAAAi7Q,YAAArP,IAGAA,EAAA/kQ,SAAAzN,EAAA4G,KAAAsjC,WACA,EAEAm1O,EAAA14Q,UAAAi7Q,YAAA,SAAApP,GAIA,IAHA,IAAAsP,EAAA9hR,EAAA,QACAuM,SAAA,SAEAvB,EAAApE,KAAAkpQ,UAAA+Q,UAAA71Q,EAAApE,KAAAkpQ,UAAAgR,QAAA91Q,GAAApE,KAAAkpQ,UAAAsR,cACAphR,EAAA,QACAwM,IAAA,CACAoH,MAAAhN,KAAA44Q,WAAA2B,eAAA,IACA,eAAAv6Q,KAAA44Q,WAAA2B,eAAA,MACA,eAAAv6Q,KAAA44Q,WAAA2B,eAAA,OAEA1/O,KAAA76B,KAAAkpQ,UAAAiS,gBAAAnS,EAAAP,UAAArkQ,OACAyC,SAAAq0Q,GAGAtP,EAAA//N,OAAAqvO,EACA,EAEAzC,EAAA14Q,UAAAk7Q,YAAA,SAAArP,GAIA,IAHA,IAAAwP,EAAAhiR,EAAA,QACAuM,SAAA,SAEAtB,EAAArE,KAAAkpQ,UAAA6Q,QAAA11Q,GAAArE,KAAAkpQ,UAAA4Q,UAAAz1Q,GAAArE,KAAAkpQ,UAAA0R,cACAxhR,EAAA,QACAwM,IAAA,CACAuI,OAAAnO,KAAA44Q,WAAA+B,eAAA,KAEA9/O,KAAA76B,KAAAkpQ,UAAAmS,gBAAArS,EAAAP,UAAApkQ,OACAwC,SAAAu0Q,GAGAxP,EAAA//N,OAAAuvO,EACA,EAEA3C,EAAA14Q,UAAAg7Q,qBAAA,SAAAnP,GACA,IAAA0P,EAAAliR,EAAA,SACAuM,SAAA,kBACAA,SAAA,uBACAC,IAAA,CACAoH,MAAA,OACAmB,OAAA,SAEAtH,SAAA+kQ,GAEA2P,EAAAniR,EAAA,SACAuM,SAAA,kBACAA,SAAA,uBACAC,IAAA,CACAoH,MAAA,OACAmB,OAAA,OACA+zC,OAAAliD,KAAAkpQ,UAAAjnN,SAAA,sBAGAjiD,KAAAkpQ,UAAAjnN,UACAjiD,KAAAw7Q,sBAAAD,GAGAv7Q,KAAAy7Q,gBAAAF,GACAv7Q,KAAA07Q,gBAAAH,GAEAA,EAAA10Q,SAAAy0Q,EACA,EAEA7C,EAAA14Q,UAAA07Q,gBAAA,SAAAF,GACA,QAAAn3Q,EAAApE,KAAAkpQ,UAAA+Q,UAAA71Q,EAAApE,KAAAkpQ,UAAAgR,QAAA91Q,GAAApE,KAAAkpQ,UAAAoR,kBACAl2Q,EAAApE,KAAAkpQ,UAAAoR,kBAAAt6Q,KAAAkpQ,UAAAsR,eAAA,EACAx6Q,KAAA27Q,sBAAAJ,EAAAn3Q,GACAuB,SAAA,gBAGA3F,KAAA27Q,sBAAAJ,EAAAn3Q,GACAuB,SAAA,mBAGA,QAAAtB,EAAArE,KAAAkpQ,UAAA4Q,UAAAz1Q,EAAArE,KAAAkpQ,UAAA6Q,QAAA11Q,GAAArE,KAAAkpQ,UAAAwR,kBACAr2Q,EAAArE,KAAAkpQ,UAAAwR,kBAAA16Q,KAAAkpQ,UAAA0R,eAAA,EACA56Q,KAAA47Q,wBAAAL,EAAAl3Q,GACAsB,SAAA,gBAGA3F,KAAA47Q,wBAAAL,EAAAl3Q,GACAsB,SAAA,kBAGA,EAEA8yQ,EAAA14Q,UAAA67Q,wBAAA,SAAAL,EAAAM,GACA,OAAA77Q,KAAA87Q,cAAAP,EAAA,IAAAv7Q,KAAA+4Q,aAAA8C,EAAA77Q,KAAAkpQ,UAAAwR,kBAAA,EAAA16Q,KAAA+4Q,aAAA8C,GAAA,EACA,EAEApD,EAAA14Q,UAAA47Q,sBAAA,SAAAJ,EAAApD,GAEA,OADAn4Q,KAAA87Q,cAAAP,EAAA,MAAAv7Q,KAAAq5Q,aAAAlB,EAAAn4Q,KAAAkpQ,UAAAoR,kBAAA,EAAAt6Q,KAAAq5Q,aAAAlB,IACAxyQ,SAAA,WACA,EAEA8yQ,EAAA14Q,UAAA+7Q,cAAA,SAAAP,EAAA70Q,EAAAC,EAAAC,EAAAH,GACA,OAAArN,EAAA,SACA+9J,MAAA,UACAvxJ,IAAA,CACAc,MAAA,IACAC,QAAA,IACAF,OAAA,IACAG,SAAA,OAEAC,SAAA00Q,EACA,EAEA9C,EAAA14Q,UAAAy7Q,sBAAA,SAAAD,GACA,IAAAx6Q,EAAAf,KACAu7Q,EAAA7/Q,GAAA,sBAAA4c,GACAvX,EAAAg7Q,iBAAAzjQ,EAAAtY,KACA,IACAu7Q,EAAA7/Q,GAAA,uBAAA4c,GACAvX,EAAAi7Q,eAAA1jQ,EAAAtY,KACA,IACAu7Q,EAAA7/Q,GAAA,oBAAA4c,GACAvX,EAAAi7Q,eAAA1jQ,EAAAtY,KACA,IACAu7Q,EAAA7/Q,GAAA,sBAAA4c,GACAvX,EAAAypD,YAAAlyC,EAAAtY,KACA,GACA,EAEAy4Q,EAAA14Q,UAAAyqD,YAAA,SAAAlyC,EAAArJ,GACAjP,KAAA04Q,aACA14Q,KAAAi8Q,mBAAA,CAAA73Q,EAAAkU,EAAA/M,MAAAlH,EAAAiU,EAAA9M,OAAAyD,EAEA,EAEAwpQ,EAAA14Q,UAAAi8Q,eAAA,SAAA1jQ,EAAArJ,GACAjP,KAAA04Q,aACA14Q,KAAAi8Q,mBAAA,CAAA73Q,EAAAkU,EAAA/M,MAAAlH,EAAAiU,EAAA9M,OAAAyD,GAGAjP,KAAA04Q,aAAA,EACA14Q,KAAA24Q,+BAAAvyQ,CACA,EAEAqyQ,EAAA14Q,UAAAg8Q,iBAAA,SAAAzjQ,EAAArJ,GACAjP,KAAA04Q,aAAA,CACA,EAEAD,EAAA14Q,UAAAm8Q,+BAAA,SAAAC,EAAAZ,GACA,IAAAr7N,EAAA,CAAA97C,EAAA,EAAAC,EAAA,GAEAg4C,EAAAjjD,EAAAmiR,GAAAl/N,SACA6D,EAAA97C,GAAA+3Q,EAAA/3Q,EAAAi4C,EAAA51C,MAAA80Q,EAAA13O,YAAA,IACA,IAAAu4O,EAAAD,EAAA93Q,EAAAg4C,EAAA31C,IACA21C,EAAA31C,IACAy1Q,EAAA93Q,EAAAg4C,EAAA31C,IAAA60Q,EAAA53O,aACA0Y,EAAA31C,IAAA60Q,EAAA53O,aACAw4O,EAAA93Q,EAIA,OAFA67C,EAAA77C,EAAA0Q,KAAAD,KAAAsnQ,EAAA//N,EAAA31C,KAAA60Q,EAAA53O,aAAA,SAEAuc,CACA,EAEAu4N,EAAA14Q,UAAAk8Q,mBAAA,SAAAE,EAAAZ,GACA,IAAAc,EAAAr8Q,KAAAk8Q,+BAAAC,EAAAZ,GAEA,GAAAn1Q,MAAApG,KAAA24Q,0BAAA,CACA,IAAA2D,EAAAvnQ,KAAA81C,MAAA91C,KAAAD,IAAAunQ,EAAAj4Q,EAAApE,KAAA24Q,0BAAAv0Q,GAAApE,KAAA44Q,WAAAyB,mBACA,GAAAiC,EAAA,GACA,IAAAC,EACAC,EACAH,EAAAj4Q,EAAApE,KAAA24Q,0BAAAv0Q,GAAA,GACAm4Q,EAAA,IAAA7E,EAAA,CAAA2E,EAAAj4Q,EAAApE,KAAA24Q,0BAAAv0Q,GACA,CAAAi4Q,EAAAh4Q,EAAArE,KAAA24Q,0BAAAt0Q,IACAm4Q,GAAA,IAGAD,EAAA,IAAA7E,EAAA,CAAA13Q,KAAA24Q,0BAAAv0Q,EAAAi4Q,EAAAj4Q,GACA,CAAApE,KAAA24Q,0BAAAt0Q,EAAAg4Q,EAAAh4Q,IACAm4Q,EAAA,GAEA,QAAA/jR,EAAA,EAAAA,GAAA6jR,EAAA7jR,IAAA,CACA,IAAAgkR,EAAAz8Q,KAAA24Q,0BAAAv0Q,EAAA3L,EAAA+jR,EAAAx8Q,KAAA44Q,WAAAyB,kBACAqC,EAAAH,EAAAzE,YAAA2E,GACA,IAAAxyK,MAAAyyK,GAAA,CACA,IAAAC,EAAA,CACAv4Q,EAAApE,KAAA48Q,mCAAAH,GACAp4Q,EAAArE,KAAA68Q,oCAAAH,IAEA18Q,KAAA88Q,gBAAAvB,EAAAoB,EAAAv4Q,EAAAu4Q,EAAAt4Q,EACA,CACA,CACA,CACA,CACArE,KAAA24Q,0BAAA,CACAv0Q,EAAAi4Q,EAAAj4Q,EACAC,EAAAg4Q,EAAAh4Q,GAGA,IAAA04Q,EAAA/8Q,KAAA48Q,mCAAAP,EAAAj4Q,GACA44Q,EAAAh9Q,KAAA68Q,oCAAAR,EAAAh4Q,GAEArE,KAAA88Q,gBAAAvB,EAAAwB,EAAAC,EACA,EAEAvE,EAAA14Q,UAAA68Q,mCAAA,SAAAx4Q,GACA,IAAArD,EAAAf,KACA7F,EAAAhB,EAAAmI,KAAAtB,KAAA44Q,WAAAW,YAAA,SAAAC,GACA,IAAAzrJ,EAAAhtH,EAAA83Q,WAAAz0Q,EAAAo1Q,EAAAJ,YACA,OAAArrJ,GAAA,GAAAA,EAAAhtH,EAAA63Q,WAAAyB,iBACA,IAEA,IAAAlgR,EAAA,CACA,GAAAiK,EAAA,eACA,GAAAA,EAAA,UACA,CAEA,OAAAjK,EAAAi/Q,UACA,EAEAX,EAAA14Q,UAAA88Q,oCAAA,SAAAx4Q,GACA,IAAAtD,EAAAf,KACAi9Q,EAAA9jR,EAAAghB,OAAAna,KAAA44Q,WAAAK,YAAA,SAAAC,GACA,IAAAnrJ,EAAAhtH,EAAA83Q,WAAAx0Q,EAAA60Q,EAAAE,YACA,OAAArrJ,GAAA,GAAAA,EAAAhtH,EAAA63Q,WAAA6B,mBACA1sJ,GAAA,GAAAA,GAAAhtH,EAAA63Q,WAAA6B,iBAEA,IAEA,MAAAwC,EAAAvkR,OAAA,CACA,GAAA2L,EAAA,eACA,GAAAA,EAAA,UACA,CACA,UAAA44Q,EAAAvkR,QAEAqc,KAAAD,IAAAmoQ,EAAA,GAAA7D,WAAA/0Q,GAAA0Q,KAAAD,IAAAmoQ,EAAA,GAAA7D,WAAA/0Q,GAFA44Q,EAAA,GAAA7D,WAKA6D,EAAA,GAAA7D,UAGA,EAEAX,EAAA14Q,UAAA+8Q,gBAAA,SAAAvB,EAAAwB,EAAAC,GACAh9Q,KAAAkpQ,UAAA8J,sBAGAhzQ,KAAAk9Q,uBAAA3B,EAAAwB,EAAAC,GAFAh9Q,KAAAm9Q,cAAA5B,EAAAwB,EAAAC,EAIA,EAEAvE,EAAA14Q,UAAAo9Q,cAAA,SAAA5B,EAAAn3Q,EAAAC,GACA,IAAA8zQ,EAAAn4Q,KAAA25Q,iBAAAv1Q,GACAmsQ,EAAAvwQ,KAAAm6Q,YAAAhC,GACAiF,EAAAhkR,EAAAmiR,GAAA74O,SAAA,iCAAAy1O,EAAA,MACAkF,EAAAjkR,EAAAmiR,GAAA74O,SAAA,kCAAAy1O,EAAA,MAEA/xQ,MAAAg3Q,EAAA,IAAAh3Q,MAAAi3Q,EAAA,KAEA9M,EAAA6H,cAAAp4Q,KAAAy5Q,iBAAAp1Q,GACAg5Q,EAAA3mQ,KAAA,QAAA1W,KAAAs9Q,oBAAA/M,IAEA6M,EAAA91N,QAAA,CAAA5gD,IAAA,IAAArC,EAAA,MAAAkjD,SAAA,IAAAyhF,OAAA,QAAAxhF,OAAA,IACA61N,EAAA/1N,QAAA,CAAA5gD,IAAA,IAAArC,EAAA,MAAAkjD,SAAA,IAAAyhF,OAAA,QAAAxhF,OAAA,IAEA,GAAAnjD,EACA+4Q,EAAAx0Q,YAAA,aAEAw0Q,EAAAz3Q,SAAA,aAEA,EAEA8yQ,EAAA14Q,UAAAm9Q,uBAAA,SAAA3B,EAAAn3Q,EAAAC,GACA,IAAA8zQ,EAAAn4Q,KAAA25Q,iBAAAv1Q,GACAmsQ,EAAAvwQ,KAAAm6Q,YAAAhC,GAGAoF,GADAnkR,EAAAmiR,GAAA74O,SAAA,iCAAAy1O,EAAA,MACA/+Q,EAAAmiR,GAAA74O,SAAA,kCAAAy1O,EAAA,OACAkF,EAAAjkR,EAAAmiR,GAAA74O,SAAA,kCAAAy1O,EAAA,MAEA5H,EAAA8H,eAAAr4Q,KAAAy5Q,iBAAAp1Q,GACAg5Q,EAAA3mQ,KAAA,QAAA1W,KAAAs9Q,oBAAA/M,IAEAgN,EAAA30Q,YAAA,QACA20Q,EAAA30Q,YAAA,SACA20Q,EAAA30Q,YAAA,aAEA,IAAA40Q,EAAAx9Q,KAAA+4Q,aAAAxI,EAAA6H,eACA/zQ,EAAAm5Q,GACAD,EAAA53Q,SAAA,SACA3F,KAAAy9Q,mBAAAF,GACAA,EAAAj2N,QAAA,CAAA5gD,IAAA,IAAA82Q,EAAA,IAAA52Q,OAAAvC,EAAA,MAAAkjD,SAAA,IAAAyhF,OAAA,QAAAxhF,OAAA,IACA61N,EAAA/1N,QAAA,CAAA5gD,IAAA,IAAA82Q,EAAA,MAAAj2N,SAAA,IAAAyhF,OAAA,QAAAxhF,OAAA,KAEAnjD,EAAAm5Q,GACAD,EAAA53Q,SAAA,QACA3F,KAAA09Q,kBAAAH,GACAA,EAAAj2N,QAAA,CAAA5gD,IAAA,IAAArC,EAAA,IAAAuC,OAAA42Q,EAAA,MAAAj2N,SAAA,IAAAyhF,OAAA,QAAAxhF,OAAA,IACA61N,EAAA/1N,QAAA,CAAA5gD,IAAA,IAAArC,EAAA,MAAAkjD,SAAA,IAAAyhF,OAAA,QAAAxhF,OAAA,MAGA+1N,EAAA53Q,SAAA,aACA43Q,EAAAj2N,QAAA,CAAA5gD,IAAA,IAAA82Q,EAAA,IAAA52Q,OAAA42Q,EAAA,MAAAj2N,SAAA,IAAAyhF,OAAA,QAAAxhF,OAAA,IACA61N,EAAA/1N,QAAA,CAAA5gD,IAAA,IAAA82Q,EAAA,MAAAj2N,SAAA,IAAAyhF,OAAA,QAAAxhF,OAAA,IAEA,EAEAixN,EAAA14Q,UAAA27Q,gBAAA,SAAAH,GACA,QAAA9iR,EAAAuH,KAAAkpQ,UAAA+Q,UAAAxhR,EAAAuH,KAAAkpQ,UAAAgR,QAAAzhR,GAAAuH,KAAAkpQ,UAAAoR,iBAIA,IAHA7hR,EAAAuH,KAAAkpQ,UAAAyU,UAAAllR,GAAAuH,KAAAkpQ,UAAA0U,WACA59Q,KAAA69Q,sBAAAtC,EAAA,IAAArD,EAAA,KAAAz/Q,EAAAuH,KAAAkpQ,UAAA6Q,UAEA5gR,EAAA2kR,IAAA99Q,KAAA44Q,WAAAvO,WAAA,SAAAkG,GAAA,OAAAA,EAAA4H,QAAA1/Q,CAAA,KACA,IAAA83Q,EAAAp3Q,EAAAmI,KAAAtB,KAAA44Q,WAAAvO,WAAA,SAAAkG,GAAA,OAAAA,EAAA4H,QAAA1/Q,CAAA,IACAuH,KAAA+9Q,eAAAxC,EAAAhL,EACA,KACA,CACA,IAAAyN,EAAA,IAAA9F,EAAA,KAAAz/Q,EAAAuH,KAAAkpQ,UAAA4Q,WACA95Q,KAAA44Q,WAAAvO,UAAAxpQ,KAAAm9Q,GACAh+Q,KAAA+9Q,eAAAxC,EAAAyC,EACA,CAEA,EAEAvF,EAAA14Q,UAAAu9Q,oBAAA,SAAA/M,GACA,IAAA0N,EAAA,aAAA1N,EAAA6H,cACA,OAAAp4Q,KAAAkpQ,UAAA8J,sBACAiL,EAAA,eAAA1N,EAAA8H,eAEA4F,CACA,EAEAxF,EAAA14Q,UAAAg+Q,eAAA,SAAAxC,EAAAhL,GACA,IAAA2N,EAAAl+Q,KAAAq5Q,aAAA9I,EAAA4H,QACAgG,EAAAn+Q,KAAAq5Q,aAAA9I,EAAA4H,OAAAn4Q,KAAAkpQ,UAAAoR,kBACA8D,EAAAp+Q,KAAA+4Q,aAAAxI,EAAA6H,eAEAiF,EAAAjkR,EAAA,SACA+9J,MAAA,4BACA,cAAAo5G,EAAA4H,OACAhoO,MAAAnwC,KAAAs9Q,oBAAA/M,GACA3qQ,IAAA,CACAa,KAAAy3Q,EAAA,IACAv3Q,MAAA,IAAAw3Q,EAAA,IACAz3Q,IAAA,IAAA03Q,EAAA,IACAx3Q,OAAA,QAEAC,SAAA00Q,GAqBA,GAnBA8B,EACA3hR,GAAA,yBACA2hR,EAAA13Q,SAAA,cACA,IACAjK,GAAA,yBACA2hR,EAAAz0Q,YAAA,cACA,IAEAxP,EAAA,SACA+9J,MAAA,+BAAAinH,EAAA,iBACA,cAAA7N,EAAA4H,OACAvyQ,IAAA,CACAa,KAAAy3Q,EAAA,IACAv3Q,MAAA,IAAAw3Q,EAAA,IACAz3Q,IAAA,IAAA03Q,EAAA,IACAx3Q,OAAA,QAEAC,SAAA00Q,GAEAv7Q,KAAAkpQ,UAAA8J,sBAAA,CACA,IAAAqL,EAAAr+Q,KAAA+4Q,aAAAxI,EAAA8H,gBACAiG,EAAAD,EAAAD,EAEAG,EAAAD,EAAA,IAAAD,EAAA,IAAAD,EACAI,EAAAF,EAAAF,EAAAC,EACAd,EAAAnkR,EAAA,SACA+9J,MAAA,8BAAAmnH,EAAA,iBAAAD,GAAAD,EAAA,iBACA,cAAA7N,EAAA4H,OACAvyQ,IAAA,CACAa,KAAAy3Q,EAAA,IACAv3Q,MAAA,IAAAw3Q,EAAA,IACAz3Q,IAAA63Q,EAAA,IACA33Q,OAAA43Q,EAAA,OAEA33Q,SAAA00Q,GAEA+C,GACAjB,EAAAz3Q,IAAA,CAAAc,IAAA,IAAA23Q,EAAA,MAEAC,EACAf,EAAA53Q,SAAA,iBAEA43Q,EAAA53Q,SAAA,iBAEA,CACA,EAEA8yQ,EAAA14Q,UAAA89Q,sBAAA,SAAAtC,EAAAhL,GACA,IAAA2N,EAAAl+Q,KAAAq5Q,aAAA9I,EAAA4H,QACAgG,EAAAn+Q,KAAAq5Q,aAAA9I,EAAA4H,OAAAn4Q,KAAAkpQ,UAAAoR,kBACA8D,EAAAp+Q,KAAA+4Q,aAAAxI,EAAA6H,eAEAh/Q,EAAA,SACA+9J,MAAA,0BACAvxJ,IAAA,CACAa,KAAAy3Q,EAAA,IACAv3Q,MAAA,IAAAw3Q,EAAA,IACAz3Q,IAAA,IAAA03Q,EAAA,IACAx3Q,OAAA,QAGAC,SAAA00Q,EACA,EAEA9C,EAAA14Q,UAAA2rQ,YAAA,WACAtyQ,EAAA4G,KAAAsjC,WAAAZ,WAAA3pC,QACA,EAEA0/Q,EAAA14Q,UAAA0+Q,aAAA,WACA,OAAAz+Q,KAAA44Q,WAAAvO,SACA,EAEAoO,EAAA14Q,UAAA+sD,KAAA,SAAA8iN,GACA5vQ,KAAA0rQ,cAEA1rQ,KAAAkpQ,UAAA0G,EAEA5vQ,KAAAo6Q,mBACAp6Q,KAAA2rQ,aACA,EAEA8M,CACA,IACAhhR,OC5hBA,6CACA,SACA,aACA,UACA,gDACA,mCACA,aACA,SAAA2B,EAAAD,EAAAmM,EAAAmzQ,EAAAP,EAAAz5O,GACA,aAEA,SAAAigP,EAAAv7P,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA+pB,GAEAnjB,KAAA1E,KAAA+jC,OAAAr/B,KAAA1E,KAAAkkC,QAEA,IAAA2pJ,EAAA/vL,EAAA,WACAuM,SAAA,8BACAC,IAAA,CACAoH,MAAA,OACAmB,OAAA,SAEAtH,SAAA7G,KAAAuF,UAEAvF,KAAA4rQ,MAAA,IAAA6M,EAAAtvF,EAAA,IACAnpL,KAAA2+Q,OAAA,GACA3+Q,KAAA4+Q,cAAA,GACA5+Q,KAAA6+Q,cAAA,GACA7+Q,KAAAqqQ,UAAA,GAEArqQ,KAAAuF,SACAI,SAAA,mBAEA84B,EAAAK,aAAA9+B,KAAA,oBAAAmpL,EACA,CA6KA,OA3KA7jL,EAAA3F,OAAA++Q,EAAAp5Q,GAEAo5Q,EAAA9kP,SAAA,oBAEA8kP,EAAA3+Q,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,eACA,EAEA+xQ,EAAA3+Q,UAAA8rP,mBAAA,WACA,IAAA9qP,EAAAf,KACAA,KAAA1E,KAAA03Q,sBACAhzQ,KAAA2C,OAAAm1C,gBAAA7M,SACAjrC,KAAA1E,KAAAwjR,4BACA,SAAAxjR,GACAyF,EAAA89Q,cAAAvjR,EAAA68B,QAEAp3B,EAAA4B,OAAAm1C,gBAAA7M,SACAlqC,EAAAzF,KAAAyjR,0BACA,SAAAzjR,GACAyF,EAAA49Q,OAAArjR,EAAA68B,QACAp3B,EAAAi+Q,WACA,IACA,SAAAz0O,GACAA,EAAAoO,SAAA,IACA,IAEA53C,EAAA4B,OAAAm1C,gBAAA7M,SACAlqC,EAAAzF,KAAA2jR,4BACA,SAAA3jR,GACAyF,EAAA69Q,cAAAtjR,EAAA68B,QACAp3B,EAAAi+Q,WACA,IACA,SAAAz0O,GACAA,EAAAoO,SAAA,IACA,GACA,IACA,SAAApO,GACAA,EAAAoO,SAAA,IACA,IAEA34C,KAAA2C,OAAAm1C,gBAAA7M,SACAjrC,KAAA1E,KAAA2jR,4BACA,SAAA3jR,GACAyF,EAAA69Q,cAAAtjR,EAAA68B,QAEAp3B,EAAA4B,OAAAm1C,gBAAA7M,SACAlqC,EAAAzF,KAAAyjR,0BACA,SAAAzjR,GACAyF,EAAA49Q,OAAArjR,EAAA68B,QACAp3B,EAAAi+Q,WACA,aAAAz0O,GACAA,EAAAoO,SAAA,IACA,GACA,aAAApO,GACAA,EAAAoO,SAAA,IACA,GAEA,EAEA+lO,EAAA3+Q,UAAAi/Q,UAAA,WACA,IAAAj+Q,EAAAf,KAEA,GAAAe,EAAA49Q,OAAAjmR,OAAA,GAAA0N,MAAArF,EAAA69Q,iBAAA79Q,EAAAzF,KAAA03Q,uBAAA5sQ,MAAArF,EAAA89Q,eAAA,CACA99Q,EAAA49Q,OAAAjmR,OAAA,GACA+nN,MAAA,iDAGA1/M,EAAAzF,KAAAqiR,SAAA58Q,EAAA49Q,OAAA,GAAA59Q,EAAAzF,KAAA4jR,gBACAn+Q,EAAAzF,KAAAsiR,SAAA78Q,EAAA49Q,OAAA,GAAA59Q,EAAAzF,KAAA6jR,gBAEAp+Q,EAAAspQ,UAAA,GAIA,IAFA,IAAA1qJ,EAAA5+G,EAAAzF,KAAAg/Q,iBACA8E,EAAA,EACAA,EAAA,GAAAr+Q,EAAAzF,KAAAk/Q,eAAA,CACA,IAAA6E,EAAA,EACAC,EAAAnmR,EAAAmI,KAAAP,EAAA69Q,eAAA,SAAAx1Q,GAAA,OAAAA,EAAArI,EAAAzF,KAAAikR,eAAAH,CAAA,IACAjmR,EAAAiJ,KAAArB,EAAA89Q,eAAA,SAAAxM,GACAA,EAAAtxQ,EAAAzF,KAAAkkR,oBAAAJ,GAAA/M,EAAAtxQ,EAAAzF,KAAAmkR,kBAAAL,GACAC,GAEA,IACA,IAAAK,EAAAt5Q,MAAAk5Q,EAAA,EAAApmQ,SAAAomQ,EAAAv+Q,EAAAzF,KAAAqkR,eACAC,EAAAx5Q,MAAAk5Q,EAAA,EAAAA,EAAAv+Q,EAAAzF,KAAAukR,aACAC,EAAA,IAAA5H,EAAA0H,EAAAR,EAAAM,EAAAL,GACAt+Q,EAAAspQ,UAAAxpQ,KAAAi/Q,GACAV,GAAAz/J,CACA,CAEA5+G,EAAA6qQ,MAAA9+M,KAAA/rD,EAAAg/Q,gCACA,CACA,EAEArB,EAAA3+Q,UAAA2yQ,gBAAA,SAAAphQ,GACA,uBAAAA,EACAA,EAEAmO,WAAAnO,EAEA,EAEAotQ,EAAA3+Q,UAAA4yQ,iBAAA,SAAArhQ,GACA,wBAAAA,EACAA,EAEA,SAAAA,CAEA,EAEAotQ,EAAA3+Q,UAAAggR,8BAAA,WACA,IAAA37C,EAAApkO,KAAA0yQ,gBAAA1yQ,KAAA1E,KAAAy+Q,SAEAh5Q,EAAAf,KAOA,OANAA,KAAAqqQ,UAAAxoQ,SAAA,SAAAu7Q,GACAr8Q,EAAA2xQ,gBAAA0K,EAAA/E,iBAAAj0C,MAAArjO,EAAA2xQ,gBAAA0K,EAAA/E,gBAAA,GACAt3Q,EAAA2xQ,gBAAA0K,EAAAhF,gBAAAh0C,MAAArjO,EAAA2xQ,gBAAA0K,EAAAhF,eAAA,EACA,IAGA,CACAn2N,SAAAjiD,KAAA1E,KAAA2mD,SAEA+9N,WAAAhgR,KAAA1E,KAAA0kR,WACA/F,UAAAj6Q,KAAA0yQ,gBAAA1yQ,KAAA1E,KAAA2+Q,WACAC,QAAAl6Q,KAAA0yQ,gBAAA1yQ,KAAA1E,KAAA4+Q,SACAM,cAAAx6Q,KAAA0yQ,gBAAA1yQ,KAAA1E,KAAAk/Q,eACAF,iBAAAt6Q,KAAA0yQ,gBAAA1yQ,KAAA1E,KAAAg/Q,kBACAqD,SAAA39Q,KAAA0yQ,gBAAA1yQ,KAAA1E,KAAAqiR,UACAC,SAAA59Q,KAAA0yQ,gBAAA1yQ,KAAA1E,KAAAsiR,UACAzC,gBAAAn7Q,KAAA2yQ,iBAAA3yQ,KAAA1E,KAAA6/Q,iBAEA8E,WAAAjgR,KAAA1E,KAAA2kR,WACAnG,UAAA95Q,KAAA0yQ,gBAAA1yQ,KAAA1E,KAAAw+Q,WACAC,QAAA31C,EACAw2C,cAAA56Q,KAAA0yQ,gBAAA1yQ,KAAA1E,KAAAs/Q,eACAF,iBAAA16Q,KAAA0yQ,gBAAA1yQ,KAAA1E,KAAAo/Q,kBACAW,gBAAAr7Q,KAAA2yQ,iBAAA3yQ,KAAA1E,KAAA+/Q,iBAEAxM,eAAA7uQ,KAAA2yQ,iBAAA3yQ,KAAA1E,KAAAuzQ,gBACAmE,sBAAAhzQ,KAAA2yQ,iBAAA3yQ,KAAA1E,KAAA03Q,uBAEA3I,UAAArqQ,KAAAqqQ,UAEA,EAEAqU,EAAA3+Q,UAAAswQ,mBAAA,WACA,IAAArwQ,KAAA4rQ,MAAA,SACA,IAAA5rQ,KAAA1E,KAAA4kR,kBAAA,SAEA,IAAAC,EAAAngR,KAAA2C,OAAAm2B,WAAAvsB,SAAAvM,KAAA1E,KAAA4kR,mBAEAn/Q,EAAAf,KACA,OACAyqC,gBAAA,QACA6lO,QAAAtwQ,KAAA1E,KAAAV,GACAovC,MAAA7wC,EAAA+N,IAAAlH,KAAA4rQ,MAAA6S,gBAAA,SAAAlO,GACA,IAAAj1Q,EAAA,GAKA,OAJAA,EAAAyF,EAAAzF,KAAA8kR,iBAAA7P,EAAA4H,OACA78Q,EAAAyF,EAAAzF,KAAA+kR,iBAAA9P,EAAA6H,cACA98Q,EAAAyF,EAAAzF,KAAAglR,mBAAAH,EAEA,CACArwN,SAAAygN,EAAA31Q,GAAA21Q,EAAA31Q,GAAA,KACAU,OAEA,IAGA,EAEAojR,CACA,IACAjnR,OChNA,6BAEA,OAEA8oR,cAAA,SAAAC,GAMA,IALA,IAAAC,EAAAC,KAAAF,EAAAhoR,MAAA,SACAmoR,EAAAH,EAAAhoR,MAAA,QAAAA,MAAA,QAAAA,MAAA,QAEA01F,EAAA,IAAAt1B,YAAA6nN,EAAA/nR,QACAkoR,EAAA,IAAArrN,WAAA24B,GACAz1F,EAAA,EAAAA,EAAAgoR,EAAA/nR,OAAAD,IACAmoR,EAAAnoR,GAAAgoR,EAAA5rN,WAAAp8D,GAGA,WAAAooR,KAAA,CAAA3yL,GAAA,CAAAxoF,KAAAi7Q,GACA,EAIA,IACAlpR,OCpBA,iBACA,SACA,aACA,OACA,eACA,SAAA2B,EAAAD,EAAAqJ,EAAAs+Q,GAEA,IAAA/kP,EAAA,CACAyU,YAAApqC,EACA6kK,YAAA7kK,EACA26Q,qBAAA36Q,EACA46Q,wBAAA56Q,EACAqjC,OAAA,GACAw3O,UAAA,EACAC,sBAAA9nR,EAAA+O,KACAg5Q,uBAAA/nR,EAAA+O,KACA8U,QAAA7jB,EAAA+O,KACAi5Q,gBAAAhoR,EAAA+O,KACAk5Q,gBAAAjoR,EAAA+O,KACAm5Q,eAAAloR,EAAA+O,KACAo5Q,WAAAnoR,EAAA+O,KACAq5Q,gBAAA,MAGAC,EAAA,SAAApoR,GACA2G,KAAA3G,OAAAD,EAAAuG,OAAA,GAAAo8B,EAAA1iC,GAAA,GACA,EA6JA,OA3JAooR,EAAA1hR,UAAA2hR,GAAA,WACA,IAAA74C,EAAAzvO,EAAA,yBACAoQ,OAEAxJ,KAAA3G,OAAA4nR,UACAp4C,EAAA5gM,KAAA,uBAEAjoC,KAAA3G,OAAA4xK,QACA49D,EAAA5gM,KAAA,SAAAjoC,KAAA3G,OAAA4xK,QAEA49D,EACAntO,GAAA,SAAAsE,KAAAwhR,gBAAAj/Q,KAAAvC,OACA6G,SAAAzN,EAAA,SACA8R,QAAA,QACA,EAEAu2Q,EAAA1hR,UAAAyhR,gBAAA,SAAAlpQ,GACA,IAAA63K,EAAAl+K,MAAAlS,UAAArB,MAAAsmB,KAAA1M,EAAA+rB,OAAA8rJ,OAEAwxF,EAAA3hR,KAAA4hR,oCAAAzxF,GACA0xF,EAAA7hR,KAAA8hR,mBAAA3xF,GAEA,GAAAwxF,EACA3hR,KAAA3G,OAAA6nR,sBAAAS,EAAArpR,WACA,GAAAupR,EACA7hR,KAAA3G,OAAA8nR,uBAAAU,EAAAvpR,KAAA0H,KAAA3G,OAAA4xK,aACA,GAAAjrK,KAAA3G,OAAAmoR,gBACAxhR,KAAA3G,OAAAmoR,gBAAArxF,OACA,CACAnwL,KAAA3G,OAAA4jB,UAEA,IAAAlc,EAAAf,KACAmwL,EAAAptL,QAAA,SAAA8rE,EAAA2hH,EAAA/3L,GACA,OAAAo2E,EACAvrE,MAAA,WAEA,OADAvC,EAAA1H,OAAA+nR,gBAAAjxF,EAAAz3L,OAAAD,GACAsI,EAAAghR,cAAAvxF,EACA,IACAltL,MAAA,SAAAhI,GACA,OAAAyF,EAAAihR,SAAA1mR,EAAAk1L,EAAAl4L,KACA,IACAgL,MAAA,SAAAye,GACAhhB,EAAA1H,OAAAioR,eAAAv/P,EACA,GACA,GAAAvf,EAAA8hB,WACAhhB,MAAA,WACAvC,EAAA1H,OAAAkoR,YACA,GACA,CACA,EAEAE,EAAA1hR,UAAA6hR,oCAAA,SAAAzxF,GACA,GAAAnwL,KAAA3G,OAAA0nR,gBAAA,CAGA,IAAAkB,EAAA,KAAAjiR,KAAA3G,OAAA0nR,gBACA,OAAA5nR,EAAAmI,KAAA6uL,GAAA,SAAAp9H,GACA,OAAAA,EAAAzuD,KAAA29Q,CACA,GALA,CAMA,EAEAR,EAAA1hR,UAAA+hR,mBAAA,SAAA3xF,GACA,GAAAnwL,KAAA3G,OAAA4xK,OAAA,CAGA,IAAAi3G,EAAAliR,KAAA3G,OAAA4xK,OAAAzyK,MAAA,KAAA0O,KAAA,SAAAw3H,GACA,OAAAA,EAAA7+G,QAAA,SAAAwC,OAAA/nB,aACA,IAEA,OAAAnB,EAAAmI,KAAA6uL,GAAA,SAAAp9H,GACA,IAAAmsJ,EAAAnsJ,EAAAz6D,KACAomI,GAAA,IAAAwgF,EAAApmN,QAAA,KAAAomN,EAAAr/L,QAAA,sBAAAvlB,cAAA,GACAoL,EAAAqtD,EAAArtD,KAAAlN,MAAA,QACA,OAAAW,EAAA4I,SAAAmgR,EAAAxjJ,KAAAvlI,EAAA4I,SAAAmgR,EAAAx8Q,EACA,GAXA,CAYA,EAEA+7Q,EAAA1hR,UAAAiiR,SAAA,SAAA1mR,EAAA4jN,GACA,IAAA17L,EAAAhhB,EAAAu1B,QACAh3B,EAAAf,KAEAypC,EAAArwC,EAAAuG,OAAA,GAAAK,KAAA3G,OAAAowC,QACAA,EAAA04O,OAAAjjE,EAEA,IAAAlrM,EAAAhU,KAAA3G,OAAAm3C,OAAA,IAAAp3C,EAAA8Z,MAAAu2B,GAEA7e,EAAA,IAAAsyD,eAcA,OAbAtyD,EAAA+vD,OAAA,WACA,IAAAynM,EAAAxuQ,KAAAC,MAAA+W,EAAAwH,cACA5O,EAAAc,QAAA89P,EACA,EACAx3P,EAAAy3P,OAAAnwP,WAAA,SAAAxxB,GACAK,EAAA1H,OAAAgoR,gBAAAtsQ,KAAA81C,MAAAnqD,EAAA8+M,OAAA9+M,EAAAk9I,MAAA,KACA,EACAhzH,EAAAwrD,KAAA,OAAApiE,GAAA,GACA4W,EAAA03P,iBAAA,qCACA13P,EAAA03P,iBAAA,cAAAr3P,mBAAAi0L,IACAt0L,EAAA03P,iBAAA,2CACA13P,EAAA5C,KAAA1sB,GAEAkoB,EAAAa,OACA,EAEAo9P,EAAA1hR,UAAAgiR,cAAA,SAAAvxF,GACA,IAAAxwL,KAAAuiR,kBAAA/xF,GACA,OAAAA,EAEA,IAAAhtK,EAAAhhB,EAAAu1B,QAEAwoI,EAAAvgK,KAAA3G,OAAA2nR,mBAAA58Q,EACAs4I,EAAA18I,KAAA3G,OAAA2nR,mBAAA38Q,EAEAm+Q,EAAA,IAAAv1L,WAoCA,OAnCAu1L,EAAA7nM,OAAA,SAAA8nM,GACA,IAAAhoP,EAAA,IAAA3kB,MACA2kB,EAAAkgD,OAAA,WACA,IAAAyB,EAAAlkF,SAAAoqB,cAAA,UAEA,GAAAmY,EAAAztB,OAAAuzJ,GAAA9lI,EAAAtsB,QAAAuuI,EACAl5H,EAAAc,QAAAksK,OACA,CACA,IAAA9lD,EAAAjwG,EAAAztB,MACA29H,EAAAlwG,EAAAtsB,OAEAu8H,EAAA61B,IACA71B,EAAA61B,EACA51B,EAAAlwG,EAAAtsB,OAAAssB,EAAAztB,MAAAuzJ,GAGA51B,EAAA+R,IACA/R,EAAA+R,EACAhS,EAAAjwG,EAAAztB,MAAAytB,EAAAtsB,OAAAuuI,GAGAtgE,EAAApvE,MAAA09H,EACAtuD,EAAAjuE,OAAAw8H,EACAvuD,EAAAC,WAAA,MAAAC,UAAA7hD,EAAA,IAAAiwG,EAAAC,GAEA,IAAA61I,EAAApkM,EAAAG,UAAAi0G,EAAA9qL,MACAg9Q,EAAA5B,EAAAP,cAAAC,GAEAh9P,EAAAc,QAAAo+P,EACA,CACA,EACAjoP,EAAA9J,IAAA8xP,EAAAp+O,OAAA3d,MACA,EACA87P,EAAAt1L,cAAAsjG,GAEAhtK,EAAAa,OACA,EAEAo9P,EAAA1hR,UAAAwiR,kBAAA,SAAA/xF,GACA,OAAAxwL,KAAA3G,OAAA2nR,oBAAAxwF,EAAA9qL,KAAAgN,MAAA,UACA,EAEA+uQ,CACA,IACAhqR,OCzLA,eACA,SACA,KACA,kBACA,SAAA2B,EAAA0K,EAAA29Q,GAGA,SAAAkB,EAAAhgR,GACA3C,KAAA2C,SACA3C,KAAA4iR,UAAAxpR,EAAA,WACAoQ,OACA3C,SAAAzN,EAAA,SACA4G,KAAA6iR,yBAAAzpR,EAAA+O,KACAnI,KAAA8iR,uBAAA1pR,EAAA+O,KACAnI,KAAA+iR,yBAAA3pR,EAAA+O,IACA,CAuMA,OArMAw6Q,EAAA5iR,UAAAijR,eAAA,SAAAv5O,GAEA,OADAzpC,KAAAypC,SACAzpC,IACA,EAEA2iR,EAAA5iR,UAAAkjR,YAAA,SAAAjmR,GAEA,OADAgD,KAAAgU,IAAAlQ,EAAA1G,aAAAJ,GACAgD,IACA,EAEA2iR,EAAA5iR,UAAAmjR,eAAA,SAAA/oQ,GAEA,OADAna,KAAAma,SACAna,IACA,EAEA2iR,EAAA5iR,UAAAojR,gBAAA,SAAApC,GAEA,OADA/gR,KAAA+gR,kBACA/gR,IACA,EAEA2iR,EAAA5iR,UAAAqjR,mBAAA,SAAAn3K,GAEA,OADAjsG,KAAAqjR,eAAAp3K,EACAjsG,IACA,EAEA2iR,EAAA5iR,UAAAujR,iBAAA,SAAA92Q,GAEA,OADAxM,KAAAujR,aAAA/2Q,EACAxM,IACA,EAEA2iR,EAAA5iR,UAAAyjR,uBAAA,SAAAxC,GAEA,OADAhhR,KAAAghR,qBACAhhR,IACA,EAEA2iR,EAAA5iR,UAAAmhR,sBAAA,SAAAuC,GAEA,OADAzjR,KAAAyjR,gCACAzjR,IACA,EAEA2iR,EAAA5iR,UAAAohR,uBAAA,SAAAuC,GAEA,OADA1jR,KAAA0jR,iCACA1jR,IACA,EAEA2iR,EAAA5iR,UAAA4jR,iBAAA,SAAAd,GAEA,OADA7iR,KAAA6iR,2BACA7iR,IACA,EAEA2iR,EAAA5iR,UAAAuhR,eAAA,SAAAwB,GAEA,OADA9iR,KAAA8iR,yBACA9iR,IACA,EAEA2iR,EAAA5iR,UAAA6jR,iBAAA,SAAAb,GAEA,OADA/iR,KAAA+iR,2BACA/iR,IACA,EAEA2iR,EAAA5iR,UAAA8jR,iBAAA,WACA7jR,KAAA8jR,WAAA,EACA,EAEAnB,EAAA5iR,UAAAgkR,oBAAA,WACA/jR,KAAA8jR,WAAA,EACA,EAEAnB,EAAA5iR,UAAA+jR,UAAA,SAAAE,GACA5pR,UAAA6pR,OACAjkR,KAAAkkR,oBAAAF,GAEAhkR,KAAAmkR,gBAAAH,EACA,EAEArB,EAAA5iR,UAAAmkR,oBAAA,SAAAF,GACA,GAAA5pR,UAAA6pR,OAAA,CAEA,IAAAljR,EAAAf,KAEAA,KAAA2C,OAAA+tN,cAAAmE,cADA,GAEA70N,KAAA2C,OAAA+tN,cAAA9jK,SAAA,gBAEA7rD,EAAA8hR,2BAEA,IAAAuB,EAAA,iBAAApkR,KAAAqjR,eACAgB,OAAAC,kBAAAC,aACAF,OAAAC,kBAAAr5C,OAEA7wO,UAAA6pR,OAAAO,YACA,SAAA1hO,IAaA,SAAA2hO,GACA,IAAAthQ,EAAA,IAAAuhQ,kBACAvhQ,EAAAwhQ,QAAA,OAEAxhQ,EAAA8kN,UAAA,IAAAlwO,MAAAksG,UAAA,OACA9gF,EAAAyhQ,SAAA,aACAzhQ,EAAA0hQ,WAAA,OAEA,IAAApyQ,EAAAqyQ,UAAAhrR,SAAA8E,SAAA,KAAA9E,SAAA0oB,KAAAzhB,EAAAiT,IAAA,cAEAjT,EAAA8hR,4BAEA,IAAAkC,cACA1C,OAAAoC,EAAAhyQ,GACA,SAAAi3B,GACA3oC,EAAA+hR,uBAAAlvQ,KAAAC,MAAA61B,EAAA3nB,WACAhhB,EAAAgiR,0BACA,aAAAz6Q,GAEAvH,EAAA4B,OAAA+tN,cAAAC,WACA,GAAAxtM,EACA,CAjCA6hQ,CAAAliO,EACA,aAAAnkC,GAEA5d,EAAA4B,OAAA+tN,cAAAC,WACA,IACAs0D,gBAAAZ,OAAAa,gBAAAC,SACAf,aACAgB,aAAAf,OAAAgB,aAAAC,KACAC,QAAAxkR,EAAAwiR,cAAA,GACAiC,oBAAA,GAxBA,CAiDA,EAEA7C,EAAA5iR,UAAAokR,gBAAA,SAAAH,GACA,IAAAjjR,EAAAf,KAEA41E,EAAA,EAEAysM,EAAA,IAAAZ,EAAA,CACAjxO,OAAAxwC,KAAAgU,IACAy1B,OAAAzpC,KAAAypC,OACAs3O,gBAAA/gR,KAAA+gR,gBACAC,mBAAAhhR,KAAAghR,mBACA/1G,OAAAjrK,KAAAma,OACA8mQ,SAAA+C,EACA9C,sBAAA,SAAAhiE,GACAn+M,EAAA0iR,8BAGA1iR,EAAA0iR,gCAFAhjE,MAAAvB,EAAA,wCAAAn+M,EAAAggR,gBAAA,KAIA,EACAI,uBAAA,SAAAjiE,EAAAumE,GACA1kR,EAAA2iR,+BAGA3iR,EAAA2iR,iCAFAjjE,MAAAvB,EAAA,gCAAAumE,EAAA,sBAIA,EACAxoQ,QAAA,WACAlc,EAAA4B,OAAA+tN,cAAAmE,cAAAj/I,GAEA70E,EAAA4oN,OAAAvwN,EAAA,YACAyhC,KAAA,aACA95B,EAAA2kR,YAAAtsR,EAAA,YACAyhC,KAAA,MACA95B,EAAA4kR,aAAAvsR,EAAA,gDACAwM,IAAA,cAEA7E,EAAA4B,OAAA+tN,cAAAiE,YAAAv7N,EAAA,+CACAyyC,OAAAzyC,EAAA,2CACAyyC,OAAA9qC,EAAA4oN,QACA99K,OAAA9qC,EAAA2kR,cACA75O,OAAAzyC,EAAA,WACAyyC,OAAAzyC,EAAA,gDACAyyC,OAAA9qC,EAAA4kR,iBAEA5kR,EAAA8hR,yBAAAR,EACA,EACAjB,gBAAA,SAAAxjI,EAAAgoI,GACAhoI,EAAA,GACA78I,EAAA4oN,OAAA9uL,KAAA,cAAA+qP,EAAA,KAAAhoI,MAEA78I,EAAA4kR,aAAA//Q,IAAA,aACA,EACAy7Q,gBAAA,SAAAzzG,GACA7sK,EAAA2kR,YAAA7qP,KAAA,GAAA+yI,MACA7sK,EAAA4kR,aAAA//Q,IAAA,WAAAgoK,KACA,EACA0zG,eAAA,SAAAv/P,GACAhhB,EAAA+hR,uBAAA/gQ,EACA,EACAw/P,WAAA,WACAxgR,EAAA4B,OAAA+tN,cAAAkE,gBACA7zN,EAAAgiR,0BACA,IAGAntM,EAAA51E,KAAA2C,OAAA+tN,cAAAC,YAEA0xD,EAAAX,IACA,EAEAiB,CACA,IACAlrR,OCxNA,uCACA,SACA,OACA,UACA,cACA,WACA,KACA,gBACA,SAAA2B,EAAAoJ,EAAA8C,EAAAq9Q,EAAAlkP,EAAA36B,EAAAiwC,GACA,aAEA,IAAA8xO,EAAA,KAEAC,EAAA,kBAEAC,EAAA,qGACA,0HACA,2HACA,qIACAC,EAAA,CACAC,GAAA,QACA,gBACAC,GAAA,QACAC,GAAA,QACAC,GAAA,QACAC,GAAA,QACAh2C,GAAA,QACAi2C,GAAA,QACAx0E,GAAA,SAGA/1K,EAAA,CACAzgC,KAAA,CACAirR,UAAA,EACAC,iBAAA,EACAC,aAAA,EACAC,eAAA,EACAC,kBAAA,EACAC,wBAAA,EACAC,qBAAA,EACAC,sBAAA,EACAC,qBAAA,EACAC,qBAAA,EACAC,mBAAA,EACAC,gBAAA,EACAC,cAAA,EACAC,eAAA,EACAC,YAAA,EACAC,aAAA,EACAC,cAAA,EACAC,kBAAA,EACAC,sBAAA,EACAC,oBAAA,EACAC,kBAAA,EACAC,mBAAA,EACAC,kBAAA,EACAC,sBAAA,EACAxjR,KAAA,CACAF,EAAA,IACAC,EAAA,KAEA4vC,SAAA,CACAlvC,mBAAA,EACAmvC,YAAA,EACAO,YAAA,aAEAszO,KAAA,YACAjxO,UAAA,KAIA,SAAAuxK,EAAAllM,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEA,IAAApiB,EAAAf,KACAA,KAAAuF,SACAI,SAAA,oCACAC,IAAA,CACA8vC,WAAA,aAEAzN,KAAA,WAAAjoC,KAAA1E,KAAAk8C,UACA97C,GAAA,oBACAqF,EAAA44C,OACA,IACA35C,KAAAo3Q,UAAAj+Q,EAAAugD,SAAA,QACA15C,KAAAgoR,cAAA,KAEAhoR,KAAAioR,UAAA7uR,EAAA,iBAAA4G,KAAAo3Q,UAAA,QACAxxQ,IAAA,CACAoH,MAAA,OACAmB,OAAA,SAEAtH,SAAA7G,KAAAuF,UAEAk5B,EAAAK,aAAA9+B,MAEAA,KAAAkoR,oBAAA/uR,EAAAy+C,SAAA53C,KAAA4K,sBAAArI,KAAAvC,KAAA,eACA,CA0dA,OAxdAsF,EAAA3F,OAAA0oN,EAAA/iN,GAEA+iN,EAAAzuL,SAAA,iBAEAyuL,EAAAtoN,UAAAgH,UAAA,WAMA,GALA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2C,OAAAsxC,SAAAhzC,MAAAjB,MACA+zC,EAAAh0C,UAAAw0C,2BAAAv0C,MACAA,KAAA2M,iBAEAk5Q,EAAA,CACA,IAAAriQ,EAAAhhB,EAAAu1B,QASA,OARA7+B,QAAA,CACA,YAEA,SAAAivR,GACAtC,EAAAsC,EACA3kQ,EAAAc,SACA,IAEAd,EAAAa,OACA,CACA,EAEAgkM,EAAAtoN,UAAA0H,WAAA,WACAzH,KAAAooR,sBACA,EAEA//D,EAAAtoN,UAAAqoR,qBAAA,WACApoR,KAAAgnN,QAAAhnN,KAAAumN,eAEAvmN,KAAAgnN,SACAhnN,KAAAuF,SAAAI,SAAA,gBAEA,IAAA5E,EAAAf,KAEA2wL,EAAA,CACArqL,SAAA,YAAAtG,KAAAo3Q,UACAiR,WAAAroR,KAAAsoR,4BACAt7Q,MAAA,OACAmB,OAAA,OACAo6Q,SAAA,EACAC,UAAAxoR,KAAA1E,KAAAwsR,qBACAhuH,QAAA95J,KAAAyoR,mBACAzhE,UAAAhnN,KAAAgnN,SAAAhnN,KAAAgnN,QACA0hE,cAAA1oR,KAAA1E,KAAAsrR,uBACA+B,kBAAA3oR,KAAA1E,KAAAstR,cACAC,sBAAA7oR,KAAA8oR,mBACAC,kBAAA/oR,KAAA1E,KAAA0tR,qBACAC,cAAAjpR,KAAAkpR,qBACAC,eAAA,EACAC,oBAAA,EACA7C,SAAAvmR,KAAA1E,KAAAirR,SACA8C,mBAAArpR,KAAA1E,KAAAurR,oBACAyC,sBAAAtpR,KAAAupR,gBAAAhnR,KAAAvC,MACAwpR,aAAAC,eAAAx5F,QAAA,SACAT,MAAA,SAAAk6F,GAyBA,GAxBA3oR,EAAA+J,eAAA,aACA4+Q,EAAAhuR,GAAA,SAAAqF,EAAA4oR,eAAApnR,KAAAxB,IACA2oR,EAAAhuR,GAAA,QAAAqF,EAAA4oR,eAAApnR,KAAAxB,KAGA2oR,EAAAhuR,GAAA,mBACAqF,EAAA8lN,OAAA6iE,EAEA3oR,EAAAinR,gBACAjnR,EAAA6lC,SAAA7lC,EAAAinR,eACAjnR,EAAAinR,cAAA,KAEA,IAEAjnR,EAAAzF,KAAAsuR,mBACAF,EAAAhuR,GAAA,oBAAAgF,GACA,YAAAA,EAAA4lD,UAAA5lD,EAAA6iJ,WAEA7iJ,EAAA6jC,iBACA7jC,EAAA4qD,mBACA,EACA,IAGAvqD,EAAAzF,KAAA8tO,aAAA,CACA,IAAAygD,EAAA,yBAEAH,EAAAhuR,GAAA,oBAAA4c,GACA,WAAAuxQ,EAAA/wR,QAAAwf,EAAAguC,WAGAvlD,EAAA+oR,qBAAA,GAAA/oR,EAAAzF,KAAA+tO,YAGA/wN,EAAAisB,iBACAjsB,EAAAgzC,mBACA,GACA,GACA,CACA,EACAjsB,OAAA,CACA0qP,KAAA,CAAA39H,OAAA,KACA7vH,OAAA,CAAA6vH,OAAA,KACA5vH,UAAA,CAAA4vH,OAAA,MAEA49H,cAAA,CACA,CAAA9oQ,MAAA,IAAAsnC,IAAA,IAAA7oC,OAAA,UACA,CAAAuB,MAAA,KAAAsnC,IAAA,KAAA7oC,OAAA,SAEAsqQ,wBAAA,QACAC,YAAApmR,EAAA1G,aAAA,oBAAA0G,EAAAjH,oBACAstR,sBAAA,SAAAn2Q,EAAAs9B,EAAA84O,EAAA9xR,GAEA,cAAAg5C,EAAAt9B,EAAA6L,QAAAlhB,OAAAmF,EAAA1G,aAAA,IAAA0oR,GAAA9xQ,CACA,EACAq2Q,qBAAArqR,KAAAupR,gBAAAhnR,KAAAvC,MACAsqR,SAAAvpR,EAAAwpR,YAAAvlQ,KAAAhlB,OAAA,QACAwqR,aAAA,EACAzC,KAAA/nR,KAAAyqR,UACAP,YAAAlqR,KAAAyqR,UACA3pM,YAAA9gF,KAAA1E,KAAAw7C,WAGA92C,KAAA1E,KAAAsuR,oBACAj5F,EAAA+5F,iBAAA,aAEA1qR,KAAA1E,KAAA8tO,eACAz4C,EAAAg6F,iBAAA,SAAA9wH,EAAAh1G,GACA9jD,EAAA+oR,qBAAAjlO,EAAA2wB,QAAA98E,OAEAqI,EAAAzF,KAAA+tO,YACAxkL,EAAA2wB,QAAA,GACA,GAGAx1E,KAAA1E,KAAAsrR,yBACAj2F,EAAAi6F,kBAAA,SAAA/wH,EAAAh1G,GACA,IAAAr4C,EAAAq4C,EAAAvT,KAAAa,UACA3lC,KAAAkG,MAAA,cACAmyC,EAAAvT,KAAAa,UAAA3lC,EAAAqT,QAAA,eAEA,GAIA8E,YAAA,WACAkhQ,EAAAtrR,KAAAo2L,EACA,KACA,EAEA03B,EAAAtoN,UAAAmpR,mBAAA,WACA,IAAA2B,EAAA,GAUA,OARA7qR,KAAA1E,KAAA0tR,uBACA6B,GAAA,6DAGA7qR,KAAA1E,KAAAk5M,yBACAq2E,GAAA,iCAGAA,CACA,EAEAxiE,EAAAtoN,UAAA0qR,QAAA,WACA,oBAAAzqR,KAAA1E,KAAAysR,UAAA,EACA/nR,KAAA1E,KAAAysR,IACA,EAEA1/D,EAAAtoN,UAAA+oR,mBAAA,SAAAgC,EAAAC,GACA,WAAAt4N,SAAA,SAAAnuC,EAAAa,GACA,MAAAyF,EAAA,IAAAsyD,eACAtyD,EAAA9G,iBAAA,EAEA8G,EAAAwrD,KAAA,OAAAtyE,EAAA1G,aAAA,0CAAA0tR,EAAA5rE,aACAt0L,EAAA03P,iBAAA,cAAAr3P,mBAAA6/P,EAAA5rE,aAEAt0L,EAAAy3P,OAAAnwP,WAAA,SAAA5Z,GACAyyQ,EAAAzyQ,EAAAknM,OAAAlnM,EAAAslI,MAAA,IACA,EAEAhzH,EAAA+vD,OAAA,WACA,SAAA/vD,EAAAG,OAEA,YADA5F,EAAA,CAAAxG,QAAA,eAAAiM,EAAAG,OAAAhyB,QAAA,IAIA,GAAA6xB,EAAAG,OAAA,KAAAH,EAAAG,QAAA,IAEA,YADA5F,EAAA,eAAAyF,EAAAG,QAIA,MAAA/I,EAAApO,KAAAC,MAAA+W,EAAAwH,cAEApQ,GAAA,iBAAAA,EAAAhO,IAKAsQ,EAAAxgB,EAAA1G,aAAA,uBAAA4kB,EAAAhO,MAJAmR,EAAA,iBAAAyF,EAAAwH,aAKA,EAEAxH,EAAAgwD,QAAA,WACAz1D,EAAA,2DAAAyF,EAAAG,OACA,EAEAH,EAAA5C,KAAA8iQ,EAAApI,OACA,GACA,EAEAr6D,EAAAtoN,UAAA+pR,mBAAA,WACA,OAAA9pR,KAAA6mN,OACAmkE,WAAA,CAAArrQ,OAAA,SACAE,QAAA,yBACAnnB,MACA,EAEA2vN,EAAAtoN,UAAA4pR,eAAA,WACA,IAAAn9Q,EAAAxM,KAAA6mN,OAAAmkE,aAEAx+Q,IAAAxM,KAAAmpM,aAGAnpM,KAAAmpM,WAAA38L,EAEAxM,KAAA1E,KAAA24C,UACAj0C,KAAAgM,0BAEAhM,KAAAkoR,sBACA,EAEA7/D,EAAAtoN,UAAAuoR,0BAAA,WACA,IAAArpP,EAAAj/B,KAAA1E,KAAA+jC,OACAC,EAAA,aAEA,GAAAL,GAGA,oBAAAA,EACA,OAAAR,EAAAiB,wBAAAJ,EAAAL,OAJA,CACA,IAAAO,EAAAf,EAAAgB,4BAAAz/B,MACA,GAAAw/B,EAAA,OAAAf,EAAAiB,wBAAAJ,EAAAE,EACA,CAIA,QACA,EAEA6oL,EAAAtoN,UAAA0oR,iBAAA,WACA,IAAA3uH,EAAA,GAoBA,OAnBA95J,KAAA1E,KAAA2vR,oBACAnxH,GAAA,SACA95J,KAAA1E,KAAAstR,gBACA9uH,GAAA,UACA95J,KAAA1E,KAAA4vR,oBACApxH,GAAA,UACA95J,KAAA1E,KAAA6vR,gBACArxH,GAAA,UACA95J,KAAA1E,KAAA2rR,oBACAntH,GAAA,eACA95J,KAAA1E,KAAA4rR,iBACAptH,GAAA,YACA95J,KAAA1E,KAAA8rR,gBACAttH,GAAA,WACA95J,KAAA1E,KAAAmsR,uBACA3tH,GAAA,kBACA95J,KAAA1E,KAAAusR,mBACA/tH,GAAA,cAEAA,CACA,EAEAuuD,EAAAtoN,UAAAwmN,aAAA,WACA,IAAAS,EAAA,GA8GA,OA5GAhnN,KAAA1E,KAAAkrR,kBACAx/D,GAAA,cAEAA,IACAA,GAAA,MAEAhnN,KAAA1E,KAAAmrR,cACAz/D,GAAA,SACAhnN,KAAA1E,KAAAorR,gBACA1/D,GAAA,WACAhnN,KAAA1E,KAAAqrR,mBACA3/D,GAAA,cACAhnN,KAAA1E,KAAAwrR,uBACA9/D,GAAA,kBAEAA,IACAA,GAAA,MAEAhnN,KAAA1E,KAAA8vR,oBACApkE,GAAA,eACAhnN,KAAA1E,KAAA+vR,kBACArkE,GAAA,aACAhnN,KAAA1E,KAAAgwR,wBACAtkE,GAAA,cACAhnN,KAAA1E,KAAAiwR,wBACAvkE,GAAA,cAEAA,IACAA,GAAA,MAEAhnN,KAAA1E,KAAAkwR,mBACAxkE,GAAA,kDAEAA,IACAA,GAAA,MAEAhnN,KAAA1E,KAAA2vR,oBACAjkE,GAAA,gBAEAA,IACAA,GAAA,MAEAhnN,KAAA1E,KAAA4vR,oBACAlkE,GAAA,oBAEAA,IACAA,GAAA,MAEAhnN,KAAA1E,KAAAmwR,qBACAzkE,GAAA,mBAEAA,IACAA,GAAA,MAEAhnN,KAAA1E,KAAA6vR,gBACAnkE,GAAA,UAEAA,IACAA,GAAA,MAEAhnN,KAAA1E,KAAAstR,gBACA5hE,GAAA,UAEAhnN,KAAA1E,KAAAyrR,sBACA//D,GAAA,WAEAhnN,KAAA1E,KAAA0rR,sBACAhgE,GAAA,iBAEAhnN,KAAA1E,KAAA2rR,oBACAjgE,GAAA,eAEAhnN,KAAA1E,KAAA4rR,iBACAlgE,GAAA,YAEAhnN,KAAA1E,KAAA6rR,eACAngE,GAAA,UAEAhnN,KAAA1E,KAAA8rR,gBACApgE,GAAA,WAEAhnN,KAAA1E,KAAA+rR,aACArgE,GAAA,QAEAhnN,KAAA1E,KAAAgsR,cACAtgE,GAAA,SAEAhnN,KAAA1E,KAAAisR,eACAvgE,GAAA,UAEAhnN,KAAA1E,KAAAksR,mBACAxgE,GAAA,cAEAhnN,KAAA1E,KAAAmsR,uBACAzgE,GAAA,kBAEAhnN,KAAA1E,KAAAosR,qBACA1gE,GAAA,gBAEAhnN,KAAA1E,KAAAqsR,mBACA3gE,GAAA,cAEAhnN,KAAA1E,KAAAssR,oBACA5gE,GAAA,eAEAhnN,KAAA1E,KAAAusR,mBACA7gE,GAAA,cAEAA,CACA,EAEAqB,EAAAtoN,UAAA45C,MAAA,WACA,GAAA35C,KAAA6mN,OACA7mN,KAAA6mN,OAAAltK,YACA,CACA,IAAA54C,EAAAf,KACA7G,EAAA4+B,OAAA,WACAh3B,EAAA44C,OACA,GACA,CACA,EAEA0uK,EAAAtoN,UAAAwM,SAAA,WACA,IAAAvM,KAAA6mN,OAAA,YACA,IAAArxI,EAAAx1E,KAAA6mN,OAAAmkE,aACA,OAAAhrR,KAAA1E,KAAAsuR,kBAAAp0M,EAAA31D,QAAA,uBAAA21D,CACA,EAEA6yI,EAAAtoN,UAAAo3C,WAAA,WACAn3C,KAAA6mN,SAEA7mN,KAAA6mN,OAAAj+K,WAAA,IACA5oC,KAAAmpM,WAAA,GACA,EAEAkf,EAAAtoN,UAAA6mC,SAAA,SAAA8M,GACA,GAAA1zC,KAAA6mN,OAAA,CACA,GAAAnzK,EAAAlnC,MAAA,CACA,IAAAg1G,EAAA,IAAAjvG,OAAAuzQ,EAAA,KACAtwM,EAAA9hC,EAAAlnC,MAAAqT,QAAA2hG,EAAA19G,EAAA1G,aAAA,KACA4C,KAAA6mN,OAAAj+K,WAAA4sC,GACAx1E,KAAAmpM,WAAA3zH,CACA,MAEAx1E,KAAA6mN,OAAAj+K,WAAA,IACA5oC,KAAAmpM,WAAA,GAGAnpM,KAAAgM,yBACA,MACAhM,KAAAgoR,cAAAt0O,CAEA,EAEA20K,EAAAtoN,UAAAoM,SAAA,WACA,QAAAnM,KAAA6mN,QACA,KAAAztN,EAAAipB,KAAAriB,KAAA6mN,OAAAmkE,WAAA,CAAArrQ,OAAA,SACA,EAEA0oM,EAAAtoN,UAAAwpR,gBAAA,SAAAjqD,EAAA9yN,EAAAk/Q,GACA,IAAA3qR,EAAAf,KACA,IAAA2iR,EAAA3iR,KAAA2C,QACAsgR,YAAA,mCACAC,eAAA,WACA5B,gBAAA,SAAAqK,GACA,IAAAA,EAAAtlQ,QACA,UAAA5J,MAAA,kBAEA,IAAAqmC,EAAAh/C,EAAA1G,aAAA,0BACA6tB,mBAAA0gQ,EAAA33Q,KACA,aAAAiX,mBAAA0gQ,EAAAzsE,WAEAogB,EAAAzlO,OAAAC,SAAA6E,QAAA,MAAAmkD,EAAAlqD,OAAA,GAAAkqD,EAAA,IAAAA,GAAA,CAAA3S,MAAAw7O,EAAAzsE,UACA,IACA0kE,kBAAA,WACA7iR,EAAA4B,OAAA+tN,cAAAlnN,MACA,IAEAq6Q,kBACA,EAEAx7D,EAAAtoN,UAAAwqR,YAAA,WACA,IACAqB,EADA5rR,KAAA2C,OAAAm2B,WAAA6N,QAAAwD,SACA,uBACA,GAAAyhP,EAAA,CACA,IAAAC,EAAA7F,EAAA4F,MACA,QAAA7F,EAAAjtR,QAAA+yR,GACA,OAAAA,CACA,CAGA,IADA,IAAAC,EAAA1xR,UAAA2xR,YAAA3xR,UAAA4xR,aAAA,CAAA5xR,UAAA4xR,cAAA,IACAvzR,EAAA,EAAAA,EAAAqzR,EAAApzR,OAAAD,IAAA,CACA,IAAAwzR,EAAAH,EAAArzR,GAAAonB,QAAA,SACA,QAAAkmQ,EAAAjtR,QAAAmzR,GACA,OAAAA,CACA,CACA,EAEA5jE,EAAAtoN,UAAAmP,yBAAA,WACAlP,KAAA6mN,QACAg/D,EAAA9sR,OAAA,IAAAiH,KAAAo3Q,UACA,EAEA/uD,CACA,IACA5wN,OC7jBA,gJAAA2B,EAAA0K,EAAAwB,EAAAm5B,EAAAuM,EAAAk+K,EAAA/vN,GACA,aAEA,IAAA4iC,EAAA,CACAzgC,KAAA,CACAiqN,OAAA,mBACA2mE,WAAA,OACAC,eAAA,WACAC,YAAA,QACA9nR,KAAA,CACAF,EAAA,IACAC,EAAA,OAKAgoR,EAAA,SAAAC,GACA,IAAAvrR,EAAAf,KAEAe,EAAAurR,yBACAvrR,EAAAzF,KAAAgxR,EAAAhxR,KACAyF,EAAAwrR,UAAA,GAEAxrR,EAAAwE,SAAAnM,EAAA,WAEAA,EAAA,YACAyhC,KAAA,eACAh0B,SAAA7G,KAAAuF,UAEAxE,EAAAyrR,WAAApzR,EAAA,cACAsC,GAAA,qBACA,IAAA+wR,EAAA,IAAA1rR,EAAAyrR,WAAA91Q,KAAA,iBACA3V,EAAA2rR,MAAAh2Q,KAAA,WAAA+1Q,GACA1rR,EAAA4rR,QAAAj2Q,KAAA,WAAA+1Q,EACA,IACA5gP,OAAAzyC,EAAA,cAAAoT,MAAA,KAAAquB,KAAA,2BACAh0B,SAAA7G,KAAAuF,UAEAxE,EAAA2rR,MAAAtzR,EAAA,cACAyhC,KAAA,QACAnkB,KAAA,eACAhb,GAAA,oBACAkxR,QAAA,qGAIA5hP,EAAAC,SACA,8BACA,CACA/R,SAAAn4B,EAAA4B,OAAAu2B,SACA2uO,QAAA9mQ,EAAAzF,KAAAV,GACAA,GAAAmG,EAAAyrR,WAAA1zO,QAEA,SAAAx9C,GACAgxR,EAAAO,aAAAvxR,EAAAwxR,OACA,GACA,IACAjmR,SAAA9F,EAAAwE,UAEAxE,EAAA4rR,QAAAvzR,EAAA,cACAyhC,KAAA,UACAnkB,KAAA,eACAhb,GAAA,oBACAkxR,QAAA,mDAIA5hP,EAAAC,SACA,gCACA,CACA/R,SAAAn4B,EAAA4B,OAAAu2B,SACA2uO,QAAA9mQ,EAAAzF,KAAAV,GACAA,GAAAmG,EAAAyrR,WAAA1zO,QAEA,WACA/3C,EAAAgsR,eACA,GACA,IACAlmR,SAAA9F,EAAAwE,UAEAxE,EAAAgsR,eACA,EAEAV,EAAAtsR,UAAAgtR,cAAA,SAAAC,GACA,IAAAjsR,EAAAf,KAEAA,KAAA2C,OAAAm1C,gBAAA7M,SACAlqC,EAAAzF,KAAAo8C,YACA,SAAAp8C,GACAyF,EAAAwrR,UAAAjxR,EAAA68B,QAEAp3B,EAAAyrR,WACA/xO,QACA5O,OAAAzyC,EAAA,cAAAoT,MAAA,KAAAquB,KAAA,2BAEAzhC,EAAAgJ,KAAArB,EAAAwrR,WAAA,SAAA37Q,EAAA2tB,GACAx9B,EAAAyrR,WACA3gP,OAAAzyC,EAAA,cACAoT,MAAA+xB,EAAAvI,GACA6E,KAAA0D,EAAAx9B,EAAAzF,KAAA4wR,cAEA,IAEA,IAAAe,GAAAlsR,EAAAmsR,gBAAAF,GACAjsR,EAAA2rR,MAAAh2Q,KAAA,WAAAu2Q,GACAlsR,EAAA4rR,QAAAj2Q,KAAA,WAAAu2Q,EACA,GACA,EAEAZ,EAAAtsR,UAAAmtR,gBAAA,SAAA5mR,GACA,GAAAA,EAAA,CACA,IAAA6mR,EAAAh0R,EAAAmI,KAAAtB,KAAAusR,UAAAjmR,GAEA,GAAA6mR,EAEA,OADAntR,KAAAwsR,WAAA1zO,IAAAq0O,EAAAn3P,KACA,CAEA,CAEA,QACA,EAEAq2P,EAAAtsR,UAAAqtR,qBAAA,SAAA90R,GACA,IAAAyI,EAAAf,KACA,OAAA7G,EAAAmI,KAAAtB,KAAAusR,WAAA,SAAAp6N,GACA,OAAAA,EAAApxD,EAAAzF,KAAA4wR,cAAA5zR,CACA,GACA,EAEA+zR,EAAAtsR,UAAAstR,eAAA,WACArtR,KAAAwsR,WAAA1zO,IAAA,KACA,EAEA,IAAAw0O,EAAA,SAAAhB,GACA,IAAAvrR,EAAAf,KAEAe,EAAAurR,yBACAvrR,EAAAzF,KAAAgxR,EAAAhxR,KACAyF,EAAAwE,SAAAnM,EAAA,WAEAA,EAAA,YACAyhC,KAAA,sBACAh0B,SAAA7G,KAAAuF,UAEAxE,EAAAwsR,MAAAn0R,EAAA,aACAsC,GAAA,oBACAqF,EAAAysR,cACA,IACA3mR,SAAA7G,KAAAuF,UAEAxE,EAAA0gG,QAAAroG,EAAA,cACAyhC,KAAA,UACAnkB,KAAA,eACAhb,GAAA,oBACAqF,EAAAw2F,MACA,IACA1wF,SAAA7G,KAAAuF,SACA,EAuDA,SAAAkoR,EAAAtqQ,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GACA,IAAApiB,EAAAf,KAEAe,EAAA2sR,iBAAA,IAAArB,EAAAtrR,GACAA,EAAA4sR,cAAA,IAAAL,EAAAvsR,GAEAA,EAAAwE,SACAI,SAAA,mBACAC,IAAA,CACA8vC,WAAA,aAGAjX,EAAAK,aAAA/9B,GAEA,IAAAslN,EAAAjtN,EAAA,WACAyN,SAAA9F,EAAAwE,UAEAnM,EAAA,WACAwM,IAAA,CACAzB,SAAA,WACAuC,IAAA,OACAC,MAAA,SAEAklC,OAAA9qC,EAAA2sR,iBAAAnoR,UACAsB,SAAAw/M,GAEA,IAAAmC,EAAApvN,EAAA,WACAwM,IAAA,CACAzB,SAAA,WACAuC,IAAA,OACAE,OAAA,IACAH,KAAA,IACAE,MAAA,MAEAE,SAAAw/M,GAEAtlN,EAAAilN,eAAA,IAAAkD,EAAAb,eAAA,CACAC,cAAAE,EACAD,SAAAvoN,KAAA1E,KAAAitN,SACAznI,YAAA9gF,KAAA1E,KAAAwlF,YACA8sM,oBAAA,EACAxoR,UAAA,IAGAhM,EAAA,WACAwM,IAAA,CACAzB,SAAA,WACAyC,OAAA,OACAD,MAAA,SAEAklC,OAAA9qC,EAAA4sR,cAAApoR,UACAsB,SAAAw/M,EACA,CA2CA,OArJAinE,EAAAvtR,UAAAw3F,KAAA,WACA,IAAAx2F,EAAAf,KACA1H,EAAAyI,EAAAwsR,MAAAz0O,MACA+0O,EAAA9sR,EAAAurR,uBAAAc,qBAAA90R,GAEA,IAAAu1R,GACAjB,QAAA,6DAAAt0R,EAAA,OADA,CAMA,IAAAmN,EAAA1E,EAAAurR,uBAAAtmE,eAAAoC,UAEA9sN,EAAA,CACA49B,SAAAn4B,EAAA4B,OAAAu2B,SACA2uO,QAAA9mQ,EAAAzF,KAAAV,GACAA,GAAAizR,IAAA73P,GAAA,KACA,gBAAAj1B,EAAAzF,KAAA6wR,eACA,kBAAAprR,EAAAurR,uBAAAwB,cACA,gBAAA/sR,EAAAzF,KAAA4wR,WACA,kBAAA5zR,EACA,gBAAAyI,EAAAzF,KAAA8wR,YACA,kBAAAx4Q,KAAAE,UAAArO,IAGAulC,EAAAC,SACA,8BACA3vC,GACA,WACAyF,EAAAurR,uBAAAoB,iBAAAX,eAAA,SAAA56N,GACA,OAAAA,EAAApxD,EAAAzF,KAAA4wR,cAAA5zR,CACA,GACA,GAvBA,CAwBA,EAEAg1R,EAAAvtR,UAAAguR,mBAAA,SAAAz1R,GACA0H,KAAAutR,MAAAz0O,IAAAxgD,GACA0H,KAAAwtR,cACA,EAEAF,EAAAvtR,UAAAytR,aAAA,WACAxtR,KAAAutR,MAAAz0O,MACA94C,KAAAyhG,QAAA/qF,KAAA,eAEA1W,KAAAyhG,QAAA/qF,KAAA,cAEA,EAEA42Q,EAAAvtR,UAAAiuR,UAAA,WACAhuR,KAAAutR,MAAAz0O,IAAA,IACA94C,KAAAwtR,cACA,EAyDAloR,EAAA3F,OAAA8tR,EAAAnoR,GAEAmoR,EAAA7zP,SAAA,yBAEA6zP,EAAA1tR,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,eACA,EAEA8gR,EAAA1tR,UAAAqtR,qBAAA,SAAA90R,GACA,OAAA0H,KAAA0tR,iBAAAN,qBAAA90R,EACA,EAEAm1R,EAAA1tR,UAAA8sR,aAAA,SAAAtuP,GACAv+B,KAAAgmN,eAAAgD,UAAAp1M,KAAAC,MAAA0qB,EAAAv+B,KAAA1E,KAAA8wR,eACApsR,KAAA2tR,cAAAI,mBAAAxvP,EAAAv+B,KAAA1E,KAAA4wR,YACA,EAEAuB,EAAA1tR,UAAA+tR,YAAA,WACA,OAAA9tR,KAAA1E,KAAA2yR,oBAIAjuR,KAAA2C,OAAAm2B,WAAAvsB,SAAAvM,KAAA1E,KAAA4yR,UAHAluR,KAAA1E,KAAA4yR,QAIA,EAEAT,EAAA1tR,UAAAwM,SAAA,WACA,OAAAvM,KAAAgmN,eAGAhmN,KAAAgmN,eAAAv1M,WAFA,IAGA,EAEAg9Q,EAAA1tR,UAAA6mC,SAAA,SAAA8M,GACA1zC,KAAA0tR,iBAAAL,iBACArtR,KAAA2tR,cAAAK,YACAhuR,KAAAgmN,eAAA9pF,WAAAxoF,EAAAlnC,MACA,EAEAihR,EAAA1tR,UAAAo3C,WAAA,SAAAzD,GAAA,EAEA+5O,CACA,IACAh2R,OCtTA,iDACA,SACA,aACA,KACA,qBACA,YACA,SAAA2B,EAAAD,EAAA2K,EAAA2hM,EAAAngM,GACA,aAEA,IAAA6oR,EAAA,KAEAC,EAAA,SAAAjrQ,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,SAAA+pB,EACA,EAuEA,OArEA7d,EAAA3F,OAAAyuR,EAAA9oR,GAEA8oR,EAAAx0P,SAAA,sBAEAw0P,EAAAruR,UAAAgH,UAAA,WACA/G,KAAA2M,eACA,EAEAyhR,EAAAruR,UAAA0H,WAAA,WACAzH,KAAA1E,KAAA+yR,0BACAruR,KAAA4mC,SAAA,CACAp6B,MAAA,MAGA,EAEA4hR,EAAAruR,UAAAwM,SAAA,WACA,OAAAvM,KAAAsuR,eACA,EAEAF,EAAAruR,UAAAo3C,WAAA/9C,EAAA+O,KAEAimR,EAAAruR,UAAA6mC,SAAA,SAAA8M,GACA,IAAA1lC,EAAA0lC,EAAAlnC,MAEAi5L,EAAAtkL,KAAA,0BACA7d,KAAAtD,KAAAuuR,cAAAhsR,KAAAvC,KAAAgO,GACA,EAEAogR,EAAAruR,UAAAwuR,cAAA,SAAAvgR,EAAAwgR,GACA,GAAAL,EAQAnuR,KAAAyuR,iBAAAzgR,EAAAwgR,OARA,CACA,IAAAztR,EAAAf,KACA5G,EAAAf,IAAAyL,EAAA1G,aAAA,sBACA,SAAA9B,GACA6yR,EAAA7yR,EACAyF,EAAA0tR,iBAAAzgR,EAAAwgR,EACA,GACA,CAGA,EAEAJ,EAAAruR,UAAA0uR,iBAAA,SAAAC,EAAAF,GACAxuR,KAAAsuR,gBAAAI,EAEA,IAAA3tR,EAAAf,KACAwuR,EAAA5hH,QAAA,CACA3vK,QAAA6G,EAAA/G,WAAA,IACA9B,OAAA6I,EAAAvK,gBACA2B,YAAA4I,EAAArK,2BACAokB,MAAA6wQ,EAAA96Q,KAAAC,MAAA66Q,GAAA,GACAtzR,cAAA0I,EAAA/E,qBACAzF,YAAAwK,EAAA9E,iBACAV,YAAAwF,EAAAzF,eAAA,IACAhB,UAAAyG,EAAA1G,aAAA,IACAuxR,SAAAR,EAAAQ,SACAC,aAAA,CACAC,iBAAA,IAEAt3L,KAAA,SAAA1kF,EAAA7E,GACAjN,EAAAutR,gBAAA16Q,KAAAE,UAAA9F,GACAjN,EAAA6J,sBAAA,cACA,EACA0lB,OAAA,WACAvvB,EAAA6J,sBAAA,gBACA,GACA5K,KAAAuF,SAAAlN,IAAA,GACA,EAEA+1R,CACA,IACA32R,OCtFA,gDACA,SACA,eACA,WACA,8BACA,SAAA2B,EAAA2X,EAAA0tB,EAAAmmO,GACA,aAEA,SAAAkqB,EAAAC,GACA/uR,KAAA+uR,cAEA/uR,KAAAgvR,OAAA71R,EAAA41R,EAAAzzR,KAAA0jL,QAAAtmL,QAAA69I,MAAAv2I,KAAAmhO,WAAA5+N,KAAAvC,OAEAA,KAAAuF,SAAAnM,EAAA,WACAsC,GAAA,QAAAsE,KAAAivR,WAAA1sR,KAAAvC,OACA6rC,OAAA1yC,EAAA+N,IAAAlH,KAAAgvR,QAAA,SAAA/9E,EAAAx4M,GACA,OAAAW,EAAA,WACAyyC,OAAAolK,EACA,IACA,CA+HA,OA7HA69E,EAAA/uR,UAAAohO,WAAA,SAAA1oO,GACA,IAAAowO,EAAAzvO,EAAA,yBACAsC,GAAA,SAAAsE,KAAAkvR,cAAA3sR,KAAAvC,KAAAvH,IACAiD,GAAA,QAAAsE,KAAAkvR,cAAA3sR,KAAAvC,KAAAvH,IACAiD,GAAA,WAAAsE,KAAAmvR,WAAA5sR,KAAAvC,KAAAvH,IACAiD,GAAA,QAAAsE,KAAAovR,cAAA7sR,KAAAvC,OACAtE,GAAA,OAAAsE,KAAAu8M,UAAAh6M,KAAAvC,OAcA,OAZAA,KAAAqvR,eAAA52R,IACAowO,EACA+7B,mBAAA,CACA/5K,UAAA7qF,KAAA+uR,YAAAz2O,UAAAzzC,mBAIA45B,EAAAK,aAAA9+B,KAAA+uR,YAAA,KAAAlmD,EAAA7oO,KAAA+uR,YAAAzzR,KAAA+jC,OAAA,SAGAwpM,EAAAjjO,IAAA,aAAA5F,KAAA+uR,YAAAzzR,KAAA0jL,QAAAvmL,GAAA62R,WAEAzmD,CACA,EAEAimD,EAAA/uR,UAAAsvR,eAAA,SAAA52R,GACA,iBAAAuH,KAAA+uR,YAAAzzR,KAAA0jL,QAAAvmL,GAAAiN,IACA,EAEAopR,EAAA/uR,UAAAkvR,WAAA,SAAAvuR,GACAA,EAAAy7I,QACAn8I,KAAA+uR,YAAAQ,mBAAAvvR,MAEAA,KAAA+uR,YAAAS,eAAAxvR,KACA,EAEA8uR,EAAA/uR,UAAAqvR,cAAA,SAAA1uR,GACA+9B,EAAAK,aAAA9+B,KAAA,KAAA5G,EAAAsH,EAAA2jC,QAAArkC,KAAA+uR,YAAAzzR,KAAA+jC,OAAA,iBACA,EAEAyvP,EAAA/uR,UAAAw8M,UAAA,SAAA77M,GACA+9B,EAAAK,aAAA9+B,KAAA,KAAA5G,EAAAsH,EAAA2jC,QAAArkC,KAAA+uR,YAAAzzR,KAAA+jC,OAAA,QACA,EAEAyvP,EAAA/uR,UAAAmvR,cAAA,SAAAO,GACAzvR,KAAA+uR,YAAAG,cAAAO,EACA,EAEAX,EAAA/uR,UAAAovR,WAAA,SAAAM,EAAAn3Q,GACA,KAAAA,EAAAguC,SAEAtmD,KAAA+uR,YAAAW,cAAA1vR,KAAAyvR,EACA,EAEAX,EAAA/uR,UAAAo9P,UAAA,WACAn9P,KAAAuF,SAAAI,SAAA,aACA,EAEAmpR,EAAA/uR,UAAAqsH,QAAA,WACA,IAAArrH,EAAAf,KACA,OAAA7G,EAAAyiD,MAAA57C,KAAA+uR,YAAAzzR,KAAA0jL,SAAA,SAAAG,EAAA1mL,GACA,OAAAsI,EAAAiuR,OAAAv2R,GAAAqgD,KACA,GACA,EAEAg2O,EAAA/uR,UAAA4vR,YAAA,WACA3vR,KAAAuF,SAAAqD,YAAA,aACA,EAEAkmR,EAAA/uR,UAAA6vR,MAAA,SAAAp6M,GAEA,IADA,IAAA3kE,EAAA2kE,EAAAh9E,MAAA,KACAC,EAAA,EAAAA,EAAAoY,EAAAnY,QAAAD,EAAAuH,KAAAgvR,OAAAt2R,OAAAD,IAAA,CACA,IAAA+T,EAAAqE,EAAApY,GACAuH,KAAAgvR,OAAAv2R,GACAqgD,IAAAtsC,EACA,CACA,EAEAsiR,EAAA/uR,UAAA8vR,WAAA,SAAAJ,EAAAjjR,GACAxM,KAAAqvR,eAAAI,KACAjjR,EAAAxM,KAAA8vR,sBAAAtjR,IAEAxM,KAAAgvR,OAAAS,GACA32O,IAAAtsC,EACA,EAEAsiR,EAAA/uR,UAAA+vR,sBAAA,SAAAtjR,GACA,OAAAxM,KAAA+uR,YAAAz2O,UAAA6D,yBAAAprC,EAAAE,WAAAG,QAAA5E,EACA,EAEAsiR,EAAA/uR,UAAAgwR,kBAAA,SAAAN,GACA,IAAAjjR,EAAAxM,KAAAgvR,OAAAS,GAAA32O,MACAgjE,EAAA97G,KAAA+uR,YAAAz2O,UAAAgxL,uBAAAv4N,EAAAE,WAAAG,QAAA5E,GACA,OAAA09F,MAAA4R,EAAA,KAAAA,CACA,EAEAgzK,EAAA/uR,UAAA8lM,QAAA,SAAAvqM,GACA,IAAAyF,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAA+uR,YAAAzzR,KAAA0jL,SAAA,SAAAG,EAAA1mL,GACA,IAAA+T,EAAAlR,EAAA6jL,EAAA7I,WACAv1K,EAAA8uR,WAAAp3R,EAAA+T,EACA,GACA,EAEAsiR,EAAA/uR,UAAAknP,QAAA,WACA,IAAA3rP,EAAA,GAEAyF,EAAAf,KAOA,OANA7G,EAAAiJ,KAAApC,KAAA+uR,YAAAzzR,KAAA0jL,SAAA,SAAAG,EAAA1mL,GACA6C,EAAA6jL,EAAA7I,WAAAv1K,EAAAsuR,eAAA52R,GACAsI,EAAAgvR,kBAAAt3R,GACAsI,EAAAiuR,OAAAv2R,GAAAqgD,KACA,IAEAx9C,CACA,EAEAwzR,EAAA/uR,UAAAiwR,qBAAA,WACAhwR,KAAAiwR,gBAAA,EACA,EAEAnB,EAAA/uR,UAAAkwR,gBAAA,SAAAzuR,GACAxB,KAAAuF,SAAAjE,KAAA,SACAy5C,GAAAv5C,GACA0J,QAAA,QACA,EAEA4jR,CACA,IACAr3R,OCpJA,6CACA,SACA,UACA,WACA,iDACA,SAAA2B,EAAAkM,EAAAm5B,EAAAqwP,GACA,aAEA,IAAA/yP,EAAA,CACAzgC,KAAA,CACA40R,oBAAA,IACAlxG,QAAA,KAIA,SAAAmxG,EAAAhtQ,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,qCAAA2iC,EAAA5Y,GAEAnjB,KAAA+tM,aAAA,GACA/tM,KAAAowR,UAAA,KACApwR,KAAAqwR,cAAA,GAEArwR,KAAA6hQ,MAAAzoQ,EAAA,qCACAyN,SAAA7G,KAAAuF,UAEAk5B,EAAAK,aAAA9+B,MAEA,IAAAe,EAAAf,KACAA,KAAAkvR,cAAA/1R,EAAAy+C,UAAA,SAAA63O,GACAA,IAAAtqL,OAAApkG,EAAAzF,KAAAg1R,sBAEAvvR,EAAAwvR,gBACA,OACA,CA8TA,OA5TAjrR,EAAA3F,OAAAwwR,EAAA7qR,GAEA6qR,EAAAv2P,SAAA,oBAEAu2P,EAAApwR,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAw4C,WACA9zC,KAAAwwR,uBAAAjuR,KAAAvC,MACA5G,EAAA+O,MAEAnI,KAAAs4C,UAAAt4C,KAAA2C,OAAA+B,WAAA6zC,gBAAAv4C,KAAA1E,KAAAoJ,YAEA1E,KAAA2M,gBAEA3M,KAAAywR,4BAEAzwR,KAAA+2I,KAAAr+I,OAAA,GACAsH,KAAAwvR,eAAAxvR,KAAA+2I,KAAA,GACA,EAEAo5I,EAAApwR,UAAA0wR,0BAAA,WACAzwR,KAAA+2I,KAAA59I,EAAA6G,KAAA1E,KAAA40R,qBAAA35I,MAAAv2I,KAAA0wM,UAAAnuM,KAAAvC,OACAA,KAAA6hQ,MAAAh2N,OAAA1yC,EAAA0zL,MAAA7sL,KAAA+2I,KAAA,YACA,EAEAo5I,EAAApwR,UAAA2wM,UAAA,WACA,IAAAt0J,EAAA,IAAA0yO,EAAA9uR,MAgBA,OAdA7G,EAAAiJ,KAAApC,KAAA1E,KAAA0jL,SAAA,SAAAG,EAAA1mL,GACA,UAAA0mL,EAAAnyK,YAAA5G,IAAA+4K,EAAAnyK,MAAA,CAGA,IAAAikM,EAAA70J,EAAA72C,SACAm9B,SAAA,OAAAjqC,EAAA,KAGA,IAAA0mL,EAAAnyK,MACAikM,EAAArrM,IAAA,kBAEAqrM,EAAArrM,IAAA,QAAAu5K,EAAAnyK,MAAA,KATA,CAUA,IAEAovC,CACA,EAEA+zO,EAAApwR,UAAAywR,uBAAA,SAAAl1R,GACA0E,KAAAqwR,cAAA,GAEA,IAAAK,EAAA1wR,KAAA2wR,yBAAAr1R,GAEA,GAAA0E,KAAA+2I,KAAAr+I,OAAAg4R,EAAA,CACA,IAAAE,EAAAz3R,EAAAu3R,EAAA1wR,KAAA+2I,KAAAr+I,QAAA69I,MAAAv2I,KAAA0wM,UAAAnuM,KAAAvC,OACAA,KAAA+2I,KAAAl2I,KAAAI,MAAAjB,KAAA+2I,KAAA65I,GACA5wR,KAAA6hQ,MAAAh2N,OAAA1yC,EAAA0zL,MAAA+jG,EAAA,YACA,MAAA5wR,KAAA+2I,KAAAr+I,OAAAg4R,IACA1wR,KAAA+2I,KAAAt1I,OAAAivR,GACA1wR,KAAA6hQ,MACAn/N,WACAvoB,OAAA,QAAAu2Q,EAAA,QACA33R,UAGA,IAAAg+I,EAAA/2I,KAAA+2I,KACA85I,EAAA7wR,KAAA1E,KAAAu1R,gBACA9vG,EAAA/gL,KAAA1E,KAAAylL,SACA+vG,EAAA33R,EAAA6gB,OAAA1e,EAAA68B,QAAA04P,GAEA13R,EAAAiJ,KAAA0uR,GAAA,SAAApqQ,EAAAjuB,GACAs+I,EAAAt+I,GAAAotM,QAAAn/K,GACAqwH,EAAAt+I,GAAAu5M,MAAAtrL,EAAAq6J,EACA,IAEA,IAAAgwG,EAAA53R,EAAAmI,KAAAy1I,GAAA,SAAA36F,GACA,OAAAA,EAAAgwE,SACA,IACA2kK,IACAA,EAAAh6I,EAAA,IAEA/2I,KAAAwvR,eAAAuB,GAEA/wR,KAAAuwR,gBACA,EAEAJ,EAAApwR,UAAA4wR,yBAAA,SAAAr1R,GACA,WAAAA,EAAA68B,QAAAz/B,OAAAsH,KAAA1E,KAAA40R,oBAAA50R,EAAA68B,QAAAz/B,MACA,EAEAy3R,EAAApwR,UAAAyvR,eAAA,SAAApzO,GACA,OAAAp8C,KAAA+tM,aAAAr1M,QAAAsH,KAAA+tM,aAAA,KAAA3xJ,EAAA,CAEAjjD,EAAAiJ,KAAApC,KAAA+tM,cAAA,SAAA3xJ,GACAA,EAAAuzO,aACA,IAEA3vR,KAAA+tM,aAAA,CAAA3xJ,GAEAp8C,KAAAgxR,wBAAA50O,GAEAA,EAAA+gN,YAEA,IAAA8zB,EAAA93R,EAAAohB,MAAAva,KAAA+2I,QAAA36F,IAAAp8C,KAAA+2I,KAAA59I,EAAAL,QAAAkH,KAAA+2I,KAAA36F,GAAA,GACAtuC,EAAA9N,KAAAuF,SAAAuI,YAAAmjR,EAAA1rR,SAAApB,WAAAuC,KAEA1G,KAAAuF,SAAAuI,iBAAA9N,KAAAuF,SAAAuI,YAAA9N,KAAAuF,SAAA4I,WACAnO,KAAAuF,SAAAuI,YAhBA,CAiBA,EAEAqiR,EAAApwR,UAAAwvR,mBAAA,SAAAnzO,GACAp8C,KAAAkxR,cAAA90O,IACAp8C,KAAA+tM,aAAA50M,EAAAgsB,OAAAnlB,KAAA+tM,cAAA,SAAAojF,GACA,OAAAA,IAAA/0O,CACA,IACAA,EAAAuzO,gBAEA3vR,KAAA+tM,aAAAltM,KAAAu7C,GACAA,EAAA+gN,YACAn9P,KAAAgxR,wBAAA50O,GAEA,EAEA+zO,EAAApwR,UAAAmxR,cAAA,SAAA90O,GACA,WAAAjjD,EAAAL,QAAAkH,KAAA+tM,aAAA3xJ,EACA,EAEA+zO,EAAApwR,UAAAixR,wBAAA,SAAA50O,GACAp8C,KAAA1E,KAAA81R,qBAGApxR,KAAA2C,OAAAm2B,WAAAgQ,OAAAlC,SAAA5mC,KAAA1E,KAAA81R,oBAAAj4R,EAAAL,QAAAkH,KAAA+2I,KAAA36F,GACA,EAEA+zO,EAAApwR,UAAAwwR,eAAA,WACA,GAAAvwR,KAAA8K,eAAA,YAGA,IAAAknQ,EAAAhyQ,KAAAqxR,mBACArxR,KAAAowR,YAAApe,IAGAhyQ,KAAA4C,aAAA5C,KAAA1E,KAAAoI,SAAA,QAAAE,gBAAAouQ,GACAhyQ,KAAAowR,UAAApe,EAPA,CAQA,EAEAme,EAAApwR,UAAAsxR,iBAAA,WACA,IAAAf,EAAAtwR,KAAA1E,KAAAg1R,oBAEA,WAAAtwR,KAAA1E,KAAAg2R,sBAAA,CACA,IAAAl8Q,EAAAL,KAAAud,IAAA,GAAAtyB,KAAAs4C,UAAAxzC,kBACA84I,EAAAzkJ,EAAA4J,OAAA/C,KAAA+2I,MAAA,SAAA3lE,EAAAh1B,GACA,OAAAg1B,GAAAh1B,EAAA2zO,kBAAAO,GAAAl7Q,GAAA,EACA,MAGA,OAFAwoI,EAAA7oI,KAAA81C,MAAA+yF,GACAA,GAAAxoI,CAEA,CAEA,UAAAqH,MAAA,mBACA,EAEA0zQ,EAAApwR,UAAA6mC,SAAA,SAAA8M,GACA,GAAAA,EAAAlnC,MAAA,CAEA,IAAA+kR,EAAAvxR,KAAA+tM,aAAAr1M,OAAA,EAAAsH,KAAAwxR,wBAAA,EACAzvC,EAAAruM,EAAAlnC,MAAAhU,MAAA,MACAi5R,EAAAF,EAAAxvC,EAAArpP,OAEA+4R,EAAAzxR,KAAA+2I,KAAAr+I,QACAsH,KAAA0xR,aAAAD,EAAAzxR,KAAA+2I,KAAAr+I,QAEA,QAAAD,EAAA,EAAAA,EAAAspP,EAAArpP,OAAAD,IAAA,CACA,IAAA48E,EAAA0sK,EAAAtpP,GACA2jD,EAAAp8C,KAAA+2I,KAAAt+I,EAAA84R,GACAn1O,KAAAwzO,MAAAv6M,EACA,CAEA,IAAAs8M,EAAA3xR,KAAA+2I,KAAAw6I,EAAAxvC,EAAArpP,QACAi5R,EACA3xR,KAAAwvR,eAAAmC,GAEA3xR,KAAAwvR,eAAAr2R,EAAAmhB,KAAAta,KAAA+2I,OAEA/2I,KAAAuwR,gBArBA,CAsBA,EAEAJ,EAAApwR,UAAAyxR,sBAAA,WACA,OAAAr4R,EAAA+I,MAAAlC,KAAA+tM,cACA7mM,IAAAlH,KAAA4xR,cAAArvR,KAAAvC,OACAqyB,MACA7lB,OACA,EAEA2jR,EAAApwR,UAAA2xR,aAAA,SAAAG,GACA,IAAA9wR,EAAAf,KACA7G,EAAAiJ,KAAAjJ,EAAA+hF,MAAA22M,IAAA,WACA,IAAAz1O,EAAAr7C,EAAA2vM,YACA3vM,EAAAg2I,KAAAl2I,KAAAu7C,GACAr7C,EAAA8gQ,MAAAh2N,OAAAuQ,EAAA72C,SACA,GACA,EAEA4qR,EAAApwR,UAAAswQ,mBAAA,WACA,IAAArwQ,KAAA+2I,KAAA,SAEA,IAAA+6I,EAAA9xR,KAAA1E,KAAAw2R,mBACAC,EAAA/xR,KAAA1E,KAAAy2R,gBACA7R,EAAAlgR,KAAA1E,KAAA4kR,kBACApnP,EAAA94B,KAAA2C,OAAAm2B,WACA,OACA2R,gBAAA,QACA6lO,QAAAtwQ,KAAA1E,KAAAV,GACAovC,MAAA7wC,EAAA+N,IAAAlH,KAAA+2I,MAAA,SAAA36F,EAAA3jD,GACA,IAAA6C,EAAA8gD,EAAA6qM,UAMA,OALA3rP,EAAAw2R,GAAAr5R,EAEA2jD,EAAA41J,QACA12M,EAAAy2R,GAAAj5P,EAAAvsB,SAAA2zQ,IAEA,CACApwN,SAAA1T,EAAA41J,MACA12M,OAEA,IACA02R,QAAAhyR,KAAAqwR,cAEA,EAEAF,EAAApwR,UAAAkyR,6BAAA,SAAAC,GACA,IAAAn7I,EAAA/2I,KAAA+2I,KACA59I,EAAAiJ,KAAA8vR,GAAA,SAAAC,EAAA15R,GACAs+I,EAAAt+I,GAAAu5M,MAAAmgF,CACA,GACA,EAEAhC,EAAApwR,UAAA2vR,cAAA,SAAA0C,EAAA3C,GACA,IAAA4C,EAAAryR,KAAA4xR,cAAAQ,GAEA,GAAAC,IAAAryR,KAAA+2I,KAAAr+I,OAAA,GAGA,IAAA45R,EAAAtyR,KAAA+2I,KAAAs7I,EAAA,GACAryR,KAAAwvR,eAAA8C,GAEAA,EAAArC,gBAAAR,EALA,CAMA,EAEAU,EAAApwR,UAAAwyR,wBAAA,WACA,IAAAC,EAAAxyR,KAAA+tM,aAAAr1M,OAAA,EACA8I,EAAAgxR,EACAxyR,KAAA4xR,cAAA5xR,KAAA+tM,aAAA,IACA,EAEAogE,EAAAnuQ,KAAA0wM,YAEA8hF,GAAAxyR,KAAA+tM,aAAA,KAAA50M,EAAAmhB,KAAAta,KAAA+2I,OACA/2I,KAAA+2I,KAAAl2I,KAAAstQ,GAEAnuQ,KAAA6hQ,MAAAn/N,WAAAqY,GAAAv5C,GACA2oF,MAAAgkL,EAAA5oQ,YAEAvF,KAAA+2I,KAAAt1I,OAAAD,EAAA,EAAA2sQ,GAEA,IAAA3sQ,EACAxB,KAAA6hQ,MAAAxqN,QAAA82N,EAAA5oQ,UAEAvF,KAAA6hQ,MAAAn/N,WAAAqY,GAAAv5C,GACAg5D,OAAA2zM,EAAA5oQ,WAGAvF,KAAAwvR,eAAArhB,GACAA,EAAA6hB,sBACA,EAEAG,EAAApwR,UAAA0yR,wBAAA,WACA,OAAAzyR,KAAA+tM,aAAAr1M,OAAA,CAGA,IAAAg6R,EAAA1yR,KAAA2yR,uBAIA,GAFAx5R,EAAAiJ,KAAApC,KAAA+tM,aAAA/tM,KAAA4yR,UAAArwR,KAAAvC,OAEA,IAAAA,KAAA+2I,KAAAr+I,OAAA,CACA,IAAAm6R,EAAA7yR,KAAA+2I,KAAAr+I,OAAAg6R,IAAA1yR,KAAA+2I,KAAAr+I,OAAA,EACAo6R,EAAA9yR,KAAA+2I,KAAA87I,GACA7yR,KAAAwvR,eAAAsD,GACAA,EAAA9C,sBACA,MACAhwR,KAAAmxR,YAAA,GAGAnxR,KAAAuwR,gBAfA,CAgBA,EAEAJ,EAAApwR,UAAA4yR,qBAAA,WACA,OAAAx5R,EAAA+I,MAAAlC,KAAA+tM,cACA7mM,IAAAlH,KAAA4xR,cAAArvR,KAAAvC,OACAm3B,MACA3qB,OACA,EAEA2jR,EAAApwR,UAAA6yR,UAAA,SAAAx2O,GACAA,EAAA72C,SAAAxM,SAEAqjD,EAAA41J,OACAhyM,KAAAqwR,cAAAxvR,KAAAu7C,EAAA41J,OAEA,IAAAxwM,EAAAxB,KAAA4xR,cAAAx1O,GACAp8C,KAAA+2I,KAAAt1I,OAAAD,EAAA,EACA,EAEA2uR,EAAApwR,UAAA6xR,cAAA,SAAAx1O,GACA,OAAAp8C,KAAA+2I,KAAAj+I,QAAAsjD,EACA,EAEA+zO,EAAApwR,UAAAo3C,WAAA/9C,EAAA+O,KAEAgoR,CACA,IACA14R,OCjWA,+BACA,SACA,aACA,KACA,YACA,SAAA2B,EAAAD,EAAA2K,EAAA0R,GACA,aA8mEA,OA5mEA,SAAA/P,EAAAs7F,EAAAulH,EAAAysE,EAAAj6P,EAAAk6P,EAAAlrR,GACA,IAAA/G,EAAAf,KA2cA,SAAAizR,EAAA36Q,GACA7S,EAAAw8C,WAEA,UAAAlhD,EAAAmyR,SAAA,SAAAnyR,EAAAmyR,SACAnyR,EAAAi3F,OAAA,EACAm7L,GAAA,GACAC,KACA,SAAAryR,EAAAmyR,SACAnyR,EAAA67J,UAAA77J,EAAAtF,QAAA43R,iBAAAtyR,EAAAuyR,MAAAvyR,EAAAwyR,OACAxyR,EAAAmtK,SAAA,GACA,WAAAntK,EAAAmyR,SA8XA,WACA,IAAAz6R,EAEAsI,EAAAsvO,GAAAtvO,EAAAtF,QAAA43R,iBAAAtyR,EAAAuyR,MAAAvyR,EAAAwyR,OAEA,IAAAC,GAAA,EAEA,IAAA/6R,EAAA,EAAAA,EAAAsI,EAAA8nD,OAAAnwD,OAAAD,IACAg7R,EAAA,CAAArvR,EAAArD,EAAA8nD,OAAApwD,GAAA2L,EAAAC,EAAAtD,EAAA8nD,OAAApwD,GAAA4L,GAAAtD,EAAAsvO,IAAAtvO,EAAA2yR,6BACAF,EAAA,GACAC,EAAA,CAAArvR,EAAArD,EAAA8nD,OAAApwD,GAAA2L,EAAAC,EAAAtD,EAAA8nD,OAAApwD,GAAA4L,GAAAtD,EAAAsvO,IACAojD,EAAA,CAAArvR,EAAArD,EAAA8nD,OAAA2qO,GAAApvR,EAAAC,EAAAtD,EAAA8nD,OAAA2qO,GAAAnvR,GAAAtD,EAAAsvO,OAEAmjD,EAAA/6R,GAIAk7R,EAAAH,EACA,CA/YAI,GAEA,CAEA,SAAAC,EAAAv7Q,GACA,IAAAvX,EAAAi3F,OAAA,UAAAj3F,EAAAmyR,SAAA,SAAAnyR,EAAAmyR,QAGA,YAAAnyR,EAAAmyR,SAEA,GADAnyR,EAAAmtK,SAAA,EACAntK,EAAA67J,UAAA,CACA,IAAAyzE,EAAAtvO,EAAAtF,QAAA43R,iBAAAtyR,EAAAuyR,MAAAvyR,EAAAwyR,OACAxyR,EAAAtF,QAAAglD,UAAA4vL,EAAAjsO,EAAArD,EAAA67J,UAAAx4J,EAAAisO,EAAAhsO,EAAAtD,EAAA67J,UAAAv4J,GACAyvR,IACAV,GACA,MACA,WAAAryR,EAAAmyR,UACAnyR,EAAAgzR,aAAA,EACAhzR,EAAAgzR,YAAA,GACAC,UAbAb,GAAA,GACAC,GAeA,CAEA,SAAAa,EAAA37Q,GACA,UAAAvX,EAAAmyR,SAAA,SAAAnyR,EAAAmyR,QACAnyR,EAAAi3F,OAAA,EACA,SAAAj3F,EAAAmyR,SACAnyR,EAAA67J,UAAA,KACA77J,EAAAmtK,SACAlN,EAAA1oJ,EAAAirI,UAAA,MAEA,WAAAxiJ,EAAAmyR,UACAnyR,EAAAmzR,gBACAC,IAEApzR,EAAAgzR,YAAA,GAGAhzR,EAAA8nD,OAAAnwD,OAAA,IAAAqI,EAAA8nD,OAAA9nD,EAAA8nD,OAAAnwD,OAAA,GAAAywD,MACApoD,EAAA8nD,OAAAt0C,MAGA,IAAA6/Q,EAAArzR,EAAAszR,iBAEAjB,IAEAryR,EAAAiyR,kBAAAsB,oBAAAF,EAAArzR,EAAAszR,kBAAA,GACAtzR,EAAAiyR,kBAAAuB,+BAEA,CA8NA,SAAAC,EAAA7vI,EAAAtR,EAAA33I,GACA,IAAA4K,EAAA,IAAAq+I,EAAA/pJ,GAEAmG,EAAA0zR,gBAAAnzR,KAAAgF,GAAA,GAAAqqB,IADA0iH,GAAA33I,EACAoI,EAAA5G,UAAAynJ,EAAA+vI,UACArhJ,EACAvvI,EAAA5G,UAAAynJ,EAAAgwI,WACAj5R,EACAoI,EAAA5G,UAAAynJ,EAAAiwI,YAEA9wR,EAAA5G,UAAAynJ,EAAAkwI,YAEA,CAEA,SAAAC,EAAAnwI,EAAAjpJ,EAAAq5R,GACA,IAAAzuR,EAAA,IAAAq+I,EAAA/pJ,GACAo6R,EAAA,WACAt5R,EACAqF,EAAA0zR,gBAAAnzR,KAAAgF,GAAAT,SAAAD,IAAA,aAEA7E,EAAA0zR,gBAAAnzR,KAAAgF,GAAAT,SAAAD,IAAA,eAEA,EACA7E,EAAA0zR,gBAAAnzR,KAAAgF,GAAA,GAAA0qB,gBAOAgkQ,KANAj0R,EAAA0zR,gBAAAnzR,KAAAgF,GAAA5K,GAAA,mBACAtC,EAAA2H,EAAA0zR,gBAAAnzR,KAAAgF,GAAA,GAAA0qB,gBAAAikQ,uBAAA,UAAAhtP,KAAA,OAAA8sP,GAAA,IACAC,GACA,IACAj0R,EAAA0zR,gBAAAnzR,KAAAgF,GAAA,GAAAhL,KAAAwI,EAAA5G,UAAAynJ,EAAA+vI,UAIA,CAEA,SAAAQ,EAAAlxJ,GACA,IAAA79E,EAAA,EACA,GACA8jD,MAAA+5B,EAAA79E,cACAA,GAAA69E,EAAA79E,kBAEA69E,IAAA+3B,cACA,OAAA51G,CACA,CAEA,SAAAgvO,EAAAnxJ,GACA,IAAA99E,EAAA,EACA,GACA+jD,MAAA+5B,EAAA99E,aACAA,GAAA89E,EAAA99E,iBAEA89E,IAAA+3B,cACA,OAAA71G,CACA,CAEA,SAAAkvO,EAAAC,GACA,IAAAvnR,EAAA2R,WAAA1e,EAAA+G,eAAAgG,aACAs4B,EAAA3mB,WAAA1e,EAAA+G,eAAAs+B,cACAsrG,EAAAjyH,WAAA1e,EAAAggG,QAAAn7F,IAAA,sBACAgsI,EAAAnyH,WAAA1e,EAAAggG,QAAAn7F,IAAA,qBACA,OAAAxB,EAAAixR,EAAA9pR,MAAA2pR,EAAAn0R,EAAAq7E,QAAAh2C,GAAAsrG,GAAA,GACArtI,EAAAgxR,EAAA7pR,MAAA2pR,EAAAp0R,EAAAq7E,QAAAtuE,GAAA8jI,GAAA,GACA,CAEA,SAAA6hJ,EAAA6B,EAAAC,GACA,IAAA16F,EAAA06F,EAAAnxR,EAAAkxR,EAAAlxR,EACAy2L,KACA,IAAA26F,EAAAD,EAAAlxR,EAAAixR,EAAAjxR,EAGA,OAFAmxR,KAEAzgR,KAAA6wC,KAAAi1I,EAAA26F,EACA,CAEA,SAAAx0H,EAAAn4G,GACA,IAAA9nD,EAAA00R,gBACA10R,EAAA20R,YAAA7sO,EAAA,IAAA9nD,EAAA20R,YAAA7sO,GAAA,IACA9nD,EAAA20R,YAAA30R,EAAA20R,YAAA7sO,EACA,IAAAwnL,EAAAtvO,EAAAtF,QAAA43R,iBAAAtyR,EAAAuyR,MAAAvyR,EAAAwyR,OACAxyR,EAAAtF,QAAAglD,UAAA4vL,EAAAjsO,EAAAisO,EAAAhsO,GACA,IAAA0J,EAAAgH,KAAAud,IAAAvxB,EAAA40R,YAAA9sO,GACA9nD,EAAAtF,QAAAysC,MAAAn6B,KACAhN,EAAAtF,QAAAglD,WAAA4vL,EAAAjsO,GAAAisO,EAAAhsO,GAEAyvR,IAEAV,GACA,CAEA,CAEA,SAAAD,EAAAnqO,GACAjoD,EAAAsvO,GAAAtvO,EAAAtF,QAAA43R,iBAAAtyR,EAAAuyR,MAAAvyR,EAAAwyR,OACAxyR,EAAAtF,QAAAglD,UAAA1/C,EAAAsvO,GAAAjsO,EAAArD,EAAAsvO,GAAAhsO,GAEAtD,EAAA8nD,OAAAnwD,OAAA,IAAAswD,IAAAjoD,EAAA8nD,OAAA9nD,EAAA8nD,OAAAnwD,OAAA,GAAAywD,MACApoD,EAAA8nD,OAAAt0C,MAGA,SAAAxT,EAAAmyR,SACAnyR,EAAA8nD,OAAAhoD,KAAA,CAAAuD,EAAArD,EAAAsvO,GAAAjsO,EAAAC,EAAAtD,EAAAsvO,GAAAhsO,EAAA8kD,KAAAH,EAAA1kD,KAAAvD,EAAA60R,eAAA15P,MAAAn7B,EAAA80R,iBAEA,UAAA90R,EAAAmyR,SACAnyR,EAAA8nD,OAAAhoD,KAAA,CAAAuD,EAAArD,EAAAsvO,GAAAjsO,EAAAC,EAAAtD,EAAAsvO,GAAAhsO,EAAA8kD,KAAAH,EAAA1kD,KAAAvD,EAAA+0R,SAAA55P,MAAAn7B,EAAAg1R,WAGAh1R,EAAAi1R,WACAj1R,EAAAk1R,cAAAv9R,OAAA,EACAqI,EAAAm1R,WACAn1R,EAAAtF,QAAAglD,WAAA1/C,EAAAsvO,GAAAjsO,GAAArD,EAAAsvO,GAAAhsO,EACA,CAsBA,SAAAsvR,EAAAH,GACA,IAAA/6R,EAEA,GAAA+6R,GAAA,GAGA,IAFAzyR,EAAAo1R,gBAAA3C,EACAzyR,EAAAq1R,cAAA5C,EACA/6R,EAAA+6R,EAAAzyR,EAAA8nD,OAAApwD,OAAA,GAAAsI,EAAA8nD,OAAApwD,GAAA0wD,KAAA1wD,IACAsI,EAAAo1R,gBAAA19R,EAAA,EAEA,IAAAA,EAAA+6R,EAAAzyR,EAAA8nD,OAAApwD,EAAA,IAAAsI,EAAA8nD,OAAApwD,EAAA,GAAA0wD,KAAA1wD,IACAsI,EAAAq1R,cAAA39R,EAAA,EAEAsI,EAAAs1R,uBAAAt1R,EAAA8nD,OAAA2qO,GAAAt3P,MACA,IAAAo6P,EAmCA,SAAAx1N,EAAAy1N,GACA,eAAAz1N,EACA,gBACA,eAAAA,EACA,iBAGAA,EAAAnuB,OAAAmuB,GAAAjhD,QAAA,mBACAnnB,OAAA,IACAooE,IAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAEAy1N,KAAA,EAGA,IAAA59R,EAAAF,EAAA+oD,EAAA,IACA,IAAA/oD,EAAA,EAAAA,EAAA,EAAAA,IACAE,EAAAugB,SAAA4nD,EAAA3qD,OAAA,EAAA1d,EAAA,OAEA+oD,IAAA,MADA7oD,EAAAoc,KAAA81C,MAAA91C,KAAAsd,IAAAtd,KAAAoiB,IAAA,EAAAx+B,IAAA49R,GAAA,MAAA9lR,SAAA,MACA0F,OAAAxd,EAAAD,QAGA,OAAA8oD,CAEA,CA1DAg1O,CAAAz1R,EAAA8nD,OAAA2qO,GAAAt3P,MAAA,IACA,IAAAzjC,EAAAsI,EAAAo1R,gBAAAp1R,EAAA8nD,OAAApwD,MAAAsI,EAAAq1R,cAAA,EAAA39R,IACAsI,EAAA8nD,OAAApwD,GAAAyjC,MAAAo6P,EAEAv1R,EAAAmzR,gBAAA,EACAd,GACA,CACA,CAEA,SAAAY,IACA,IAAAv7R,EAEA,GAAAsI,EAAAmzR,eAAA,CACA,IAAAz7R,EAAAsI,EAAAo1R,gBAAAp1R,EAAA8nD,OAAApwD,MAAAsI,EAAAq1R,cAAA,EAAA39R,IACAsI,EAAA8nD,OAAApwD,GAAAyjC,MAAAn7B,EAAAs1R,uBAEAt1R,EAAAmzR,gBAAA,EACAd,GACA,CACA,CAEA,SAAAe,IACA,IAAA17R,EAGA,IADAsI,EAAAk1R,cAAAp1R,KAAAE,EAAA8nD,OAAApnD,OAAAV,EAAAo1R,gBAAAp1R,EAAAq1R,cAAAr1R,EAAAo1R,gBAAA,IACA19R,EAAA,EAAAA,EAAAsI,EAAAk1R,cAAAl1R,EAAAk1R,cAAAv9R,OAAA,GAAAA,OAAAD,IACAsI,EAAAk1R,cAAAl1R,EAAAk1R,cAAAv9R,OAAA,GAAAD,GAAAyjC,MAAAn7B,EAAAs1R,uBAEAt1R,EAAA01R,UAAA,GACA11R,EAAAmzR,gBAAA,EACAnzR,EAAA21R,oBAAAh+R,OAAA,EACAqI,EAAAszR,iBAAA,EACAjB,GACA,CA2BA,SAAAuD,EAAAC,GACA,IAAAC,EAAA,IAAA35M,eAEA25M,EAAAzgN,KAAA,MAAAtyE,EAAA1G,aAAA,uBAAAw5R,IAAA,GACAC,EAAA7uQ,OAMA,IAJA,IAEA8uQ,EAFAD,EAAAE,YAEA9lQ,WACA+lQ,EAAAF,EAAA7kP,WACAx5C,EAAA,EAAAA,EAAAu+R,EAAAt+R,OAAAD,IAAA,CACA,IAAAuE,EAAAg6R,EAAAv+R,GAEA,YAAAuE,EAAAmqF,SAAA,CAIA,IAAA8vM,EAAAj6R,EAAA86E,aAAA,kBAEAo/M,EAAAC,EADAD,EAAAl6R,EAAA86E,aAAA,UACAm/M,GACAG,EAAAp6R,EAAA86E,aAAA,gBACAu/M,EAAAr6R,EAAA86E,aAAA,KAAAj4D,QAAA,gCAAAA,QAAA,oBAAArnB,MAAA,KACA8+R,EAAAD,EAAA,GAAA34R,MAAA,GAAAlG,MAAA,KAIA,GAFAuI,EAAA8nD,OAAAhoD,KAAA,CAAAuD,EAAAqb,WAAA63Q,EAAA,IAAAjzR,EAAAob,WAAA63Q,EAAA,IAAAnuO,MAAA,EAAA7kD,KAAA8yR,EAAAl7P,MAAAg7P,IAEA,SAAAl6R,EAAA86E,aAAA,SACAw/M,EAAAD,EAAA,GAAA34R,MAAA,GAAAlG,MAAA,KACAuI,EAAA8nD,OAAAhoD,KAAA,CAAAuD,EAAAqb,WAAA63Q,EAAA,IAAAjzR,EAAAob,WAAA63Q,EAAA,IAAAnuO,MAAA,EAAA7kD,KAAA8yR,EAAAl7P,MAAAg7P,SACA,aAAAl6R,EAAA86E,aAAA,SACA,QAAA3jD,EAAA,EAAAA,EAAAkjQ,EAAA3+R,OAAAy7B,IACA,IAAAkjQ,EAAAljQ,GAAAr7B,QAAA,MACAw+R,EAAAD,EAAAljQ,GAAAz1B,MAAA,GAAAlG,MAAA,KACAuI,EAAA8nD,OAAAhoD,KAAA,CAAAuD,EAAAqb,WAAA63Q,EAAA,IAAAjzR,EAAAob,WAAA63Q,EAAA,IAAAnuO,MAAA,EAAA7kD,KAAA8yR,EAAAl7P,MAAAg7P,IACA/iQ,IAAAkjQ,EAAA3+R,OAAA,OAAA4+R,EAAA5+R,QACAqI,EAAA8nD,OAAAhoD,KAAA,CAAAuD,EAAAqb,WAAA63Q,EAAA,IAAAjzR,EAAAob,WAAA63Q,EAAA,IAAAnuO,MAAA,EAAA7kD,KAAA8yR,EAAAl7P,MAAAg7P,KAEA/iQ,IAAAkjQ,EAAA3+R,OAAA,IACA4+R,EAAAD,EAAAljQ,GAAA37B,MAAA,KACAuI,EAAA8nD,OAAAhoD,KAAA,CAAAuD,EAAAqb,WAAA63Q,EAAA,IAAAjzR,EAAAob,WAAA63Q,EAAA,IAAAnuO,MAAA,EAAA7kD,KAAA8yR,EAAAl7P,MAAAg7P,IAxBA,CA4BA,CACA,GAAAn2R,EAAAw2R,WAAA,CACA,IAAAC,EAAAV,EAAA7kP,WAAA,GAEA,GADAlxC,EAAA02R,uBAAA,KACA,WAAAD,EAAArwM,SAAA,CAEA,IAAAuwM,EAAAF,EAAA1/M,aAAA,WACA6/M,EAAAH,EAAA1/M,aAAA,YACA8/M,EAAAJ,EAAA1/M,aAAA,WACA+/M,EAAAL,EAAA1/M,aAAA,YACAggN,EAAAN,EAAA1/M,aAAA,UACAigN,EAAAP,EAAA1/M,aAAA,SAEA/2E,EAAA02R,uBAAA,CACAC,UACAC,WACAC,UACAC,WACAC,SACAC,QAEA,CACA,CAEA,GAAAjB,EAAAh/M,aAAA,UACA,IAAAkgN,EAAAlB,EAAAh/M,aAAA,SAEAkgN,EAAAl/R,QAAA,mBAAAiI,EAAAk3R,WACAl3R,EAAAm3R,cAGAn3R,EAAAo3R,SAAAj/Q,SAAA8+Q,EAAAn4Q,QAAA,aACAuzQ,IAEA4E,EAAAl/R,QAAA,gBACAiI,EAAAq3R,cAAA,EAEAr3R,EAAAq3R,cAAA,CAEA,CACAhF,GACA,CAgMA,SAAAiF,EAAAhmQ,EAAA8E,GACA,OAAA9E,EAAA,EACA8E,EAAA,EACApiB,KAAAD,IAAAud,GAAAtd,KAAAD,IAAAqiB,GAEApiB,KAAAD,IAAAud,GAAAtd,KAAAD,IAAAqiB,GAGAA,EAAA9E,CAEA,CAEA,SAAArmB,IACA,IAAAjL,EAAA8nD,OAAAnwD,OACAU,EAAA2nG,EAAA,GAAAunH,eAAA3iN,SAAA,iBAEAvM,EAAA2nG,EAAA,GAAAunH,eAAA1/M,YAAA,gBACA,CAIA,SAAAwqR,EAAAkF,EAAAC,EAAAC,GACAz3R,EAAAtF,UACAg9R,IA6OAt/R,EAAA0I,QAAA40E,GAAA,SAAAsjK,GACAA,EAAA2+C,gBACA,mBAAA3+C,EAAA12N,YACA02N,EAAA12N,aAEAs1Q,EAAA5+C,GACAA,EAAA2+C,eAAA,EAEA,IA9OA,SAAAJ,EAAAC,EAAAC,GACA,GAAAz3R,EAAA63R,cAAAL,IAAAD,EAQAv3R,EAAA63R,cAAAJ,GACAK,EAAA93R,EAAA63R,aACAE,MAEAA,IACA/3R,EAAA63R,YAAA,UAbA,CACA,IAAAl+M,EAAA,IAAA5kE,MACA4kE,EAAAC,OAAA,WACAk+M,EAAA74R,MACAe,EAAA63R,YAAA54R,KACA84R,GACA,EACAp+M,EAAA/pD,IAAA2nQ,CACA,CAOA,CArBAS,CAAAT,EAAAC,EAAAC,GACAxsR,IAEA,CAoBA,SAAAysR,IACA,IAAAj5M,EAAAz+E,EAAAtF,QAAA43R,iBAAA,KACA5zM,EAAA1+E,EAAAtF,QAAA43R,iBAAAtyR,EAAAq7E,OAAApvE,MAAAjM,EAAAq7E,OAAAjuE,QACApN,EAAAtF,QAAA4qO,UAAA7mJ,EAAAp7E,EAAAo7E,EAAAn7E,EAAAo7E,EAAAr7E,EAAAo7E,EAAAp7E,EAAAq7E,EAAAp7E,EAAAm7E,EAAAn7E,EACA,CAEA,SAAAy0R,IAYA,IAXA/3R,EAAAq3R,eAAAr3R,EAAAk3R,WACAe,EAAA,QAGAj4R,EAAAk4R,eAAAl4R,EAAAm4R,gBAAAn4R,EAAAo4R,WACAH,EAAA,kBAGAj4R,EAAAtF,QAAA09F,SAAA,QACAp4F,EAAAtF,QAAA+iG,QAAA,QAEA/lG,EAAAsI,EAAAszR,iBAAA57R,EAAAsI,EAAA8nD,OAAAnwD,OAAAD,UACA,IAAAsI,EAAA8nD,OAAApwD,EAAA,SAAAsI,EAAA8nD,OAAApwD,EAAA,GAAA0wD,OAAApoD,EAAAi3F,OAAAv/F,IAAAsI,EAAA8nD,OAAAnwD,OAAA,KACAqI,EAAA21R,oBAAA71R,KAAA,CAAAu4R,IAAAr4R,EAAAszR,iBAAA7rO,IAAA/vD,IACAsI,EAAAszR,iBAAA57R,EAAA,GAIA,IAAAA,EAAA,EAAAA,EAAAsI,EAAA21R,oBAAAh+R,OAAAD,IACA4gS,EAAAt4R,EAAA8nD,OAAAnqD,MAAAqC,EAAA21R,oBAAAj+R,GAAA2gS,IAAAr4R,EAAA21R,oBAAAj+R,GAAA+vD,IAAA,IAIA,QAAA/vD,EAAAsI,EAAAszR,iBAAA57R,EAAAsI,EAAA8nD,OAAAnwD,OAAAD,IACAsI,EAAAtF,QAAAg+F,YACA14F,EAAA8nD,OAAApwD,GAAA0wD,MAAA1wD,EACAsI,EAAAtF,QAAAg/F,OAAA15F,EAAA8nD,OAAApwD,EAAA,GAAA2L,EAAArD,EAAA8nD,OAAApwD,EAAA,GAAA4L,GAEAtD,EAAAtF,QAAAg/F,OAAA15F,EAAA8nD,OAAApwD,GAAA2L,EAAArD,EAAA8nD,OAAApwD,GAAA4L,GAEAtD,EAAAtF,QAAAi/F,OAAA35F,EAAA8nD,OAAApwD,GAAA2L,EAAArD,EAAA8nD,OAAApwD,GAAA4L,GACAtD,EAAAtF,QAAAg/F,OAAA15F,EAAA8nD,OAAApwD,GAAA2L,EAAArD,EAAA8nD,OAAApwD,GAAA4L,GACAtD,EAAAtF,QAAAm/F,YACA75F,EAAAtF,QAAAw9F,YAAAqgM,EAAAv4R,EAAA8nD,OAAApwD,GAAAyjC,OACAn7B,EAAAtF,QAAAy9F,UAAAn4F,EAAA8nD,OAAApwD,GAAA6L,KACAvD,EAAAtF,QAAAgjG,SAGA19F,EAAAq3R,cAAAr3R,EAAAk3R,WACAe,EAAA,QAGAj4R,EAAAk4R,cAAAl4R,EAAAm4R,gBAAAn4R,EAAAo4R,WACAH,EAAA,iBAEA,CAEA,SAAAH,EAAAn+M,EAAAq/J,GACAh5O,EAAAw4R,sBAAA,KACA,IAAAC,EAAAz4R,EAAAtF,QACA,GAAAi/E,EAAA,CAMA,GAHAq/J,IACAy/C,EAAAz/C,EAAAt+O,SAEAsF,EAAA02R,wBAAA12R,EAAAw2R,WAKA,OAJAiC,EAAAl9M,UAAA5B,EAAA,IAAA35E,EAAA02R,uBAAAC,QAAA32R,EAAA02R,uBAAAE,SACA52R,EAAA02R,uBAAAK,OAAA/2R,EAAA02R,uBAAAM,MAAAh3R,EAAA02R,uBAAAG,QAAA72R,EAAA02R,uBAAAI,eAEA92R,EAAAw4R,sBAAAx4R,EAAA02R,wBAIA,GAAA12R,EAAA04R,iBA4EA,SAAA14L,EAAApwE,GACAowE,EACAn7F,IAAA,0BAAA+qB,EAAA,KAEA,kBAAA5vB,EAAAiyR,kBAAA99E,qBACAn0G,EAAAn7F,IAAA,+BACA,oCAAA7E,EAAAiyR,kBAAA99E,qBACAn0G,EAAAn7F,IAAA,CACA,4BACA,gCACA,wCAEA,cAAA7E,EAAAiyR,kBAAA99E,qBACAn0G,EAAAn7F,IAAA,CACA,yBACA,kCAEA,kBAAA7E,EAAAiyR,kBAAA99E,sBACAn0G,EAAAn7F,IAAA,CACA,0BACA,gCACA,uCAEA,CAlGA8zR,CAAAtgS,EAAA2H,EAAAq7E,QAAA1B,EAAA/pD,SADA,CAMA,qBAAA5vB,EAAAiyR,kBAAA99E,qBAWA,OAVAskF,EAAAl9M,UAAA5B,EAAA,IAAAA,EAAA1tE,MAAA0tE,EAAAvsE,OACA,IAAApN,EAAAq7E,OAAApvE,MAAAjM,EAAAq7E,OAAAjuE,aACApN,EAAAw4R,sBAAA,CACA7B,QAAAh9M,EAAA1tE,MACA2qR,SAAAj9M,EAAAvsE,OACAypR,QAAA72R,EAAAq7E,OAAApvE,MACA6qR,SAAA92R,EAAAq7E,OAAAjuE,OACA2pR,OAAA,EACAC,MAAA,IAKA,iBAAAh3R,EAAAiyR,kBAAA99E,qBAUA,OATAskF,EAAAl9M,UAAA5B,EAAA,UACA35E,EAAAw4R,sBAAA,CACA7B,QAAAh9M,EAAA1tE,MACA2qR,SAAAj9M,EAAAvsE,OACAypR,QAAAl9M,EAAA1tE,MACA6qR,SAAAn9M,EAAAvsE,OACA2pR,OAAA,EACAC,MAAA,IAKA,IAAA30R,GAAA,EAEAmjK,EADA7rF,EAAA1tE,MAAA0tE,EAAAvsE,OACApN,EAAAq7E,OAAAjuE,OAGAq4J,EADA9rF,EAAAvsE,OAAAusE,EAAA1tE,MACAjM,EAAAq7E,OAAApvE,MAQA,IANAw5J,EAAAzlK,EAAAq7E,OAAAjuE,QAAA,oCAAApN,EAAAiyR,kBAAA99E,sBACA3uC,EAAAxlK,EAAAq7E,OAAApvE,OAAA,kBAAAjM,EAAAiyR,kBAAA99E,wBACA9xM,GAAA,GAIAA,EAAA,CACA,IAAAu2R,GAAA54R,EAAAq7E,OAAApvE,MAAAu5J,GAAA,EAEAizH,EAAAl9M,UAAA5B,EAAA,IAAAA,EAAA1tE,MAAA0tE,EAAAvsE,OACAwrR,EAAA,EAAApzH,EAAAxlK,EAAAq7E,OAAAjuE,QACApN,EAAAw4R,sBAAA,CACA7B,QAAAh9M,EAAA1tE,MACA2qR,SAAAj9M,EAAAvsE,OACAypR,QAAArxH,EACAsxH,SAAA92R,EAAAq7E,OAAAjuE,OACA2pR,OAAA6B,EACA5B,MAAA,EAGA,MACA4B,GAAA54R,EAAAq7E,OAAAjuE,OAAAq4J,GAAA,EAEAgzH,EAAAl9M,UAAA5B,EAAA,IAAAA,EAAA1tE,MAAA0tE,EAAAvsE,OACA,EAAAwrR,EAAA54R,EAAAq7E,OAAApvE,MAAAw5J,GACAzlK,EAAAw4R,sBAAA,CACA7B,QAAAh9M,EAAA1tE,MACA2qR,SAAAj9M,EAAAvsE,OACAypR,QAAA72R,EAAAq7E,OAAApvE,MACA6qR,SAAArxH,EACAsxH,OAAA,EACAC,MAAA4B,EAEA,CAtEA,CAfA,CAsFA,CAp4CA54R,EAAAggG,UACAhgG,EAAAgyR,wBACAhyR,EAAAiyR,oBACAjyR,EAAA+3B,aACA/3B,EAAA+G,iBACA/G,EAAA64R,cAAA,EACA74R,EAAAi1R,SAAA,WACAj1R,EAAA64R,cAAA,EACApF,EAAAzzR,EAAA84R,SAAA,KACA,EACA94R,EAAA+4R,SAAA,WACA/4R,EAAA64R,cAAA,EACApF,EAAAzzR,EAAA84R,SAAA,KACA,EAEA94R,EAAAg5R,cAAA,EACAh5R,EAAA01R,SAAA,WACA11R,EAAAg5R,cAAA,EACAvF,EAAAzzR,EAAAi5R,SAAA,KACA,EACAj5R,EAAAm1R,SAAA,WACAn1R,EAAAg5R,cAAA,EACAvF,EAAAzzR,EAAAi5R,SAAA,KACA,EAEAj5R,EAAAq3R,aAAA3yR,EAAAw0R,kBACAl5R,EAAAirQ,SAAA,WACAjrQ,EAAAq3R,cAAA,EACA5D,EAAAzzR,EAAAm5R,SAAA,MACAn5R,EAAAk3R,UACAzD,EAAAzzR,EAAAo5R,UAAA,MAEA3F,EAAAzzR,EAAAo5R,UAAA,KAEA,EACAp5R,EAAAq5R,SAAA,WACAr5R,EAAAq3R,cAAA,EACA5D,EAAAzzR,EAAAm5R,SAAA,MACAn5R,EAAAk3R,UACAzD,EAAAzzR,EAAAo5R,UAAA,MAEA3F,EAAAzzR,EAAAo5R,UAAA,KAEA,EAEAp5R,EAAAo3R,SAAA1yR,EAAA40R,kBAAA,EAEAt5R,EAAA20R,YAAA,EACA30R,EAAAu5R,QAAAv5R,EAAA20R,YACA30R,EAAAw5R,WAAA,SAAAzhP,GACA/3C,EAAAuyR,MAAAvyR,EAAAq7E,OAAApvE,MAAA,EACAjM,EAAAwyR,MAAAxyR,EAAAq7E,OAAAjuE,OAAA,EACA2qC,EAAA/3C,EAAA20R,YACA10H,EAAAjsJ,KAAAD,IAAAgkC,EAAA/3C,EAAA20R,cAEA10H,GAAAjsJ,KAAAD,IAAAgkC,EAAA/3C,EAAA20R,aAEA,EAEA30R,EAAA8nD,OAAA,IAAA52C,MACAlR,EAAAk1R,cAAA,IAAAhkR,MAEAlR,EAAAy5R,iBAAA/0R,EAAA+0R,iBACA/0R,EAAA+0R,iBACAz5R,EAAA+0R,SAAA58Q,SAAAzT,EAAA+0R,kBAEAz5R,EAAA+0R,SAAA,EAGA/0R,EAAA05R,uBAAAh1R,EAAAg1R,uBACAh1R,EAAAg1R,uBACA15R,EAAA60R,eAAA18Q,SAAAzT,EAAAg1R,wBAEA15R,EAAA60R,eAAA,GAGA70R,EAAAg1R,SAAAtwR,EAAAi1R,gBACA35R,EAAA80R,eAAApwR,EAAAk1R,mBACA55R,EAAA65R,UAAA,UAEA75R,EAAA85R,QAAAp1R,EAAAo1R,QACA95R,EAAA+5R,WAAAr1R,EAAAq1R,WACA/5R,EAAAg6R,SAAAt1R,EAAAs1R,SACAh6R,EAAAi6R,WAAAv1R,EAAAu1R,WACAj6R,EAAAk6R,UAAAx1R,EAAAw1R,UACAl6R,EAAAm6R,eAAAz1R,EAAAy1R,eACAn6R,EAAAo6R,eAAA11R,EAAA01R,eACAp6R,EAAAq6R,iBAAA31R,EAAA21R,iBACAr6R,EAAAs6R,cAAA51R,EAAA41R,cACAt6R,EAAAu6R,aAAA71R,EAAA61R,aACAv6R,EAAAk5R,kBAAAx0R,EAAAw0R,kBACAl5R,EAAAw6R,cAAA91R,EAAA81R,cACAx6R,EAAAy6R,mBAAA/1R,EAAA+1R,mBACAz6R,EAAA06R,gBAAAh2R,EAAAg2R,gBACA16R,EAAA26R,yBAAAj2R,EAAAi2R,yBACA36R,EAAAk3R,UAAAxyR,EAAAwyR,UACAl3R,EAAA00R,eAAAhwR,EAAAgwR,eACA10R,EAAAs5R,iBAAA50R,EAAA40R,iBACAt5R,EAAA46R,oBAAAl2R,EAAAk2R,oBACA56R,EAAAk4R,aAAAxzR,EAAAwzR,aACAl4R,EAAAo4R,UAAA1zR,EAAA0zR,UACAp4R,EAAAm4R,eAAAzzR,EAAAyzR,eACAn4R,EAAA45R,mBAAAl1R,EAAAk1R,mBACA55R,EAAA25R,gBAAAj1R,EAAAi1R,gBACA35R,EAAA66R,oBAAAn2R,EAAAm2R,oBACA76R,EAAAw2R,WAAA9xR,EAAAwzR,cAAAxzR,EAAA0zR,UACAp4R,EAAA04R,gBAAAh0R,EAAAg0R,gBAEA14R,EAAA86R,UAAA96R,EAAAu6R,cACAv6R,EAAAs6R,eACAt6R,EAAAk6R,WACAl6R,EAAAi6R,YACAj6R,EAAAg6R,UACAh6R,EAAA+5R,YACA/5R,EAAA85R,SACA95R,EAAAk5R,kBAEAl5R,EAAA+6R,eAAA,IAAA5sD,YAAA,aACAnuO,EAAAg7R,gBAAA,IAAA7sD,YAAA,cAEAnuO,EAAAi3F,MAAA,KACAj3F,EAAA61R,eAAA,GACA71R,EAAAtF,QAAA,KACAsF,EAAAq7E,OAAA,KAEA32E,EAAAo1R,QACA95R,EAAAmyR,QAAA,QACAztR,EAAAq1R,WACA/5R,EAAAmyR,QAAA,OACAztR,EAAAw8C,SAGAlhD,EAAAmyR,QAAA,GAFAnyR,EAAAmyR,QAAA,QAKAnyR,EAAAuyR,MAAA,KACAvyR,EAAAwyR,MAAA,KACAxyR,EAAA67J,UAAA,KACA77J,EAAAmtK,QAAA,KACAntK,EAAA40R,YAAA,IACA50R,EAAAsvO,GAAA,KACAtvO,EAAAs5E,IAAA,KACAt5E,EAAAi7R,kBAAA,EACAj7R,EAAAo1R,gBAAA,EACAp1R,EAAAq1R,cAAA,EACAr1R,EAAAs1R,uBAAA,GACAt1R,EAAAmzR,gBAAA,EACAnzR,EAAAgzR,YAAA,EACAhzR,EAAA2yR,2BAAA,GAEA3yR,EAAAszR,iBAAA,EACAtzR,EAAA21R,oBAAA,IAAAzkR,MAEAlR,EAAAk7R,QAAA,CAAArhS,GAAA,aAAA85R,SAAA,qCACA3zR,EAAAm7R,UAAA,CAAAthS,GAAA,eAAA85R,SAAA,uCACA3zR,EAAAo7R,UAAA,CAAAvhS,GAAA,eAAA85R,SAAA,sCACA3zR,EAAAq7R,QAAA,CAAAxhS,GAAA,UAAA85R,SAAA,oCAAAC,UAAA,sCACA5zR,EAAAs7R,SAAA,CAAAzhS,GAAA,WAAA85R,SAAA,qCAAAC,UAAA,sCACA5zR,EAAA84R,QAAA,CACAj/R,GAAA,UAAA85R,SAAA,wCAAAC,UAAA,wCACAE,YAAA,wCAEA9zR,EAAAi5R,QAAA,CACAp/R,GAAA,UAAA85R,SAAA,wCAAAC,UAAA,wCACAE,YAAA,wCAEA9zR,EAAAm5R,QAAA,CAAAt/R,GAAA,UAAA85R,SAAA,qCAAAC,UAAA,sCACA5zR,EAAAo5R,SAAA,CACAv/R,GAAA,WAAA85R,SAAA,yCAAAC,UAAA,0CACAC,WAAA,yCAAAC,YAAA,2CAGA9zR,EAAAyhJ,UAAA,SAAAlqI,GAEAvX,EAAAuyR,MAAAh7Q,EAAAjN,SAAAiN,EAAAgkR,OAAAhkR,EAAAiwH,cAAApiF,WACAplD,EAAAwyR,MAAAj7Q,EAAAhN,SAAAgN,EAAAikR,OAAAjkR,EAAAiwH,cAAAriF,UAEA+sO,EAAA36Q,GAEAA,EAAAisB,gBACA,EAEAxjC,EAAAm9K,UAAA,SAAA5lK,GACAvX,EAAAuyR,MAAAh7Q,EAAAjN,SAAAiN,EAAAgkR,OAAAhkR,EAAAiwH,cAAApiF,WACAplD,EAAAwyR,MAAAj7Q,EAAAhN,SAAAgN,EAAAikR,OAAAjkR,EAAAiwH,cAAAriF,UAEA2tO,EAAAv7Q,EACA,EAEAvX,EAAAy7R,QAAA,SAAAlkR,GAEA27Q,EAAA37Q,EACA,EAEAvX,EAAA07R,SAAA,SAAAnkR,GACAvX,EAAAi3F,OAAA,EACAj3F,EAAA67J,WAAA,EACAw2H,GACA,EAEAryR,EAAAk4K,WAAA,SAAA3gK,GACA,IAAAqtC,EAAArtC,EAAAokR,WAAApkR,EAAAokR,WAAA,IAAApkR,EAAAqkR,QAAArkR,EAAAqkR,OAAA,EAIA,OAHAh3O,GACAq7G,EAAAr7G,GAEArtC,EAAAisB,mBAAA,CACA,EAEAxjC,EAAA67R,WAAA,SAAAtkR,GACAA,EAAAisB,iBAEAjsB,EAAAotB,QAAAhtC,OAAA,IACAqI,EAAAuyR,MAAA8B,EAAA98Q,EAAAotB,QAAA,IAAAthC,EACArD,EAAAwyR,MAAA6B,EAAA98Q,EAAAotB,QAAA,IAAArhC,EAEA4uR,EAAA36Q,IAGA,IAAAA,EAAAotB,QAAAhtC,SACAs7R,IACAjzR,EAAAi7R,kBAAAvI,EAAA2B,EAAA98Q,EAAAotB,QAAA,IAAA0vP,EAAA98Q,EAAAotB,QAAA,KACA3kC,EAAAuyR,OAAA8B,EAAA98Q,EAAAotB,QAAA,IAAAthC,EAAAgxR,EAAA98Q,EAAAotB,QAAA,IAAAthC,GAAA,EACArD,EAAAwyR,OAAA6B,EAAA98Q,EAAAotB,QAAA,IAAArhC,EAAA+wR,EAAA98Q,EAAAotB,QAAA,IAAArhC,GAAA,EACAtD,EAAA67J,UAAA77J,EAAAtF,QAAA43R,iBAAAtyR,EAAAuyR,MAAAvyR,EAAAwyR,OACAxyR,EAAAmtK,SAAA,EAEA,EAEAntK,EAAA87R,UAAA,SAAAvkR,GAUA,GATAA,EAAAisB,iBAEAjsB,EAAAotB,QAAAhtC,OAAA,IACAqI,EAAAuyR,MAAA8B,EAAA98Q,EAAAotB,QAAA,IAAAthC,EACArD,EAAAwyR,MAAA6B,EAAA98Q,EAAAotB,QAAA,IAAArhC,EAEAwvR,EAAAv7Q,IAGA,IAAAA,EAAAotB,QAAAhtC,SACAs7R,IAEAP,EAAA2B,EAAA98Q,EAAAotB,QAAA,IAAA0vP,EAAA98Q,EAAAotB,QAAA,KAAA3kC,EAAAi7R,kBACAh7H,EAAA,GACAyyH,EAAA2B,EAAA98Q,EAAAotB,QAAA,IAAA0vP,EAAA98Q,EAAAotB,QAAA,KAAA3kC,EAAAi7R,mBACAh7H,GAAA,GAGAjgK,EAAAi7R,kBAAAvI,EAAA2B,EAAA98Q,EAAAotB,QAAA,IAAA0vP,EAAA98Q,EAAAotB,QAAA,KACA3kC,EAAAuyR,OAAA8B,EAAA98Q,EAAAotB,QAAA,IAAAthC,EAAAgxR,EAAA98Q,EAAAotB,QAAA,IAAAthC,GAAA,EACArD,EAAAwyR,OAAA6B,EAAA98Q,EAAAotB,QAAA,IAAArhC,EAAA+wR,EAAA98Q,EAAAotB,QAAA,IAAArhC,GAAA,EACAtD,EAAAmtK,SAAA,EAEAntK,EAAA67J,WAAA77J,EAAA06R,iBAAA,CACA,IAAAprD,EAAAtvO,EAAAtF,QAAA43R,iBAAAtyR,EAAAuyR,MAAAvyR,EAAAwyR,OACAxyR,EAAAtF,QAAAglD,UAAA4vL,EAAAjsO,EAAArD,EAAA67J,UAAAx4J,EAAAisO,EAAAhsO,EAAAtD,EAAA67J,UAAAv4J,GACA+uR,GACA,CAEA,EAEAryR,EAAA+7R,SAAA,SAAAxkR,GACAA,EAAAisB,iBAEAjsB,EAAAotB,QAAAhtC,OAAA,GACAu7R,EAAA37Q,GAGAvX,EAAA67J,UAAA,KACA77J,EAAAi3F,OAAA,CACA,EAEAj3F,EAAAg8R,iBAAA,SAAAzkR,GACA,QACA,EAEAvX,EAAAi8R,WAAA,SAAA1kR,GACA,GAAA2kR,KAAA,UAAA3kR,EAAA5S,OACA3E,EAAAmyR,QAAA,QAEA4B,EAAA/zR,EAAAk7R,SAAA,GACAnH,EAAA/zR,EAAAm7R,WAAA,GACApH,EAAA/zR,EAAAo7R,WAAA,GACA3H,EAAAzzR,EAAAq7R,SAAA,MACA5H,EAAAzzR,EAAAs7R,UAAA,MAEAt7R,EAAAm8R,SAAA,GAAAztD,cAAA1uO,EAAA+6R,gBACA,EAEA/6R,EAAAo8R,WAAA,WACAp8R,EAAAmyR,QAAA,OAEA4B,EAAA/zR,EAAAk7R,SAAA,GACAnH,EAAA/zR,EAAAm7R,WAAA,GACApH,EAAA/zR,EAAAo7R,WAAA,GACA3H,EAAAzzR,EAAAq7R,SAAA,MACA5H,EAAAzzR,EAAAs7R,UAAA,KACA,EAEAt7R,EAAAq8R,aAAA,WACAr8R,EAAAmyR,QAAA,SAEA4B,EAAA/zR,EAAAk7R,SAAA,GACAnH,EAAA/zR,EAAAm7R,WAAA,GACApH,EAAA/zR,EAAAo7R,WAAA,GACA3H,EAAAzzR,EAAAq7R,SAAA,MACA5H,EAAAzzR,EAAAs7R,UAAA,KACA,EAEAt7R,EAAAs8R,aAAA,SAAA/kR,GACA,GAAA2kR,KAAA,UAAA3kR,EAAA5S,OACA3E,EAAAmyR,QAAA,OAEA4B,EAAA/zR,EAAAk7R,SAAA,GACAnH,EAAA/zR,EAAAm7R,WAAA,GACApH,EAAA/zR,EAAAo7R,WAAA,GACA3H,EAAAzzR,EAAAq7R,SAAA,MACA5H,EAAAzzR,EAAAs7R,UAAA,MAEAt7R,EAAAu8R,YAAA,GAAA7tD,cAAA1uO,EAAAg7R,iBACA,EAEAh7R,EAAAw8R,aAAA,WACA,GAAAx8R,EAAAtF,QACAg9R,QACA,CACA,MAAAr8M,EAAA2kB,EAAA,GACAhgG,EAAAtF,QAAA2gF,EAAAC,WAAA,MACAo8M,GACA,CAEA13R,EAAAszR,iBAAA,EACAtzR,EAAA21R,oBAAA,IAAAzkR,MACAlR,EAAA8nD,OAAA,IAAA52C,KACA,EAEAlR,EAAAy8R,YAAA,WACAhJ,EAAAzzR,EAAAs7R,UAAA,MAEAt7R,EAAAiyR,kBAAAyK,sBACA18R,EAAAw8R,eACAnK,KAEAryR,EAAAiyR,kBAAA0K,4BAEA/4Q,YAAA,WACA6vQ,EAAAzzR,EAAAs7R,UAAA,KACA,OACA,EAEAt7R,EAAA48R,WAAA,SAAArlR,GACA,GAAA2kR,KAAA,UAAA3kR,EAAA5S,OACA3E,EAAAq3R,aACAr3R,EAAAq5R,WAEAr5R,EAAAirQ,WAEAonB,IACA,EAEAryR,EAAAm3R,YAAA,SAAA5/Q,GACA,GAAA2kR,KAAA,UAAA3kR,EAAA5S,MACA3E,EAAAq3R,eACAr3R,EAAAk3R,WACAl3R,EAAAk3R,WAAA,EACAzD,EAAAzzR,EAAAo5R,UAAA,QAEAp5R,EAAAk3R,WAAA,EACAzD,EAAAzzR,EAAAo5R,UAAA,OAEA/G,IAEA,EAEAryR,EAAA68R,KAAA,WACA78R,EAAA64R,eAEAjG,EAAA5yR,EAAA8nD,OAAAnwD,OAAA,GACAy7R,IAEApzR,EAAA01R,WAEA,IAAA11R,EAAA8nD,OAAAnwD,QACAqI,EAAA+4R,WAEA1G,IAEAryR,EAAAiyR,kBAAA6K,sBACA98R,EAAAiyR,kBAAA8K,6BAGA,EAEA/8R,EAAAg9R,cAAA,WACAh9R,EAAA64R,cACApF,EAAAzzR,EAAA84R,SAAA,KAEA,EAEA94R,EAAAi9R,iBAAA,WACAj9R,EAAA64R,cACApF,EAAAzzR,EAAA84R,SAAA,KAEA,EAEA94R,EAAAk9R,UAAA,WACAl9R,EAAA68R,OACA78R,EAAAg9R,eACA,EAEAh9R,EAAAm9R,KAAA,WACA,GAAAn9R,EAAAg5R,aAAA,CAEA,KAAAh5R,EAAAk1R,cAAAl1R,EAAAk1R,cAAAv9R,OAAA,GAAAA,OAAA,GACAqI,EAAA8nD,OAAAhoD,KAAAE,EAAAk1R,cAAAl1R,EAAAk1R,cAAAv9R,OAAA,GAAAsmB,SAGAje,EAAAk1R,cAAA1hR,MAEAxT,EAAAi1R,WAEA,IAAAj1R,EAAAk1R,cAAAv9R,QACAqI,EAAAm1R,WAEA9C,IAEAryR,EAAAiyR,kBAAAmL,sBACAp9R,EAAAiyR,kBAAAoL,4BAEA,CACA,EAEAr9R,EAAAs9R,cAAA,WACAt9R,EAAAg5R,cACAvF,EAAAzzR,EAAAi5R,SAAA,KAEA,EAEAj5R,EAAAu9R,iBAAA,WACAv9R,EAAAg5R,cACAvF,EAAAzzR,EAAAi5R,SAAA,KAEA,EAEAj5R,EAAAw9R,UAAA,WACAx9R,EAAAm9R,OACAn9R,EAAAs9R,eACA,EAEAt9R,EAAAqyR,OAAA,SAAAkF,EAAAC,EAAAC,GACApF,EAAAkF,EAAAC,EAAAC,EACA,EAEAz3R,EAAAy9R,6BAAA,SAAAC,EAAAnmR,GACAvX,EAAAsqF,WACAozM,EAAAnmR,EAEA,EAiGAvX,EAAAqzP,YAhCA,WACArzP,EAAAq7E,OAAA2kB,EAAA,GACAhgG,EAAAq7E,OAAAjuE,OAAApN,EAAAq7E,OAAAvjE,aACA9X,EAAAq7E,OAAApvE,MAAAjM,EAAAq7E,OAAAzjE,YAEA5X,EAAAtF,QAAAsF,EAAAq7E,OAAAC,WAAA,MACAqiN,EAAA39R,EAAAtF,SAi5BA,WACAsF,EAAAq3R,cACAuG,IAGA59R,EAAAk4R,cAwVA,WACA,IAAAl4R,EAAAo4R,UACA,OACA,IAAAp/C,EAAA6kD,EAAA,kBACA7kD,EAAA8kD,aAAA,IACA9kD,EAAA12N,WAAA,WACA02N,EAAA+kD,YAAA,IAAAhpR,MACAikO,EAAA+kD,YAAAnkN,OAAA,WACAo/J,EAAA39J,OAAApvE,MAAA+sO,EAAA39J,OAAApvE,MACA+sO,EAAAjtL,OACAsmO,IACAh6R,EAAAqtB,KAAA3iB,EAAA3F,iBAAA4C,EAAAo4R,WAAA,CACA9yQ,QAAA,SAAAqjB,EAAAhd,EAAAkwJ,GACA,GAjBAhsI,EAiBA7vC,EAAAo4R,UAjBAj1M,EAiBA,QAhBA,IAAAtzC,EAAA93C,QAAAorF,EAAAtzC,EAAAl4C,OAAAwrF,EAAAxrF,QAgBA,CACA,IAAA4C,EAAAyjS,KAAAniH,EAAAxqJ,cACA92B,EAAA,6BAAAA,EACAyF,EAAAi+R,kBAAA1jS,CACA,CArBA,IAAAs1C,EAAAszC,CAsBA,EACA0gM,SAAA,sCAEA,EACA7qC,EAAA+kD,YAAAnuQ,IAAA7sB,EAAA3F,iBAAA4C,EAAAo4R,UACA,EACAp/C,EAAAjtL,KAAA,WACA+rO,EAAA9+C,EAAA+kD,YAAA/kD,EACA,CACA,CAlXAklD,EAEA,CAv5BAC,GAEAn+R,EAAAuyR,MAAAvyR,EAAAq7E,OAAApvE,MAAA,EACAjM,EAAAwyR,MAAAxyR,EAAAq7E,OAAAjuE,OAAA,EAEApN,EAAAq7E,OAAA5sD,iBAAA,aAAAzuB,EAAA67R,YACA77R,EAAAq7E,OAAA5sD,iBAAA,YAAAzuB,EAAA87R,WACA97R,EAAAq7E,OAAA5sD,iBAAA,WAAAzuB,EAAA+7R,UACA/7R,EAAAq7E,OAAA5sD,iBAAA,cAAAzuB,EAAAo+R,aAEAp+R,EAAAq7E,OAAA5sD,iBAAA,YAAAzuB,EAAAyhJ,WACAzhJ,EAAAq7E,OAAA5sD,iBAAA,YAAAzuB,EAAAm9K,WACAn9K,EAAAq7E,OAAA5sD,iBAAA,UAAAzuB,EAAAy7R,SACAz7R,EAAAq7E,OAAA5sD,iBAAA,WAAAzuB,EAAA07R,UACA17R,EAAAq7E,OAAA5sD,iBAAA,aAAAzuB,EAAAk4K,YA4BA,WACA,IAAAw7G,EAAAr7R,EAAA,kCACAwM,IAAA,CACAk3B,QAAA,MACA3uB,OAAApN,EAAA86R,UAAA,UACAv6P,UAAA,OACA5E,cAAA,SAEAgZ,WAAA,SACA1oC,MAAAjM,EAAAq7E,OAAApvE,MACAgqE,UAAA,OACAC,UAAA,SACA9yE,SAAA,WAEA0I,QAAA,OACAuyR,SAAA,SACAC,aAAA,gBACAp9P,eAAA,aACAE,WAAA,aACAzmC,GAAA,qBACAqF,EAAAsqF,WAAA,CACA,IAAA3vF,GAAA,uBACAqF,EAAAsqF,WAAA,CACA,IAEAtqF,EAAA0zR,kBACA,IAAA6K,EAAAlmS,EAAA,wBACAsC,GAAA,QAAAqF,EAAA68R,MACAliS,GAAA,YAAAqF,EAAAg9R,eACAriS,GAAA,UAAAqF,EAAAi9R,kBACAtiS,GAAA,WAAAqF,EAAAi9R,kBACAn3R,SAAA4tR,GACA8K,EAAAnmS,EAAA,wBACAsC,GAAA,QAAAqF,EAAAm9R,MACAxiS,GAAA,YAAAqF,EAAAs9R,eACA3iS,GAAA,UAAAqF,EAAAu9R,kBACA5iS,GAAA,WAAAqF,EAAAu9R,kBACAz3R,SAAA4tR,GAEAyI,EACA9jS,EAAA,yGAGAyN,SAAA4tR,GACAyI,EACAxhS,GAAA,QAAAqF,EAAAi8R,WAAAz6R,KAAAxB,IACArF,GAAA,WAAAqF,EAAAy9R,6BAAAj8R,KAAAxB,IAAAi8R,aACAj8R,EAAA85R,SACAqC,EAAA1zR,OAEAzI,EAAAm8R,WACA9jS,EAAA,sLAIAyN,SAAA9F,EAAAgyR,uBAEA,IAAAuK,EACAlkS,EAAA,6GAGAyN,SAAA4tR,GACA6I,EACA5hS,GAAA,QAAAqF,EAAAs8R,aAAA96R,KAAAxB,IACArF,GAAA,WAAAqF,EAAAy9R,6BAAAj8R,KAAAxB,IAAAs8R,eACAt8R,EAAAu8R,cACAlkS,EAAA,sLAIAyN,SAAA9F,EAAAgyR,uBAEA,IAAAyM,EACApmS,EAAA,6GAGAsC,GAAA,QAAAqF,EAAAq8R,cACA1hS,GAAA,WAAAqF,EAAAy9R,6BAAAj8R,KAAAxB,IAAAq8R,eACAv2R,SAAA4tR,GACAgL,EAAArmS,EAAA,wBACAsC,GAAA,QAAAqF,EAAAo8R,YACAzhS,GAAA,WAAAqF,EAAAy9R,6BAAAj8R,KAAAxB,IAAAo8R,aACAt2R,SAAA4tR,GACAv9O,EAAA99C,EAAA,yBACAsC,GAAA,QAAAqF,EAAAy8R,aACA9hS,GAAA,WAAAqF,EAAAy9R,6BAAAj8R,KAAAxB,IAAAy8R,cACA32R,SAAA4tR,GACA1zR,EAAAi6R,YACAwE,EAAAh2R,OAEAzI,EAAAg6R,UACA0E,EAAAj2R,OAEAzI,EAAA+5R,YACAwC,EAAA9zR,OAEAzI,EAAAk6R,WACA/jP,EAAA1tC,OAEA,IAAAzI,EAAAu6R,aAAA,CACA,IAAAoE,EAAA,CAAA7yR,QAAA,QACAyyR,EAAA15R,IAAA85R,GACAH,EAAA35R,IAAA85R,EACA,CAEAjL,EAAAjrR,OAEA,IAAAm2R,EAAAvmS,EAAA,wBACAsC,GAAA,QAAAqF,EAAA48R,WAAAp7R,KAAAxB,IACArF,GAAA,WAAAqF,EAAAy9R,6BAAAj8R,KAAAxB,IAAA48R,aACA92R,SAAA4tR,GACAmL,EAAAxmS,EAAA,yBACAsC,GAAA,QAAAqF,EAAAm3R,YAAA31R,KAAAxB,IACArF,GAAA,WAAAqF,EAAAy9R,6BAAAj8R,KAAAxB,IAAAm3R,cACArxR,SAAA4tR,GACA1zR,EAAAk5R,mBACA0F,EAAAn2R,OAEAzI,EAAAs6R,eACAuE,EAAAp2R,OAGApQ,EAAA,UACAyyC,OAAA4oP,GACA5oP,OAAA4oP,GACA5oP,OAAA4oP,GACA5tR,SAAAy/M,GAEAwuE,EAAA/zR,EAAAk7R,QAAAl7R,EAAA85R,QAAAp1R,EAAAi1R,iBACA5F,EAAA/zR,EAAAm7R,WAAAn7R,EAAA85R,QAAAp1R,EAAAk1R,oBACAnG,EAAAzzR,EAAAq7R,SAAA,MACAtH,EAAA/zR,EAAAo7R,WAAA,GACA3H,EAAAzzR,EAAAs7R,UAAA,MACA7H,EAAAzzR,EAAA84R,SAAA,MACArF,EAAAzzR,EAAAi5R,SAAA,MACAxF,EAAAzzR,EAAAm5R,SAAA,EAAAz0R,EAAAw0R,mBAEAl5R,EAAAk3R,UACAzD,EAAAzzR,EAAAo5R,UAAA,MAEA3F,EAAAzzR,EAAAo5R,UAAA,MAGAp5R,EAAAy5R,mBACAz5R,EAAA+0R,SAAA/0R,EAAAy5R,kBAGAz5R,EAAA05R,yBACA15R,EAAA60R,eAAA70R,EAAA05R,wBAGA15R,EAAAs5R,mBACAt5R,EAAAo3R,SAAAp3R,EAAAs5R,kBAGAt5R,EAAA46R,sBACA56R,EAAA2yR,2BAAA3yR,EAAA46R,qBAGA56R,EAAA61R,gBACAD,EAAA51R,EAAA61R,iBA0pCA,WACA,IAAAxpJ,EAAA,IAAAn7H,MAAA,wCACA,wCACA,wCACA,yCAEA4tR,EAAA,IAAA5tR,MACA,GAAAlR,EAAA66R,oBAAA,CACA,IAAA9gO,EAAA/5D,EAAA66R,oBAAApjS,MAAA,KACAW,EAAAiJ,KAAA04D,GAAA,SAAAt5D,GACAq+R,EAAAh/R,KAAAqY,SAAA1X,EAAA6gB,QACA,GACA,CACA,IAAAw9Q,EAAAnnS,SACAmnS,EAAA,IAAA5tR,MAAA,wCAGA,IAAA6tR,EAAA,IAAA7tR,MAAA,+BACA8tR,EAAA,IAAA9tR,MAAA,4BAEAlR,EAAAgyR,sBAAAzxR,KAAA,sBAAAc,MAAA,WACA,IAGAk/N,EAHA0+D,EAAA5mS,EAAA4G,MACApF,EAAAolS,EAAA/3P,KAAA,MAKA,aAAArtC,EACA0mO,EAAAw+D,EAIAx+D,EAAAy+D,EAIAC,EAAA1+R,KAAA,qBAAAvI,SAEA,IAAAgxI,EAAA,GAGAA,EADA,aAAAnvI,EACA,8HAIA,8HAMA,QAAAnC,EAAA,EAAAA,EAAA6oO,EAAA5oO,OAAAD,IACAsxI,GAAA,qCAAAtxI,EAAAmC,EAAA,qBAAAA,EAAA,YAAA0mO,EAAA7oO,GAAA,KAEA,aAAAmC,GAAA0mO,EAAA7oO,IAAAsI,EAAA+0R,UAEA,aAAAl7R,GAAA0mO,EAAA7oO,IAAAsI,EAAA60R,kBADA7rJ,GAAA,YAKAA,GAAA,0BAAAtxI,EAAAmC,EAAA,iCAAA0mO,EAAA7oO,GAAA,mBAGAsxI,GAAA,wCAIA,IAAAtxI,EAAA,EAAAA,EAAA20I,EAAA10I,OAAAD,SACA2N,IAAAjN,EAAAmI,KAAAu+R,GAAA,SAAAI,GAAA,OAAAA,GAAAxnS,CAAA,MAIA,aAAAmC,EAAAwyI,EAAA30I,IAAA,KACA,OAAA20I,EAAA30I,GAAAI,UAAAu0I,EAAA30I,GAAAC,OAAA,EAAA00I,EAAA30I,GAAAC,UACA00I,EAAA30I,GAAA20I,EAAA30I,GAAAI,UAAA,EAAAu0I,EAAA30I,GAAAC,OAAA,IAGAqxI,GAAA,8DAAAtxI,EAAAmC,EAAA,sBAAAA,EAAA,YAAAwyI,EAAA30I,GAAA,IAEA,aAAAmC,GAAA6K,EAAAk1R,mBACArB,EAAAlsJ,EAAA30I,MAAAgN,EAAAk1R,qBACA5wJ,GAAA,YAEA,aAAAnvI,GAAA6K,EAAAi1R,gBACApB,EAAAlsJ,EAAA30I,MAAAgN,EAAAi1R,kBACA3wJ,GAAA,YAGA,YAAAqD,EAAA30I,IAAA,cAAA20I,EAAA30I,KACAsxI,GAAA,YAIAA,GAAA,2BAAAtxI,EAAAmC,EAAA,6BAAA0+R,EAAA,YAAAlsJ,EAAA30I,GAAA20I,EAAA30I,GAAA,+BAGAsxI,GAAA,wCAIA3wI,EAAA4G,MAAA6rC,OAAAk+F,GAIAi2J,EAAA1+R,KAAA,mCAAA5F,GAAA,UACA,WACA,IAAA08Q,EAAA4nB,EAAA1+R,KAAA,mDAAAw3C,MACA05I,EAAAwtG,EAAA1+R,KAAA,2BAEAkxL,EAAA15I,IAAAs/N,GACA5lF,EAAApxC,SAEA,aAAAxmJ,EACAmG,EAAA60R,eAAAxd,EAEAr3Q,EAAA+0R,SAAA1d,CAEA,IAGA4nB,EAAA1+R,KAAA,oCAAA5F,GAAA,UACA,WACA,IAAA08Q,EAAA4nB,EAAA1+R,KAAA,oDAAAw3C,MACAonP,EAAAF,EAAA1+R,KAAA,0BAEA4+R,EAAApnP,IAAAs/N,GACA8nB,EAAA9+I,SAEA,aAAAxmJ,GACAmG,EAAA80R,eAAAzd,EACAh/Q,EAAA2H,EAAA0zR,gBAAAnzR,KAAA,IAAAP,EAAAm7R,UAAAthS,IAAA,GAAAo2B,gBAAAikQ,uBAAA,UAAAhtP,KAAA,OAAAqxP,EAAA,cAAAlhB,IAAA,gBAEAr3Q,EAAAg1R,SAAA3d,EACAh/Q,EAAA2H,EAAA0zR,gBAAAnzR,KAAA,IAAAP,EAAAk7R,QAAArhS,IAAA,GAAAo2B,gBAAAikQ,uBAAA,UAAAhtP,KAAA,OAAAqxP,EAAA,YAAAlhB,IAAA,YAEA,IAGA,aAAAx9Q,GACAmG,EAAAu8R,YAAA,GAAA9tQ,iBAAA,uBAAAlX,GACA,GAAA2kR,KAAA,UAAA3kR,EAAA5S,OACA3E,EAAAu8R,YAAAh8R,KAAA,2BAAAwuE,QAAA,WAAAl1E,EAAA,eAAA0G,KAAA,qBAAAkI,OACAzI,EAAAgyR,sBAAAzxR,KAAA,2BAAAuI,SACA,OACA9I,EAAAu8R,YAAAjjJ,QAAA,eAAAx0I,SAAAnK,GAAA,iCAAA4c,GACAA,EAAA+rB,OAAA87P,WAAAp/R,EAAAu8R,YAAA,KACAv8R,EAAAgyR,sBAAAzxR,KAAA,2BAAAkI,MACA,IAAAlI,KAAA,4BAAA5F,GAAA,iCAAA4c,KAAAgzC,iBAAA,MAEAvqD,EAAAm8R,SAAA,GAAA1tQ,iBAAA,sBAAAlX,GACA,GAAA2kR,KAAA,UAAA3kR,EAAA5S,OACA3E,EAAAm8R,SAAA57R,KAAA,2BAAAwuE,QAAA,WAAAl1E,EAAA,eAAA0G,KAAA,qBAAAkI,OACAzI,EAAAgyR,sBAAAzxR,KAAA,2BAAAuI,SACA,OACA9I,EAAAm8R,SAAA7iJ,QAAA,eAAAx0I,SAAAnK,GAAA,iCAAA4c,GACAA,EAAA+rB,OAAA87P,WAAAp/R,EAAAm8R,SAAA,KACAn8R,EAAAgyR,sBAAAzxR,KAAA,2BAAAkI,MACA,IAAAlI,KAAA,4BAAA5F,GAAA,iCAAA4c,KAAAgzC,iBAAA,IAEA,GACA,EAvzCA80O,GAEAz7Q,YAAA,WACA8vQ,EAAA3rR,MACA,OACA,CAlMAy9M,GAEA,IAAA/wE,EAAAz0I,EAAAtF,QAAA43R,iBAAAtyR,EAAAuyR,MAAAvyR,EAAAwyR,OACAljD,EAAAtvO,EAAAtF,QAAA43R,iBAAAtyR,EAAAuyR,MAAAvyR,EAAAwyR,OACAxyR,EAAAtF,QAAAglD,UAAA4vL,EAAAjsO,EAAAoxI,EAAApxI,EAAAisO,EAAAhsO,EAAAmxI,EAAAnxI,GAEA+uR,GACA,EAiBAryR,EAAAs/R,cAdA,SAAA95H,EAAAC,GACAzlK,EAAAggG,QAAA/zF,MAAAu5J,GACAxlK,EAAAggG,QAAA5yF,OAAAq4J,GACAzlK,EAAAq7E,OAAAjuE,OAAApN,EAAAq7E,OAAAvjE,aACA9X,EAAAq7E,OAAApvE,MAAAjM,EAAAq7E,OAAAzjE,YACA5X,EAAA0zR,iBACA1zR,EAAA0zR,gBAAAznR,MAAAu5J,GAEAptK,EAAA0I,QAAA40E,GAAA,SAAAsjK,GACAA,EAAA2+C,eAAA,CACA,IACAtF,GACA,EAykBAryR,EAAAu/R,UA3HA,WACA,IAAAC,EAAA,6BACAC,EAAA,+BAIA,GAFAz/R,EAAAs5E,IAAAniF,SAAAoiF,gBAAAimN,EAAA,OAEAx/R,EAAAw4R,uBAAAx4R,EAAAw2R,WAAA,CACA,IAAAkJ,EAAAvoS,SAAAoiF,gBAAAimN,EAAA,UACAE,EAAA1wQ,aAAA,UAAAhvB,EAAAw4R,sBAAA7B,SACA+I,EAAA1wQ,aAAA,WAAAhvB,EAAAw4R,sBAAA5B,UACA8I,EAAA1wQ,aAAA,UAAAhvB,EAAAw4R,sBAAA3B,SACA6I,EAAA1wQ,aAAA,WAAAhvB,EAAAw4R,sBAAA1B,UACA4I,EAAA1wQ,aAAA,SAAAhvB,EAAAw4R,sBAAAzB,QACA2I,EAAA1wQ,aAAA,QAAAhvB,EAAAw4R,sBAAAxB,OACAh3R,EAAAs5E,IAAAjqD,YAAAqwQ,EACA,CAEA5mS,OAAAO,UAAAC,UAAAvB,QAAA,YACAiI,EAAAs5E,IAAAG,eAAA,wCAAA+lN,GAEAx/R,EAAAs5E,IAAAG,eAAA,8CAAAgmN,GACAz/R,EAAAs5E,IAAAtqD,aAAA,QAAAhvB,EAAAq7E,OAAApvE,OACAjM,EAAAs5E,IAAAtqD,aAAA,SAAAhvB,EAAAq7E,OAAAjuE,QAEA,IAAAuyR,EAAA3/R,EAAA8nD,OAAAnwD,OAAA,EAEA,GAAAgoS,EAAA,CACA3/R,EAAA8nD,OAAA9nD,EAAA8nD,OAAAnwD,OAAA,KAAAqI,EAAA8nD,OAAA9nD,EAAA8nD,OAAAnwD,OAAA,GAAAywD,MACApoD,EAAA8nD,OAAAt0C,MAGA,IAAA0vN,EAAAhyN,MAAA0uR,QAAA5/R,EAAA8nD,OAAA,KACAs7K,EAAAlyN,MAAA2uR,QAAA7/R,EAAA8nD,OAAA,KACAg4O,EAAAxI,EAAAp0D,EAAAE,GACAD,EAAAjyN,MAAA0uR,QAAA5/R,EAAA8nD,OAAA,KACAu7K,EAAAnyN,MAAA2uR,QAAA7/R,EAAA8nD,OAAA,KACAi4O,EAAAzI,EAAAn0D,EAAAE,GAEArjO,EAAAs5E,IAAAtqD,aAAA,gBAAAhvB,EAAAq3R,aAAA,WAAAr3R,EAAAk3R,UAAA,UAAAl3R,EAAAo3R,UAEAp3R,EAAAq3R,eAAAr3R,EAAAk3R,YACA8I,EAAA,KAAA98D,EAAAC,EAAAC,EAAAC,GACArjO,EAAAs5E,IAAAtqD,aAAA,UAAAk0M,EAAA,QAAAC,EAAA,SAAA28D,EAAA,SAAAC,EAAA,KACA//R,EAAAs5E,IAAAtqD,aAAA,QAAA8wQ,EAAA,IACA9/R,EAAAs5E,IAAAtqD,aAAA,SAAA+wQ,EAAA,IACAE,IAEA,CAMA,GAJAjgS,EAAAi+R,oBAAAj+R,EAAAm4R,gBACA+H,IAGAP,EAAA,CACA,QAAAjoS,EAAA,EAAAA,EAAAsI,EAAA21R,oBAAAh+R,OAAAD,IAAA,CAQA,IANA,IAAAuE,EAAA9E,SAAAoiF,gBAAAimN,EAAA,QAEAnH,EAAAr4R,EAAA21R,oBAAAj+R,GAAA2gS,IACA5wO,EAAAznD,EAAA21R,oBAAAj+R,GAAA+vD,IACAi2C,EAAA,IAAAxsF,MAEAkiB,EAAAilQ,EAAAjlQ,EAAAq0B,EAAA,EAAAr0B,IACAsqE,EAAA59F,KAAAE,EAAA8nD,OAAA10B,IAGAn3B,EAAA+yB,aAAA,SAAAmxQ,EAAAziM,EAAA,GAAAviE,QACAl/B,EAAA+yB,aAAA,iBAAAoxQ,EAAA1iM,EAAA,GAAAviE,QACAl/B,EAAA+yB,aAAA,eAAA0uE,EAAA,GAAAn6F,MACAtH,EAAA+yB,aAAA,2BACA/yB,EAAA+yB,aAAA,0BACA/yB,EAAA+yB,aAAA,eAEA,IAAAqxQ,EAAA,KAAA3iM,EAAA,GAAAr6F,EAAA,IAAAq6F,EAAA,GAAAp6F,EAEA,GAAAo6F,EAAA/lG,OAAA,EACA0oS,GAAA,MAAA3iM,EAAA,GAAAr6F,EAAA,IAAAq6F,EAAA,GAAAp6F,EACArH,EAAA+yB,aAAA,oBACA,CACA,QAAAosF,EAAA,EAAAA,EAAA1d,EAAA/lG,OAAA,EAAAyjH,IACAilL,GAAA,MAAA3iM,EAAA0d,GAAA/3G,EAAA,IAAAq6F,EAAA0d,GAAA93G,EAAA,KAAAo6F,EAAA0d,GAAA/3G,EAAAq6F,EAAA0d,EAAA,GAAA/3G,GAAA,OAAAq6F,EAAA0d,GAAA93G,EAAAo6F,EAAA0d,EAAA,GAAA93G,GAAA,EAEA+8R,GAAA,MAAA3iM,EAAA0d,GAAA/3G,EAAA,IAAAq6F,EAAA0d,GAAA93G,EAAA,IAAAo6F,EAAA0d,EAAA,GAAA/3G,EAAA,IAAAq6F,EAAA0d,EAAA,GAAA93G,EACArH,EAAA+yB,aAAA,gBACA,CACA/yB,EAAA+yB,aAAA,IAAAqxQ,GACArgS,EAAAs5E,IAAAjqD,YAAApzB,EACA,CAEA+D,EAAAq3R,cAAAr3R,EAAAk3R,YACA8I,EAAA,KAAA98D,EAAAC,EAAAC,EAAAC,GACArjO,EAAAs5E,IAAAtqD,aAAA,UAAAk0M,EAAA,QAAAC,EAAA,SAAA28D,EAAA,SAAAC,EAAA,KACA//R,EAAAs5E,IAAAtqD,aAAA,QAAA8wQ,EAAA,IACA9/R,EAAAs5E,IAAAtqD,aAAA,SAAA+wQ,EAAA,IACAE,IAEA,CAMA,SAAAC,IACA,IAAAxmQ,EAAAviC,SAAAoiF,gBAAAimN,EAAA,SACA9lQ,EAAA+/C,eAAAgmN,EAAA,aAAAz/R,EAAAi+R,mBACAvkQ,EAAA1K,aAAA,OACA0K,EAAA1K,aAAA,OAEA,IAAAgqN,EAAAsnD,EAAA,kBACA5mQ,EAAA1K,aAAA,QAAAgqN,EAAA+kD,YAAA9xR,OACAytB,EAAA1K,aAAA,SAAAgqN,EAAA+kD,YAAA3wR,QAEApN,EAAAs5E,IAAAjqD,YAAAqK,EACA,CAEA,SAAAumQ,IACA,QAAAjtO,EAAA,EAAAA,EAAAhzD,EAAAmuQ,UAAAx2Q,OAAAq7D,IACAhzD,EAAAs5E,IAAAjqD,YAAArvB,EAAAmuQ,UAAAn7M,GAEA,CAEA,OAvBAhzD,EAAAi+R,mBAAAj+R,EAAAm4R,gBACA+H,KAsBA,IAAApmN,eAAAC,kBAAA/5E,EAAAs5E,IACA,EA6BAt5E,EAAAugS,YA1BA,SAAAC,EAAAC,GACA,IAAAD,IAAAxgS,EAAAw4R,sBACA,OAAAx4L,EAAA,GAAAxkB,UAAAilN,GAEA,IAAAC,EAAA1gS,EAAAw4R,sBAAAzB,OACA4J,EAAA3gS,EAAAw4R,sBAAAxB,MACA4J,EAAA5gS,EAAAw4R,sBAAA3B,QACAgK,EAAA7gS,EAAAw4R,sBAAA1B,SAEAgK,EAAA9gM,EAAA,GAAAj1F,wBAAAqC,OACA2zR,EAAA/gM,EAAA,GAAAj1F,wBAAAkB,MAGAy0R,EAAA,IAAAA,EAAA,GACAC,EAAA,IAAAA,EAAA,GACAE,EAAAC,IAAAD,EAAAC,GACAF,EAAAG,IAAAF,EAAAE,GAEA,IAAAC,EAAA7pS,SAAAoqB,cAAA,UACA0/Q,EAAAD,EAAA1lN,WAAA,MAKA,OAJA0lN,EAAA/0R,MAAA20R,EACAI,EAAA5zR,OAAAyzR,EACAI,EAAA1lN,UAAAykB,EAAA,GAAA0gM,EAAAC,EAAAC,EAAAC,EAAA,IAAAD,EAAAC,GAEAG,EAAAxlN,UAAAilN,EACA,EAwBAzgS,EAAA6lC,SArBA,SAAAp6B,GAGA,GAFAsnR,IAEAtnR,EAKA,aADAA,EAAAgJ,EAAA1D,+BAAAtF,IACAya,IAAA,CACA,OAAAza,EAAAya,IAAAvuB,OAAA,OACAqI,EAAA61R,eAAApqR,EAAAya,IACA0vQ,EAAA51R,EAAA61R,eACA,kBAAApqR,EAAAwH,IAAA,CACA,OAAAxH,EAAAwH,IAAAtb,OAAA,OACAqI,EAAA61R,eAAApqR,EAAAwH,IACA2iR,EAAA51R,EAAA61R,eACA,cAAApqR,EAAA3T,UAAA2T,EAAA9T,OAAA,EAAA8T,EAAA9T,QAAA4B,gBACAyG,EAAA61R,eAAApqR,EACAmqR,EAAA51R,EAAA61R,gBAEA,EAGA3kR,MAAA0uR,QAAA,SAAA39I,EAAAtsI,GAIA,OAHAvd,EAAAk5B,IAAA2wH,GAAA,SAAA1Q,GACA,OAAAA,EAAA57H,EACA,IACAA,EACA,EAEAzE,MAAA2uR,QAAA,SAAA59I,EAAAtsI,GAIA,OAHAvd,EAAAg+B,IAAA6rH,GAAA,SAAA1Q,GACA,OAAAA,EAAA57H,EACA,IACAA,EACA,EAqBA3V,EAAAiL,0BAyMA,IAAAyqE,EAAA,GAWA,SAAAkiN,EAAA5+C,GACAh5O,EAAAq7E,QACA29J,EAAA39J,OAAApvE,MAAAjM,EAAAq7E,OAAAzjE,YACAohO,EAAA39J,OAAAjuE,OAAApN,EAAAq7E,OAAAvjE,eAEAkhO,EAAA39J,OAAApvE,MAAA+sO,EAAA39J,OAAApvE,MACA+sO,EAAA39J,OAAAjuE,OAAA4rO,EAAA39J,OAAAjuE,QAEApN,EAAAtF,QAAAwmS,iBAAAloD,EAAAt+O,SACAs+O,EAAAjtL,MACA,CAEA,SAAAgnO,IACA36R,EAAA0I,QAAA40E,GAAA,SAAAsjK,GACAA,EAAAmoD,kBACAroS,OAAAgrB,aAAAk1N,EAAAmoD,kBAEAnoD,EAAA8kD,aACA9kD,EAAAmoD,iBAAAroS,OAAA8qB,YAAA,WACAg0Q,EAAA5+C,GACAq5C,GACA,GAAAr5C,EAAA8kD,cAEAlG,EAAA5+C,EAEA,GACA,CAcA,SAAAsnD,EAAAc,GACA,OAAAhpS,EAAAmI,KAAAm1E,GAAA,SAAAsjK,GACA,OAAAA,EAAAzhP,MAAA6pS,CACA,GACA,CAEA,SAAAnJ,EAAAmJ,GACA,IAAApoD,EAAAsnD,EAAAc,GAEApoD,GAAA,SAAAooD,IACAxD,IAEAhG,EADA5+C,EAAAsnD,EAAAc,KAIAphS,EAAAtF,QAAA87F,OACA,IAAA6qM,EAAArhS,EAAAtF,QAAA4mS,qBACAC,EAAAvoD,EAAAt+O,QAAA4mS,qBACAE,EAAAH,EAAA1vQ,EAAA4vQ,EAAA5vQ,EACA8vQ,EAAAJ,EAAA,EAAAE,EAAAhqR,EAAAiqR,EACAE,EAAAL,EAAA,EAAAE,EAAAvvO,EAAAwvO,EAEAxhS,EAAAtF,QAAAinS,aAAAH,EAAA,IAAAA,EAAAC,EAAAC,GACA1hS,EAAAtF,QAAA6gF,UAAAy9J,EAAA39J,OAAA,KACAr7E,EAAAtF,QAAAm8F,SACA,CAEA,SAAAgnM,EAAAuD,GACA,IAAAQ,EAAAzqS,SAAAoqB,cAAA,UACAqgR,EAAAx0R,OAAApN,EAAAq7E,OAAAjuE,OACAw0R,EAAA31R,MAAAjM,EAAAq7E,OAAApvE,MAEA,IAAA41R,EAAAD,EAAAtmN,WAAA,MACAqiN,EAAAkE,GACAD,EAAA31R,MAAA21R,EAAA31R,MAEA,IAAA+sO,EAAA,CACAzhP,KAAA6pS,EACA/lN,OAAAumN,EACAlnS,QAAAmnS,GAKA,OAFAnsN,EAAA51E,KAAAk5O,GAEAA,CACA,CAEA,SAAA4kD,IACA,IAAA5kD,EAAA6kD,EAAA,QACA7kD,EAAA8kD,aAAA,IACA9kD,EAAAjtL,KAAA,WAAAi0O,EAAAhnD,EAAA,CACA,CAEA,SAAAgnD,EAAAhnD,EAAA8oD,EAAAC,EAAAC,EAAAC,GACA,IAAAzC,EAAA,6BACAx/R,EAAAmuQ,UAAA,GACA,IACA+zB,EACAC,EACAzqS,EAAA07B,EAHAgvQ,GAAA,EAIA3jN,EAAAz+E,EAAAtF,QAAA43R,iBAAA,KACA5zM,EAAA1+E,EAAAtF,QAAA43R,iBAAAtyR,EAAAq7E,OAAApvE,MAAAjM,EAAAq7E,OAAAjuE,QAEA00R,GAAAC,GAAAC,GAAAC,IACAxjN,EAAAp7E,EAAAy+R,EAAA,GACArjN,EAAAn7E,EAAAy+R,EAAA,GACArjN,EAAAr7E,EAAA2+R,EAAA,GACAtjN,EAAAp7E,EAAA2+R,EAAA,GACAG,GAAA,GAEA,IAAAjqM,EAAA,EACAkqM,EAAA,UACAC,EAAA,EAqBA,GAnBA,GAAAtiS,EAAAw6R,eACA0H,EAAA,EACAC,EAAA,EACAnpD,IACAA,EAAAt+O,QAAAy9F,UAAA,IAEAA,EAAA,KAEA+pM,EAAA,GACAC,EAAA,GACAnpD,IACAA,EAAAt+O,QAAAy9F,UAAA,EACA6gJ,EAAAt+O,QAAAw9F,YAAAqgM,EAAA,YAEApgM,EAAA,EACAkqM,EAAA,UACAC,EAAA,GAGA,GAAAtiS,EAAAw6R,cAAA,CACA,IAAA9iS,EAAA+mF,EAAAp7E,EAAAo7E,EAAAp7E,GAAArD,EAAAo3R,SAAA8K,GAAAxqS,EAAAgnF,EAAAr7E,EAAA3L,GAAAsI,EAAAo3R,SAAA8K,EAAA,CACA,GAAAE,GACAz0B,EAAAx2Q,SAAAoiF,gBAAAimN,EAAA,SACAxwQ,aAAA,oBACA2+O,EAAA3+O,aAAA,SAAAqzQ,GACA10B,EAAA3+O,aAAA,eAAAmpE,GACAw1K,EAAA3+O,aAAA,iBAAAszQ,GACA30B,EAAA3+O,aAAA,KAAAt3B,GACAi2Q,EAAA3+O,aAAA,KAAAyvD,EAAAn7E,GACAqqQ,EAAA3+O,aAAA,KAAAt3B,GACAi2Q,EAAA3+O,aAAA,KAAA0vD,EAAAp7E,GACAtD,EAAAmuQ,UAAAruQ,KAAA6tQ,QAEA30B,EAAAt+O,QAAAg+F,YACAsgJ,EAAAt+O,QAAAg/F,OAAAhiG,EAAA+mF,EAAAn7E,GACA01O,EAAAt+O,QAAAi/F,OAAAjiG,EAAAgnF,EAAAp7E,GACA01O,EAAAt+O,QAAAm/F,YACAm/I,EAAAt+O,QAAAgjG,QAEA,CACA,IAAAhmG,EAAA+mF,EAAAn7E,EAAAm7E,EAAAn7E,GAAAtD,EAAAo3R,SAAA+K,GAAAzqS,EAAAgnF,EAAAp7E,EAAA5L,GAAAsI,EAAAo3R,SAAA+K,EAAA,CACA,GAAAC,GACAz0B,EAAAx2Q,SAAAoiF,gBAAAimN,EAAA,SACAxwQ,aAAA,oBACA2+O,EAAA3+O,aAAA,SAAAqzQ,GACA10B,EAAA3+O,aAAA,eAAAmpE,GACAw1K,EAAA3+O,aAAA,iBAAAszQ,GACA30B,EAAA3+O,aAAA,KAAAyvD,EAAAp7E,GACAsqQ,EAAA3+O,aAAA,KAAAt3B,GACAi2Q,EAAA3+O,aAAA,KAAA0vD,EAAAr7E,GACAsqQ,EAAA3+O,aAAA,KAAAt3B,GACAsI,EAAAmuQ,UAAAruQ,KAAA6tQ,QAEA30B,EAAAt+O,QAAAg+F,YACAsgJ,EAAAt+O,QAAAg/F,OAAAjb,EAAAp7E,EAAA3L,GACAshP,EAAAt+O,QAAAi/F,OAAAjb,EAAAr7E,EAAA3L,GACAshP,EAAAt+O,QAAAm/F,YACAm/I,EAAAt+O,QAAAgjG,QAEA,CACA,MACA,QAAA6kM,EAAA,EAAAA,GAAA,EAAAA,IAAA,CAEA,OAAAA,GACA,OACAvpD,IACAA,EAAAt+O,QAAAw9F,YAAAqgM,EAAA,cAEA8J,EAAA,UACAC,EAAA,IACA,MACA,OACAtpD,IACAA,EAAAt+O,QAAAw9F,YAAAqgM,EAAA,cAEA8J,EAAA,UACAC,EAAA,IACA,MACA,OACAtpD,IACAA,EAAAt+O,QAAAw9F,YAAAqgM,EAAA,cAEA8J,EAAA,UACAC,EAAA,IAIA,IAAAniR,EAAA,CACA9c,EAAAo7E,EAAAp7E,EAAA,GACAC,EAAAm7E,EAAAn7E,EAAA,IAEAmkD,EAAA,CACApkD,EAAAq7E,EAAAr7E,EAAA,GACAC,EAAAo7E,EAAAp7E,EAAA,IAGA,IAAA5L,EAAAyoB,EAAA9c,EAAA8c,EAAA9c,GAAArD,EAAAo3R,SAAA8K,GAAAxqS,EAAA+vD,EAAApkD,EAAA3L,GAAAsI,EAAAo3R,SAAA8K,EAAA,CACA,MAAAK,GAAA7qS,GAAA,GAAAsI,EAAAo3R,SAAA8K,IAAA,GACA,GAAAK,GAAA7qS,GAAA,GAAAsI,EAAAo3R,SAAA8K,EAAA,OACA,GAAAK,EAIA,GAAAH,GACAz0B,EAAAx2Q,SAAAoiF,gBAAAimN,EAAA,SACAxwQ,aAAA,oBACA2+O,EAAA3+O,aAAA,SAAAqzQ,GACA10B,EAAA3+O,aAAA,eAAAmpE,GACAw1K,EAAA3+O,aAAA,iBAAAszQ,GACA30B,EAAA3+O,aAAA,KAAAt3B,GACAi2Q,EAAA3+O,aAAA,KAAA7O,EAAA7c,GACAqqQ,EAAA3+O,aAAA,KAAAt3B,GACAi2Q,EAAA3+O,aAAA,KAAAy4B,EAAAnkD,GACAtD,EAAAmuQ,UAAAruQ,KAAA6tQ,QAEA30B,EAAAt+O,QAAAg+F,YACAsgJ,EAAAt+O,QAAAg/F,OAAAhiG,EAAAyoB,EAAA7c,GACA01O,EAAAt+O,QAAAi/F,OAAAjiG,EAAA+vD,EAAAnkD,GACA01O,EAAAt+O,QAAAm/F,YACAm/I,EAAAt+O,QAAAgjG,QAEA,CACA,IAAAhmG,EAAAyoB,EAAA7c,EAAA6c,EAAA7c,GAAAtD,EAAAo3R,SAAA+K,GAAAzqS,EAAA+vD,EAAAnkD,EAAA5L,GAAAsI,EAAAo3R,SAAA+K,EAAA,CACA,MAAAI,GAAA7qS,GAAA,GAAAsI,EAAAo3R,SAAA+K,IAAA,GACA,GAAAI,GAAA7qS,GAAA,GAAAsI,EAAAo3R,SAAA+K,EAAA,OACA,GAAAI,EAIA,GAAAH,GACAz0B,EAAAx2Q,SAAAoiF,gBAAAimN,EAAA,SACAxwQ,aAAA,oBACA2+O,EAAA3+O,aAAA,SAAAqzQ,GACA10B,EAAA3+O,aAAA,eAAAmpE,GACAw1K,EAAA3+O,aAAA,iBAAAszQ,GACA30B,EAAA3+O,aAAA,KAAA7O,EAAA9c,GACAsqQ,EAAA3+O,aAAA,KAAAt3B,GACAi2Q,EAAA3+O,aAAA,KAAAy4B,EAAApkD,GACAsqQ,EAAA3+O,aAAA,KAAAt3B,GACAsI,EAAAmuQ,UAAAruQ,KAAA6tQ,QAEA30B,EAAAt+O,QAAAg+F,YACAsgJ,EAAAt+O,QAAAg/F,OAAAv5E,EAAA9c,EAAA3L,GACAshP,EAAAt+O,QAAAi/F,OAAAlyC,EAAApkD,EAAA3L,GACAshP,EAAAt+O,QAAAm/F,YACAm/I,EAAAt+O,QAAAgjG,QAEA,CACA,CAEA,GAAA19F,EAAAy6R,oBAAAz6R,EAAA26R,yBAAA,CACA,IAAAxzP,EAAAhvB,SAAAnY,EAAA+3B,WAAAvsB,SAAAxL,EAAA26R,2BACA3hD,IACAA,EAAAt+O,QAAAw9F,YAAA,UACA8gJ,EAAAt+O,QAAAy9F,UAAA,GAGAkqM,EAAA,UACAC,EAAA,EACAnqM,EAAA,EAEA,IAAA78C,GAAA,GAAAt7C,EAAAo3R,SAAA8K,EAEA,IAAAh5L,MAAA/hE,GAAA,CACA,IAAAu1D,EAAAje,EAAAp7E,EAAA,GACAs5F,EAAAle,EAAAn7E,EAAA,GACAk/R,EAAA9jN,EAAAr7E,EAAA,GACAo/R,EAAA/jN,EAAAp7E,EAAA,GAEA,IAAA5L,EAAAglG,KAAA18F,EAAAo3R,SAAA8K,GAAAxqS,EAAA,EAAAA,GAAAsI,EAAAo3R,SAAA8K,EACA,IAAAxqS,EAAA4jD,IAAA,GAAAt7C,EAAAo3R,SAAA8K,EAAA/6P,IAAA,EAIA,IAAA/T,EAAAupE,KAAA38F,EAAAo3R,SAAA+K,GAAA/uQ,EAAA,EAAAA,GAAApzB,EAAAo3R,SAAA+K,EAAA,CAMA,IAAAx0B,EALA,IAAAv6O,EAAAkoB,IAAA,GAAAt7C,EAAAo3R,SAAA+K,EAAAh7P,IAAA,EAIA,GAAAi7P,GACAz0B,EAAAx2Q,SAAAoiF,gBAAAimN,EAAA,SACAxwQ,aAAA,oBACA2+O,EAAA3+O,aAAA,SAAAqzQ,GACA10B,EAAA3+O,aAAA,eAAAmpE,GACAw1K,EAAA3+O,aAAA,iBAAAszQ,GACA30B,EAAA3+O,aAAA,KAAAt3B,EAAA,GACAi2Q,EAAA3+O,aAAA,KAAAoE,GACAu6O,EAAA3+O,aAAA,KAAAt3B,EAAA,GACAi2Q,EAAA3+O,aAAA,KAAAoE,GACApzB,EAAAmuQ,UAAAruQ,KAAA6tQ,IAEAA,EAAAx2Q,SAAAoiF,gBAAAimN,EAAA,SACAxwQ,aAAA,oBACA2+O,EAAA3+O,aAAA,SAAAqzQ,GACA10B,EAAA3+O,aAAA,eAAAmpE,GACAw1K,EAAA3+O,aAAA,iBAAAszQ,GACA30B,EAAA3+O,aAAA,KAAAt3B,GACAi2Q,EAAA3+O,aAAA,KAAAoE,EAAA,GACAu6O,EAAA3+O,aAAA,KAAAt3B,GACAi2Q,EAAA3+O,aAAA,KAAAoE,EAAA,GACApzB,EAAAmuQ,UAAAruQ,KAAA6tQ,QAEA30B,EAAAt+O,QAAAg+F,YACAsgJ,EAAAt+O,QAAAg/F,OAAAhiG,EAAA,EAAA07B,GACA4lN,EAAAt+O,QAAAi/F,OAAAjiG,EAAA,EAAA07B,GACA4lN,EAAAt+O,QAAAm/F,YACAm/I,EAAAt+O,QAAAgjG,SAEAs7I,EAAAt+O,QAAAg+F,YACAsgJ,EAAAt+O,QAAAg/F,OAAAhiG,EAAA07B,EAAA,GACA4lN,EAAAt+O,QAAAi/F,OAAAjiG,EAAA07B,EAAA,GACA4lN,EAAAt+O,QAAAm/F,YACAm/I,EAAAt+O,QAAAgjG,QAEA,CAEA,CACA,CACA,CACA,CAmCA,SAAA46L,EAAA56L,GAEA,GAAAA,EAAA/lG,OAAA,EAUA,OATAqI,EAAAtF,QAAAg+F,YACA14F,EAAAtF,QAAAg/F,OAAAgE,EAAA,GAAAr6F,EAAAq6F,EAAA,GAAAp6F,GACAtD,EAAAtF,QAAAi/F,OAAA+D,EAAA,GAAAr6F,EAAAq6F,EAAA,GAAAp6F,GACAtD,EAAAtF,QAAAg/F,OAAAgE,EAAA,GAAAr6F,EAAAq6F,EAAA,GAAAp6F,GACAtD,EAAAtF,QAAAm/F,YACA75F,EAAAtF,QAAAw9F,YAAAqgM,EAAA76L,EAAA,GAAAviE,OACAn7B,EAAAtF,QAAAy9F,UAAAuF,EAAA,GAAAn6F,UACAvD,EAAAtF,QAAAgjG,SAKA19F,EAAAtF,QAAAg+F,YACA14F,EAAAtF,QAAAg/F,OAAAgE,EAAA,GAAAr6F,EAAAq6F,EAAA,GAAAp6F,GAEA,QAAA5L,EAAA,EAAAA,EAAAgmG,EAAA/lG,OAAA,EAAAD,IACAsI,EAAAtF,QAAAgoS,iBAAAhlM,EAAAhmG,GAAA2L,EAAAq6F,EAAAhmG,GAAA4L,GAAAo6F,EAAAhmG,GAAA2L,EAAAq6F,EAAAhmG,EAAA,GAAA2L,GAAA,GAAAq6F,EAAAhmG,GAAA4L,EAAAo6F,EAAAhmG,EAAA,GAAA4L,GAAA,GAGAtD,EAAAtF,QAAAgoS,iBAAAhlM,EAAAhmG,GAAA2L,EAAAq6F,EAAAhmG,GAAA4L,EAAAo6F,EAAAhmG,EAAA,GAAA2L,EAAAq6F,EAAAhmG,EAAA,GAAA4L,GAEAtD,EAAAtF,QAAAw9F,YAAAqgM,EAAA76L,EAAA,GAAAviE,OACAn7B,EAAAtF,QAAAy9F,UAAAuF,EAAA,GAAAn6F,KACAvD,EAAAtF,QAAAgjG,QACA,CAqBA,SAAAigM,EAAAtrP,GACA,IAAAinC,EAAAniF,SAAAoiF,gBAAA,oCACAopN,EAAArpN,EAAAspN,kBAEAz7P,EAAAkL,EAAAlL,MACAkL,EAAAlL,MAAA,SAAA07P,EAAAC,GAEA,OADAH,IAAAI,gBAAAF,EAAAC,GACA37P,EAAAljB,KAAAouB,EAAAwwP,EAAAC,EACA,EAEA,IAAApjP,EAAArN,EAAAqN,UACArN,EAAAqN,UAAA,SAAAiiH,EAAAC,GAEA,OADA+gI,IAAAjjP,UAAAiiH,EAAAC,GACAliH,EAAAz7B,KAAAouB,EAAAsvH,EAAAC,EACA,EAEA,IAAA0tE,EAAAh2J,EAAA0pN,iBACA3wP,EAAAigP,iBAAA,SAAAjvR,EAAAC,GAGA,OAFAgsO,EAAAjsO,IACAisO,EAAAhsO,IACAgsO,EAAA2zD,gBAAAN,EAAAO,UACA,EAEA7wP,EAAA8wP,SAAA,SAAAC,GACAT,EAAAS,CACA,EAEA/wP,EAAAgxP,cAAA,WACAV,EAAArpN,EAAAspN,iBACA,EAEAvwP,EAAA6uP,iBAAA,SAAAoC,GACAA,EAAA3B,aAAAgB,EAAAhxQ,EAAAgxQ,EAAAhyO,EAAAgyO,EAAA/qS,EAAA+qS,EAAArrR,EAAAqrR,EAAAprR,EAAAorR,EAAA3wO,GACAsxO,EAAAH,UACAG,EAAAH,SAAAR,EAEA,EAEAtwP,EAAAivP,mBAAA,WACA,OAAAqB,CACA,CACA,CAoKA,SAAApK,EAAAgL,GAWA,IAKAxjO,EAfA,YAAAwjO,EAEA,cAAAA,EAAAnuR,OAAA,KACAmuR,GAGA,GAAAA,EAAA5rS,SACA4rS,GAAA,MAWA,UAPA,UADAxjO,EAAA5nD,SAAAorR,EAAAzrS,UAAA,YACA,IAOA,OANA,MAAAioE,IAAA,GAMA,MALA,IAAAA,GAKA,MAFA,KADAA,EAAA5nD,SAAAorR,EAAAzrS,UAAA,SAGA,QAGA,CAEA,SAAAsoS,EAAAjlQ,GACA,gBAAAA,EAAA,EAEA,SAAAA,EAAA/lB,OAAA,KACAsJ,WAAAyc,EAAA1jC,MAAA,QAAAqnB,QAAA,SACA,QAAAqc,EAAA/lB,OAAA,MAIA,IAAA+lB,EAAAxjC,OAHA,GAQA,IADAwgB,SAAAgjB,EAAArjC,UAAA,QAEA,GACA,CAEA,SAAAqoS,EAAAhlQ,GACA,YAAAA,EAEA,cAAAA,EAAA/lB,OAAA,MACA+lB,IAAAxpB,MAAA,0EACA,IAAAwpB,EAAAxjC,OAAA,KACA,IAAAwgB,SAAAgjB,EAAA,OAAAzrB,SAAA,KAAA/R,OAAA,IACA,IAAAwa,SAAAgjB,EAAA,OAAAzrB,SAAA,KAAA/R,OAAA,IACA,IAAAwa,SAAAgjB,EAAA,OAAAzrB,SAAA,KAAA/R,OAAA,MAGA,IAAAw9B,EAAArjC,UAAA,IACA,CAEA,SAAAs+R,EAAAj7P,EAAAkB,GAKA,GAJA,MAAAlB,EAAA/lB,OAAA,OACA+lB,EAAAo9P,EAAAp9P,IAGA91B,MAAAg3B,EACA,OAAAlB,EAGA,IAAAqoQ,EAAAroQ,EAAA1jC,MAAA,KAIA,cAHA0gB,SAAAqrR,EAAA,GAAA1kR,QAAA,aAGA,IAFA3G,SAAAqrR,EAAA,IAEA,IADArrR,SAAAqrR,EAAA,IACA,IAAAnnQ,EAAA,GACA,CAMA,SAAA6/P,IACA,uBAAApjS,iBAAAO,UAAA,gBACA,CAEA,OAAA2G,CACA,CAGA,IACAtJ,OCtnEA,6BACA,SACA,UACA,WACA,8BACA,UACA,yBACA,gBACA,SAAA2B,EAAAkM,EAAA22B,EAAAuoQ,EAAAhvR,EAAAo2L,EAAA73J,GACA,aAEA,IAAAhY,EAAA,CACAzgC,KAAA,CACA45M,qBAAA,gBACAylF,mBAAA,wBACAD,gBAAA,sBACAY,cAAA,EACArnP,SAAA,CACAlvC,mBAAA,EACAmvC,YAAA,EACAO,YAAA,aAEAghP,gBAAA,EACAgG,iBAAA,EACAhC,iBAAA,EACAgL,WAAA,YACAlD,YAAA,IAIA,SAAAmD,EAAAvhR,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GACA,IAAApiB,EAAAf,KAEAe,EAAAulN,SAAAltN,EAAA,aACA2H,EAAAulN,SAAA1gN,IAAA,CACAoH,MAAA,SAGAjM,EAAAggG,QAAA3nG,EAAA,cACA2H,EAAAggG,QAAAp7F,SAAA,mBACA5E,EAAAggG,QAAAn7F,IAAA,CACAoH,MAAAjM,EAAAzF,KAAAgJ,KAAA,OACA6J,OAAApN,EAAAzF,KAAAgJ,KAAAD,EAAA,QACAE,OAAAxD,EAAAzF,KAAAiJ,OACAJ,SAAA,aAEApD,EAAAgyR,sBAAA35R,EAAA,qCAAAwM,IAAA,CACAzB,SAAA,WACAuC,IAAA,OACAD,KAAA,MACAlC,OAAAxD,EAAAzF,KAAAiJ,OAAA,IAGA03B,EAAA6C,aAAA/9B,EAAA,KAAAA,EAAAggG,SACAhgG,EAAAulN,SAAAz/M,SAAA9F,EAAAwE,UACAxE,EAAAgyR,sBAAAlsR,SAAA9F,EAAAwE,UACAxE,EAAAggG,QAAAl6F,SAAA9F,EAAAwE,SACA,CA0LA,OAxLAD,EAAA3F,OAAA+kS,EAAAp/R,GAEAo/R,EAAA9qQ,SAAA,YAEA8qQ,EAAA3kS,UAAAkiN,gBAAA,CACA,CAAArxM,IAAA,gBAAApE,MAAA,iBACA,CAAAoE,IAAA,YAAApE,MAAA,aACA,CAAAoE,IAAA,kCAAApE,MAAA,mCACA,CAAAoE,IAAA,gBAAApE,MAAA,qBAGAk4R,EAAA3kS,UAAA++B,aAAA,WACA7C,EAAA6C,aAAA9+B,KAAA,KAAAA,KAAA+gG,SACA/gG,KAAA+gG,QAAAn7F,IAAA,qBACA,EAEA8+R,EAAA3kS,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,gBACA3M,KAAA2C,OAAAsxC,SAAAhzC,MAAAjB,MACA+zC,EAAAh0C,UAAAw0C,2BAAAv0C,KACA,EAEA0kS,EAAA3kS,UAAA0H,WAAA,WACA,IAAA1G,EAAAf,KAEA2kB,YAAA,WACA,IAAAuwL,EAAAn0M,EAAAzF,KAAA45M,qBACAuoF,EAAA18R,EAAA+J,eAAA,gBAIAwpR,EAAAvzR,EAAA+J,eAAA,aAIA+yR,EAAA98R,EAAA+J,eAAA,UAIAqzR,EAAAp9R,EAAA+J,eAAA,UAKA/J,EAAA4jS,YAAA,IAAAH,EACAzjS,EAAAzF,KACAyF,EAAAggG,QACAhgG,EAAAulN,SACAvlN,EAAAgyR,sBACAhyR,EAAA4B,OAAAm2B,WACA,CACAo8K,uBACAuoF,sBACAC,0BAzBA,WACA38R,EAAA6J,sBAAA,eACA,EAwBA0pR,qBACAC,8BAvBA,WACAxzR,EAAA6J,sBAAA,YACA,EAsBAizR,uBACAC,2BArBA,WACA/8R,EAAA6J,sBAAA,SACA,EAoBAuzR,uBACAC,2BAnBA,WACAr9R,EAAA6J,sBAAA,SACA,GAmBA7J,EAAA4B,OAAAmF,gBAGA/G,EAAA4jS,YAAAvwC,cAEAzvO,YAAA,WACA5jB,EAAA6jS,kBACA,OACA,KACA,EAEAF,EAAA3kS,UAAAo3C,WAAA,WACA,IAAAp2C,EAAAf,KAEA2kB,YAAA,WACA5jB,EAAA4jS,YAAA/9P,WACA7lC,EAAA4jS,YAAA34R,yBACA,KACA,EAEA04R,EAAA3kS,UAAA6mC,SAAA,SAAA8M,GACA,IAAA3yC,EAAAf,KAEA2kB,YAAA,WACA5jB,EAAA4jS,YAAA/9P,SAAA8M,EAAAlnC,OACAzL,EAAA4jS,YAAA34R,yBACA,KACA,EAEA04R,EAAA3kS,UAAAwM,SAAA,WACA,IAAA8tE,EAAAr6E,KAAA2kS,YAAArE,YACA,mCAAAvB,KAAA1kN,EACA,EAEAqqN,EAAA3kS,UAAAqhG,QAAA,WACA,oBAAAphG,KAAA1E,KAAAmpS,WACAzkS,KAAAuM,WACAvM,KAAA2kS,YAAArD,YAAAthS,KAAA1E,KAAAimS,WAAA,YACA,EAEAmD,EAAA3kS,UAAAoM,SAAA,WACA,WAAAnM,KAAA2kS,YAAA97O,OAAAnwD,MAIA,EAEAgsS,EAAA3kS,UAAA8kS,gBAAA,WAEA7kS,KAAA2kS,YAAAvR,OAAA,YACApzR,KAAA2kS,YAAApN,YAAA,CACA,EAEAmN,EAAA3kS,UAAAwiN,YAAA,SAAA5xL,EAAAg9H,GAEA3tJ,KAAA2kS,YAAAvR,OAAAziQ,GAAA,GACA3wB,KAAA2kS,YAAApN,YAAA,CACA,EAEAmN,EAAA3kS,UAAA0iN,qBAAA,SAAA9xL,GACA,OAAAi7K,EAAAZ,QAAA,CACAC,UAAAt6K,EACAw6K,cAAA,EACAC,aAAAprM,KAAA1E,KAAA45M,qBACA5wM,KAAAtE,KAAA1E,KAAAgJ,MAEA,EAEAogS,EAAA3kS,UAAA+kS,iCAAA,SAAAjgP,GACA,IAAAr4C,EAAAgJ,EAAA1D,+BAAA+yC,EAAA3sD,UAEA,GAAAsU,EAEA,cAAApT,EAAAsM,KAAA8G,GAAA,CACA,IAAAg2M,EAAAxiN,KAAAyiN,qBAAAj2M,GACAxM,KAAAuiN,YAAAC,EAAA,GACA,MACA,IAAAxuM,EAAA6wC,EAAA3sD,SAAA8b,KAAA6wC,EAAA3sD,SAAA+uB,IAEA,GAAAjT,EAAA,CACA,IAAA0uM,EAAA1iN,KAAAyiN,qBAAAzuM,GAEA0uM,EACA1iN,KAAAuiN,YAAAG,EAAA79J,EAAA3sD,SAAAgnN,UAAAr6J,EAAA3sD,SAAAinN,UAEAn/M,KAAA6kS,iBACA,CACA,MAfA7kS,KAAA6kS,iBAgBA,EAEAH,EAAA3kS,UAAAglS,2BAAA,WACA/kS,KAAA2kS,YAAApH,eACAv9R,KAAA2kS,YAAA/9P,WACA5mC,KAAA2kS,YAAAvR,QACA,EAEAsR,EAAA3kS,UAAAsI,iBAAA,WACArI,KAAA2kS,aAAA3kS,KAAAgO,YACAhO,KAAA4kS,kBAEA,EAEAF,EAAA3kS,UAAA6kS,iBAAA,WACA,IAAAlzJ,EAAAjyH,WAAAzf,KAAA+gG,QAAAn7F,IAAA,sBACAgsI,EAAAnyH,WAAAzf,KAAA+gG,QAAAn7F,IAAA,qBACA+rI,EAAAlyH,WAAAzf,KAAA+gG,QAAAn7F,IAAA,uBACA6rI,EAAAhyH,WAAAzf,KAAA+gG,QAAAn7F,IAAA,wBAEAo/R,EAAAhlS,KAAAuF,SAAAyH,SAAA0kI,GAAA,IAAAC,GAAA,GACAszJ,EAAAjlS,KAAAuF,SAAA4I,UAAAyjI,GAAA,IAAAH,GAAA,GAEAyzJ,EAAAllS,KAAAsmN,SAAAn4M,SAEA62R,EAAA,GAAAC,EAAAC,EAAA,GACAllS,KAAAsmN,SAAAt5M,MAAA,IACAhN,KAAA2kS,YAAAtE,cAAA,OAEArgS,KAAAsmN,SAAAt5M,MAAAg4R,GACAhlS,KAAA2kS,YAAAtE,cAAA2E,EAAAC,EAAAC,GAEA,EAEAR,CACA;;ACnPA,SAAAtzO,GAEA,mBAAA35D,eAAA65D,IAGA75D,OAAA,gBAAA25D,GAEA,iBAAAC,QAGAp4D,OAAAo4D,QAAAD,IAKAv3D,OAAAsrS,WAAA/zO,GAGA,CAlBA,EAkBA,WAEA,aAEA,IAAAwwE,EAAA,SAYA,SAAAr9F,EAAAjsB,GACAA,EAAAisB,gBACA,CAiCA,SAAA2C,EAAAxU,GACA,uBAAAA,IAAAu3E,MAAAv3E,IAAA7d,SAAA6d,EACA,CAGA,SAAA0yQ,EAAAx5R,EAAAk0B,EAAAynB,GACAA,EAAA,IACA5hD,EAAAiG,EAAAk0B,GACAnb,YAAA,WACA/b,EAAAgD,EAAAk0B,EACA,GAAAynB,GAEA,CASA,SAAA89O,EAAA3yQ,GACA,OAAAzgB,MAAAiS,QAAAwO,KAAA,CAAAA,EACA,CAGA,SAAA4yQ,EAAAC,GAEA,IAAAvuJ,GADAuuJ,EAAA5yP,OAAA4yP,IACA/sS,MAAA,KACA,OAAAw+I,EAAAt+I,OAAA,EAAAs+I,EAAA,GAAAt+I,OAAA,CACA,CAGA,SAAAiN,EAAA2sI,EAAAxyG,GACAwyG,EAAAs6F,UACAt6F,EAAAs6F,UAAAxnL,IAAAtlB,GAEAwyG,EAAAxyG,WAAA,IAAAA,CAEA,CAGA,SAAAl3B,EAAA0pI,EAAAxyG,GACAwyG,EAAAs6F,UACAt6F,EAAAs6F,UAAA7zO,OAAA+mC,GAEAwyG,EAAAxyG,UAAAwyG,EAAAxyG,UAAAjgB,QAAA,IAAAtN,OAAA,UAAAutB,EAAAtnC,MAAA,KAAAwa,KAAA,yBAEA,CAQA,SAAAwyR,EAAAv0P,GAEA,IAAAw0P,OAAAr/R,IAAAvM,OAAAysF,YACAo/M,EAAA,gBAAAz0P,EAAA00P,YAAA,IAIA,OACAvhS,EAJAqhS,EAAA5rS,OAAAysF,YAAAo/M,EAAAz0P,EAAA14B,gBAAA6tB,WAAA6K,EAAA9gB,KAAAiW,WAKA/hC,EAJAohS,EAAA5rS,OAAA2sF,YAAAk/M,EAAAz0P,EAAA14B,gBAAAzK,UAAAmjC,EAAA9gB,KAAAriB,UAMA,CAqDA,SAAA83R,EAAAC,EAAAC,GACA,YAAAA,EAAAD,EACA,CAGA,SAAAE,EAAA7qN,EAAA1uE,GACA,WAAAA,GAAA0uE,EAAA,GAAAA,EAAA,GACA,CAiBA,SAAA8qN,EAAAx5R,EAAA+nB,GAIA,IAFA,IAAAJ,EAAA,EAEA3nB,GAAA+nB,EAAAJ,IACAA,GAAA,EAGA,OAAAA,CACA,CAGA,SAAA8xQ,EAAAC,EAAAC,EAAA35R,GAEA,GAAAA,GAAA05R,EAAAxnS,OAAA,MACA,WAGA,IAAA0nS,EAAAC,EAAAR,EAAAC,EAAA3xQ,EAAA6xQ,EAAAx5R,EAAA05R,GAOA,OALAE,EAAAF,EAAA/xQ,EAAA,GACAkyQ,EAAAH,EAAA/xQ,GACA0xQ,EAAAM,EAAAhyQ,EAAA,GACA2xQ,EAAAK,EAAAhyQ,GAEA0xQ,EAvCA,SAAA3qN,EAAA1uE,GACA,OAAAu5R,EAAA7qN,IAAA,KACA1uE,EAAAuI,KAAAD,IAAAomE,EAAA,IACA1uE,EAAA0uE,EAAA,GACA,CAmCAorN,CAAA,CAAAF,EAAAC,GAAA75R,GAAAo5R,EAAAC,EAAAC,EACA,CAqBA,SAAAS,EAAAJ,EAAAK,EAAAzrI,EAAAvuJ,GAEA,SAAAA,EACA,OAAAA,EAGA,IAAAkmB,EAAAg/B,EAAAv9B,EAAA6xQ,EAAAx5R,EAAA25R,GAGA,OAAAprI,EAMAvuJ,GAJAkmB,EAAAyzQ,EAAAhyQ,EAAA,MACAu9B,EAAAy0O,EAAAhyQ,IAGAzB,GAAA,EACAg/B,EAGAh/B,EAGA8zQ,EAAAryQ,EAAA,GAIAgyQ,EAAAhyQ,EAAA,GAhPA,SAAA3nB,EAAAmnD,GACA,OAAA5+C,KAAA81C,MAAAr+C,EAAAmnD,IACA,CA8OAmc,CACAtjE,EAAA25R,EAAAhyQ,EAAA,GACAqyQ,EAAAryQ,EAAA,IALA3nB,CAOA,CAKA,SAAAi6R,EAAAjlS,EAAAgL,EAAAgS,GAEA,IAAAovJ,EAQA,GALA,iBAAAphK,IACAA,EAAA,CAAAA,IAIA,mBAAAtM,OAAAH,UAAA0Q,SAAAuU,KAAAxY,GACA,UAAAiQ,MAAA,eAAAmlH,EAAA,sCAaA,IAAA16F,EARA0mI,EADA,QAAApsK,EACA,EACA,QAAAA,EACA,IAEAie,WAAAje,MAIA0lC,EAAA16B,EAAA,IACA,UAAAiQ,MAAA,eAAAmlH,EAAA,mCAIApjH,EAAA2nR,KAAAtlS,KAAA+sK,GACApvJ,EAAA0nR,KAAArlS,KAAA2L,EAAA,IAKAohK,EAKApvJ,EAAAgoR,OAAA3lS,MAAAopG,MAAAz9F,EAAA,KAAAA,EAAA,IAJAy9F,MAAAz9F,EAAA,MACAgS,EAAAgoR,OAAA,GAAAh6R,EAAA,IAMAgS,EAAAkoR,qBAAA7lS,KAAA,EACA,CAEA,SAAA8lS,EAAAluS,EAAA25D,EAAA5zC,GAGA,IAAA4zC,EACA,SAIA5zC,EAAAgoR,OAAA/tS,GAAAstS,EAAA,CACAvnR,EAAA0nR,KAAAztS,GACA+lB,EAAA0nR,KAAAztS,EAAA,IACA25D,GAAAwzO,EACApnR,EAAA2nR,KAAA1tS,GACA+lB,EAAA2nR,KAAA1tS,EAAA,IAEA,IAAAmuS,GAAApoR,EAAA0nR,KAAAztS,EAAA,GAAA+lB,EAAA0nR,KAAAztS,IAAA+lB,EAAAqoR,UAAApuS,GACAquS,EAAA/xR,KAAAskD,KAAA8rC,OAAAyhM,EAAAtxR,QAAA,OACAq9C,EAAAn0C,EAAA0nR,KAAAztS,GAAA+lB,EAAAqoR,UAAApuS,GAAAquS,EAEAtoR,EAAAkoR,qBAAAjuS,GAAAk6D,CACA,CAKA,SAAAo0O,EAAArjN,EAAAq3E,EAAAisI,GAEAhnS,KAAAmmS,KAAA,GACAnmS,KAAAkmS,KAAA,GACAlmS,KAAAwmS,OAAA,CAAAQ,IAAA,GACAhnS,KAAA6mS,UAAA,KACA7mS,KAAA0mS,qBAAA,GAEA1mS,KAAA+6J,OAEA,IAAAv5J,EAAAylS,EAAA,GAGA,IAAAzlS,KAAAkiF,EACAA,EAAA7wD,eAAArxB,IACAylS,EAAApmS,KAAA,CAAA6iF,EAAAliF,OAaA,IARAylS,EAAAvuS,QAAA,iBAAAuuS,EAAA,MACAA,EAAAv6K,MAAA,SAAAh6F,EAAAg/B,GAAA,OAAAh/B,EAAA,MAAAg/B,EAAA,SAEAu1O,EAAAv6K,MAAA,SAAAh6F,EAAAg/B,GAAA,OAAAh/B,EAAA,GAAAg/B,EAAA,MAKAlwD,EAAA,EAAAA,EAAAylS,EAAAvuS,OAAA8I,IACAilS,EAAAQ,EAAAzlS,GAAA,GAAAylS,EAAAzlS,GAAA,GAAAxB,MAQA,IAHAA,KAAA6mS,UAAA7mS,KAAAwmS,OAAA9nS,MAAA,GAGA8C,EAAA,EAAAA,EAAAxB,KAAA6mS,UAAAnuS,OAAA8I,IACAmlS,EAAAnlS,EAAAxB,KAAA6mS,UAAArlS,GAAAxB,KAEA,CAEA+mS,EAAAhnS,UAAAmnS,UAAA,SAAA16R,GAEA,IAAAmmD,EAAA3yD,KAAA6mS,UAAA,GAEA,GAAAl0O,GAAAnmD,EAAAmmD,EAAA,KACA,UAAAl2C,MAAA,eAAAmlH,EAAA,iEAGA,WAAA5hI,KAAAmmS,KAAAztS,QAAAqtS,EAAA/lS,KAAAkmS,KAAA15R,EACA,EAEAu6R,EAAAhnS,UAAAkmS,WAAA,SAAAz5R,GAIA,OAFAA,EAAAy5R,EAAAjmS,KAAAkmS,KAAAlmS,KAAAmmS,KAAA35R,EAGA,EAEAu6R,EAAAhnS,UAAAonS,aAAA,SAAA36R,GAEA,OA1LA,SAAA05R,EAAAC,EAAA35R,GAGA,GAAAA,GAAA,IACA,OAAA05R,EAAAxnS,OAAA,MAGA,IAAAmnS,EAAA1xQ,EAAA6xQ,EAAAx5R,EAAA25R,GAOA,OAlDA,SAAAjrN,EAAA1uE,GACA,OAAAA,GAAA0uE,EAAA,GAAAA,EAAA,QAAAA,EAAA,EACA,CAgDAksN,CAAA,CALAlB,EAAA/xQ,EAAA,GACA+xQ,EAAA/xQ,KAIA3nB,GAHAq5R,EAAAM,EAAAhyQ,EAAA,KAGAyxQ,EAAAC,EAFAM,EAAAhyQ,IAGA,CA2KAgzQ,CAAAnnS,KAAAkmS,KAAAlmS,KAAAmmS,KAAA35R,EACA,EAEAu6R,EAAAhnS,UAAAwmS,QAAA,SAAA/5R,GAIA,OAFAA,EAAA+5R,EAAAvmS,KAAAmmS,KAAAnmS,KAAAwmS,OAAAxmS,KAAA+6J,KAAAvuJ,EAGA,EAEAu6R,EAAAhnS,UAAAsnS,eAAA,SAAA76R,GAEA,IAAA2nB,EAAA6xQ,EAAAx5R,EAAAxM,KAAAmmS,MAEA,OACAmB,WAAA,CAAAn4J,WAAAnvI,KAAAkmS,KAAA/xQ,EAAA,GAAAw+B,KAAA3yD,KAAA6mS,UAAA1yQ,EAAA,GAAA2yQ,YAAA9mS,KAAA0mS,qBAAAvyQ,EAAA,IACAozQ,SAAA,CAAAp4J,WAAAnvI,KAAAkmS,KAAA/xQ,EAAA,GAAAw+B,KAAA3yD,KAAA6mS,UAAA1yQ,EAAA,GAAA2yQ,YAAA9mS,KAAA0mS,qBAAAvyQ,EAAA,IACAqzQ,UAAA,CAAAr4J,WAAAnvI,KAAAkmS,KAAA/xQ,EAAA,GAAAw+B,KAAA3yD,KAAA6mS,UAAA1yQ,EAAA,GAAA2yQ,YAAA9mS,KAAA0mS,qBAAAvyQ,EAAA,IAEA,EAEA4yQ,EAAAhnS,UAAA0nS,kBAAA,WACA,IAAAC,EAAA1nS,KAAA6mS,UAAA3/R,IAAAo+R,GACA,OAAAvwR,KAAAoiB,IAAAl2B,MAAA,KAAAymS,EACA,EAGAX,EAAAhnS,UAAAwjI,QAAA,SAAA/2H,GACA,OAAAxM,KAAAumS,QAAAvmS,KAAAimS,WAAAz5R,GACA,EAeA,IAAAm7R,EAAA,CAAAh0O,GAAA,SAAAnnD,GACA,YAAApG,IAAAoG,KAAA8I,QAAA,EACA,EAAAs+C,KAAAuxC,QAEA,SAAAyiM,EAAAlkN,GAGA,GAtcA,SAAAA,GACA,uBAAAA,GAAA,mBAAAA,EAAA/vB,IAAA,mBAAA+vB,EAAA9vB,IACA,CAocAi0O,CAAAnkN,GACA,SAGA,UAAAjnE,MAAA,eAAAmlH,EAAA,gDACA,CAEA,SAAAkmK,EAAAp9L,EAAAhnB,GAEA,IAAAx8C,EAAAw8C,GACA,UAAAjnE,MAAA,eAAAmlH,EAAA,6BAKAl3B,EAAAs8L,WAAAtjN,CACA,CAEA,SAAAqkN,EAAAr9L,EAAAhnB,GAGA,oBAAAA,GAAAzxE,MAAAiS,QAAAw/D,GACA,UAAAjnE,MAAA,eAAAmlH,EAAA,gCAIA,QAAAx7H,IAAAs9E,EAAArxD,UAAAjsB,IAAAs9E,EAAAvsD,IACA,UAAA1a,MAAA,eAAAmlH,EAAA,yCAIA,GAAAl+C,EAAArxD,MAAAqxD,EAAAvsD,IACA,UAAA1a,MAAA,eAAAmlH,EAAA,+CAGAl3B,EAAAs9L,SAAA,IAAAjB,EAAArjN,EAAAgnB,EAAAqwD,KAAArwD,EAAAs8L,WACA,CAEA,SAAAiB,EAAAv9L,EAAAhnB,GAMA,GAJAA,EAAA2hN,EAAA3hN,IAIAzxE,MAAAiS,QAAAw/D,OAAAhrF,OACA,UAAA+jB,MAAA,eAAAmlH,EAAA,mCAIAl3B,EAAA41D,QAAA58E,EAAAhrF,OAIAgyG,EAAAxpF,MAAAwiE,CACA,CAEA,SAAAwkN,EAAAx9L,EAAAhnB,GAKA,GAFAgnB,EAAAqwD,KAAAr3E,EAEA,kBAAAA,EACA,UAAAjnE,MAAA,eAAAmlH,EAAA,sCAEA,CAEA,SAAAumK,EAAAz9L,EAAAhnB,GAKA,GAFAgnB,EAAApjD,QAAAo8B,EAEA,kBAAAA,EACA,UAAAjnE,MAAA,eAAAmlH,EAAA,yCAEA,CAEA,SAAAwmK,EAAA19L,EAAAhnB,GAIA,GAFAgnB,EAAAxhG,kBAAAw6E,EAEA,iBAAAA,EACA,UAAAjnE,MAAA,eAAAmlH,EAAA,kDAEA,CAEA,SAAAymK,EAAA39L,EAAAhnB,GAEA,IACAjrF,EADA6vS,EAAA,KAaA,GATA,UAAA5kN,EACAA,EAAA,QAGA,UAAAA,IACAA,EAAA,UAIA,IAAAA,IAAA,IAAAA,EAAA,CAEA,IAAAjrF,EAAA,EAAAA,EAAAiyG,EAAA41D,QAAA7nK,IACA6vS,EAAAznS,KAAA6iF,GAGA4kN,EAAAznS,MAAA,EACA,KAGA,KAAAoR,MAAAiS,QAAAw/D,OAAAhrF,QAAAgrF,EAAAhrF,SAAAgyG,EAAA41D,QAAA,EACA,UAAA7jJ,MAAA,eAAAmlH,EAAA,mDAIA0mK,EAAA5kN,CACA,CAEAgnB,EAAA49L,SACA,CAEA,SAAAC,EAAA79L,EAAAhnB,GAIA,OAAAA,GACA,iBACAgnB,EAAA89L,IAAA,EACA,MACA,eACA99L,EAAA89L,IAAA,EACA,MACA,QACA,UAAA/rR,MAAA,eAAAmlH,EAAA,uCAEA,CAEA,SAAA6mK,EAAA/9L,EAAAhnB,GAEA,IAAAx8C,EAAAw8C,GACA,UAAAjnE,MAAA,eAAAmlH,EAAA,uCAIA,OAAAl+C,IAIAgnB,EAAAz9F,OAAAy9F,EAAAs9L,SAAAd,UAAAxjN,IAEAgnB,EAAAz9F,QACA,UAAAwP,MAAA,eAAAmlH,EAAA,0DAEA,CAEA,SAAA8mK,EAAAh+L,EAAAhnB,GAEA,IAAAx8C,EAAAw8C,GACA,UAAAjnE,MAAA,eAAAmlH,EAAA,sCAKA,GAFAl3B,EAAAi+L,MAAAj+L,EAAAs9L,SAAAd,UAAAxjN,IAEAgnB,EAAAi+L,OAAAj+L,EAAA41D,QAAA,EACA,UAAA7jJ,MAAA,eAAAmlH,EAAA,gFAEA,CAEA,SAAAgnK,EAAAl+L,EAAAhnB,GAEA,IAAAx8C,EAAAw8C,GACA,UAAAjnE,MAAA,eAAAmlH,EAAA,wCAGA,OAAAl+C,EAAA,CAMA,GAFAgnB,EAAA5tE,QAAA4tE,EAAAs9L,SAAAd,UAAAxjN,IAEAgnB,EAAA5tE,QACA,UAAArgB,MAAA,eAAAmlH,EAAA,4DAGA,GAAAl3B,EAAA5tE,QAAA,EACA,UAAArgB,MAAA,eAAAmlH,EAAA,kDAGA,GAAAl3B,EAAA5tE,SAAA,GACA,UAAArgB,MAAA,eAAAmlH,EAAA,wDAbA,CAeA,CAEA,SAAAinK,EAAAn+L,EAAAhnB,GAKA,OAAAA,GACA,UACAgnB,EAAAkhC,IAAA,EACA,MACA,UACAlhC,EAAAkhC,IAAA,EACA,MACA,QACA,UAAAnvH,MAAA,eAAAmlH,EAAA,6CAEA,CAEA,SAAAknK,EAAAp+L,EAAAhnB,GAGA,oBAAAA,EACA,UAAAjnE,MAAA,eAAAmlH,EAAA,uDAKA,IAAAmnK,EAAArlN,EAAA5qF,QAAA,UACAqwD,EAAAu6B,EAAA5qF,QAAA,WACAg0G,EAAAppB,EAAA5qF,QAAA,YACAiiK,EAAAr3E,EAAA5qF,QAAA,WACAs9L,EAAA1yG,EAAA5qF,QAAA,YAEA,GAAAg0G,EAAA,CAEA,OAAApC,EAAA41D,QACA,UAAA7jJ,MAAA,eAAAmlH,EAAA,oDAIA6mK,EAAA/9L,IAAAxpF,MAAA,GAAAwpF,EAAAxpF,MAAA,GACA,CAEAwpF,EAAApqG,OAAA,CACAyoS,OAAAhuI,EACA5xG,OACA2jD,QACAiuD,OACAq7B,QAEA,CAEA,SAAA4yG,EAAAt+L,EAAAhnB,GAEA,QAAAA,EAIA,QAAAA,EAAA,CAEAgnB,EAAA2yE,SAAA,GAEA,QAAA5kL,EAAA,EAAAA,EAAAiyG,EAAA41D,QAAA7nK,IACAiyG,EAAA2yE,SAAAx8K,MAAA,EAEA,KAEA,CAIA,GAFA6pG,EAAA2yE,SAAAgoH,EAAA3hN,GAEAgnB,EAAA2yE,SAAA3kL,SAAAgyG,EAAA41D,QACA,UAAA7jJ,MAAA,eAAAmlH,EAAA,6CAGAl3B,EAAA2yE,SAAAx7K,SAAA,SAAAy2C,GACA,qBAAAA,IAAA,iBAAAA,GAAA,mBAAAA,EAAAqb,IACA,UAAAl3C,MAAA,eAAAmlH,EAAA,uDAEA,GACA,CACA,CAEA,SAAAqnK,EAAAv+L,EAAAhnB,GACAgnB,EAAAw+L,WAAAxlN,EACAkkN,EAAAlkN,EACA,CAEA,SAAAylN,EAAAz+L,EAAAhnB,GACAgnB,EAAA/qF,OAAA+jE,EACAkkN,EAAAlkN,EACA,CAEA,SAAA0lN,EAAA1+L,EAAAhnB,GAEA,QAAAt9E,IAAAs9E,GAAA,iBAAAA,IAAA,IAAAA,EACA,UAAAjnE,MAAA,eAAAmlH,EAAA,+CAGAl3B,EAAA2+L,UAAA3lN,CACA,CAEA,SAAA4lN,EAAA5+L,EAAAhnB,GAEA,QAAAt9E,IAAAs9E,GAAA,iBAAAA,EACA,UAAAjnE,MAAA,eAAAmlH,EAAA,sCAGA,oBAAAl3B,EAAA2+L,UAGA,QAAAz4R,KAFA85F,EAAA6+L,WAAA,GAEA7lN,EACAA,EAAA7wD,eAAAjiB,KAEA85F,EAAA6+L,WAAA34R,GAAA85F,EAAA2+L,UAAA3lN,EAAA9yE,SAGA85F,EAAA6+L,WAAA7lN,CAEA,CAEA,SAAA8lN,EAAA9+L,EAAAhnB,GACA,QAAAA,IAAA,IAAAA,EAGA,UAAAjnE,MAAA,eAAAmlH,EAAA,2EAFAl3B,EAAA++L,yBAAA/lN,CAIA,CAGA,SAAAgmN,EAAAvmR,GAMA,IAAAunF,EAAA,CACAz9F,OAAA,EACA07R,MAAA,EACA7rQ,QAAA,EACAwqB,SAAA,EACAp+C,kBAAA,IACAggS,WAAAvB,EACAhoR,OAAAgoR,GAIAgC,EAAA,CACAh3O,KAAA,CAAAjpB,GAAA,EAAAyoB,EAAA21O,GACA5mR,MAAA,CAAAwoB,GAAA,EAAAyoB,EAAA81O,GACAK,QAAA,CAAA5+P,GAAA,EAAAyoB,EAAAk2O,GACAr1N,UAAA,CAAAtpC,GAAA,EAAAyoB,EAAA02O,GACA9tI,KAAA,CAAArxH,GAAA,EAAAyoB,EAAA+1O,GACA5gP,QAAA,CAAA5d,GAAA,EAAAyoB,EAAAg2O,GACAj/R,kBAAA,CAAAwgC,GAAA,EAAAyoB,EAAAi2O,GACAltN,MAAA,CAAAxxC,GAAA,EAAAyoB,EAAA41O,GACAvwR,YAAA,CAAAkyB,GAAA,EAAAyoB,EAAAo2O,GACAt7R,OAAA,CAAAy8B,GAAA,EAAAyoB,EAAAs2O,GACAE,MAAA,CAAAj/P,GAAA,EAAAyoB,EAAAu2O,GACA5rQ,QAAA,CAAA4M,GAAA,EAAAyoB,EAAAy2O,GACA5zP,UAAA,CAAAtL,GAAA,EAAAyoB,EAAA22O,GACAI,WAAA,CAAAx/P,GAAA,EAAAyoB,EAAA82O,GACAtpR,OAAA,CAAA+pB,GAAA,EAAAyoB,EAAAg3O,GACA9rH,SAAA,CAAA3zI,GAAA,EAAAyoB,EAAA62O,GACAK,UAAA,CAAA3/P,GAAA,EAAAyoB,EAAAi3O,GACAG,WAAA,CAAA7/P,GAAA,EAAAyoB,EAAAm3O,GACAG,yBAAA,CAAA//P,GAAA,EAAAyoB,EAAAq3O,IAGAztQ,EAAA,CACAusQ,SAAA,EACAt1N,UAAA,MACAh+B,UAAA,MACAx9B,YAAA,aACA6xR,UAAA,QACAE,WAAA,CACAllQ,OAAA,SACA8pE,KAAA,OACAxvG,OAAA,SACA47J,OAAA,SACAqvI,YAAA,eACAC,YAAA,eACA/9J,WAAA,aACAC,SAAA,WACAlvG,WAAA,aACAyrQ,QAAA,UACAwB,IAAA,MACAC,IAAA,MACA9rI,UAAA,YACA90G,KAAA,aACA4/O,IAAA,YACA11J,OAAA,SACAhgG,QAAA,UACA22P,KAAA,OACAC,eAAA,kBACAC,aAAA,gBACAhyE,OAAA,SACAiyE,iBAAA,oBACAC,eAAA,kBACAC,aAAA,gBACAC,YAAA,eACAC,UAAA,aACA/9R,MAAA,QACAg+R,gBAAA,mBACAC,cAAA,iBACAC,YAAA,eACAC,WAAA,cACAC,SAAA,aAEAnB,0BAAA,GAIAtmR,EAAAxD,SAAAwD,EAAA+lR,aACA/lR,EAAA+lR,WAAA/lR,EAAAxD,QAMAzf,OAAAyP,KAAAg6R,GAAA9nS,SAAA,SAAAvJ,GAGA,QAAA8N,IAAA+c,EAAA7qB,SAAA8N,IAAA21B,EAAAzjC,GAAA,CAEA,GAAAqxS,EAAArxS,GAAAoxC,EACA,UAAAjtB,MAAA,eAAAmlH,EAAA,OAAAtpI,EAAA,kBAGA,QACA,CAEAqxS,EAAArxS,GAAA65D,EAAAu4C,OAAAtkG,IAAA+c,EAAA7qB,GAAAyjC,EAAAzjC,GAAA6qB,EAAA7qB,GACA,IAGAoyG,EAAAs/L,KAAA7mR,EAAA6mR,KAEA,IAAA3qQ,EAAA,oCAMA,OAHAqrE,EAAAzuE,MAAAoD,EAAAqrE,EAAAkhC,KAAAlhC,EAAA89L,KACA99L,EAAAmgM,aAAAxrQ,EAAAqrE,EAAAkhC,IAAA,KAAAlhC,EAAA89L,KAEA99L,CACA,CAGA,SAAAogM,EAAAzmQ,EAAAlhB,EAAA4nR,GAEA,IAOAC,EACAC,EAGAC,EAIAC,EACAC,EAyzBAp2P,EA3sBAq2P,EA9HAptC,EAxwBApkQ,OAAAO,UAAAkxS,eAAA,CACApqR,MAAA,cACAqnC,KAAA,cACAC,IAAA,aACA3uD,OAAAO,UAAAmxS,iBAAA,CACArqR,MAAA,gBACAqnC,KAAA,gBACAC,IAAA,eACA,CACAtnC,MAAA,uBACAqnC,KAAA,sBACAC,IAAA,oBA+vBA04L,EAruBArnP,OAAAk/I,SAAAj9D,UAAAi9D,IAAAj9D,SAAA,wBApBA,WAEA,IAAAolK,GAAA,EAEA,IAEA,IAAA5hJ,EAAAp/F,OAAAu7E,eAAA,cACApjF,IAAA,WACA6oP,GAAA,CACA,IAGArnP,OAAA21B,iBAAA,YAAA8vE,EAEA,OAAAhnF,GAAA,CAEA,OAAA4oO,CACA,CAwuBAsqD,GAGAC,EAAApnQ,EACAqnQ,EAAA,GAGAC,EAAA,GACAC,GAAA,EAEAC,EAAA1oR,EAAA6kR,SACA8D,EAAA,GACAC,EAAA,GAGAC,EAAA,KACAC,EAAA5nQ,EAAAq5C,cACAwuN,EAAAD,EAAA1zR,gBACA4zR,EAAAF,EAAA97Q,KAIA,SAAAi8Q,EAAA/nQ,EAAAvE,GAEA,IAAAiqG,EAAAkiK,EAAA3pR,cAAA,OAQA,OANAwd,GACAn6B,EAAAokI,EAAAjqG,GAGAuE,EAAAjU,YAAA25G,GAEAA,CACA,CAGA,SAAAsiK,EAAAl+L,EAAAm+L,GAEA,IAAA3tS,EAAAytS,EAAAj+L,EAAAhrF,EAAAomR,WAAA5qS,QACA47J,EAAA6xI,EAAAztS,EAAAwkB,EAAAomR,WAAAhvI,QAkBA,OAhBAA,EAAAxqI,aAAA,cAAAu8Q,GAIA/xI,EAAAxqI,aAAA,gBACAwqI,EAAAxqI,aAAA,iBACAwqI,EAAAxqI,aAAA,mBAAA5M,EAAAqlR,IAAA,yBAEA,IAAA8D,EACA3mS,EAAA40J,EAAAp3I,EAAAomR,WAAAK,aAGA0C,IAAAnpR,EAAAm9I,QAAA,GACA36J,EAAA40J,EAAAp3I,EAAAomR,WAAAM,aAGAlrS,CACA,CAGA,SAAA4tS,EAAAp+L,EAAA/oD,GAEA,QAAAA,GAIAgnP,EAAAj+L,EAAAhrF,EAAAomR,WAAAjB,QACA,CA2CA,SAAAkE,EAAAjyI,EAAA+xI,GAEA,QAAAnpR,EAAAk6J,SAAAivH,IAIAF,EAAA7xI,EAAAtpI,WAAA9N,EAAAomR,WAAAl2P,QACA,CA0NA,SAAAo5P,EAAAxvQ,EAAAyvQ,EAAAp0P,GAEA,IAAA1sC,EAAAqgS,EAAA3pR,cAAA,OAEAqqR,EAAA,CACAxpR,EAAAomR,WAAAmB,YACAvnR,EAAAomR,WAAAoB,WACAxnR,EAAAomR,WAAAqB,UAEAgC,EAAA,CACAzpR,EAAAomR,WAAAc,aACAlnR,EAAAomR,WAAAe,YACAnnR,EAAAomR,WAAAgB,WAEAsC,EAAA,CACA1pR,EAAAomR,WAAAiB,gBACArnR,EAAAomR,WAAAkB,eAEAqC,EAAA,CACA3pR,EAAAomR,WAAAY,iBACAhnR,EAAAomR,WAAAa,gBAMA,SAAA2C,EAAArnS,EAAAiG,GACA,IAAA+mB,EAAA/mB,IAAAwX,EAAAomR,WAAA/8R,MAEAwgS,EAAAt6Q,EAAAi6Q,EAAAC,EAEA,OAAAjhS,EAAA,KAHA+mB,EAAAm6Q,EAAAC,GAGA3pR,EAAAqlR,KAAA,IAAAwE,EAAAtnS,EACA,CA0BA,OAnCAC,EAAAiG,EAAAuX,EAAAomR,WAAAS,MACArkS,EAAAiG,EAAA,IAAAuX,EAAAqlR,IAAArlR,EAAAomR,WAAAU,eAAA9mR,EAAAomR,WAAAW,cA8BAhqS,OAAAyP,KAAAstB,GAAAp7B,SAAA,SAAA6wB,IApBA,SAAA2pB,EAAAxrC,GAGAA,EAAA,GAAAA,EAAA,IAAA67R,IAAA77R,EAAA,GAAAA,EAAA,IAAAA,EAAA,GAGA,IAAAygC,EAAA86P,EAAAxgS,GAAA,GACA0lC,EAAAxR,UAAAitQ,EAAAl8R,EAAA,GAAAsS,EAAAomR,WAAArxE,QACA5mL,EAAArV,MAAA9Y,EAAA8Y,OAAAogB,EAAA,IAGAxrC,EAAA,MACAygC,EAAA86P,EAAAxgS,GAAA,IACAk0B,UAAAitQ,EAAAl8R,EAAA,GAAAsS,EAAAomR,WAAA/8R,OACA8kC,EAAArV,MAAA9Y,EAAA8Y,OAAAogB,EAAA,IACA/K,EAAA27P,UAAA30P,EAAAqb,GAAA9iD,EAAA,IAEA,CAIAq8R,CAAAx6Q,EAAAuK,EAAAvK,GACA,IAEA9mB,CACA,CAEA,SAAAuhS,IA3wCA,IAAA76J,EA4wCA84J,KA5wCA94J,EA6wCA84J,GA5wCA9iF,cAAAj4L,YAAAiiH,GA6wCA84J,EAAA,KAEA,CAEA,SAAApB,EAAA1vI,GAGA6yI,IAEA,IAAAlhM,EAAAquD,EAAAruD,KACAmhM,EAAA9yI,EAAA8yI,SAAA,EACAjzR,EAAAmgJ,EAAAngJ,SAAA,EAGA87I,EAvPA,SAAAhqD,EAAAp7F,EAAAw8R,GAGA,aAAAphM,GAAA,UAAAA,EACA,OAAA4/L,EAAA3F,KAGA,aAAAj6L,EAAA,CAEA,IAAAp7F,EACA,UAAA4L,MAAA,eAAAmlH,EAAA,0CAIA,IACAv8E,EADApoB,EAAA,KAAApsB,EAAA,GAEApY,EAAA,EAKA,IAHAoY,EAAA,IAGAw0C,EAAA5sD,IAAAwkC,IAAA,KACApsB,EAAAhQ,KAAAwkD,GAGA4mD,EAAA,WACA,CAEA,oBAAAA,EAGAp7F,EAAA3J,KAAA,SAAAsF,GACA,OAAAq/R,EAAA1E,aAAAkG,EAAAxB,EAAAtF,QAAA/5R,KACA,IAGA,WAAAy/F,EAGAohM,EAEAx8R,EAAA3J,KAAA,SAAAsF,GAGA,OAAAq/R,EAAA1E,aAAA0E,EAAAtF,QAAAsF,EAAA5F,WAAAz5R,IACA,IAKAqE,OAdA,CAgBA,CAmMA6vK,CAAAz0E,EAFAquD,EAAAzpJ,SAAA,EACAypJ,EAAA+yI,UAAA,GAEApwQ,EAlMA,SAAAmwQ,EAAAnhM,EAAAgqD,GAOA,IAxlCAjT,EAwlCAsqJ,EAAA,GACAC,EAAA1B,EAAA3F,KAAA,GACAsH,EAAA3B,EAAA3F,KAAA2F,EAAA3F,KAAAxtS,OAAA,GACA+0S,GAAA,EACAC,GAAA,EACAC,EAAA,EAoGA,OAjsCA3qJ,EAgmCAiT,EAAAv3J,QAAAguH,MAAA,SAAAh6F,EAAAg/B,GAAA,OAAAh/B,EAAAg/B,CAAA,KAAAukG,EA/lCAjT,EAAA7oI,QAAA,SAAAuY,GACA,OAAA1yB,KAAA0yB,KAAA1yB,KAAA0yB,IAAA,EACA,QAgmCA,KAAA66Q,IACAt3I,EAAAp6G,QAAA0xP,GACAE,GAAA,GAIAx3I,IAAAv9J,OAAA,KAAA80S,IACAv3I,EAAAp1J,KAAA2sS,GACAE,GAAA,GAGAz3I,EAAAp0J,SAAA,SAAAN,EAAAC,GAGA,IAAAmxD,EACAl6D,EACA48H,EAGAu4K,EACAC,EAEAnoS,EACA6zK,EACAu0H,EACAC,EARAh4C,EAAAx0P,EACAy0P,EAAA//F,EAAAz0J,EAAA,GAsBA,GAXA,UAAAyqG,IACAt5C,EAAAk5O,EAAAhF,UAAArlS,IAIAmxD,IACAA,EAAAqjM,EAAAD,IAKA,IAAAA,QAAA3vP,IAAA4vP,EAQA,IAHArjM,EAAA59C,KAAAoiB,IAAAw7B,EAAA,MAGAl6D,EAAAs9P,EAAAt9P,GAAAu9P,EAAAv9P,KAAAk6D,GA9DAr9C,QAAA,KA8DA,CAkBA,IAXAikK,GAFAs0H,GADAD,EAAA/B,EAAA5F,WAAAxtS,IACAk1S,GAEAP,EAOAW,EAAAF,GANAC,EAAA/4R,KAAA81C,MAAA0uH,IAUAlkD,EAAA,EAAAA,GAAAy4K,EAAAz4K,GAAA,EAOAi4K,GADAK,EAAAt4K,EAAA04K,GACAz4R,QAAA,YAIA5P,EAAAuwJ,EAAAn9J,QAAAL,IAAA,cAAAwzG,EAAA,KAGAzqG,GAAAisS,IACA/nS,EAAA,GAGAjN,IAAAu9P,GAAA03C,IAEAJ,EAAAM,EAAAt4R,QAAA,KAAA7c,EAAAiN,IAIAioS,EAAAC,CACA,CACA,IAEAN,CACA,CAiFAU,CAAAZ,EAAAnhM,EAAAgqD,GACAt2I,EAAA26I,EAAA36I,QAAA,CACAg0C,GAAA5+C,KAAA81C,OASA,OANAugP,EAAAK,EAAAr7Q,YAAAq8Q,EACAxvQ,EACA9iB,EACAwF,GAIA,CAIA,SAAAsuR,IACA,IAAAz5O,EAAAw2O,EAAAl/R,wBAAA6hJ,EAAA,4BAAAxqI,EAAAqlR,KACA,WAAArlR,EAAAqlR,IAAAh0O,EAAAxnD,OAAAg+R,EAAAr9I,GAAAn5F,EAAArmD,QAAA68R,EAAAr9I,EACA,CAGA,SAAAj9H,EAAApwB,EAAAsL,EAAAwX,EAAA9nB,GAKA,IAAAwxB,EAAA,SAAAxU,GAEA,OAAAmzR,EAAAliN,aAAA,cA/tCA+oD,EAouCAm5J,EApuCA3rQ,EAouCA3c,EAAAomR,WAAAR,MAnuCAz2J,EAAAs6F,UAAAt6F,EAAAs6F,UAAA7qO,SAAA+9B,GAAA,IAAAvtB,OAAA,MAAAutB,EAAA,OAAA3lC,KAAAm4I,EAAAxyG,iBAuuCAxnB,EA4CA,SAAAA,EAAA41R,GAKA,IAIA9pS,EACAC,EALAgxR,EAAA,IAAA/8Q,EAAA5S,KAAA5M,QAAA,SACAkhK,EAAA,IAAA1hJ,EAAA5S,KAAA5M,QAAA,SACAq1S,EAAA,IAAA71R,EAAA5S,KAAA5M,QAAA,WAMA,IAAAwf,EAAA5S,KAAA5M,QAAA,eACAq1S,GAAA,GAGA,GAAA9Y,EAAA,CAMA,GAAA/8Q,EAAAotB,QAAAhtC,OAAA,EACA,SAKA0L,EAAAkU,EAAAqyC,eAAA,GAAAp/C,MACAlH,EAAAiU,EAAAqyC,eAAA,GAAAn/C,KACA,CAEA0iS,KAAA1I,EAAAyG,IAEAjyI,GAAAm0I,KACA/pS,EAAAkU,EAAAnN,QAAA+iS,EAAA9pS,EACAC,EAAAiU,EAAAlN,QAAA8iS,EAAA7pS,GAOA,OAJAiU,EAAA41R,aACA51R,EAAAgoC,OAAA,CAAAl8C,EAAAC,GACAiU,EAAA4pC,OAAA83G,GAAAm0I,EAEA71R,CACA,CAzFA81R,CAAA91R,EAAAhd,EAAA4yS,iBAQA5tS,IAAA29P,EAAA/8O,YAAA9a,IAAAkS,EAAAwuJ,SAAAxuJ,EAAAwuJ,QAAA,OAKAxrK,EAAA86L,QAAA99K,EAAAwuJ,WASAo6E,GACA5oO,EAAAisB,iBAGAjsB,EAAA+1R,UAAA/1R,EAAAgoC,OAAAn9B,EAAAqlR,UAGAplR,EAAA9K,EAAAhd,QArwCA,IAAAg3I,EAAAxyG,CAswCA,EAEAvvB,EAAA,GAQA,OALAjQ,EAAA9H,MAAA,KAAAqJ,SAAA,SAAAoI,GACA2B,EAAA4jB,iBAAAvlB,EAAA6iB,IAAAo0N,GAAA,CAAA1U,SAAA,IACAj8N,EAAA1P,KAAA,CAAAoJ,EAAA6iB,GACA,IAEAvc,CACA,CAmDA,SAAA+9R,EAAAD,GACA,IA14CArqK,EAAAxsH,EAEAg9C,EACAvjB,EACAs9P,EACAL,EAs4CAM,EAAA,KADAH,GA14CArqK,EA04CAgnK,EA14CAxzR,EA04CA2L,EAAAqlR,IAx4CAh0O,EAAAwvE,EAAAl4H,wBACAmlC,EAAA+yF,EAAAtmD,cACA6wN,EAAAt9P,EAAA14B,gBACA21R,EAAA1I,EAAAv0P,GAKA,0BAAA92C,KAAAC,UAAAC,aACA6zS,EAAA9pS,EAAA,GAGAoT,EAAAg9C,EAAA9tD,IAAAwnS,EAAA7pS,EAAAkqS,EAAAE,UAAAj6O,EAAA/tD,KAAAynS,EAAA9pS,EAAAmqS,EAAAG,aA63CAT,IACA,OAAA9qR,EAAAyoH,IAAA,IAAA4iK,GACA,CA4BA,SAAAG,EAAAC,EAAAJ,EAAAK,EAAAC,GAEA,IAAAC,EAAAF,EAAAnwS,QAEAgzD,EAAA,EAAAk9O,KACA77O,EAAA,CAAA67O,MAGAE,IAAApwS,QAIAkwS,GACAE,EAAAtgN,UAIAsgN,EAAAp2S,OAAA,EAEAo2S,EAAAjtS,SAAA,SAAAyqS,EAAA9oM,GAEA,IAAA7vC,EAAAq7O,EAAAD,EAAAzC,EAAAyC,EAAAzC,GAAAkC,EAAA98O,EAAA8xC,GAAAzwC,EAAAywC,IAAA,IAGA,IAAA7vC,EACA66O,EAAA,GAEAA,EAAA76O,EAAAo7O,EAAAzC,GACAyC,EAAAzC,GAAA34O,EAEA,IAKAjC,EAAAqB,EAAA,KAGA,IAAAl1C,GAAA,EAGAixR,EAAAjtS,SAAA,SAAAyqS,EAAA9oM,GACA3lF,EAAAoxR,EAAA3C,EAAAuC,EAAAvC,GAAAkC,EAAA98O,EAAA8xC,GAAAzwC,EAAAywC,KAAA3lF,CACA,IAGAA,GACAixR,EAAAjtS,SAAA,SAAAyqS,GACA4C,EAAA,SAAA5C,GACA4C,EAAA,QAAA5C,EACA,GAEA,CAGA,SAAA4C,EAAAjlS,EAAAqiS,EAAAvD,GAEA7oS,OAAAyP,KAAAo8R,GAAAlqS,SAAA,SAAAstS,GAEA,IAAAjiK,EAAAiiK,EAAA32S,MAAA,QAEAyR,IAAAijI,GACA6+J,EAAAoD,GAAAttS,SAAA,SAAAuhB,GAEAA,EAAA4B,KAEAmmR,EAEAW,EAAA5kS,IAAAic,EAAAxD,OAAAg0C,IAEA24O,EAEAR,EAAAptS,QAEAqqS,IAAA,EAEA2C,EAAAhtS,QAEA,GAEA,GACA,CAIA,SAAA0wS,EAAA1uS,EAAApF,GACA,aAAAoF,EAAAgF,MAAA,SAAAhF,EAAA2jC,OAAA8iD,UAAA,OAAAzmF,EAAA2uS,eACAC,EAAA5uS,EAAApF,EAEA,CAGA,SAAAi0S,EAAA7uS,EAAApF,GAOA,QAAAlB,UAAAo1S,WAAA12S,QAAA,eAAA4H,EAAAomK,SAAA,IAAAxrK,EAAAm0S,gBACA,OAAAH,EAAA5uS,EAAApF,GAIA,IAAA0oN,GAAA7gM,EAAAyoH,KAAA,MAAAlrI,EAAA2tS,UAAA/yS,EAAAo0S,gBAKAf,EAAA3qF,EAAA,EAFA,IAAAA,EAAA1oN,EAAA2yS,SAEA3yS,EAAAuzS,UAAAvzS,EAAAwzS,cACA,CAGA,SAAAQ,EAAA5uS,EAAApF,GAGAswS,IACAhjS,EAAAgjS,EAAAzoR,EAAAomR,WAAAl2J,QACAu4J,GAAA,GAIAlrS,EAAAwhD,SACAiqP,EAAAlwQ,MAAAimB,OAAA,GACAiqP,EAAAlxQ,oBAAA,cAAAsJ,IAIAynQ,EAAAnqS,SAAA,SAAAlJ,GACAuzS,EAAAjxQ,oBAAAtiC,EAAA,GAAAA,EAAA,GACA,IAGAiQ,EAAA6iS,EAAAtoR,EAAAomR,WAAApgP,MAEAwmP,IAEAr0S,EAAAwzS,cAAAjtS,SAAA,SAAAyqS,GACA4C,EAAA,SAAA5C,GACA4C,EAAA,MAAA5C,GACA4C,EAAA,MAAA5C,EACA,GACA,CAGA,SAAAsD,EAAAlvS,EAAApF,GAEA,OAAAA,EAAAwzS,cAAAp2S,OAAA,CAEA,IAAA6hK,EAAA0wI,EAAA3vS,EAAAwzS,cAAA,IAGA,GAAAv0I,EAAAhxE,aAAA,YACA,SAKA5jF,EADAimS,EAAArxI,EAAA73H,SAAA,GACAvf,EAAAomR,WAAAl2J,OACA,CAGA3yI,EAAA4qD,kBAGA,IAAAukP,EAAAn/Q,EAAAutO,EAAA11M,KAAA2jP,EAAAqD,EAAA,CACAG,eAAAhvS,EAAA2tS,UACAJ,aACAC,WAAAxtS,EAAAwtS,WACAY,cAAAxzS,EAAAwzS,cACAW,gBAAA/uS,EAAAomK,QACA+nI,UAAAnD,EAAAhtS,UAGAoxS,EAAAp/Q,EAAAutO,EAAAz1M,IAAA0jP,EAAAoD,EAAA,CACAR,cAAAxzS,EAAAwzS,gBAGAiB,EAAAr/Q,EAAA,WAAAw7Q,EAAAkD,EAAA,CACAN,cAAAxzS,EAAAwzS,gBAGA9C,EAAA6D,EAAAnoQ,OAAAooQ,EAAAC,GAIArvS,EAAAwhD,SAGAiqP,EAAAlwQ,MAAAimB,OAAAi2B,iBAAAz3E,EAAA2jC,QAAA6d,OAGA+oP,EAAAvyS,OAAA,GACAiN,EAAA8lS,EAAAtoR,EAAAomR,WAAApgP,MASAgjP,EAAA38Q,iBAAA,cAAA+U,GAAA,IAGAjpC,EAAAwzS,cAAAjtS,SAAA,SAAAyqS,GACA4C,EAAA,QAAA5C,EACA,GACA,CAGA,SAAA0D,EAAAtvS,GAGAA,EAAA4qD,kBAEA,IAAAkjP,EAAAF,EAAA5tS,EAAA2tS,WACA/B,EAlPA,SAAAkC,GAEA,IAAA1+N,EAAA,IACAw8N,GAAA,EAiBA,OAfArB,EAAAppS,SAAA,SAAA04J,EAAA/4J,GAGA,IAAA+4J,EAAAhxE,aAAA,aAIA,IAAA99B,EAAA12C,KAAAD,IAAA42R,EAAAlqS,GAAAgtS,GAEA/iP,EAAAqkB,IACAw8N,EAAA9qS,EACAsuE,EAAArkB,EANA,CAQA,IAEA6gP,CACA,CA6NA2D,CAAAzB,GAGA,QAAAlC,EACA,SAKAnpR,EAAA7iB,OAAAy6J,MACAqqI,EAAAqG,EAAAtoR,EAAAomR,WAAAR,IAAA5lR,EAAAja,mBAGA+lS,EAAA3C,EAAAkC,GAAA,MAEAmB,IAEAT,EAAA,QAAA5C,GAAA,GACA4C,EAAA,SAAA5C,GAAA,GACA4C,EAAA,SAAA5C,GAAA,GACA4C,EAAA,MAAA5C,GAAA,GAEAnpR,EAAA7iB,OAAAy6J,MACA60I,EAAAlvS,EAAA,CAAAouS,cAAA,CAAAxC,IAEA,CAGA,SAAA4D,EAAAxvS,GAEA,IAAA8tS,EAAAF,EAAA5tS,EAAA2tS,WAEA16O,EAAAk4O,EAAAtF,QAAAiI,GACAhiS,EAAAq/R,EAAA1E,aAAAxzO,GAEAzzD,OAAAyP,KAAAo8R,GAAAlqS,SAAA,SAAAstS,GACA,UAAAA,EAAA32S,MAAA,SACAuzS,EAAAoD,GAAAttS,SAAA,SAAAuhB,GACAA,EAAA4B,KAAAmmR,EAAA3+R,EACA,GAEA,GACA,CAgEA,SAAAwiS,EAAAviI,EAAA6/H,EAAA34O,EAAAw8O,EAAAC,EAAA7jS,GA3sDA,IAAAmmB,EA2vDA,OA5CAu4Q,EAAAvyS,OAAA,IAEAy3S,GAAA7D,EAAA,IACA34O,EAAA5+C,KAAAoiB,IAAAw8B,EAAA84G,EAAA6/H,EAAA,GAAAnpR,EAAAlW,SAGAmjS,GAAA9D,EAAArB,EAAAvyS,OAAA,IACAi7D,EAAA5+C,KAAAsd,IAAAshC,EAAA84G,EAAA6/H,EAAA,GAAAnpR,EAAAlW,UAOAg+R,EAAAvyS,OAAA,GAAAyqB,EAAAwlR,QAEAwH,GAAA7D,EAAA,IACA34O,EAAA5+C,KAAAsd,IAAAshC,EAAA84G,EAAA6/H,EAAA,GAAAnpR,EAAAwlR,QAGAyH,GAAA9D,EAAArB,EAAAvyS,OAAA,IACAi7D,EAAA5+C,KAAAoiB,IAAAw8B,EAAA84G,EAAA6/H,EAAA,GAAAnpR,EAAAwlR,SAMAxlR,EAAA2Z,UAEA,IAAAwvQ,IACA34O,EAAA5+C,KAAAoiB,IAAAw8B,EAAAxwC,EAAA2Z,UAGAwvQ,IAAArB,EAAAvyS,OAAA,IACAi7D,EAAA5+C,KAAAsd,IAAAshC,EAAA,IAAAxwC,EAAA2Z,WAIA62B,EAAAk4O,EAAAtF,QAAA5yO,GArvDAjhC,EAwvDAihC,OAvvDA5+C,KAAAoiB,IAAApiB,KAAAsd,IAAAK,EAAA,WA0vDA+5I,EAAA6/H,KAAA//R,IAIAonD,CACA,CAEA,SAAA08O,EAAAC,GACA,OAAAA,EAAA,GACA,CA6BA,SAAAX,IAEAhE,EAAA9pS,SAAA,SAAAyqS,GAIA,IAAA1gK,EAAA8/J,EAAAY,GAAA,QACA/nS,EAAA,GAAA0mS,EAAAvyS,OAAAkzI,EAAA0gK,GACArB,EAAAqB,GAAAr6P,WAAA,GAAAhW,MAAA13B,QACA,GACA,CAGA,SAAA0qS,EAAA3C,EAAA34O,EAAAw8O,EAAAC,GAIA,YAFAz8O,EAAAq7O,EAAAtD,EAAAY,EAAA34O,EAAAw8O,EAAAC,GAAA,MAzCA,SAAA9D,EAAA34O,GAGA+3O,EAAAY,GAAA34O,EAGAm4O,EAAAQ,GAAAT,EAAA1E,aAAAxzO,GAGA,IAAA48O,EAAA,WACAtF,EAAAqB,GAAArwQ,MAAA9Y,EAAA8Y,OAAAo0Q,EAAA18O,GACA68O,EAAAlE,GACAkE,EAAAlE,EAAA,EACA,EAMAzyS,OAAA4jO,uBAAAt6M,EAAAsmR,yBACA5vS,OAAA4jO,sBAAA8yE,GAEAA,GAEA,CAuBAE,CAAAnE,EAAA34O,IAEA,EACA,CAGA,SAAA68O,EAAAhvS,GAGA,GAAA0pS,EAAA1pS,GAAA,CAIA,IAAAuyD,EAAA,EACAE,EAAA,IAEA,IAAAzyD,IACAuyD,EAAA23O,EAAAlqS,EAAA,IAGAA,IAAA0pS,EAAAxyS,OAAA,IACAu7D,EAAAy3O,EAAAlqS,IAGA0pS,EAAA1pS,GAAAy6B,MAAA9Y,EAAA8Y,OAAAo0Q,EAAAt8O,GACAm3O,EAAA1pS,GAAAy6B,MAAA9Y,EAAA0nR,cAAAwF,EAAA,IAAAp8O,EAdA,CAeA,CAGA,SAAArtB,GAAA+sB,EAAA24O,GAIA,OAAA34O,IAAA,IAAAA,IAKA,iBAAAA,IACAA,EAAAhhB,OAAAghB,KAOA,KAJAA,EAAAxwC,EAAAxD,OAAAi0C,KAAAD,KAIAs2C,MAAAt2C,IACAs7O,EAAA3C,EAAAT,EAAA5F,WAAAtyO,IAAA,MAEA,CAGA,SAAA+8O,GAAA3/P,EAAA4/P,GAEA,IAAA9/R,EAAAw0R,EAAAt0P,GACA6/P,OAAAxqS,IAAAslS,EAAA,GAGAiF,OAAAvqS,IAAAuqS,OAEA9/R,EAAAhP,QAAA+kC,IAIAzjB,EAAAmkC,UAAAspP,GACAxL,EAAAqG,EAAAtoR,EAAAomR,WAAAR,IAAA5lR,EAAAja,mBAIAyiS,EAAA9pS,SAAA,SAAAyqS,GACA2C,EAAA3C,EAAAZ,EAAAY,IAAA,KACA,IAEAqD,IAEAhE,EAAA9pS,SAAA,SAAAyqS,GAEA4C,EAAA,SAAA5C,GAGA,OAAAz7R,EAAAy7R,IAAAqE,GACAzB,EAAA,MAAA5C,EAEA,GACA,CAQA,SAAAuE,KAEA,IAAAhgS,EAAAi7R,EAAA5kS,IAAAic,EAAAxD,OAAAg0C,IAGA,WAAA9iD,EAAAnY,OACAmY,EAAA,GAGAA,CACA,CA+EA,SAAAigS,GAAAC,EAAA3tR,GACA2oR,EAAAgF,GAAAhF,EAAAgF,IAAA,GACAhF,EAAAgF,GAAAlwS,KAAAuiB,GAGA,WAAA2tR,EAAAv4S,MAAA,SACAyyS,EAAAppS,SAAA,SAAA6wB,EAAAlxB,GACA0tS,EAAA,SAAA1tS,EACA,GAEA,CA+DA,GAAAiqS,EAAAtG,WACA,UAAA1oR,MAAA,eAAAmlH,EAAA,sCAyCA,OA7rCA,SAAAv9F,GAGA1+B,EAAA0+B,EAAAlhB,EAAAomR,WAAAllQ,QAEA,IAAAlhB,EAAAyoH,IACAjmI,EAAA0+B,EAAAlhB,EAAAomR,WAAAO,KAEAnkS,EAAA0+B,EAAAlhB,EAAAomR,WAAAQ,KAGA,IAAA5mR,EAAAqlR,IACA7iS,EAAA0+B,EAAAlhB,EAAAomR,WAAAz9J,YAEAnmI,EAAA0+B,EAAAlhB,EAAAomR,WAAAx9J,UAGAi/J,EAAAoB,EAAA/nQ,EAAAlhB,EAAAomR,WAAAp7L,KACA,CAuoCA6iM,CAAAvF,GA5qCA,SAAAwF,EAAA9iM,GAEA88L,EAAA,IACAC,EAAA,IAEArqS,KAAA0rS,EAAAp+L,EAAA8iM,EAAA,KAKA,QAAAx4S,EAAA,EAAAA,EAAA0qB,EAAAm9I,QAAA7nK,IAEAwyS,EAAApqS,KAAAwrS,EAAAl+L,EAAA11G,IACAkzS,EAAAlzS,KACAyyS,EAAArqS,KAAA0rS,EAAAp+L,EAAA8iM,EAAAx4S,EAAA,IAEA,CA6pCAy4S,CAAA/tR,EAAAmlR,QAAA0C,GAEAG,EAAA,CACAjgN,QA/JA,WAEA,QAAAt6E,KAAAuS,EAAAomR,WACApmR,EAAAomR,WAAA12Q,eAAAjiB,IACAhI,EAAA6iS,EAAAtoR,EAAAomR,WAAA34R,IAGA,KAAA66R,EAAAx6Q,YACAw6Q,EAAAp7Q,YAAAo7Q,EAAAx6Q,mBAGAw6Q,EAAAtG,UACA,EAoJA5rH,MAjJA,WAIA,OAAAmyH,EAAAxkS,KAAA,SAAApN,EAAA0H,GAEA,IAAA2vS,EAAAtF,EAAAxE,eAAAvtS,GACA0S,EAAAs/R,EAAAtqS,GACAq0E,EAAAs7N,EAAA5J,SAAA50O,KACAy+O,EAAA,MAIA,IAAAv7N,GACArpE,EAAAqpE,EAAAs7N,EAAA3J,UAAAr4J,aACAt5D,EAAAs7N,EAAA3J,UAAAr4J,WAAA3iI,GAOA4kS,EADA5kS,EAAA2kS,EAAA5J,SAAAp4J,WACAgiK,EAAA5J,SAAA50O,MAGA,IAAAw+O,EAAA7J,WAAA30O,MAMAnmD,EAAA2kS,EAAA7J,WAAAR,YAKA,MAAAhtS,EACA+7E,EAAA,KAGA,IAAA/7E,IACAs3S,EAAA,MAIA,IAAA1J,EAAAmE,EAAApE,oBAWA,OARA,OAAA5xN,IAAA,IAAAA,IACAA,EAAAsvB,OAAAtvB,EAAAvgE,QAAAoyR,KAGA,OAAA0J,IAAA,IAAAA,IACAA,EAAAjsM,OAAAisM,EAAA97R,QAAAoyR,KAGA,CAAA0J,EAAAv7N,EACA,GACA,EAwFAn6E,GAAAo1S,GACAtmS,IAzEA,SAAAumS,GAEA,IAAArwS,EAAAqwS,KAAAv4S,MAAA,QACA6rI,EAAA3jI,GAAAqwS,EAAAl4S,UAAA6H,EAAAhI,QAEAwH,OAAAyP,KAAAo8R,GAAAlqS,SAAA,SAAAU,GAEA,IAAA8uS,EAAA9uS,EAAA/J,MAAA,QACA84S,EAAA/uS,EAAA1J,UAAAw4S,EAAA34S,QAEAgI,OAAA2wS,GAAAhtK,OAAAitK,UACAvF,EAAAxpS,EAEA,GACA,EA4DAlK,IAAAw4S,GACAn5S,IAAAg5S,GACA16N,MAvLA,SAAA26N,GACAD,GAAAvtR,EAAAjC,MAAAyvR,EACA,EAuLAY,cAAA,SAAA7+Q,EAAAg/B,EAAA/4D,GAAAg2S,EAAAj8Q,EAAAg/B,EAAAg6O,EAAA/yS,EAAA,EACAwqB,QAAA4nR,EACAyG,cA/DA,SAAAC,EAAAd,GAKA,IAAAtrP,EAAAwrP,KAEAa,EAAA,sEAGAA,EAAA7vS,SAAA,SAAAvJ,QACA8N,IAAAqrS,EAAAn5S,KACAyyS,EAAAzyS,GAAAm5S,EAAAn5S,GAEA,IAEA,IAAAu/I,EAAA6xJ,EAAAqB,GAGA2G,EAAA7vS,SAAA,SAAAvJ,QACA8N,IAAAqrS,EAAAn5S,KACA6qB,EAAA7qB,GAAAu/I,EAAAv/I,GAEA,IAEAuzS,EAAAh0J,EAAAmwJ,SAGA7kR,EAAAlW,OAAA4qI,EAAA5qI,OACAkW,EAAAwlR,MAAA9wJ,EAAA8wJ,MACAxlR,EAAA2Z,QAAA+6G,EAAA/6G,QAGA3Z,EAAA6mR,MACAA,EAAA7mR,EAAA6mR,MAIA0B,EAAA,GACAgF,GAAAe,EAAAvwR,OAAAmkC,EAAAsrP,EACA,EAwBAtsQ,OAAAonQ,EACA0B,aACAnD,SA7bAh1P,EAicA7xB,EAAA7iB,QA9bAwsG,OAEAm+L,EAAAppS,SAAA,SAAA04J,EAAA/4J,GAIAkvB,EAAAutO,EAAA/8O,MAAAq5I,EAAA73H,SAAA,GAAAktQ,EAAA,CACAd,cAAA,CAAAttS,IAEA,IAIAwzC,EAAA+zP,KACAr4Q,EAAAutO,EAAA/8O,MAAA8pR,EAAAgF,EAAA,IAIAh7P,EAAAohJ,OACA1lK,EAAAutO,EAAA11M,KAAAyiP,EAAAkF,EAAA,CAAA95G,OAAA,IAIAphJ,EAAAmU,MAEA+hP,EAAArpS,SAAA,SAAAymS,EAAA9mS,GAEA,QAAA8mS,GAAA,IAAA9mS,OAAA0pS,EAAAxyS,OAAA,GAIA,IAAAi5S,EAAA1G,EAAAzpS,EAAA,GACAowS,EAAA3G,EAAAzpS,GACAqwS,EAAA,CAAAvJ,GAEA3iS,EAAA2iS,EAAAnlR,EAAAomR,WAAAtrI,WAMAjpH,EAAA83D,QACA+kM,EAAAhxS,KAAA8wS,EAAAjvQ,SAAA,IACAmvQ,EAAAhxS,KAAA+wS,EAAAlvQ,SAAA,KAGAmvQ,EAAAhwS,SAAA,SAAAiwS,GACAphR,EAAAutO,EAAA/8O,MAAA4wR,EAAAlC,EAAA,CACAtvI,QAAA,CAAAqxI,EAAAC,GACA9C,cAAA,CAAAttS,EAAA,EAAAA,IAEA,GAtBA,CAuBA,IA6YAkvS,GAAAvtR,EAAAjC,OAEAiC,EAAA6mR,MACAA,EAAA7mR,EAAA6mR,MAGA7mR,EAAAk6J,WArpCAguH,EAAAJ,EAAA/jS,IAAAslS,GAEAsE,GAAA,mBAAAjgS,EAAAy7R,EAAAyF,GAEA,GAAA1G,EAAAiB,GAAA,CAIA,IAAApwP,EAAArrC,EAAAy7R,IAEA,IAAAnpR,EAAAk6J,SAAAivH,KACApwP,EAAA/4B,EAAAk6J,SAAAivH,GAAA34O,GAAAo+O,EAAAzF,KAGAjB,EAAAiB,GAAAn6P,UAAA+J,CARA,CASA,KAMA40P,GAAA,mBAAAjgS,EAAAy7R,EAAAyF,EAAAhJ,EAAAiJ,GAGArG,EAAA9pS,SAAA,SAAAyqS,GAEA,IAAA/xI,EAAA0wI,EAAAqB,GAEAj6Q,EAAA28Q,EAAAtD,EAAAY,EAAA,YACAn1Q,EAAA63Q,EAAAtD,EAAAY,EAAA,cAEAttM,EAAAgzM,EAAA1F,GACAzxQ,EAAA1X,EAAA+lR,WAAAv1O,GAAAo+O,EAAAzF,IAEA/xI,EAAA73H,SAAA,GAAA3S,aAAA,gBAAAsC,EAAA/c,QAAA,IACAilJ,EAAA73H,SAAA,GAAA3S,aAAA,gBAAAoH,EAAA7hB,QAAA,IACAilJ,EAAA73H,SAAA,GAAA3S,aAAA,gBAAAivE,EAAA1pF,QAAA,IACAilJ,EAAA73H,SAAA,GAAA3S,aAAA,iBAAA8K,EACA,GACA,IAonCAswQ,CAEA,CAoBA,OACAvuR,QAAAglH,EACAlxH,OAlBA,SAAA2zB,EAAA0mQ,GAEA,IAAA1mQ,MAAA8iD,SACA,UAAA1qE,MAAA,eAAAmlH,EAAA,6CAAAv9F,GAIA,IACAynM,EAAAg/D,EAAAzmQ,EADAqlQ,EAAAqB,GACAA,GAIA,OAFA1mQ,EAAA8gQ,WAAAr5D,EAEAA,CACA,EAQA,IACAr0O,OChtEA,uBACA,SACA,aACA,UACA,aACA,SAAA2B,EAAA+rS,EAAA7/R,EAAAm5B,GACA,aAEA,IAAA1C,EAAA,CACAzgC,KAAA,CACA26D,aAAA,EACAquM,SAAA,EACAC,SAAA,GACA0tC,SAAA,EACAz6R,YAAA,aACA06R,WAAA,CACAllS,MAAA,GACAmB,OAAA,IAEAgkS,QAAA,IAIA,SAAAC,EAAAjvR,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,8BAAA2iC,EAAA5Y,GAEAnjB,KAAAqyS,QAAAj5S,EAAA,UACAyN,SAAA7G,KAAAuF,UAEAvF,KAAAsyS,eACAtyS,KAAA8+B,cACA,CA2FA,OAzFAx5B,EAAA3F,OAAAyyS,EAAA9sS,GAEA8sS,EAAAx4Q,SAAA,SAEAw4Q,EAAAryS,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,eACA,EAEAylS,EAAAryS,UAAAuyS,aAAA,WAEAnN,EAAAz0R,OAAA1Q,KAAAqyS,QAAA,IACAnxR,MAAAikF,OAAAnlG,KAAA1E,KAAA26D,cAAAguC,UACAtxC,KAAAwyC,OAAAnlG,KAAA1E,KAAA22S,UAAAhuM,UACAzsF,YAAAxX,KAAA1E,KAAAkc,YACA0jE,MAAA,CACA7oD,IAAA8yE,OAAAnlG,KAAA1E,KAAAgpQ,UAAArgK,UACA9sE,IAAAguE,OAAAnlG,KAAA1E,KAAAipQ,UAAAtgK,aAIA,IAAAljG,EAAAf,KACAkpO,EAAAlpO,KAAAgK,gBAAA,WACAk/N,EAAAvlO,SACA3D,KAAAqyS,QAAA,GAAAlN,WAAAzpS,GAAA,qBACA,IAAA8Q,EAAAzL,EAAAsxS,QAAA,GAAAlN,WAAA9sS,MACA0I,EAAA6B,aAAAsmO,EAAAtlO,gBAAA4I,EACA,IAGA,IAAA+lS,EAAAvyS,KAAAgK,gBAAA,SACAuoS,EAAA5uS,SACA3D,KAAAqyS,QAAA,GAAAlN,WAAAzpS,GAAA,oBACA,IAAA8Q,EAAAzL,EAAAsxS,QAAA,GAAAlN,WAAA9sS,MACA0I,EAAA6B,aAAA2vS,EAAA3uS,gBAAA4I,EACA,IAGAxM,KAAA1E,KAAA2mD,UACAjiD,KAAAqyS,QAAA,GAAAtiR,aAAA,cACA,EAEAqiR,EAAAryS,UAAA++B,aAAA,WACAL,EAAAK,aAAA9+B,MAEA,IAAAwyS,EAAAxyS,KAAAqyS,QAAA/wS,KAAA,gBAEAm9B,EAAAK,aAAA9+B,KAAA,KAAAwyS,EAAAxyS,KAAA1E,KAAA+jC,OAAA,gBACAZ,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAqyS,QAAA/wS,KAAA,cAAAtB,KAAA1E,KAAA+jC,OAAA,aAEA,eAAAr/B,KAAA1E,KAAAkc,aACAxX,KAAAqyS,QAAAzsS,IAAA,CACAoH,MAAA,OACAmB,OAAAnO,KAAA1E,KAAA62S,UAGAK,EAAA5sS,IAAA,CACAoH,MAAAhN,KAAA1E,KAAA42S,WAAAllS,MACAmB,OAAAnO,KAAA1E,KAAA42S,WAAA/jS,OACAzH,KAAA1G,KAAA1E,KAAA62S,QAAAnyS,KAAA1E,KAAA42S,WAAA/jS,QAAA,EACA1H,KAAAzG,KAAA1E,KAAA42S,WAAAllS,MAAA,SAGAhN,KAAAqyS,QAAAzsS,IAAA,CACAoH,MAAAhN,KAAA1E,KAAA62S,QACAhkS,OAAA,SAGAqkS,EAAA5sS,IAAA,CACAoH,MAAAhN,KAAA1E,KAAA42S,WAAAllS,MACAmB,OAAAnO,KAAA1E,KAAA42S,WAAA/jS,OACA1H,MAAAzG,KAAA1E,KAAA62S,QAAAnyS,KAAA1E,KAAA42S,WAAAllS,OAAA,EACAtG,IAAA1G,KAAA1E,KAAA42S,WAAA/jS,OAAA,OAGA,EAEAikS,EAAAryS,UAAAwM,SAAA,WACA,OAAA44F,OAAAnlG,KAAAqyS,QAAA,GAAAlN,WAAA9sS,MACA,EAEA+5S,EAAAryS,UAAAo3C,WAAA,WACA,OAAAn3C,KAAAqyS,QAAA,GAAAlN,WAAAztS,IAAAytG,OAAAnlG,KAAA1E,KAAA26D,cAAAguC,UACA,EAEAmuM,EAAAryS,UAAA6mC,SAAA,SAAA8M,GACA,OAAA1zC,KAAAqyS,QAAA,GAAAlN,WAAAztS,IAAAytG,OAAAzxD,EAAAlnC,OAAAy3F,UACA,EAEAmuM,CACA,IACA36S,OC5HA,qBACA,SACA,aACA,OACA,UACA,aACA,SAAA2B,EAAAD,EAAAqJ,EAAA8C,EAAAm5B,GACA,aAEA,IAAA1C,EAAA,CACAzgC,KAAA,CACAkc,YAAA,WACAi7R,mBAAA,GACAhkS,iBAAA,EACAH,kBAAA,EACAC,2BAAA,IAIA4/F,EAAA7oG,EAEAotS,EAAA,SAAAvvR,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAGAnjB,KAAAuF,SACAI,SAAA,0CAHA3F,KAKA2yS,sBAEAl0Q,EAAAK,aAAA9+B,KACA,EAgPA,OA9OAsF,EAAA3F,OAAA+yS,GAEAA,EAAA94Q,SAAA,QAEA84Q,EAAA3yS,UAAA4yS,oBAAA,WACA,aAAA3yS,KAAA1E,KAAAkc,aACAxX,KAAA1E,KAAA+S,YAAA,EACArO,KAAA1E,KAAAkT,WAAA,IAEAxO,KAAA1E,KAAA+S,YAAA,EACArO,KAAA1E,KAAAkT,WAAA,GAGA,aAAAxO,KAAA1E,KAAAkc,YACAxX,KAAAuF,SACAqD,YAAA,cACAjD,SAAA,YAEA3F,KAAAuF,SACAqD,YAAA,YACAjD,SAAA,aAEA,EAEA+sS,EAAA3yS,UAAAyN,sBAAA,SAAA5D,GACA5J,KAAA4iO,yBAAAh5N,GAEAA,EAAAq3O,0BACAr3O,EAAAq3O,2BAEAr3O,EAAAy5C,SAAAz9C,IAAA5F,KAAAyN,eAAA7D,EAAAtO,OAEA,IAAAunO,EAAA,GAEA7iO,KAAA4yS,6BAAAhpS,EAAAtO,KAAAmT,iBAAA7E,EAAAtO,KAAAkT,UACAq0N,EAAA71N,MAAA,OAEA61N,EAAA71N,MAAApD,EAAAtO,KAAAgJ,KAAAF,EAAA,KAGAwF,EAAAtO,KAAAgT,kBAAA1E,EAAAtO,KAAA+S,WAGAw0N,EAAA10N,OAAA,OAFA00N,EAAA10N,OAAAvE,EAAAtO,KAAAgJ,KAAAD,EAAA,KAKAuF,EAAArE,SAAAK,IAAAi9N,EACA,EAEA6vE,EAAA3yS,UAAA4J,6BAAA,SAAAC,GACA,OAAAA,EAAAy5C,QACA,EAEAqvP,EAAA3yS,UAAA6iO,yBAAA,SAAAh5N,GACAA,EAAArE,SAAAK,IAAA,CACAa,KAAA,OACAE,MAAA,OACAD,IAAA,OACAE,OAAA,OACAzC,SAAA,YAEA,EAEAuuS,EAAA3yS,UAAA6yS,0BAAA,WACA,mBAAA5yS,KAAA1E,KAAAkc,aACA,OAAAxX,KAAA1E,KAAAqL,YAAAP,IAAApG,KAAA1E,KAAAqL,OACA,OAAA3G,KAAA1E,KAAAmL,WAAAL,IAAApG,KAAA1E,KAAAmL,IACA,EAEAisS,EAAA3yS,UAAA0N,eAAA,SAAAnS,GACA,IAAAsK,EAAA,CACArB,OAAAjJ,EAAAiJ,QAyBA,MAtBA,aAAAvE,KAAA1E,KAAAkc,YACAxX,KAAA6yS,4BAAAjtS,EAAAtK,GAEA0E,KAAA8yS,0BAAAltS,EAAAtK,GAGAsK,EAAA67B,YAAA,EACA77B,EAAA87B,aAAA,EACA97B,EAAAyH,WAAA,EACAzH,EAAA0H,cAAA,EAEAhS,EAAA2R,SACA3R,EAAA2R,OAAAxG,OACAb,EAAA67B,YAAAnmC,EAAA2R,OAAAxG,KAAA,MACAnL,EAAA2R,OAAAtG,QACAf,EAAA87B,aAAApmC,EAAA2R,OAAAtG,MAAA,MACArL,EAAA2R,OAAAvG,MACAd,EAAAyH,WAAA/R,EAAA2R,OAAAvG,IAAA,MACApL,EAAA2R,OAAArG,SACAhB,EAAA0H,cAAAhS,EAAA2R,OAAArG,OAAA,OAGAhB,CACA,EAEA8sS,EAAA3yS,UAAA+yS,0BAAA,SAAAltS,EAAAtK,GACAsK,EAAA82B,cAAA,MAEAphC,EAAAy3S,0BACA,WAAAz3S,EAAAy3S,wBACAntS,EAAA82B,cAAA,SACA,WAAAphC,EAAAy3S,0BACAntS,EAAA82B,cAAA,UAGA,EAEAg2Q,EAAA3yS,UAAA8yS,4BAAA,SAAAjtS,EAAAtK,GACAsK,EAAAsH,WAAA,UACAtH,EAAAuH,YAAA,UAEAnN,KAAA4yS,4BACAhtS,EAAAoH,MAAA,OACA1R,EAAA03S,4BACA,UAAA13S,EAAA03S,0BACAptS,EAAAsH,WAAA,OACA,WAAA5R,EAAA03S,4BACAptS,EAAAsH,WAAA,OACAtH,EAAAuH,YAAA,QAGA,EAEAulS,EAAA3yS,UAAAgH,UAAA,WAIA,GAHA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,OAGA,aAAAA,KAAA6F,OAAAvK,KAAAoK,MAAA,eAAA1F,KAAA6F,OAAAvK,KAAAoK,MAAA1F,KAAA6F,OAAAvK,KAAAolQ,eAAA,IAAA1gQ,KAAA6F,OAAAV,WAAAzM,OAAA,CACA,IAAAu6S,EAAA,CACA9uS,SAAA,WACA4yC,MAAA,IAEA/2C,KAAA1E,KAAA4I,YAAA,WACAlE,KAAA1E,KAAA6I,SAAA,CAAAC,EAAA,EAAAC,EAAA,GAEA,IAAA6uS,EAAA,CACA,EAEAlzS,KAAA1E,KAAAmT,kBACAwkS,EAAAjmS,MAAA,OACAkmS,EAAAlmS,MAAA,QAGAhN,KAAA1E,KAAAgT,mBACA2kS,EAAA9kS,OAAA,OACA+kS,EAAA/kS,OAAA,QAGAnO,KAAAuF,SAAAK,IAAAqtS,GACAjzS,KAAA6F,OAAAN,SAAAK,IAAAstS,EACA,MACAlzS,KAAA1E,KAAA4I,YAAA,WACAlE,KAAA2M,eAEA,EAEA+lS,EAAA3yS,UAAA8H,OAAA,SAAAtC,GACA,OAAAvF,KAAA8G,qBAAAvB,EACA,EAEAmtS,EAAA3yS,UAAA0H,WAAA,WACAzH,KAAA1E,KAAA2J,UAAAjF,KAAA1E,KAAAmT,iBACAzO,KAAAmzS,gBAEA,EAEAT,EAAA3yS,UAAAozS,eAAA,WACAnzS,KAAAuF,SAAAK,IAAA,CACAoH,MAAA,eAEA,EAEA0lS,EAAA3yS,UAAAmI,QAAA,SAAAtG,GACA,IAAAyhD,EAAAjqD,EAAA,UACAuM,SAAA,eAQA,OANA/D,EAAAyhD,WACArjD,KAAAgO,aACAq1C,EAAAz9C,IAAA,yBACAhE,EAAA2D,SAAAK,IAAA,0BAGAuoG,EAAApuG,UAAAmI,QAAAjH,MAAAjB,KAAAkB,UACA,EAEAwxS,EAAA3yS,UAAAyH,gCAAA,SAAAJ,GACA,IAAArG,EAAAf,KACAiI,EAAA,GACAmrS,EAAA,GAqBA,OApBAj6S,EAAAiJ,KAAApC,KAAA1E,KAAAm3S,oBAAA,SAAAr8E,GACA,IAAAx0N,EAAAzI,EAAAmI,KAAA8F,GAAA,SAAAxF,GAAA,OAAAA,EAAAtG,KAAAV,KAAAw7N,CAAA,IACAx0N,GACAwxS,EAAAvyS,KAAAe,EAEA,IAGAzI,EAAAiJ,KAAAgF,GAAA,SAAAxF,GACAzI,EAAAmI,KAAA8xS,GAAA,SAAAC,GAAA,OAAAA,EAAA/3S,KAAAV,KAAAgH,EAAAtG,KAAAV,EAAA,KAEAw4S,EAAAvyS,KAAAe,EAEA,IAEAzI,EAAAiJ,KAAAgxS,GAAA,SAAAxxS,GACAb,EAAAmH,QAAAtG,GACAqG,EAAApH,KAAAE,EAAA4G,4BAAA/F,GACA,IAEAqG,CACA,EAEAyqS,EAAA3yS,UAAA4H,4BAAA,SAAA/F,GACA,IAAAb,EAAAf,KAEA,OAAAwC,IACAc,MAAA,WAOA,OANA1B,EAAA6C,WACA7C,EAAAyhD,SAAA19C,SAAA,eACA/D,EAAA2D,SAAAqD,YAAA,gBAGAhH,EAAAyhD,SAAAx8C,SAAA9F,EAAAwE,UACA3D,EAAAiG,OAAAjG,EAAAyhD,SACA,GACA,EAEAqvP,EAAA3yS,UAAAssP,UAAA,WACA,OACA,CAAAz7O,IAAA,SAAApE,MAAA,UACA,CAAAoE,IAAA,QAAApE,MAAA,SAEA,EAEAkmS,CACA,IAGAj7S,OCnRA,mCACA,SACA,UACA,WACA,eACA,SAAA2B,EAAAkM,EAAAm5B,EAAAtlC,GACA,aAEA,IAAAm6S,EAAA,SAAAnwR,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA+pB,GACA,IAAApiB,EAAAf,KAEAe,EAAAwE,SACAI,SAAA,mBACAA,SAAA,gBACAA,SAAA,iBAAA5E,EAAAzF,KAAAkkC,QAAAz+B,EAAAzF,KAAAkkC,QAAAhnC,MAAA,oBAEAuI,EAAAggG,QAAA3nG,EAAA,cACA6uC,KAAA,SAAAlnC,EAAAzF,KAAAgJ,KAAAD,EAAA,MACA4jC,KAAA,QAAAlnC,EAAAzF,KAAAgJ,KAAAF,EAAA,MACAyC,SAAA9F,EAAAwE,UAEAxE,EAAAqyC,IAAAryC,EAAAggG,QACA1oG,IAAA,GACAgkF,WAAA,KACA,EA0GA,OAxGA/2E,EAAA3F,OAAA2zS,EAAAhuS,GAEAguS,EAAA15Q,SAAA,eAEA05Q,EAAAvzS,UAAAgH,UAAA,WACA,IAAAhG,EAAAf,KACAA,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAo8C,YACA,SAAAp8C,GACAyF,EAAA2yC,OAAAp4C,EACA,IAEA0E,KAAA2M,eACA,EAEA2mS,EAAAvzS,UAAA0H,WAAA,WACAzH,KAAAuzS,aACAvzS,KAAAwzS,eAEAxzS,KAAAyzS,cAAAv6R,SAAAlZ,KAAAuF,SAAAK,IAAA,oBAEA5F,KAAAk5F,UAAAhgF,SAAAlZ,KAAA+gG,QAAAn7F,IAAA,kBACA,EAEA0tS,EAAAvzS,UAAA8H,OAAA,SAAAtC,GACA,OAAAvF,KAAA8G,qBAAAvB,EACA,EAEA+tS,EAAAvzS,UAAAwzS,WAAA,WACA,IAAAxyS,EAAAf,KAEAe,EAAA2yS,MAAAv6S,EAAA+N,IAAAnG,EAAAzF,KAAAo4S,OAAA,SAAAtxR,GACA,OACAuxR,MAAAx6S,EAAAmI,KAAAP,EAAA+E,MAAA,SAAAlE,GACA,OAAAA,EAAAtG,KAAAV,KAAAwnB,EAAAwxR,MACA,IACAC,MAAA16S,EAAAmI,KAAAP,EAAA+E,MAAA,SAAAlE,GACA,OAAAA,EAAAtG,KAAAV,KAAAwnB,EAAA0xR,MACA,IAEA,GACA,EAEAR,EAAAvzS,UAAAqmO,YAAA,WACApmO,KAAAozC,IAAAizL,UAAA,IAAArmO,KAAA+gG,QAAA/zF,QAAAhN,KAAA+gG,QAAA5yF,SACA,EAEAmlS,EAAAvzS,UAAAyzS,aAAA,WACAxzS,KAEAomO,cAEA,QAAA3tO,EAAA,EAAAA,EAAAuH,KAAA0zS,MAAAh7S,OAAAD,IAAA,CACA,IAAA2pB,EAAApiB,KAAA0zS,MAAAj7S,GAEAuH,KAAA+zS,kBAAA3xR,GACApiB,KAAAg0S,YAAA5xR,EAAAuxR,MAAAvxR,EAAAyxR,OAEA7zS,KAAA0zS,MAAAjyS,OAAAhJ,EAAA,EAEA,CACA,EAEA66S,EAAAvzS,UAAAg0S,kBAAA,SAAA3xR,GACA,UAAAhpB,EAAA0uB,QAAA1F,EAAAuxR,MAAA3zS,KAAA8F,QAAA,GAAA1M,EAAA0uB,QAAA1F,EAAAyxR,MAAA7zS,KAAA8F,KACA,EAEAwtS,EAAAvzS,UAAAi0S,YAAA,SAAAL,EAAAE,GACA,IAAAI,EAAA,CACA7vS,EAAAuvS,EAAAr4S,KAAA6I,SAAAC,EAAApE,KAAAyzS,cAAAE,EAAAr4S,KAAAgJ,KAAAF,EAAA,EACAC,EAAAsvS,EAAAr4S,KAAA6I,SAAAE,EAAArE,KAAAyzS,cAAAE,EAAAr4S,KAAAgJ,KAAAD,EAAA,GAEA6vS,EAAA,CACA9vS,EAAAyvS,EAAAv4S,KAAA6I,SAAAC,EAAApE,KAAAyzS,cAAAI,EAAAv4S,KAAAgJ,KAAAF,EAAA,EACAC,EAAAwvS,EAAAv4S,KAAA6I,SAAAE,EAAArE,KAAAyzS,cAAAI,EAAAv4S,KAAAgJ,KAAAD,EAAA,GAGArE,KAAAozC,IAAAqmD,YAEAo6M,EAAAM,qBAAA,GACAn0S,KAAAozC,IAAA6lD,YAAA46M,EAAAtuS,SACAjE,KAAA,eACAsE,IAAA,oBAEA5F,KAAAozC,IAAA6lD,YAAA46M,EAAAtuS,SACAK,IAAA,oBAGA5F,KAAAozC,IAAAqnD,OAAAw5M,EAAA7vS,EAAA6vS,EAAA5vS,GACArE,KAAAozC,IAAAsnD,OAAAw5M,EAAA9vS,EAAA8vS,EAAA7vS,GACArE,KAAAozC,IAAA8lD,UAAAl5F,KAAAk5F,UACAl5F,KAAAozC,IAAAwnD,YACA56F,KAAAozC,IAAAqrD,QACA,EAEA60M,EAAAvzS,UAAA2zC,OAAA,SAAAp4C,GACAnC,EAAA0I,QAAA7B,KAAA8F,MAAA,SAAAsuS,GACA,IAAAC,EAAA/4S,EAAA68B,QAAA,GAAAi8Q,EAAA94S,KAAAg5S,kBACAF,EAAAG,wBAAAF,EACA,IAEAr0S,KAAAwzS,cACA,EAEAF,CACA,IACA77S,OCrIA,mBACA,SACA,KACA,UACA,WACA,UACA,UACA,aACA,mBACA,SAAA2B,EAAA0K,EAAAwB,EAAAm5B,EAAAjpB,EAAAqvB,EAAAkO,EAAA0d,GACA,aAEA,IAAA10B,EAAA,CACAzgC,KAAA,CACAu/B,KAAA,WACApsB,iBAAA,EACAH,kBAAA,EACAg5N,YAAA,EACAktE,qBAAA,EACArkQ,MAAA,CACA8C,OAAAF,EAAAS,WAEAq2K,cAAA,EACA3pL,KAAA,YAIA,SAAAnqB,EAAAoN,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAA1E,KAAAoI,SAAA8R,EAAA1D,+BAAA9R,KAAA1E,KAAAoI,UAEA1D,KAAAuF,SACAI,SAAA,aAEA3F,KAAA1E,KAAAk5S,qBACAx0S,KAAAuF,SAAAK,IAAA,qBAEA64B,EAAAK,aAAA9+B,OAEA,IAAAywD,GAAAC,wBAAA1wD,KAAAuF,SAAAvF,OACAA,KAAAgO,YAAAhO,KAAA8K,eAAA,gBACA9K,KAAAuF,SAAAI,SAAA,aAEA3F,KAAA1E,KAAAoI,UAAA1D,KAAA1E,KAAAoI,SAAAq+F,UAAA,IAAA/hG,KAAA1E,KAAAoI,SAAAq+F,QAAAp+F,SACA3D,KAAAuF,SAAAI,SAAA,aAGA3F,KAAAkK,kBAAA,2BACAlK,KAAAkK,kBAAA,2BAEAlK,KAAAqzC,QAAA,IAAAN,EAAA/yC,UAAA1E,KAAA60C,MAAAnwC,KAAAuF,SACA,CA6GA,OA3GAD,EAAA3F,OAAAoW,EAAAzQ,GAEAyQ,EAAA6jB,SAAA,OAEA7jB,EAAAhW,UAAAgH,UAAA,WACA/G,KAAAy0S,cACA,EAEA1+R,EAAAhW,UAAA00S,aAAA,WACAz0S,KAAAwsD,MAAAxsD,KAAA0vD,oBACA1vD,KAAAuF,SAAAk1C,QACAz6C,KAAAuF,SACAI,SAAA,uCAEAkmC,OAAAzyC,EAAA,WACAwM,IAAA,CACAiH,QAAA,OACA6oC,WAAA,WACAvxC,SAAA,WACAgK,OAAA,OACAnB,MAAA,SAEA6+B,OAAA7rC,KAAAwsD,QAEAxsD,KAAAwsD,MACA7mD,SAAA,qBACAC,IAAA,CACAiH,QAAA,OACAoqC,cAAA,SACAyqD,KAAA,aAGAjjE,EAAAK,aAAA9+B,KACA,EAEA+V,EAAAhW,UAAA2vD,kBAAA,WACA,IACA0kJ,EADAv5K,EAAA76B,KAAA1E,KAAAu/B,KAqCA,GAlCA,UAAA76B,KAAA1E,KAAA4kC,KACAk0K,EAAAh7M,EAAA,SACAuM,SAAA,2BACAC,IAAA,CACAuI,OAAA,SAEA,aAAAnO,KAAA1E,KAAA4kC,KACAk0K,EAAAh7M,EAAA,SACAuM,SAAA,2BACAC,IAAA,CACAuI,OAAA,SAEA,UAAAnO,KAAA1E,KAAA4kC,MACAk0K,EAAAh7M,EAAA,YACAwM,IAAA,CACAuI,OAAA,SAGAnO,KAAAgO,YACAomM,EAAAnsK,KAAA,MAAAjoC,KAAAmH,SAAAu9B,WAAA,IAAA1kC,KAAA1E,KAAA8uN,iBAEAhW,EADAp0M,KAAA1E,KAAA6Y,YAAAnU,KAAAgO,WACA5U,EAAA,QACAsd,KAAA,OAAAlB,EAAAtB,mCAAAlU,KAAA1E,KAAA6Y,YACAuC,KAAA,SAAA1W,KAAA1E,KAAAgsO,WAAA,kBACA1hO,IAAA,CACAuI,OAAA,SAGA/U,EAAA,UACAwM,IAAA,CACAuI,OAAA,SAIAnO,KAAA1E,KAAAuuN,aAAA,CACA,GAAAhvL,EAAA,CACA,IAAA2mF,EAAA,IAAAjvG,OAAA,uBACAsoB,IAAAhb,QAAA2hG,EAAA19G,EAAA1G,aAAA,IACA,CAEA,IAAA0sN,EAAA1wN,EAAA,WACAyrC,OAAAiO,SAAAjY,IAAA,IAEA,OAAAu5K,EACAvoK,OAAAi+K,GACAlkN,IAAA,sBACA,CACA,OAAAwuM,EAAAv5K,OAEA,EAEA9kB,EAAAhW,UAAA0H,WAAA,WACAzH,KAAAqzC,QAAAK,SACA1zC,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MAEAA,KAAA2M,gBAEA3M,KAAA1E,KAAAo5S,kBACAj2Q,EAAA4E,aAAArjC,KAAAuF,SAAA,GAAAvF,KAAAwsD,MAEA,EAEAz2C,EAAAhW,UAAAsI,iBAAA,WACArI,KAAA1E,KAAAo5S,kBACAj2Q,EAAA4E,aAAArjC,KAAAuF,SAAA,GAAAvF,KAAAwsD,MAEA,EAEAz2C,CACA,IACAte,OCnKA,2BACA,SACA,UACA,WACA,cACA,gBACA,SAAA2B,EAAAkM,EAAAm5B,EAAAyqL,EAAAn1K,GACA,aAEA,IAAAhY,EAAA,CACAzgC,KAAA,CACA24C,SAAA,CACAlvC,mBAAA,EACAmvC,YAAA,EACAO,YAAA,eAKAkgQ,EAAA,cAAAz8S,SAAAoqB,cAAA,YAEA,SAAAsyR,EAAAzxR,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAAuF,SACAI,SAAA,mBACAC,IAAA,CACA8vC,WAAA,YAEA,CA4KA,OA1KApwC,EAAA3F,OAAAi1S,GAEAA,EAAAh7Q,SAAA,WAEAg7Q,EAAA70S,UAAAgH,UAAA,WACA/G,KAAA1E,KAAA4tN,SAGAlpN,KAAAooR,uBAFApoR,KAAA60S,yBAIA70S,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2C,OAAAsxC,SAAAhzC,MAAAjB,MACA+zC,EAAAh0C,UAAAw0C,2BAAAv0C,MACAA,KAAA2M,eACA,EAEAioS,EAAA70S,UAAA45C,MAAA,WAEA,IAAAntC,EAAAxM,KAAAymN,UAAA3tK,MACA94C,KAAAymN,UAAA3tK,IAAA,IACA94C,KAAAymN,UAAAv7M,QAAA,SACAlL,KAAAymN,UAAA3tK,IAAAtsC,EACA,EAEAooS,EAAA70S,UAAAwM,SAAA,WACA,OAAAvM,KAAAgmN,eACAhmN,KAAAgmN,eAAAv1M,WACAzQ,KAAAymN,UAAA3tK,KACA,EAEA87P,EAAA70S,UAAAo3C,WAAA,WACAn3C,KAAAymN,YACAzmN,KAAAymN,UAAA3tK,IAAA,IACA94C,KAAAymN,UAAA,GAAA12L,aAAA,aAEA/vB,KAAAgM,yBACA,EAEA4oS,EAAA70S,UAAA+0S,iBAAA,WACA,YAAA1uS,IAAApG,KAAAgmN,gBAAA,OAAAhmN,KAAAgmN,cACA,EAEA4uF,EAAA70S,UAAAg1S,iBAAA,WACA/0S,KAAAgmN,iBACAhmN,KAAAymN,UAAA1tN,SACAiH,KAAAymN,UAAA,KAEAzmN,KAAAooR,uBAEA,EAEAwsB,EAAA70S,UAAAi1S,mBAAA,WACAh1S,KAAAgmN,iBACAhmN,KAAAgmN,eAAAj3L,QACA/uB,KAAAgmN,eAAA,KAEAhmN,KAAA60S,yBAEA,EAEAD,EAAA70S,UAAA6mC,SAAA,SAAA8M,GACA1zC,KAAA1E,KAAA4tN,YAAAxD,iBAAAhyK,EAAAlnC,QACAxM,KAAA+0S,mBACA/0S,KAAAgmN,eAAA9pF,WAAAxoF,EAAAlnC,SAEAxM,KAAAg1S,qBACA,OAAAthQ,EAAAlnC,YAAApG,IAAAstC,EAAAlnC,OACAxM,KAAAymN,UAAA3tK,IAAApF,EAAAlnC,OACAxM,KAAAymN,UAAA,GAAA12L,aAAA,QAAA2jB,EAAAlnC,SAEAxM,KAAAymN,UAAA3tK,IAAA,IACA94C,KAAAymN,UAAA,GAAA12L,aAAA,cAIA/vB,KAAAgM,yBACA,EAEA4oS,EAAA70S,UAAA80S,uBAAA,WACA70S,KAAAymN,UAAArtN,EAAA,gBACAuM,SAAA,iCACAsiC,KAAA,KAAAjoC,KAAAmH,SAAAu9B,WAAA,IAAA1kC,KAAA1E,KAAAV,IACAqtC,KAAA,WAAAjoC,KAAA1E,KAAAk8C,UACAvP,KAAA,cAAAjoC,KAAA1E,KAAAw7C,WACAlxC,IAAA,CACAoH,MAAA,OACAmB,OAAA,OACA6oE,UAAA,WAEAl+B,IAAA94C,KAAA1E,KAAAg5C,cAAA,IACAztC,SAAA7G,KAAAuF,UAEAvF,KAAAymN,UAAA,GAAA12L,aAAA,YAEA,IAAAhvB,EAAAf,KACAi1S,EAAA,WACAl0S,EAAA0lN,UAAA3tK,MAAApgD,OAAAqI,EAAAzF,KAAA+tO,WACAtoO,EAAA0lN,UAAA3tK,IAAA/3C,EAAA0lN,UAAA3tK,MAAA3iC,OAAA,EAAApV,EAAAzF,KAAA+tO,WACA,EAEArpO,KAAA1E,KAAA8tO,eAEAurE,EACA30S,KAAAymN,UAAAx+K,KAAA,YAAAjoC,KAAA1E,KAAA+tO,WAEArpO,KAAAymN,UACA/qN,GAAA,sDACAvC,EAAA4+B,MAAAk9Q,EACA,KAGAj1S,KAAAymN,UAAA/qN,GAAA,oBACAqF,EAAAiL,0BACA5S,EAAA4G,MAAA,GAAA+vB,aAAA,QAAA32B,EAAA4G,MAAA84C,MACA,IAEA94C,KAAA1E,KAAA2mD,UACAjiD,KAAAymN,UAAA/vM,KAAA,eAEA1W,KAAAkK,kBAAA,mBAAAlK,KAAAymN,WAEA,IAAAyiB,EAAAlpO,KAAAgK,gBAAA,WACAk/N,EAAAvlO,UACA3D,KAAAyK,sBAAAzK,KAAAymN,UAAA,sBACAttN,EAAAglC,IAAAp9B,EAAA,2BACAA,EAAAooO,sBAAApoO,EAAAwL,WACA,IACAvM,KAAAyK,sBAAAzK,KAAAymN,UAAA,iBAAAttN,EAAAy+C,UAAA,WACA72C,EAAAooO,wBAAApoO,EAAAwL,aACAxL,EAAAooO,sBAAApoO,EAAAwL,WACAxL,EAAA6B,aAAAsmO,EAAAtlO,iBAEA,UAGA,IAAAi1C,EAAA74C,KAAAgK,gBAAA,gBACA6uC,EAAAl1C,SACA3D,KAAAymN,UAAA/qN,GAAA,kBAAAgF,GACA,KAAAA,EAAA4lD,SACAvlD,EAAA6B,aAAAi2C,EAAAj1C,gBAEA,IAGA66B,EAAAK,aAAA/9B,EAAA,KAAAA,EAAA0lN,UACA,EAEAmuF,EAAA70S,UAAAqoR,qBAAA,WACApoR,KAAAgmN,eAAA,IAAAkD,EAAAb,eAAA,CACAC,cAAAtoN,KAAAuF,SACAgjN,SAAAvoN,KAAA1E,KAAAitN,SACAnjN,UAAA,IAAApF,KAAA1E,KAAA2mD,SACAykK,qBAAA1mN,KAAA1E,KAAAorN,qBACA5lI,YAAA9gF,KAAA1E,KAAA45S,sBAEAz2Q,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAgmN,eAAAzgN,UAEA,IAAA+E,EAAAtK,KAAAgK,gBAAA,aACAjJ,EAAAf,KACAsK,EAAA3G,SACA3D,KAAAgmN,eAAAmvF,iBAAA,WACAp0S,EAAA6B,aAAA0H,EAAA1G,gBACA,GAEA,EAEAgxS,EAAA70S,UAAA2+M,eAAA,SAAA5lK,GACA94C,KAAAymN,WAAAzmN,KAAAymN,UAAAx+K,KAAA,cAAA6Q,EACA,EAEA87P,CACA,IACAn9S,OC3MA,6BACA,SACA,aACA,UACA,WACA,UACA,aACA,oBACA,cACA,iBACA,SAAA2B,EAAAD,EAAAmM,EAAAm5B,EAAAjpB,EAAAwzP,EAAA7yD,EAAApiK,EAAAc,GACA,aAEAugQ,EAAAC,eAAA,gBACAD,EAAAE,UAAA,WAEA,IAAAv5Q,EAAA,CACAzgC,KAAA,CACAi6S,YAAAH,EAAAC,eACAG,cAAA,EACA7iP,KAAA,GACA1e,SAAA,CACAlvC,mBAAA,EACAmvC,YAAA,EACAO,YAAA,aAEAi0L,aAAA,MAIA5nJ,EAAA,QAEA,SAAAs0N,EAAAjyR,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAA1E,KAAAoI,SAAA8R,EAAA1D,+BAAA9R,KAAA1E,KAAAoI,WAAA,GAEA1D,KAAA1E,KAAAoI,SAAA64M,UAAAv8M,KAAA1E,KAAAoI,SAAA64M,WAAAv8M,KAAA1E,KAAAoI,SAAA+xS,iBACAz1S,KAAA1E,KAAAoI,SAAA+xS,UAEA,IAAA10S,EAAAf,KACAA,KAAA6oO,OAAAzvO,EAAA,aACA6uC,KAAA,OAAAjoC,KAAA1E,KAAAhD,MACA2vC,KAAA,WAAAjoC,KAAA1E,KAAAk8C,UACA5xC,IAAA,CACAoH,MAAA,OACAmB,OAAA,SAEA2qC,IAAAgoC,GACAplF,GAAA,mBACAqF,EAAA20S,aAAA30S,EAAAwL,WACA,IACA7Q,GAAA,oBACAqF,EAAA8nO,OAAA/vL,QAAAgoC,GACA//E,EAAA8nO,OAAA/vL,IAAA,GACA,IACAp9C,GAAA,6BACAtC,EAAA4G,MACA1E,KAAA,mBACAsK,IAAA,UAAAivC,EAAAF,qBACA,IACAhvC,SAAA,mBACAkB,SAAA7G,KAAAuF,UAEAvF,KAAA1E,KAAAoI,SAAA64M,YAAA,IAAAv8M,KAAA1E,KAAAoI,SAAA64M,UAAA54M,SACA3D,KAAA6oO,OAAAntO,GAAA,mBACAqF,EAAA6B,aAAA7B,EAAAzF,KAAAoI,SAAA64M,UAAA34M,gBAAA7C,EAAAwL,WACA,IAGAvM,KAAAuF,SACAI,SAAA,mBACAC,IAAA,CAAA8vC,WAAA,aAEAjX,EAAAK,aAAA9+B,KAAA,KAAAA,KAAA6oO,QAEA7oO,KAAA6oO,OAAAntO,GAAA,oBACAqF,EAAAiL,yBACA,IAEAhM,KAAA1E,KAAA2mD,UACAjiD,KAAA6oO,OAAAnyN,KAAA,eAEA1W,KAAAgK,gBAAA,WACArG,UACA3D,KAAAyK,sBAAAzK,KAAA6oO,OAAA,sBACA1vO,EAAAglC,IAAAp9B,EAAA,2BACAA,EAAAooO,sBAAApoO,EAAAwL,WACA,IACAvM,KAAAyK,sBAAAzK,KAAA6oO,OAAA,iBAAA1vO,EAAAy+C,UAAA,WACA72C,EAAA40S,oBACA,GAAA31S,KAAA1E,KAAAotO,eAEA,CAqFA,OAnFApjO,EAAA3F,OAAAy1S,EAAA9vS,GAEA8vS,EAAAx7Q,SAAA,YAEAw7Q,EAAAr1S,UAAA41S,mBAAA,WACA31S,KAAAmpO,wBAAAnpO,KAAAuM,aACAvM,KAAAmpO,sBAAAnpO,KAAAuM,WACAvM,KAAA4K,sBAAA,WAEA,EAEAwqS,EAAAr1S,UAAAgH,UAAA,WACA/G,KAAA6oO,OACA5gM,KAAA,KAAAjoC,KAAAmH,SAAAu9B,WAAA,IAAA1kC,KAAA1E,KAAAV,IAEAoF,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2C,OAAAsxC,SAAAhzC,MAAAjB,MACA+zC,EAAAh0C,UAAAw0C,2BAAAv0C,MACAA,KAAA2M,eACA,EAEAyoS,EAAAr1S,UAAA0H,WAAA,WACA,GAAAzH,KAAA1E,KAAAk6S,aAAA,CACA,IAAAz0S,EAAAf,KACAA,KAAA6oO,OACA1yB,WAAA,CACAyF,WAAA,MACAg6F,cAAA,MACAjjP,KAAA3yD,KAAA1E,KAAAq3D,OAEAj3D,GAAA,yBACAqF,EAAA6J,sBAAA,WAAA7J,EAAAwL,YACAxL,EAAA8nO,OAAA1yB,WAAA,OACA,IACAz6M,GAAA,qBACA,IAAA8Q,EAAAzL,EAAAwL,WAEAvM,KAAAmpO,wBAAA38N,IAGAzL,EAAA40S,qBAEA50S,EAAA8nO,OAAA1yB,WAAA,QACA,GACA,CACA,EAEAi/F,EAAAr1S,UAAA45C,MAAA,WACA35C,KAAA6oO,OAAA39N,QAAA,QACA,EAEAkqS,EAAAr1S,UAAAwM,SAAA,WACA,IAAAC,EAAAxM,KAAA6oO,OAAA/vL,MACA,OAAA94C,KAAA1E,KAAAi6S,cAAAH,EAAAC,eACArsC,EAAAH,QAAAr8P,GAEAw8P,EAAAD,OAAA/oQ,KAAA2C,OAAA6J,EAEA,EAEA4oS,EAAAr1S,UAAAo3C,WAAA,WACAn3C,KAAA6oO,OAAA/vL,IAAA,MACA94C,KAAAgM,0BACAhM,KAAAmpO,sBAAA,EACA,EAEAisE,EAAAr1S,UAAA6mC,SAAA,SAAA8M,GACA1zC,KAAA01S,aAAAhiQ,EAAAlnC,OACAxM,KAAAmpO,sBAAAz1L,EAAAlnC,KACA,EAEA4oS,EAAAr1S,UAAA21S,aAAA,SAAA58P,GACA,IAAA+8P,EAEAA,EADA71S,KAAA1E,KAAAi6S,cAAAH,EAAAC,eACArsC,EAAAP,UAAA3vN,GAEAkwN,EAAAL,SAAA3oQ,KAAA2C,OAAAm2C,GAGA94C,KAAA6oO,OAAA/vL,IAAA+8P,GACA71S,KAAAgM,yBACA,EAEAopS,CACA,IACA39S,OCpLA,qBACA,SACA,YACA,SAAA2B,EAAAkM,GACA,aAEA,IAAAy2B,EAAA,CACAzgC,KAAA,CACAw6S,eAAA,aACAC,WAAA,IAIA,SAAAC,EAAA7yR,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAAu+I,MAAA,GACA,CAkCA,OAhCAj5I,EAAA3F,OAAAq2S,GAEAA,EAAAp8Q,SAAA,QAEAo8Q,EAAAj2S,UAAA0H,WAAA,WACAzH,KAAA1E,KAAAy6S,WACA/1S,KAAA2C,OAAAe,SAAAoyQ,WAAA91Q,KAAAi2S,WAAA1zS,KAAAvC,MACA,EAEAg2S,EAAAj2S,UAAAk2S,WAAA,SAAAjgC,GACA,IAAAj1Q,EAAAf,KACAk2S,EAAAn1S,EAAAiJ,gBAAA,gBACAksS,EAAAvyS,UACA,eAAA5C,EAAAzF,KAAAw6S,gBACA/0S,EAAAw9I,MAAA,IAAAx9I,EAAAzF,KAAAkwF,SACA7mE,YAAA,WACA5jB,EAAA6B,aAAAszS,EAAAtyS,gBACA,GAAA7C,EAAAw9I,QAGAv+I,KAAA2C,OAAAmM,YAAA+kC,2BAAA9yC,EAAAzF,KAAA66S,uBAAA,SAAA76S,GACAyF,EAAAw9I,MAAA,IAAAjjJ,EAAA68B,QAAA,GAAAp3B,EAAAzF,KAAA86S,6BACAzxR,YAAA,WACA5jB,EAAA6B,aAAAszS,EAAAtyS,gBACA,GAAA7C,EAAAw9I,MACA,KAIAy3H,GACA,EAEAggC,CACA,IACAv+S,OCrDA,kCACA,SACA,eACA,SAAA2B,EAAAD,GACA,aAEA,IAAAk9S,EAAA,SAAAz0S,GACA5B,KAAAs2S,iBAAA,KAEAt2S,KAAA4B,OAEA,IAAAb,EAAAf,KACAA,KAAA4B,KAAA20S,MAAAh0S,KACA,eACA,SAAA+V,GACAvX,EAAAs6E,WAAA/iE,EAAAg5B,KACA,GAEA,EA2DA,OAzDA+kQ,EAAAt2S,UAAAy2S,WAAAp9S,EAAA+O,KAEAkuS,EAAAt2S,UAAAywK,aAAA,WACA,OAAAxwK,KAAAs2S,gBACA,EAEAD,EAAAt2S,UAAAyzI,YAAA,SAAAijK,GACA,IAAAnlQ,EAAAtxC,KAAA4B,KAAA20S,MAAAn1N,KAAA,cAAAq1N,GACAz2S,KAAA4B,KAAA20S,MAAAn1N,KAAA,aAAA9vC,GAEAtxC,KAAAq7E,WAAA/pC,GACAtxC,KAAA4B,KAAA20S,MAAAn1N,KAAA,iBAAA9vC,GACAtxC,KAAA4B,KAAA20S,MAAAn1N,KAAA,eAAA9vC,EACA,EAEA+kQ,EAAAt2S,UAAAs7E,WAAA,SAAA/pC,GACAtxC,KAAA48O,WAEAtrM,GACAtxC,KAAAs2S,iBAAAhlQ,EAAA12C,GACAoF,KAAA4B,KAAA80S,eAAAplQ,GACAtxC,KAAA4B,KAAA20S,MAAAn1N,KAAA,WAAA9vC,GACAtxC,KAAA4B,KAAAgJ,sBAAA,WAAA0mC,EAAA12C,KACAoF,KAAAs2S,mBACAt2S,KAAA4B,KAAAgJ,sBAAA,aAAA5K,KAAAs2S,kBACAt2S,KAAAs2S,iBAAA,MAGAt2S,KAAA4B,KAAAoK,yBACA,EAEAqqS,EAAAt2S,UAAAi2E,MAAA,WACAh2E,KAAA48O,WACA58O,KAAAs2S,iBAAA,IACA,EAEAD,EAAAt2S,UAAA68O,SAAA,WACA,GAAA58O,KAAAs2S,iBAAA,CACA,IAAAK,EAAA32S,KAAA4B,KAAA20S,MAAAn1N,KAAA,cAAAphF,KAAAs2S,kBACAt2S,KAAA4B,KAAAg1S,iBAAAD,EACA,CACA,EAEAN,EAAAt2S,UAAA82S,SAAA,WACA,GAAA72S,KAAAs2S,iBAAA,CAEA,IAAAhlQ,EAAAtxC,KAAA4B,KAAA20S,MAAAn1N,KAAA,cAAAphF,KAAAs2S,kBAEAhlQ,GACAtxC,KAAA4B,KAAA20S,MAAAn1N,KAAA,SACAphF,KAAA4B,KAAA20S,MAAAn1N,KAAA,iBAAA9vC,GACAtxC,KAAA4B,KAAA80S,eAAAplQ,IAEAtxC,KAAAs2S,iBAAA,IATA,CAWA,EAEAD,CACA,IACA5+S,OC/EA,iCACA,SACA,eACA,SAAA2B,EAAAD,GACA,aAEA,IAAA29S,EAAA,SAAAl1S,GACA5B,KAAA+2S,mBAAA,GAEA/2S,KAAA4B,MACA,EAsFA,OApFAk1S,EAAA/2S,UAAAy2S,WAAA,SAAAllQ,EAAA/rC,GACA,IAAAyxS,EAAA59S,EAAA,6BACAsC,GAAA,SAAAsE,KAAAoiQ,kBAAA7/P,KAAAvC,KAAAsxC,EAAA/rC,IAEA+rC,EAAA5O,SAAAhqC,QACAs+S,EAAArxS,SAAA,aAEAJ,EACAjE,KAAA,iBACAk5D,OAAAw8O,EACA,EAEAF,EAAA/2S,UAAAqiQ,kBAAA,SAAA9wN,EAAA/rC,EAAA+S,GACAlf,EAAAkf,EAAAixP,YAAA7yP,KAAA,YACA1W,KAAA4B,KAAA20S,MAAAn1N,KAAA,iBAAA9vC,GAEAtxC,KAAA+2S,mBAAAl2S,KAAAywC,EAAA12C,IAEAoF,KAAA4B,KAAA80S,eAAAplQ,GACAtxC,KAAA4B,KAAAgJ,sBAAA,WAAA0mC,EAAA12C,MAEAoF,KAAA4B,KAAA20S,MAAAn1N,KAAA,sBAAA9vC,GAEAtxC,KAAA+2S,mBAAA59S,EAAAgsB,OAAAnlB,KAAA+2S,oBAAA,SAAAT,GACA,OAAAA,IAAAhlQ,EAAA12C,EACA,IAEAoF,KAAA4B,KAAAg1S,iBAAAtlQ,GACAtxC,KAAA4B,KAAAgJ,sBAAA,aAAA0mC,EAAA12C,KAGAoF,KAAA4B,KAAAoK,yBACA,EAEA8qS,EAAA/2S,UAAAywK,aAAA,WACA,OAAAxwK,KAAA+2S,kBACA,EAEAD,EAAA/2S,UAAAyzI,YAAA,SAAAyjK,GACAj3S,KAAAk3S,cAEAl3S,KAAA+2S,mBAAA39S,EAAA8qB,QAAA+yR,KAAA,CAAAA,GAEAj3S,KAAA62S,UACA,EAEAC,EAAA/2S,UAAAi2E,MAAA,WACAh2E,KAAAk3S,cACAl3S,KAAA+2S,mBAAA,EACA,EAEAD,EAAA/2S,UAAAm3S,YAAA,WACA,IAAAn2S,EAAAf,KACA7G,EAAAiJ,KAAApC,KAAA+2S,oBAAA,SAAAT,GACA,IAAAhlQ,EAAAvwC,EAAAa,KAAA20S,MAAAn1N,KAAA,cAAAk1N,GAEAl9S,EAAAk4C,EAAA1lC,SAAAtK,KAAA,0CAAAoV,KAAA,cAEA3V,EAAAa,KAAA20S,MAAAn1N,KAAA,sBAAA9vC,GACAvwC,EAAAa,KAAAg1S,iBAAAtlQ,EACA,GACA,EAEAwlQ,EAAA/2S,UAAA82S,SAAA,WACA,IAAA91S,EAAAf,KACAm3S,EAAAh+S,EAAA+I,MAAAlC,KAAA+2S,oBACA7vS,KAAA,SAAAuvS,GACA,OAAA11S,EAAAa,KAAA20S,MAAAn1N,KAAA,cAAAq1N,EACA,IACAt8R,QAAA,SAAAm3B,GACA,QAAAA,CACA,IACA9kC,QAEArT,EAAAiJ,KAAA+0S,GAAA,SAAA7lQ,GACAl4C,EAAAk4C,EAAA1lC,SAAAtK,KAAA,0CAAAoV,KAAA,cAEA3V,EAAAa,KAAA20S,MAAAn1N,KAAA,iBAAA9vC,GACAvwC,EAAAa,KAAA80S,eAAAplQ,EACA,IAEAtxC,KAAA+2S,mBAAA59S,EAAA0zL,MAAAsqH,EAAA,KACA,EAEAL,CACA,IACAr/S,OClGA,2BACA,KACA,SACA,UACA,WACA,UACA,aACA,oBACA,mBACA,qBACA,gBACA,SAAAqM,EAAA1K,EAAAkM,EAAAm5B,EAAAjpB,EAAArc,EAAAk9S,EAAAS,EAAAM,EAAArjQ,GACA,aAEA,IAAAhY,EAAA,CACAzgC,KAAA,CACA+7S,kBAAA,EACAC,aAAA,EACArjQ,SAAA,CACAlvC,mBAAA,EACAmvC,YAAA,EACAO,YAAA,eAKA,SAAA8iQ,EAAAp0R,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAGAnjB,KAAA1E,KAAAoI,SAAA8R,EAAA1D,+BAAA9R,KAAA1E,KAAAoI,WAAA,GAEA1D,KAAAu2S,MAAAn9S,EAAA,UAEA,IAAAo+S,EAAAp+S,EAAA,UACAo+S,EAAA5xS,IAAA,CAAAoxC,SAAA,OAAA7oC,OAAA,OAAAnB,MAAA,SACAwqS,EAAA3rQ,OAAA7rC,KAAAu2S,OACAv2S,KAAAuF,SAAAsmC,OAAA2rQ,GAEAx3S,KAAAy3S,iBAEAz3S,KAAA1E,KAAAo8S,qBACA13S,KAAAuF,SAAAI,SAAA,wBACA,CAiNA,OA/MAL,EAAA3F,OAAA43S,EAAAjyS,GAEAiyS,EAAA39Q,SAAA,WAEA29Q,EAAAx3S,UAAA03S,eAAA,WACA,IAAA12S,EAAAf,KAEA3G,EAAA,CACAiC,KAAA,GACAurK,SAAA7mK,KAAA1E,KAAA+7S,iBACAM,aAAA,EACAnB,WAAA,SAAAllQ,EAAAsmQ,GACA,IAAAryS,EAAAqyS,EAAAt2S,KAAA,mBAAAiZ,QAEAkkB,EAAAK,aAAA/9B,EAAA,KAAAwE,GACAxE,EAAA82S,mBAAAtyS,EAAA+rC,GAEAvwC,EAAAzF,KAAAo8S,qBACAnyS,EACA8xC,QAAAj+C,EAAA,qCACAyyC,OAAAzyC,EAAA,WAAA6uC,KAAA,MAAAnkC,EAAA3F,iBAAA4C,EAAAzF,KAAAw8S,uBAAAlyS,IAAA,CAAA82B,cAAA,aACA2a,QAAAj+C,EAAA,sCACAyyC,OAAAzyC,EAAA,WAAA6uC,KAAA,MAAAnkC,EAAA3F,iBAAA4C,EAAAzF,KAAAy8S,wBAAAnyS,IAAA,CAAA82B,cAAA,aAGA37B,EAAAwvK,UAAAimI,WAAAllQ,EAAA/rC,GAEAA,EAAAsmC,OAAA1yC,EAAA+N,IAAAnG,EAAAzF,KAAA08S,aAAA,SAAAC,EAAAz2S,GACA,IAAA02S,EAAA9+S,EAAA,oCACAuM,SAAAsyS,EAAAxsQ,WAAA,eACAxD,KAAA,MAAAnkC,EAAA3F,iBAAA85S,EAAAx9Q,QACAwN,KAAA,QAAAgwQ,EAAA5kQ,SACAztC,IAAA,CAAA82B,cAAA,YAEAu7Q,EAAAj9M,aACAk9M,EACAlrS,MAAAirS,EAAArjG,WAAA,MACAzmM,OAAA8pS,EAAApjG,YAAA,MAEA9zM,EAAAzF,KAAA68S,mBAAA32S,IAAAT,EAAAzF,KAAA08S,YAAAt/S,OAAA,GACAw/S,EAAAtyS,IAAA,eAAA7E,EAAAzF,KAAA68S,kBAAA,MAEAF,EAAAG,yBAAA,MAAA9mQ,EAAAnI,YAAAmI,EAAAnI,WAAAzwC,OAAA,KACA44C,EAAAnI,WAAA3nC,GACAsH,MACAovS,EAAA1uS,QAWA,OAPAyuS,EAAAv0S,SAAAq+F,QAAAp+F,SACAu0S,EAAAx8S,GAAA,oBAEA,OADAqF,EAAA6B,aAAAq1S,EAAAv0S,SAAAq+F,QAAAn+F,gBAAA0tC,EAAA12C,GAAAs9S,IACA,CACA,IAGAA,CACA,IAAA1pN,UACA,GAGAxuF,KAAA8K,eAAA,gBACAzR,EAAAg/S,gBAAA,SAAA/mQ,GACA,OAAAA,EAAA12C,KAAAmG,EAAAu1S,gBACA,GAGAt2S,KAAA1E,KAAAo8S,sBACAr+S,EAAAi/S,WAAAl/S,EAAA,WAAA6uC,KAAA,MAAAnkC,EAAA3F,iBAAA6B,KAAA1E,KAAAi9S,qBAAA3yS,IAAA,CAAA82B,cAAA,WACArjC,EAAAm/S,WAAAp/S,EAAA,WAAA6uC,KAAA,MAAAnkC,EAAA3F,iBAAA6B,KAAA1E,KAAAm9S,oBAAA7yS,IAAA,CAAA82B,cAAA,YAGA18B,KAAAu2S,MAAAn1N,KAAA/nF,EACA,EAEAk+S,EAAAx3S,UAAA24S,yBAAA,SAAAnzS,EAAAjK,GACAmjC,EAAAK,aAAA9+B,KAAA,KAAAuF,GACAvF,KAAA24S,wBAAApzS,EAAAjK,EACA,EAEAi8S,EAAAx3S,UAAA62S,iBAAA,SAAAtlQ,GACA,IAAA/rC,EAAAnM,EAAAk4C,EAAA1lC,SAAAtK,KAAA,mBAAAiZ,QACAhV,EAAAqD,YAAA,YAEA5I,KAAAijP,qBAAA,SAAA19O,EAAA+rC,EACA,EAEAimQ,EAAAx3S,UAAA22S,eAAA,SAAAplQ,GACA,IAAA/rC,EAAAnM,EAAAk4C,EAAA1lC,SAAAtK,KAAA,mBAAAiZ,QACAhV,EAAAI,SAAA,YAEA3F,KAAAijP,qBAAA,WAAA19O,EAAA+rC,EAEA,EAEAimQ,EAAAx3S,UAAAgH,UAAA,WACA,IAAAhG,EAAAf,KACAA,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2C,OAAAsxC,SAAAhzC,MAAAjB,MACAA,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAo8C,YACA,SAAAp8C,GAAAyF,EAAA8+M,QAAAvkN,EAAA,IACA,SAAAmuC,GAAA,IAEAsK,EAAAh0C,UAAAw0C,2BAAAxzC,GACAf,KAAA2M,gBAEA3M,KAAAuwK,UAAAvwK,KAAA1E,KAAAg8S,YAAA,IAAAR,EAAA92S,MAAA,IAAAq2S,EAAAr2S,KACA,EAEAu3S,EAAAx3S,UAAA0H,WAAArO,EAAA+O,KAEAovS,EAAAx3S,UAAAkjP,qBAAA,SAAAnxM,EAAAvsC,EAAA+rC,GACA,IAAAsnQ,EAAA54S,KAAA1E,KAAA+jC,QAAAr/B,KAAA1E,KAAA+jC,OAAAyS,GAEA8mQ,IAAA,IAAAA,EAAAj1S,UACA86B,EAAA0B,YAAAy4Q,EAAA54S,KAAAuF,GACAvF,KAAA63S,mBAAAtyS,EAAA+rC,GAEA,EAEAimQ,EAAAx3S,UAAA83S,mBAAA,SAAAtyS,EAAA+rC,GACAA,EAAAunQ,WACAtzS,EAAAK,IAAA,QAAA0rC,EAAAunQ,WAEAvnQ,EAAAi9B,iBACAhpE,EAAAK,IAAA,aAAA0rC,EAAAi9B,gBACA,EAEAgpO,EAAAx3S,UAAA8/M,QAAA,SAAAvkN,GACA,IAAAuiB,EAAA7d,KAAAu2S,MAAAn1N,KAAA,YAEA03N,EAAA94S,KAAA1E,KAAAw9S,WACAC,EAAA/4S,KAAA1E,KAAAy9S,iBACAC,EAAAh5S,KAAA1E,KAAA09S,aAEAC,EAAA,GACAC,EAAA,GACAC,EAAA,GAEAp4S,EAAAf,KAEA7G,EAAAiJ,KAAA9G,EAAA68B,SAAA,SAAAikB,GACA,IAAAg9P,EAAA,CACAx+S,GAAAwhD,EAAA08P,GACA9lP,MAAA5W,EAAA48P,GACA74B,SAAA/jO,EAAA28P,GACA5vQ,WAAAhwC,EAAA+N,IAAAnG,EAAAzF,KAAA08S,aAAA,SAAAqB,GACA,OACAvwS,KAAAszC,EAAAi9P,EAAA,mBAEA,IACA32Q,SAAA,IAGA3hC,EAAAzF,KAAAg+S,mBAAAl9P,EAAAr7C,EAAAzF,KAAAg+S,qBACAF,EAAAP,UAAAz8P,EAAAr7C,EAAAzF,KAAAg+S,oBAEAv4S,EAAAzF,KAAAi+S,yBAAAn9P,EAAAr7C,EAAAzF,KAAAi+S,2BACAH,EAAA7qO,gBAAAnyB,EAAAr7C,EAAAzF,KAAAi+S,0BAEAN,EAAAp4S,KAAAu4S,GACAF,EAAAE,EAAAx+S,IAAAw+S,EAEA,MAAAA,EAAAj5B,UACAg5B,EAAAt4S,KAAAu4S,EAEA,IAEAjgT,EAAAiJ,KAAA62S,GAAA,SAAAG,GACA,MAAAA,EAAAj5B,UACA+4B,EAAAE,EAAAj5B,UACAz9O,SAAA7hC,KAAAu4S,EAEA,IAEAp5S,KAAAu2S,MAAAn1N,KAAA,WAAA+3N,GAIAn5S,KAAAu2S,MAAAn1N,KAAA,2BAEAjoF,EAAA4+B,OAAA,WACAh3B,EAAAwvK,UAAAsmI,UACA,IAEA72S,KAAAu2S,MAAAn1N,KAAA,WAAAvjE,EACA,EAEA05R,EAAAx3S,UAAAwM,SAAA,WACA,OAAAvM,KAAAuwK,UAAAC,cACA,EAEA+mI,EAAAx3S,UAAAo3C,WAAA,WACAn3C,KAAAwM,MAAA,KACAxM,KAAAu2S,MAAAn1N,KAAA,SACAphF,KAAAuwK,UAAAv6F,OACA,EAEAuhO,EAAAx3S,UAAA6mC,SAAA,SAAA8M,GACA1zC,KAAAuwK,UAAA/8B,YAAA9/F,EAAAlnC,MACA,EAEA+qS,EAAAx3S,UAAAsG,uBAAA,WACA,OAAArG,KAAA1E,KAAAg8S,WACA,EAEAC,CACA,IAEA9/S,OC/PA,6BACA,SACA,YACA,SAAA2B,EAAAkM,GACA,aAEA,SAAAk0S,EAAAr2R,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA+pB,GAEAnjB,KAAAuF,SACAI,SAAA,8BACAC,IAAA,CACA8vC,WAAA,YAEA,CAiCA,OA/BApwC,EAAA3F,OAAA65S,EAAAl0S,GAEAk0S,EAAA5/Q,SAAA,UAEA4/Q,EAAAz5S,UAAAgH,UAAA,WACA/G,KAAA2M,eACA,EAEA6sS,EAAAz5S,UAAA0H,WAAA,WACAzH,KAAAy5S,eACA,EAEAD,EAAAz5S,UAAA05S,cAAA,WAUA,IAAAphS,EAAAuH,EACA63F,EAAAiiM,EAAA7nP,EAVA7xD,KAAAuF,SAAAk1C,QAEArhD,EAAA,SACAuM,SAAA,oBACAsiC,KAAA,OAAAjoC,KAAA1E,KAAAq+S,SAAA,sBAAA35S,KAAA1E,KAAAq+S,SAAA,KACA1xQ,KAAA,iBAAAjoC,KAAA1E,KAAAs+S,UACA/+Q,KAAA,cAAA76B,KAAA1E,KAAAq+S,UACA/9J,UAAA57I,KAAAuF,UAEA8S,EAMAngB,SANA0nB,EAMA,SALA85R,EAAArhS,EAAAI,qBAAAmH,GAAA,GAAAiyC,EAAA,SAAA13D,KAAAke,EAAAve,UAAA,gBACA29G,EAAAp/F,EAAAiK,cAAA1C,IACAhlB,GAGA,cAFA68G,EAAA9mF,IAAAkhC,EAAA,qCACA6nP,EAAAvoR,WAAA+4D,aAAAutB,EAAAiiM,EAEA,EAEAF,CACA,IACA/hT,OCjDA,qBACA,SACA,UACA,WACA,mBACA,SAAA2B,EAAAkM,EAAAm5B,EAAAmsL,GACA,aAEA,IAAA7uL,EAAA,CACAzgC,KAAA,CACAkR,MAAA,GACA6+M,MAAA,EACAn7K,UAAA,IAIA,SAAA2pQ,EAAA12R,GAmBA,OAlBA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAA6qN,OAAA,IAAAD,EAAA5qN,KAAAuF,UAEAvF,KAAA1E,KAAAgJ,KAAAF,EAAA,MACApE,KAAA1E,KAAAgJ,KAAAF,EAAA,KACApE,KAAA1E,KAAAgJ,KAAAD,EAAA,MACArE,KAAA1E,KAAAgJ,KAAAD,EAAA,KAEArE,KAAAuF,SACAI,SAAA,mBACAC,IAAA,CACA8vC,WAAA,WACAsB,SAAA,WAGAvY,EAAAK,aAAA9+B,MAEAA,IACA,CAuCA,OArCAsF,EAAA3F,OAAAk6S,EAAAv0S,GAEAu0S,EAAAjgR,SAAA,QAEAigR,EAAA95S,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,eACA,EAEAktS,EAAA95S,UAAA0H,WAAA,WACAzH,KAAAyI,aACAzI,KAAA+rN,iBACA,EAEA8tF,EAAA95S,UAAA+J,WAAA,WACA9J,KAAA+rN,iBACA,EAEA8tF,EAAA95S,UAAAgK,YAAA,WACA/J,KAAA6qN,OAAA97L,OACA,EAEA8qR,EAAA95S,UAAAgsN,gBAAA,WACA,IAAA1yN,EAAA,CACA2a,IAAAhU,KAAA1E,KAAAkR,MACA4+M,SAAAprN,KAAA1E,KAAA8vN,SACAD,OAAAnrN,KAAA1E,KAAA6vN,OACAE,KAAArrN,KAAA1E,KAAA+vN,KACAn7K,SAAAlwC,KAAA1E,KAAA40C,UAGAlwC,KAAA8K,eAAA,gBACAzR,EAAAuyN,QAAA5rN,KAAA4K,sBAAArI,KAAAvC,KAAA,eAEAA,KAAA6qN,OAAAz0I,KAAA/8E,EACA,EAEAwgT,CACA,IAKApiT,OCjFA,6CACA,SACA,KACA,UACA,WACA,YACA,SAAA2B,EAAA0K,EAAAwB,EAAAm5B,EAAAjpB,GACA,aAEA,IAAAskS,EAAA,SAAA56F,EAAA66F,GACA,QAAA76F,GACA/lN,EAAAk/E,KAAA0hO,GAAA,SAAA71N,GACA,WAAAg7H,EAAA5kN,cAAAxB,QAAAorF,EAAAg7H,EAAAxmN,OAAAwrF,EAAAxrF,OACA,GACA,EAEA,SAAAshT,EAAA72R,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA+pB,GACAsb,EAAAK,aAAA9+B,KACA,CA6EA,OA3EAsF,EAAA3F,OAAAq6S,EAAA10S,GAEA00S,EAAApgR,SAAA,oBAEAogR,EAAAj6S,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,eACA,EAEAqtS,EAAAj6S,UAAA6mC,SAAA,SAAA8M,GACA,IAEAumQ,EAFAztS,EAAAgJ,EAAA1D,+BAAA4hC,EAAAlnC,OAcA,GAVAA,EAGAytS,EADA,WAAA7gT,EAAAsM,KAAA8G,GACAA,EAEAknC,EAAAlnC,MAAAwH,KAAA0/B,EAAAlnC,MAAAya,IAJAjnB,KAAAm3C,aAOAn3C,KAAAuF,SAAAk1C,QAEAz6C,KAAAk6S,QAAAD,GACAj6S,KAAAuF,SACAsmC,OAAAzyC,EAAA,aAAA4G,KAAAm6S,mBAAAF,GAAA,QACAr0S,IAAA,CACAiH,QAAA,QACA,mBACA,oBACAG,MAAA,OACAmB,OAAA,OACAlB,OAAA,gBAEA,CACA,IAAA+G,EAAAhU,KAAAo6S,eAAAH,GAEAj6S,KAAAuF,SACAsmC,OAAAzyC,EAAA,gBAAA4a,EAAA,mDACA,CACA,EAEAgmS,EAAAj6S,UAAAo3C,WAAA,WACAn3C,KAAAuF,SAAAk1C,OACA,EAEAu/P,EAAAj6S,UAAAq6S,eAAA,SAAAH,GACA,IAAAI,EAAAr6S,KAAAm6S,mBAAAF,GAEA,OAAAj6S,KAAAs6S,aAAAL,GACA,sDAAAhvR,mBAAAovR,GAEAr6S,KAAAu6S,UAAAN,GACAn2S,EAAA5G,UAAA,iDAAA+tB,mBAAAovR,GAAA,eAEA,sCAAApvR,mBAAAovR,GAAA,gBACA,EAEAL,EAAAj6S,UAAAo6S,mBAAA,SAAAF,GACA,OAAAn2S,EAAAtF,WAAAsF,EAAA1G,aAAA,mCAAA68S,EAAA,uBACA,EAEAD,EAAAj6S,UAAAw6S,UAAA,SAAAr7F,GACA,OAAA46F,EAAA56F,EAAA,SACA,EAEA86F,EAAAj6S,UAAAu6S,aAAA,SAAAp7F,GACA,OAAA46F,EAAA56F,EAAA,+CACA,EAEA86F,EAAAj6S,UAAAm6S,QAAA,SAAAh7F,GACA,OAAA46F,EAAA56F,EAAA,sCACA,EAEA86F,CACA,IACAviT,OClGA,mCACA,SACA,OACA,KACA,UACA,WACA,UACA,uBACA,SAAA2B,EAAAoJ,EAAAsB,EAAAwB,EAAAm5B,EAAAjpB,EAAAiwL,GACA,aAEA,SAAA+0G,EAAAr3R,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA+pB,GAEAnjB,KAAA1E,KAAAoI,SAAA8R,EAAA1D,+BAAA9R,KAAA1E,KAAAoI,UAEA1D,KAAA6oO,OAAAzvO,EAAA,sBACAuM,SAAA,mBACAsiC,KAAA,OAAAjoC,KAAA1E,KAAAhD,MACA2vC,KAAA,WAAAjoC,KAAA1E,KAAAk8C,UACAvP,KAAA,cAAAjoC,KAAA1E,KAAAw7C,WACAgC,IAAA94C,KAAA1E,KAAAg5C,cAAA,IACA1uC,IAAA,CACAoH,MAAA,OACAmB,OAAA,SAEAtH,SAAA7G,KAAAuF,UAEAk5B,EAAAK,aAAA9+B,KAAA,KAAAA,KAAA6oO,OAEA,CAqEA,OAnEAvjO,EAAA3F,OAAA66S,EAAAl1S,GAEAk1S,EAAA5gR,SAAA,eAEA4gR,EAAAz6S,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,gBACA3M,KAAAs4C,UAAAt4C,KAAA2C,OAAA+B,WAAA6zC,gBAAAv4C,KAAA1E,KAAAoJ,YAEA,IAAA8e,EAAAhhB,EAAAu1B,QAEA,OADA/3B,KAAAi2N,WAAAzyM,GACAA,EAAAa,OACA,EAEAm2R,EAAAz6S,UAAAk2N,WAAA,SAAAzyM,GACA,IAAAziB,EAAAf,KAEAylM,EAAAtkL,KAAA,gBAAA7d,MAAA,SAAArK,GACAA,EACAi9N,wBAAA,CACAC,aAAA,WACAniN,IAAAlQ,EAAA1G,aAAA,0BACA87B,SAAAn4B,EAAA4B,OAAAu2B,SACAk9L,OAAAr1N,EAAAzF,KAAAV,KAEA0I,MAAA,WAEAkgB,EAAAc,SACA,GACA,GACA,EAEAk2R,EAAAz6S,UAAA0H,WAAA,WACA,IAAAgzS,EAAA,IAAA1jF,OAAAC,KAAA0jF,OAAAC,UAAA36S,KAAA6oO,OAAA,IACA9nO,EAAAf,KACA46S,EAAA56S,KAAA2C,OAAA0E,YAAAi9C,eAAAtkD,KAAA1E,KAAA2uD,YACA2wP,GACAA,EAAA7/E,SAAAz3N,MAAA,SAAAojB,GACAA,GACAA,EAAAjmB,YAAA,6BACAg6S,EAAAI,UAAAn0R,EAAAo0R,YACA,GAEA,IAEAL,EAAAh6S,YAAA,6BACA,IAAAi6S,EAAAD,EAAAM,YACA,GAAAL,EAAAhiT,QAGAqI,EAAA6J,sBAAA,WAAA8vS,EAAA,GAAAljF,kBACA,GACA,EAEAgjF,EAAAz6S,UAAAwM,SAAA,WACA,OAAAvM,KAAA6oO,OAAA/vL,KACA,EAEA0hQ,EAAAz6S,UAAAo3C,WAAA,WACAn3C,KAAA6oO,OAAA/vL,IAAA,GACA,EAEA0hQ,EAAAz6S,UAAA6mC,SAAA,SAAA8M,GACA,IAAA7Y,EAAA76B,KAAAs4C,UAAA6D,yBAAAzI,EAAAhuC,KAAAguC,EAAAlnC,OACAxM,KAAA6oO,OAAA/vL,IAAAje,EACA,EAEA2/Q,CACA,IACA,SCrGA94N,EAAAtwB,GACA,iBAAAC,SAAA,iBAAAp4D,OACAA,OAAAo4D,QAAAD,IACA,mBAAA35D,eAAA65D,IACA75D,OAAA,gCAAA25D,GACA,iBAAAC,QACAA,QAAA,WAAAD,IAEAswB,EAAA,WAAAtwB,GACA,CD4FA,CC5FA,oBAAArwD,UAAAf,MAAA,WACA,gBAAAg7S,GAEA,IAAAC,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAA9pP,QAGA,IAAAp4D,EAAAgiT,EAAAE,GAAA,CACA1iT,EAAA0iT,EACApnP,GAAA,EACA1C,QAAA,IAUA,OANA2pP,EAAAG,GAAAn2R,KAAA/rB,EAAAo4D,QAAAp4D,IAAAo4D,QAAA6pP,GAGAjiT,EAAA86D,GAAA,EAGA96D,EAAAo4D,OACA,CAoCA,OAhCA6pP,EAAAnyR,EAAAiyR,EAGAE,EAAAviT,EAAAsiT,EAGAC,EAAA7iS,EAAA,SAAAg5C,EAAA/4D,EAAA8iT,GACAF,EAAA13M,EAAAnyC,EAAA/4D,IACA4H,OAAAu7E,eAAApqB,EAAA/4D,EAAA,CACAuqG,cAAA,EACAD,YAAA,EACAvqG,IAAA+iT,GAGA,EAGAF,EAAA9oP,EAAA,SAAAn5D,GACA,IAAAmiT,EAAAniT,KAAAoiT,WACA,kBAAApiT,EAAA,SACA,kBAAAA,CAAA,EAEA,OADAiiT,EAAA7iS,EAAA+iS,EAAA,IAAAA,GACAA,CACA,EAGAF,EAAA13M,EAAA,SAAApwF,EAAAK,GAAA,OAAAvT,OAAAH,UAAA8yB,eAAA7N,KAAA5R,EAAAK,EAAA,EAGAynS,EAAArpP,EAAA,GAGAqpP,IAAAt7R,EAAA,EACA,CA/DA,CAiEA,CAEA,SAAA3mB,EAAAo4D,EAAA6pP,GAKAh7S,OAAAu7E,eAAApqB,EAAA,cACA7kD,OAAA,IAGA,IAAA8uS,EAAA,mBAAA/nP,QAAA,iBAAAA,OAAAC,SAAA,SAAApzD,GAAA,cAAAA,CAAA,WAAAA,GAAA,OAAAA,GAAA,mBAAAmzD,QAAAnzD,EAAAH,cAAAszD,QAAAnzD,IAAAmzD,OAAAxzD,UAAA,gBAAAK,CAAA,EAEA4iG,EAAA,oBAAAupI,EAAAloM,EAAAs+D,GAAA,QAAAlqG,EAAA,EAAAA,EAAAkqG,EAAAjqG,OAAAD,IAAA,KAAAg/E,EAAAkrB,EAAAlqG,GAAAg/E,EAAAmrB,WAAAnrB,EAAAmrB,aAAA,EAAAnrB,EAAAorB,cAAA,YAAAprB,MAAAqrB,UAAA,GAAA5iG,OAAAu7E,eAAAp3C,EAAAozC,EAAA7mE,IAAA6mE,EAAA,kBAAAwrB,EAAAC,EAAAC,GAAA,OAAAD,GAAAqpI,EAAAtpI,EAAAljG,UAAAmjG,GAAAC,GAAAopI,EAAAtpI,EAAAE,GAAAF,CAAA,KAIAs4M,EAAAC,EAFAN,EAAA,IAMAO,EAAAD,EAFAN,EAAA,IAMAQ,EAAAF,EAFAN,EAAA,IAIA,SAAAM,EAAAp7S,GAAA,OAAAA,KAAAi7S,WAAAj7S,EAAA,CAAAwsK,QAAAxsK,EAAA,CAIA,IAAAu7S,EAAA,iEAAAxhT,KAAAC,UAAAC,WACAuhT,EAAA/hT,OAAAgM,SAAAhM,OAAAkH,KAEA86S,OAAA,EA8BAC,EAAA,WACA,SAAAA,EAAA79J,EAAA96H,IApCA,SAAA5jB,EAAA0jG,GAAA,KAAA1jG,aAAA0jG,GAAA,UAAAlxC,UAAA,qCAqCAgqP,CAAA/7S,KAAA87S,GAEA97S,KAAA4vJ,IAAA3R,EACA,IAAAxlJ,OAAA,EACAujT,OAAA,EACAC,EAAApiT,OAAAiiT,SAOA,IALA,iBAAA97S,KAAA4vJ,KAAA,MAAA5vJ,KAAA4vJ,IAAA,KACA5vJ,KAAA4vJ,IAAA13J,SAAAgkT,eAAAj+J,EAAA9nI,OAAA,KAIA1d,EAAA,EAAAA,EAAAwjT,EAAAE,IAAA1jT,IAGA,IAFAujT,EAAAC,EAAAp7R,MAAApoB,cAEAqjT,GAAAE,EAAA1gT,KAAA2iJ,SAAAj+I,KAAA4vJ,IAEA,OADA2rJ,EAAA3uI,QAAAjtK,OAAAq8S,EAAA1gT,KAAAk4B,SAAArQ,GACA64R,EAIA,IAAAh8S,KAAA4vJ,IACA,0CAIA,GAAA5vJ,KAAA4vJ,IAAAl3J,OAAA,EACA,oDAAAulJ,EAIA,cAAAj+I,KAAA4vJ,IAAAzoE,SACA,OAAAnnF,KAAAzF,KAAAyF,KAAA4vJ,IAAAzsI,EAEA,CA8gCA,OAjgCA6/E,EAAA84M,EAAA,EACAlrS,IAAA,OACApE,MAAA,SAAAojJ,EAAAtwD,GACA,IACA7mG,EADAwjT,EAAApiT,OAAAiiT,SAEAE,EAAAF,EAAArjR,MAAAm3H,EAAA,KAAAqsJ,EAAAE,KAGAn8S,KAAA1E,KAAA,GACA0E,KAAA1E,KAAA2iJ,OAAA2R,EACA5vJ,KAAA1E,KAAA0oI,KAAAg4K,EAAAh4K,KACAhkI,KAAA1E,KAAA8gT,QAAAJ,EAAAI,QACAp8S,KAAA1E,KAAAk4B,SAAA+nR,EAAA3uI,QAAAjtK,OAAA,GAAA87S,EAAA7uI,QAAAttE,GACAt/F,KAAAq8S,MAAA,GACAr8S,KAAAq8S,MAAAttR,MAAA/uB,KAAA+uB,MAEA,IAAAhuB,EAAAf,KAiHA,GA/GA5G,EAAA4G,KAAA1E,KAAA8gT,SAAA1gT,GAAA,0DAAA4c,GACAvX,EAAAw3O,YAAAjgO,EACA,IAaAtY,KAAA8lI,SAAA8pB,EAAA9pB,SAWA9lI,KAAA04I,KAAAkX,EAAAlX,KAWA14I,KAAAtH,OAAAk3J,EAAAl3J,OAWAsH,KAAAihR,SAAArxH,EAAAqxH,SAWAjhR,KAAAmjB,QAAA64R,EAAA74R,QAAAzkB,MAAA,GAWAsB,KAAAghF,cAAA4uE,EAAA5uE,cAWAhhF,KAAAs8S,gBAAAN,EAAAx7Q,SAAA9hC,MAAA,GAWAsB,KAAAwM,MAAAojJ,EAAApjJ,MAGAxM,KAAA1E,KAAAihT,QAAAN,EAAAE,IACAF,EAAAp7R,MAAA7gB,KAAA1E,KAAAihT,SAAAv8S,KAGAA,KAAA1E,KAAAk4B,SAAAnQ,WAAA2B,KAAAhlB,MAGAi8S,EAAAE,KAAA,EAGAn8S,KAAAw8S,kBACA5sJ,EAAApgI,iBAAA,SAAAxvB,MACAA,KAAAw8S,iBAAA,IAIAb,GAAA37S,KAAA1E,KAAAk4B,SAAA48B,OAAA,CAeA,GAZAw/F,EAAAz+H,WAAA+4D,aAAAlqF,KAAA1E,KAAA0oI,KAAA4rB,GACAA,EAAA7/H,aAAA,iBAAA/vB,KAAA1E,KAAAihT,SAGAv8S,KAAA1E,KAAA0oI,KAAAx0G,iBAAA,QAAAxvB,MACAA,KAAA1E,KAAA0oI,KAAAx0G,iBAAA,UAAAxvB,MACAA,KAAA1E,KAAA0oI,KAAAx0G,iBAAA,WAAAxvB,MAEAA,KAAA04I,MACA14I,KAAA04I,KAAAlpH,iBAAA,QAAAxvB,OAGAA,KAAAihR,SACA,IAAAxoR,EAAA,EAAAA,EAAAuH,KAAAmjB,QAAAzqB,OAAAD,IACAuH,KAAAmjB,QAAA1qB,GAAA+2B,iBAAA,YAAAxvB,MAIA67S,IACA3jT,SAAAs3B,iBAAA,QAAAssR,EAAAW,YAEAb,GACA/1S,OAAA3N,SAAAs3B,iBAAA,QAAAssR,EAAAW,YAGAZ,GAAA,EAEA,CAEA,OAAA77S,IACA,GAgBA,CACA4Q,IAAA,MACApE,MAAA,SAAAw3H,EAAAxpE,GACA,IAAA3/B,EAAAoY,EAAAx6C,EAEA,iBAAAurI,IACAnpG,EAAAmpG,GACAA,EAAA9rI,SAAAoqB,cAAA,WACAuY,QAGA,WAAAmpG,EAAA78C,WACAl0C,EAAAsoQ,EAAA3uI,QAAAl8J,OAAA,MACAymJ,MAAA,YACA,aAAAnzB,EAAAx3H,MACAquB,KAAAmpG,EAAAnpG,KACAsX,UAAA6xF,EAAA7xF,UACAjS,KAAA,SACA,wBACAtlC,GAAA,KAAAoF,KAAA1E,KAAAihT,QAAA,KAAAv4K,EAAAppI,IAAAopI,EAAAx3H,MAAAqT,QAAA,YAGA07R,EAAA3uI,QAAAjnK,SAAAstC,EAAA+wF,EAAAlkG,WACA9/B,KAAAtH,QAAA,EAEAsrI,EAAA8B,WACAy1K,EAAA3uI,QAAAjnK,SAAAstC,EAAA,sBACAA,EAAAljB,aAAA,yBAGAi0G,EAAAz6H,SACAgyS,EAAA3uI,QAAAjnK,SAAAstC,EAAA,oBACAA,EAAAljB,aAAA,uBAGA/vB,KAAA1E,KAAA2iJ,OAAA74F,IAAA4+E,EAAAxpE,GAEA,iBAAAA,IACAA,EAAAx6D,KAAAmS,KAAAqoD,KAGA/hE,EAAAuH,KAAAmjB,QAAArqB,QAAA0hE,KAEA,GACAA,EAAArpC,WAAA+4D,aAAAj3C,EAAAunB,GACAx6D,KAAAmjB,QAAA1hB,OAAAhJ,EAAA,EAAAw6C,KAEAjzC,KAAA1E,KAAA8gT,QAAAhsR,YAAA6iB,GACAjzC,KAAAmjB,QAAAtiB,KAAAoyC,IAGAA,EAAAzjB,iBAAA,YAAAxvB,MAEAgkI,EAAAxjG,UACAxgC,KAAAi+I,OAAAxlJ,GAGA,GAcA,CACAmY,IAAA,OACApE,MAAA,SAAAhL,GAEA,OADAA,IAAA,EAAAxB,KAAAmjB,QAAAzqB,OAAA8I,IACAxB,KAAAmjB,QAAA3hB,IAAA,IACA,GAaA,CACAoP,IAAA,SACApE,MAAA,SAAAhL,GACA,IAAAk7S,EAAA18S,KAAAmS,KAAA3Q,GACAk7S,EAAAvrR,WAAAd,YAAAqsR,GACA18S,KAAAmjB,QAAA1hB,OAAAD,EAAA,GACAxB,KAAA1E,KAAA2iJ,OAAAllJ,OAAAyI,GACAxB,KAAAi+I,OAAAj+I,KAAA1E,KAAA2iJ,OAAAj9D,eACAhhF,KAAAtH,QAAA,CACA,GAYA,CACAkY,IAAA,QACApE,MAAA,WACA,IAAA/T,EACAujT,EAAAh8S,KAAA1E,KAAA0oI,KACA24K,EAAA38S,KAAA1E,KAAA8gT,QAEA,IAAAp8S,KAAAuoK,QAAAvoK,KAAAihR,SACA,SAGA,IAAAxoR,EAAA,EAAAA,EAAAuH,KAAAmjB,QAAAzqB,OAAAD,IACA8iT,EAAA3uI,QAAAhkK,YAAA5I,KAAAmjB,QAAA1qB,GAAA,uBAGAkkT,EAAA5sR,aAAA,yBACAwrR,EAAA3uI,QAAAhkK,YAAA+zS,EAAA,+BACApB,EAAA3uI,QAAAhkK,YAAAozS,EAAA,4BACAh8S,KAAAuoK,QAAA,EACAnvK,EAAA4iT,GAAAnwQ,OAAA8wQ,GACA38S,KAAA1E,KAAAk4B,SAAAzE,MAAA/J,KAAAhlB,KACA,GAeA,CACA4Q,IAAA,OACApE,MAAA,WACA,IAAAy4R,EAGAjyN,EACA4pO,EACAC,EACAb,EAAAh8S,KAAA1E,KAAA0oI,KACA24K,EAAA38S,KAAA1E,KAAA8gT,QAGA3W,OAAAr/R,IAAAvM,OAAAysF,YACAo/M,EAAA,gBAAAxtS,SAAAytS,YAAA,IACAp/M,EAAAk/M,EAAA5rS,OAAA2sF,YAAAk/M,EAAAxtS,SAAAqgB,gBAAAzK,UAAA5V,SAAAi4B,KAAAriB,UAKA,GAHA8uS,EAAArB,EAAA3uI,QAAAvwH,OAAA2/P,GAAAt1S,IAAA6/E,EACAs2N,EAAAhjT,OAAA+e,aAAAgkS,EAAAZ,EAAAt4Q,cAEA1jC,KAAAuoK,QAAAvoK,KAAAihR,SACA,SAGA07B,EAAA1gR,MAAApvB,QAAA,QACAo4R,EAAA0X,EAAAj5Q,aACAi5Q,EAAA1gR,MAAApvB,QAAA,GAIAmmE,EAFA4pO,EAAA3X,KACA4X,EAAA5X,GACA,cAEAjlS,KAAAuoK,QAAA,EACAgzI,EAAA3uI,QAAAjnK,SAAAq2S,EAAA,iBAAAhpO,GACA2pO,EAAA5sR,aAAA,wBACA32B,EAAAujT,GAAA/2S,IAAA,CACArB,OAAA,KACAJ,SAAA,WACA6I,MAAAkM,SAAA9f,IAAA4G,KAAA1E,KAAA0oI,MAAA,GAAA7yG,YAAAvrB,IAAA,iBACAa,KAAArN,IAAA4G,KAAA1E,KAAA0oI,MAAA,GAAA7yG,YAAAkrB,SAAA51C,KACAC,IAAAtN,IAAA4G,KAAA1E,KAAA0oI,MAAA,GAAA7yG,YAAAkrB,SAAA31C,IAAAtN,IAAA4G,KAAA1E,KAAA0oI,MAAA,GAAA7yG,YAAAhjB,WAGA/U,EAAA,YAAAyyC,OAAA8wQ,GACA38S,KAAA88S,UAAA98S,KAAAmjB,QAAAzqB,OAAA,GACAsH,KAAA88S,UAAA98S,KAAAghF,eAEAhhF,KAAA1E,KAAAk4B,SAAA4iD,KAAApxD,KAAAhlB,KACA,GAyBA,CACA4Q,IAAA,UACApE,MAAA,SAAAw3H,EAAA8B,GACA,IAAAi3K,EAAA,qBAEA,IAAA77S,UAAAxI,QAAA,kBAAAsrI,IACA8B,OAAA1/H,IAAA49H,EACAA,EAAAhkI,KAAA1E,KAAA0oI,KACA+4K,EAAA,qBACA/8S,KAAA8lI,iBAGA1/H,IAAA0/H,IACAA,GAAA,GAGA,iBAAA9B,IACAA,EAAAhkI,KAAAmS,KAAA6xH,IAGA8B,GACA9B,EAAAj0G,aAAA,oBACAwrR,EAAA3uI,QAAAjnK,SAAAq+H,EAAA+4K,KAEA/4K,EAAAj0G,aAAA,oBACAwrR,EAAA3uI,QAAAhkK,YAAAo7H,EAAA+4K,GAEA,GAkBA,CACAnsS,IAAA,OACApE,MAAA,SAAAw3H,EAAAz6H,GACA,IAAAyzS,EAAA,wBAEA52S,IAAAmD,IACAA,GAAA,GAGAy6H,EAAAhkI,KAAAmS,KAAA6xH,GAEAz6H,GACAy6H,EAAAj0G,aAAA,kBACAwrR,EAAA3uI,QAAAjnK,SAAAq+H,EAAAg5K,KAEAh5K,EAAAj0G,aAAA,kBACAwrR,EAAA3uI,QAAAhkK,YAAAo7H,EAAAg5K,GAEA,GAmBA,CACApsS,IAAA,SACApE,MAAA,SAAAw3H,EAAA8B,GACA,IAAArtI,EACA+I,EACAyxC,EACAgqQ,EACAh/J,EAAAj+I,KAAA1E,KAAA2iJ,OAMA,GAJA,iBAAAja,IACAA,EAAAhkI,KAAAmS,KAAA6xH,IAGA,iBAAAA,EACA,IAAAvrI,EAAA,EAAAA,EAAAuH,KAAAtH,OAAAD,IACAuH,KAAAmjB,QAAA1qB,GAAAq/E,aAAA,gBAAAksD,IACAA,EAAAhkI,KAAAmjB,QAAA1qB,IAMA,SAAAurI,GAAA,iBAAAA,IAAA8B,GAAAy1K,EAAA3uI,QAAAnqI,SAAAuhG,EAAA,yBAIAu3K,EAAA3uI,QAAAnqI,SAAAuhG,EAAA,cACAxiI,EAAAxB,KAAAmjB,QAAArqB,QAAAkrI,GACA/wF,EAAAgrG,EAAA96H,QAAA3hB,GAEAxB,KAAAihR,UACAs6B,EAAA3uI,QAAA5kC,YAAAhE,EAAA,sBACA/wF,EAAAzS,UAAAyS,EAAAzS,SAEA+6Q,EAAA3uI,QAAAnqI,SAAAuhG,EAAA,uBACAA,EAAAj0G,aAAA,wBACA/vB,KAAAs8S,gBAAAz7S,KAAAmjI,KAEAA,EAAAj0G,aAAA,yBACAvuB,EAAAxB,KAAAs8S,gBAAAxjT,QAAAkrI,GACAhkI,KAAAs8S,gBAAA76S,OAAAD,EAAA,MAGAy7S,EAAAj9S,KAAA1E,KAAA0oI,KAAA/yG,WAEAjxB,KAAAs8S,gBAAA5jT,SACA6iT,EAAA3uI,QAAAhkK,YAAA5I,KAAAs8S,gBAAA,yBACAt8S,KAAAs8S,gBAAA,GAAAvsR,aAAA,0BAGAwrR,EAAA3uI,QAAAjnK,SAAAq+H,EAAA,sBACAA,EAAAj0G,aAAA,wBAEAktR,EAAAltR,aAAA,wBAAAi0G,EAAAppI,IACAqiT,EAAAn9Q,UAAA,eAAAmT,EAAAnT,UACAm9Q,EAAA9qQ,UAAAc,EAAAd,UAEAnyC,KAAAs8S,gBAAA,GAAAt4K,EACA/wF,EAAAzS,UAAA,GAGAxgC,KAAAghF,cAAAi9D,EAAAj9D,cACAhhF,KAAAwM,MAAAyxI,EAAAzxI,MAEAs5H,GACA9lI,KAAA1E,KAAA2iJ,OAAAwxF,cAAA,IAAAisE,EAAA9uI,QAAA,UAAAyiE,QAAArvO,KAAA1E,KAAAk4B,SAAA0pR,UAGAl5K,QA1CA,EA4CA,GAiBA,CACApzH,IAAA,YACApE,MAAA,SAAAw3H,EAAA8B,GAGA,OAFA9lI,KAAAg2E,OAAA,GACAh2E,KAAA88S,UAAA94K,GACAhkI,KAAAi+I,OAAAja,EAAA8B,EACA,GAoBA,CACAl1H,IAAA,SACApE,MAAA,SAAAuuF,EAAAkR,GACA,IAAAxzG,EACAomE,EACAjuB,EACAusQ,EACAC,EACAC,EACAC,EACAC,EACAp6R,EAAAnjB,KAAA1E,KAAA2iJ,OAAA96H,QACA9L,EAAA,GAEA,IAAA0jF,EACA,OAAA/6F,KAAAmjB,QASA,IAJA8oF,EAAA,WADAA,MAAA3xG,cAAA,UACA,cAAA2xG,EAAA,IAEAsxM,EAAA,IAAAhrS,QAAA05F,EAAA,QAAAlR,EAAA,KAEAtiG,EAAA,EAAAA,EAAA0qB,EAAAzqB,OAAAD,IAIA,GAHAm4C,EAAAztB,EAAA1qB,GAAAoiC,KAAAvgC,cAGA,GAAA2xG,EAAA,CAIA,IAHAptC,EAAAk8B,EAAAzgG,cAAA9B,MAAA,IACA2kT,EAAAC,EAAAC,EAAAC,EAAA,EAEAF,EAAAxsQ,EAAAl4C,QACAk4C,EAAAwsQ,KAAAv+O,EAAAs+O,IACAE,GAAA,EAAAA,EACAF,KAEAE,EAAA,EAGAC,GAAAD,EACAD,IAGAD,IAAAt+O,EAAAnmE,QACA2e,EAAAxW,KAAA,CAAAyX,EAAAtY,KAAAmjB,QAAA1qB,GAAAmnB,EAAA09R,EAAA7kT,KAIA,MACA8kT,EAAApjT,KAAAy2C,IAAAv5B,EAAAxW,KAAAb,KAAAmjB,QAAA1qB,IAcA,OATA,IAAAwzG,IACA50F,IAAAq1G,MAAA,SAAAh6F,EAAAg/B,GACA,OAAAA,EAAA9xC,EAAA8S,EAAA9S,GAAA8S,EAAAj6B,EAAAi5D,EAAAj5D,CACA,IAAAsK,QAAA,SAAA8uD,EAAA2xC,GAEA,OADA3xC,IAAAn5D,QAAA8qG,EAAAlrF,EACAu5C,CACA,QAGAx6C,CACA,GAcA,CACAzG,IAAA,QACApE,MAAA,WACAxM,KAAA8lI,WACA9lI,KAAAihR,SAAAjhR,KAAA1E,KAAA0oI,KAAAhkI,KAAA1E,KAAA0oI,KAAAthG,SAAA,IAAAiX,OAEA,GAkBA,CACA/oC,IAAA,QACApE,MAAA,SAAAyS,GACA,IAAAxmB,EACAwlJ,EAAAj+I,KAAA1E,KAAA2iJ,OAIA,IAFAj+I,KAAAs8S,gBAAA5jT,OAAA,EAEAD,EAAA,EAAAA,EAAAwlJ,EAAA96H,QAAAzqB,OAAAD,IACAwlJ,EAAA96H,QAAA1qB,GAAA+nC,UAAA,EACA+6Q,EAAA3uI,QAAAhkK,YAAA5I,KAAAmjB,QAAA1qB,GAAA,sBACAuH,KAAAmjB,QAAA1qB,GAAAs3B,aAAA,0BACA9Q,GAAAg/H,EAAA96H,QAAA1qB,GAAA+kT,iBACAx9S,KAAAi+I,OAAAxlJ,GAAA,GAIAuH,KAAAs8S,gBAAA5jT,QAAAsH,KAAAihR,UACAjhR,KAAAi+I,OAAA,KAEA,GAeA,CACArtI,IAAA,UACApE,MAAA,WACAtM,OAAAyP,KAAA3P,MAAAtH,OAAA,KAAAijT,GAAA37S,KAAA1E,KAAAk4B,SAAA48B,SACApwD,KAAAg7B,UAAAzgC,KAAAyF,KAAA1E,KAAA2iJ,OAAAj+I,KAAA1E,KAAAk4B,SAEA,GAYA,CACA5iB,IAAA,UACApE,MAAA,WACA,IAAAyvS,EAAApiT,OAAAiiT,SAQA,OANA57S,OAAAyP,KAAA3P,MAAAtH,OAAA,KAAAijT,GAAA37S,KAAA1E,KAAAk4B,SAAA48B,iBACA6rP,EAAAp7R,MAAA7gB,KAAA1E,KAAAihT,SACAv8S,KAAA1E,KAAA0oI,KAAA7yG,WAAAd,YAAArwB,KAAA1E,KAAA0oI,MACAhkI,KAAA1E,KAAA2iJ,OAAAm5F,gBAAA,mBAGAp3O,IACA,GASA,CACA4Q,IAAA,cACApE,MAAA,SAAA9L,GACA,IAAAV,KAAA8lI,SAIA,OAAAplI,EAAAgF,MACA,YACA1F,KAAAy9S,UAAA/8S,GACA,MACA,cACAV,KAAA09S,YAAAh9S,GACA,MACA,eACAV,KAAA29S,eAAAj9S,GACA,MACA,gBACAV,KAAA49S,WAAAl9S,GACA,MACA,YACAV,KAAAg2E,QACA,MACA,aACAh2E,KAAA1E,KAAAk4B,SAAA4tH,OAAAp8H,KAAAhlB,MAGA,GAOA,CACA4Q,IAAA,YACApE,MAAA,SAAA9L,GACA,IAAA6vK,EACA/uK,EACAq8S,EACAC,EACAz5Q,EAAA3jC,EAAA2jC,OAEA,GAAAk3Q,EAAA3uI,QAAAnqI,SAAA4B,EAAA,sBACA,SAGA,GAAArkC,KAAAihR,UAMA,GAAAs6B,EAAA3uI,QAAAnqI,SAAA4B,EAAA,aAIA,GAFA,WADAksI,EAAA12K,OAAA22K,gBACA9qK,MAAA6qK,EAAAwtI,kBAEAr9S,EAAA6iJ,SAUA,GATAs6J,EAAA79S,KAAAmjB,QAAArqB,QAAAkH,KAAAs8S,gBAAA,IACAwB,EAAA99S,KAAAmjB,QAAArqB,QAAAkH,KAAAs8S,gBAAAt8S,KAAAs8S,gBAAA5jT,OAAA,KACA8I,EAAAxB,KAAAmjB,QAAArqB,QAAAurC,IAEAw5Q,GAAAr8S,EAAAs8S,IAAAt8S,EAAAq8S,GACAr8S,EAAAs8S,KAAAD,IAAAC,EAAAD,GAEA79S,KAAAg2E,OAAA,GAEA8nO,EAAAt8S,EACA,KAAAA,EAAAs8S,EAAA,GACA99S,KAAAi+I,OAAAz8I,UAGA,KAAAA,EAAAs8S,EAAA,GACA99S,KAAAi+I,OAAAz8I,UAGAd,EAAAy7I,SAAAz7I,EAAA4iJ,SAGAtjJ,KAAAg2E,OAAA,GAFAh2E,KAAAi+I,OAAA55G,QA7BArkC,UAAAuoK,OAAA,kBACAgzI,EAAA3uI,QAAAnqI,SAAA4B,EAAA,cACArkC,KAAAi+I,OAAA55G,EAkCA,GAOA,CACAzzB,IAAA,aACApE,MAAA,SAAA9L,GACA,IAAAjI,EACAw6C,EAAAvyC,EAAA2jC,OAEA,IAAArkC,KAAAihR,SAAA,CACA,IAAAxoR,EAAA,EAAAA,EAAAuH,KAAAmjB,QAAAzqB,OAAAD,IACA8iT,EAAA3uI,QAAAhkK,YAAA5I,KAAAmjB,QAAA1qB,GAAA,uBAGA8iT,EAAA3uI,QAAAjnK,SAAA3F,KAAA1E,KAAA8gT,QAAA,+BACAb,EAAA3uI,QAAAjnK,SAAAstC,EAAA,sBACA,CACA,GAOA,CACAriC,IAAA,cACApE,MAAA,SAAA9L,GACA,IAAAs9S,EACA7pR,EACAqM,EAAAxgC,KAAAs8S,gBACAn5R,EAAAnjB,KAAAmjB,QACA1qB,EAAA,EACAkX,EACA,EADAA,EAEA,GAFAA,EAGA,GAHAA,EAIA,GAJAA,EAKA,GALAA,EAMA,GAGA,OAAAjP,EAAA4lD,SACA,KAAA32C,EACAlX,GAAA,EAEA,KAAAkX,EAIA,GAHAjP,EAAA6jC,iBACAy5Q,EAAAx9Q,IAAA9nC,OAAA,GAEA6iT,EAAA3uI,QAAAnqI,SAAAziC,KAAA1E,KAAA8gT,QAAA,+BAEA,IADAb,EAAA3uI,QAAAhkK,YAAA5I,KAAA1E,KAAA8gT,QAAA,+BACAjoR,EAAA,EAAAA,EAAAhR,EAAAzqB,OAAAy7B,IACAonR,EAAA3uI,QAAAnqI,SAAAtf,EAAAgR,GAAA,yBACAonR,EAAA3uI,QAAAhkK,YAAAua,EAAAgR,GAAA,uBACA6pR,EAAA76R,EAAAgR,KAKA17B,EAAA0qB,EAAArqB,QAAAklT,GAAAvlT,GAEA0qB,EAAAzqB,OAAA,EACAD,EAAA0qB,EAAAzqB,OAAA,EACAD,EAAA,IACAA,EAAA,GAGAuH,KAAA1E,KAAA2iJ,OAAA96H,QAAA1qB,GAAAqtI,WACA9lI,KAAAg2E,OAAA,GACAh2E,KAAAi+I,OAAAxlJ,GACAuH,KAAA88S,UAAArkT,IAEA,MACA,KAAAkX,EACA,IAAA3P,KAAAuoK,OAAA,CACA7nK,EAAA6jC,iBACAvkC,KAAAo2E,OACA,KACA,CAEA,KAAAzmE,EACA,KAAAA,EACA,IAAAlX,EAAA,EAAAA,EAAA0qB,EAAAzqB,OAAAD,IACA8iT,EAAA3uI,QAAAnqI,SAAAtf,EAAA1qB,GAAA,wBACAuH,KAAAi+I,OAAAxlJ,GAIA,KAAAkX,EACA3P,KAAAuoK,SACA7nK,EAAA6jC,iBACAvkC,KAAA+uB,SAIA,GAOA,CACAne,IAAA,iBACApE,MAAA,SAAA9L,GACA,IAAAy3B,EACAp3B,EAAAf,KACAi+S,EAAAtrQ,OAAAyiB,aAAA10D,EAAA4lD,SAAA5lD,EAAA0jC,YAWAh+B,IAAApG,KAAA1E,KAAA4iT,eACAl+S,KAAA1E,KAAA4iT,aAAA,IAVAn9S,EAAAzF,KAAA6iT,eACAt5R,aAAA9jB,EAAAzF,KAAA6iT,eAGAp9S,EAAAzF,KAAA6iT,cAAAx5R,YAAA,WACA5jB,EAAAzF,KAAA4iT,aAAA,EACA,QASAl+S,KAAA1E,KAAA4iT,cAAAD,GACA9lR,EAAAn4B,KAAAjG,OAAAiG,KAAA1E,KAAA4iT,aAAAl+S,KAAA1E,KAAAk4B,SAAAz5B,SAEArB,SACA6iT,EAAA3uI,QAAAnqI,SAAAtK,EAAA,0BACAn4B,KAAAo+S,UAAAjmR,EAAA,IAGA,GAOA,CACAvnB,IAAA,YACApE,MAAA,SAAAymC,GACA,IAAAorQ,EACAC,EAEAC,EAAAv+S,KAAA1E,KAAA8gT,QAEA,QAAAnpQ,GAAA,iBAAAA,QAAAjzC,KAAAuoK,SAAAvoK,KAAAihR,SACA,SAGA,iBAAAhuO,IACAA,EAAAjzC,KAAAmS,KAAA8gC,KAIAqrQ,GADAD,EAAA9C,EAAA3uI,QAAAzoK,SAAA8uC,EAAAsrQ,GAAA73S,KACA63S,EAAAzwS,WACAmlC,EAAAvP,aAEA66Q,EAAA76Q,cACA26Q,GAAAprQ,EAAAvP,aACA66Q,EAAAzwS,UAAAuwS,EAAAE,EAAA76Q,cACA46Q,EAAA,IACAC,EAAAzwS,UAAAuwS,EAEA,KAGAvC,CACA,CAnjCA,GA4jCAjiT,OAAAiiT,WACAjiT,OAAAiiT,SAAAj7R,MAAA,GACAhnB,OAAAiiT,SAAAK,IAAA,EAYAL,EAAArjR,MAAA,SAAAm3H,EAAA4uJ,GACA,IAAAC,EACArC,EACA3jT,EACA0qB,EAAA,GACA0+F,EAAA,CACAmiB,KAAA,KACAo4K,QAAA,KACAj5R,QAAA,GACAqd,SAAA,IA0GA,IAlCAqhF,EAAAmiB,KAAAu3K,EAAA3uI,QAAAl8J,OAAA,OACAymJ,MAAA,aAAAvH,EAAAqxH,SAAA,eAGAm7B,EAAAb,EAAA3uI,QAAAl8J,OAAA,MACAymJ,MAAA,oBACAv8J,GAAA4jT,EAAA,WACAt+Q,KAAA,YAGA0vH,EAAA9pB,WACAy1K,EAAA3uI,QAAAjnK,SAAAk8G,EAAAmiB,KAAA,sBACAniB,EAAAmiB,KAAAj0G,aAAA,qBAEA8xF,EAAAmiB,KAAAppI,GAAA4jT,GAAA5uJ,EAAAh1J,GAAA,IAAAg1J,EAAAh1J,GAAA,IACA2gT,EAAA3uI,QAAAjnK,SAAAk8G,EAAAmiB,KAAA4rB,EAAA9vH,WAEA8vH,EAAAqxH,UAaAp/J,EAAAmiB,KAAAj0G,aAAA,WAAA6/H,EAAA93E,aAAA,kBACAskO,EAAArsR,aAAA,iCAbA0uR,EAAA7uJ,EAAAzsI,QAAAysI,EAAA5uE,eACA6gC,EAAAmiB,KAAA5zG,YAAAmrR,EAAA3uI,QAAAl8J,OAAA,OACAymJ,MAAA,gBAAAsnJ,IAAA3+Q,UAAA,IACAovI,SAAAtf,EAAAsf,UAAA,EACA/8H,UAAAssQ,IAAA5jR,KAAA,SACAjgC,GAAA4jT,EAAA,YACA,wBACA,YAAApC,EAAAxhT,GACAslC,KAAA,cAEAk8Q,EAAArsR,aAAA,0BAMAt3B,EAAAm3J,EAAAltH,SAAAhqC,OAAAD,IAAA0qB,EAAA04B,QAAA+zG,EAAAltH,SAAAjqC,KAKA,OAJA0qB,EAAAthB,SAzGA,SAAA68S,EAAAptQ,GACA,IAAA2B,EACAo9H,EACAsuI,EACAlmT,EACAiqC,EAAA,GAEA,OAAA4O,EAAA61C,UACA,aACAl0C,EAAAsoQ,EAAA3uI,QAAAl8J,OAAA,MACAymJ,MAAA,aACA,aAAA7lH,EAAA9kC,MACAquB,KAAAyW,EAAAzW,KACAsX,UAAAb,EAAAa,UACAjS,KAAA,SACA,wBACAtlC,GAAA4jT,EAAA,KAAAltQ,EAAA12C,IAAA02C,EAAA9kC,MAAAqT,QAAA,YAGA07R,EAAA3uI,QAAAjnK,SAAAstC,EAAA3B,EAAAxR,WAEAwR,EAAAw0F,WACAy1K,EAAA3uI,QAAAjnK,SAAAstC,EAAA,sBACAA,EAAAljB,aAAA,yBAGAuhB,EAAA/nC,SACAgyS,EAAA3uI,QAAAjnK,SAAAstC,EAAA,oBACAA,EAAAljB,aAAA,uBAGAuhB,EAAA9Q,WACA+6Q,EAAA3uI,QAAAjnK,SAAAstC,EAAA,sBACAA,EAAAljB,aAAA,wBACA8xF,EAAArhF,SAAA3/B,KAAAoyC,IAGA4uE,EAAA1+F,QAAAtiB,KAAAb,KAAAowB,YAAA6iB,IACA,MACA,eAcA,IAbAo9H,EAAAkrI,EAAA3uI,QAAAl8J,OAAA,MAAAymJ,MAAA,gBAEA7lH,EAAA0hB,OACAq9G,EAAAjgJ,YAAAmrR,EAAA3uI,QAAAl8J,OAAA,OACAymJ,MAAA,oBACAhlH,UAAAb,EAAA0hB,SAIA2rP,EAAApD,EAAA3uI,QAAAl8J,OAAA,MACAymJ,MAAA,wBAGA1+J,EAAA64C,EAAA5O,SAAAhqC,OAAAD,IAAAiqC,EAAAmZ,QAAAvK,EAAA5O,SAAAjqC,KAEA64C,EAAAw0F,WACAuqC,EAAAu8D,UAAAxnL,IAAA,wBAEA1iB,EAAA7gC,SAAA,SAAAoxC,GACAA,EAAA6yF,SAAAx0F,EAAAw0F,QACA,KAGApjG,EAAA7gC,QAAA68S,EAAAC,GAEA3+S,KAAAowB,YAAAigJ,GAAAjgJ,YAAAuuR,GAGA,GAqCA98L,EAAAmiB,KAAA5zG,YAAAgsR,IAEAv6L,EAAAu6L,UAEAv6L,CACA,EASAi6L,EAAAW,WAAA,SAAA/7S,GACA,IAAAk+S,EAAAnmT,EACAwjT,EAAApiT,OAAAiiT,SAEA,OAAAp7S,EAAA2jC,OAAAmN,SACA,SAOA,IAAA/4C,KAJA,QAAAmmT,EAAAl+S,EAAA2jC,OAAAyzC,aAAA,oBACAmkO,EAAAp7R,MAAA+9R,GAAAjlQ,QAGAsiQ,EAAAp7R,MACA06R,EAAA3uI,QAAA98F,QAAApvE,EAAA2jC,OAAA43Q,EAAAp7R,MAAApoB,GAAA6C,KAAA0oI,OAAAvrI,IAAAmmT,GACA3C,EAAAp7R,MAAApoB,GAAAqtI,UAAAm2K,EAAAp7R,MAAApoB,GAAAs2B,OAGA,OAGA3oB,IAAAvM,OAAAuvB,SACAvvB,OAAAuvB,OAAAhK,GAAAy/R,SAAA,WACA,IAAAh6P,EAAA5yC,MAAAlS,UAAArB,MAAAsmB,KAAA9jB,WACA,OAAAkoB,OAAAppB,MAAAoC,MAAA,WACAyiD,EAAA,eAAAy2P,EAAAz2P,EAAA,IAEA,iBAAAA,EAAA,IACAi3P,EAAA/7S,UAAA8kD,EAAA,IAAA5jD,MAAA,IAAA66S,EAAA97S,MAAA6kD,EAAAnmD,MAAA,IAFA,IAAAo9S,EAAA97S,KAAA6kD,EAAA,OAIA,GACA,GAGAwM,EAAAu7G,QAAAkvI,CAEA,EAEA,SAAA7iT,EAAAo4D,EAAA6pP,GAKAh7S,OAAAu7E,eAAApqB,EAAA,cACA7kD,OAAA,IAEA,IAAAsyS,GAAA,IAAA1kT,UAAAo1S,WAAA12S,QAAA,QACAimT,EAAA,CACAt8Q,SAAA,SAAAuhG,EAAAg7K,GACA,IAAAzB,EAAA,IAAAhrS,OAAA,WAAAysS,EAAA,YAEA,OAAAh7K,GAAAu5K,EAAApjT,KAAA6pI,EAAAlkG,UACA,EACAn6B,SAAA,SAAAq+H,EAAAg7K,GACAh7K,IAAAhkI,KAAAyiC,SAAAuhG,EAAAg7K,KACAh7K,EAAAlkG,WAAA,IAAAk/Q,EAEA,EACAp2S,YAAA,SAAAo7H,EAAAg7K,GACA,IAAAzB,EAAA,IAAAhrS,OAAA,WAAAysS,EAAA,YAEAh7K,MAAAlkG,UAAAkkG,EAAAlkG,UAAAjgB,QAAA09R,EAAA,KACA,EACAv1K,YAAA,SAAAhE,EAAAg7K,GAGAh/S,MAFAA,KAAAyiC,SAAAuhG,EAAAg7K,GAAA,gBAEA,SAAAh7K,EAAAg7K,EACA,EAIAr/S,OAAA,SAAAS,GASA,OARA6R,MAAAlS,UAAArB,MAAAsmB,KAAA9jB,UAAA,GAAAW,SAAA,SAAA8J,GACA,GAAAA,EACA,QAAA+K,KAAA/K,EACAvL,EAAAsW,GAAA/K,EAAA+K,EAGA,IAEAtW,CACA,EAIAi8C,OAAA,SAAA2nF,GACA,IAAAzqC,EAAAyqC,EAAAl4H,yBAAA,CAAApF,IAAA,EAAAD,KAAA,GACA8nS,EAAAr2S,SAAAqgB,gBACA2tC,EAAA44P,EAAAvQ,EAAAzgS,UAAAjU,OAAA2sF,YACArgC,EAAA24P,EAAAvQ,EAAAnoQ,WAAAvsC,OAAAysF,YAEA,OACA5/E,IAAA6yF,EAAA7yF,IAAAw/C,EAAAqoP,EAAAE,UACAhoS,KAAA8yF,EAAA9yF,KAAA0/C,EAAAooP,EAAAG,WAEA,EAIAvqS,SAAA,SAAA6/H,EAAA7S,GAGA,IAFA,IAAA1lE,EAAA,CAAA/kD,IAAA,EAAAD,KAAA,GAEAu9H,OAAA7S,GACA1lE,EAAA/kD,KAAAs9H,EAAA99E,UACAuF,EAAAhlD,MAAAu9H,EAAA79E,WACA69E,IAAA7yG,WAGA,OAAAs6B,CACA,EAIAqkB,QAAA,SAAAuZ,EAAA8wD,GACA,KAAA9wD,GAAA,CACA,GAAAA,IAAA8wD,EACA,OAAA9wD,EAEAA,IAAAl4D,UACA,CAEA,QACA,EAIAzgB,OAAA,SAAApY,EAAA2mT,GACA,IAAAvsR,OAAA,EACA4e,EAAAp5C,SAAAoqB,cAAAhqB,GAMA,IAAAo6B,KAJAusR,IACAA,EAAA,IAGAA,EACAA,EAAApsR,eAAAH,KACA,cAAAA,EACA4e,EAAAa,UAAA8sQ,EAAAvsR,GAEA4e,EAAAvhB,aAAA2C,EAAAusR,EAAAvsR,KAKA,OAAA4e,CACA,EACA9tB,SAAA,SAAApE,GACA,kBACA,IAAAwgE,EAAA5/E,KACAuyD,EAAArxD,UAEArH,OAAA8qB,YAAA,WACAvF,EAAAne,MAAA2+E,EAAArtB,EACA,KACA,CACA,GAGAlB,EAAAu7G,QAAAmyI,CAEA,EAEA,SAAA9lT,EAAAo4D,EAAA6pP,GAKAh7S,OAAAu7E,eAAApqB,EAAA,cACA7kD,OAAA,IA6EA6kD,EAAAu7G,QA3EA,CASAvpJ,WAAA,aAWA+sC,QAAA,EAUAgxF,OAAA,aAUAhrE,KAAA,aAUArnD,MAAA,aAiBAh1B,OAAA,SAKAmjT,QAAA,EAKA,EAEA,SAAAjkT,EAAAo4D,EAAA6pP,IAEA,SAAAt6R,GACA,IAAAs+R,EAAAt+R,EAAAsuN,YAmBAj2O,EAAAo4D,QAjBA,WACA,IACA,IAAAQ,EAAA,IAAAqtP,EAAA,OAAAviB,OAAA,CAAAwiB,IAAA,SACA,cAAAttP,EAAAnsD,MAAA,QAAAmsD,EAAA8qO,OAAAwiB,GACA,OAAA7mS,GACA,CACA,QACA,CAUA8mS,GAAAF,EAGA,oBAAAhnT,UAAA,mBAAAA,SAAAi3O,YAAA,SAAAzpO,EAAA+jC,GACA,IAAAnxB,EAAApgB,SAAAi3O,YAAA,eAMA,OALA1lM,EACAnxB,EAAA+mS,gBAAA35S,EAAA+jC,EAAA4lM,QAAA5lM,EAAA6lM,WAAA7lM,EAAAkzP,QAEArkR,EAAA+mS,gBAAA35S,GAAA,aAEA4S,CACA,EAGA,SAAA5S,EAAA+jC,GACA,IAAAnxB,EAAApgB,SAAAonT,oBAWA,OAVAhnS,EAAA5S,OACA+jC,GACAnxB,EAAA+2N,QAAArrI,QAAAv6D,EAAA4lM,SACA/2N,EAAAg3N,WAAAtrI,QAAAv6D,EAAA6lM,YACAh3N,EAAAqkR,OAAAlzP,EAAAkzP,SAEArkR,EAAA+2N,SAAA,EACA/2N,EAAAg3N,YAAA,EACAh3N,EAAAqkR,YAAA,GAEArkR,CACA,CAEA,GAAA0M,KAAAqsC,EAAA6pP,EAAA,GAEA,EAEA,SAAAjiT,EAAAo4D,GAEA,IAAA74C,EAGAA,EAAA,WACA,OAAAxY,IACA,CAFA,GAIA,IAEAwY,KAAA2rF,SAAA,cAAAA,KAAA,EAAAo7M,MAAA,OACA,OAAAjnS,GAEA,iBAAAze,SACA2e,EAAA3e,OACA,CAMAZ,EAAAo4D,QAAA74C,CAGA,GAEA,IACA/gB,OClqDA,iCACA,SACA,UACA,WACA,UACA,aACA,aACA,UACA,cACA,eACA,eACA,SAAA2B,EAAAkM,EAAAm5B,EAAAjpB,EAAArc,EAAA45C,EAAAlO,EAAAkP,EAAAc,GACA,aAEA,IAAA9Y,EAAA,CACAzgC,KAAA,CACAgkN,eAAA,EACAkgG,qBAAA,EACArvQ,MAAA,CACA8C,OAAAF,EAAAS,WAEAS,SAAA,CACAlvC,mBAAA,EACAmvC,YAAA,EACAO,YAAA,eAKA,SAAA8qK,EAAAp8L,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAA1E,KAAAoI,SAAA8R,EAAA1D,+BAAA9R,KAAA1E,KAAAoI,UACA1D,KAAAw/M,QAAA,EACAx/M,KAAAwM,MAAA,KACAxM,KAAAy/M,eAAA,EAEAz/M,KAAAuF,SACAI,SAAA,mBACAC,IAAA,CACA8vC,WAAA,aAIA11C,KAAA0/M,UAAAtmN,EAAA,cACAwM,IAAA,CACAoH,MAAA,OACAmB,OAAA,SAEAzS,GAAA,SAAAsE,KAAAy6M,aAAAl4M,KAAAvC,OACAioC,KAAA,WAPAjoC,KAOA1E,KAAAk8C,UACA3L,OAAAzyC,EAAA,aACAyN,SATA7G,KASAuF,UAEAvF,KAAA1E,KAAA2mD,UACAjiD,KAAA0/M,UAAAhpM,KAAA,eAEA1W,KAAAyK,sBAAAzK,KAAA0/M,UAAA,SAAA1/M,KAAAy/S,aAAAl9S,KAAAvC,OAEAA,KAAAqzC,QAAA,IAAAN,EAAA/yC,UAAA1E,KAAA60C,MAAAnwC,KAAA0/M,UACA,CAuTA,OArTAp6M,EAAA3F,OAAA4/M,EAAAj6M,GAEAi6M,EAAA3lL,SAAA,cAEA2lL,EAAAx/M,UAAA0/S,aAAA,WACA,GAAAz/S,KAAA0/M,UAAA5mK,MAAA,CACA,IAAA2pB,EAAAziE,KAAA0/M,UAAA5mK,MACA94C,KAAA4K,sBAAA,WAAA63D,GACAziE,KAAA4K,sBAAA,UAAA63D,EACA,MACAziE,KAAA4K,sBAAA,mBACA5K,KAAA4K,sBAAA,gBAGA5K,KAAAgM,yBACA,EAEAuzM,EAAAx/M,UAAAgH,UAAA,WACA,IAAAhG,EAAAf,KACAA,KAAAqzC,QAAAK,SACA1zC,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2C,OAAAsxC,SAAAhzC,MAAAjB,MACAA,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAo8C,YACA,SAAAp8C,GAAAyF,EAAA8+M,QAAAvkN,EAAA,IACA,SAAAmuC,GACA1oC,EAAAzF,KAAAq9C,WACAlP,EAAAkP,SAAA53C,EAAAzF,KAAAq9C,SAEA,IACA5E,EAAAh0C,UAAAw0C,2BAAAxzC,GAEAf,KAAA2M,gBACA3M,KAAA8/M,gBACA,EAEAP,EAAAx/M,UAAA0H,WAAA,WACA,IAAA1G,EAAAf,KACAA,KAAA0/S,eAAA,IAAA5D,SAAA97S,KAAA0/M,UAAA,GACA,CACAr8L,WAAA,WACA,IAAAs8R,EAAAvmT,EAAA4G,KAAA1E,KAAA8gT,SACA,iBAAAr7S,EAAAzF,KAAA+jC,QACAZ,EAAAK,aAAA/9B,EAAA,KAAA4+S,GAEAA,EAAAh6S,SAAA,iBACAg6S,EAAAh6S,SAAA,iBACA,EACAyqD,QAAA,EACAgxF,OAAAhoJ,EAAA+O,KACAiuE,KAAA,WACA,IAAAxwE,EAAA,GACAA,EAAArB,OAAAswC,EAAAF,qBAEA5zC,EAAAzF,KAAAskT,gBACAh6S,EAAA82I,UAAA37I,EAAAzF,KAAAskT,cAAA,MAEA,IAAAD,EAAAvmT,EAAA2H,EAAA2+S,eAAApkT,KAAA8gT,SAEAuD,EACA/5S,OAEAxM,EAAAS,QAAAsU,SAAA+K,SAAAymS,EAAA/5S,IAAA,QAAA+5S,EAAA9nS,eACA8nS,EAAA/5S,IAAA,CAAAc,IAAAwS,SAAAymS,EAAA/5S,IAAA,QAAA7E,EAAA2+M,UAAA7nM,cAAA8nS,EAAA9nS,cACA,EACA,OACA9W,EAAA8+S,aAAA,QAEAF,EAAA/5S,IAAA,CAAAc,IAAAwS,SAAAymS,EAAA/5S,IAAA,QACA,EACA,OACA7E,EAAA8+S,aAAA,UAEA9+S,EAAA++S,wBAAAH,GACA5+S,EAAAg/S,gBAAAp6S,SAAA,QACA5E,EAAAg/S,gBAAAn3S,YAAA,SACA7H,EAAAi/S,uBAAAr6S,SAAA,QACA5E,EAAAi/S,uBAAAp3S,YAAA,QACA,EACAmmB,MAAA,WACAhuB,EAAAg/S,gBAAAn3S,YAAA,QACA7H,EAAAg/S,gBAAAp6S,SAAA,SACA5E,EAAAi/S,uBAAAp3S,YAAA,QACA7H,EAAAi/S,uBAAAr6S,SAAA,QACA,EACA5L,OAAA,SACAmjT,QAAA,IAEAl9S,KAAAigT,YAAAjgT,KAAAuF,SAAAjE,KAAA,gBACAtB,KAAAqjQ,mBAAA,GAEArjQ,KAAA1E,KAAAkkT,qBAAAx/S,KAAA1E,KAAAgkN,eACAlmN,EAAA4G,KAAA0/S,eAAApkT,KAAA8gT,SAAAz2S,SAAA,qBAEA3F,KAAAyK,sBAAAzK,KAAA2C,OAAAmF,eAAA,SAAA9H,KAAAkgT,aAAA39S,KAAAvC,OAEAA,KAAAyK,sBAAArR,EAAAS,QAAA,qBACA,IAAA8lT,EAAAvmT,EAAA2H,EAAA2+S,eAAApkT,KAAA8gT,SACA11S,EAAAi5S,EAAA/5S,IAAA,OACAxM,EAAAS,QAAAsU,SAAA/U,EAAA2H,EAAA2+M,UAAA,GAAAvuL,YAAAkrB,SAAA31C,IAAAtN,EAAA2H,EAAA2+M,UAAA,GAAAvuL,YAAAhjB,SAAAwxS,EAAA9nS,eAAA,WAAA9W,EAAA8+S,cACA9+S,EAAA8+S,aAAA,MACAn5S,EAAAwS,SAAAymS,EAAA/5S,IAAA,QAAA7E,EAAA2+M,UAAA7nM,cAAA8nS,EAAA9nS,cAAA,MACAze,EAAAS,QAAAsU,SAAA/U,EAAA2H,EAAA2+M,UAAA,GAAAvuL,YAAAkrB,SAAA31C,IAAAtN,EAAA2H,EAAA2+M,UAAA,GAAAvuL,YAAAhjB,SAAAwxS,EAAA9nS,eAAA,QAAA9W,EAAA8+S,eACA9+S,EAAA8+S,aAAA,SACAn5S,EAAAtN,EAAA2H,EAAA2+M,UAAA,GAAAvuL,YAAAkrB,SAAA31C,IAAAtN,EAAA2H,EAAA2+M,UAAA,GAAAvuL,YAAAhjB,UAEApN,EAAA++S,wBAAAH,GACAA,EAAA/5S,IAAA,CACArB,OAAA,KACAJ,SAAA,WACAsC,KAAArN,EAAA2H,EAAA2+M,UAAA,GAAAvuL,YAAAkrB,SAAA51C,KACAC,OAEA,IAEA+3B,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAigT,aACAjgT,KAAAmgT,qBAEAngT,KAAAogT,WACA,EAEA7gG,EAAAx/M,UAAA+/S,wBAAA,SAAAH,GACA,IAAAljQ,EAAAkjQ,EAAA/nS,aAAA+nS,EAAAjnS,aACAinS,EAAA/5S,IAAA,CACAoH,MAAAkM,SAAA9f,EAAA4G,KAAA0/M,UAAA,GAAAvuL,YAAAvrB,IAAA,UAAA62C,EAAA,MAEA,EAEA8iK,EAAAx/M,UAAAqgT,UAAA,WACA,IAAAr/S,EAAAf,KACAA,KAAAggT,uBAAA5mT,EAAA,UACAuM,SAAA,2BACAA,SAAA,SACAkB,SAAA7G,KAAAigT,aAEAjgT,KAAA+/S,gBAAA3mT,EAAA,UACAuM,SAAA,mBACAA,SAAA,SACAjK,GAAA,kBAAA4c,GACAA,EAAAgzC,kBACAvqD,EAAA2+S,eAAAn3I,OAGAxnK,EAAA2+S,eAAA3wR,QAFAhuB,EAAA2+S,eAAAtpO,MAIA,IACAvvE,SAAA7G,KAAAggT,uBACA,EAEAzgG,EAAAx/M,UAAAmgT,aAAA,WACAlgT,KAAA0/S,eAAArD,MAAAttR,MAAA9tB,MAAAjB,KAAA0/S,eACA,EAEAngG,EAAAx/M,UAAA06M,aAAA,WACA,IAAA3hK,EAAA94C,KAAA0/M,UAAA5mK,MACA94C,KAAAwM,MAAA,KAAAssC,EAAA,KAAAA,EAEAra,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAigT,aACAjgT,KAAAogT,YACApgT,KAAAmgT,qBAEAngT,KAAAqjQ,mBAAArjQ,KAAAwM,MACA,EAEA+yM,EAAAx/M,UAAAggN,gBAAA,WACA,OAAA3mN,EAAA,cAAAoT,MAAA,GAAAquB,KAAA76B,KAAA1E,KAAA0kN,eAAA,QACAp6M,IAAA,CAAAiH,QAAA,QACA,EAEA0yM,EAAAx/M,UAAA+/M,eAAA,WACA9/M,KAAA1E,KAAAgkN,eACAt/M,KAAA0/M,UAAA7zK,OAAA7rC,KAAA+/M,mBAEA//M,KAAA1E,KAAA2kN,WACAjgN,KAAA0/M,UAAAh9K,SAAA,UAAA3pC,SACAiH,KAAA0/M,UAAA7zK,OAAA1yC,EAAA+N,IAAAlH,KAAA1E,KAAA2kN,SAAAznN,MAAA,gBAAA2Z,GACA,OAAA/Y,EAAA,cACAoT,MAAA2F,EACA0oB,KAAA1oB,GAEA,KACA,EAEAotM,EAAAx/M,UAAA8/M,QAAA,SAAAvkN,GACA0E,KAAAw/M,QAAA,EAEAx/M,KAAA0/M,UACAp+M,KAAA,UACAvI,SACAyvD,MAEAxoD,KAAA1E,KAAAgkN,eACAt/M,KAAA0/M,UAAA7zK,OAAA7rC,KAAA+/M,mBAEA,IAAAh/M,EAAAf,KACA5G,EAAAgJ,KAAA9G,EAAA68B,SAAA,SAAAvnB,EAAA8V,GACA,IAAAoyB,EAAApyB,EAAA3lB,EAAAzF,KAAA4kN,mBAAA,MACAn/M,EAAA0+M,cAAA,iBAAA3mK,EACA1/C,EAAA,cACAoT,MAAAssC,EACAje,KAAAgK,EAAAgO,MAAA9xC,EAAAq/M,2BAAA15L,MAEA7f,SAAA9F,EAAA2+M,UACA,IAEA1/M,KAAA0/S,eAAA/mK,UAEA34I,KAAAigT,YAAAjgT,KAAAuF,SAAAjE,KAAA,gBAEAtB,KAAA1E,KAAAkkT,qBAAAx/S,KAAA1E,KAAAgkN,eACAlmN,EAAA4G,KAAA0/S,eAAApkT,KAAA8gT,SAAAz2S,SAAA,qBAEA84B,EAAAK,aAAA9+B,KAAA,KAAAA,KAAAigT,aACAjgT,KAAAogT,YACApgT,KAAAmgT,qBAEAngT,KAAAwM,MACAxM,KAAA4mC,SAAA,CAAAp6B,MAAAxM,KAAAwM,QACAxM,KAAA1E,KAAAgkN,cACAt/M,KAAAqjQ,mBAAA,GAEArjQ,KAAAqgN,iBAEA,EAEAd,EAAAx/M,UAAAqgN,2BAAA,SAAA15L,GAEA,OAAAA,EADA1mB,KAAAsgN,yBAAA55L,GAEA,EAEA64L,EAAAx/M,UAAAugN,yBAAA,SAAA55L,GACA,IAAA/W,EAAAzP,OAAAyP,KAAA+W,GACA,WAAA/W,EAAAjX,OACAiX,EAAA,IAEA,IAAAA,EAAA7W,QAAAkH,KAAA1E,KAAAilN,sBACAvgN,KAAA1E,KAAAilN,qBAEA,OAAA5wM,EAAA,GAAAo0D,cACAp0D,EAAA,GAEAA,EAAA,EACA,EAEA4vM,EAAAx/M,UAAA45C,MAAA,WACA35C,KAAA0/M,UAAAx0M,QAAA,QACA,EAEAq0M,EAAAx/M,UAAAwM,SAAA,WACA,OAAAvM,KAAAy/M,eAAA,OAAAz/M,KAAAwM,MACA0M,SAAAlZ,KAAAwM,YACApG,IAAApG,KAAAwM,MACA,KACAxM,KAAAwM,KACA,EAEA+yM,EAAAx/M,UAAAo3C,WAAA,WACAn3C,KAAA1E,KAAAgkN,gBACAt/M,KAAAwM,MAAA,MAEAxM,KAAAqgN,kBACArgN,KAAAgM,yBACA,EAEAuzM,EAAAx/M,UAAAsgN,gBAAA,WACArgN,KAAA0/S,eAAAzhK,OAAA,GACAj+I,KAAAy6M,cACA,EAEA8E,EAAAx/M,UAAA6mC,SAAA,SAAA8M,GACA1zC,KAAAw/M,OAGA,OAAA9rK,EAAAlnC,YAAApG,IAAAstC,EAAAlnC,MACArT,EAAAmI,KAAAtB,KAAA0/M,UAAAh9K,YAAA,SAAAuQ,GACA,OAAAA,EAAAzmC,QAAAknC,EAAAlnC,MAAAiE,UACA,KAGAzQ,KAAAwM,MAAAknC,EAAAlnC,MACAxM,KAAA0/S,eAAAzhK,OAAAvqG,EAAAlnC,MAAAiE,YACAzQ,KAAAgM,4BAEAhM,KAAA4K,sBAAA,gBAAA8oC,EAAAlnC,OACAxM,KAAA8K,eAAA,kBACA21M,MAAA,6JAGAzgN,KAAAm3C,cAGAn3C,KAAAm3C,aApBAn3C,KAAAwM,MAAAknC,EAAAlnC,MAuBAxM,KAAAgM,yBACA,EAEAuzM,EAAAx/M,UAAAogT,mBAAA,WACAngT,KAAAigT,YAAAr6S,IAAA,6BAAA5F,KAAAigT,YAAAr6S,IAAA,qBACA,EAEA25M,EAAAx/M,UAAAsjQ,kBAAA,SAAA56P,GACAA,EACAzI,KAAAigT,YAAAt6S,SAAA,iCAEA3F,KAAAigT,YAAAr3S,YAAA,gCAEA,EAEA22M,CACA,IACA9nN,OCrXA,6CACA,SACA,UACA,aACA,SAAA2B,EAAAkM,EAAAm5B,GACA,aAEA,IAAA1C,EAAA,CACAzgC,KAAA,CACAy7I,KAAA,CACA,CAAAvqI,MAAA,EAAApD,KAAA,OAEA41K,QAAA,CACA,CAAAxyK,MAAA,EAAApD,KAAA,OAEA22N,iBAAA,CAAAvzN,MAAA,EAAApD,KAAA,MACA42N,oBAAA,CAAAxzN,MAAA,EAAApD,KAAA,MACAmF,2BAAA,EACAE,iBAAA,EACAH,kBAAA,IAIA,SAAA+xS,EAAAl9R,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAnjB,KAAAkgO,aAAA,GAEAlgO,KAAAsgT,wBAAA,GACAtgT,KAAAugT,mBAEA9hR,EAAAK,aAAA9+B,MAEAA,KAAAuF,SAAAI,SAAA,aACA,CAwkBA,OAtkBAL,EAAA3F,OAAA0gT,EAAA/6S,GAEA+6S,EAAAzmR,SAAA,oBAEAymR,EAAAtgT,UAAAgH,UAAA,WAIA,GAHA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,OAGA,aAAAA,KAAA6F,OAAAvK,KAAAoK,MACA,eAAA1F,KAAA6F,OAAAvK,KAAAoK,MACA1F,KAAA6F,OAAAvK,KAAAolQ,eACA,IAAA1gQ,KAAA6F,OAAAV,WAAAzM,SACAsH,KAAA1E,KAAAmT,iBAAAzO,KAAA1E,KAAAgT,kBAAA,CACA,IAAA2kS,EAAA,CACA9uS,SAAA,YAGA+uS,EAAA,CACA,EAEAlzS,KAAA1E,KAAAmT,kBACAwkS,EAAAjmS,MAAA,OACAkmS,EAAAlmS,MAAA,QAGAhN,KAAA1E,KAAAgT,mBACA2kS,EAAA9kS,OAAA,OACA+kS,EAAA/kS,OAAA,QAGAnO,KAAAuF,SAAAK,IAAAqtS,GACAjzS,KAAA6F,OAAAN,SAAAK,IAAAstS,EACA,MACAlzS,KAAA2M,gBAGA3M,KAAAogO,aACA,EAEAigF,EAAAtgT,UAAA8H,OAAA,SAAAtC,GACA,OAAAvF,KAAA8G,qBAAAvB,EACA,EAEA86S,EAAAtgT,UAAA0H,WAAA,WACAzH,KAAAsgO,oBACAtgO,KAAAwgT,yBACAxgT,KAAA1E,KAAA2J,UACAjF,KAAAmzS,gBAEA,EAEAkN,EAAAtgT,UAAAozS,eAAA,WACAnzS,KAAAuF,SAAAK,IAAA,CACAsH,WAAA,OACAC,YAAA,SAEAnN,KAAA1E,KAAAmT,iBACAzO,KAAAuF,SAAAK,IAAA,CACAoH,MAAA,eAGA,EAEAqzS,EAAAtgT,UAAAqgO,YAAA,WACA,IAAAr/N,EAAAf,KACAA,KAAAkgO,aAAA,GAEA/mO,EAAAiJ,KAAArB,EAAAzF,KAAAy7I,MAAA,SAAA36F,EAAA+1J,GACA,IAAA2uB,EAAA,GAEA3nO,EAAAiJ,KAAArB,EAAAzF,KAAA0jL,SAAA,SAAAG,EAAAswB,GACA,IAAAgxB,EAAA1/N,EAAA0/S,SAAAtuG,EAAA1C,GAEAqxB,EAAAjgO,KAAA4/N,EACA,IAEA1/N,EAAAm/N,aAAAr/N,KAAAigO,EACA,GACA,EAEAu/E,EAAAtgT,UAAA0gT,SAAA,SAAAhoT,EAAA07B,GACA,IAAA88K,EAAA73M,EAAA,UACAuM,SAAA,qBACAC,IAAA,CACAc,IAAA,GACAD,KAAA,GACA0H,OAAA,OAAAnO,KAAA1E,KAAAy7I,KAAAt+I,GAAA2Q,KAAApJ,KAAA1E,KAAAy7I,KAAAt+I,GAAA+T,MAAA,QACAQ,MAAA,OAAAhN,KAAA1E,KAAA0jL,QAAA7qJ,GAAA/qB,KAAApJ,KAAA1E,KAAA0jL,QAAA7qJ,GAAA3nB,MAAA,UAEA3F,SAAA7G,KAAAuF,UAEAm7S,OACAt6S,IAAApG,KAAA1E,KAAAoL,KACA,OAAA1G,KAAA1E,KAAAoL,UACAN,IAAApG,KAAA1E,KAAAsL,QACA,OAAA5G,KAAA1E,KAAAsL,OAEA+5S,OACAv6S,IAAApG,KAAA1E,KAAAmL,MACA,OAAAzG,KAAA1E,KAAAmL,WACAL,IAAApG,KAAA1E,KAAAqL,OACA,OAAA3G,KAAA1E,KAAAqL,MAiCA,MA/BA,SAAA3G,KAAA1E,KAAA0jL,QAAA7qJ,GAAA/qB,MAAA,OAAApJ,KAAA1E,KAAA0jL,QAAA7qJ,GAAA/qB,MACA,SAAApJ,KAAA1E,KAAAy7I,KAAAt+I,GAAA2Q,MAAA,OAAApJ,KAAA1E,KAAAy7I,KAAAt+I,GAAA2Q,MACApJ,KAAA1E,KAAAgT,kBACAtO,KAAA1E,KAAAmT,kBACAiyS,IACAC,EAMA,SAAA3gT,KAAA1E,KAAAy7I,KAAAt+I,GAAA2Q,MAAA,OAAApJ,KAAA1E,KAAAy7I,KAAAt+I,GAAA2Q,MACApJ,KAAA1E,KAAAgT,mBACAoyS,GACA,SAAA1gT,KAAA1E,KAAA0jL,QAAA7qJ,GAAA/qB,MAAA,OAAApJ,KAAA1E,KAAA0jL,QAAA7qJ,GAAA/qB,OAAApJ,KAAA1E,KAAAmT,gBAMA,SAAAzO,KAAA1E,KAAA0jL,QAAA7qJ,GAAA/qB,MAAA,OAAApJ,KAAA1E,KAAA0jL,QAAA7qJ,GAAA/qB,MACApJ,KAAA1E,KAAAmT,kBACAkyS,GACA,SAAA3gT,KAAA1E,KAAAy7I,KAAAt+I,GAAA2Q,MAAA,OAAApJ,KAAA1E,KAAAy7I,KAAAt+I,GAAA2Q,OAAApJ,KAAA1E,KAAAgT,kBACA2iM,EACArrM,IAAA,CACAqxE,UAAA,SACAD,UAAA,SAZAi6H,EACArrM,IAAA,CACAqxE,UAAA,OACAD,UAAA,WAZAi6H,EACArrM,IAAA,CACAqxE,UAAA,OACAD,UAAA,SAsBAi6H,CACA,EAEAovG,EAAAtgT,UAAA4H,4BAAA,SAAA/F,GACA,IAAAyhD,EAAArjD,KAAA4gT,kBAAAh/S,GACA,OAAAA,EAAAiG,OAAAw7C,EACA,EAEAg9P,EAAAtgT,UAAA6gT,kBAAA,SAAAh/S,GACA,IAAA2+N,EAAAvgO,KAAAwgO,uBAAA5+N,GACA6+N,EAAAF,EAAAG,YACAr9K,EAAAo9K,EAAAn/N,KAAA,iBACA,IAAA+hD,EAAA3qD,SACA2qD,EAAAjqD,EAAA,sCACAwM,IAAA,CACAzB,SAAA,WACA6I,MAAA,OACAmB,OAAA,UAEAtH,SAAA45N,GAGA,IAAAhoO,EAAA8nO,EAAApuB,SACAh+K,EAAAosM,EAAA9wB,YAWA,OATAzvM,KAAA6gT,aAAApoT,GAAA07B,GAAAtzB,KAAAe,GAEAA,EAAAtG,KAAAyJ,oBACA/E,KAAA8gT,yBAAAroT,GAAA07B,IAAA,GAGAvyB,EAAAmI,YAAA/J,KAAA+gT,kBAAAx+S,KAAAvC,KAAAvH,EAAA07B,GACAvyB,EAAAkI,WAAA9J,KAAAghT,kBAAAz+S,KAAAvC,KAAAvH,EAAA07B,GAEA/6B,EAAAiqD,EAAA,GACA,EAEAg9P,EAAAtgT,UAAAkhT,yBAAA,SAAAr/S,GACA,IAAA2+N,EAAAvgO,KAAAwgO,uBAAA5+N,GAEAyhD,EADAk9K,EAAAG,YACAh+L,SAAA,iBACA,MAAA2gB,EAAA3qD,OAAA,IAEA,YAAAsH,KAAA1E,KAAA0jL,QAAAuhD,EAAA9wB,aAAArmM,KACA,OAAAxH,EAAAtG,KAAAmL,MAAA7E,EAAAtG,KAAAmL,MAAA,UAAA7E,EAAAtG,KAAAqL,OAAA/E,EAAAtG,KAAAqL,OAAA,GACAvN,EAAAiqD,EAAAx9C,UAAAD,IAAA,CACA67B,YAAA7/B,EAAAtG,KAAAmL,KAAA,KACAi7B,aAAA9/B,EAAAtG,KAAAqL,MAAA,OAGA/E,EAAA2D,SAAAK,IAAA,CACAoH,MAAA,UAEA,OAAApL,EAAAtG,KAAAmL,MAAA7E,EAAAtG,KAAAmL,MAAA,EACArN,EAAAiqD,EAAAx9C,UAAAD,IAAA,CACA67B,YAAA7/B,EAAAtG,KAAAmL,KAAA,OAEA,OAAA7E,EAAAtG,KAAAqL,OAAA/E,EAAAtG,KAAAqL,OAAA,EACAvN,EAAAiqD,EAAAx9C,UAAAD,IAAA,CACA87B,aAAA9/B,EAAAtG,KAAAqL,MAAA,QAEA/E,EAAAtG,KAAAmT,iBAAA7M,EAAAtG,KAAAkT,YACA5M,EAAA2D,SAAAK,IAAA,CACAoH,MAAA,SAIA,OAAApL,EAAAtG,KAAAoL,KAAA9E,EAAAtG,KAAAoL,KAAA,UAAA9E,EAAAtG,KAAAsL,QAAAhF,EAAAtG,KAAAsL,QAAA,GACAy8C,EAAAz9C,IAAA,CACAk4I,UAAA,aACAzwI,WAAAzL,EAAAtG,KAAAoL,IAAA,KACA4G,cAAA1L,EAAAtG,KAAAsL,OAAA,OAGAhF,EAAA2D,SAAAK,IAAA,CACAuI,OAAA,UAEA,OAAAvM,EAAAtG,KAAAoL,KAAA9E,EAAAtG,KAAAoL,KAAA,EACA28C,EAAAz9C,IAAA,CACAk4I,UAAA,aACAzwI,WAAAzL,EAAAtG,KAAAoL,IAAA,OAEA,OAAA9E,EAAAtG,KAAAsL,QAAAhF,EAAAtG,KAAAsL,QAAA,GACAy8C,EAAAz9C,IAAA,CACAk4I,UAAA,aACAxwI,cAAA1L,EAAAtG,KAAAsL,OAAA,SAIA,OAAAhF,EAAAtG,KAAAmL,MAAA7E,EAAAtG,KAAAmL,MAAA,WAAA7E,EAAAtG,KAAAqL,OAAA/E,EAAAtG,KAAAqL,OAAA,GACAvN,EAAAiqD,EAAAx9C,UAAAD,IAAA,CACAsH,WAAA,WAIA,OAAAtL,EAAAtG,KAAAoL,KAAA9E,EAAAtG,KAAAoL,KAAA,WAAA9E,EAAAtG,KAAAsL,QAAAhF,EAAAtG,KAAAsL,QAAA,GACAxN,EAAAiqD,EAAAx9C,UAAAD,IAAA,CACAguE,UAAA,SAIAhyE,EAAAtG,KAAA2J,UACA7L,EAAAiqD,EAAAx9C,UAAAD,IAAA,CACAguE,UAAA,OACAC,aAAA,cAKAztE,IAAAxE,EAAAtG,KAAAmL,MACA,OAAA7E,EAAAtG,KAAAmL,WACAL,IAAAxE,EAAAtG,KAAAqL,OACA,OAAA/E,EAAAtG,KAAAqL,OAGAvN,EAAAiqD,EAAAx9C,UAAAD,IAAA,CACAoH,MAAA,gBAIA,YAAAhN,KAAA1E,KAAAy7I,KAAAwpF,EAAApuB,UAAA/oM,KACA,OAAAxH,EAAAtG,KAAAoL,KAAA9E,EAAAtG,KAAAoL,KAAA,UAAA9E,EAAAtG,KAAAsL,QAAAhF,EAAAtG,KAAAsL,QAAA,GACAxN,EAAAiqD,EAAAx9C,UAAAD,IAAA,CACAyH,WAAAzL,EAAAtG,KAAAoL,IAAA,KACA4G,cAAA1L,EAAAtG,KAAAsL,OAAA,OAIAhF,EAAA2D,SAAAK,IAAA,CACAuI,OAAA,UAEA,OAAAvM,EAAAtG,KAAAoL,KAAA9E,EAAAtG,KAAAoL,KAAA,EACAtN,EAAAiqD,EAAAx9C,UAAAD,IAAA,CACAyH,WAAAzL,EAAAtG,KAAAoL,IAAA,OAEA,OAAA9E,EAAAtG,KAAAsL,QAAAhF,EAAAtG,KAAAsL,QAAA,EACAxN,EAAAiqD,EAAAx9C,UAAAD,IAAA,CACA0H,cAAA1L,EAAAtG,KAAAsL,OAAA,QAEAhF,EAAAtG,KAAAgT,kBAAA1M,EAAAtG,KAAA+S,aACAzM,EAAA2D,SAAAK,IAAA,CACAuI,OAAA,SAIA,OAAAvM,EAAAtG,KAAAmL,MAAA7E,EAAAtG,KAAAmL,MAAA,UAAA7E,EAAAtG,KAAAqL,OAAA/E,EAAAtG,KAAAqL,OAAA,GACA08C,EAAAz9C,IAAA,CACAk4I,UAAA,aACAr8G,YAAA7/B,EAAAtG,KAAAmL,KAAA,KACAi7B,aAAA9/B,EAAAtG,KAAAqL,MAAA,OAGA/E,EAAA2D,SAAAK,IAAA,CACAoH,MAAA,UAEA,OAAApL,EAAAtG,KAAAmL,MAAA7E,EAAAtG,KAAAmL,MAAA,EACA48C,EAAAz9C,IAAA,CACAk4I,UAAA,aACAr8G,YAAA7/B,EAAAtG,KAAAmL,KAAA,OAEA,OAAA7E,EAAAtG,KAAAqL,OAAA/E,EAAAtG,KAAAqL,OAAA,GACA08C,EAAAz9C,IAAA,CACAk4I,UAAA,aACAp8G,aAAA9/B,EAAAtG,KAAAqL,MAAA,SAIA,OAAA/E,EAAAtG,KAAAoL,KAAA9E,EAAAtG,KAAAoL,KAAA,WAAA9E,EAAAtG,KAAAsL,QAAAhF,EAAAtG,KAAAsL,QAAA,GACAxN,EAAAiqD,EAAAx9C,UAAAD,IAAA,CACAguE,UAAA,WAIA,OAAAhyE,EAAAtG,KAAAmL,MAAA7E,EAAAtG,KAAAmL,MAAA,WAAA7E,EAAAtG,KAAAqL,OAAA/E,EAAAtG,KAAAqL,OAAA,GACAvN,EAAAiqD,EAAAx9C,UAAAD,IAAA,CACAsH,WAAA,SAIAtL,EAAAtG,KAAA2J,UACA7L,EAAAiqD,EAAAx9C,UAAAD,IAAA,CACAsH,WAAA,OACAC,YAAA,cAKA/G,IAAAxE,EAAAtG,KAAAoL,KACA,OAAA9E,EAAAtG,KAAAoL,UACAN,IAAAxE,EAAAtG,KAAAsL,QACA,OAAAhF,EAAAtG,KAAAsL,QAGAxN,EAAAiqD,EAAAx9C,UAAAD,IAAA,CACAuI,OAAA,eAxJA,CA4JA,EAEAkyS,EAAAtgT,UAAAyN,sBAAA,SAAA5D,GACAtE,EAAAvF,UAAAyN,sBAAAwX,KAAAhlB,KAAA4J,GACA,IAAA22N,EAAAvgO,KAAAwgO,uBAAA52N,GACA,YAAA5J,KAAA1E,KAAA0jL,QAAAuhD,EAAA9wB,aAAArmM,MAAA,SAAApJ,KAAA1E,KAAAy7I,KAAAwpF,EAAApuB,UAAA/oM,KAAA,CACAQ,EAAAq3O,0BACAr3O,EAAAq3O,2BACAr3O,EAAArE,SAAAK,IAAA,CACAzB,SAAA,WACA4yC,MAAA,KAEA,IAAA9pC,EAAArD,EAAAtO,KAAA2R,OACAA,IACAA,EAAAvG,IAAAkD,EAAArE,SAAAK,IAAA,CAAAguE,UAAA3mE,EAAAvG,IAAA,OAAAkD,EAAArE,SAAAK,IAAA,CAAAguE,UAAA,KACA3mE,EAAAtG,MAAAiD,EAAArE,SAAAK,IAAA,CAAAuH,YAAAF,EAAAtG,MAAA,OAAAiD,EAAArE,SAAAK,IAAA,CAAAuH,YAAA,KACAF,EAAArG,OAAAgD,EAAArE,SAAAK,IAAA,CAAAiuE,aAAA5mE,EAAArG,OAAA,OAAAgD,EAAArE,SAAAK,IAAA,CAAAiuE,aAAA,KACA5mE,EAAAxG,KAAAmD,EAAArE,SAAAK,IAAA,CAAAsH,WAAAD,EAAAxG,KAAA,OAAAmD,EAAArE,SAAAK,IAAA,CAAAsH,WAAA,KAEA,CACAlN,KAAAihT,yBAAAr3S,EACA,EAEAy2S,EAAAtgT,UAAAygO,uBAAA,SAAA5+N,GACA,IAAAuwM,EAAAp9L,KAAAoiB,IAAApiB,KAAAsd,KAAAzwB,EAAAtG,KAAAslO,gBAAA,KAAA5gO,KAAA1E,KAAAy7I,KAAAr+I,OAAA,MACA+2M,EAAA16L,KAAAoiB,IAAApiB,KAAAsd,KAAAzwB,EAAAtG,KAAAulO,mBAAA,KAAA7gO,KAAA1E,KAAA0jL,QAAAtmL,OAAA,MACA,GAAAy5M,IAAAnyM,KAAAkgO,aAAAxnO,OAAA,CACA,IAAAooO,EAAA,GACA//N,EAAAf,KACA7G,EAAAiJ,KAAArB,EAAAzF,KAAA0jL,SAAA,SAAAG,EAAA+hI,GACA,IAAAzgF,EAAA1/N,EAAA0/S,SACAtuG,EACA+uG,GACApgF,EAAAjgO,KAAA4/N,EACA,IACAzgO,KAAAkgO,aAAAr/N,KAAAigO,EACA,CACA,OAAAJ,YAAA1gO,KAAAkgO,aAAA/tB,GAAA1C,GAAA0C,WAAA1C,cACA,EAEA4wG,EAAAtgT,UAAAohT,kBAAA,SAAAv/S,EAAAw/S,GACA,QAAAxwS,KAAAhP,EAAAy/S,uBACA,QAAA5oT,EAAA,EAAAA,EAAAmJ,EAAAy/S,uBAAAzwS,GAAAlY,OAAAD,IAAA,CACA,IAAA6oT,EAAA1/S,EAAAy/S,uBAAAzwS,GAAAnY,GACA,GAAA6oT,EAAArhT,YAAAshT,qBAAAH,EACA,OAAAE,EACA,sBAAAA,EAAArhT,YAAAshT,mBACA,QAAAptR,EAAA,EAAAA,EAAAmtR,EAAAE,QAAA9oT,OAAAy7B,IAAA,CACA,IAAAstR,EAAAH,EAAAE,QAAArtR,GACA,GAAAstR,EAAAxhT,YAAAshT,qBAAAH,EACA,OAAAK,CAEA,CAEA,CAEA,WACA,EAEApB,EAAAtgT,UAAAugO,kBAAA,YACAtgO,KAAA1E,KAAAgT,kBAAAtO,KAAA1E,KAAAmT,mBACAzO,KAAA1E,KAAAiT,2BAAA,GAGA,IAAAmzS,EAAA1hT,KAAA2hT,uBAEA3hT,KAAAuF,SAAAK,IAAA,CACAiH,QAAAhT,OAAA3B,SAAAmqC,aAAA,kBACAkwM,oBAAAmvE,EAAAnvE,oBACAqvE,iBAAAF,EAAAE,iBACAp/E,OAAAxiO,KAAA1E,KAAAykO,iBAAAvzN,MAAAxM,KAAA1E,KAAAykO,iBAAA32N,KACAq5N,UAAAziO,KAAA1E,KAAA0kO,oBAAAxzN,MAAAxM,KAAA1E,KAAA0kO,oBAAA52N,OAGApJ,KAAA1E,KAAAgT,iBACAtO,KAAAuF,SAAAK,IAAA,CACAuI,OAAA,KAEA,KAAAnO,KAAAuF,SAAAK,IAAA,WACA5F,KAAAuF,SAAAK,IAAA,CACAuI,OAAAnO,KAAA1E,KAAAgJ,KAAAF,EAAA,OAIApE,KAAA1E,KAAAmT,gBACAzO,KAAAuF,SAAAK,IAAA,CACAoH,MAAA,KAEA,KAAAhN,KAAAuF,SAAAK,IAAA,UACA5F,KAAAuF,SAAAK,IAAA,CACAoH,MAAAhN,KAAA1E,KAAAgJ,KAAAD,EAAA,MAGA,EAEAg8S,EAAAtgT,UAAA4hT,qBAAA,WAUA,IATA,IAAAj6Q,EAAA,SAAAntB,EAAAw7E,GACA,WAAAx7E,EAAAw7E,EAAAx7E,EAAA,IAAAw7E,CACA,EAEAh1F,EAAAf,KAEA4hT,EAAA,GACArvE,EAAA,GAEA95O,EAAA,EAAAA,EAAAuH,KAAA8gT,yBAAApoT,OAAAD,IACA,GAAAuH,KAAA6hT,QAAA7hT,KAAA8gT,yBAAAroT,IACA,OAAAsI,EAAAzF,KAAAy7I,KAAAt+I,GAAA2Q,MACA,WACAw4S,EAAAl6Q,EAAAk6Q,EAAA,QACA,MAEA,SACAA,EAAAl6Q,EAAAk6Q,EAAA7gT,EAAAzF,KAAAy7I,KAAAt+I,GAAA+T,MAAA,MACA,MAEA,SACAo1S,EAAAl6Q,EAAAk6Q,EAAA7gT,EAAAzF,KAAAy7I,KAAAt+I,GAAA+T,MAAA,MASA,QAAA2nB,EAAA,EAAAA,EAAAn0B,KAAA1E,KAAA0jL,QAAAtmL,OAAAy7B,IAAA,CACA,IAAA2tR,EAAA/gT,EAAA+/S,yBAAA55S,KAAA,SAAAm+C,GAAA,OAAAA,EAAAlxB,EAAA,IACA,GAAAn0B,KAAA6hT,QAAAC,GACA,OAAA/gT,EAAAzF,KAAA0jL,QAAA7qJ,GAAA/qB,MACA,WACAmpO,EAAA7qM,EAAA6qM,EAAA,QACA,MAEA,SACAA,EAAA7qM,EAAA6qM,EAAAxxO,EAAAzF,KAAA0jL,QAAA7qJ,GAAA3nB,MAAA,MACA,MAEA,SACA+lO,EAAA7qM,EAAA6qM,EAAAxxO,EAAAzF,KAAA0jL,QAAA7qJ,GAAA3nB,MAAA,MAOA,CAEA,OACAo1S,mBACArvE,sBAEA,EAEA8tE,EAAAtgT,UAAAgiT,WAAA,SAAA/+J,GACA,OAAA7pJ,EAAAyiD,MAAAonG,GAAA,SAAAtwH,GAAA,OAAAA,CAAA,GACA,EAEA2tR,EAAAtgT,UAAA8hT,QAAA,SAAA7+J,GACA,OAAAhjJ,KAAA+hT,WAAA/+J,EACA,EAEAq9J,EAAAtgT,UAAAghT,kBAAA,SAAAtoT,EAAA07B,GACA,GAAAh7B,EAAAoO,IAAAvH,KAAA6gT,aAAApoT,GAAA07B,IAAA,SAAA9b,GACA,OAAAA,EAAA5T,QACA,KACAzE,KAAA8gT,yBAAAroT,GAAA07B,IAAA,EAEA,IAAA2tR,EAAA9hT,KAAA8gT,yBAAA55S,KAAA,SAAAm+C,GAAA,OAAAA,EAAAlxB,EAAA,IACA,GAAAn0B,KAAA+hT,WAAA/hT,KAAA8gT,yBAAAroT,IAAA,CACA,QAAA0jH,EAAA,EAAAA,EAAAn8G,KAAA8gT,yBAAAroT,GAAAC,OAAAyjH,IACAn8G,KAAAkgO,aAAAznO,GAAA0jH,GAAA3yG,OAEAxJ,KAAAuF,SAAAK,IAAA,qBAAA5F,KAAA2hT,uBAAAC,iBACA,CAEA,GAAA5hT,KAAA+hT,WAAAD,GAAA,CACA,IAAA3lM,EAAA,EAAAA,EAAA2lM,EAAAppT,OAAAyjH,IACAn8G,KAAAkgO,aAAA/jH,GAAAhoF,GAAA3qB,OAEAxJ,KAAAuF,SAAAK,IAAA,wBAAA5F,KAAA2hT,uBAAApvE,oBACA,CACA,CACA,EAEA8tE,EAAAtgT,UAAAihT,kBAAA,SAAAvoT,EAAA07B,GACAn0B,KAAA8gT,yBAAAroT,GAAA07B,IAAA,EACAn0B,KAAAwgT,wBACA,EAEAH,EAAAtgT,UAAAygT,uBAAA,WACA,QAAA/nT,EAAA,EAAAA,EAAAuH,KAAA8gT,yBAAApoT,OAAAD,IACA,QAAA07B,EAAA,EAAAA,EAAAn0B,KAAA8gT,yBAAAroT,GAAAC,OAAAy7B,IACA,GAAAn0B,KAAA8gT,yBAAAroT,GAAA07B,GAQAn0B,KAAAkgO,aAAAznO,GAAA07B,GAAArrB,WARA,CACA,IAAAg5S,EAAA9hT,KAAA8gT,yBAAA55S,KAAA,SAAAm+C,GAAA,OAAAA,EAAAlxB,EAAA,IACAn0B,KAAA+hT,WAAA/hT,KAAA8gT,yBAAAroT,KAAAuH,KAAA+hT,WAAAD,GACA9hT,KAAAkgO,aAAAznO,GAAA07B,GAAA3qB,OAEAxJ,KAAAkgO,aAAAznO,GAAA07B,GAAArrB,MAEA,CAMA,IAAA44S,EAAA1hT,KAAA2hT,uBAEA3hT,KAAAuF,SAAAK,IAAA,qBAAA87S,EAAAE,kBACA5hT,KAAAuF,SAAAK,IAAA,wBAAA87S,EAAAnvE,oBACA,EAEA8tE,EAAAtgT,UAAAugT,uBAAA,SAAAxnQ,GACA,MAAAhjB,EAAA91B,KAAA1E,KAAAy7I,KAAAr+I,OACAizB,EAAA3rB,KAAA1E,KAAA0jL,QAAAtmL,OAEAsH,KAAA8gT,yBAAA7uS,MAAA6jB,GACA,QAAAr9B,EAAA,EAAAA,EAAAq9B,EAAAr9B,IACAuH,KAAA8gT,yBAAAroT,GAAAwZ,MAAA0Z,GAAA6tE,KAAA1gD,IAAA,EAEA,EAIAunQ,EAAAtgT,UAAAwgT,iBAAA,WACA,MAAAzqR,EAAA91B,KAAA1E,KAAAy7I,KAAAr+I,OACAizB,EAAA3rB,KAAA1E,KAAA0jL,QAAAtmL,OACAsH,KAAA6gT,aAAA,GAEA,QAAApoT,EAAA,EAAAA,EAAAq9B,EAAAr9B,IAAA,CACAuH,KAAA6gT,aAAAhgT,KAAA,IAEA,QAAAszB,EAAA,EAAAA,EAAAxI,EAAAwI,IAEAn0B,KAAA6gT,aAAApoT,GAAAoI,KAAA,GAEA,CACA,EAEAw/S,EAAAtgT,UAAAiiT,mBAAA,WACAhiT,KAAAugT,kBACA,EAEAF,EAAAtgT,UAAAssP,UAAA,WACA,OACA,CAAAz7O,IAAA,SAAApE,MAAA,UACA,CAAAoE,IAAA,QAAApE,MAAA,SAEA,EAEA6zS,CACA,IAEA5oT,OC7mBA,YACA,YACA,aACA,iBACA,SAAA2wL,EAAAjvL,EAAA4X,GAEA,IAAAkxS,EAAA,+DAkCA,OACAC,OAjCA,SAAA11S,GACA,aAAAA,IACArT,EAAA+oT,OAAA11S,MAAAvM,cAAA0yC,QAAA,MAAAnmC,EAAAkG,MAAAuvS,GACA,EA+BAE,SA7BA,SAAA31S,GACA,wBACA,EA4BA41S,UA1BA,SAAA51S,GACA,yBACA,EAyBA61S,aAvBA,SAAA71S,GAGA,aAFAA,IAAAlS,eAGA,SAEA,aAAAkS,EACA,SAEA,UAAAiQ,MAAA,cAAAjQ,EAAA,sCACA,EAcA6jJ,UAZA,SAAA7jJ,GACA,OAAArT,EAAA+oT,OAAA11S,GACAA,EAEA47K,EAAA/3B,UAAA7jJ,EAAAuE,EAAAC,kBACA,EASA,IACAvZ,OChDA,+BACA,SACA,YACA,qBACA,UACA,WACA,eACA,aACA,SAAA2B,EAAAgvL,EAAAqd,EAAAngM,EAAAm5B,EAAA1tB,EAAA2oB,GACA,aAEA,IAAAqC,EAAA,CACAzgC,KAAA,CAEAgnT,qBAAA,EACAC,+BAAA,EAGAC,iBAAA,EAGAC,kBAAA,EACAC,iBAAA,EAGA32G,aAAA,GACA42G,iBAAA,UACAC,kBAAA,OACAC,oBAAA,SACAC,kBAAA,OACAC,iBAAA,QAGAC,iBAAA,SAGAC,eAAA,UACAC,sBAAA,UAEAC,WAAA,UACAC,0BAAA,UACAC,mBAAA,UACAC,uBAAA,UACAC,0BAAA,UAEAC,SAAA,UACAC,YAAA,UACAC,YAAA,UACAC,yBAAA,UACAC,cAAA,UACAC,gBAAA,UACAC,eAAA,YAIA,SAAAC,EAAA5gS,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GAEAsb,EAAAK,aAAA9+B,MAEAA,KAAAimI,cAAA7/H,CACA,CAsQA,OApQAd,EAAA3F,OAAAokT,EAAAz+S,GAEAy+S,EAAAnqR,SAAA,aAEAmqR,EAAAhkT,UAAAgH,UAAA,WACA/G,KAAAgkT,oBAAA,KAEAhkT,KAAA2M,gBAEA,IAAA5L,EAAAf,KAEAA,KAAAikT,0BAAAjkT,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAA4oT,iBACA,SAAA5oT,GACAyF,EAAAojT,SAAA7oT,EAAA68B,QAAAjxB,KAAA,SAAAwf,GACA,OACA9rB,GAAA8rB,EAAA3lB,EAAAzF,KAAA8oT,QACA9rT,KAAAouB,EAAA3lB,EAAAzF,KAAA+oT,UACAnjS,MAAAwF,EAAA3lB,EAAAzF,KAAAgpT,WAAAzrT,UAAA,MACA2vD,IAAA9hC,EAAA3lB,EAAAzF,KAAAipT,SAAA1rT,UAAA,MACAsL,SAAAuiB,EAAA3lB,EAAAzF,KAAAkpT,cACAtoR,MAAAxV,EAAA3lB,EAAAzF,KAAAmpT,WACA5L,UAAAnyR,EAAA3lB,EAAAzF,KAAAu9S,WAEA,IAEA93S,EAAAijT,qBACAjjT,EAAAijT,oBAAAU,UAAA3jT,EAAAojT,SAEA,IAEAnkT,KAAA1E,KAAAgnT,sBACAtiT,KAAA2kT,iCAAA3kT,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAspT,wBACA,SAAAtpT,GACAyF,EAAA8jT,eAAAvpT,EAAA68B,QAAAjxB,KAAA,SAAAwf,GACA,OACA9rB,GAAA8rB,EAAA3lB,EAAAzF,KAAAwpT,cACAC,WAAAr+R,EAAA3lB,EAAAzF,KAAA0pT,sBACAC,SAAAv+R,EAAA3lB,EAAAzF,KAAA4pT,oBAEA,IAEAnkT,EAAAijT,qBACAjjT,EAAAijT,oBAAAmB,iBAAApkT,EAAA8jT,eAEA,KAIA7kT,KAAA1E,KAAAknT,kBACAxiT,KAAAolT,6BAAAplT,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAA+pT,oBACA,SAAA/pT,GACAyF,EAAAukT,aAAAhqT,EAAA68B,QAAAjxB,KAAA,SAAAwf,GACA,OACA9rB,GAAA8rB,EAAA3lB,EAAAzF,KAAAiqT,WACAv7M,KAAAtjF,EAAA3lB,EAAAzF,KAAAkqT,aAAA3sT,UAAA,MAEA,IAEAkI,EAAAijT,qBACAjjT,EAAAijT,oBAAAyB,aAAA1kT,EAAAukT,aAEA,KAIA7/G,EAAAtkL,KAAA,iBACA7d,KAAAtD,KAAAuuR,cAAAhsR,KAAAvC,MACA,EAEA+jT,EAAAhkT,UAAAwuR,cAAA,SAAAm3B,GACA,IAAA3kT,EAAAf,KAsEA,GApEA0lT,EAAA94I,QAAA,CACA+4I,WAAA,SAAAvB,EAAAwB,EAAAC,GACA9kT,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAAwqT,gBAAA1B,GACArjT,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAAyqT,mBAAA39H,EAAAzoK,OAAA,IAAA5nB,KAAA6tT,GAAA70S,EAAAC,oBACAjQ,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAA0qT,iBAAA59H,EAAAzoK,OAAA,IAAA5nB,KAAA8tT,GAAA90S,EAAAC,oBAEAjQ,EAAA6J,sBAAA,cACA,EACAq7S,YAAA,SAAA7B,EAAA8B,EAAAC,GACAplT,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAAwqT,gBAAA1B,GACArjT,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAAyqT,mBAAA39H,EAAAzoK,OAAA,IAAA5nB,KAAAmuT,GAAAn1S,EAAAC,oBACAjQ,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAA0qT,iBAAA59H,EAAAzoK,OAAA,IAAA5nB,KAAAouT,GAAAp1S,EAAAC,oBAEAjQ,EAAA6J,sBAAA,cACA,EACAw7S,YAAA,SAAAhC,EAAA8B,EAAAC,GACAplT,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAAwqT,gBAAA1B,GACArjT,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAAyqT,mBAAA39H,EAAAzoK,OAAA,IAAA5nB,KAAAmuT,GAAAn1S,EAAAC,oBACAjQ,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAA0qT,iBAAA59H,EAAAzoK,OAAA,IAAA5nB,KAAAouT,GAAAp1S,EAAAC,oBAEAjQ,EAAA6J,sBAAA,cACA,EACAy7S,iBAAA,SAAAC,GACAvlT,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAAirT,0BAAAD,GAEAvlT,EAAA6J,sBAAA,mBAAA07S,EACA,EACAE,mBAAA,SAAAC,GACA,IAAAC,EAAAt+H,EAAAzoK,OAAA,IAAA5nB,KAAA0uT,GAAA11S,EAAAC,mBAEAjQ,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAAqrT,4BAAAD,GAEA3lT,EAAA6J,sBAAA,qBAAA87S,EACA,EACAE,cAAA,SAAA9B,EAAAC,EAAAE,GACAlkT,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAAurT,sBAAA/B,GACA/jT,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAAwrT,8BAAA/B,GACAhkT,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAAyrT,4BAAA9B,GAEAlkT,EAAA6J,sBAAA,kBACA,EACAo8S,iBAAA,SAAAlC,GACA/jT,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAAurT,sBAAA/B,GAEA/jT,EAAA6J,sBAAA,oBACA,EACAq8S,kBAAA,SAAAnC,EAAAC,EAAAE,GACAlkT,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAAurT,sBAAA/B,GACA/jT,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAAwrT,8BAAA/B,GACAhkT,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAA7lC,EAAAzF,KAAAyrT,4BAAA9B,GAEAlkT,EAAA6J,sBAAA,oBACA,GAEA5K,KAAAuF,SAAAlN,IAAA,IAEA2H,KAAAmkT,UACAuB,EAAAhB,UAAA1kT,KAAAmkT,UAGAnkT,KAAA6kT,gBACAa,EAAAP,iBAAAnlT,KAAA6kT,gBAGA7kT,KAAAslT,cACAI,EAAAD,aAAAzlT,KAAAslT,cAGAtlT,KAAA1E,KAAA4rT,yBAAAlnT,KAAA1E,KAAA6rT,4BAAA,CACA,IAAA99H,EAAArpL,KAAA2C,OAAAm2B,WAAAwwJ,oBAAAtpL,KAAA1E,KAAA8rT,qBAAApnT,KAAAqnT,2BAAA9kT,KAAAvC,OAAA,GAEAA,KAAAimI,WAAAjmI,KAAAimI,SAAA,IAEAjmI,KAAAimI,SAAAplI,KAAAwoL,EACA,CAEA,GAAArpL,KAAA1E,KAAAgsT,uBAAAtnT,KAAA1E,KAAAisT,0BAAA,CACAl+H,EAAArpL,KAAA2C,OAAAm2B,WAAAwwJ,oBAAAtpL,KAAA1E,KAAAksT,UAAAxnT,KAAAynT,yBAAAllT,KAAAvC,OAAA,GAEAA,KAAAimI,WAAAjmI,KAAAimI,SAAA,IAEAjmI,KAAAimI,SAAAplI,KAAAwoL,EACA,CAEA,GAAArpL,KAAA1E,KAAAosT,qBAAA1nT,KAAA1E,KAAAqsT,wBAAA,CACAt+H,EAAArpL,KAAA2C,OAAAm2B,WAAAwwJ,oBAAAtpL,KAAA1E,KAAAssT,QAAA5nT,KAAA6nT,uBAAAtlT,KAAAvC,OAAA,GAEAA,KAAAimI,WAAAjmI,KAAAimI,SAAA,IAEAjmI,KAAAimI,SAAAplI,KAAAwoL,EACA,CAEA,GAAArpL,KAAA1E,KAAAwsT,sBAAA9nT,KAAA1E,KAAAysT,yBAAA,CACA1+H,EAAArpL,KAAA2C,OAAAm2B,WAAAwwJ,oBAAAtpL,KAAA1E,KAAA0sT,kBAAAhoT,KAAAioT,wBAAA1lT,KAAAvC,OAAA,GAEAA,KAAAimI,WAAAjmI,KAAAimI,SAAA,IAEAjmI,KAAAimI,SAAAplI,KAAAwoL,EACA,CAEAq8H,EAAAwC,oBAAA,CACAC,WAAAnoT,KAAA1E,KAAA6sT,WACAC,UAAApoT,KAAA1E,KAAA8sT,UACApF,iBAAAhjT,KAAA1E,KAAA0nT,iBACA9d,cAAAllS,KAAA1E,KAAA4pS,cACAud,iBAAAziT,KAAA1E,KAAAmnT,iBACAH,oBAAAtiT,KAAA1E,KAAAgnT,oBACAC,8BAAAviT,KAAA1E,KAAAgnT,qBAAAtiT,KAAA1E,KAAAinT,8BACAkE,YAAAzmT,KAAA1E,KAAA4rT,wBAAAlnT,KAAA2C,OAAAm2B,WAAAvsB,SAAAvM,KAAA1E,KAAA8rT,2BAAAhhT,EACAs8S,iBAAA1iT,KAAA1E,KAAAonT,iBACA8E,UAAAxnT,KAAA1E,KAAAgsT,sBAAAtnT,KAAA2C,OAAAm2B,WAAAvsB,SAAAvM,KAAA1E,KAAA+sT,yBAAAjiT,EACAwhT,QAAA5nT,KAAA0nT,oBAAA1nT,KAAA2C,OAAAm2B,WAAAvsB,SAAAvM,KAAA1E,KAAAgtT,uBAAAliT,EACA67C,SAAAjiD,KAAA8nT,qBAAA9nT,KAAA2C,OAAAm2B,WAAAvsB,SAAAvM,KAAA1E,KAAA0sT,wBAAA5hT,EACA68S,eAAAjjT,KAAA1E,KAAA2nT,eACAC,sBAAAljT,KAAA1E,KAAA4nT,wBAGAwC,EAAA6C,gBAAA,CACAC,aAAAxoT,KAAA2C,OAAAm2B,WAAAvsB,SAAA,0BACAw/L,aAAA/rM,KAAA1E,KAAAywM,aACA42G,iBAAA3iT,KAAA1E,KAAAqnT,iBACAC,kBAAA5iT,KAAA1E,KAAAsnT,kBACAC,oBAAA7iT,KAAA1E,KAAAunT,oBACAC,kBAAA9iT,KAAA1E,KAAAwnT,kBACAC,iBAAA/iT,KAAA1E,KAAAynT,iBACAI,WAAAnjT,KAAA1E,KAAA6nT,WACAC,0BAAApjT,KAAA1E,KAAA8nT,0BACAC,mBAAArjT,KAAA1E,KAAA+nT,mBACAC,uBAAAtjT,KAAA1E,KAAAgoT,uBACAC,0BAAAvjT,KAAA1E,KAAAioT,4BAGAmC,EAAA+C,eAAA,CACAjF,SAAAxjT,KAAA1E,KAAAkoT,SACAC,YAAAzjT,KAAA1E,KAAAmoT,YACAC,YAAA1jT,KAAA1E,KAAAooT,YACAC,yBAAA3jT,KAAA1E,KAAAqoT,yBACAC,cAAA5jT,KAAA1E,KAAAsoT,cACAC,gBAAA7jT,KAAA1E,KAAAuoT,gBACAC,eAAA9jT,KAAA1E,KAAAwoT,iBAGA9jT,KAAAgkT,oBAAA0B,CACA,EAEA3B,EAAAhkT,UAAAsnT,2BAAA,SAAAZ,GACAA,SACAzmT,KAAAgkT,oBAAAqD,2BAAA3tR,EAAA22H,UAAAo2J,GACA,EAEA1C,EAAAhkT,UAAA0nT,yBAAA,SAAAvB,GACAA,SACAlmT,KAAAgkT,oBAAAyD,yBAAA/tR,EAAA22H,UAAA61J,GACA,EAEAnC,EAAAhkT,UAAA8nT,uBAAA,SAAA1B,GACAA,SACAnmT,KAAAgkT,oBAAA6D,uBAAAnuR,EAAA22H,UAAA81J,GACA,EAEApC,EAAAhkT,UAAAkoT,wBAAA,SAAAhmQ,GACAA,SACAjiD,KAAAgkT,oBAAAiE,wBAAAvuR,EAAA2oR,aAAApgQ,GACA,EAEA8hQ,EAAAhkT,UAAAmP,yBAAA,WACAlP,KAAAikT,2BACAjkT,KAAA2C,OAAAmM,YAAAyxO,6BAAAvgP,KAAAikT,2BAGAjkT,KAAA2kT,kCACA3kT,KAAA2C,OAAAmM,YAAAyxO,6BAAAvgP,KAAA2kT,kCAGA3kT,KAAAolT,8BACAplT,KAAA2C,OAAAmM,YAAAyxO,6BAAAvgP,KAAAolT,8BAGAjsT,EAAAiJ,KAAApC,KAAAimI,UAAA,SAAAojD,GACAA,EAAAruJ,SACA,IAEAh7B,KAAAimI,cAAA7/H,CACA,EAEA29S,CACA,IACAtsT,OCrUA,qEA6DA,MA5DA,CACA6D,KAAA,CACAgJ,KAAA,CACAF,EAAA,IACAC,EAAA,KAGAqkT,oBAAA,YACAC,WAAA,aACAC,qBAAA,EACA5wH,YAAA,EAEAhB,YAAA,EACA6xH,kBAAA,EACAC,kBAAA,EACAC,iBAAA,EACAC,mBAAA,EACAC,kBAAA,EACAC,mBAAA,EACA/xH,eAAA,SAEAJ,aAAA,EACAoyH,YAAA,EAEAC,gBAAA,EACAC,SAAA,EACAC,YAAA,EAEAC,YAAA,YACAC,YAAA,WACAC,WAAA,gBACAC,aAAA,UACAC,YAAA,gBACAC,aAAA,cAEAC,YAAA,kBACAC,YAAA,kBACAC,WAAA,qBACAC,aAAA,qBACAC,YAAA,qBACAC,aAAA,oBAEA9yH,WAAA,EACAE,WAAA,GACAC,mBAAA,eACA4yH,eAAA,EAEA3yH,WAAA,EACAC,WAAA,GACAC,mBAAA,eACA0yH,eAAA,EACAC,oBAAA,EACAlyH,YAAA,EAEAtB,WAAA,EACAC,WAAA,EAEAgB,UAAA,WAIA,IAEArgM,OChEA,4JACA2B,EACAoJ,EACAsB,EACAwB,EACAqxL,EACA2zH,GAEA,aAEA,IAAA1zH,EAAA,KACAr6H,EAAA,KAEAguP,EAAA,SAAApnS,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAAkxT,EAAAnnS,GAEAnjB,KAAAy4L,OAAAr/L,EAAA,SAAAyN,SAAA7G,KAAAuF,SACA,EAEAD,EAAA3F,OAAA4qT,GAEAA,EAAA3wR,SAAA,qBAEA2wR,EAAAxqT,UAAAgH,UAAA,WACA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MAEA,IAAAwjB,EAAAhhB,EAAAu1B,QACA7+B,QAAA,sBAAAy/L,EAAAC,GACAjC,EAAAH,WAAA,cACAG,EAAAH,WAAA,mDAEAI,EAAA+B,EACAp8H,EAAAq8H,EACAp1K,EAAAc,SACA,IAEAtkB,KAAA2M,gBAEA,IAAA5L,EAAAf,KAiCA,OA9BAA,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAkvT,uBACA,SAAAC,GACA1pT,EAAA2pT,WAAAD,EACA1pT,EAAA4pT,aACA,IAIA,mBAAA5pT,EAAAzF,KAAAqtT,YACA3oT,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAsvT,0BACA,SAAAp8M,GACAztG,EAAA8pT,YAAAr8M,EACAztG,EAAA4pT,aACA,IAKA,eAAA5pT,EAAAzF,KAAAqtT,YACA3oT,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAwvT,sBACA,SAAAC,GACAhqT,EAAAiqT,eAAAD,EACAhqT,EAAA4pT,aACA,IAIAnnS,EAAAa,OACA,EAEAkmS,EAAAxqT,UAAA0H,WAAA,WAEAzH,KAAAirT,oBAEA,EAEA,IAAAC,EAAA,SAAA32R,GAIA,OAHAA,EAAAxxB,QAAA,SAAAquE,EAAAt4B,GACA,OAAAs4B,EAAAt4B,CACA,MACAvkB,EAAA77B,MACA,EAcAyyT,EAAA,SAAA/mT,EAAAgnT,EAAAC,GACA,IAAArmO,EAAA,GAAAqmO,EAAAt2S,KAAA6wC,KAAA,EAAA7wC,KAAAspB,KACA4+B,GAAAloD,KAAAud,IAAAluB,EAAAgnT,EAAA,MAAAr2S,KAAAud,IAAA+4R,EAAA,IACA,WAAArmO,EAAAjwE,KAAAmoD,IAAAD,EACA,EASAquP,EAAA,SAAApqS,EAAAwD,EAAAyJ,GACA,IAAAwkC,GAAAjuC,EAAAxD,GAAAiN,EACA,OAAAlc,MAAA2hD,KAAA,CAAAl7D,OAAAy1B,EAAA,aAAA3hB,EAAAhL,GACA,OAAA0f,EAAA1f,EAAAmxD,CACA,GACA,EACA44P,EAAA,SAAArqS,EAAAsnC,EAAA4iQ,EAAAI,EAAAC,GAEA,OADAH,EAAApqS,EAAAsnC,EAAAijQ,GACAvkT,KAAA,SAAA9C,GACA,OAAA+mT,EAAA/mT,EAAAgnT,EAAAI,EACA,GACA,EACAE,EAAA,SAAAn3R,EAAAnwB,GACAmwB,EAAAm4F,MAAA,SAAAh6F,EAAAg/B,GACA,OAAAh/B,EAAAg/B,CACA,IAIA,IAHA,IAAAi6P,EAAA,CAAAp3R,EAAA,IAGA97B,EAAA,EAAAA,EAAA87B,EAAA77B,OAAAD,IACA87B,EAAA97B,GAAAkzT,IAAAjzT,OAAA,IAAA0L,GACAunT,EAAA9qT,KAAA0zB,EAAA97B,IAIA,OAAAkzT,CACA,EA8VA,OA7VApB,EAAAxqT,UAAA6rT,0BAAA,SAAA9yQ,EAAAsyQ,EAAAI,GACA,IAAAzqT,EAAAf,KACA6rT,EAAA,GAEAC,EAvCA,SAAA1nT,EAAAgnT,EAAAI,GACApnT,KAAAgnT,GAAAI,EAAA,IACAr5P,EAAA,cAAAp9C,KAAAD,IAAA1Q,IAEA2nT,EADA,SAAAh3S,KAAAmoD,KAAA94D,IAAA,GACA+tD,GAAA,SAAAA,MAAA,SAAAA,GAAA,SAAAA,EAAA,sBAEA,OADA/tD,EAAA,IAAA2nT,EAAA,EAAAA,GACA,IAAAA,CACA,CAgCAC,CADAlzQ,IAAAxjC,QAAAvU,EAAAzF,KAAA6uT,gBACAiB,EAAAI,GAKA,OAJAM,IAAA,eAAAA,GAAAx2S,QAAA,OACA,UAAAw2S,EAAAx2S,QAAA,OACAu2S,GAAA,aAAA9qT,EAAAq2L,WAAAr2L,EAAAzF,KAAAg8L,YAAAv2L,EAAAkrT,aAAA,sBAAAnzQ,EAAA,aACA+yQ,GAAA,0BAAAC,EAAA,gBAEA,EAEAvB,EAAAxqT,UAAA2zC,OAAA,WACA,IAEA03Q,EAAAI,EAFAzqT,EAAAf,KAIA,sBAAAe,EAAAzF,KAAAqtT,WAAA,CACA,IAAAuD,EAAA,GACA,GAAAnrT,EAAA8pT,YAAAjyR,aAAA,CAEA,IADAjpB,EAAAzP,OAAAyP,KAAA5O,EAAA8pT,YAAAlyR,UACAjgC,OAAA,SAAAqI,EAAAkqT,mBAAA,wCACA,IAAAkB,EAAAx8S,EAAA,GACAu8S,EAAAnrT,EAAA8pT,YAAA1yR,QAAAjxB,KAAA,SAAA9G,GACA,OAAAA,EAAA+rT,EACA,IAEAf,EAAAF,EAAAgB,GACAV,EAjFA,SAAAj3R,EAAA63R,GACA,IAIAC,EAJAC,EAAApB,EAAA32R,GACAg4R,EAAAh4R,EAAArtB,KAAA,SAAA4xC,GACA,OAAA/jC,KAAAud,IAAAwmB,EAAAwzQ,EAAA,EACA,IAOA,OAJAD,EADAD,EACAlB,EAAAqB,IAAAh4R,EAAA77B,QAAA67B,EAAA77B,OAAA,IAEAwyT,EAAAqB,GAEAx3S,KAAA6wC,KAAAymQ,EACA,CAqEAG,CAAAN,GAAAnrT,EAAAzF,KAAAstT,oBACA,CACA,IAAAsD,EAAAxzT,OAAA,OAAAqI,EAAAkqT,oBACA,MACA,IAAAwB,EAAA1rT,EAAAiqT,eAAA7yR,QAAA,GACAizR,EAAAqB,EAAA1rT,EAAAzF,KAAAoxT,sBACAlB,EAAAiB,EAAA1rT,EAAAzF,KAAAqxT,oBACA,CAEA,IAAAC,EAAA,GACA,cAAA7rT,EAAAzF,KAAAotT,oBAAA,CACA,IAAAmE,EAAA,GAOA,GANA9rT,EAAAzF,KAAAwxT,wBACAD,GAAA,+BAEA9rT,EAAAzF,KAAAyxT,wBACAF,GAAA,+BAEAA,EAAA,OAAA9rT,EAAAkqT,mBAAA4B,GAEA9rT,EAAAisT,YAAAjsT,EAAAzF,KAAAwxT,sBACA/rT,EAAAkrT,YAAAlrT,EAAAzF,KAAAyxT,sBACAhsT,EAAAksT,qBAAAlsT,EAAA2pT,WAAAvyR,QAAAp1B,QAAA,SAAAquE,EAAAhxE,GAEA,OADAgxE,EAAAhxE,EAAAW,EAAAisT,cAAA5sT,EAAAW,EAAAkrT,aACA76O,CACA,OACAw7O,EAAA1sT,OAAA2Q,OAAA9P,EAAAksT,qBACA,MAMA,GALAlsT,EAAA2pT,WAAA3pT,EAAA2pT,YAAA,CACA/xR,QAAA,GACAR,QAAA,GACAS,aAAA,GAEA73B,EAAA2pT,WAAA9xR,aAAA,CACA,IAAAjpB,EACA,IADAA,EAAAzP,OAAAyP,KAAA5O,EAAA2pT,WAAA/xR,UACAjgC,OAAA,EACA,OAAAqI,EAAAkqT,mBAAA,uCACA,IAAAiC,EAAAhtT,OAAAyP,KAAA5O,EAAA2pT,WAAA/xR,SAAA,GACAi0R,EAAA7rT,EAAA2pT,WAAAvyR,QAAAjxB,KAAA,SAAA9G,GACA,OAAAA,EAAA8sT,EACA,GACA,CAGA,IAAA/+S,EAAAg9S,EAAAC,IAAAI,GAEAtqS,EAAAkqS,EAAA,EAAAI,EACAhjQ,EAAA4iQ,EAAA,EAAAI,EAGA2B,EAAA7B,EAAApqS,EAAAkqS,EAAA,EAAAI,EAAAz2S,KAAAM,MAAA+3S,oBACAC,EAAA9B,EAAArqS,EAAAkqS,EAAA,EAAAI,EAAAJ,EAAAI,EAAAz2S,KAAAM,MAAA+3S,oBAEAE,EAAAhC,EAAAF,EAAA,EAAAI,EAAAJ,EAAAI,EAAAz2S,KAAAM,MAAA+3S,oBACAG,EAAAhC,EAAAH,EAAA,EAAAI,EAAAJ,EAAAI,EAAAJ,EAAAI,EAAAz2S,KAAAM,MAAA+3S,oBAEAI,EAAAlC,EAAAF,EAAAI,EAAAJ,EAAAI,EAAAz2S,KAAAM,MAAA+3S,qBACAd,EAAAf,EAAAH,EAAAI,EAAAJ,EAAAI,EAAAJ,EAAAI,EAAAz2S,KAAAM,MAAA+3S,qBAEAK,EAAAnC,EAAAF,EAAAI,EAAAJ,EAAA,EAAAI,EAAAz2S,KAAAM,MAAA+3S,oBACAM,EAAAnC,EAAAH,EAAAI,EAAAJ,EAAA,EAAAI,EAAAJ,EAAAI,EAAAz2S,KAAAM,MAAA+3S,oBAEAO,EAAArC,EAAAF,EAAA,EAAAI,EAAAhjQ,EAAAzzC,KAAAM,MAAA+3S,oBACAQ,EAAArC,EAAAH,EAAA,EAAAI,EAAAhjQ,EAAA4iQ,EAAAI,EAAAz2S,KAAAM,MAAA+3S,oBAEAxzH,EAAA,CACAC,OAAA94L,EAAA03L,OAAA,GACAn0L,KAAA,CACA6J,OAAA,MAAAnO,KAAA1E,KAAAoL,KAAA,MAAA1G,KAAA1E,KAAAsL,YAAAR,EAAArF,EAAAzF,KAAAgJ,KAAAD,GAEA4qI,WAAA,CACA1nF,SAAA,GAEAjsD,KAAA,CACAu/L,GAAA,CACAgzH,gBAAA,OACAC,aAAA,MACAC,QAAA,KACAC,aAAA,MACAC,gBAAA,QAEAjvI,QAAA,CACA,WAAAmuI,GACA,sBAAAE,GACA,UAAAC,GACA,mBAAAC,GACA,SAAAC,GACA,cAAAlB,GACA,UAAAmB,GACA,mBAAAC,GACA,WAAAC,GACA,sBAAAC,IAEAl0R,MAAA,CACAm0R,gBAAA,cACAC,aAAA,cACAC,QAAA,cACAC,aAAA,cACAC,gBAAA,eAEA59K,MAAA,CACAw9K,gBAAA9sT,EAAAzF,KAAA4yT,kBAAAntT,EAAAzF,KAAAkuT,aAAAc,EAAAhvT,KAAAkuT,YACAsE,aAAA/sT,EAAAzF,KAAA4yT,kBAAAntT,EAAAzF,KAAAmuT,YAAAa,EAAAhvT,KAAAmuT,WACAsE,QAAAhtT,EAAAzF,KAAA4yT,kBAAAntT,EAAAzF,KAAAouT,cAAAY,EAAAhvT,KAAAouT,aACAsE,aAAAjtT,EAAAzF,KAAA4yT,kBAAAntT,EAAAzF,KAAAquT,aAAAW,EAAAhvT,KAAAquT,YACAsE,gBAAAltT,EAAAzF,KAAA4yT,kBAAAntT,EAAAzF,KAAAsuT,cAAAU,EAAAhvT,KAAAsuT,cAEAx8K,OAAA,CACAygL,gBAAA9sT,EAAAzF,KAAA6yT,cAAAptT,EAAAzF,KAAAwuT,aAAAQ,EAAAhvT,KAAAwuT,YACAgE,aAAA/sT,EAAAzF,KAAA6yT,cAAAptT,EAAAzF,KAAAyuT,YAAAO,EAAAhvT,KAAAyuT,WACAgE,QAAAhtT,EAAAzF,KAAA6yT,cAAAptT,EAAAzF,KAAA0uT,cAAAM,EAAAhvT,KAAA0uT,aACAgE,aAAAjtT,EAAAzF,KAAA6yT,cAAAptT,EAAAzF,KAAA2uT,aAAAK,EAAAhvT,KAAA2uT,YACAgE,gBAAAltT,EAAAzF,KAAA6yT,cAAAptT,EAAAzF,KAAA4uT,cAAAI,EAAAhvT,KAAA4uT,eAGA5vJ,KAAA,CACAl2J,EAAA,CACA0E,KAAA/H,EAAAzF,KAAAu7L,WAEAxyL,EAAA,CACAyE,KAAA/H,EAAAzF,KAAAw7L,YAGAsmF,IAAA,CACApwQ,MAAAjM,EAAAzF,KAAA+tT,UAEAh2Q,QAAA,CACAvqC,KAAA/H,EAAAzF,KAAAy7L,YACAj7C,SAAA,SAAAzjI,GACA,IAAAwzS,EAAA,qCACAA,GAAA,6BACAA,GAAA,UAEA,IAAAuC,EAAArtT,EAAAq4L,MAAAr4L,EAAAq4L,MAAAp4B,OAAA,IAAAqtJ,MAAA,EAAAA,OACAC,GAAAF,EAAA,GAAAA,EAAA,OAEAjgS,EAAA,EACA,GAAAptB,EAAAwtT,aACA,gBAAAxtT,EAAAzF,KAAAotT,oBAAA,CACA,IAAA8F,EAAA,GACAztT,EAAAwtT,aAAAE,WAAA5sT,SAAA,SAAAgwD,GACA98C,KAAAD,IAAA+8C,EAAAx5C,EAAA,GAAAjU,GAAAkqT,IACAngS,EAAAptB,EAAAzF,KAAA6tT,cACAqF,GAAAztT,EAAA6qT,0BAAA/5P,EAAAu5P,EAAAI,IACAr9R,IAEA,IACAqgS,IACA3C,GAAA,uBAAA9qT,EAAAzF,KAAAiuT,YAAA,aACAp7R,EAAA,IAAA09R,GAAA,4BAAA19R,EAAA,cACA09R,GAAA2C,EAEA,MACA,QAAA59S,KAAA7P,EAAAksT,qBAAA,CACA,IAAAn0Q,EAAA/3C,EAAAksT,qBAAAr8S,GACAmE,KAAAD,IAAAgkC,EAAAzgC,EAAA,GAAAjU,GAAAkqT,IACAngS,EAAAptB,EAAAzF,KAAA6tT,cACA0C,GAAA,0BAAAj7S,EAAA,iBACAi7S,GAAA9qT,EAAA6qT,0BAAA9yQ,EAAAsyQ,EAAAI,IAEAr9R,IAEA,CASA,OANAA,EACAA,EAAAptB,EAAAzF,KAAA6tT,cAAA0C,GAAA,gDADAA,GAAA9qT,EAAA6qT,0BAAAvzS,EAAA,GAAAjU,EAAAgnT,EAAAI,GAGAK,GAAA,WACAA,GAAA,WACAA,GAAA,QAEA,GAEA3xJ,KAAA,CACA91J,EAAA,CACA0E,KAAA/H,EAAAzF,KAAA87L,UACApkI,MAAA,CACAn4B,KAAA95B,EAAAzF,KAAAg8L,WACAnzL,SAAApD,EAAAzF,KAAAi8L,oBAEAyC,KAAA,CACAr6K,OAAAi3K,EAAAj3K,OAAA,IAAA5e,EAAAzF,KAAA6uT,eAAA,KACAt5S,OAAA,IACAy6S,EACAvqT,EAAAzF,KAAA68L,YAAAp3L,EAAAzF,KAAA2+L,cAAAl5L,EAAAzF,KAAA2+L,cAAA/4K,EACAngB,EAAAzF,KAAA68L,YAAAp3L,EAAAzF,KAAA4+L,cAAAn5L,EAAAzF,KAAA4+L,cAAA1xI,EACA,GAAAthD,KAAA,SAAAkrD,GACA,OAAAA,CACA,KAEAs8P,WAAA,GAEAr8R,IAAAtxB,EAAAzF,KAAA68L,WAAAp3L,EAAAzF,KAAA2+L,mBAAA7zL,EACA+wB,IAAAp2B,EAAAzF,KAAA68L,WAAAp3L,EAAAzF,KAAA4+L,mBAAA9zL,GAEA/B,EAAA,CACAyE,KAAA/H,EAAAzF,KAAAk8L,UACAxkI,MAAA,CACAn4B,KAAA95B,EAAAzF,KAAAm8L,WACAtzL,SAAApD,EAAAzF,KAAAo8L,oBAEAsC,KAAA,CACAr6K,OAAAi3K,EAAAj3K,OAAA,IAAA5e,EAAAzF,KAAA8uT,eAAA,KACAv5S,OAAA,CACA,KACAy6S,EAAApqS,EAAAsqS,EAAAJ,EAAA,GAAAlkT,KAAA,SAAAkrD,GACA,OAAA+4P,EAAA/4P,EAAAg5P,EAAAI,EACA,QAKAtrQ,MAAA,CACAxW,EAAA3oC,EAAAzF,KAAAguT,aAEAvvH,OAAA,CACAjxL,MAAA,EACA3E,SAAApD,EAAAzF,KAAA67L,gBAEAr6J,QAAA,CACAn2B,MAAA,IAAA5F,EAAAzF,KAAA6uT,gBAEAnpJ,KAAA,CACAr9J,QAAA5C,EAAAzF,KAAA08L,aAYA,GARAj3L,EAAAzF,KAAA+uT,qBACAzwH,EAAA1/B,KAAA91J,EAAA04B,QAAA,CACAr2B,KAAA,EACAE,MAAA,IAKAimT,EAAAl0T,OAAA,CACAqI,EAAAwtT,aAAA3B,EACA,IAAA+B,EAAA5tT,EAAAwtT,aAAArnT,KAAA,SAAAg5C,GACA,OAAAirQ,EAAAjrQ,EAAAkrQ,EAAAI,GAAAl2S,QAAAvU,EAAAzF,KAAA8uT,eACA,IAEAxwH,EAAAt+L,KAAAu/L,GAAA0zH,aAAA,UACA30H,EAAAt+L,KAAA0jL,QAAAn+K,KAAA,cAAAE,EAAAwtT,eACA30H,EAAAt+L,KAAA0jL,QAAAn+K,KAAA,mBAAA8tT,IACA/0H,EAAAt+L,KAAAo+B,MAAA60R,aAAA,UAEAxtT,EAAAzF,KAAA8tT,iBACAxvH,EAAAt+L,KAAAu/L,GAAA+zH,gBAAA,UACAh1H,EAAAt+L,KAAA0jL,QAAAn+K,KAAA,sBAAAoR,MAAAlR,EAAAwtT,aAAA71T,QAAA8gG,KAAArrF,KACAyrL,EAAAt+L,KAAAo+B,MAAAk1R,gBAAA,MACAh1H,EAAAt+L,KAAA8xI,OAAAwhL,gBAAA7tT,EAAAzF,KAAA6yT,cAAAptT,EAAAzF,KAAAuuT,aAAA9oT,EAAAzF,KAAAuuT,aAGAjwH,EAAAt+L,KAAA+0I,MAAAk+K,aAAAxtT,EAAAzF,KAAA4yT,kBAAAntT,EAAAzF,KAAAiuT,aAAAe,EAAAhvT,KAAAiuT,YACA3vH,EAAAt+L,KAAA8xI,OAAAmhL,aAAAxtT,EAAAzF,KAAA6yT,cAAAptT,EAAAzF,KAAAuuT,aAAA9oT,EAAAzF,KAAAuuT,YAEA,IAAAgF,EAAAnD,EAAA3qT,EAAAwtT,aAAA/C,EAAA,GACA5xH,EAAA1/B,KAAA91J,EAAA41L,KAAAnpL,OAAA+oL,EAAA1/B,KAAA91J,EAAA41L,KAAAnpL,OAAAsJ,QAAA,SAAAi4C,GACA,OAAAy8P,EAAAx2O,MAAA,SAAAytF,GACA,OAAA/wJ,KAAAD,IAAAgxJ,EAAA1zG,GAAAo5P,EAAA,CACA,GACA,IACAv5S,MAAAlS,UAAAc,KAAAmkB,KAAA40K,EAAA1/B,KAAA91J,EAAA41L,KAAAnpL,UAAAg+S,GAEA,IAAAC,EAAApD,EAAAiD,EAAAxgT,EAAA,IACAyrL,EAAA1/B,KAAA71J,EAAA21L,KAAAnpL,OAAA+oL,EAAA1/B,KAAA71J,EAAA21L,KAAAnpL,OAAAsJ,QAAA,SAAAi4C,GACA,OAAA08P,EAAAz2O,MAAA,SAAAytF,GACA,OAAA/wJ,KAAAD,IAAAgxJ,EAAA1zG,GAAAjkD,EAAA,EACA,GACA,IACA8D,MAAAlS,UAAAc,KAAAmkB,KAAA40K,EAAA1/B,KAAA71J,EAAA21L,KAAAnpL,UAAA89S,GACA/0H,EAAA1/B,KAAA71J,EAAA21L,KAAAnpL,OAAA66S,EAAA9xH,EAAA1/B,KAAA71J,EAAA21L,KAAAnpL,OAAA1C,EAAA,GACA,CAMA,GAJApN,EAAAq4L,OACAr4L,EAAAq4L,MAAAluG,UAEAnqF,EAAAq4L,MAAA78H,EAAAq+H,SAAAhB,GACA74L,EAAAzF,KAAA07L,WAAA,CACA,IAAA75C,EAAA,GACAp8I,EAAAzF,KAAAutT,kBAAA9nT,EAAAwtT,cAAApxK,EAAAt8I,KAAA,gBACAE,EAAAzF,KAAAwtT,kBAAA3rK,EAAAt8I,KAAA,mBACAE,EAAAzF,KAAAytT,iBAAA5rK,EAAAt8I,KAAA,gBACAE,EAAAzF,KAAA0tT,mBAAA7rK,EAAAt8I,KAAA,WACAE,EAAAzF,KAAA2tT,kBAAA9rK,EAAAt8I,KAAA,gBACAE,EAAAzF,KAAA4tT,mBAAA/rK,EAAAt8I,KAAA,mBACAE,EAAAq4L,MAAAW,OAAAjxL,KAAAq0I,EAEA,CACA,EAEAotK,EAAAxqT,UAAAkrT,mBAAA,SAAApwR,GACA76B,KAAAo5L,OACAp5L,KAAAo5L,MAAAluG,UAEAlrF,KAAAo5L,MAAA78H,EAAAq+H,SAAA,CACAf,OAAA75L,KAAAy4L,OAAA,GACAn9L,KAAA,CACA0jL,QAAA,GACAt5K,KAAA,OACA+0C,MAAA,CACAuY,MAAA,CACAn4B,QAAA76B,KAAA1E,KAAAw8L,cAKA,EAEAyyH,EAAAxqT,UAAA4qT,YAAA,WACA3qT,KAAA0qT,aACA,mBAAA1qT,KAAA1E,KAAAqtT,YAAA3oT,KAAA6qT,aAGA,eAAA7qT,KAAA1E,KAAAqtT,YAAA3oT,KAAAgrT,iBAFAhrT,KAAA0zC,QAMA,EAEA62Q,CACA,IAEA9yT,OC3eA,qCACA,SACA,aACA,WACA,sBACA,eACA,gBACA,sBACA,UACA,OACA,mBACA,SAAA2B,EAAAD,EAAAslC,EAAAgG,EAAA44N,EAAAniO,EAAAkiO,EAAA93P,EAAA9C,EAAA86P,GACA,aAEA,IAAAvhO,EAAA,CACAzgC,KAAA,CACAyzT,iBAAA,KAIAC,EAAA,SAAA7rS,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA2iC,EAAA5Y,GACAsb,EAAAK,aAAA9+B,MAEAA,KAAAqjD,SAAAjqD,EAAA,0CACAwM,IAAA,CACAoH,MAAA,OACAmB,OAAA,SAEAtH,SAAA7G,KAAAuF,UACAvF,KAAA29P,MAAAvkQ,EAAA,uCACAyN,SAAA7G,KAAAqjD,UAEArjD,KAAA09P,gBAAA19P,KAAAq4B,aAAA91B,KAAAvC,MAEAA,KAAAivT,0BAAA7oT,EACApG,KAAAkvT,2BAAA9oT,CACA,EA0MA,OAxMAd,EAAA3F,OAAAqvT,EAAA1pT,GAEA0pT,EAAAp1R,SAAA,gBAEAo1R,EAAAjvT,UAAAgH,UAAA,WAIA,GAHA/G,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,iBAEAywP,EAAA9pN,YAAA,CACA,IAAAvyC,EAAAf,KACAA,KAAA69P,gBAAA,WACA98P,EAAAyvC,QACAzvC,EAAA+8P,gBAAA/8P,EAAAyvC,QAAA,EACA,EACA4sN,EAAAf,YAAAr8P,KAAA69P,gBACA,CACA,EAEAmxD,EAAAjvT,UAAAovT,qBAAA,SAAAC,EAAA3hJ,EAAA4hJ,GACArvT,KAAAwwC,QACAxwC,KAAAsvT,sBAAAtvT,KAAAwwC,OAAA7tC,OAAAysT,EAAA3hJ,EAAA4hJ,EACA,EAEAL,EAAAjvT,UAAAwvT,uBAAA,SAAAH,EAAA3hJ,EAAA4hJ,GACArvT,KAAAsvT,sBAAAtvT,KAAA2C,OAAAysT,EAAA3hJ,EAAA4hJ,EACA,EAEAL,EAAAjvT,UAAAuvT,sBAAA,SAAAE,EAAAJ,EAAA3hJ,EAAA4hJ,GACArvT,KAAAyvT,WAEAzvT,KAAAyvT,UAAA,EAEA,UAAAJ,GACAG,EAAA12R,WAAAgQ,OAAAlC,SAAAwoR,EAAA3hJ,GAEA,WAAA4hJ,GACAG,EAAA12R,WAAAoR,QAAAtD,SAAAwoR,EAAA3hJ,GAEAztK,KAAAyvT,UAAA,EACA,EAEAT,EAAAjvT,UAAA6oC,WAAA,SAAAC,EAAAC,EAAAC,GACA,IAAA/oC,KAAAivT,qBAAA,CACA,IAAAluT,EAAAf,KACAA,KAAAivT,qBAAA91T,EAAA+N,IAAAlH,KAAA1E,KAAAyzT,kBAAA,SAAAK,GACA,OAAAruT,EAAA4B,OAAAm2B,WAAAwwJ,oBAAA8lI,EAAAruT,EAAAouT,qBAAA5sT,KAAAxB,EAAAquT,GACA,GACA,CAEA,GAAArmR,OAAA/oC,KAAAmH,SAAA7L,KAAAV,GACAoF,KAAAwwC,OAAA5H,WAAAC,EAAAC,EAAAC,OACA,CACAhoC,EAAAf,KAAA,IACAmpC,EAAAN,EAAA,GAAA2H,OAEAxwC,KAAA4K,sBAAA,iBAAAu+B,EAAAvuC,IAEA,IAAAqiQ,EAAAp0N,EAAA,GAAAo0N,iBACA7yN,EAAAvB,EAAAnwC,OAAA,KAAAowC,EAEA0H,EAAA,IAAA/L,EAAA0E,EAAA0sB,KAAA71D,KAAA2C,OAAAzH,YAAAioB,SACAqtB,EAAAtH,SAAAC,GACAqH,EAAA7tC,OAAA3C,KAAA2C,OAAAu7P,kBAAA/0N,EAAAqH,EAAApG,EAAA6yN,EAAAj9P,KAAAqjD,SAAArjD,KAAA29P,OAAA,GACAntN,EAAA7tC,OAAAe,SAAA26P,oBAAAr+P,KAAA09P,iBAEAltN,EAAAtG,QAAA/wC,EAAAssD,MAAAzlD,KAAA2C,OAAAm2B,WAAAoR,QAAAC,UACAqG,EAAA1H,OAAA3vC,EAAAssD,MAAA3c,GAGA,IAAAjC,EAAA3L,EAAA3hB,iBAAAi3B,GASA,GARA6sN,EAAA32N,YAAA1mC,KAAA29P,MAAA92N,GACA2J,EAAA9J,YAAAG,GAEA2J,EAAA1pC,qBAAA1N,KACAmzC,MAAA,WACAxrC,EAAA6J,sBAAA,gBAAAu+B,EAAAvuC,GACA,IAEAwiQ,EAAA9pN,YAAA,CACA,IAAAmrN,EAAA,IAAA51N,EAAAnwC,OACAsH,KAAA89P,gBAAAttN,EAAAiuN,EACA,CAEA51N,EAAAnwC,OAAA,GACA83C,EAAA5H,WAAAC,EAAAnqC,MAAA,GAAAoqC,GAGA3vC,EAAAiJ,KAAApC,KAAA1E,KAAAyzT,kBAAA,SAAAK,GACA5+Q,EAAA7tC,OAAAm2B,WAAAgQ,OAAA4mR,gBAAAN,IACAruT,EAAA4B,OAAAm2B,WAAAgQ,OAAAlC,SAAAwoR,EAAA5+Q,EAAA7tC,OAAAm2B,WAAAgQ,OAAAv8B,SAAA6iT,IACA5+Q,EAAA7tC,OAAAm2B,WAAAoR,QAAAwlR,gBAAAN,IACAruT,EAAA4B,OAAAm2B,WAAAoR,QAAAtD,SAAAwoR,EAAA5+Q,EAAA7tC,OAAAm2B,WAAAoR,QAAA39B,SAAA6iT,GACA,IAEA,IAAAF,EAAA/1T,EAAA+N,IAAAlH,KAAA1E,KAAAyzT,kBAAA,SAAAK,GACA,OAAA5+Q,EAAA7tC,OAAAm2B,WAAAwwJ,oBAAA8lI,EAAAruT,EAAAwuT,uBAAAhtT,KAAAxB,EAAAquT,GACA,IAEA,aAAApvT,KAAAuF,SAAAK,IAAA,cACA4qC,EAAAl1C,KAAAspC,WACA5kC,KAAAuF,SAAAK,IAAA,iBACAqkG,MAAAz5D,EAAAl1C,KAAAoL,MAAAujG,MAAAz5D,EAAAl1C,KAAA6S,QACAnO,KAAAuF,SAAAK,IAAA,SAAA4qC,EAAAl1C,KAAAgJ,KAAAD,EAAA,MAEArE,KAAAuF,SAAAK,IAAA,kBAIA5F,KAAAs+P,uBAEAt+P,KAAAwwC,SACAxwC,KAAAkvT,wBAEAlvT,KAAA2C,OAAA+tN,cAAAC,WACA,CACA,EAEAq+F,EAAAjvT,UAAAw+P,eAAA,SAAA5/O,GACA,OAAAA,EAAAjZ,MAEA,6BACA1F,KAAA2C,OAAAs7B,QAAA+/N,aAAA78O,KAAAnhB,KAAAwwC,OAAAl1C,KAAAV,GAAAoF,KAAAwwC,OAAAtG,QAAAlqC,KAAAwwC,OAAA1H,OAAA,CAAA6mR,eAAA,OACA,MAEA,gCACAryD,EAAAH,UAAAn9P,KAAAqjD,UAIA,EAEA2rQ,EAAAjvT,UAAA+9P,gBAAA,SAAAttN,EAAAiuN,GACArB,EAAAjB,iBAAA3rN,EAAA9L,WAAA1kC,KAAAu+P,eAAAh8P,KAAAvC,OAEAo9P,EAAApB,aAAA,CACAt2P,KAAA,yBACA8qC,SACAguN,iBAAAx+P,KAAAmH,SAAAu9B,WACA+5N,aAEA,EAEAuwD,EAAAjvT,UAAAu+P,qBAAA,WACAt+P,KAAAwwC,SAEA4sN,EAAA9pN,aACA8pN,EAAApB,aAAA,CACAt2P,KAAA,4BACA8qC,OAAAxwC,KAAAwwC,SAIAxwC,KAAAwwC,OAAA7tC,OAAAe,SAAAk7P,kBAAA5+P,KAAA09P,iBACA19P,KAAAwwC,OAAA7tC,OAAA2xI,UACAt0I,KAAAwwC,OAAArhC,oCAEAiuP,EAAA9pN,aACA8pN,EAAAhB,mBAAAp8P,KAAAwwC,OAAA9L,YAGA1kC,KAAA4vT,gBAAA5vT,KAAAkvT,uBAEAlvT,KAAAwwC,OAAA,KACA,EAEAw+Q,EAAAjvT,UAAA6vT,gBAAA,SAAA3pL,GACA9sI,EAAAiJ,KAAA6jI,GAAA,SAAAojD,GACAA,EAAAruJ,SACA,GACA,EAEAg0R,EAAAjvT,UAAAmP,yBAAA,WACAlP,KAAAs+P,uBAEAt+P,KAAA69P,iBACAT,EAAAb,eAAAv8P,KAAA69P,iBAGA79P,KAAA4vT,gBAAA5vT,KAAAivT,qBACA,EAEAD,EAAAjvT,UAAAs4B,aAAA,SAAA/f,GACA,GAAAtY,KAAA1E,KAAA4lN,gBAAA,IAAAlhN,KAAA1E,KAAA4lN,cAAApoN,QAAAwf,EAAArO,WAAA,CAGA,IAAAuZ,EAAAhhB,EAAAu1B,QAEA8sB,EAAAvsC,EAAAusC,KAAAvsC,EAAAusC,KAAA,QAUA,OATA7kD,KAAA2C,OAAAe,SAAAqI,QACA/L,KAAA1E,KAAAV,GAAA,IAAA0d,EAAArO,eACA7D,EACAy+C,GACA,WACArhC,EAAAc,SACA,GACAhM,EAAAqmP,mBAEAn7O,EAAAa,OAdA,CAeA,EAEA2qS,CACA,IACAv3T,OCjPA,+BACA,SACA,aACA,YACA,SAAA2B,EAAAD,EAAAmM,GACA,aAEA,SAAAuqT,EAAA1sS,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,UAAA+pB,GAEAnjB,KAAAuF,SAAAK,IAAA,CACAiH,QAAA,OACA4xN,cAAA,QAEA,CA2EA,OAzEAn5N,EAAA3F,OAAAkwT,EAAAvqT,GAEAuqT,EAAAj2R,SAAA,aAEAi2R,EAAA9vT,UAAA0H,WAAA,WACA,IAAA1G,EAAAf,KAEAA,KAAA1E,KAAAw0T,cAEA9vT,KAAA+vT,sBAAA,GAEA/vT,KAAA1E,KAAAw0T,YAAA5oT,KAAA,SAAA8oT,GACA,IAAApuT,EAAAb,EAAA4B,OAAA0E,YAAAi9C,eAAA0rQ,EAAAC,UAEA,GACA,SADAruT,EAAA8D,KAEA3E,EAAAgvT,sBAAAlvT,KAAAe,EAAA+uD,oBAEAq/P,EAAAE,eACAtuT,EAAA+uD,mBAAAhrD,SAAA,mBAKA,IAEA3F,KAAA+vT,sBAAAluT,SAAA,SAAAsuT,GACApvT,EAAAqvT,WAAAD,EAAApvT,EAAAgvT,sBACA,IAEA/vT,KAAAqwT,iBACA,EAGAR,EAAA9vT,UAAAqwT,WAAA,SAAA7qT,EAAA+qT,GACAtwT,KAAAyK,sBAAAlF,EAAA,qBACA,IAAAuI,EAAAvI,EAAAuI,YACAwiT,EAAAzuT,SAAA,SAAA0uT,GACAA,EAAAziT,YACA,GACA,GACA,EAEA+hT,EAAA9vT,UAAAswT,eAAA,WAKA,IAAAtvT,EAAAf,KAEA,IAAAu/N,kBAAA,SAAAE,GACAA,EAAA59N,SAAA,SAAA2uT,GACA,cAAAA,EAAA9qT,MACAtM,EAAAo3T,EAAA9wF,YAAAt9N,MAAA,WACA,IAAAquT,EAAAr3T,EAAA4G,MAAAsB,KAAA,wCAEAmvT,EAAA/3T,OAAA,GACA+3T,EAAAruT,MAAA,WACArB,EAAAgvT,sBAAAlvT,KAAAzH,EAAA4G,OACAe,EAAAqvT,WAAAh3T,EAAA4G,MAAAe,EAAAgvT,sBACA,GAEA,GAEA,GACA,IAEA5oG,QAAAjvN,SAAAi4B,KAAA,CACAwvM,WAAA,EACAC,SAAA,GAEA,EAEAiwF,CACA,IAEAp4T,OC5FA,qEACA,SACA,aACA,KACA,UACA,uBACA,SAAA2B,EAAAD,EAAA2K,EAAAwB,EAAAmgM,GACA,aAEA,IAAAirH,EAAA,SAAAvtS,GACA7d,EAAA0f,KAAAhlB,KAAA5G,EAAA,SAAA+pB,EACA,EAkFA,OAhFA7d,EAAA3F,OAAA+wT,EAAAprT,GAEAorT,EAAA92R,SAAA,gCAEA82R,EAAA3wT,UAAAgH,UAAA,WACA,IAAAhG,EAAAf,KAEAA,KAAA2wT,2BAAA,KAEA3wT,KAAA2C,OAAA8oC,WAAAxqC,MAAAjB,MACAA,KAAA2M,gBAEA84L,EAAAtkL,KAAA,iCACA7d,KAAAvC,EAAAwtR,cAAAhsR,KAAAxB,IAEAf,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAs1T,qBACA,SAAAt1T,GACAyF,EAAA8vT,yBAAAv1T,EAEAyF,EAAA4vT,4BACA5vT,EAAA8kM,QAAAvqM,EAAAyF,EAAA+vT,gCACA,IAGA9wT,KAAA2C,OAAAmM,YAAA+kC,2BACA7zC,KAAA1E,KAAAy1T,2BACA,SAAAz1T,GACAyF,EAAA+vT,gCAAAx1T,EAEAyF,EAAA4vT,4BAAA5vT,EAAA8vT,0BACA9vT,EAAA8kM,QAAA9kM,EAAA8vT,yBAAAv1T,EACA,GAEA,EAEAo1T,EAAA3wT,UAAAwuR,cAAA,SAAAyiC,GACAhxT,KAAA2wT,2BAAAK,EAEAhxT,KAAA6wT,0BACA7wT,KAAA6lM,QAAA7lM,KAAA6wT,yBAAA7wT,KAAA8wT,gCACA,EAGAJ,EAAA3wT,UAAA8lM,QAAA,SAAAgrH,EAAAC,GACA,IAAA/vT,EAAAf,KACAi6S,EAAA4W,EAAA14R,QAAA,GAAAn4B,KAAA1E,KAAA21T,qBAAAhqS,IACAghN,EAAA4oF,EAAA14R,QAAA,GAAAn4B,KAAA1E,KAAA21T,qBAAA9xG,SACAnrM,EAAAhU,KAAAm6S,mBAAAF,GAEAiX,EAAA,GAEAJ,GACA33T,EAAA+N,IAAA4pT,EAAA34R,SAAA,SAAAzR,GACA,IAAAyqS,EAAAv9S,KAAAC,MAAA6S,EAAA3lB,EAAAzF,KAAA81T,wBACAC,EAAA,CACAr7G,WAAAm7G,EAAAG,WACAC,QAAAJ,EAAAK,QACAt1R,MAAAxV,EAAA3lB,EAAAzF,KAAAm2T,aACAp+Q,QAAA3sB,EAAA3lB,EAAAzF,KAAAo2T,gBAGAR,EAAArwT,KAAAwwT,EACA,IAEA,IAAAh4T,EAAA,CACA2a,MACAi0N,WACAp2F,YAAA7xI,KAAA1E,KAAAu2I,YACA8/K,kBAAA3xT,KAAA1E,KAAAq2T,kBACAC,YAAA5xT,KAAA1E,KAAAs2T,aAGA5xT,KAAA2wT,2BAAA/jJ,QAAAskJ,EAAA73T,EAAA2G,KAAAuF,SAAAlN,IAAA,GACA,EAEAq4T,EAAA3wT,UAAAo6S,mBAAA,SAAAF,GACA,OAAAn2S,EAAAtF,WAAAsF,EAAA1G,aAAA,mCAAA68S,EAAA,uBACA,EAEAyW,CACA,IAEAj5T,OChGA,qCACA,mBAEA,wCACA,kCACA,4BACA,wBACA,sCACA,4BACA,wCACA,oDACA,sBACA,sCACA,0BACA,wCACA,kCACA,4CACA,0CACA,0CACA,8BACA,wBACA,0BACA,wCACA,oCACA,8CACA,oBACA,0BACA,sBACA,gCACA,oBACA,gCACA,sBACA,0BACA,4BACA,kCACA,0BACA,4BACA,sCACA,oCACA,kCACA,0CACA,gCACA,kCACA,oBACA,kCACA,8CACA,oCACA,oBACA,oBACA,4BACA,kBACA,8BACA,sBACA,wBACA,sBACA,oBACA,0BACA,oBACA,kCACA,kBACA,0BACA,4BACA,sBACA,8BACA,0BACA,gCACA,8BACA,gCACA,kCACA,8BACA,wBACA,wBACA,oCACA,gCACA,0DACA,sBACA,gCACA,0CACA,8CACA,wCACA,4BACA,4CACA,sCACA,sDACA,gDACA,4CACA,4BACA,sBACA,oBACA,kCACA,kBACA,0BACA,4BACA,oBACA,0BACA,4BACA,oBACA,4CACA,kCACA,gCACA,4CACA,8BACA,8CACA,oCACA,8BACA,sEACA,SAAA+hC,GACA,aAGA,WAAAA,EADAvnB,MAAAlS,UAAArB,MAAAsmB,KAAA9jB,UAAA,GAEA,IACAzJ,OChHA,0BACA,eACA,SAAA0B,GAEA,IAAA04T,EAAA,SAAAjhT,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CACA,8CACA,2BACA,kBACA,oBACA,oBACA,yBACA,mBACA,4BACA,kBACA,0BACA,iBACA,oBACA,mBACA,iCACA,iCACA,oCACA,uCACA,iCACA,oBACA,mBACA,2BACA,4BACA,+BACA,4BACA,wBACA,qCACA,uBACA,+BACA,qBACA,2BACA,uCACA,0BACA,uBACA,sBACA,iCACA,qBACA,0BACA,kCACA,0BACA,4BACA,4BACA,2BACA,gBACA,4BACA,8BACA,yBACA,mBACA,yBACA,gCACA,8BACA,6BACA,6BACA,4CACA,6CACA,iCACA,4CACA,0BACA,wBACA,8BACA,+BACA,kBACA,8BACA,6BACA,gCACA,2BACA,gCACA,sCACA,mCACA,+BACA,0BACA,2CACA,sBACA,4BACA,wBACA,SAAA+hC,GACA,aAEA,IACA6B,EAAA,IAAA7B,EADAvnB,MAAAlS,UAAArB,MAAAsmB,KAAA9jB,UAAA,IAGAm8U,EAAA,EAEAC,EAAA,SAAAn2U,GACAnH,KAAAmH,UACA,EAgBA,OAdAm2U,EAAAv9U,UAAAq+T,mBAAA,SAAA19T,EAAA0uB,EAAA/kB,GACA,IAAAtJ,EAAAf,KACA,OAAA7G,EAAA+N,IAAAxG,EAAAu9P,SAAA,SAAA3iQ,GACA,IACAmgU,EAAA,IADApgS,EAAAhjC,IAAAiD,EAAAmvC,iBACA,CAAAnvC,EAAA+O,GAMA,OALAoxT,EAAArsS,cACAqsS,EAAAt0T,SAAApG,EAAAoG,SACAs0T,EAAA94T,OAAA5B,EAAAoG,SAAAxE,OACA84T,EAAA7gS,gBAAAyiT,EACA5hB,EAAAyD,oBAAA5jU,EAAAmvC,gBACAgxR,CACA,GACA,EAEA6hB,CACA,IACA7lV,OCzIA,mCACA,SACA,eACA,SAAA2B,EAAAD,GACA,aAEA,IAAAokV,EAAA,WACAv9U,KAAAimI,cAAA7/H,CACA,EA6IA,OA3IAm3U,EAAAx9U,UAAAkB,MAAA,SAAAW,GAMA,IAHA,IAAAA,EAAAtG,KAAAyJ,mBACAnD,EAAA0H,uBAEAtJ,KAAAm0C,UAAAvyC,GACAA,EAAA47U,yBAAA57U,EAAAe,OAAAmM,YAAA+kC,2BACAjyC,EAAAtG,KAAAmiV,yBACA,SAAAniV,IAEA,KADAA,EAAA68B,QAAAz/B,QAAA4C,EAAA68B,QAAA,GAAAv2B,EAAAtG,KAAAoiV,gCAEA97U,EAAAkH,OAEAlH,EAAA4H,MACA,SAEA,GAAAxJ,KAAAo0C,cAAAxyC,IAGA,GAFA5B,KAAA29U,8BAAA/7U,GAEAA,EAAAtG,KAAAsiV,8BAAA,CACA,IAAAv0J,EAAAznL,EAAAe,OAAAm2B,WAAAwwJ,oBAAA1nL,EAAAtG,KAAAuiV,uBAAA79U,KAAA29U,8BAAAp7U,KAAAvC,KAAA4B,IACA5B,KAAAimI,WACAjmI,KAAAimI,SAAA,IACAjmI,KAAAimI,SAAAplI,KAAAwoL,EACA,OACA,GAAArpL,KAAA89U,cAAAl8U,GAAA,CACAA,EAAAe,OAAAO,WAAAC,sBAAAvB,EAAAtG,KAAAyiV,wBACA16U,SAAAzB,EAAAe,QAAA,GACAW,MAAA,SAAAC,GACAA,EAAAC,gBACA5B,EAAA8G,uBAEA9G,EAAA0H,sBAEA,GACA,SAAAtJ,KAAAg+U,gBAAAp8U,GAGA,GAFAA,EAAA0H,uBAEA1H,EAAAtG,KAAA2iV,gBAIA,CACA7kV,EAAA,8BAAAV,QACAU,EAAA,4DACAyN,SAAA,QAGA7G,KAAAk+U,YAAAt8U,IAAAtG,KAAA2iV,iBACA14U,SAAAI,SAAA,aAAA/D,EAAAtG,KAAAV,MAEA,IAAAkI,EAAA,GAEA3J,EAAAiJ,KAAAR,EAAAtG,KAAA6iV,4BAAA,SAAAtgU,GACA,IAAAugU,EAAA,cAAAx8U,EAAAtG,KAAAV,gBAAA,UAAAijB,EAAA,UAAAA,IACAwgU,EAAA,gBAAAxgU,KAAAjc,EAAAtG,KAAAV,KAEAgH,EAAA+G,0BAAAhD,SAAA04U,GAEA,IAAAh2P,EAAA,GAAA+1P,MAAAC,IAEAv7U,EAAAkoD,SAAAq9B,IACAvlF,EAAAjC,KAAAwnF,EAEA,IAEA,IAEAi2P,EAAAllV,EAAA,8BAEA0J,EAAAjB,SAAA,SAAAwmF,GACAi2P,EAAAz5S,OAAAmmB,SAAAq9B,IACAi2P,EAAAz5S,KAAA,GAAAy5S,EAAAz5S,UAAAwjD,oEAEA,GACA,MApCAlvF,EAAAiJ,KAAAR,EAAAtG,KAAA6iV,4BAAA,SAAAtgU,GACAjc,EAAA+G,0BAAAhD,SAAA,gBAAAkY,EACA,GAoCA,EAEA0/T,EAAAx9U,UAAA49U,8BAAA,SAAA/7U,GACA5B,KAAAq0C,yBAAAzyC,GACAA,EAAA8G,uBAEA9G,EAAA0H,sBACA,EAKAi0U,EAAAx9U,UAAAs0C,yBAAA,SAAAzyC,GACA,IAAA4K,EAAA5K,EAAAe,OAAAm2B,WAAAvsB,SAAA3K,EAAAtG,KAAAuiV,wBAEA,QAAAz3U,IAAAoG,EACA,SAEA,eAAApT,EAAAsM,KAAA8G,GACA,WAAAA,EAEA,cAAApT,EAAAsM,KAAA8G,GACA,eAAAA,EAAAlS,cAEA,UAAAmiB,MAAA,uEAAA7a,EAAAtG,KAAAuiV,uBAAA,qCACA,EAEAN,EAAAx9U,UAAAo0C,UAAA,SAAAvyC,GACA,qBAAAA,EAAAtG,KAAA0J,yBAAApD,EAAAtG,KAAAmiV,uBACA,EAEAF,EAAAx9U,UAAAq0C,cAAA,SAAAxyC,GACA,yBAAAA,EAAAtG,KAAA0J,yBAAApD,EAAAtG,KAAAuiV,sBACA,EAEAN,EAAAx9U,UAAA+9U,cAAA,SAAAl8U,GACA,yBAAAA,EAAAtG,KAAA0J,yBAAApD,EAAAtG,KAAAyiV,sBACA,EAEAR,EAAAx9U,UAAAi+U,gBAAA,SAAAp8U,GACA,0BAAAA,EAAAtG,KAAA0J,yBAAApD,EAAAtG,KAAA6iV,0BACA,EAGAZ,EAAAx9U,UAAAu0I,QAAA,WACAn7I,EAAAiJ,KAAApC,KAAAimI,UAAA,SAAAojD,GACAA,EAAAruJ,SACA,IACAh7B,KAAAimI,cAAA7/H,CACA,EAEAm3U,EAAAx9U,UAAAm+U,YAAA,SAAAt8U,EAAAw0N,GACA,YAAAx0N,EAAAiE,QAAA,CACA,GAAAjE,EAAAtG,KAAAV,KAAAw7N,EACA,OAAAx0N,EAGAA,IAAAiE,MACA,CACA,EAEA03U,CACA,IACA9lV,OCvJA,kBACA,SACA,aACA,qBACA,YACA,SAAA2B,EAAAD,EAAA0wC,EAAAr0B,GACA,aAEA,IAAA+oU,EAAA,WACAv+U,KAAAw+U,oBAAA,GACAx+U,KAAA8O,YAAA,EACA,EAoHA,OAlHAyvU,EAAAx+U,UAAA8zC,2BAAA,SAAAlJ,EAAA17B,EAAAu7B,EAAA4/R,GACA,IAAAxvU,EAAAzB,EAAAugD,WAQA,OAPA15C,KAAAw+U,oBAAA39U,KAAA,CACAjG,KACA+vC,YACA17B,UACAu7B,mBACA4/R,iBAAAhxU,EAAA+O,OAEAvN,CACA,EAEA2jV,EAAAx+U,UAAAgoL,oCAAA,SAAAp9I,GACA,OAAAxxC,EAAA4gB,MAAA/Z,KAAAw+U,oBAAA,CAAA7zS,aACA,EAEA4zS,EAAAx+U,UAAAqvU,qDAAA,SAAAzkS,GACA,IAAA8zS,EAAA50S,EAAAC,wBACA,OAAA3wC,EAAAghB,OAAAna,KAAA+nL,oCAAAp9I,IAAA,SAAAhqC,GACA,sBAAAA,EAAA,iBACA,SACA,IAAA8oC,EAAAI,EAAAC,wBAEA,OADAnpC,EAAA6pC,iBAAAf,GACAtwC,EAAAguP,QAAAs3F,EAAAh1S,EACA,GACA,EAEA80S,EAAAx+U,UAAAwgP,6BAAA,SAAA3lP,GACA,IAAA8jV,EAAA1+U,KAAAkqU,sBAAAtvU,GACAoF,KAAAw+U,oBAAArlV,EAAAg7L,QAAAn0L,KAAAw+U,oBAAAE,EACA,EAEAH,EAAAx+U,UAAAmqU,sBAAA,SAAAtvU,GACA,OAAAzB,EAAA4d,UAAA/W,KAAAw+U,oBAAA,CAAA5jV,MACA,EAEA2jV,EAAAx+U,UAAA4+U,mBAAA,SAAA7qS,GACA,MAAAA,EAAAl5C,KACAzB,EAAAiJ,KAAA0xC,EAAAnb,SAAA,SAAA+7H,EAAAlzJ,GACAsyC,EAAAnb,QAAAn3B,GAAAgU,EAAA1D,+BAAA4iJ,EACA,IACA10J,KAAA8O,YAAAjO,KAAAizC,GAEA,EAEAyqS,EAAAx+U,UAAA6+U,eAAA,WACA,OAAAppU,EAAA7B,UAAA3T,KAAA8O,YACA,EAEAyvU,EAAAx+U,UAAA8+U,mBAAA,SAAAC,GACA,OAAA3lV,EAAA+I,MAAAlC,KAAA8O,aACAqL,QAAA,SAAA9B,GACA,SAAAA,EAAA/f,MAAAwmV,IAAA,IAAAA,EAAAhmV,QAAAuf,EAAA3S,MACA,IACA0qP,SAAA,SAAA/3O,GACA,OAAAA,EAAA/f,IACA,IACA4O,KAAA,SAAA4H,EAAAiwU,GACA,OACAzmV,KAAAymV,EACAC,OAAA,IAAAlwU,EAAApW,OAEA,IACAshB,QAAA,SAAA3B,GACA,OAAAA,EAAA/f,KAAAgC,aACA,IACAkS,OACA,EAEA+xU,EAAAx+U,UAAAk/U,oBAAA,SAAAC,GACA,OAAA/lV,EAAA4d,UAAA/W,KAAA8O,YAAA,CAAAxW,KAAA4mV,GACA,EAEAX,EAAAx+U,UAAAo/U,0BAAA,SAAAD,GACA,IAAAprS,EAAA9zC,KAAAi/U,oBAAAC,GACA,OAAAprS,IAAAsrS,qBAAA,IACA,EAEAb,EAAAx+U,UAAAs/U,qBAAA,SAAA3nS,EAAA4nS,GAIA,GAHA,WAAAlmV,EAAAsM,KAAAgyC,KACAA,EAAA13C,KAAAi/U,oBAAAvnS,KAEAA,EACA,SAEA,IAAAx1C,EAAA/I,EAAA+I,MAAAw1C,EAAA/e,SACAxe,QAAA,SAAAu6I,GACA,OAAAA,EAAA6qL,WAAA7qL,EAAAwoE,KACA,IACArwC,MAAA,SAQA,OANAyyJ,IACAp9U,IAAA8X,QAAA,SAAA0Y,GACA,OAAAA,EAAAp4B,aACA,KAGA4H,EAAAsK,OACA,EAEA+xU,EAAAx+U,UAAAy/U,iBAAA,SAAA1rS,GACA9zC,KAAA+O,qBAAA+kC,GACA9zC,KAAA2+U,mBAAA7qS,EACA,EAEAyqS,EAAAx+U,UAAAgP,qBAAA,SAAA+kC,GACA9zC,KAAA8O,YAAA3V,EAAAghB,OAAAna,KAAA8O,aAAA,SAAAuJ,GAAA,OAAAA,EAAAzd,KAAAk5C,EAAAl5C,EAAA,GACA,EAEA2jV,EAAAx+U,UAAAkf,MAAA,WACAjf,KAAAw+U,oBAAA,GACAx+U,KAAA8O,YAAA,EACA,EAEAyvU,CACA,IACA9mV,OCjIA,gCACA,wBACA,SAAA8lV,GACA,aAEA,IAAAkC,EAAA,SAAA73F,EAAA/hP,GACA7F,KAAA4nP,UACA5nP,KAAA6F,SACA7F,KAAA4sK,QAAA,IAAA2wK,CACA,EA6BA,OA3BAkC,EAAA1/U,UAAAkB,MAAA,SAAAW,GACA5B,KAAA0/U,8BAAA99U,GACAA,EAAAnB,YAAA,oBAAAT,KAAA2/U,4BAAAp9U,KAAAvC,KAAA4B,IAEA5B,KAAA4sK,QAAA3rK,MAAAW,EAEA,EAEA69U,EAAA1/U,UAAA4/U,4BAAA,SAAA/9U,GACA5B,KAAA4nP,QAAAhmP,EAAAtG,KAAAoiV,+BAGA97U,EAAA8G,uBAEA9G,EAAA0H,sBACA,EAEAm2U,EAAA1/U,UAAA2/U,8BAAA,SAAA99U,GACA,qBAAAA,EAAAtG,KAAA0J,0BAEApD,EAAAtG,KAAAmiV,0BAAAz9U,KAAA6F,OAAAvK,KAAAo8C,YAAA13C,KAAA6F,OAAAvK,KAAAklP,mBACA,EAEAi/F,EAAA1/U,UAAAu0I,QAAA,WACAt0I,KAAA4sK,QAAAt4B,SACA,EAEAmrM,CACA,IACAhoV,OCxCA,kBACA,eACA,SAAA0B,GACA,aAEA,IAAAymV,EAAA,WACA,IAAA/lV,OAAAC,SAAAC,OAAA,SAEA,IAAAuZ,EAAAzZ,OAAAC,SAAAC,OAAAoc,OAAA,GAAA3d,MAAA,KAEA,IAAA8a,EAAA,SAGA,IADA,IAAAm2B,EAAA,GACAhxC,EAAA,EAAAA,EAAA6a,EAAA5a,SAAAD,EAAA,CACA,IAAAonV,EAAAvsU,EAAA7a,GACAqnV,EAAAD,EAAA/mV,QAAA,KAEA,GAAAgnV,EAAA,CACA,IAAA3sB,EAAA0sB,EAAAhnV,UAAA,EAAAinV,GACAC,EAAAF,EAAAhnV,UAAAinV,EAAA,GACAr2S,EAAA0pR,GAAAr4I,mBAAAilK,EAAAlgU,QAAA,WACA,CACA,CAEA,OAAA4pB,CACA,EAEAu2S,EAAA,SAAAlnT,GACA94B,KAAA84B,YACA,EAmCA,OAjCAknT,EAAA38T,WAAA,WACA,IAAA/P,EAAA,IAAA0sU,EAAAJ,KASA,OAPA/lV,OAAAyhQ,QAAA2kF,UAAA,IAAAl8O,MAAAlqG,OAAAyhQ,QAAA2kF,UAAA,CACAh/U,MAAA,SAAAojC,EAAAiuB,EAAA4tR,GAEA,OADA5sU,EAAAogC,SACArP,EAAApjC,MAAAqxD,EAAA4tR,EACA,IAGA5sU,CACA,EAEA0sU,EAAAjgV,UAAAogV,kBAAA,WACA,OAAAhnV,EAAAwW,KAAA3P,KAAA84B,WACA,EAEAknT,EAAAjgV,UAAA8sU,cAAA,WACA,OAAA7sU,KAAA84B,UACA,EAEAknT,EAAAjgV,UAAAk3T,gBAAA,SAAA5vF,EAAA76N,GACAxM,KAAA84B,WAAAuuM,GAAA76N,CACA,EAEAwzU,EAAAjgV,UAAAo3T,WAAA,SAAA9vF,GACA,OAAArnO,KAAA84B,WAAAuuM,EACA,EAEA24G,EAAAjgV,UAAA2zC,OAAA,WACA1zC,KAAA84B,WAAA8mT,GACA,EAEAI,CACA,IACAvoV,OClEA,oBACA,SACA,qBACA,oCACA,iBACA,oBACA,yBACA,0BACA,yBACA,gBACA,uBACA,gBACA,2BACA,qBACA,+BACA,kCACA,iBACA,+BACA,cACA,mBACA,SAAA2B,EAAAywC,EAAA+2D,EAAAn9C,EAAAovQ,EAAAf,EAAA39F,EAAAmgG,EAAA+B,EAAAnjG,EAAA6jG,EAAA+C,EAAAmC,EAAAqhB,EAAAC,EAAAgB,EAAAkB,EAAA1rS,EAAAisS,GACA,aAEA,IAAAI,EAAA,WACA,EAkEA,OAhEAA,EAAAC,WAAA,SAAAp2S,EAAA/uC,EAAAk9C,GACA,IAAAz1C,EAAA,IAAAy9U,EAgBA,OAfAz9U,EAAAy1C,OACAz1C,EAAAi7P,QAAAxlN,EACAz1C,EAAAzH,cACAyH,EAAA+tN,cAAA,IAAAyD,EAAA/7K,GACAz1C,EAAAyoC,aAAA,IAAAkpR,EAAA3xT,EAAA+tN,cAAAx1N,EAAAk9C,GACAz1C,EAAAm2B,WAAA,IAAA+5R,EACA,IAAAf,EACA,IAAAA,EAAA7nR,GACA,IAAA6nR,GAEAnvT,EAAA+B,WAAA,IAAA2xT,EAAAn7T,EAAAwJ,WAAAxJ,EAAAgE,iBACA9E,UAAA4xR,cACA5xR,UAAAkwR,UACA3nR,EAAA2Q,YAAA0sU,EAAA38T,aACA1gB,EAAAqR,IAAA,IAAA+iT,EAAAp0T,EAAA2Q,aACA3Q,CACA,EAEAy9U,EAAArgV,UAAAm+P,kBAAA,SAAA/0N,EAAAm3S,EAAAl2S,EAAA6yN,EAAA55M,EAAAs6M,EAAAu+D,GACA,IAAAv5T,EAAA,IAAAy9U,EAoBA,OAlBAhnV,EAAAuG,OAAAgD,EAAA3C,MAEA2C,EAAAmF,eAAAu7C,EACA1gD,EAAA4K,YAAAowP,EACAh7P,EAAAqoC,WAAA,IAAAkoL,EAAAvwN,EAAA+tN,cAAAvnL,EAAAgqL,cAAAhqL,EAAAiqL,mBACAzwN,EAAAu2B,SAAAiQ,EAAAvuC,GACA+H,EAAA20B,iBAAA6R,EAAAzE,WACA/hC,EAAAqhC,aAAAmF,EAAA0sB,KAAAv6D,KAAA0oC,aACArhC,EAAAuhC,WAAAiF,EAAA0sB,KAAAv6D,KAAA4oC,WACAvhC,EAAA0E,YAAA,IAAAo8C,EAAAm9C,GAAA,GACAj+F,EAAAm2B,WAAA94B,KAAA84B,WAAA+sJ,KAAAz7I,EAAA6yN,GACAt6P,EAAAO,WAAA,IAAA42T,EAAA3wR,EAAAjmC,WAAAP,GACAA,EAAAe,SAAA,IAAAu4T,EAAA9yR,EAAA7oC,OAAAqC,EAAA,IAAA26U,EAAAgD,GAAApkB,GACAv5T,EAAAmM,YAAA,IAAAyvU,EACA57U,EAAA8oC,WAAA,IAAA8xS,EACA56U,EAAAsxC,SAAA,IAAAF,EACApxC,EAAAm1C,gBAAA,IAAAjO,EAAAlnC,GAEAA,CACA,EAEAy9U,EAAArgV,UAAA8lL,KAAA,SAAAvqL,EAAAilV,EAAAx/J,GACA,IAAAy/J,EAAAxgV,KAAA84B,WAAAw5R,iBAAAh3T,GACAmlV,EAAA,IAAAL,EACAM,EAAA,IAAA72S,EAAA42S,GAEA,OAAArnV,EAAAuG,OACA8gV,EACAzgV,KACA,CACAyrC,WAAA,IAAAg0S,EAAAnkV,EAAAilV,GACAznT,WAAA0nT,EACA1oS,gBAAA4oS,EACAn5F,SAAAjsP,EAAAylL,IAEA,EAEAq/J,EAAArgV,UAAAu0I,QAAA,WACAt0I,KAAAyrC,WAAA6oG,SACA,EAEA8rM,CACA,IACA3oV,OC5FA,mBACA,KACA,wBACA,SAAAqM,EAAA82P,GACA,aAEA,IAAA+lF,EAAA,SAAA3sU,EAAA4sU,GACA5gV,KAAAgU,MACAhU,KAAA4gV,gBACA5gV,KAAAs7P,QAAAV,EAAAI,iBAAA,MACA,EAuCA,OArCA2lF,EAAA5gV,UAAA07P,WAAA,SAAAviO,EAAAgR,EAAApB,EAAA4yN,GACA17P,KAAAs7P,QAAAz6P,KAAAhH,OAAAC,SAAAyoB,MAEA,IAAAs+T,EAAA7gV,KAAA4gV,cAAA1nT,GAEA2nT,IACAA,EAAA,qBAAA3nT,GAEA,IAAAJ,EAAA,GACA3/B,EAAAwW,KAAAu6B,GAAAxxC,SACAogC,EAAAoR,QAAAt2B,KAAAE,UAAAo2B,IACA/wC,EAAAwW,KAAAm5B,GAAApwC,SACAogC,aAAAllB,KAAAE,UAAAg1B,IAEA,IAAA4C,EAAA1rC,KAAAgU,IAAA21B,QAAA7lC,EAAA1G,aAAAyjV,GAAA/nT,GACA94B,KAAAgU,IAAA2nP,QAAAjwN,EAAAgwN,EACA,EAEAilF,EAAA5gV,UAAA67P,aAAA,SAAA1xN,EAAApB,GACA,IAAAqyN,EAAAn7P,KAAAs7P,QAAA/mP,MACA,GAAA4mP,EAAA,CAEA,IAAAriO,EAAA,CAEAoR,UACAt2B,KAAAE,UAAAo2B,QACA9jC,EAEA0yB,WAAAgQ,EACAl1B,KAAAE,UAAAg1B,QACA1iC,GAGAslC,EAAA1rC,KAAAgU,IAAA21B,QAAAwxN,EAAAriO,GACA94B,KAAAgU,IAAA2nP,QAAAjwN,GAAA,EAdA,CAeA,EAEAi1S,CACA,IACAlpV,OCnDA,gCACA,SACA,eACA,SAAA2B,EAAAD,GACA,aAEA,IAAA2gC,EAAA,aACAC,EAAA,aAEA,SAAAC,EAAA1+B,GACA0E,KAAA1E,MACA,CA0CA,OAxCA0+B,EAAAJ,SAAA,eAEAI,EAAAj6B,UAAAsjB,WAAA,WACArjB,KAAAm6B,wBACAn6B,KAAAo6B,kBACA,EAEAJ,EAAAj6B,UAAAo6B,qBAAA,WACA,OAAAn6B,KAAAq6B,gBAAAP,IAAA95B,KAAAq6B,gBAAAN,EACA,EAEAC,EAAAj6B,UAAAs6B,gBAAA,SAAApwB,GACA,OAAAjK,KAAA1E,KAAAoI,UACA1D,KAAA1E,KAAAoI,SAAAuG,IACAjK,KAAA1E,KAAAoI,SAAAuG,GAAAtG,OACA,EAEAq2B,EAAAj6B,UAAAq6B,iBAAA,WACA,IAAAr5B,EAAAf,KAEA9H,SAAA4oV,QAAA,SAAApgV,GACA,IAAA45B,GAAA55B,EAAA65B,eAAA75B,EAAA85B,cAAAD,eAAAD,MAEAG,EAAAthC,EAAAmI,KAAAg5B,GAAA,SAAAnoB,GAAA,eAAAA,EAAAuoB,IAAA,IAEA,GAAAD,EACA15B,EAAAs5B,gBAAAP,IACA/4B,EAAA4B,OAAAe,SAAAqI,QAAAhL,EAAAzF,KAAAoI,SAAAo2B,GAAAl2B,gBAAA,KAAA62B,EAAAE,YAAA,KAAA55B,EAAA65B,oBACA,GAAA75B,EAAAs5B,gBAAAN,GAAA,CACA,IAAAc,EAAA1hC,EAAAmI,KAAAg5B,GAAA,SAAAnoB,GAAA,iBAAAA,EAAAuoB,IAAA,IAEAG,GACAA,EAAAC,aAAA,SAAAC,GACAh6B,EAAA4B,OAAAe,SAAAqI,QAAAhL,EAAAzF,KAAAoI,SAAAq2B,GAAAn2B,gBAAA,KAAAm3B,EAAA,KAAAh6B,EAAA65B,cACA,GAEA,CACA,CACA,EAEAZ,CACA,IACAviC,OCvDA,yCACA,SACA,KACA,qBACA,aACA,wBACA,SAAAwB,EAAA6K,EAAA2hM,EAAAs7I,EAAA3jF,GACA,aAEA,IAAA/jQ,EAAAJ,EAAAI,SAKA,SAAA2nV,EAAAC,GACAjhV,KAAAihV,cACAjhV,KAAAkhV,QAAA,CACA,CAwDA,OAtDAF,EAAApnT,SAAA,wBAEAonT,EAAAjhV,UAAAsjB,WAAA,WACArjB,KAAAihV,YAAAE,0BACAnhV,KAAAiP,QAAAjP,KAAAohV,YAAA7+U,KAAAvC,MACA5G,EAAAlB,UAAAwD,GAAA,QAAAsE,KAAAiP,SAEA,EAEA+xU,EAAAjhV,UAAAqhV,YAAA,SAAA1gV,GACA,QAAAA,EAAA4lD,QAAA,CAGA,IAAA+6R,EAAA,IAAAtpV,KAEAiI,KAAAshV,sBAAAD,EAAArhV,KAAAshV,qBAvBA,KAwBAthV,KAAAkhV,QAAA,EACAlhV,KAAAshV,qBAAAD,GACAE,IAAAvhV,KAAAkhV,SACAlhV,KAAAkhV,QAAA,EACAlhV,KAAAshV,qBAAA,KACAthV,KAAA87P,gBACA1iQ,EAAAlB,UAAAsS,IAAA,QAAAxK,KAAAiP,WAEAjP,KAAAkhV,UACAlhV,KAAAshV,qBAAAD,EAdA,CAgBA,EAEAL,EAAAjhV,UAAA+7P,cAAA,WACAilF,EAAAvqJ,WAAAn9L,EAAAmoV,SAEA,IAAAzgV,EAAAf,KACA9G,QAAA,kDACAusM,EAAAtkL,KAAA,gBACA7d,MAAA,SAAAm+U,GACA1gV,EAAAmgB,MAAAugU,EACA,GACA,GACA,EAEAT,EAAAjhV,UAAAmhB,MAAA,SAAAugU,GACA,IAAAC,EAAA,CACAC,SAAA,sCACArjV,YAAAwF,EAAAzF,eAAA,IACAujV,UAAA99U,EAAA/F,eAAA,IACA8jV,UAAA/9U,EAAAvF,aAAA,KAGAkjV,EAAA70K,QAAA80K,EAAAxpV,SAAAgkT,eAAA,sBAEA9+C,EAAAd,eACA,EAEA0kF,CACA,IACAvpV,OC3EA,mBACA,SACA,eACA,SAAA2B,EAAAD,GACA,aAEA,IAAAwwC,EAAA,SAAA9jC,GACA1M,EAAA0I,QAAAgE,EAAAC,MAAA,SAAAlE,GACAA,EAAAtG,KAAAV,KACAgH,EAAA2D,SAAAk9B,SAAA,uBACA7gC,EAAA2D,SAAAI,SAAA,mCAAA/D,EAAAtG,KAAAV,KAGA+uC,EAAA/nC,EACA,GACA,EAEAkgV,EAAA,SAAA3+T,GACAnjB,KAAAmjB,UACAnjB,KAAAijQ,UAAAjjQ,KAAAi+I,OAAA17I,KAAAvC,MACAA,KAAAmpL,WAAA,IACA,EAkFA,OAhFA24J,EAAA/hV,UAAA2Q,OAAA,WACAi5B,EAAA3pC,KAAAmjB,QAAAqtB,QAEA,IAAAuxS,EAAA/hV,KAAAmjB,QAAAqtB,OAAAzoC,YACA09C,QACA9/C,SAAA,iBACAq8U,EAAAhiV,KAAAmjB,QAAAqtB,OAAAjrC,SACAkgD,QACA9/C,SAAA,iBACAs8U,EAAA7oV,EAAA,WACAwM,IAAA,CACAzB,SAAA,QACAuC,IAAA,EACAo2B,QAAA,cACAv4B,OAAA,UACAgqE,gBAAA,UACAryC,MAAA,QACAjvB,OAAA,SACAxG,KAAA,EACAE,MAAA,EACAqG,MAAA,QACAs0B,UAAA,SACA4kK,aAAA,sBAEAr6J,OAAAzyC,EAAA,YAAAyhC,KAAA,0BACAgR,OAAAzyC,EAAA,YAAAyhC,KAAA,cAAAl1B,SAAA,aAAAjK,GAAA,QAAAsE,KAAAswB,OAAA/tB,KAAAvC,QACAA,KAAAmpL,WAAA/vL,EAAA,WACAyyC,OAAAk2S,GACAl2S,OAAAm2S,GACAn2S,OAAAo2S,GACAr8U,IAAA,CACAzB,SAAA,WACAuC,IAAA,EACAD,KAAA,EACAE,MAAA,EACAC,OAAA,EACArC,OAAA,UACAgqE,gBAAA,QACA0I,UAAA,SAEApwE,SAAAzN,EAAA,SAEAA,EAAA,QACAuM,SAAA,sBAEAvM,EAAAlB,UAAAwD,GAAA,QAAAsE,KAAAijQ,UACA,EAEA6+E,EAAA/hV,UAAAuwB,OAAA,WACAtwB,KAAAmjB,QAAA++T,UACA,EAEAJ,EAAA/hV,UAAAk+I,OAAA,SAAA3lI,GACA,IAAA6pU,EAAA/oV,EAAAkf,EAAA+rB,QAAAyrC,QAAA,uBACA,OAAAqyQ,EAAAzpV,OAAA,CAGA,IAAAmtI,EAAAs8M,EAAAl6S,KAAA,SAAAzvC,MAAA,KAIAqvQ,EAHA1uQ,EAAAmI,KAAAukI,GAAA,SAAA/lG,GACA,WAAAA,EAAAhnC,QAAA,gBACA,IACAD,UAAA,IAEAupV,EAAAhpV,EAAAkf,EAAA+rB,QAAAyrC,QAAA,uBACA3mC,EAAAnpC,KAAAmjB,QAAAqtB,OAAAl1C,KACAo4T,EAAA0uB,EAAA1pV,OAAA,EACAywC,EAAAvuC,GACAuuC,EAAAnF,aAEAhkC,KAAAmjB,QAAA8nI,SAAAyoK,EAAA7rD,EAdA,CAeA,EAEAi6E,EAAA/hV,UAAAmrF,QAAA,WACAlrF,KAAAmpL,WAAApwL,SACAiH,KAAAmpL,WAAA,KAEA/vL,EAAA,QAAAwP,YAAA,sBACAxP,EAAAlB,UAAAsS,IAAA,QAAAxK,KAAAijQ,UACA,EAEA6+E,CACA,IACArqV,OCzGA,wBACA,OACA,mBACA,SAAA+K,EAAAs/U,GACA,aAEA,IAAAO,EAAA,SAAA7xS,GACAxwC,KAAAwwC,SACAxwC,KAAAylD,MAAA,IACA,EAkCA,OAhCA48R,EAAAtiV,UAAAuiV,QAAA,WACA,OAAAtiV,KAAAylD,KACA,EAEA48R,EAAAtiV,UAAAq8G,KAAA,WACA,OAAA55G,EAAA6hB,QAAArkB,KAAAuiV,YAAAhgV,KAAAvC,MACA,EAEAqiV,EAAAtiV,UAAAwiV,YAAA,SAAAj+T,GACA,IAAAvjB,EAAAf,KACAA,KAAAylD,MAAA,IAAAq8R,EAAA,CACAtxS,OAAAxwC,KAAAwwC,OACAy6G,SAAA,SAAAyoK,EAAA7rD,GACAvjP,EAAA,CACAovS,cACA7rD,YAEA9mQ,EAAAyhV,cACA,EACAN,SAAA,WACA59T,EAAA,MACAvjB,EAAAyhV,cACA,IAEAxiV,KAAAylD,MAAA/0C,QACA,EAEA2xU,EAAAtiV,UAAAyiV,aAAA,WACAxiV,KAAAylD,MAAAylC,UACAlrF,KAAAylD,MAAA,IACA,EAEA48R,CACA,IACA5qV,OC7CA,iCACA,yBACA,SAAA4qV,GACA,aAKA,SAAAI,EAAAxB,GACAjhV,KAAA2wL,cAAAswJ,EAAA3lV,KACA0E,KAAAshV,qBAAA,KACAthV,KAAAkhV,QAAA,EACAlhV,KAAA0iV,SAAA,CACA,CA2CA,OAzCAD,EAAA7oT,SAAA,gBAEA6oT,EAAA1iV,UAAAsjB,WAAA,WACAjqB,EAAAlB,UAAAwD,GAAA,QAAAsE,KAAAohV,YAAA7+U,KAAAvC,MACA,EAEAyiV,EAAA1iV,UAAAqhV,YAAA,SAAA1gV,GACA,GAjBA,KAiBAA,EAAA4lD,UAAAtmD,KAAA0iV,QAAA,CAGA,IAAArB,EAAA,IAAAtpV,KAEAiI,KAAAshV,sBAAAD,EAAArhV,KAAAshV,qBArBA,KAsBAthV,KAAAkhV,QAAA,EACAlhV,KAAAshV,qBAAAD,GACA,IAAArhV,KAAAkhV,SACAlhV,KAAAkhV,QAAA,EACAlhV,KAAAshV,qBAAA,KACAthV,KAAA0iV,SAAA,EAEA,IAAAL,EAAAriV,KAAAmH,UAAAi1G,OACA7vE,KAAAvsC,KAAA2iV,gBAAApgV,KAAAvC,SAEAA,KAAAkhV,UACAlhV,KAAAshV,qBAAAD,EAhBA,CAkBA,EAEAoB,EAAA1iV,UAAA4iV,gBAAA,SAAApyK,GAGA,GAFAvwK,KAAA0iV,SAAA,EAEAnyK,EAAA,CACA,IAAAv8J,EAAAhU,KAAA2wL,cAAAiyJ,UAAA,IAAAxpV,EAAA8Z,MAAA,CACA20P,QAAAt3F,EAAAs3F,QACA6rD,YAAAnjJ,EAAAmjJ,YACAvhC,WAAAnyR,KAAA2wL,cAAAwhG,aAEAt4R,OAAAu8E,KAAApiE,EACA,CACA,EAEAyuU,CACA,IACAhrV,OC1DA,yCAAA2B,GACA,IAAAosC,EAAA,SAAAltB,GACA,OAAAA,EAAAotB,SACAptB,EAAAkiB,cAAAkL,OACA,EAEA,OACAm9S,OAAA,SAAAzqS,EAAAiL,EAAAjgC,GAEA,IAAAs6E,EAAA,KACAolP,GAAA,EAEAC,GAAA,EACAC,EAAA,EAEAC,EAAA7pV,EAAA,wCAEA8pV,EAAA9pV,EAAA,qCAAAF,QAAAw9L,MAAA,4CACA7vL,SAAAo8U,GAEA7qS,EAAAvM,OAAAo3S,GAEA7pV,EAAAlB,SAAAqgB,iBAAA5S,SAAA,uBACAvM,EAAAlB,SAAAi4B,MAAAxqB,SAAA,uBAEA,IASA4/B,EAAA,SAAAjtB,GACA,GAAAolF,GAIAzrF,MAAA2hD,KAAAt7C,EAAAqyC,gBAAArpD,MAAA,SAAA6wD,GAAA,OAAAA,EAAAggO,aAAA4wD,CAAA,IACA,CAEA,IAAAr9R,EAAAlgB,EAAAltB,GAAA,GAAA5M,QAAAgyF,EACAolP,EAAAp9R,GAhCA,IAkCAA,EAAA,IACAs9R,EAAAjuU,KAAAsd,IAAAqzB,EAAA,KAEA+3K,uBAAA,WACArlL,EAAA,GAAAnc,MAAA+a,SAAA,SACAoB,EAAA,GAAAnc,MAAAknT,wBAAA,QAEAD,EAAAt9U,IAAA,CACAc,IAAA,GAAAs8U,MACA/zM,WAAA,kBACA1tG,UAAA,YAAAyhT,SAEA,IAjBA,CAmBA,EAEA75F,EAAA,SAAA7wO,GACArG,MAAA2hD,KAAAt7C,EAAAqyC,gBAAArpD,MAAA,SAAA6wD,GAAA,OAAAA,EAAAggO,aAAA4wD,CAAA,MAGA3qS,EAAA,GAAAnc,MAAAg7C,UAAA,OACA8rQ,GAAA,EAEAD,IACA1/T,IACA0/T,GAAA,GAGA1qS,EAAA,GAAAnc,MAAA+a,SAAA,SACAoB,EAAA,GAAAnc,MAAAknT,wBAAA,QAEAD,EAAAt9U,IAAA,CACAc,IAAA,QACAuoI,WAAA,oBAGA72F,EAAA,GAAAnc,MAAA+a,SAAA,UAEA/b,oBAAA,YAAAsK,GACAtK,oBAAA,WAAAkuN,GACA,EAEAjxP,SAAAs3B,iBAAA,cA9DA,SAAAlX,GACA,KAAAyqU,GAAA,OAAA1/R,EAAAv1C,aAAA,CAEA,IAAAunR,EAAA7vP,EAAAltB,GAAA,GACAolF,EAAA23L,EAAA3pR,QAEAq3U,EAAA1tD,EAAAlD,UALA,CAMA,IAwDAj6R,SAAAs3B,iBAAA,YAAA+V,GACArtC,SAAAs3B,iBAAA,WAAA25N,EACA,EAEA,IAEA1xP,OC9FA,kCACA,sBACA,SAAA2rV,GACA,aAEA,SAAAC,IACA,CAiBA,OAfAA,EAAAzpT,SAAA,iBAEAypT,EAAAtjV,UAAAsjB,WAAA,WACA,GAAAxpB,gBAAAgM,OAAA,CAEA,IAAA2qC,EAAAxwC,KAAAmH,SACAi8U,EAAAP,OAAA7iV,KAAA2C,OAAAy1C,KAAAp4C,KAAA2C,OAAAmF,gBAAA,WACA0oC,EAAA1lC,eAAA,YACA0lC,EAAA5lC,sBAAA,YAEA/Q,OAAAC,SAAA65N,QAEA,GATA,CAUA,EAEA0vH,CACA,IACA5rV,OCzBA,kCACA,mBAEA,iBACA,0BACA,kBACA,mBACA,6BACA,SAAA+hC,GACA,aAEA,IACA6B,EAAA,IAAA7B,EADAvnB,MAAAlS,UAAArB,MAAAsmB,KAAA9jB,UAAA,IAWA,OACAo6B,cATA,SAAAC,EAAAp0B,GACA,IACA5H,EAAA,IADA87B,EAAAhjC,IAAAkjC,EAAAC,aACA,CAAAD,EAAAjgC,MAGA,OAFAiE,EAAA4H,WACA5H,EAAAoD,OAAAwE,EAAAxE,OACApD,CACA,EAKA,IACA9H,OC1BA,wCA6EA,IACAw1S,EAgBA,GA3FAh7R,MAAAlS,UAAAjH,UACAmZ,MAAAlS,UAAAjH,QAAA,SAAAwqV,EAAAC,GACA,IAAA9qV,EAEAC,EADA8qV,EAAA,KAGA,IAAAxjV,KACA,UAAA+xD,UAKA,QAFAr5D,EAAAsH,KAAAtH,SAEA8qV,GAAA9qV,EACA,SAOA,IAJA8qV,EAAA,IACAA,EAAA9qV,EAAAqc,KAAAD,IAAA0uU,IAGA/qV,EAAA+qV,EAAA/qV,EAAAC,EAAAD,IACA,GAAAuH,KAAAvH,KAAA6qV,EACA,OAAA7qV,EAGA,QACA,GAIAyH,OAAAyP,OACAzP,OAAAyP,KAAA,WACA,aACA,IAAAkjB,EAAA3yB,OAAAH,UAAA8yB,eACA4wT,GAAA,CAAAhzU,SAAA,MAAAi/N,qBAAA,YACAg0G,EAAA,CACA,WACA,iBACA,UACA,iBACA,gBACA,uBACA,eAEAC,EAAAD,EAAAhrV,OAEA,gBAAA0H,GACA,oBAAAA,IAAA,mBAAAA,GAAA,OAAAA,GACA,UAAA2xD,UAAA,oCAGA,IAAAr7C,EAAAje,EAAAiuB,EAAA,GAEA,IAAAhQ,KAAAtW,EACAyyB,EAAA7N,KAAA5kB,EAAAsW,IACAgQ,EAAA7lB,KAAA6V,GAIA,GAAA+sU,EACA,IAAAhrV,EAAA,EAAAA,EAAAkrV,EAAAlrV,IACAo6B,EAAA7N,KAAA5kB,EAAAsjV,EAAAjrV,KACAiuB,EAAA7lB,KAAA6iV,EAAAjrV,IAIA,OAAAiuB,CACA,CACA,CArCA,IA0CAxmB,OAAAu7E,gBAAAv7E,OAAAmsO,0BAAAnsO,OAAAmsO,yBAAAu3G,QAAA7jV,UAAA,iBAAAG,OAAAmsO,yBAAAu3G,QAAA7jV,UAAA,eAAA1H,MAEA40S,EAAA/sS,OAAAmsO,yBAAAu3G,QAAA7jV,UAAA,aACAG,OAAAu7E,eAAAmoQ,QAAA7jV,UAAA,cACA,CACA1H,IAAA,WACA,OAAA40S,EAAA50S,IAAA2sB,KAAAhlB,KACA,EACAtI,IAAA,SAAAkoB,GACA,OAAAqtR,EAAAv1S,IAAAstB,KAAAhlB,KAAA4f,EACA,KAQA,mBAAA/lB,OAAAq1O,YAAA,CACA,SAAAA,EAAAxuO,EAAA+oC,GACAA,KAAA,CAAA4lM,SAAA,EAAAC,YAAA,EAAAqtD,YAAAv2R,GACA,IAAAq/B,EAAAvtC,SAAAi3O,YAAA,eAEA,OADA1pM,EAAA45Q,gBAAA3+S,EAAA+oC,EAAA4lM,QAAA5lM,EAAA6lM,WAAA7lM,EAAAkzP,QACAl3P,CACA,CACAypM,EAAAnvO,UAAAlG,OAAAkyD,MAAAhsD,UACAlG,OAAAq1O,aACA;;;;;;;;;;;;;;;;;;;;;;IA+BA,SAAApnM,EAAA3kB,GAiBA,GAfAnjB,KAAAmjB,QAAA,CACA7c,SAAA,IACAu9U,YAAA,2CACAC,cAAA,WACA,kCAAA1pV,UAAAmlB,UAEA,MADAnlB,UAAAC,UACAqY,MAAA,gCACA+M,WAAAlN,OAAAwxU,IACA,IACA,SAGA,QACA,GAEA5gU,EAAA,CACA,IAAA/iB,EAAAJ,KACA5G,EAAAgJ,KAAA+gB,GAAA,SAAAg5F,EAAA92D,GACAjlD,EAAA+iB,QAAAg5F,GAAA92D,CACA,GACA,CAEArlD,KAAAmjB,QAAA2gU,iBACA9jV,KAAAgkV,uBACA,CAGAl8S,EAAAzkB,WAAA,SAAAF,GAGA,OAFA,MAAA2kB,EAAAysE,YACAzsE,EAAAysE,UAAA,IAAAzsE,EAAA3kB,IACA2kB,EAAAysE,SACA,EAGAzsE,EAAA/nC,UAAAikV,sBAAA,WAEA5qV,EAAAlB,UAAAwD,GAAAsE,KAAAmjB,QAAA0gU,YAAA7wU,KAAA,KAAAhT,KAAAmjB,QAAA7c,UAAA,SAAAgS,GACA,GAAAtY,MAAAsY,EAAA+rB,OAAA,CAEA,WAAAjrC,EAAAkf,EAAA+rB,QAAAz+B,IAAA,mBAEA,IAAAq+U,EAAA7qV,EAAA4G,MAAA4F,IAAA,WACAxM,EAAA4G,MAAA4F,IAAA,kBAEA,IAAAs+U,EAAAhsV,SAAAi/O,iBAAA7+N,EAAAnN,QAAAmN,EAAAlN,SAYA,OAVA64U,EACA7qV,EAAA4G,MACA4F,IAAA,UAAAq+U,GAEA7qV,EAAA4G,MAAA4F,IAAA,cAGA0S,EAAA+rB,OAAA6/S,EACA9qV,EAAA8qV,GAAAh5U,QAAAoN,IAEA,CACA,CACA,QApBA,CAqBA,GACA,EAEAze,OAAAiuC,uBAEA,IACArwC,OCzMA,wBACA,aACA,sBACA,mBACA,WACA,gBACA,kBACA,gBACA,eACA,iCACA,sBACA,2BACA,SAAA0B,EAAAsrC,EAAA27S,EAAA3hT,EAAAynD,EAAAy6P,EAAAzlT,EAAAmiO,EAAA8mF,EAAA/mF,GAEA,IAIAgnF,EAAA,WACAvqV,OAAA+wO,SACA1yO,SAAAs3B,iBAAA,0BACA31B,OAAAwqV,gBACAxqV,OAAAwqV,eAAA5nB,UAAA,eAAAnyT,GACAzQ,OAAAC,SAAAwQ,EAAA0J,GACA,GAEA,MAEA,EAgIA,OA9HAowU,EAAArkV,UAAAmhB,MAAA,SAAAsuK,GACA/wJ,EAAAC,cAAA8wJ,EAAAt0L,YAAAmkC,OAAAX,cACAD,EAAAE,kBAAA6wJ,EAAAt0L,YAAAmkC,OAAAV,kBACAF,EAAAG,SAAA4wJ,EAAArwL,aAEA,IAAAi5C,EAAAo3I,EAAA6c,IACAhpJ,EAAAjqD,EAAA,0CACAyN,SAAAuxC,GACAulN,EAAAvkQ,EAAA,uCACAyN,SAAAw8C,GAEArjD,KAAAskV,aAAAlE,EAAAC,WAAA7wJ,EAAA12J,WAAAoR,QAAAslJ,EAAAt0L,YAAAk9C,GACAp4C,KAAAskV,aAAAlqV,UAAA,IAAAumV,EAAA3gV,KAAAskV,aAAAtwU,IAAAw7K,EAAAoxJ,eACA5gV,KAAAskV,aAAAl5S,aAAA3qC,YAAAT,KAAA60T,YAAAtyT,KAAAvC,OAEA,IAAAwwC,EAAA,IAAA/L,EAAA+qJ,EAAAh/I,OAAAqlB,KAAA25H,EAAAt0L,YAAAioB,SACAqtB,EAAAv5B,gBAAAu4K,EAAAh/I,OAAAv5B,gBACAu5B,EAAA72B,WAAA61K,EAAAh/I,OAAA72B,WACA62B,EAAAp3B,cAAAo2K,EAAAh/I,OAAAp3B,cACAo3B,EAAA7tC,OAAA3C,KAAAskV,aAAApmF,kBAAA1uE,EAAAh/I,SAAAg/I,EAAA12J,WAAAgQ,OAAA0mJ,EAAA12J,WAAAkkO,OAAA35M,EAAAs6M,EAAA9jQ,OAAA0qV,YAAAC,WAAA9+U,MAAA7L,OAAA0qV,YAAAC,WAAAC,aAEA,IAAA1jV,EAAAf,KAEAo9P,EAAA9pN,YACA8pN,EAAApB,aAAA,CACAt2P,KAAA,yBACA4+U,aAAAtkV,KAAAskV,eAGAlnF,EAAAf,aAAA,WACAe,EAAApB,aAAA,CACAt2P,KAAA,yBACA4+U,aAAAvjV,EAAAujV,eAGA,OAAAvjV,EAAAyvC,SACA4sN,EAAAjB,iBAAAp7P,EAAAyvC,OAAA9L,WAAA3jC,EAAAw9P,eAAAh8P,KAAAxB,IAEAq8P,EAAApB,aAAA,CACAt2P,KAAA,yBACA8qC,OAAAzvC,EAAAyvC,OACAiuN,WAAA,IAGA,IAGAjuN,EAAA/J,SAAAttC,EAAA+N,IAAAsoL,EAAAt0L,YAAAurC,SAAAiB,OAAA8nJ,EAAAh/I,OAAA/J,WAAA,SAAAlL,GACA,OAAA4oT,EAAA7oT,cAAAC,EAAAiV,EACA,IAEA,IAAA3J,EAAA3L,EAAA3hB,iBAAAi3B,GA2BA,GA1BA6sN,EAAA32N,YAAAi3N,EAAA92N,GACA2J,EAAA9J,YAAAG,GAEA2J,EAAAvJ,2BACAuJ,EAAAl1C,KAAAgJ,KAAAF,EAAAyiC,EAAAzsB,aAIAo2B,EAAA1pC,qBAAA1N,EAAA,cAEAo2L,EAAAt0L,YAAAwpV,UACA7qV,OAAAgM,OAAA67M,YAAA9tM,KAAAE,UAAA,CACA7J,UAAA,kBACA,KAGAmzP,EAAA9pN,cACA8pN,EAAAjB,iBAAA3rN,EAAA9L,WAAAj0B,WAAAzQ,KAAAu+P,eAAAh8P,KAAAvC,OAEAo9P,EAAApB,aAAA,CACAt2P,KAAA,yBACA8qC,SACAiuN,WAAA,KAzFA5kQ,gBAAAgM,OA6FA,CACAhM,OAAAgM,OAAA67M,YAAA9tM,KAAAE,UAAA,CACA7J,UAAA,uBACAw1P,MAAAjvN,EAAAl1C,KAAAgJ,KAAAF,EACAo7P,MAAAhvN,EAAAl1C,KAAAgJ,KAAAD,IACAxK,OAAAC,SAAA8E,SAAA,KAAA/E,OAAAC,SAAA0oB,MAeA3oB,OAAA21B,iBAAA,WAbA,SAAAlX,GACA,GAAAA,EAAA3M,SAAA9R,OAAAgM,OAEA,IACA,IAAA27M,EAAA5tM,KAAAC,MAAAyE,EAAAhd,MACA,IAAAkmN,EAAAv3M,UACA,OACAumC,EAAA5tC,aAAA4+M,EAAAv3M,UAAAu3M,EAAA38J,KAAA,GACA,OAAAl/B,GAEA,CACA,IAEA,EACA,CAEAugE,EAAAy+P,eAAA,WACAn0S,EAAApoC,QACA,IAEApI,KAAAwwC,QACA,EAEA4zS,EAAArkV,UAAAw+P,eAAA,SAAA5/O,GACA,OAAAA,EAAAjZ,MAEA,6BACA1F,KAAA+9P,cAAA/9P,KAAAwwC,OAAAl1C,KAAAV,GAAAoF,KAAAwwC,OAAAtG,QAAAlqC,KAAAwwC,OAAA1H,OAAA,CAAA6mR,eAAA,IACA,MAEA,gCACAryD,YAAAH,UAAAn9P,KAAAqjD,UAIA,EAEA+gS,EAAArkV,UAAA80T,YAAA,SAAAtsT,GACAvI,KAAAwwC,QAAAxwC,KAAAwwC,OAAAloC,MAAAC,EACA,EAEA67U,CACA;;;;;;;ACvJA3sV,OAAA,uBAEA,IACAmtV,EAAA,EAqBA,OACAzjU,KAAA,SAAA7oB,EAAAusV,EAAAC,EAAAzrV,GACA,GAAAA,EAAA0rV,QACAD,EAAA,UACA,CACA,IAAAlqV,EARA,gBADAgqV,GAAA,GACA,KAWA/qV,OAAAe,GAAAkqV,EA3BAn0T,EAMA,SAAAr4B,EAAAsC,GACA,IAAAoqV,EAAA,QACAhxU,EAAA1b,EAAAunB,QAAAmlU,EAAA,IACA9xU,EAAA8xU,EAAA7qV,KAAA7B,KAAAunB,QAAA,UAZA,WAcA,OADA7L,KAAAlb,QAAA,gBACAoa,EAAA,IAAAtY,CACA,CAgBAqqV,CAAAJ,EAAAnuJ,MAAAp+L,GAAAsC,IA1BAglB,EAAA1nB,SAAAoqB,cAAA,WAAA5c,KAAA,kBAAAka,EAAAe,OAAA,EAAAf,EAAA+Q,OACAwhC,EAAAj6D,SAAAugB,qBAAA,cAAA0Y,WAAA+4D,aAAAtqE,EAAAuyC,EA0BA,CA7BA,IAAAxhC,EACA/Q,EAAAuyC,CA6BA,EAEA,IACA16D,OC5CA,iDACA,SACA,KACA,qBACA,aACA,wBACA,SAAAwB,EAAA6K,EAAA2hM,EAAAs7I,EAAA3jF,GACA,aAEA,IAAA/jQ,EAAAJ,EAAAI,SAKA,SAAA2nV,EAAAC,GACAjhV,KAAAihV,cACAjhV,KAAAkhV,QAAA,CACA,CA6DA,OA3DAF,EAAApnT,SAAA,wBAEAonT,EAAAjhV,UAAAsjB,WAAA,WACA,IAAAtiB,EAAAf,KACAA,KAAAihV,YAAAE,0BACAnhV,KAAAiP,QAAAjP,KAAAohV,YAAA7+U,KAAAvC,MACA5G,EAAAlB,UAAAwD,GAAA,QAAAsE,KAAAiP,UAEApV,OAAA21B,iBAAA,oBAAA7Q,GACAA,EAAArjB,MAAA,mBAAAqjB,EAAArjB,KAAAoK,MAAA3E,EAAA+6P,eAEA,GACA,EAEAklF,EAAAjhV,UAAAqhV,YAAA,SAAA1gV,GACA,QAAAA,EAAA4lD,QAAA,CAGA,IAAA+6R,EAAA,IAAAtpV,KAEAiI,KAAAshV,sBAAAD,EAAArhV,KAAAshV,qBA5BA,KA6BAthV,KAAAkhV,QAAA,EACAlhV,KAAAshV,qBAAAD,GACAE,IAAAvhV,KAAAkhV,SACAlhV,KAAAkhV,QAAA,EACAlhV,KAAAshV,qBAAA,KACAthV,KAAA87P,gBACA1iQ,EAAAlB,UAAAsS,IAAA,QAAAxK,KAAAiP,WAEAjP,KAAAkhV,UACAlhV,KAAAshV,qBAAAD,EAdA,CAgBA,EAEAL,EAAAjhV,UAAA+7P,cAAA,WACAilF,EAAAvqJ,WAAAn9L,EAAAmoV,SAEA,IAAAzgV,EAAAf,KACA9G,QAAA,kDACAusM,EAAAtkL,KAAA,gBACA7d,MAAA,SAAAm+U,GACA1gV,EAAAmgB,MAAAugU,EACA,GACA,GACA,EAEAT,EAAAjhV,UAAAmhB,MAAA,SAAAugU,GACA,IAAAC,EAAA,CACAC,SAAA,sCACArjV,YAAAwF,EAAAzF,eAAA,IACAujV,UAAA99U,EAAA/F,eAAA,IACA8jV,UAAA/9U,EAAAvF,aAAA,KAGAkjV,EAAA70K,QAAA80K,EAAAxpV,SAAAgkT,eAAA,sBAEA9+C,EAAAd,eACA,EAEA0kF,CACA,IACAvpV,OChFA,uDACA,aAIA,SAAAgrV,IACA,CAQA,OANAA,EAAA7oT,SAAA,gBAEA6oT,EAAA1iV,UAAAsjB,WAAA,WAEA,EAEAo/T,CACA,IACAhrV,OChBA,0CACA,sBACA,SAAA2rV,GACA,aAEA,SAAAC,IACA,CAgBA,OAdAA,EAAAzpT,SAAA,iBAEAypT,EAAAtjV,UAAAsjB,WAAA,SAAA6hU,GACArrV,gBAAAgM,QAEAu9U,EAAAP,OAAAqC,EAAA9sS,KAAA8sS,EAAA7hS,UAAA,WACA6hS,EAAA10S,OAAA1lC,eAAA,YACAo6U,EAAA10S,OAAA5lC,sBAAA,YAEA/Q,OAAAC,SAAA65N,QAEA,GACA,EAEA0vH,CACA,IACA5rV,OCxBA,qDACA,mBAEA,0BACA,kBACA,qBACA,SAAA+hC,GACA,aAEA,IACA6B,EAAA,IAAA7B,EADAvnB,MAAAlS,UAAArB,MAAAsmB,KAAA9jB,UAAA,IASA,OACAo6B,cAPA,SAAAC,GAGA,OADA,IADAF,EAAAhjC,IAAAkjC,EAAAC,aACA,CAAAD,EAAAjgC,KAEA,EAKA,IACA7D,OCtBA,wBACA,KACA,aACA,sBACA,mBACA,oBACA,kBACA,kBACA,WACA,gBACA,gBACA,oDACA,sBACA,iBACA,eACA,2BACA,SAAAqM,EAAA3K,EAAAsrC,EAAA27S,EAAAvtB,EAAAp2D,EAAArB,EAAA38N,EAAAynD,EAAAhrD,EAAAiqT,EAAA/nF,EAAAE,EAAAD,EAAA+lF,GAEA,IAAAhoT,EAAA,KACAF,EAAA/jB,SAEAtd,OAAA21B,iBAAA,gCAAAlX,GACA8iB,EAAA9iB,CACA,IAGA,IAIA8sU,EAAA,WACAvrV,OAAA+wO,SACA1yO,SAAAs3B,iBAAA,0BACA31B,OAAAwqV,gBACAxqV,OAAAwqV,eAAA5nB,UAAA,eAAAnyT,GACAzQ,OAAAC,SAAAwQ,EAAA0J,GACA,GAEA,MAEA,EAwNA,OAtNAoxU,EAAArlV,UAAAmhB,MAAA,SAAAsuK,GACAA,EAAAt0L,YAAAwpV,UACA7qV,OAAAgM,OAAA67M,YAAA9tM,KAAAE,UAAA,CACA7J,UAAA,kBACA,KAGA,IAAAlJ,EAAAf,KACAkmF,EAAAy+P,eAAA,WACA5jV,EAAAyvC,QAAAzvC,EAAAyvC,OAAApoC,QACA,IAEAvO,OAAA21B,iBAAA,qBAAAlX,GACAvX,EAAAg9P,cAAAzlP,EAAAuF,MAAAqb,SAAA5gB,EAAAuF,MAAAqsB,QAAA5xB,EAAAuF,MAAAirB,OAAA,CAAA6mR,eAAA,GACA,IAEAlxR,EAAAC,cAAA8wJ,EAAAt0L,YAAAmkC,OAAAX,cACAD,EAAAE,kBAAA6wJ,EAAAt0L,YAAAmkC,OAAAV,kBACAF,EAAAG,SAAA4wJ,EAAArwL,aAEAa,KAAAwwC,OAAA,KAEAxwC,KAAAo4C,KAAAo3I,EAAA6c,IACArsM,KAAAqjD,SAAAjqD,EAAA,0CACAyN,SAAA7G,KAAAo4C,MACAp4C,KAAA29P,MAAAvkQ,EAAA,uCACAyN,SAAA7G,KAAAqjD,UAEArjD,KAAAskV,aAAAlE,EAAAC,WAAA7wJ,EAAA12J,WAAAoR,QAAAslJ,EAAAt0L,YAAA8E,KAAAo4C,MACAp4C,KAAAskV,aAAAlqV,UAAAghQ,EAAAJ,iBAAAxrE,EAAAh/I,OAAA51C,GAAAoF,KAAAskV,aAAAtwU,IAAAhU,KAAA+9P,cAAAx7P,KAAAvC,OACAA,KAAAskV,aAAAl5S,aAAA3qC,YAAAT,KAAA60T,YAAAtyT,KAAAvC,OACAA,KAAAskV,aAAArmT,QAAAj+B,KAEAo9P,EAAA9pN,YACA8pN,EAAApB,aAAA,CACAt2P,KAAA,yBACA4+U,aAAAtkV,KAAAskV,eAGAlnF,EAAAf,aAAA,WACAe,EAAApB,aAAA,CACAt2P,KAAA,yBACA4+U,aAAAvjV,EAAAujV,eAGA,OAAAvjV,EAAAyvC,SACA4sN,EAAAjB,iBAAAp7P,EAAAyvC,OAAA9L,WAAA3jC,EAAAw9P,eAAAh8P,KAAAxB,IAEAq8P,EAAApB,aAAA,CACAt2P,KAAA,yBACA8qC,OAAAzvC,EAAAyvC,OACAiuN,WAAA,IAGA,IAGAz+P,KAAAqlV,eAAAlsV,EAAA+N,IAAAsoL,EAAAt0L,YAAAurC,UAAA,SAAAlL,GACA,OAAA4pT,EAAA7pT,cAAAC,EACA,IACApiC,EAAA0I,QAAA7B,KAAAqlV,gBAAA,SAAAC,GACAA,EAAAjiU,WAAAtiB,EACA,IAEAf,KAAA9E,YAAAs0L,EAAAt0L,YAEA8E,KAAAg+P,aAAA,IAAAvB,EAAAz8P,KAAAskV,aAAAtwU,KACAhU,KAAAg+P,aAAAv9P,YAAAT,KAAAy9P,WAAAl7P,KAAAvC,OAEAA,KAAAskV,aAAA5zH,cAAA5nN,OACA9I,KAAA+9P,cAAAvuE,EAAAh/I,OAAA51C,GAAA40L,EAAA12J,WAAAoR,QAAAslJ,EAAA12J,WAAAgQ,QAEA9oC,KAAAskV,aAAAlpT,gBACA,EAEAgqT,EAAArlV,UAAA09P,WAAA,SAAAjuE,EAAA12J,EAAAjb,GAKA,GAFAzkB,EAAAuG,OAAAK,KAAAskV,aAAAppV,YAAAs0L,EAAAt0L,aAEAs0L,EAAA35H,KAAA9sB,eAAA,CACA,IAAAvnC,EAAAxB,KAAA28P,gBAAA7jQ,QAAA02L,EAAA35H,KAAA9sB,gBACA/oC,KAAA28P,gBAAA38P,KAAA28P,gBAAAj+P,MAAA,EAAA8C,EAAA,GACAxB,KAAA28P,gBAAA38P,KAAA28P,gBACAj1N,OAAAvuC,EAAA+N,IAAAsoL,EAAA35H,KAAAooM,SAAA,SAAAztN,GACA,OAAAA,SAAA51C,EACA,KAEAoF,KAAAwwC,OAAA5H,WAAA4mJ,EAAA35H,KAAAooM,QAAAnlO,EAAAgQ,OAAA0mJ,EAAA35H,KAAA9sB,gBAEA/oC,KAAAulV,cAAA/1J,EAAAr2L,EAAAmhB,KAAAk1K,EAAA35H,KAAAooM,SAAAztN,OAAA51C,GAAAk+B,EAAAjb,EACA,MACA7d,KAAA28P,gBAAAxjQ,EAAA+N,IAAAsoL,EAAA35H,KAAAooM,SAAA,SAAAztN,GACA,OAAAA,SAAA51C,EACA,IAEA,IAAAuuC,EAAAqmJ,EAAA35H,KAAAooM,QAAA,GAAAztN,OACAysN,EAAAztE,EAAA35H,KAAAooM,QAAA,GAAAhB,iBACA7yN,EAAAolJ,EAAA35H,KAAAooM,QAAAvlQ,OAAA,KAAAogC,EAAAgQ,OAEA0H,EAAA,IAAA/L,EAAA0E,EAAA0sB,KAAA71D,KAAAskV,aAAAppV,YAAAioB,SACAqtB,EAAAtH,SAAAC,GACAqH,EAAA7tC,OAAA3C,KAAAskV,aAAApmF,kBAAA/0N,EAAAqH,EAAApG,EAAA6yN,EAAAj9P,KAAAqjD,SAAArjD,KAAA29P,OAAA39P,KAAAwwC,QAAA32C,OAAA0qV,YAAAC,WAAA9+U,MAAA7L,OAAA0qV,YAAAC,WAAAC,aACAj0S,EAAAtG,QAAA/wC,EAAAssD,MAAA3sB,EAAAoR,SACAsG,EAAA1H,OAAA3vC,EAAAssD,MAAA3sB,EAAAgQ,QAEA,IAAAjC,EAAA3L,EAAA3hB,iBAAAi3B,GACA6sN,EAAA32N,YAAA1mC,KAAA29P,MAAA92N,GACA2J,EAAA9J,YAAAG,GAEA2J,EAAAvJ,2BACAuJ,EAAAl1C,KAAAgJ,KAAAF,EAAAyiC,EAAAzsB,aAIAo2B,EAAA1pC,qBAAA1N,EAAA,cACAkK,MAAA,WACAktC,EAAA5H,WAAA4mJ,EAAA35H,KAAAooM,QAAAv/P,MAAA,GAAAo6B,EAAAgQ,OACA,IAEA9oC,KAAAwwC,QACA4sN,EAAA9pN,cACA8pN,EAAAhB,mBAAAp8P,KAAAwwC,OAAA9L,YAEA04N,EAAApB,aAAA,CACAt2P,KAAA,4BACA8qC,OAAAxwC,KAAAwwC,UAIAxwC,KAAAwwC,OAAA7tC,OAAA2xI,UACAt0I,KAAAwwC,OAAArhC,oCAEAnP,KAAAulV,cAAA/1J,EAAAr2L,EAAAmhB,KAAAk1K,EAAA35H,KAAAooM,SAAAztN,OAAA51C,GAAAk+B,EAAAjb,IAEAhkB,OAAAyhQ,QAAAkqF,aAAA,CACAtsT,SAAA//B,EAAAmhB,KAAAk1K,EAAA35H,KAAAooM,SAAAztN,OAAA51C,GACAsvC,QAAApR,EAAAoR,QACApB,OAAAhQ,EAAAgQ,QACA,GAAA9oC,KAAA9E,YAAAuqV,QAAA3hV,EAAA1G,aAAA,IAAAvD,OAAAC,SAAAyoB,MAGAviB,KAAAqjD,SAAAv1C,UAAA,GACA9N,KAAAwwC,SACAxwC,KAAAwwC,OAAA7tC,OAAA+tN,cAAAC,YAEAysC,EAAA9pN,cACA8pN,EAAAjB,iBAAA3rN,EAAA9L,WAAAj0B,WAAAzQ,KAAAu+P,eAAAh8P,KAAAvC,OAEAo9P,EAAApB,aAAA,CACAt2P,KAAA,yBACA8qC,SACAiuN,UAAA,IAAAjvE,EAAA35H,KAAAooM,QAAAvlQ,UAvKAmB,gBAAAgM,QA4KAhM,OAAAgM,OAAA67M,YAAA9tM,KAAAE,UAAA,CACA7J,UAAA,uBACAw1P,MAAAjvN,EAAAl1C,KAAAgJ,KAAAF,EACAo7P,MAAAhvN,EAAAl1C,KAAAgJ,KAAAD,IACAxK,OAAAC,SAAA8E,SAAA,KAAA/E,OAAAC,SAAA0oB,KAEA,CACA,EAEA4iU,EAAArlV,UAAAwlV,cAAA,SAAA/1J,EAAAt2J,EAAAJ,EAAAjb,GACA,IAAAA,MAAA8xS,cAAA,CACA,IAAA7yD,EAAAttE,EAAAk2J,aACAl2J,EAAAk2J,aACA,qBAAAxsT,EAEAysT,EAAA,GACAxsV,EAAAwW,KAAAmpB,EAAAoR,SAAAxxC,SACAitV,EAAAz7S,QAAAt2B,KAAAE,UAAAglB,EAAAoR,UACA/wC,EAAAwW,KAAAmpB,EAAAgQ,QAAApwC,SACAitV,EAAA7sT,WAAAllB,KAAAE,UAAAglB,EAAAgQ,SAEA,IAAAi0N,EAAA/8P,KAAA9E,YAAAuqV,QACA3hV,EAAA1G,aAAA,IACA4C,KAAAskV,aAAAtwU,IAAA21B,QAAA7lC,EAAA1G,aAAA0/P,GAAA6oF,GAEA9rV,OAAAyhQ,QAAA2kF,UAAA,CACA/mT,WACAgR,QAAApR,EAAAoR,QACApB,OAAAhQ,EAAAgQ,QAEA,GACAi0N,EACA,CACA,EAEAqoF,EAAArlV,UAAAw+P,eAAA,SAAA5/O,GACA,OAAAA,EAAAjZ,MAEA,6BACA1F,KAAA+9P,cAAA/9P,KAAAwwC,OAAAl1C,KAAAV,GAAAoF,KAAAwwC,OAAAtG,QAAAlqC,KAAAwwC,OAAA1H,OAAA,CAAA6mR,eAAA,IACA,MAEA,gCACAryD,EAAAH,UAAAn9P,KAAAqjD,UAIA,EAEA+hS,EAAArlV,UAAAg+P,cAAA,SAAA7kO,EAAAgR,EAAApB,EAAAjrB,GACA7d,KAAAg+P,aAAA78O,KAAA+X,EAAAgR,EAAApB,EAAAjrB,EAAA7d,KAAA28P,gBACA,EAEAyoF,EAAArlV,UAAA80T,YAAA,SAAAtsT,GACAvI,KAAAwwC,QAAAxwC,KAAAwwC,OAAAloC,MAAAC,EACA,EAEA68U,CACA,IACA3tV,OClQA,0BACA,YACA,SAAAqM,GAEA,IAAA8hV,EAAA,SAAAC,GACA7lV,KAAA6lV,gBACA,EAkDA,OAhDAD,EAAA7lV,UAAAmhB,MAAA,SAAAsuK,GACA,IAAAzuL,EAAAf,KACA8lV,EAAAt2J,EAAAs2J,MACAD,EAAA7lV,KAAA6lV,eACA3sV,QAAA,oBAAAwB,GACA,IAAApB,EAAAoB,EACArB,OAAAysV,EAAAC,YACA,CACAjrV,KAAAgrV,EAAAhrV,KACAO,aAAA,SAAAC,GAeA,GAdAA,EAAAC,YAAAuqV,EAAAhrV,KAAAkrV,wBACA,iBAAAF,EAAAhrV,KAAAkrV,wBAAAF,EAAAhrV,KAAA44T,aACA,iBAAAoyB,EAAAhrV,KAAAG,OAAA6qV,EAAAhrV,KAAAI,YAAA4qV,EAAAhrV,KAAA44T,aAEAmyB,EAAAr1S,SACAl1C,EAAAw5D,MAAA7qB,iBAAA47S,EAAAr1S,OAAA7tC,OAAAm2B,WAAAoR,QAAAC,SACA7uC,EAAAw5D,MAAA1qB,gBAAAy7S,EAAAr1S,OAAA7tC,OAAAm2B,WAAAgQ,OAAAqB,SACA7uC,EAAAR,KAAA44T,YAAAmyB,EAAAr1S,OAAAl1C,KAAAV,GACAU,EAAAw5D,MAAA2+P,SAAA,CACAwyB,aAAA,qBACAvyB,YAAAmyB,EAAAr1S,OAAAl1C,KAAAV,KAIAirV,EAAAvB,aAAA,CACA,IAAAppV,EAAA2qV,EAAAvB,aAAAppV,YACAA,EAAAgrV,cACA5qV,EAAAR,KAAAqrV,cAAAjrV,EAAAgrV,aACAhrV,EAAAL,SACAS,EAAA8qV,KAAA,CACAxrV,GAAAM,EAAAL,QAEA,CAEA,OAAAS,CACA,IAEAE,UACAsI,EAAAxE,eAAAhG,GAEAoB,EAAAe,QAAAsF,EAAAslV,aAAA9jV,KAAAxB,EAAAyuL,GACA,GACA,EAEAo2J,EAAA7lV,UAAAsmV,aAAA,SAAA72J,GACAxvL,KAAA6lV,eAAA3kU,MAAAsuK,EACA,EAEAo2J,CACA","file":"licquidRuntime.min.js","sourcesContent":["\n","define('lq/cookie',[],function () {\r\n\r\n    var get = function(cname) {\r\n        var name = cname + '=';\r\n        var ca = document.cookie.split(';');\r\n\r\n        for (var i = 0; i < ca.length; i++) {\r\n            var c = ca[i];\r\n            while (c.charAt(0) === ' ') c = c.substring(1);\r\n            if (c.indexOf(name) === 0) return c.substring(name.length, c.length);\r\n        }\r\n\r\n        return null;\r\n    };\r\n\r\n    var set = function (cname, cvalue, expiryInDays) {\r\n        var expiryDate = new Date();\r\n        expiryDate.setDate(expiryDate.getDate() + (expiryInDays || (365 * 20)));\r\n\r\n        // for now using '/' as the path is not really an issue\r\n        document.cookie = cname + '=' + cvalue + ';path=/;expires=' + expiryDate.toUTCString();\r\n    };\r\n\r\n    var remove = function (cname) {\r\n        set(cname, '', -1);\r\n    };\r\n\r\n    return {\r\n        get: get,\r\n        set: set,\r\n        remove: remove\r\n    };\r\n\r\n});\n","define('lq/main',[\r\n    'domready!',\r\n    'module',\r\n    'require',\r\n    'underscore',\r\n    'jquery',\r\n    'lq/cookie'\r\n], function (domready, module, require, _, $, cookie) {\r\n    var config = module.config();\r\n    var ravenLogger = null;\r\n    var init = function (initCompleted) {\r\n        if (config.ravenFrontEndDsn) {\r\n            require(['raven'], function (Raven) {\r\n                Raven.setUserContext({\r\n                    id: config.userId\r\n                });\r\n                Raven\r\n                    .config(config.ravenFrontEndDsn,\r\n                        {\r\n                            tags: {\r\n                                location: 'front end',\r\n                                environment: config.ravenEnvironment,\r\n                                tenant: config.tenantName || '',\r\n                                application: config.tenantApplicationName || '',\r\n                                component: config.componentName || ''\r\n                            },\r\n                            dataCallback: function (data) {\r\n                                data.fingerprint = ['{{ default }}', config.tenantName, config.tenantApplicationName];\r\n                                return data;\r\n                            }\r\n                        })\r\n                    .install();\r\n\r\n                Raven\r\n                    .context(function () {\r\n                        ravenLogger = Raven;\r\n\r\n                        initCompleted();\r\n                    });\r\n            });\r\n        } else {\r\n            initCompleted();\r\n        }\r\n\r\n        $(window).on('unload', function () {\r\n            // without this handle Firefox will not run any javascript on page load after having pressed the 'Back' button of the browser\r\n        });\r\n    };\r\n\r\n    var getNotificationsEntryPage = function () {\r\n        return config.notificationsEntryPage;\r\n    };\r\n\r\n    var getNotificationIcon = function () {\r\n        return config.notificationIcon;\r\n    };\r\n\r\n    var areWebNotificationsEnabled = function () {\r\n        return config.areWebNotificationsEnabled && window.navigator.serviceWorker;\r\n    };\r\n    \r\n    var getFirebaseWPCert = function () {\r\n        return config.firebaseWPCert;\r\n    };\r\n\r\n    var getFirebaseAppId = function () {\r\n        return config.firebaseAppId;\r\n    };\r\n\r\n    var getFirebaseProjectId = function () {\r\n        return config.firebaseProjectId;\r\n    };\r\n\r\n    var getFirebaseSenderId = function () {\r\n        return config.firebaseSenderId;\r\n    };\r\n\r\n    var getFirebaseApiKey = function () {\r\n        return config.firebaseApiKey;\r\n    };\r\n    \r\n    var getTenantName = function () {\r\n        return config.tenantName;\r\n    };\r\n\r\n    var getTenantApplicationName = function () {\r\n        return config.tenantApplicationName;\r\n    };\r\n\r\n    var getBaseUrl = function (path) {\r\n        return config.baseUrl + path;\r\n    };\r\n\r\n    var getStylesVersion = function () {\r\n        return config.stylesVersion;\r\n    };\r\n\r\n    var getCdnUrl = function (path) {\r\n        return config.cdnUrl + path;\r\n    };\r\n\r\n    var getTenantUrl = function (path) {\r\n        return config.tenantUrl + path;\r\n    };\r\n\r\n    var getTenantCdnUrl = function (path) {\r\n        return config.tenantCdnUrl + path;\r\n    };\r\n\r\n    var getRuntimeUrl = function (path) {\r\n        return config.runtimeUrl + path;\r\n    };\r\n\r\n    var getRuntimeBaseUrl = function (path) {\r\n        return config.runtimeBaseUrl + path;\r\n    };\r\n\r\n    var getUserId = function () {\r\n        return config.userId;\r\n    };\r\n\r\n    var getDesignerId = function () {\r\n        return config.designerId;\r\n    };\r\n\r\n    var getDesignerUrl = function (path) {\r\n        return config.designerUrl + path;\r\n    };\r\n\r\n    var getPortalUrl = function (path) {\r\n        return config.designerBaseUrl + 'plumbing/tenant/' + config.tenantName + '/application/' + config.tenantApplicationName + '/' + path;\r\n    };\r\n    var getDesignerBaseUrl = function (path) {\r\n        return config.designerBaseUrl + path;\r\n    };\r\n\r\n    var getTenantUploads = function (path) {\r\n        return config.tenantUploads + path;\r\n    };\r\n\r\n    var getFrontEndUrl = function (path) {\r\n        return config.frontEndUrl + path;\r\n    };\r\n\r\n    var getNameOfComponent = function () {\r\n        return config.componentName;\r\n    };\r\n\r\n    var getRavenLogger = function () {\r\n        return ravenLogger;\r\n    };\r\n\r\n    var setRavenLogger = function (instance) {\r\n        ravenLogger = instance;\r\n    };\r\n\r\n    var getOrigin = function () {\r\n        if (window.location.origin)\r\n            return window.location.origin + '/';\r\n        return window.location.protocol + \"//\" + window.location.hostname + (window.location.port ? ':' + window.location.port : '');\r\n    };\r\n\r\n    var getFullUrl = function (pathFromRoot) {\r\n        if (pathFromRoot && pathFromRoot.indexOf('/') === 0)\r\n            pathFromRoot = pathFromRoot.slice(1);\r\n        return getOrigin() + pathFromRoot;\r\n    };\r\n\r\n    var getLanguageIsoCode = function () {\r\n        return config.languageISOCode;\r\n    }\r\n\r\n    var inMockMode = !new URLSearchParams(window.location.search).get('dev') && !!cookie.get(`mock-mode-${getTenantName()}-${getTenantApplicationName()}`);\r\n    var inForcedDevMode = new URLSearchParams(window.location.search).get('dev') && !!cookie.get(`mock-mode-${getTenantName()}-${getTenantApplicationName()}`);\r\n\r\n    var isInMockMode = function () { return inMockMode; };\r\n    var isInForcedDevMode = function () { return inForcedDevMode; };\r\n\r\n    var getMockCookieName = function () {\r\n        return `mock-mode-${getTenantName()}-${getTenantApplicationName()}`;\r\n    }\r\n\r\n    var exitMockMode = function () {\r\n        cookie.remove(getMockCookieName());\r\n    }\r\n\r\n    // yes, we need to know this\r\n    var browserMatchesChrome = /chrom(e|ium)/.test(navigator.userAgent.toLowerCase());\r\n    var isChrome = function () {\r\n        return browserMatchesChrome;\r\n    };\r\n\r\n    var isScriptDebuggingEnabled = function () {\r\n        return config.scriptDebuggingEnabled;\r\n    };\r\n\r\n    return {\r\n        init: init,\r\n        getNotificationIcon: getNotificationIcon,\r\n        areWebNotificationsEnabled: areWebNotificationsEnabled,\r\n        getFirebaseApiKey: getFirebaseApiKey,\r\n        getFirebaseAppId: getFirebaseAppId,\r\n        getFirebaseProjectId: getFirebaseProjectId,\r\n        getFirebaseSenderId: getFirebaseSenderId,\r\n        getFirebaseWPCert: getFirebaseWPCert,\r\n        getNotificationsEntryPage: getNotificationsEntryPage,\r\n        isScriptDebuggingEnabled: isScriptDebuggingEnabled,\r\n        getStylesVersion: getStylesVersion,\r\n        getTenantName: getTenantName,\r\n        getTenantApplicationName: getTenantApplicationName,\r\n        getBaseUrl: getBaseUrl,\r\n        getCdnUrl: getCdnUrl,\r\n        getTenantUrl: getTenantUrl,\r\n        getTenantCdnUrl: getTenantCdnUrl,\r\n        getRuntimeUrl: getRuntimeUrl,\r\n        getRuntimeBaseUrl: getRuntimeBaseUrl,\r\n        getUserId: getUserId,\r\n        getDesignerId: getDesignerId,\r\n        getDesignerUrl: getDesignerUrl,\r\n        getDesignerBaseUrl: getDesignerBaseUrl,\r\n        getTenantUploads: getTenantUploads,\r\n        getFrontEndUrl: getFrontEndUrl,\r\n        getPortalUrl: getPortalUrl,\r\n        getFullUrl: getFullUrl,\r\n        getNameOfComponent: getNameOfComponent,\r\n        getRavenLogger: getRavenLogger,\r\n        getLanguageIsoCode: getLanguageIsoCode,\r\n        getMockCookieName: getMockCookieName,\r\n        isInMockMode: isInMockMode,\r\n        isInForcedDevMode: isInForcedDevMode,\r\n        exitMockMode: exitMockMode,\r\n        setRavenLogger: setRavenLogger,\r\n        browser: {\r\n            isChrome: isChrome\r\n        }\r\n    };\r\n});\r\n\ndefine('lq', ['lq/main'], function (main) { return main; });\n\n","define('lq/oop',[],function () {\r\n\t'use strict';\r\n\r\n    var extend = function(subClass, superClass) {\r\n        superClass = superClass || this;\r\n        var F = function() { };\r\n        F.prototype = superClass.prototype;\r\n        subClass.prototype = new F();\r\n        subClass.prototype.constructor = subClass;\r\n        subClass.extend = extend;\r\n\r\n        if (superClass.prototype.constructor === Object.prototype.constructor) {\r\n            superClass.prototype.constructor = superClass;\r\n        }\r\n    };\r\n\r\n    var makeExtendable = function (obj) {\r\n        obj.extend = extend;\r\n    };\r\n\r\n    return {\r\n        extend: extend,\r\n        makeExtendable: makeExtendable\r\n    };\r\n});\r\n\r\n\n","define('lq/observable',['underscore'], function (_) {\r\n    'use strict';\r\n\r\n    function Observable(obj, events) {\r\n        this.obj = obj;\r\n        this.eventListeners = {};\r\n        this.events = events ? _.flatten([events]) : null;\r\n    }\r\n\r\n    Observable.prototype.addListener = function (event, listener) {\r\n        this.checkEvent(event);\r\n        this.eventListeners[event].push(listener);\r\n        return this.obj;\r\n    };\r\n\r\n    Observable.prototype.addOnceListener = function (event, listener) {\r\n        var self = this;\r\n        var listenerWrapper = function () {\r\n            listener.apply(this, arguments);\r\n            self.removeListener(event, listenerWrapper);\r\n        }\r\n        listenerWrapper.wrappedListener = listener; // to support removeListener for wrapped listeners\r\n        this.addListener(event, listenerWrapper);\r\n        return this.obj;\r\n    };\r\n\r\n    Observable.prototype.removeListener = function (event, listener) {\r\n        this.checkEvent(event);\r\n        var actualListener = _.find(this.eventListeners[event], function (current) {\r\n            return current === listener || current.wrappedListener === listener;\r\n        });\r\n        if (actualListener) {\r\n            var index = this.eventListeners[event].indexOf(actualListener);\r\n            this.eventListeners[event].splice(index, 1);\r\n        }\r\n        return this.obj;\r\n    };\r\n\r\n    Observable.prototype.informListeners = function (event /*, eventArgs... */) {\r\n        this.checkEvent(event);\r\n\r\n        var eventArgs = _.drop(arguments, 1);\r\n\r\n        // have to use slice() because of the once-listeners\r\n        _.forEach(this.eventListeners[event].slice(), function (listener) {\r\n            listener.apply(this, eventArgs);\r\n        });\r\n        return this.obj;\r\n    };\r\n\r\n    Observable.prototype.getListeners = function (event) {\r\n        this.checkEvent(event);\r\n        return this.eventListeners[event].slice(); // returns cloned array to avoid modifications\r\n    };\r\n\r\n    Observable.prototype.checkEvent = function (event) {\r\n        if (this.events && !_.contains(this.events, event))\r\n            throw new RangeError(\"Tried to use missing event: \" + event);\r\n        if (!this.eventListeners[event])\r\n            this.eventListeners[event] = [];\r\n    };\r\n\r\n    Observable.prototype.addObservableEvents = function (/* event1, event2 or [event1, event2] */) {\r\n        if (!this.events) {\r\n            return;\r\n        }\r\n        if (!arguments.length || !arguments[0]) {\r\n            this.events = null;\r\n        }\r\n        var self = this;\r\n        _.chain(arguments)\r\n            .flatten()\r\n            .compact()\r\n            .each(function (event) {\r\n                self.events.push(event);\r\n            });\r\n        return this.obj;\r\n    };\r\n\r\n    return {\r\n        makeObservable: function (obj, events) {\r\n            if (obj.addObservableEvents) {\r\n                obj.addObservableEvents(events);\r\n                return;\r\n            }\r\n            var observable = new Observable(obj, events);\r\n            obj.addListener = _.bind(observable.addListener, observable);\r\n            obj.addOnceListener = _.bind(observable.addOnceListener, observable);\r\n            obj.informListeners = _.bind(observable.informListeners, observable);\r\n            obj.removeListener = _.bind(observable.removeListener, observable);\r\n            obj.getListeners = _.bind(observable.getListeners, observable);\r\n            obj.addObservableEvents = _.bind(observable.addObservableEvents, observable);\r\n        }\r\n    };\r\n});\n","define('lq/validations',[\r\n    'when'\r\n],function (when) {\r\n    'use strict';\r\n\r\n    var runValidation = function (validation, piping, triggerEvent, optionalCurrentContextValue) {\r\n        if(!validation || validation.rules.length === 0) return when(true);\r\n        \r\n        return when.reduce(validation.rules, function (globalValidationResult, validationRule) {\r\n            var evaluator = piping.conditions.getConditionEvaluator(validationRule.condition);\r\n\r\n            return evaluator.evaluate(piping, true, null, optionalCurrentContextValue)\r\n                .then(function (executionData) {\r\n                    if (!executionData.conditionResult) {\r\n                        var invalidatedEventData = validationRule.eventing['invalidated'];\r\n                        if (invalidatedEventData.enabled) {\r\n                            triggerEvent(invalidatedEventData.raisedEventName);\r\n                        }\r\n                        return false;\r\n                    } else {\r\n                        var validatedEventData = validationRule.eventing['validated'];\r\n                        if (validatedEventData.enabled) {\r\n                            triggerEvent(validatedEventData.raisedEventName);\r\n                        }\r\n                        return globalValidationResult;\r\n                    }\r\n                });\r\n        }, true);\r\n    };\r\n\r\n    return {\r\n\r\n        runValidation: runValidation\r\n\r\n    };\r\n});\n","define('lq/drop',[\r\n    'underscore',\r\n    'jquery',\r\n    'when',\r\n    'lq',\r\n    'lq/oop',\r\n    'lq/observable',\r\n    'lq/validations'\r\n], function (_, $, when, lq, oop, observable, validations) {\r\n    'use strict';\r\n\r\n    const masterPageOffsetZIndex = 3000;\r\n\r\n    var dropDefaultModel = {\r\n        data: {\r\n            positioning: 'absolute',\r\n            position: { x: 0, y: 0 },\r\n            size: { x: 100, y: 20 },\r\n            zIndex: 1,\r\n            locked: false,\r\n            isHidden: false,\r\n            formatting: {\r\n                dateFormat: 'dd-MM-yyyy',\r\n                groupSeperator: '',\r\n                decimalSeperator: '',\r\n                decimalPrecision: ''\r\n            },\r\n            eventing: {},\r\n            initialVisibility: true,\r\n            initialVisibilityOption: 'Hard Coded',\r\n            centered: false,\r\n            toPage: false\r\n        },\r\n        childDrops: [],\r\n        editable: false,\r\n        renderInBackground: false\r\n    };\r\n\r\n    var Drop = function ($element, defaultModel, model) {\r\n        $.extend(true, this, dropDefaultModel, defaultModel, model);\r\n\r\n        this.type = this.data.type;\r\n\r\n        this.$element = $element\r\n            .addClass('drop-element')\r\n            .css('visibility', 'inherit');\r\n\r\n        this.parent = null;\r\n        this.pool = [];\r\n\r\n        this.otherVisuals = [];\r\n\r\n        this.eventHandlers = [];\r\n\r\n        observable.makeObservable(this, ['ChildAdded', 'DatasourceApplied']);\r\n\r\n        this.applyLayouts();\r\n\r\n        if (typeof Drop.constructing === 'function')\r\n            Drop.constructing(this);\r\n\r\n        // this seems a lot easier than if-chaining the constructing method every time\r\n        Drop.informListeners('Constructing', this);\r\n    };\r\n\r\n    Drop.prototype.defaultEventArg = undefined;\r\n    Drop.prototype.isHidden = false;\r\n    Drop.prototype.supportsManyToManyData = function () {\r\n        return false;\r\n    };\r\n\r\n    oop.makeExtendable(Drop);\r\n\r\n    observable.makeObservable(Drop, 'Constructing');\r\n\r\n    Drop.prototype.$ = function (selector) {\r\n        return this.$element.find(selector);\r\n    };\r\n\r\n    Drop.prototype.autoPositionAt = function (targetPosition) {\r\n        this.$element\r\n            .css({\r\n                left: targetPosition.left === null ? 'auto' : (targetPosition.left + 'px'),\r\n                top: targetPosition.top === null ? 'auto' : (targetPosition.top + 'px'),\r\n                right: targetPosition.right === null ? 'auto' : (targetPosition.right + 'px'),\r\n                bottom: targetPosition.bottom === null ? 'auto' : (targetPosition.bottom + 'px')\r\n            })\r\n            .appendTo($('body'));\r\n    };\r\n\r\n\r\n    Drop.prototype.createAndRenderDrops = function ($element) {\r\n        var self = this;\r\n\r\n        return when(self.preRender())\r\n            .then(function () {\r\n                if (self.removed)\r\n                    return;\r\n                self.$element.appendTo($element);\r\n                var childDropsWithRootDrop = _.map(self.childDrops, function(c) {\r\n                    c.rootDrop = self.rootDrop;\r\n                    return c;\r\n                });\r\n                var drops = self.piping.dropFactory.createDrops(childDropsWithRootDrop);\r\n                return when.all(self.createRenderPromisesForChildren(drops));\r\n            })\r\n            .then(function () {\r\n                return self.postRender();\r\n            });\r\n    };\r\n\r\n    Drop.prototype.isRenderedInBackground = function () {\r\n        if (this.renderInBackground === true)\r\n            return true;\r\n        if (!this.parent)\r\n            return false;\r\n        return this.parent.isRenderedInBackground();\r\n    };\r\n\r\n    Drop.prototype.createRenderPromiseForChild = function (drop) {\r\n        if (drop.data.toBrowser) {\r\n            return drop.render(this.piping.$actionWrapper);\r\n        } else if (drop.renderInBackground && this.rootDrop.$masterPage) {\r\n            return drop.render(this.rootDrop.$masterPage);\r\n        } else if (drop.data.toPage && this.rootDrop.$pageAnchored) {\r\n            return drop.render(this.rootDrop.$pageAnchored);\r\n        }\r\n\r\n        return drop.render(this.$element);\r\n    };\r\n\r\n    Drop.prototype.createRenderPromisesForChildren = function (drops) {\r\n        var self = this;\r\n        var renderPromises = [];\r\n\r\n        _.each(drops, function (drop) {\r\n            self.addDrop(drop);\r\n            renderPromises.push(self.createRenderPromiseForChild(drop));\r\n        });\r\n\r\n        return renderPromises;\r\n    };\r\n\r\n    Drop.prototype.render = function ($element) {\r\n        var self = this;\r\n\r\n        return when(self.preRender())\r\n            .then(function () {\r\n                if (self.removed)\r\n                    return;\r\n                self.$element.appendTo($element);\r\n\r\n                var renderPromises = [];\r\n\r\n                _.forEach(self.pool, function (drop) {\r\n                    renderPromises.push(self.createRenderPromiseForChild(drop));\r\n                });\r\n\r\n                return when.all(renderPromises);\r\n            })\r\n            .then(function () {\r\n                return self.postRender();\r\n            });\r\n    };\r\n\r\n    Drop.prototype.preRender = $.noop;\r\n\r\n    Drop.prototype.postRender = $.noop;\r\n\r\n    Drop.prototype.resize = function () {\r\n        this.postWindowResize();\r\n\r\n        _.forEach(this.pool, function (drop) {\r\n            //TODO: only call this if this drop is anchored (and resized)\r\n            drop.resize();\r\n        });\r\n    };\r\n\r\n    //TODO: should be called postResize\r\n    Drop.prototype.postWindowResize = $.noop;\r\n\r\n    Drop.prototype.error = function (errorArgs) {\r\n        this.onError(errorArgs);\r\n\r\n        _.forEach(this.pool, function (drop) {\r\n            drop.error(errorArgs);\r\n        });\r\n    };\r\n\r\n    Drop.prototype.onError = function (errorArgs) {\r\n    };\r\n\r\n    Drop.prototype.isVisible = function () {\r\n        if (this.isHidden)\r\n            return false;\r\n\r\n        if (this.parent)\r\n            return this.parent.isVisible();\r\n\r\n        return true;\r\n    };\r\n\r\n    Drop.prototype.showWithoutAnimation = function () {\r\n        this.getElementForVisibility().removeClass('drop-hidden');\r\n        this.isHidden = false;\r\n        this.shown();\r\n    };\r\n\r\n    Drop.prototype.show = function () {\r\n        //https://github.com/daneden/animate.css\r\n        var self = this;\r\n        var animation = this.data.showAnimation;\r\n        if (animation !== \"none\" && animation != undefined) {\r\n            if (this.data.showAnimationTime)\r\n                $(this.getElementForVisibility()).css({animationDuration: this.data.showAnimationTime.delay + this.data.showAnimationTime.unit});\r\n            this.getElementForVisibility().removeClass('drop-hidden');\r\n            this.getElementForVisibility().addClass('animated ' + animation);\r\n            this.getElementForVisibility().one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () {\r\n                self.getElementForVisibility().removeClass('animated ' + animation);\r\n                self.isHidden = false;\r\n                self.shown();\r\n            });\r\n        } else {\r\n            this.showWithoutAnimation();\r\n        }\r\n    };\r\n\r\n    Drop.prototype.hideWithoutAnimation = function () {\r\n        this.getElementForVisibility().addClass('drop-hidden');\r\n        this.isHidden = true;\r\n        this.hidden();\r\n    };\r\n\r\n    Drop.prototype.hide = function () {\r\n        //https://github.com/daneden/animate.css\r\n        var self = this;\r\n        var animation = this.data.hideAnimation;\r\n        if (animation !== \"none\" && animation != undefined) {\r\n            if (this.data.hideAnimationTime)\r\n                $(this.getElementForVisibility()).css({animationDuration: this.data.hideAnimationTime.delay + this.data.hideAnimationTime.unit});\r\n            this.getElementForVisibility().addClass('animated ' + animation);\r\n            this.getElementForVisibility().one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () {\r\n                self.getElementForVisibility().removeClass('animated ' + animation);\r\n                self.getElementForVisibility().addClass('drop-hidden');\r\n                self.isHidden = true;\r\n                self.hidden();\r\n            });\r\n        } else {\r\n            this.hideWithoutAnimation();\r\n        }\r\n    };\r\n\r\n    Drop.prototype.getElementForVisibility = function () {\r\n        if (this.parent != null) {\r\n            return this.parent.getChildElementForVisibility(this);\r\n        } else {\r\n            return this.$element;\r\n        }\r\n    };\r\n\r\n    Drop.prototype.getChildElementForVisibility = function (childDrop) {\r\n        return childDrop.$element;\r\n    };\r\n\r\n    Drop.prototype.toggle = function (show) {\r\n        if (arguments.length === 0) {\r\n            show = !this.isVisible();\r\n        }\r\n        if (show)\r\n            this.show();\r\n        else\r\n            this.hide();\r\n    };\r\n\r\n    Drop.prototype.shown = function () {\r\n        if (!this.isVisible())\r\n            return;\r\n\r\n        this.afterShown();\r\n\r\n        _.forEach(this.pool, function (drop) {\r\n            drop.shown();\r\n        });\r\n    };\r\n\r\n    Drop.prototype.afterShown = $.noop;\r\n\r\n    Drop.prototype.hidden = function () {\r\n        if (this.isVisible())\r\n            return;\r\n\r\n        this.afterHidden();\r\n\r\n        _.forEach(this.pool, function (drop) {\r\n            drop.hidden();\r\n        });\r\n    };\r\n\r\n    Drop.prototype.afterHidden = $.noop;\r\n\r\n    Drop.prototype.getEventDataFor = function (eventName) {\r\n        return this.data && this.data.eventing && this.data.eventing[eventName] || {};\r\n    };\r\n\r\n    Drop.prototype.applyEventTrigger = function (eventName, jsEventName, $target, eventArg) {\r\n        var self = this;\r\n        $target = $target || self.$element;\r\n\r\n        var eventData = this.getEventDataFor(eventName);\r\n        var jsEventNameWithNamespace = jsEventName + \".licquidEventTrigger-\" + eventName;\r\n\r\n        $target.off(jsEventNameWithNamespace);\r\n\r\n        if (eventData.enabled) {\r\n            this.subscribeEventHandler($target, jsEventNameWithNamespace, function () {\r\n                self.triggerEvent(eventData.raisedEventName, eventArg, undefined, undefined, self.isBackgroundEvent(eventName));\r\n\r\n                // Modal popups aren't always modal. Needed for the JAO website (and probably other applications as well).\r\n                // A drop inside a list (e.g. a button) should block events from bubbling up,\r\n                // otherwise it could trigger events on both the button and the parent list item (which you probably don't want).\r\n                // A modal popup (without lightbox enabled) will listen to clicks on the document to close itself. However\r\n                // if we were to block the event in the button, the click event will never reach the document and hence\r\n                // the modal won't close. Furthermore, we can't use the lightbox for this purpose because the\r\n                // popup and its lightbox are rendered inside the action (they don't cover the entire page).\r\n                return !self.insideList();\r\n            });\r\n        }\r\n    };\r\n\r\n    Drop.prototype.insideList = function () {\r\n        if (!this.parent)\r\n            return false;\r\n        if (this.parent.type === 'List')\r\n            return true;\r\n        return this.parent.insideList();\r\n    };\r\n\r\n    Drop.prototype.triggerEventIfEnabled = function (eventName, eventArg, $optionalSource, event) {\r\n        var eventData = this.getEventDataFor(eventName);\r\n        if (eventData.enabled) {\r\n            var isBackgroundEvent = this.isBackgroundEvent(eventName);\r\n            this.triggerEvent(eventData.raisedEventName, eventArg, $optionalSource, event, isBackgroundEvent);\r\n        }\r\n    };\r\n\r\n    Drop.prototype.isBackgroundEvent = function (eventName) {\r\n        return eventName === 'mouseEnter' || eventName === 'mouseLeave';\r\n    };\r\n\r\n    Drop.prototype.isEventEnabled = function (eventName) {\r\n        var eventData = this.getEventDataFor(eventName);\r\n        return eventData.enabled;\r\n    };\r\n\r\n    Drop.prototype.triggerEvent = function (raisedEventName, eventArg, $optionalSource, event, isBackgroundEvent, parentEventActionId) {\r\n        if (!this.piping) return;\r\n\r\n        if (eventArg === undefined)\r\n            eventArg = this.getDefaultEventArg();\r\n\r\n        var trigger = $optionalSource || this.$element;\r\n\r\n        if (trigger instanceof $)\r\n            trigger = trigger.get(0);\r\n\r\n        var eventPosition;\r\n        if (event) {\r\n            eventPosition = {\r\n                clientX: event.clientX,\r\n                clientY: event.clientY,\r\n                offsetX: event.offsetX,\r\n                offsetY: event.offsetY,\r\n                pageX: event.pageX,\r\n                pageY: event.pageY,\r\n                screenX: event.screenX,\r\n                screenY: event.screenY\r\n            };\r\n        }\r\n\r\n        var source = {\r\n            drop: this,\r\n            element: trigger,\r\n            activeArea: trigger.getBoundingClientRect(),\r\n            eventPosition: eventPosition,\r\n            isBackgroundEvent: !!isBackgroundEvent\r\n        };\r\n\r\n        this.piping.eventing.publish(raisedEventName, source, eventArg, null, parentEventActionId);\r\n    };\r\n\r\n    Drop.prototype.getDefaultEventArg = function () {\r\n        if (this.defaultEventArg !== undefined)\r\n            return this.defaultEventArg;\r\n\r\n        if (this.parent)\r\n            return this.parent.getDefaultEventArg();\r\n\r\n        return undefined;\r\n    };\r\n\r\n    Drop.prototype.updateRequiredIndicator = function () {\r\n        if (this.isValid())\r\n            this.$element.addClass('hasValidValue');\r\n        else\r\n            this.$element.removeClass('hasValidValue');\r\n    };\r\n\r\n    Drop.prototype.isValid = function () {\r\n        return !this.requiredData || this.hasValue();\r\n    };\r\n\r\n    Drop.prototype.triggerValidationEvent = function (optionalParentEventActionId, raisedEventName) {\r\n        this.triggerEvent(raisedEventName, null, null, null, null, optionalParentEventActionId)\r\n    };\r\n\r\n    Drop.prototype.performValidation = function (optionalParentEventActionId) {\r\n        return validations.runValidation(this.data.validation, this.piping, this.triggerValidationEvent.bind(this, optionalParentEventActionId), this.getValue());        \r\n    };\r\n\r\n    Drop.prototype.hasValue = function () {\r\n        var value = this.getValue();\r\n\r\n        if (value === undefined || value === null || value === false) {\r\n            return false;\r\n        }\r\n\r\n        if (value.length === 0) {\r\n            return false;\r\n        }\r\n\r\n        return true;\r\n    };\r\n\r\n    Drop.prototype.makesItGrow = function () {\r\n        return this.rootDrop && this.rootDrop.doesThisMakeMeGrow(this);\r\n    };\r\n\r\n    Drop.prototype.applyPosition = function () {\r\n        if (this.canGrow() || this.makesItGrow()) {\r\n            var css = {\r\n                position: 'relative',\r\n                display: 'block',\r\n                zIndex: this.getZIndex()\r\n            };\r\n\r\n            if (this.data.minHeight)\r\n                css.minHeight = this.data.minHeight + 'px';\r\n\r\n            // horizontal positioning\r\n            if (this.data.centered === true) {\r\n                css.width = this.data.size.x + 'px';\r\n                css.margin = '0 auto';\r\n            } else if (this.data.right != null && this.data.left == null) {\r\n                css.marginLeft = 'auto';\r\n                css.marginRight = this.data.right + 'px';\r\n                css.width = this.data.size.x + 'px';\r\n            } else if (this.data.right != null && this.data.left != null) {\r\n                css.marginLeft = this.data.left + 'px';\r\n                css.marginRight = this.data.right + 'px';\r\n                css.width = 'calc(100% - ' + this.data.left + 'px' - this.data.right + 'px)';\r\n            } else {\r\n                css.marginLeft = (this.data.left != null ? this.data.left : this.data.position.x) + 'px';\r\n                css.width = this.data.size.x + 'px';\r\n            }\r\n\r\n            this.$element.css(css);\r\n\r\n            var parentCss = {\r\n                paddingTop: (this.data.top != null ? this.data.top : this.data.position.y) + 'px'\r\n            };\r\n\r\n            if (this.data.bottom != null)\r\n                parentCss.paddingBottom = this.data.bottom + 'px';\r\n\r\n            if (this === this.rootDrop)\r\n                this.piping.$actionView.css(parentCss);\r\n            else\r\n                this.parent.$element.css(parentCss);\r\n\r\n        } else if (this.parent != null && this.parent.parent == null && !this.isRenderedInBackground()) {\r\n            var pool = this.rootDrop.$element[0];\r\n\r\n            if (this.$element[0] !== pool) {\r\n                var parent = this.$element.parent()[0];\r\n\r\n                if ((this.data.toPage || this.data.toBrowser) && this.rootDrop.$pageAnchored) {\r\n                    var pageAnchoredCanvas = this.rootDrop.$pageAnchored[0];\r\n                    if (parent !== pageAnchoredCanvas)\r\n                        this.$element.appendTo(pageAnchoredCanvas);\r\n                } else if (!this.data.toPage && !this.data.toBrowser) {\r\n                    if (parent !== pool)\r\n                        this.$element.appendTo(pool);\r\n                }\r\n            }\r\n\r\n            this.parent.applyPositionForChild(this);\r\n        } else {\r\n            if (this.parent != null) {\r\n                this.parent.applyPositionForChild(this);\r\n            } else {\r\n                this.$element.css(this.getPositionCss(this.data));\r\n            }\r\n        }\r\n\r\n        if (this.data.parallax && this.data.parallax.enabled)\r\n            this.piping.$actionWrapper.on('scroll', this.updateParallaxPosition.bind(this));\r\n    };\r\n\r\n    Drop.prototype.doesThisMakeMeGrow = function (otherDrop) {\r\n        return false;\r\n    };\r\n\r\n    Drop.prototype.canGrow = function (drop) {\r\n        return false;\r\n    };\r\n\r\n    Drop.prototype.updateParallaxPosition = function () {\r\n        var scrollTop = this.piping.$actionWrapper.scrollTop();\r\n        this.$element.css('top', this.data.position.y + scrollTop - (scrollTop * this.data.parallax.factor) + 'px');\r\n    };\r\n\r\n    Drop.prototype.applyPositionForChild = function (childDrop) {\r\n        var zIndex = childDrop.getZIndex();\r\n        var css =  this.getPositionCss(childDrop.data, zIndex);\r\n        childDrop.$element.css(css);\r\n    };\r\n\r\n    Drop.prototype.getZIndex = function () {\r\n        if (!this.renderInBackground && this.parent === this.rootDrop && !this.designData)\r\n            return this.data.zIndex + masterPageOffsetZIndex;\r\n        return this.data.zIndex;\r\n    }\r\n\r\n    Drop.prototype.getPositionCss = function (data, optionalZIndex) {\r\n        var zIndex = optionalZIndex !== undefined ? optionalZIndex : data.zIndex;\r\n\r\n        if (data.dynamicHeight === true) {\r\n            return {\r\n                position: 'relative',\r\n                top: data.position.y + 'px',\r\n                left: data.position.x + 'px',\r\n                width: data.size.x,\r\n                zIndex: zIndex,\r\n                height: 'auto'\r\n            };\r\n        }\r\n\r\n        var css = {\r\n            zIndex: zIndex,\r\n            position: data.positioning\r\n        };\r\n\r\n        if (data.useFullScreen) {\r\n            css.left = '0px';\r\n            css.right = '0px';\r\n            css.top = '0px';\r\n            css.bottom = '0px';\r\n            css.height = 'auto';\r\n            css.width = 'auto';\r\n            return css;\r\n        }\r\n\r\n        if (data.bottom != null && data.top == null) {\r\n            css.top = 'auto';\r\n            css.bottom = data.bottom + 'px';\r\n            css.height = data.size.y;\r\n        } else if (data.bottom != null && data.top != null) {\r\n            css.top = data.top + 'px';\r\n            css.bottom = data.bottom + 'px';\r\n            css.height = 'auto';\r\n        } else {\r\n            css.top = (data.top != null ? data.top : data.position.y) + 'px';\r\n            css.bottom = 'auto';\r\n            css.height = data.size.y;\r\n        }\r\n        if (data.right != null && data.left == null) {\r\n            css.left = 'auto';\r\n            css.right = data.right + 'px';\r\n            css.width = data.size.x;\r\n        } else if (data.right != null && data.left != null) {\r\n            css.left = data.left + 'px';\r\n            css.right = data.right + 'px';\r\n            css.width = 'auto';\r\n        } else {\r\n            css.left = (data.left != null ? data.left : data.position.x) + 'px';\r\n            css.right = 'auto';\r\n            css.width = data.size.x;\r\n        }\r\n\r\n        if (data.centered === true) {\r\n            css.left = '0';\r\n            css.right = '0';\r\n            css.marginLeft = 'auto';\r\n            css.marginRight = 'auto';\r\n        }\r\n\r\n        if (data.autoHeight || (data.useDynamicHeight && data.isDynamiclySizedContainer)) {\r\n            css.height = 'auto';\r\n        }\r\n\r\n        if (data.autoWidth || (data.useDynamicWidth && data.isDynamiclySizedContainer)) {\r\n            css.width = 'auto';\r\n        }\r\n\r\n        if (data.fitContent) {\r\n            css.width = 'fit-content';\r\n        }\r\n\r\n        return css;\r\n    };\r\n\r\n    Drop.prototype.getPosition = function () {\r\n        var position = {};\r\n\r\n        if (this.data.left !== null)\r\n            position.left = this.data.left;\r\n\r\n        if (this.data.top !== null)\r\n            position.top = this.data.top;\r\n\r\n        if (this.data.right !== null)\r\n            position.right = this.data.right;\r\n\r\n        if (this.data.bottom !== null)\r\n            position.bottom = this.data.bottom;\r\n\r\n        return position;\r\n    };\r\n\r\n    Drop.prototype.addDrop = function (drop) {\r\n        this.pool.push(drop);\r\n        drop.parent = this;\r\n        drop.rootDrop = this.rootDrop;\r\n        drop.piping = this.piping;\r\n        this.informListeners('ChildAdded', drop);\r\n        delete drop.removed;\r\n        return this;\r\n    };\r\n\r\n    Drop.prototype.removeDrop = function (drop) {\r\n        drop.beforeRemove();\r\n\r\n        if (drop.type === \"Query\") {\r\n            this.piping.datasources.unregisterDatasource(drop.data);\r\n        }\r\n        var index = this.pool.indexOf(drop);\r\n        this.pool.splice(index, 1);\r\n        drop.parent = null;\r\n        drop.rootDrop = null;\r\n        drop.piping = null;\r\n        drop.removed = true;\r\n\r\n        return this;\r\n    };\r\n\r\n    Drop.prototype.beforeRemove = function() {\r\n        _.each(this.pool, function (childDrop) {\r\n            childDrop.beforeRemove();\r\n        });\r\n    };\r\n\r\n    Drop.prototype.removeAllDrops = function () {\r\n        var self = this;\r\n        _.each(this.pool.slice(0), function (drop) {\r\n            self.removeDrop(drop);\r\n        });\r\n    };\r\n\r\n    Drop.prototype.subscribeEventHandler = function ($element, event, handler) {\r\n        if (typeof arguments[0] === 'string')\r\n            return this.subscribeEventHandler(this.$element, arguments[0], arguments[1]);\r\n        this.eventHandlers.push({ $element: $element, event: event, handler: handler });\r\n        $element.on(event, handler);\r\n    };\r\n\r\n    // TODO: implement this in all drops otherwise we leak the whole drop tree when reloading (they all reference eachother)\r\n    // DOM event handlers inside the element of the drop may be removed automatically in newer browsers,\r\n    // but still cause memory leaks in old ones\r\n    // DOM event handlers on document/body/#action-canvas or anything outside the element tree of the action always have to be removed explicitly\r\n    Drop.prototype.unsubscribeEventHandlers = $.noop;\r\n\r\n    Drop.prototype.unsubscribeEventHandlersRecursive = function () {\r\n        _.each(this.pool, function (drop) {\r\n            drop.unsubscribeEventHandlersRecursive();\r\n        });\r\n\r\n        this.unsubscribeEventHandlers();\r\n\r\n        if (this.removeClicks)\r\n            this.removeClicks();\r\n\r\n        var self = this;\r\n        _.each(this.eventHandlers, function (eventHandler) {\r\n            if (eventHandler.$element)\r\n                eventHandler.$element.off(eventHandler.event, eventHandler.handler);\r\n            else if (eventHandler.source)\r\n                self.unsubscribe(eventHandler.source, eventHandler.events);\r\n        });\r\n\r\n        this.parent = null;\r\n        this.rootDrop = null;\r\n        this.piping = null;\r\n        \r\n        this.$element.remove();\r\n    };\r\n\r\n    Drop.prototype.getRootDrop = function () {\r\n        if (this.parent)\r\n            return this.parent.getRootDrop();\r\n        return this;\r\n    };\r\n\r\n    Drop.prototype.isChildDropOfRecursive = function (potentialParent) {\r\n        if (this.parent)\r\n            return this.parent === potentialParent || this.parent.isChildDropOfRecursive(potentialParent);\r\n        return false;\r\n    };\r\n\r\n    // very simple implementation for now\r\n    Drop.prototype.events = function (source, events, doNotAutoUnsubscribe) {\r\n        _.each(_.keys(events), function (event) {\r\n            var handler = events[event];\r\n            source['withOn' + event](handler);\r\n        });\r\n\r\n        // doNotAutoUnsubscribe will default to 'false' if ommitted\r\n        if (doNotAutoUnsubscribe !== true)\r\n            this.eventHandlers.push({ source: source, events: events });\r\n    };\r\n\r\n    Drop.prototype.unsubscribe = function (source, events) {\r\n        _.each(_.keys(events), function (event) {\r\n            var handler = events[event];\r\n            source['withoutOn' + event](handler);\r\n        });\r\n    };\r\n\r\n    Drop.prototype.descendantOf = function (dropType) {\r\n        if (!this.parent) return false;\r\n        if (this.parent.type === dropType) return true;\r\n        return this.parent.descendantOf(dropType);\r\n    };\r\n\r\n    Drop.prototype.getFirstParentOfType = function (dropType) {\r\n        if (!this.parent) return undefined;\r\n        if (this.parent.type === dropType) return this.parent;\r\n        return this.parent.getFirstParentOfType(dropType);\r\n    };\r\n\r\n    Drop.prototype.getNestingContext = function () {\r\n        if (!this.parent) return undefined;\r\n        if (this.parent.nestingContext) return this.parent.nestingContext;\r\n        return this.parent.getNestingContext();\r\n    };\r\n\r\n    Drop.prototype.applyLayouts = function () {\r\n        if (this.data.appliedLayouts && this.data.appliedLayouts.length > 0) {\r\n            this.$element\r\n                .addClass('layout-specific')\r\n                .addClass(_.map(this.data.appliedLayouts, function (layoutId) {\r\n                    return 'supports-layout-' + layoutId;\r\n                }));\r\n        }\r\n    };\r\n\r\n    return Drop;\r\n});\n","define('lq/enum',['underscore'], function (_) {\r\n\t'use strict';\r\n\r\n\t// Usage:\r\n\t// constants.Seasons = new Enum(\"Seasons\", [\"Spring\", \"Summer\", \"Autumn\", \"Winter\"]);\r\n\t// if (currentSeason === constants.Seasons.Summer) { print(\"Yay, it's summer!\"); }\r\n\r\n\tvar freeze = function (obj) {\r\n\t\tif (Object.freeze) {\r\n\t\t\tObject.freeze(obj);\r\n\t\t}\r\n\t};\r\n\r\n\tvar EnumItem = function (enumObject, enumName, name, methods) {\r\n\t    var self = this;\r\n        self.enum = enumObject;\r\n\t\tself.enumName = enumName;\r\n\t\tself.name = name;\r\n\t\t_.extend(self, methods);\r\n\t\tfreeze(self);\r\n\t};\r\n\r\n\tEnumItem.prototype.toString = function () {\r\n\t\treturn \"EnumItem \" + this.enumName + \" \" + this.name;\r\n\t};\r\n\r\n\tif (Object.create) {\r\n\t\t// avoid inheriting object methods\r\n\t\tEnumItem.prototype = Object.create(null);\r\n\t}\r\n\r\n\tvar Enum = function (name, keys, methods) {\r\n\t\tvar self = this;\r\n\r\n\t\tkeys = keys.slice();\r\n\t\tfreeze(keys);\r\n\r\n\t\tself.keys = function () {\r\n\t\t    return keys;\r\n\t\t};\r\n\r\n\t\t_.each(keys, function (key) {\r\n\t\t\tself[key] = new EnumItem(self, name, key, methods);\r\n\t\t});\r\n\r\n\t\tfreeze(self);\r\n\t};\r\n\r\n\tEnum.prototype.values = function () {\r\n\t    return _.values(this);\r\n\t};\r\n\r\n\treturn Enum;\r\n});\r\n\n","define('lq/constants',[\r\n    'lq/enum'\r\n], function (Enum) {\r\n    'use strict';\r\n    \r\n    var getIndex = function () {\r\n        return this.enum.keys().indexOf(this.name);\r\n    };\r\n\r\n    var constants = {\r\n        licquidDateFormat: 'S', // 2000-08-17T16:32:32\r\n        valueTypes: {\r\n            uniqueIdentifier: 'System.Guid',\r\n            dateTime: 'System.DateTime',\r\n            decimal: 'System.Decimal',\r\n            integer: 'System.Int32',\r\n            string: 'System.String',\r\n            boolean: 'System.Boolean',\r\n            document: 'LicquidDocumentVersionDetail'\r\n        },\r\n        // since we use getIndex to get the codes here, order does matter\r\n        layoutTypes: new Enum(\"LayoutTypes\", ['Desktop', 'TabletPortrait', 'TabletLandscape', 'PhonePortrait', 'PhoneLandscape'], { getIndex: getIndex }),\r\n        deviceTypes: new Enum(\"DeviceTypes\", ['Desktop', 'Tablet', 'Phone'], { getIndex: getIndex }),\r\n        orientations: new Enum(\"Orientations\", ['Portrait', 'Landscape'], { getIndex: getIndex }),\r\n        mappingTypes: new Enum(\"Mapping types\", ['Parameter', 'DataSource', 'ViewModel', 'FixedValue','QueryString','NullValue'])\r\n    };\r\n\r\n    constants.valueTypeLabels = {};\r\n    constants.valueTypeLabels[constants.valueTypes.string] = 'String',\r\n    constants.valueTypeLabels[constants.valueTypes.integer] = 'Natural Number',\r\n    constants.valueTypeLabels[constants.valueTypes.decimal] = 'Decimal',\r\n    constants.valueTypeLabels[constants.valueTypes.dateTime] = 'DateTime',\r\n    constants.valueTypeLabels[constants.valueTypes.boolean] = 'Boolean',\r\n    constants.valueTypeLabels[constants.valueTypes.uniqueIdentifier] = 'Unique identifier'\r\n\r\n    constants.valueTypeSelection = [\r\n        { key: constants.valueTypes.string, value: constants.valueTypeLabels[constants.valueTypes.string] },\r\n        { key: constants.valueTypes.integer, value: constants.valueTypeLabels[constants.valueTypes.integer] },\r\n        { key: constants.valueTypes.decimal, value: constants.valueTypeLabels[constants.valueTypes.decimal] },\r\n        { key: constants.valueTypes.dateTime, value: constants.valueTypeLabels[constants.valueTypes.dateTime] },\r\n        { key: constants.valueTypes.boolean, value: constants.valueTypeLabels[constants.valueTypes.boolean] },\r\n        { key: constants.valueTypes.uniqueIdentifier, value: constants.valueTypeLabels[constants.valueTypes.uniqueIdentifier] }\r\n    ];\r\n\r\n    if (Object.freeze) {\r\n        Object.freeze(constants.valueTypes);\r\n        Object.freeze(constants.valueTypeLabels);\r\n    \tObject.freeze(constants);\r\n    }\r\n\r\n    return constants;\r\n});\n","define('lq/util',['underscore'], function (_) {\r\n\t'use strict';\r\n\r\n    var convertListOfKeyValuesToObject = function (sourceObject, ignoredProperties) {\r\n        if (!(sourceObject instanceof Array) || sourceObject.length === 0) {\r\n            return sourceObject;\r\n        }\r\n\r\n        var theObject = {};\r\n\r\n        for (var i = 0; i < sourceObject.length; i++) {\r\n            var item = sourceObject[i];\r\n\r\n            var value = (item.value !== undefined) ? item.value : item.Value;\r\n            var key = (item.key !== undefined) ? item.key : item.Key;\r\n\r\n            if (ignoredProperties && ignoredProperties.indexOf(key) !== -1) {\r\n                theObject[key] = value;\r\n            } else {\r\n                theObject[key] = convertListOfKeyValuesToObject(value);\r\n            }\r\n        }\r\n        return theObject;\r\n    };\r\n\r\n    var cloneData = function (data) {\r\n        return data === undefined ? undefined\r\n            : JSON.parse(JSON.stringify(data));\r\n    };\r\n\r\n    // Source: URI syntax standard (RFC3986) Appendix B. at: http://tools.ietf.org/html/rfc3986#appendix-B\r\n    var uriRegex = new RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\r\n\r\n    var parseUri = function (uri) {\r\n        var match = uri.match(uriRegex);\r\n        if (match) {\r\n            return {\r\n                scheme    : match[2],\r\n                authority : match[4],\r\n                path      : match[5],\r\n                query     : match[7],\r\n                fragment  : match[9],\r\n                toString  : function () {\r\n                    // Section 5.3 http://tools.ietf.org/html/rfc3986#section-5.3\r\n                \treturn (this.scheme ? this.scheme + \":\" : \"\") +\r\n                        (this.authority ? \"//\" + this.authority : \"\") +\r\n                        this.path +\r\n                        (this.query ? \"?\" + this.query : \"\") +\r\n                        (this.fragment ? \"#\" + this.fragment : \"\");\r\n                }\r\n            };\r\n        }\r\n    };\r\n\r\n    var formatUriQuery = function (query) {\r\n        return _.map(query, function (value, key) { return key + '=' + value; })\r\n            .join('&');\r\n    };\r\n\r\n    var parseUriQuery = function (query) {\r\n        return _.chain(query.split('&'))\r\n            .compact()\r\n            .map(function (param) {\r\n                var split = param.split('=');\r\n                var rest = split.slice(1).join('=');\r\n                return [split[0], rest]; // [key, value]\r\n            })\r\n            .object()\r\n            .value();\r\n    };\r\n\r\n    var addOrSetQueryParameter = function (queryString, name, value) {\r\n        var query = parseUriQuery(queryString || '');\r\n        query[name] = value;\r\n        return formatUriQuery(query);\r\n    };\r\n\r\n    var addOrSetQueryParameterInUrl = function (url, name, value) {\r\n        var parsedUri = parseUri(url);\r\n        parsedUri.query = addOrSetQueryParameter(parsedUri.query, name, value);\r\n        return parsedUri.toString();\r\n    };\r\n\r\n    var convertRelativeHyperlinkToHostName = function (hyperlink) {\r\n\r\n    \tvar uri = parseUri(hyperlink);\r\n\r\n    \t// we don't use relative urls, they would need to be guids,\r\n    \t// that's rather awkward for the users and unlikely to be useful\r\n    \tif (uri.path[0] !== '/' && !uri.authority) { // relative uri without hostname (still might have scheme)\r\n    \t\turi.authority = uri.path;\r\n    \t\turi.path = '';\r\n    \t\treturn uri.toString();\r\n    \t}\r\n\r\n    \treturn hyperlink;\r\n    };\r\n\r\n    var getPropertyByPathArray = function (obj, pathArray) {\r\n    \tvar current = obj;\r\n\r\n    \t_.each(pathArray, function (property) {\r\n    \t\tcurrent = _.isObject(current) ? current[property] : undefined;\r\n    \t});\r\n\r\n    \treturn current;\r\n    };\r\n\r\n    var getPropertyByPath = function (obj, path) {\r\n    \treturn getPropertyByPathArray(obj, typeof path === \"number\" ? [path] : path.split('.'));\r\n    };\r\n\r\n    var removePropertyByPath = function (obj, path) {\r\n    \tvar pathArray = typeof path === \"number\" ? [path] : path.split('.');\r\n    \tvar lastProperty = pathArray.pop();\r\n\r\n    \tif (!_.isObject(obj)) {\r\n    \t\treturn;\r\n    \t}\r\n\r\n    \tvar lastObject = getPropertyByPathArray(obj, pathArray);\r\n\r\n    \tif (_.isObject(lastObject)) {\r\n    \t\tdelete lastObject[lastProperty];\r\n    \t}\r\n    };\r\n\r\n    var getOrCreatePropertyByPathArray = function (obj, pathArray) {\r\n    \tvar current = obj;\r\n    \t_.each(pathArray, function (property) {\r\n    \t\tif (!_.isObject(current[property])) {\r\n    \t\t\tcurrent[property] = {};\r\n    \t\t}\r\n    \t\tcurrent = current[property];\r\n    \t});\r\n\r\n    \treturn current;\r\n    };\r\n\r\n    var setPropertyByPath = function (obj, path, value) {\r\n    \tvar pathArray = typeof path === \"number\" ? [path] : path.split('.');\r\n    \tvar lastProperty = pathArray.pop();\r\n\r\n    \tif (!_.isObject(obj)) {\r\n    \t\treturn;\r\n    \t}\r\n\r\n    \tvar lastObject = getOrCreatePropertyByPathArray(obj, pathArray);\r\n\r\n    \tlastObject[lastProperty] = value;\r\n    };\r\n\r\n    // this seemed pretty simple in theory and then snowballed... but it works well and is thoroughly tested\r\n    var autoFormatNumber = function (number) {\r\n        if (number === null || number === undefined)\r\n            return number;\r\n        if (!_.isFinite(number) || typeof number === 'string')\r\n            return number.toString();\r\n\r\n        var abs = Math.abs(number);\r\n        var log10 = Math.log(abs) / Math.LN10;\r\n        if (!_.isFinite(log10))\r\n            return number.toString();\r\n\r\n        if (log10 > 7 || log10 < -6)\r\n            return number.toExponential(2); // 3 significant digits, eg. 1.23e+6\r\n\r\n        var precision = 2 + (-Math.floor(log10)); // 3 significant digits, 12.345 -> 12.3; 0.012345 -> 0.0123\r\n        if (precision <= 0)\r\n            return number.toFixed(0);\r\n\r\n        var formatted = number.toFixed(precision);\r\n        while (formatted.charAt(formatted.length - 1) == '0') {\r\n            formatted = formatted.substring(0, formatted.length - 1);\r\n        }\r\n        if (formatted.charAt(formatted.length - 1) == '.') {\r\n            formatted = formatted.substring(0, formatted.length - 1);\r\n        }\r\n        return formatted;\r\n    }\r\n\r\n    return {\r\n        cloneData: cloneData,\r\n        parseUri: parseUri,\r\n        addOrSetQueryParameter: addOrSetQueryParameter,\r\n        addOrSetQueryParameterInUrl: addOrSetQueryParameterInUrl,\r\n        parseUriQuery: parseUriQuery,\r\n        formatUriQuery: formatUriQuery,\r\n        convertRelativeHyperlinkToHostName: convertRelativeHyperlinkToHostName,\r\n        getPropertyByPath: getPropertyByPath,\r\n        setPropertyByPath: setPropertyByPath,\r\n        removePropertyByPath: removePropertyByPath,\r\n        autoFormatNumber: autoFormatNumber,\r\n        convertListOfKeyValuesToObject: convertListOfKeyValuesToObject\r\n    };\r\n\r\n});\n","define('lq/responsive',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/constants',\r\n    'lq/drop',\r\n    'lq/util'\r\n], function ($, _, constants, Drop, util) {\r\n    'use strict';\r\n\r\n    var orientations = constants.orientations;\r\n    var deviceTypes = constants.deviceTypes;\r\n    var layoutTypes = constants.layoutTypes;\r\n\r\n    // for now these are hardcoded and apply to all drops\r\n    var propertiesThatAreAlwaysLayoutDependend = [\r\n        'position',\r\n        'size',\r\n        'margin',\r\n        'top',\r\n        'right',\r\n        'bottom',\r\n        'left',\r\n        'centered',\r\n        'toPage',\r\n        'styles',\r\n        'initialVisibilityOption',\r\n        'initialVisibility',\r\n        'dataSourceForVisibility',\r\n        'dataSourceOutputForVisibility',\r\n        'parameterForVisibility',\r\n        'parameterForVisibility',\r\n        'conditionForVisibility'\r\n    ];\r\n\r\n    var propertiesThatShouldBeDeletedIfTheyDoNotExist = [\r\n        'top',\r\n        'right',\r\n        'bottom',\r\n        'left',\r\n        'centered'\r\n    ];\r\n\r\n    // these should be moved to their respective drop\r\n    var propertiesThatAreLayoutDependendByType = {\r\n        'List': [\r\n            'childPositionX',\r\n            'childPositionY',\r\n            'childSizeX',\r\n            'childSizeY'\r\n        ],\r\n        'Gauge': [\r\n            'indicatorScale'\r\n        ],\r\n        'Image': [\r\n            'cropPositionX',\r\n            'cropPositionY',\r\n            'cropImageWidth',\r\n            'cropImageHeight',\r\n            'selectedResizeOption',\r\n            'backgroundRepeat'\r\n        ],\r\n        'Text': [\r\n            'applyBestFontFit'\r\n        ]\r\n    };\r\n\r\n    var getDeviceType = function () {\r\n        // based on http://detectmobilebrowsers.com/\r\n        var userAgent = navigator.userAgent || navigator.vendor || window.opera;\r\n        if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(userAgent)\r\n             ||\r\n            /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(userAgent.substr(0, 4)))\r\n            return deviceTypes.Phone;\r\n        else if (/android|ipad|playbook|silk/i.test(userAgent))\r\n            return deviceTypes.Tablet;\r\n        else\r\n            return deviceTypes.Desktop;\r\n    };\r\n\r\n    var isPhoneDevice = function () {\r\n        return getDeviceType() === deviceTypes.Phone;\r\n    };\r\n\r\n    var isPWA = function () {\r\n        return window.matchMedia('(display-mode: standalone)').matches;\r\n    };\r\n\r\n    var getOrientation = function () {\r\n        //css orientation detection is buggy, returns landscape when you open the keyboard in portrait mode (seems to use width/height > 1)\r\n        //return window.matchMedia && window.matchMedia(\"(orientation: portrait)\").matches ? orientations.Portrait : orientations.Landscape;\r\n\r\n        if (window.screen && window.screen.orientation) {\r\n            var isLandscape = window.screen.orientation.type.indexOf('landscape') !== -1;\r\n            return isLandscape ? orientations.Landscape : orientations.Portrait;\r\n        }\r\n\r\n        // for some reason 'outerWidth' and 'outerHeight' will return '0' on (some) versions of Safari\r\n        var $window = $(window);\r\n        var width = window.outerWidth || $window.width();\r\n        var height = window.outerHeight || $window.height();\r\n        return width / height > 1.3 ? orientations.Landscape : orientations.Portrait;\r\n    };\r\n\r\n    var getLayoutType = function (deviceType, orientation) {\r\n        if (deviceType === deviceTypes.Desktop)\r\n            return layoutTypes.Desktop;\r\n        else\r\n            return layoutTypes[deviceType.name + orientation.name];\r\n    };\r\n\r\n    // TODO: get alternate layout (same device, different orientation)\r\n    var getBrowserLayout = function () {\r\n        var deviceType = this.getDeviceType();\r\n        var orientation = this.getOrientation();\r\n        var layoutType = this.getLayoutType(deviceType, orientation);\r\n        return {\r\n            layoutType: layoutType,\r\n            deviceType: deviceType,\r\n            orientation: orientation\r\n        };\r\n    };\r\n\r\n    var getLayoutTypeFromUri = function () {\r\n        var queryString = window.location.hash || '#';\r\n        var queryParameters = util.parseUriQuery(queryString.substr(1));\r\n        return parseInt(queryParameters.layoutType, 10);\r\n    };\r\n\r\n    var getLayoutIdFromUri = function () {\r\n        var queryString = window.location.hash || '#';\r\n        var queryParameters = util.parseUriQuery(queryString.substr(1));\r\n        return queryParameters.layoutId;\r\n    };\r\n\r\n    var getBrowserLayoutType = function () {\r\n        var browserLayout = this.getBrowserLayout();\r\n        return browserLayout.layoutType.getIndex();\r\n    };\r\n\r\n    var getCurrentLayoutType = function (rootDrop) {\r\n        var layoutTypeOverride = this.getLayoutTypeFromUri();\r\n\r\n        if (layoutTypeOverride >= 0)\r\n            return layoutTypeOverride;\r\n\r\n        // allow root drop to override browser type detection layout choice\r\n        if (typeof rootDrop.getInitialLayoutType == 'function')\r\n            layoutTypeOverride = rootDrop.getInitialLayoutType();\r\n\r\n        if (layoutTypeOverride >= 0)\r\n            return layoutTypeOverride;\r\n\r\n        return this.getBrowserLayoutType();\r\n    };\r\n\r\n    var getBrowserResolution = function () {\r\n        var w = window, d = document, e = d.documentElement, g = d.getElementsByTagName('body')[0];\r\n        return {\r\n            x: w.innerWidth || e.clientWidth || g.clientWidth,\r\n            y: w.innerHeight || e.clientHeight || g.clientHeight\r\n        };\r\n    };\r\n\r\n    var getDefaultLayoutType = function (rootDrop) {\r\n        var defaultLayout = rootDrop.defaultLayout || { layoutType: 0, id: 'default' };\r\n        return defaultLayout.layoutType;\r\n    };\r\n\r\n    var isDefaultLayout = function () {\r\n        var currentLayout = this.getCurrentLayout();\r\n        return !currentLayout || currentLayout.isDefault;\r\n    };\r\n\r\n    var getCurrentLayout = function (rootDrop) {\r\n        var currentLayoutId = this.getLayoutIdFromUri();\r\n        var selectedLayout = currentLayoutId && _.findWhere(rootDrop.allLayouts, { id: currentLayoutId });\r\n        if (selectedLayout)\r\n            return selectedLayout;\r\n\r\n        var currentLayoutType = this.getCurrentLayoutType(rootDrop);\r\n        var layoutsMatchingDeviceSortedBySize = _.chain(rootDrop.allLayouts)\r\n            .where({ layoutType: currentLayoutType })\r\n            .sortBy('resolutionX')\r\n            .value();\r\n        var browserSize = this.getBrowserResolution();\r\n        var fittingLayoutsSortedBySize = _.filter(layoutsMatchingDeviceSortedBySize, function (layoutInfo) {\r\n            return layoutInfo.resolutionX <= browserSize.x && layoutInfo.resolutionY <= browserSize.y;\r\n        });\r\n\r\n        if (fittingLayoutsSortedBySize.length > 0)\r\n            return _.last(fittingLayoutsSortedBySize);\r\n\r\n        if (layoutsMatchingDeviceSortedBySize.length > 0) {\r\n            if (layoutsMatchingDeviceSortedBySize.length === 1)\r\n                return layoutsMatchingDeviceSortedBySize[0];\r\n\r\n            // take the smallest resolution when that resolution is larger than the screen\r\n            var first = _.first(layoutsMatchingDeviceSortedBySize);\r\n            if (first.resolutionX > browserSize.x || first.resolutionY > browserSize.y)\r\n                return first;\r\n\r\n            // default to the largest resolution\r\n            return _.last(layoutsMatchingDeviceSortedBySize);\r\n        }\r\n\r\n        // probably not 100% correct. a better solution: find the one that matches best.\r\n        if (rootDrop.data.appliedLayouts && rootDrop.data.appliedLayouts.length > 0 && _.indexOf(rootDrop.data.appliedLayouts, rootDrop.defaultLayout.id) === -1) {\r\n            return _.findWhere(rootDrop.allLayouts, { id: rootDrop.data.appliedLayouts[0] });\r\n        }\r\n\r\n        return rootDrop.defaultLayout;\r\n    };\r\n\r\n    var copyDropLayout = function (dropType, sourceData, targetData) {\r\n        if (propertiesThatAreLayoutDependendByType[dropType]) {\r\n            _.each(propertiesThatAreLayoutDependendByType[dropType], function (prop) {\r\n                if (!_.isUndefined(sourceData[prop]))\r\n                    targetData[prop] = sourceData[prop];\r\n            });\r\n        }\r\n\r\n        _.each(propertiesThatAreAlwaysLayoutDependend, function (prop) {\r\n            if (!_.isUndefined(sourceData[prop])) {\r\n                targetData[prop] = sourceData[prop];\r\n            } else if (_.indexOf(propertiesThatShouldBeDeletedIfTheyDoNotExist, prop) !== -1) {\r\n                // WHY if a property does not exist, we will always fallback to the value of the\r\n                // default layout. Unfortunately the anchoring code assumes the anchor properties\r\n                // do not exist when anchoring is not enabled, i.e. when you disable anchoring in a\r\n                // non-default layout the designer will always fallback to the anchoring of the\r\n                // default layout\r\n                delete targetData[prop];\r\n            }\r\n        });\r\n    };\r\n\r\n    var applyLayoutRecursiveToChildren = function (drop, layoutInfo) {\r\n        _.each(drop.childDrops, function (childDrop) {\r\n            var currentDropLayout = _.findWhere(childDrop.data.layouts, { layoutId: layoutInfo.id });\r\n            if (currentDropLayout) copyDropLayout(childDrop.data.type, currentDropLayout, childDrop.data);\r\n            applyLayoutRecursiveToChildren(childDrop, layoutInfo);\r\n        });\r\n\r\n        _.each(drop.backgroundDrops, function (childDrop) {\r\n            var currentDropLayout = _.findWhere(childDrop.data.layouts, { layoutId: layoutInfo.id });\r\n            if (currentDropLayout) copyDropLayout(childDrop.data.type, currentDropLayout, childDrop.data);\r\n            applyLayoutRecursiveToChildren(childDrop, layoutInfo);\r\n        });\r\n    };\r\n\r\n    var applyLayoutRecursive = function (rootDrop, layoutInfo) {\r\n        var currentDropLayout = _.findWhere(rootDrop.data.layouts, { layoutId: layoutInfo.id });\r\n\r\n        if (currentDropLayout) {\r\n            this.copyDropLayout(rootDrop.type, currentDropLayout, rootDrop.data);\r\n        } else if (!layoutInfo.isDefault) {\r\n            this.copyDropLayout(rootDrop.type, {\r\n                size: {\r\n                    x: layoutInfo.resolutionX,\r\n                    y: layoutInfo.resolutionY\r\n                },\r\n                position: {\r\n                    x: 0,\r\n                    y: 0\r\n                },\r\n                top: null,\r\n                left: null,\r\n                bottom: null,\r\n                right: null,\r\n                centered: false\r\n            }, rootDrop.data);\r\n        }\r\n\r\n        applyLayoutRecursiveToChildren(rootDrop, layoutInfo);\r\n    };\r\n\r\n    return {\r\n        orientations: constants.orientations,\r\n        deviceTypes: constants.deviceTypes,\r\n        layoutTypes: constants.layoutTypes,\r\n        getDeviceType: getDeviceType,\r\n        isPhoneDevice: isPhoneDevice,\r\n        isPWA: isPWA,\r\n        getOrientation: getOrientation,\r\n        getBrowserLayout: getBrowserLayout,\r\n        getBrowserLayoutType: getBrowserLayoutType,\r\n        getBrowserResolution: getBrowserResolution,\r\n        getLayoutType: getLayoutType,\r\n        getLayoutIdFromUri: getLayoutIdFromUri,\r\n        getLayoutTypeFromUri: getLayoutTypeFromUri,\r\n        getDefaultLayoutType: getDefaultLayoutType,\r\n        isDefaultLayout: isDefaultLayout,\r\n        getCurrentLayout: getCurrentLayout,\r\n        getCurrentLayoutType: getCurrentLayoutType,\r\n        copyDropLayout: copyDropLayout,\r\n        applyLayoutRecursive: applyLayoutRecursive\r\n    };\r\n});\r\n\n","/* jquery.signalR.core.js */\r\n/*global window:false */\r\n/*!\r\n * ASP.NET SignalR JavaScript Library 2.4.3\r\n * http://signalr.net/\r\n *\r\n * Copyright (c) .NET Foundation. All rights reserved.\r\n * Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n *\r\n */\r\n\r\n/// <reference path=\"Scripts/jquery-1.6.4.js\" />\r\n/// <reference path=\"jquery.signalR.version.js\" />\r\n(function ($, window, undefined) {\r\n\r\n    var resources = {\r\n        nojQuery: \"jQuery was not found. Please ensure jQuery is referenced before the SignalR client JavaScript file.\",\r\n        noTransportOnInit: \"No transport could be initialized successfully. Try specifying a different transport or none at all for auto initialization.\",\r\n        errorOnNegotiate: \"Error during negotiation request.\",\r\n        stoppedWhileLoading: \"The connection was stopped during page load.\",\r\n        stoppedWhileNegotiating: \"The connection was stopped during the negotiate request.\",\r\n        errorParsingNegotiateResponse: \"Error parsing negotiate response.\",\r\n        errorRedirectionExceedsLimit: \"Negotiate redirection limit exceeded.\",\r\n        errorDuringStartRequest: \"Error during start request. Stopping the connection.\",\r\n        errorFromServer: \"Error message received from the server: '{0}'.\",\r\n        stoppedDuringStartRequest: \"The connection was stopped during the start request.\",\r\n        errorParsingStartResponse: \"Error parsing start response: '{0}'. Stopping the connection.\",\r\n        invalidStartResponse: \"Invalid start response: '{0}'. Stopping the connection.\",\r\n        protocolIncompatible: \"You are using a version of the client that isn't compatible with the server. Client version {0}, server version {1}.\",\r\n        aspnetCoreSignalrServer: \"Detected a connection attempt to an ASP.NET Core SignalR Server. This client only supports connecting to an ASP.NET SignalR Server. See https://aka.ms/signalr-core-differences for details.\",\r\n        sendFailed: \"Send failed.\",\r\n        parseFailed: \"Failed at parsing response: {0}\",\r\n        longPollFailed: \"Long polling request failed.\",\r\n        eventSourceFailedToConnect: \"EventSource failed to connect.\",\r\n        eventSourceError: \"Error raised by EventSource\",\r\n        webSocketClosed: \"WebSocket closed.\",\r\n        pingServerFailedInvalidResponse: \"Invalid ping response when pinging server: '{0}'.\",\r\n        pingServerFailed: \"Failed to ping server.\",\r\n        pingServerFailedStatusCode: \"Failed to ping server.  Server responded with status code {0}, stopping the connection.\",\r\n        pingServerFailedParse: \"Failed to parse ping server response, stopping the connection.\",\r\n        noConnectionTransport: \"Connection is in an invalid state, there is no transport active.\",\r\n        webSocketsInvalidState: \"The Web Socket transport is in an invalid state, transitioning into reconnecting.\",\r\n        reconnectTimeout: \"Couldn't reconnect within the configured timeout of {0} ms, disconnecting.\",\r\n        reconnectWindowTimeout: \"The client has been inactive since {0} and it has exceeded the inactivity timeout of {1} ms. Stopping the connection.\",\r\n        jsonpNotSupportedWithAccessToken: \"The JSONP protocol does not support connections that require a Bearer token to connect, such as the Azure SignalR Service.\"\r\n    };\r\n\r\n    if (typeof ($) !== \"function\") {\r\n        // no jQuery!\r\n        throw new Error(resources.nojQuery);\r\n    }\r\n\r\n    var signalR,\r\n        _connection,\r\n        _pageLoaded = (window.document.readyState === \"complete\"),\r\n        _pageWindow = $(window),\r\n        _negotiateAbortText = \"__Negotiate Aborted__\",\r\n        events = {\r\n            onStart: \"onStart\",\r\n            onStarting: \"onStarting\",\r\n            onReceived: \"onReceived\",\r\n            onError: \"onError\",\r\n            onConnectionSlow: \"onConnectionSlow\",\r\n            onReconnecting: \"onReconnecting\",\r\n            onReconnect: \"onReconnect\",\r\n            onStateChanged: \"onStateChanged\",\r\n            onDisconnect: \"onDisconnect\"\r\n        },\r\n        ajaxDefaults = {\r\n            processData: true,\r\n            timeout: null,\r\n            async: true,\r\n            global: false,\r\n            cache: false\r\n        },\r\n        log = function (msg, logging) {\r\n            if (logging === false) {\r\n                return;\r\n            }\r\n            var m;\r\n            if (typeof (window.console) === \"undefined\") {\r\n                return;\r\n            }\r\n            m = \"[\" + new Date().toTimeString() + \"] SignalR: \" + msg;\r\n            if (window.console.debug) {\r\n                window.console.debug(m);\r\n            } else if (window.console.log) {\r\n                window.console.log(m);\r\n            }\r\n        },\r\n\r\n        changeState = function (connection, expectedState, newState) {\r\n            if (expectedState === connection.state) {\r\n                connection.state = newState;\r\n\r\n                $(connection).triggerHandler(events.onStateChanged, [{ oldState: expectedState, newState: newState }]);\r\n                return true;\r\n            }\r\n\r\n            return false;\r\n        },\r\n\r\n        isDisconnecting = function (connection) {\r\n            return connection.state === signalR.connectionState.disconnected;\r\n        },\r\n\r\n        supportsKeepAlive = function (connection) {\r\n            return connection._.keepAliveData.activated &&\r\n                connection.transport.supportsKeepAlive(connection);\r\n        },\r\n\r\n        configureStopReconnectingTimeout = function (connection) {\r\n            var stopReconnectingTimeout,\r\n                onReconnectTimeout;\r\n\r\n            // Check if this connection has already been configured to stop reconnecting after a specified timeout.\r\n            // Without this check if a connection is stopped then started events will be bound multiple times.\r\n            if (!connection._.configuredStopReconnectingTimeout) {\r\n                onReconnectTimeout = function (connection) {\r\n                    var message = signalR._.format(signalR.resources.reconnectTimeout, connection.disconnectTimeout);\r\n                    connection.log(message);\r\n                    $(connection).triggerHandler(events.onError, [signalR._.error(message, /* source */ \"TimeoutException\")]);\r\n                    connection.stop(/* async */ false, /* notifyServer */ false);\r\n                };\r\n\r\n                connection.reconnecting(function () {\r\n                    var connection = this;\r\n\r\n                    // Guard against state changing in a previous user defined even handler\r\n                    if (connection.state === signalR.connectionState.reconnecting) {\r\n                        stopReconnectingTimeout = window.setTimeout(function () { onReconnectTimeout(connection); }, connection.disconnectTimeout);\r\n                    }\r\n                });\r\n\r\n                connection.stateChanged(function (data) {\r\n                    if (data.oldState === signalR.connectionState.reconnecting) {\r\n                        // Clear the pending reconnect timeout check\r\n                        window.clearTimeout(stopReconnectingTimeout);\r\n                    }\r\n                });\r\n\r\n                connection._.configuredStopReconnectingTimeout = true;\r\n            }\r\n        };\r\n\r\n    signalR = function (url, qs, logging) {\r\n        /// <summary>Creates a new SignalR connection for the given url</summary>\r\n        /// <param name=\"url\" type=\"String\">The URL of the long polling endpoint</param>\r\n        /// <param name=\"qs\" type=\"Object\">\r\n        ///     [Optional] Custom querystring parameters to add to the connection URL.\r\n        ///     If an object, every non-function member will be added to the querystring.\r\n        ///     If a string, it's added to the QS as specified.\r\n        /// </param>\r\n        /// <param name=\"logging\" type=\"Boolean\">\r\n        ///     [Optional] A flag indicating whether connection logging is enabled to the browser\r\n        ///     console/log. Defaults to false.\r\n        /// </param>\r\n\r\n        return new signalR.fn.init(url, qs, logging);\r\n    };\r\n\r\n    signalR._ = {\r\n        defaultContentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\r\n\r\n        ieVersion: (function () {\r\n            var version,\r\n                matches;\r\n\r\n            if (window.navigator.appName === 'Microsoft Internet Explorer') {\r\n                // Check if the user agent has the pattern \"MSIE (one or more numbers).(one or more numbers)\";\r\n                matches = /MSIE ([0-9]+\\.[0-9]+)/.exec(window.navigator.userAgent);\r\n\r\n                if (matches) {\r\n                    version = window.parseFloat(matches[1]);\r\n                }\r\n            }\r\n\r\n            // undefined value means not IE\r\n            return version;\r\n        })(),\r\n\r\n        error: function (message, source, context) {\r\n            var e = new Error(message);\r\n            e.source = source;\r\n\r\n            if (typeof context !== \"undefined\") {\r\n                e.context = context;\r\n            }\r\n\r\n            return e;\r\n        },\r\n\r\n        transportError: function (message, transport, source, context) {\r\n            var e = this.error(message, source, context);\r\n            e.transport = transport ? transport.name : undefined;\r\n            return e;\r\n        },\r\n\r\n        format: function () {\r\n            /// <summary>Usage: format(\"Hi {0}, you are {1}!\", \"Foo\", 100) </summary>\r\n            var s = arguments[0];\r\n            for (var i = 0; i < arguments.length - 1; i++) {\r\n                s = s.replace(\"{\" + i + \"}\", arguments[i + 1]);\r\n            }\r\n            return s;\r\n        },\r\n\r\n        firefoxMajorVersion: function (userAgent) {\r\n            // Firefox user agents: http://useragentstring.com/pages/Firefox/\r\n            var matches = userAgent.match(/Firefox\\/(\\d+)/);\r\n            if (!matches || !matches.length || matches.length < 2) {\r\n                return 0;\r\n            }\r\n            return parseInt(matches[1], 10 /* radix */);\r\n        },\r\n\r\n        configurePingInterval: function (connection) {\r\n            var config = connection._.config,\r\n                onFail = function (error) {\r\n                    $(connection).triggerHandler(events.onError, [error]);\r\n                };\r\n\r\n            if (config && !connection._.pingIntervalId && config.pingInterval) {\r\n                connection._.pingIntervalId = window.setInterval(function () {\r\n                    signalR.transports._logic.pingServer(connection).fail(onFail);\r\n                }, config.pingInterval);\r\n            }\r\n        }\r\n    };\r\n\r\n    signalR.events = events;\r\n\r\n    signalR.resources = resources;\r\n\r\n    signalR.ajaxDefaults = ajaxDefaults;\r\n\r\n    signalR.changeState = changeState;\r\n\r\n    signalR.isDisconnecting = isDisconnecting;\r\n\r\n    signalR.connectionState = {\r\n        connecting: 0,\r\n        connected: 1,\r\n        reconnecting: 2,\r\n        disconnected: 4\r\n    };\r\n\r\n    signalR.hub = {\r\n        start: function () {\r\n            // This will get replaced with the real hub connection start method when hubs is referenced correctly\r\n            throw new Error(\"SignalR: Error loading hubs. Ensure your hubs reference is correct, e.g. <script src='/signalr/js'></script>.\");\r\n        }\r\n    };\r\n\r\n    // .on() was added in version 1.7.0, .load() was removed in version 3.0.0 so we fallback to .load() if .on() does\r\n    // not exist to not break existing applications\r\n    if (typeof _pageWindow.on === \"function\") {\r\n        _pageWindow.on(\"load\", function () { _pageLoaded = true; });\r\n    }\r\n    else {\r\n        _pageWindow.load(function () { _pageLoaded = true; });\r\n    }\r\n\r\n    function validateTransport(requestedTransport, connection) {\r\n        /// <summary>Validates the requested transport by cross checking it with the pre-defined signalR.transports</summary>\r\n        /// <param name=\"requestedTransport\" type=\"Object\">The designated transports that the user has specified.</param>\r\n        /// <param name=\"connection\" type=\"signalR\">The connection that will be using the requested transports.  Used for logging purposes.</param>\r\n        /// <returns type=\"Object\" />\r\n\r\n        if ($.isArray(requestedTransport)) {\r\n            // Go through transport array and remove an \"invalid\" tranports\r\n            for (var i = requestedTransport.length - 1; i >= 0; i--) {\r\n                var transport = requestedTransport[i];\r\n                if ($.type(transport) !== \"string\" || !signalR.transports[transport]) {\r\n                    connection.log(\"Invalid transport: \" + transport + \", removing it from the transports list.\");\r\n                    requestedTransport.splice(i, 1);\r\n                }\r\n            }\r\n\r\n            // Verify we still have transports left, if we dont then we have invalid transports\r\n            if (requestedTransport.length === 0) {\r\n                connection.log(\"No transports remain within the specified transport array.\");\r\n                requestedTransport = null;\r\n            }\r\n        } else if (!signalR.transports[requestedTransport] && requestedTransport !== \"auto\") {\r\n            connection.log(\"Invalid transport: \" + requestedTransport.toString() + \".\");\r\n            requestedTransport = null;\r\n        } else if (requestedTransport === \"auto\" && signalR._.ieVersion <= 8) {\r\n            // If we're doing an auto transport and we're IE8 then force longPolling, #1764\r\n            return [\"longPolling\"];\r\n\r\n        }\r\n\r\n        return requestedTransport;\r\n    }\r\n\r\n    function getDefaultPort(protocol) {\r\n        if (protocol === \"http:\") {\r\n            return 80;\r\n        } else if (protocol === \"https:\") {\r\n            return 443;\r\n        }\r\n    }\r\n\r\n    function addDefaultPort(protocol, url) {\r\n        // Remove ports  from url.  We have to check if there's a / or end of line\r\n        // following the port in order to avoid removing ports such as 8080.\r\n        if (url.match(/:\\d+$/)) {\r\n            return url;\r\n        } else {\r\n            return url + \":\" + getDefaultPort(protocol);\r\n        }\r\n    }\r\n\r\n    function ConnectingMessageBuffer(connection, drainCallback) {\r\n        var that = this,\r\n            buffer = [];\r\n\r\n        that.tryBuffer = function (message) {\r\n            if (connection.state === $.signalR.connectionState.connecting) {\r\n                buffer.push(message);\r\n\r\n                return true;\r\n            }\r\n\r\n            return false;\r\n        };\r\n\r\n        that.drain = function () {\r\n            // Ensure that the connection is connected when we drain (do not want to drain while a connection is not active)\r\n            if (connection.state === $.signalR.connectionState.connected) {\r\n                while (buffer.length > 0) {\r\n                    drainCallback(buffer.shift());\r\n                }\r\n            }\r\n        };\r\n\r\n        that.clear = function () {\r\n            buffer = [];\r\n        };\r\n    }\r\n\r\n    signalR.fn = signalR.prototype = {\r\n        init: function (url, qs, logging) {\r\n            var $connection = $(this);\r\n\r\n            this.url = url;\r\n            this.qs = qs;\r\n            this.lastError = null;\r\n            this._ = {\r\n                keepAliveData: {},\r\n                connectingMessageBuffer: new ConnectingMessageBuffer(this, function (message) {\r\n                    $connection.triggerHandler(events.onReceived, [message]);\r\n                }),\r\n                lastMessageAt: new Date().getTime(),\r\n                lastActiveAt: new Date().getTime(),\r\n                beatInterval: 5000, // Default value, will only be overridden if keep alive is enabled,\r\n                beatHandle: null,\r\n                totalTransportConnectTimeout: 0, // This will be the sum of the TransportConnectTimeout sent in response to negotiate and connection.transportConnectTimeout\r\n                redirectQs: null\r\n            };\r\n            if (typeof (logging) === \"boolean\") {\r\n                this.logging = logging;\r\n            }\r\n        },\r\n\r\n        _parseResponse: function (response) {\r\n            var that = this;\r\n\r\n            if (!response) {\r\n                return response;\r\n            } else if (typeof response === \"string\") {\r\n                return that.json.parse(response);\r\n            } else {\r\n                return response;\r\n            }\r\n        },\r\n\r\n        _originalJson: window.JSON,\r\n\r\n        json: window.JSON,\r\n\r\n        isCrossDomain: function (url, against) {\r\n            /// <summary>Checks if url is cross domain</summary>\r\n            /// <param name=\"url\" type=\"String\">The base URL</param>\r\n            /// <param name=\"against\" type=\"Object\">\r\n            ///     An optional argument to compare the URL against, if not specified it will be set to window.location.\r\n            ///     If specified it must contain a protocol and a host property.\r\n            /// </param>\r\n            var link;\r\n\r\n            url = $.trim(url);\r\n\r\n            against = against || window.location;\r\n\r\n            if (url.indexOf(\"http\") !== 0) {\r\n                return false;\r\n            }\r\n\r\n            // Create an anchor tag.\r\n            link = window.document.createElement(\"a\");\r\n            link.href = url;\r\n\r\n            // When checking for cross domain we have to special case port 80 because the window.location will remove the\r\n            return link.protocol + addDefaultPort(link.protocol, link.host) !== against.protocol + addDefaultPort(against.protocol, against.host);\r\n        },\r\n\r\n        ajaxDataType: \"text\",\r\n\r\n        contentType: \"application/json; charset=UTF-8\",\r\n\r\n        logging: false,\r\n\r\n        state: signalR.connectionState.disconnected,\r\n\r\n        clientProtocol: \"2.1\",\r\n\r\n        // We want to support older servers since the 2.0 change is to support redirection results, which isn't\r\n        // really breaking in the protocol. So if a user updates their client to 2.0 protocol version there's\r\n        // no reason they can't still connect to a 1.5 server. The 2.1 protocol is sent by the client so the SignalR\r\n        // service knows the client will use they query string returned via the RedirectUrl for subsequent requests.\r\n        // It doesn't matter whether the server reflects back 2.1 or continues using 2.0 as the protocol version.\r\n        supportedProtocols: [\"1.5\", \"2.0\", \"2.1\"],\r\n\r\n        negotiateRedirectSupportedProtocols: [\"2.0\", \"2.1\"],\r\n\r\n        reconnectDelay: 2000,\r\n\r\n        transportConnectTimeout: 0,\r\n\r\n        disconnectTimeout: 30000, // This should be set by the server in response to the negotiate request (30s default)\r\n\r\n        reconnectWindow: 30000, // This should be set by the server in response to the negotiate request\r\n\r\n        keepAliveWarnAt: 2 / 3, // Warn user of slow connection if we breach the X% mark of the keep alive timeout\r\n\r\n        start: function (options, callback) {\r\n            /// <summary>Starts the connection</summary>\r\n            /// <param name=\"options\" type=\"Object\">Options map</param>\r\n            /// <param name=\"callback\" type=\"Function\">A callback function to execute when the connection has started</param>\r\n            var connection = this,\r\n                config = {\r\n                    pingInterval: 300000,\r\n                    waitForPageLoad: true,\r\n                    transport: \"auto\",\r\n                    jsonp: false\r\n                },\r\n                initialize,\r\n                deferred = connection._deferral || $.Deferred(), // Check to see if there is a pre-existing deferral that's being built on, if so we want to keep using it\r\n                parser = window.document.createElement(\"a\"),\r\n                setConnectionUrl = function (connection, url) {\r\n                    if (connection.url === url && connection.baseUrl) {\r\n                        // when the url related properties are already set\r\n                        return;\r\n                    }\r\n\r\n                    connection.url = url;\r\n\r\n                    // Resolve the full url\r\n                    parser.href = connection.url;\r\n                    if (!parser.protocol || parser.protocol === \":\") {\r\n                        connection.protocol = window.document.location.protocol;\r\n                        connection.host = parser.host || window.document.location.host;\r\n                    } else {\r\n                        connection.protocol = parser.protocol;\r\n                        connection.host = parser.host;\r\n                    }\r\n\r\n                    connection.baseUrl = connection.protocol + \"//\" + connection.host;\r\n\r\n                    // Set the websocket protocol\r\n                    connection.wsProtocol = connection.protocol === \"https:\" ? \"wss://\" : \"ws://\";\r\n\r\n                    // If the url is protocol relative, prepend the current windows protocol to the url.\r\n                    if (connection.url.indexOf(\"//\") === 0) {\r\n                        connection.url = window.location.protocol + connection.url;\r\n                        connection.log(\"Protocol relative URL detected, normalizing it to '\" + connection.url + \"'.\");\r\n                    }\r\n\r\n                    if (connection.isCrossDomain(connection.url)) {\r\n                        connection.log(\"Auto detected cross domain url.\");\r\n\r\n                        if (config.transport === \"auto\") {\r\n                            // Cross-domain does not support foreverFrame\r\n                            config.transport = [\"webSockets\", \"serverSentEvents\", \"longPolling\"];\r\n                        }\r\n\r\n                        if (typeof connection.withCredentials === \"undefined\") {\r\n                            connection.withCredentials = true;\r\n                        }\r\n\r\n                        // Determine if jsonp is the only choice for negotiation, ajaxSend and ajaxAbort.\r\n                        // i.e. if the browser doesn't supports CORS\r\n                        // If it is, ignore any preference to the contrary, and switch to jsonp.\r\n                        if (!$.support.cors) {\r\n                            connection.ajaxDataType = \"jsonp\";\r\n                            connection.log(\"Using jsonp because this browser doesn't support CORS.\");\r\n                        }\r\n\r\n                        connection.contentType = signalR._.defaultContentType;\r\n                    }\r\n                };\r\n\r\n            connection.lastError = null;\r\n\r\n            // Persist the deferral so that if start is called multiple times the same deferral is used.\r\n            connection._deferral = deferred;\r\n\r\n            if (!connection.json) {\r\n                // no JSON!\r\n                throw new Error(\"SignalR: No JSON parser found. Please ensure json2.js is referenced before the SignalR.js file if you need to support clients without native JSON parsing support, e.g. IE<8.\");\r\n            }\r\n\r\n            if ($.type(options) === \"function\") {\r\n                // Support calling with single callback parameter\r\n                callback = options;\r\n            } else if ($.type(options) === \"object\") {\r\n                $.extend(config, options);\r\n                if ($.type(config.callback) === \"function\") {\r\n                    callback = config.callback;\r\n                }\r\n            }\r\n\r\n            config.transport = validateTransport(config.transport, connection);\r\n\r\n            // If the transport is invalid throw an error and abort start\r\n            if (!config.transport) {\r\n                throw new Error(\"SignalR: Invalid transport(s) specified, aborting start.\");\r\n            }\r\n\r\n            connection._.config = config;\r\n\r\n            // Check to see if start is being called prior to page load\r\n            // If waitForPageLoad is true we then want to re-direct function call to the window load event\r\n            if (!_pageLoaded && config.waitForPageLoad === true) {\r\n                connection._.deferredStartHandler = function () {\r\n                    connection.start(options, callback);\r\n                };\r\n                _pageWindow.bind(\"load\", connection._.deferredStartHandler);\r\n\r\n                return deferred.promise();\r\n            }\r\n\r\n            // If we're already connecting just return the same deferral as the original connection start\r\n            if (connection.state === signalR.connectionState.connecting) {\r\n                return deferred.promise();\r\n            } else if (changeState(connection,\r\n                signalR.connectionState.disconnected,\r\n                signalR.connectionState.connecting) === false) {\r\n                // We're not connecting so try and transition into connecting.\r\n                // If we fail to transition then we're either in connected or reconnecting.\r\n\r\n                deferred.resolve(connection);\r\n                return deferred.promise();\r\n            }\r\n\r\n            configureStopReconnectingTimeout(connection);\r\n\r\n            // If jsonp with no/auto transport is specified, then set the transport to long polling\r\n            // since that is the only transport for which jsonp really makes sense.\r\n            // Some developers might actually choose to specify jsonp for same origin requests\r\n            // as demonstrated by Issue #623.\r\n            if (config.transport === \"auto\" && config.jsonp === true) {\r\n                config.transport = \"longPolling\";\r\n            }\r\n\r\n            connection.withCredentials = config.withCredentials;\r\n\r\n            // Save the original url so that we can reset it when we stop and restart the connection\r\n            connection._originalUrl = connection.url;\r\n\r\n            connection.ajaxDataType = config.jsonp ? \"jsonp\" : \"text\";\r\n\r\n            setConnectionUrl(connection, connection.url);\r\n\r\n            $(connection).bind(events.onStart, function (e, data) {\r\n                if ($.type(callback) === \"function\") {\r\n                    callback.call(connection);\r\n                }\r\n                deferred.resolve(connection);\r\n            });\r\n\r\n            connection._.initHandler = signalR.transports._logic.initHandler(connection);\r\n\r\n            initialize = function (transports, index) {\r\n                var noTransportError = signalR._.error(resources.noTransportOnInit);\r\n\r\n                index = index || 0;\r\n                if (index >= transports.length) {\r\n                    if (index === 0) {\r\n                        connection.log(\"No transports supported by the server were selected.\");\r\n                    } else if (index === 1) {\r\n                        connection.log(\"No fallback transports were selected.\");\r\n                    } else {\r\n                        connection.log(\"Fallback transports exhausted.\");\r\n                    }\r\n\r\n                    // No transport initialized successfully\r\n                    $(connection).triggerHandler(events.onError, [noTransportError]);\r\n                    deferred.reject(noTransportError);\r\n                    // Stop the connection if it has connected and move it into the disconnected state\r\n                    connection.stop();\r\n                    return;\r\n                }\r\n\r\n                // The connection was aborted\r\n                if (connection.state === signalR.connectionState.disconnected) {\r\n                    return;\r\n                }\r\n\r\n                var transportName = transports[index],\r\n                    transport = signalR.transports[transportName],\r\n                    onFallback = function () {\r\n                        initialize(transports, index + 1);\r\n                    };\r\n\r\n                connection.transport = transport;\r\n\r\n                try {\r\n                    connection._.initHandler.start(transport, function () { // success\r\n                        // Firefox 11+ doesn't allow sync XHR withCredentials: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#withCredentials\r\n                        var isFirefox11OrGreater = signalR._.firefoxMajorVersion(window.navigator.userAgent) >= 11,\r\n                            asyncAbort = true;\r\n\r\n                        connection.log(\"The start request succeeded. Transitioning to the connected state.\");\r\n\r\n                        if (supportsKeepAlive(connection)) {\r\n                            signalR.transports._logic.monitorKeepAlive(connection);\r\n                        }\r\n\r\n                        if (connection._.keepAliveData.activated) {\r\n                            signalR.transports._logic.startHeartbeat(connection);\r\n                        }\r\n\r\n                        // Used to ensure low activity clients maintain their authentication.\r\n                        // Must be configured once a transport has been decided to perform valid ping requests.\r\n                        signalR._.configurePingInterval(connection);\r\n\r\n                        if (!changeState(connection,\r\n                            signalR.connectionState.connecting,\r\n                            signalR.connectionState.connected)) {\r\n                            connection.log(\"WARNING! The connection was not in the connecting state.\");\r\n                        }\r\n\r\n                        // Drain any incoming buffered messages (messages that came in prior to connect)\r\n                        connection._.connectingMessageBuffer.drain();\r\n\r\n                        $(connection).triggerHandler(events.onStart);\r\n\r\n                        // wire the stop handler for when the user leaves the page\r\n                        _pageWindow.bind(\"unload\", function () {\r\n                            connection.log(\"Window unloading, stopping the connection.\");\r\n\r\n                            connection.stop(asyncAbort);\r\n                        });\r\n\r\n                        if (isFirefox11OrGreater) {\r\n                            // Firefox does not fire cross-domain XHRs in the normal unload handler on tab close.\r\n                            // #2400\r\n                            _pageWindow.bind(\"beforeunload\", function () {\r\n                                // If connection.stop() runs runs in beforeunload and fails, it will also fail\r\n                                // in unload unless connection.stop() runs after a timeout.\r\n                                window.setTimeout(function () {\r\n                                    connection.stop(asyncAbort);\r\n                                }, 0);\r\n                            });\r\n                        }\r\n                    }, onFallback);\r\n                }\r\n                catch (error) {\r\n                    connection.log(transport.name + \" transport threw '\" + error.message + \"' when attempting to start.\");\r\n                    onFallback();\r\n                }\r\n            };\r\n\r\n            var url = connection.url + \"/negotiate\",\r\n                onFailed = function (error, connection) {\r\n                    var err = signalR._.error(resources.errorOnNegotiate, error, connection._.negotiateRequest);\r\n\r\n                    $(connection).triggerHandler(events.onError, err);\r\n                    deferred.reject(err);\r\n                    // Stop the connection if negotiate failed\r\n                    connection.stop();\r\n                };\r\n\r\n            $(connection).triggerHandler(events.onStarting);\r\n\r\n            url = signalR.transports._logic.prepareQueryString(connection, url);\r\n\r\n            connection.log(\"Negotiating with '\" + url + \"'.\");\r\n\r\n            // Save the ajax negotiate request object so we can abort it if stop is called while the request is in flight.\r\n            connection._.negotiateRequest = function () {\r\n                var res,\r\n                    redirects = 0,\r\n                    MAX_REDIRECTS = 100,\r\n                    keepAliveData,\r\n                    protocolError,\r\n                    transports = [],\r\n                    supportedTransports = [],\r\n                    negotiate = function (connection, onSuccess) {\r\n                        var url = signalR.transports._logic.prepareQueryString(connection, connection.url + \"/negotiate\");\r\n                        connection.log(\"Negotiating with '\" + url + \"'.\");\r\n                        var options = {\r\n                            url: url,\r\n                            error: function (error, statusText) {\r\n                                // We don't want to cause any errors if we're aborting our own negotiate request.\r\n                                if (statusText !== _negotiateAbortText) {\r\n                                    onFailed(error, connection);\r\n                                } else {\r\n                                    // This rejection will noop if the deferred has already been resolved or rejected.\r\n                                    deferred.reject(signalR._.error(resources.stoppedWhileNegotiating, null /* error */, connection._.negotiateRequest));\r\n                                }\r\n                            },\r\n                            success: onSuccess\r\n                        };\r\n\r\n                        if (connection.accessToken) {\r\n                            options.headers = { \"Authorization\": \"Bearer \" + connection.accessToken };\r\n                        }\r\n\r\n                        return signalR.transports._logic.ajax(connection, options);\r\n                    },\r\n                    callback = function (result) {\r\n                        try {\r\n                            res = connection._parseResponse(result);\r\n                        } catch (error) {\r\n                            onFailed(signalR._.error(resources.errorParsingNegotiateResponse, error), connection);\r\n                            return;\r\n                        }\r\n\r\n                        // Check if the server is an ASP.NET Core app\r\n                        if (res.availableTransports) {\r\n                            protocolError = signalR._.error(resources.aspnetCoreSignalrServer);\r\n                            $(connection).triggerHandler(events.onError, [protocolError]);\r\n                            deferred.reject(protocolError);\r\n                            return;\r\n                        }\r\n\r\n                        if (!res.ProtocolVersion || (connection.supportedProtocols.indexOf(res.ProtocolVersion) === -1)) {\r\n                            protocolError = signalR._.error(signalR._.format(resources.protocolIncompatible, connection.clientProtocol, res.ProtocolVersion));\r\n                            $(connection).triggerHandler(events.onError, [protocolError]);\r\n                            deferred.reject(protocolError);\r\n\r\n                            return;\r\n                        }\r\n\r\n                        // Check for a redirect response (which must have a ProtocolVersion of 2.0 or greater)\r\n                        // ProtocolVersion 2.1 is the highest supported by the client, so we can just check for 2.0 or 2.1 for now\r\n                        // instead of trying to do proper version string comparison in JavaScript.\r\n                        if (connection.negotiateRedirectSupportedProtocols.indexOf(res.ProtocolVersion) !== -1) {\r\n                            if (res.Error) {\r\n                                protocolError = signalR._.error(signalR._.format(resources.errorFromServer, res.Error));\r\n                                $(connection).triggerHandler(events.onError, [protocolError]);\r\n                                deferred.reject(protocolError);\r\n                                return;\r\n                            }\r\n                            else if (res.RedirectUrl) {\r\n                                if (redirects === MAX_REDIRECTS) {\r\n                                    onFailed(signalR._.error(resources.errorRedirectionExceedsLimit), connection);\r\n                                    return;\r\n                                }\r\n\r\n                                if (config.transport === \"auto\") {\r\n                                    // Redirected connections do not support foreverFrame\r\n                                    config.transport = [\"webSockets\", \"serverSentEvents\", \"longPolling\"];\r\n                                }\r\n\r\n                                connection.log(\"Received redirect to: \" + res.RedirectUrl);\r\n                                connection.accessToken = res.AccessToken;\r\n\r\n                                var splitUrlAndQs = res.RedirectUrl.split(\"?\", 2);\r\n                                setConnectionUrl(connection, splitUrlAndQs[0]);\r\n\r\n                                // Update redirectQs with query string from only the most recent RedirectUrl.\r\n                                connection._.redirectQs = splitUrlAndQs.length === 2 ? splitUrlAndQs[1] : null;\r\n\r\n                                if (connection.ajaxDataType === \"jsonp\" && connection.accessToken) {\r\n                                    onFailed(signalR._.error(resources.jsonpNotSupportedWithAccessToken), connection);\r\n                                    return;\r\n                                }\r\n\r\n                                redirects++;\r\n                                negotiate(connection, callback);\r\n                                return;\r\n                            }\r\n                        }\r\n\r\n                        keepAliveData = connection._.keepAliveData;\r\n                        connection.appRelativeUrl = res.Url;\r\n                        connection.id = res.ConnectionId;\r\n                        connection.token = res.ConnectionToken;\r\n                        connection.webSocketServerUrl = res.WebSocketServerUrl;\r\n\r\n                        // The long poll timeout is the ConnectionTimeout plus 10 seconds\r\n                        connection._.pollTimeout = res.ConnectionTimeout * 1000 + 10000; // in ms\r\n\r\n                        // Once the server has labeled the PersistentConnection as Disconnected, we should stop attempting to reconnect\r\n                        // after res.DisconnectTimeout seconds.\r\n                        connection.disconnectTimeout = res.DisconnectTimeout * 1000; // in ms\r\n\r\n                        // Add the TransportConnectTimeout from the response to the transportConnectTimeout from the client to calculate the total timeout\r\n                        connection._.totalTransportConnectTimeout = connection.transportConnectTimeout + res.TransportConnectTimeout * 1000;\r\n\r\n                        // If we have a keep alive\r\n                        if (res.KeepAliveTimeout) {\r\n                            // Register the keep alive data as activated\r\n                            keepAliveData.activated = true;\r\n\r\n                            // Timeout to designate when to force the connection into reconnecting converted to milliseconds\r\n                            keepAliveData.timeout = res.KeepAliveTimeout * 1000;\r\n\r\n                            // Timeout to designate when to warn the developer that the connection may be dead or is not responding.\r\n                            keepAliveData.timeoutWarning = keepAliveData.timeout * connection.keepAliveWarnAt;\r\n\r\n                            // Instantiate the frequency in which we check the keep alive.  It must be short in order to not miss/pick up any changes\r\n                            connection._.beatInterval = (keepAliveData.timeout - keepAliveData.timeoutWarning) / 3;\r\n                        } else {\r\n                            keepAliveData.activated = false;\r\n                        }\r\n\r\n                        connection.reconnectWindow = connection.disconnectTimeout + (keepAliveData.timeout || 0);\r\n\r\n                        $.each(signalR.transports, function (key) {\r\n                            if ((key.indexOf(\"_\") === 0) || (key === \"webSockets\" && !res.TryWebSockets)) {\r\n                                return true;\r\n                            }\r\n                            supportedTransports.push(key);\r\n                        });\r\n\r\n                        if ($.isArray(config.transport)) {\r\n                            $.each(config.transport, function (_, transport) {\r\n                                if ($.inArray(transport, supportedTransports) >= 0) {\r\n                                    transports.push(transport);\r\n                                }\r\n                            });\r\n                        } else if (config.transport === \"auto\") {\r\n                            transports = supportedTransports;\r\n                        } else if ($.inArray(config.transport, supportedTransports) >= 0) {\r\n                            transports.push(config.transport);\r\n                        }\r\n\r\n                        initialize(transports);\r\n                    };\r\n\r\n                return negotiate(connection, callback);\r\n            }();\r\n\r\n            return deferred.promise();\r\n        },\r\n\r\n        starting: function (callback) {\r\n            /// <summary>Adds a callback that will be invoked before anything is sent over the connection</summary>\r\n            /// <param name=\"callback\" type=\"Function\">A callback function to execute before the connection is fully instantiated.</param>\r\n            /// <returns type=\"signalR\" />\r\n            var connection = this;\r\n            $(connection).bind(events.onStarting, function (e, data) {\r\n                callback.call(connection);\r\n            });\r\n            return connection;\r\n        },\r\n\r\n        send: function (data) {\r\n            /// <summary>Sends data over the connection</summary>\r\n            /// <param name=\"data\" type=\"String\">The data to send over the connection</param>\r\n            /// <returns type=\"signalR\" />\r\n            var connection = this;\r\n\r\n            if (connection.state === signalR.connectionState.disconnected) {\r\n                // Connection hasn't been started yet\r\n                throw new Error(\"SignalR: Connection must be started before data can be sent. Call .start() before .send()\");\r\n            }\r\n\r\n            if (connection.state === signalR.connectionState.connecting) {\r\n                // Connection hasn't been started yet\r\n                throw new Error(\"SignalR: Connection has not been fully initialized. Use .start().done() or .start().fail() to run logic after the connection has started.\");\r\n            }\r\n\r\n            connection.transport.send(connection, data);\r\n            // REVIEW: Should we return deferred here?\r\n            return connection;\r\n        },\r\n\r\n        received: function (callback) {\r\n            /// <summary>Adds a callback that will be invoked after anything is received over the connection</summary>\r\n            /// <param name=\"callback\" type=\"Function\">A callback function to execute when any data is received on the connection</param>\r\n            /// <returns type=\"signalR\" />\r\n            var connection = this;\r\n            $(connection).bind(events.onReceived, function (e, data) {\r\n                callback.call(connection, data);\r\n            });\r\n            return connection;\r\n        },\r\n\r\n        stateChanged: function (callback) {\r\n            /// <summary>Adds a callback that will be invoked when the connection state changes</summary>\r\n            /// <param name=\"callback\" type=\"Function\">A callback function to execute when the connection state changes</param>\r\n            /// <returns type=\"signalR\" />\r\n            var connection = this;\r\n            $(connection).bind(events.onStateChanged, function (e, data) {\r\n                callback.call(connection, data);\r\n            });\r\n            return connection;\r\n        },\r\n\r\n        error: function (callback) {\r\n            /// <summary>Adds a callback that will be invoked after an error occurs with the connection</summary>\r\n            /// <param name=\"callback\" type=\"Function\">A callback function to execute when an error occurs on the connection</param>\r\n            /// <returns type=\"signalR\" />\r\n            var connection = this;\r\n            $(connection).bind(events.onError, function (e, errorData, sendData) {\r\n                connection.lastError = errorData;\r\n                // In practice 'errorData' is the SignalR built error object.\r\n                // In practice 'sendData' is undefined for all error events except those triggered by\r\n                // 'ajaxSend' and 'webSockets.send'.'sendData' is the original send payload.\r\n                callback.call(connection, errorData, sendData);\r\n            });\r\n            return connection;\r\n        },\r\n\r\n        disconnected: function (callback) {\r\n            /// <summary>Adds a callback that will be invoked when the client disconnects</summary>\r\n            /// <param name=\"callback\" type=\"Function\">A callback function to execute when the connection is broken</param>\r\n            /// <returns type=\"signalR\" />\r\n            var connection = this;\r\n            $(connection).bind(events.onDisconnect, function (e, data) {\r\n                callback.call(connection);\r\n            });\r\n            return connection;\r\n        },\r\n\r\n        connectionSlow: function (callback) {\r\n            /// <summary>Adds a callback that will be invoked when the client detects a slow connection</summary>\r\n            /// <param name=\"callback\" type=\"Function\">A callback function to execute when the connection is slow</param>\r\n            /// <returns type=\"signalR\" />\r\n            var connection = this;\r\n            $(connection).bind(events.onConnectionSlow, function (e, data) {\r\n                callback.call(connection);\r\n            });\r\n\r\n            return connection;\r\n        },\r\n\r\n        reconnecting: function (callback) {\r\n            /// <summary>Adds a callback that will be invoked when the underlying transport begins reconnecting</summary>\r\n            /// <param name=\"callback\" type=\"Function\">A callback function to execute when the connection enters a reconnecting state</param>\r\n            /// <returns type=\"signalR\" />\r\n            var connection = this;\r\n            $(connection).bind(events.onReconnecting, function (e, data) {\r\n                callback.call(connection);\r\n            });\r\n            return connection;\r\n        },\r\n\r\n        reconnected: function (callback) {\r\n            /// <summary>Adds a callback that will be invoked when the underlying transport reconnects</summary>\r\n            /// <param name=\"callback\" type=\"Function\">A callback function to execute when the connection is restored</param>\r\n            /// <returns type=\"signalR\" />\r\n            var connection = this;\r\n            $(connection).bind(events.onReconnect, function (e, data) {\r\n                callback.call(connection);\r\n            });\r\n            return connection;\r\n        },\r\n\r\n        stop: function (async, notifyServer) {\r\n            /// <summary>Stops listening</summary>\r\n            /// <param name=\"async\" type=\"Boolean\">Whether or not to asynchronously abort the connection</param>\r\n            /// <param name=\"notifyServer\" type=\"Boolean\">Whether we want to notify the server that we are aborting the connection</param>\r\n            /// <returns type=\"signalR\" />\r\n            var connection = this,\r\n                // Save deferral because this is always cleaned up\r\n                deferral = connection._deferral;\r\n\r\n            // Verify that we've bound a load event.\r\n            if (connection._.deferredStartHandler) {\r\n                // Unbind the event.\r\n                _pageWindow.unbind(\"load\", connection._.deferredStartHandler);\r\n            }\r\n\r\n            // Always clean up private non-timeout based state.\r\n            delete connection._.config;\r\n            delete connection._.deferredStartHandler;\r\n\r\n            // This needs to be checked despite the connection state because a connection start can be deferred until page load.\r\n            // If we've deferred the start due to a page load we need to unbind the \"onLoad\" -> start event.\r\n            if (!_pageLoaded && (!connection._.config || connection._.config.waitForPageLoad === true)) {\r\n                connection.log(\"Stopping connection prior to negotiate.\");\r\n\r\n                // If we have a deferral we should reject it\r\n                if (deferral) {\r\n                    deferral.reject(signalR._.error(resources.stoppedWhileLoading));\r\n                }\r\n\r\n                // Short-circuit because the start has not been fully started.\r\n                return;\r\n            }\r\n\r\n            if (connection.state === signalR.connectionState.disconnected) {\r\n                return;\r\n            }\r\n\r\n            connection.log(\"Stopping connection.\");\r\n\r\n            // Clear this no matter what\r\n            window.clearTimeout(connection._.beatHandle);\r\n            window.clearInterval(connection._.pingIntervalId);\r\n\r\n            if (connection.transport) {\r\n                connection.transport.stop(connection);\r\n\r\n                if (notifyServer !== false) {\r\n                    connection.transport.abort(connection, async);\r\n                }\r\n\r\n                if (supportsKeepAlive(connection)) {\r\n                    signalR.transports._logic.stopMonitoringKeepAlive(connection);\r\n                }\r\n\r\n                connection.transport = null;\r\n            }\r\n\r\n            if (connection._.negotiateRequest) {\r\n                // If the negotiation request has already completed this will noop.\r\n                connection._.negotiateRequest.abort(_negotiateAbortText);\r\n                delete connection._.negotiateRequest;\r\n            }\r\n\r\n            // Ensure that initHandler.stop() is called before connection._deferral is deleted\r\n            if (connection._.initHandler) {\r\n                connection._.initHandler.stop();\r\n            }\r\n\r\n            delete connection._deferral;\r\n            delete connection.messageId;\r\n            delete connection.groupsToken;\r\n            delete connection.id;\r\n            delete connection._.pingIntervalId;\r\n            delete connection._.lastMessageAt;\r\n            delete connection._.lastActiveAt;\r\n\r\n            // Clear out our message buffer\r\n            connection._.connectingMessageBuffer.clear();\r\n\r\n            // Clean up this event\r\n            $(connection).unbind(events.onStart);\r\n\r\n            // Reset the URL and clear the access token\r\n            delete connection.accessToken;\r\n            delete connection.protocol;\r\n            delete connection.host;\r\n            delete connection.baseUrl;\r\n            delete connection.wsProtocol;\r\n            delete connection.contentType;\r\n            connection.url = connection._originalUrl;\r\n            connection._.redirectQs = null;\r\n\r\n            // Trigger the disconnect event\r\n            changeState(connection, connection.state, signalR.connectionState.disconnected);\r\n            $(connection).triggerHandler(events.onDisconnect);\r\n\r\n            return connection;\r\n        },\r\n\r\n        log: function (msg) {\r\n            log(msg, this.logging);\r\n        }\r\n    };\r\n\r\n    signalR.fn.init.prototype = signalR.fn;\r\n\r\n    signalR.noConflict = function () {\r\n        /// <summary>Reinstates the original value of $.connection and returns the signalR object for manual assignment</summary>\r\n        /// <returns type=\"signalR\" />\r\n        if ($.connection === signalR) {\r\n            $.connection = _connection;\r\n        }\r\n        return signalR;\r\n    };\r\n\r\n    if ($.connection) {\r\n        _connection = $.connection;\r\n    }\r\n\r\n    $.connection = $.signalR = signalR;\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.transports.common.js */\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n/*global window:false */\r\n/// <reference path=\"jquery.signalR.core.js\" />\r\n\r\n(function ($, window, undefined) {\r\n\r\n    var signalR = $.signalR,\r\n        events = $.signalR.events,\r\n        changeState = $.signalR.changeState,\r\n        startAbortText = \"__Start Aborted__\",\r\n        transportLogic;\r\n\r\n    signalR.transports = {};\r\n\r\n    function beat(connection) {\r\n        if (connection._.keepAliveData.monitoring) {\r\n            checkIfAlive(connection);\r\n        }\r\n\r\n        // Ensure that we successfully marked active before continuing the heartbeat.\r\n        if (transportLogic.markActive(connection)) {\r\n            connection._.beatHandle = window.setTimeout(function () {\r\n                beat(connection);\r\n            }, connection._.beatInterval);\r\n        }\r\n    }\r\n\r\n    function checkIfAlive(connection) {\r\n        var keepAliveData = connection._.keepAliveData,\r\n            timeElapsed;\r\n\r\n        // Only check if we're connected\r\n        if (connection.state === signalR.connectionState.connected) {\r\n            timeElapsed = new Date().getTime() - connection._.lastMessageAt;\r\n\r\n            // Check if the keep alive has completely timed out\r\n            if (timeElapsed >= keepAliveData.timeout) {\r\n                connection.log(\"Keep alive timed out.  Notifying transport that connection has been lost.\");\r\n\r\n                // Notify transport that the connection has been lost\r\n                connection.transport.lostConnection(connection);\r\n            } else if (timeElapsed >= keepAliveData.timeoutWarning) {\r\n                // This is to assure that the user only gets a single warning\r\n                if (!keepAliveData.userNotified) {\r\n                    connection.log(\"Keep alive has been missed, connection may be dead/slow.\");\r\n                    $(connection).triggerHandler(events.onConnectionSlow);\r\n                    keepAliveData.userNotified = true;\r\n                }\r\n            } else {\r\n                keepAliveData.userNotified = false;\r\n            }\r\n        }\r\n    }\r\n\r\n    function getAjaxUrl(connection, path) {\r\n        var url = connection.url + path;\r\n\r\n        if (connection.transport) {\r\n            url += \"?transport=\" + connection.transport.name;\r\n        }\r\n\r\n        return transportLogic.prepareQueryString(connection, url);\r\n    }\r\n\r\n    function InitHandler(connection) {\r\n        this.connection = connection;\r\n\r\n        this.startRequested = false;\r\n        this.startCompleted = false;\r\n        this.connectionStopped = false;\r\n    }\r\n\r\n    InitHandler.prototype = {\r\n        start: function (transport, onSuccess, onFallback) {\r\n            var that = this,\r\n                connection = that.connection,\r\n                failCalled = false;\r\n\r\n            if (that.startRequested || that.connectionStopped) {\r\n                connection.log(\"WARNING! \" + transport.name + \" transport cannot be started. Initialization ongoing or completed.\");\r\n                return;\r\n            }\r\n\r\n            connection.log(transport.name + \" transport starting.\");\r\n\r\n            transport.start(connection, function () {\r\n                if (!failCalled) {\r\n                    that.initReceived(transport, onSuccess);\r\n                }\r\n            }, function (error) {\r\n                // Don't allow the same transport to cause onFallback to be called twice\r\n                if (!failCalled) {\r\n                    failCalled = true;\r\n                    that.transportFailed(transport, error, onFallback);\r\n                }\r\n\r\n                // Returns true if the transport should stop;\r\n                // false if it should attempt to reconnect\r\n                return !that.startCompleted || that.connectionStopped;\r\n            });\r\n\r\n            that.transportTimeoutHandle = window.setTimeout(function () {\r\n                if (!failCalled) {\r\n                    failCalled = true;\r\n                    connection.log(transport.name + \" transport timed out when trying to connect.\");\r\n                    that.transportFailed(transport, undefined, onFallback);\r\n                }\r\n            }, connection._.totalTransportConnectTimeout);\r\n        },\r\n\r\n        stop: function () {\r\n            this.connectionStopped = true;\r\n            window.clearTimeout(this.transportTimeoutHandle);\r\n            signalR.transports._logic.tryAbortStartRequest(this.connection);\r\n        },\r\n\r\n        initReceived: function (transport, onSuccess) {\r\n            var that = this,\r\n                connection = that.connection;\r\n\r\n            if (that.startRequested) {\r\n                connection.log(\"WARNING! The client received multiple init messages.\");\r\n                return;\r\n            }\r\n\r\n            if (that.connectionStopped) {\r\n                return;\r\n            }\r\n\r\n            that.startRequested = true;\r\n            window.clearTimeout(that.transportTimeoutHandle);\r\n\r\n            connection.log(transport.name + \" transport connected. Initiating start request.\");\r\n            signalR.transports._logic.ajaxStart(connection, function () {\r\n                that.startCompleted = true;\r\n                onSuccess();\r\n            });\r\n        },\r\n\r\n        transportFailed: function (transport, error, onFallback) {\r\n            var connection = this.connection,\r\n                deferred = connection._deferral,\r\n                wrappedError;\r\n\r\n            if (this.connectionStopped) {\r\n                return;\r\n            }\r\n\r\n            window.clearTimeout(this.transportTimeoutHandle);\r\n\r\n            if (!this.startRequested) {\r\n                transport.stop(connection);\r\n\r\n                connection.log(transport.name + \" transport failed to connect. Attempting to fall back.\");\r\n                onFallback();\r\n            } else if (!this.startCompleted) {\r\n                // Do not attempt to fall back if a start request is ongoing during a transport failure.\r\n                // Instead, trigger an error and stop the connection.\r\n                wrappedError = signalR._.error(signalR.resources.errorDuringStartRequest, error);\r\n\r\n                connection.log(transport.name + \" transport failed during the start request. Stopping the connection.\");\r\n                $(connection).triggerHandler(events.onError, [wrappedError]);\r\n                if (deferred) {\r\n                    deferred.reject(wrappedError);\r\n                }\r\n\r\n                connection.stop();\r\n            } else {\r\n                // The start request has completed, but the connection has not stopped.\r\n                // No need to do anything here. The transport should attempt its normal reconnect logic.\r\n            }\r\n        }\r\n    };\r\n\r\n    transportLogic = signalR.transports._logic = {\r\n        ajax: function (connection, options) {\r\n            return $.ajax(\r\n                $.extend(/*deep copy*/ true, {}, $.signalR.ajaxDefaults, {\r\n                    type: \"GET\",\r\n                    data: {},\r\n                    xhrFields: { withCredentials: connection.withCredentials },\r\n                    contentType: connection.contentType,\r\n                    dataType: connection.ajaxDataType\r\n                }, options));\r\n        },\r\n\r\n        pingServer: function (connection) {\r\n            /// <summary>Pings the server</summary>\r\n            /// <param name=\"connection\" type=\"signalr\">Connection associated with the server ping</param>\r\n            /// <returns type=\"signalR\" />\r\n            var url,\r\n                xhr,\r\n                deferral = $.Deferred();\r\n\r\n            if (connection.transport) {\r\n                url = connection.url + \"/ping\";\r\n\r\n                url = transportLogic.addQs(url, connection.qs);\r\n\r\n                xhr = transportLogic.ajax(connection, {\r\n                    url: url,\r\n                    headers: connection.accessToken ? { \"Authorization\": \"Bearer \" + connection.accessToken } : {},\r\n                    success: function (result) {\r\n                        var data;\r\n\r\n                        try {\r\n                            data = connection._parseResponse(result);\r\n                        }\r\n                        catch (error) {\r\n                            deferral.reject(\r\n                                signalR._.transportError(\r\n                                    signalR.resources.pingServerFailedParse,\r\n                                    connection.transport,\r\n                                    error,\r\n                                    xhr\r\n                                )\r\n                            );\r\n                            connection.stop();\r\n                            return;\r\n                        }\r\n\r\n                        if (data.Response === \"pong\") {\r\n                            deferral.resolve();\r\n                        }\r\n                        else {\r\n                            deferral.reject(\r\n                                signalR._.transportError(\r\n                                    signalR._.format(signalR.resources.pingServerFailedInvalidResponse, result),\r\n                                    connection.transport,\r\n                                    null /* error */,\r\n                                    xhr\r\n                                )\r\n                            );\r\n                        }\r\n                    },\r\n                    error: function (error) {\r\n                        if (error.status === 401 || error.status === 403) {\r\n                            deferral.reject(\r\n                                signalR._.transportError(\r\n                                    signalR._.format(signalR.resources.pingServerFailedStatusCode, error.status),\r\n                                    connection.transport,\r\n                                    error,\r\n                                    xhr\r\n                                )\r\n                            );\r\n                            connection.stop();\r\n                        }\r\n                        else {\r\n                            deferral.reject(\r\n                                signalR._.transportError(\r\n                                    signalR.resources.pingServerFailed,\r\n                                    connection.transport,\r\n                                    error,\r\n                                    xhr\r\n                                )\r\n                            );\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n            else {\r\n                deferral.reject(\r\n                    signalR._.transportError(\r\n                        signalR.resources.noConnectionTransport,\r\n                        connection.transport\r\n                    )\r\n                );\r\n            }\r\n\r\n            return deferral.promise();\r\n        },\r\n\r\n        prepareQueryString: function (connection, url) {\r\n            var preparedUrl;\r\n\r\n            // Use addQs to start since it handles the ?/& prefix for us\r\n            preparedUrl = transportLogic.addQs(url, \"clientProtocol=\" + connection.clientProtocol);\r\n\r\n            if (typeof (connection._.redirectQs) === \"string\") {\r\n                // Add the redirect-specified query string params if any\r\n                preparedUrl = transportLogic.addQs(preparedUrl, connection._.redirectQs);\r\n            } else {\r\n                // Otherwise, add the user-specified query string params if any\r\n                preparedUrl = transportLogic.addQs(preparedUrl, connection.qs);\r\n            }\r\n\r\n            if (connection.token) {\r\n                preparedUrl += \"&connectionToken=\" + window.encodeURIComponent(connection.token);\r\n            }\r\n\r\n            if (connection.data) {\r\n                preparedUrl += \"&connectionData=\" + window.encodeURIComponent(connection.data);\r\n            }\r\n\r\n            return preparedUrl;\r\n        },\r\n\r\n        addQs: function (url, qs) {\r\n            var appender = url.indexOf(\"?\") !== -1 ? \"&\" : \"?\",\r\n                firstChar;\r\n\r\n            if (!qs) {\r\n                return url;\r\n            }\r\n\r\n            if (typeof (qs) === \"object\") {\r\n                return url + appender + $.param(qs);\r\n            }\r\n\r\n            if (typeof (qs) === \"string\") {\r\n                firstChar = qs.charAt(0);\r\n\r\n                if (firstChar === \"?\" || firstChar === \"&\") {\r\n                    appender = \"\";\r\n                }\r\n\r\n                return url + appender + qs;\r\n            }\r\n\r\n            throw new Error(\"Query string property must be either a string or object.\");\r\n        },\r\n\r\n        // BUG #2953: The url needs to be same otherwise it will cause a memory leak\r\n        getUrl: function (connection, transport, reconnecting, poll, ajaxPost) {\r\n            /// <summary>Gets the url for making a GET based connect request</summary>\r\n            var baseUrl = transport === \"webSockets\" ? \"\" : connection.baseUrl,\r\n                url = baseUrl + connection.appRelativeUrl,\r\n                qs = \"transport=\" + transport;\r\n\r\n            if (!ajaxPost && connection.groupsToken) {\r\n                qs += \"&groupsToken=\" + window.encodeURIComponent(connection.groupsToken);\r\n            }\r\n\r\n            if (!reconnecting) {\r\n                url += \"/connect\";\r\n            } else {\r\n                if (poll) {\r\n                    // longPolling transport specific\r\n                    url += \"/poll\";\r\n                } else {\r\n                    url += \"/reconnect\";\r\n                }\r\n\r\n                if (!ajaxPost && connection.messageId) {\r\n                    qs += \"&messageId=\" + window.encodeURIComponent(connection.messageId);\r\n                }\r\n            }\r\n            url += \"?\" + qs;\r\n            url = transportLogic.prepareQueryString(connection, url);\r\n\r\n            // With sse or ws, access_token in request header is not supported\r\n            if (connection.transport && connection.accessToken) {\r\n                if (connection.transport.name === \"serverSentEvents\" || connection.transport.name === \"webSockets\") {\r\n                    url += \"&access_token=\" + window.encodeURIComponent(connection.accessToken);\r\n                }\r\n            }\r\n\r\n            if (!ajaxPost) {\r\n                url += \"&tid=\" + Math.floor(Math.random() * 11);\r\n            }\r\n\r\n            return url;\r\n        },\r\n\r\n        maximizePersistentResponse: function (minPersistentResponse) {\r\n            return {\r\n                MessageId: minPersistentResponse.C,\r\n                Messages: minPersistentResponse.M,\r\n                Initialized: typeof (minPersistentResponse.S) !== \"undefined\" ? true : false,\r\n                ShouldReconnect: typeof (minPersistentResponse.T) !== \"undefined\" ? true : false,\r\n                LongPollDelay: minPersistentResponse.L,\r\n                GroupsToken: minPersistentResponse.G,\r\n                Error: minPersistentResponse.E\r\n            };\r\n        },\r\n\r\n        updateGroups: function (connection, groupsToken) {\r\n            if (groupsToken) {\r\n                connection.groupsToken = groupsToken;\r\n            }\r\n        },\r\n\r\n        stringifySend: function (connection, message) {\r\n            if (typeof (message) === \"string\" || typeof (message) === \"undefined\" || message === null) {\r\n                return message;\r\n            }\r\n            return connection.json.stringify(message);\r\n        },\r\n\r\n        ajaxSend: function (connection, data) {\r\n            var payload = transportLogic.stringifySend(connection, data),\r\n                url = getAjaxUrl(connection, \"/send\"),\r\n                xhr,\r\n                onFail = function (error, connection) {\r\n                    $(connection).triggerHandler(events.onError, [signalR._.transportError(signalR.resources.sendFailed, connection.transport, error, xhr), data]);\r\n                };\r\n\r\n\r\n            xhr = transportLogic.ajax(connection, {\r\n                url: url,\r\n                type: connection.ajaxDataType === \"jsonp\" ? \"GET\" : \"POST\",\r\n                contentType: signalR._.defaultContentType,\r\n                headers: connection.accessToken ? { \"Authorization\": \"Bearer \" + connection.accessToken } : {},\r\n                data: {\r\n                    data: payload\r\n                },\r\n                success: function (result) {\r\n                    var res;\r\n\r\n                    if (result) {\r\n                        try {\r\n                            res = connection._parseResponse(result);\r\n                        }\r\n                        catch (error) {\r\n                            onFail(error, connection);\r\n                            connection.stop();\r\n                            return;\r\n                        }\r\n\r\n                        transportLogic.triggerReceived(connection, res);\r\n                    }\r\n                },\r\n                error: function (error, textStatus) {\r\n                    if (textStatus === \"abort\" || textStatus === \"parsererror\") {\r\n                        // The parsererror happens for sends that don't return any data, and hence\r\n                        // don't write the jsonp callback to the response. This is harder to fix on the server\r\n                        // so just hack around it on the client for now.\r\n                        return;\r\n                    }\r\n\r\n                    onFail(error, connection);\r\n                }\r\n            });\r\n\r\n            return xhr;\r\n        },\r\n\r\n        ajaxAbort: function (connection, async) {\r\n            if (typeof (connection.transport) === \"undefined\") {\r\n                return;\r\n            }\r\n\r\n            // Async by default unless explicitly overidden\r\n            async = typeof async === \"undefined\" ? true : async;\r\n\r\n            var url = getAjaxUrl(connection, \"/abort\");\r\n\r\n            var requestHeaders = connection.accessToken ? { \"Authorization\": \"Bearer \" + connection.accessToken } : {};\r\n\r\n            //option #1 - send \"fetch\" with keepalive\r\n            if (window.fetch) {\r\n                // use the fetch API with keepalive\r\n                window.fetch(url, {\r\n                    method: \"POST\",\r\n                    keepalive: true,\r\n                    headers: requestHeaders,\r\n                    credentials: connection.withCredentials === true ? \"include\" : \"same-origin\"\r\n                });\r\n            }\r\n            else { \r\n                // fetch is not available - fallback to $.ajax\r\n                transportLogic.ajax(connection, {\r\n                    url: url,\r\n                    async: async,\r\n                    timeout: 1000,\r\n                    type: \"POST\",\r\n                    headers: requestHeaders,\r\n                    dataType: \"text\" // We don't want to use JSONP here even when JSONP is enabled\r\n                });\r\n            }\r\n\r\n            connection.log(\"Fired ajax abort async = \" + async + \".\");\r\n        },\r\n\r\n        ajaxStart: function (connection, onSuccess) {\r\n            var rejectDeferred = function (error) {\r\n                    var deferred = connection._deferral;\r\n                    if (deferred) {\r\n                        deferred.reject(error);\r\n                    }\r\n                },\r\n                triggerStartError = function (error) {\r\n                    connection.log(\"The start request failed. Stopping the connection.\");\r\n                    $(connection).triggerHandler(events.onError, [error]);\r\n                    rejectDeferred(error);\r\n                    connection.stop();\r\n                };\r\n\r\n            connection._.startRequest = transportLogic.ajax(connection, {\r\n                url: getAjaxUrl(connection, \"/start\"),\r\n                headers: connection.accessToken ? { \"Authorization\": \"Bearer \" + connection.accessToken } : {},\r\n                success: function (result, statusText, xhr) {\r\n                    var data;\r\n\r\n                    try {\r\n                        data = connection._parseResponse(result);\r\n                    } catch (error) {\r\n                        triggerStartError(signalR._.error(\r\n                            signalR._.format(signalR.resources.errorParsingStartResponse, result),\r\n                            error, xhr));\r\n                        return;\r\n                    }\r\n\r\n                    if (data.Response === \"started\") {\r\n                        onSuccess();\r\n                    } else {\r\n                        triggerStartError(signalR._.error(\r\n                            signalR._.format(signalR.resources.invalidStartResponse, result),\r\n                            null /* error */, xhr));\r\n                    }\r\n                },\r\n                error: function (xhr, statusText, error) {\r\n                    if (statusText !== startAbortText) {\r\n                        triggerStartError(signalR._.error(\r\n                            signalR.resources.errorDuringStartRequest,\r\n                            error, xhr));\r\n                    } else {\r\n                        // Stop has been called, no need to trigger the error handler\r\n                        // or stop the connection again with onStartError\r\n                        connection.log(\"The start request aborted because connection.stop() was called.\");\r\n                        rejectDeferred(signalR._.error(\r\n                            signalR.resources.stoppedDuringStartRequest,\r\n                            null /* error */, xhr));\r\n                    }\r\n                }\r\n            });\r\n        },\r\n\r\n        tryAbortStartRequest: function (connection) {\r\n            if (connection._.startRequest) {\r\n                // If the start request has already completed this will noop.\r\n                connection._.startRequest.abort(startAbortText);\r\n                delete connection._.startRequest;\r\n            }\r\n        },\r\n\r\n        tryInitialize: function (connection, persistentResponse, onInitialized) {\r\n            if (persistentResponse.Initialized && onInitialized) {\r\n                onInitialized();\r\n            } else if (persistentResponse.Initialized) {\r\n                connection.log(\"WARNING! The client received an init message after reconnecting.\");\r\n            }\r\n\r\n        },\r\n\r\n        triggerReceived: function (connection, data) {\r\n            if (!connection._.connectingMessageBuffer.tryBuffer(data)) {\r\n                $(connection).triggerHandler(events.onReceived, [data]);\r\n            }\r\n        },\r\n\r\n        processMessages: function (connection, minData, onInitialized) {\r\n            var data;\r\n\r\n            if(minData && (typeof minData.I !== \"undefined\")) {\r\n                // This is a response to a message the client sent\r\n                transportLogic.triggerReceived(connection, minData);\r\n                return;\r\n            }\r\n\r\n            // Update the last message time stamp\r\n            transportLogic.markLastMessage(connection);\r\n\r\n            if (minData) {\r\n                // This is a message send directly to the client\r\n                data = transportLogic.maximizePersistentResponse(minData);\r\n\r\n                if (data.Error) {\r\n                    // This is a global error, stop the connection.\r\n                    connection.log(\"Received an error message from the server: \" + minData.E);\r\n                    $(connection).triggerHandler(signalR.events.onError, [signalR._.error(minData.E, /* source */ \"ServerError\")]);\r\n                    connection.stop(/* async */ false, /* notifyServer */ false);\r\n                    return;\r\n                }\r\n\r\n                transportLogic.updateGroups(connection, data.GroupsToken);\r\n\r\n                if (data.MessageId) {\r\n                    connection.messageId = data.MessageId;\r\n                }\r\n\r\n                if (data.Messages) {\r\n                    $.each(data.Messages, function (index, message) {\r\n                        transportLogic.triggerReceived(connection, message);\r\n                    });\r\n\r\n                    transportLogic.tryInitialize(connection, data, onInitialized);\r\n                }\r\n            }\r\n        },\r\n\r\n        monitorKeepAlive: function (connection) {\r\n            var keepAliveData = connection._.keepAliveData;\r\n\r\n            // If we haven't initiated the keep alive timeouts then we need to\r\n            if (!keepAliveData.monitoring) {\r\n                keepAliveData.monitoring = true;\r\n\r\n                transportLogic.markLastMessage(connection);\r\n\r\n                // Save the function so we can unbind it on stop\r\n                connection._.keepAliveData.reconnectKeepAliveUpdate = function () {\r\n                    // Mark a new message so that keep alive doesn't time out connections\r\n                    transportLogic.markLastMessage(connection);\r\n                };\r\n\r\n                // Update Keep alive on reconnect\r\n                $(connection).bind(events.onReconnect, connection._.keepAliveData.reconnectKeepAliveUpdate);\r\n\r\n                connection.log(\"Now monitoring keep alive with a warning timeout of \" + keepAliveData.timeoutWarning + \", keep alive timeout of \" + keepAliveData.timeout + \" and disconnecting timeout of \" + connection.disconnectTimeout);\r\n            } else {\r\n                connection.log(\"Tried to monitor keep alive but it's already being monitored.\");\r\n            }\r\n        },\r\n\r\n        stopMonitoringKeepAlive: function (connection) {\r\n            var keepAliveData = connection._.keepAliveData;\r\n\r\n            // Only attempt to stop the keep alive monitoring if its being monitored\r\n            if (keepAliveData.monitoring) {\r\n                // Stop monitoring\r\n                keepAliveData.monitoring = false;\r\n\r\n                // Remove the updateKeepAlive function from the reconnect event\r\n                $(connection).unbind(events.onReconnect, connection._.keepAliveData.reconnectKeepAliveUpdate);\r\n\r\n                // Clear all the keep alive data\r\n                connection._.keepAliveData = {};\r\n                connection.log(\"Stopping the monitoring of the keep alive.\");\r\n            }\r\n        },\r\n\r\n        startHeartbeat: function (connection) {\r\n            connection._.lastActiveAt = new Date().getTime();\r\n            beat(connection);\r\n        },\r\n\r\n        markLastMessage: function (connection) {\r\n            connection._.lastMessageAt = new Date().getTime();\r\n            connection._.lastActiveAt = connection._.lastMessageAt;\r\n        },\r\n\r\n        markActive: function (connection) {\r\n            if (transportLogic.verifyLastActive(connection)) {\r\n                connection._.lastActiveAt = new Date().getTime();\r\n                return true;\r\n            }\r\n\r\n            return false;\r\n        },\r\n\r\n        isConnectedOrReconnecting: function (connection) {\r\n            return connection.state === signalR.connectionState.connected ||\r\n                   connection.state === signalR.connectionState.reconnecting;\r\n        },\r\n\r\n        ensureReconnectingState: function (connection) {\r\n            if (changeState(connection,\r\n                        signalR.connectionState.connected,\r\n                        signalR.connectionState.reconnecting) === true) {\r\n                $(connection).triggerHandler(events.onReconnecting);\r\n            }\r\n            return connection.state === signalR.connectionState.reconnecting;\r\n        },\r\n\r\n        clearReconnectTimeout: function (connection) {\r\n            if (connection && connection._.reconnectTimeout) {\r\n                window.clearTimeout(connection._.reconnectTimeout);\r\n                delete connection._.reconnectTimeout;\r\n            }\r\n        },\r\n\r\n        verifyLastActive: function (connection) {\r\n            // If there is no keep alive configured, we cannot assume that timer callbacks will\r\n            // run frequently enough to keep lastActiveAt updated.\r\n            // https://github.com/SignalR/SignalR/issues/4536\r\n            if (!connection._.keepAliveData.activated ||\r\n                new Date().getTime() - connection._.lastActiveAt < connection.reconnectWindow) {\r\n                return true;\r\n            }\r\n\r\n            var message = signalR._.format(signalR.resources.reconnectWindowTimeout, new Date(connection._.lastActiveAt), connection.reconnectWindow);\r\n            connection.log(message);\r\n            $(connection).triggerHandler(events.onError, [signalR._.error(message, /* source */ \"TimeoutException\")]);\r\n            connection.stop(/* async */ false, /* notifyServer */ false);\r\n            return false;\r\n        },\r\n\r\n        reconnect: function (connection, transportName) {\r\n            var transport = signalR.transports[transportName];\r\n\r\n            // We should only set a reconnectTimeout if we are currently connected\r\n            // and a reconnectTimeout isn't already set.\r\n            if (transportLogic.isConnectedOrReconnecting(connection) && !connection._.reconnectTimeout) {\r\n                // Need to verify before the setTimeout occurs because an application sleep could occur during the setTimeout duration.\r\n                if (!transportLogic.verifyLastActive(connection)) {\r\n                    return;\r\n                }\r\n\r\n                connection._.reconnectTimeout = window.setTimeout(function () {\r\n                    if (!transportLogic.verifyLastActive(connection)) {\r\n                        return;\r\n                    }\r\n\r\n                    transport.stop(connection);\r\n\r\n                    if (transportLogic.ensureReconnectingState(connection)) {\r\n                        connection.log(transportName + \" reconnecting.\");\r\n                        transport.start(connection);\r\n                    }\r\n                }, connection.reconnectDelay);\r\n            }\r\n        },\r\n\r\n        handleParseFailure: function (connection, result, error, onFailed, context) {\r\n            var wrappedError = signalR._.transportError(\r\n                signalR._.format(signalR.resources.parseFailed, result),\r\n                connection.transport,\r\n                error,\r\n                context);\r\n\r\n            // If we're in the initialization phase trigger onFailed, otherwise stop the connection.\r\n            if (onFailed && onFailed(wrappedError)) {\r\n                connection.log(\"Failed to parse server response while attempting to connect.\");\r\n            } else {\r\n                $(connection).triggerHandler(events.onError, [wrappedError]);\r\n                connection.stop();\r\n            }\r\n        },\r\n\r\n        initHandler: function (connection) {\r\n            return new InitHandler(connection);\r\n        },\r\n\r\n        foreverFrame: {\r\n            count: 0,\r\n            connections: {}\r\n        }\r\n    };\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.transports.webSockets.js */\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n\r\n/*global window:false */\r\n/// <reference path=\"jquery.signalR.transports.common.js\" />\r\n\r\n(function ($, window, undefined) {\r\n\r\n    var signalR = $.signalR,\r\n        events = $.signalR.events,\r\n        changeState = $.signalR.changeState,\r\n        transportLogic = signalR.transports._logic;\r\n\r\n    signalR.transports.webSockets = {\r\n        name: \"webSockets\",\r\n\r\n        supportsKeepAlive: function () {\r\n            return true;\r\n        },\r\n\r\n        send: function (connection, data) {\r\n            var payload = transportLogic.stringifySend(connection, data);\r\n\r\n            try {\r\n                connection.socket.send(payload);\r\n            } catch (ex) {\r\n                $(connection).triggerHandler(events.onError,\r\n                    [signalR._.transportError(\r\n                        signalR.resources.webSocketsInvalidState,\r\n                        connection.transport,\r\n                        ex,\r\n                        connection.socket\r\n                    ),\r\n                    data]);\r\n            }\r\n        },\r\n\r\n        start: function (connection, onSuccess, onFailed) {\r\n            var url,\r\n                opened = false,\r\n                that = this,\r\n                reconnecting = !onSuccess,\r\n                $connection = $(connection);\r\n\r\n            if (!window.WebSocket) {\r\n                onFailed();\r\n                return;\r\n            }\r\n\r\n            if (!connection.socket) {\r\n                if (connection.webSocketServerUrl) {\r\n                    url = connection.webSocketServerUrl;\r\n                } else {\r\n                    url = connection.wsProtocol + connection.host;\r\n                }\r\n\r\n                url += transportLogic.getUrl(connection, this.name, reconnecting);\r\n\r\n                connection.log(\"Connecting to websocket endpoint '\" + url + \"'.\");\r\n                connection.socket = new window.WebSocket(url);\r\n\r\n                connection.socket.onopen = function () {\r\n                    opened = true;\r\n                    connection.log(\"Websocket opened.\");\r\n\r\n                    transportLogic.clearReconnectTimeout(connection);\r\n\r\n                    if (changeState(connection,\r\n                                    signalR.connectionState.reconnecting,\r\n                                    signalR.connectionState.connected) === true) {\r\n                        $connection.triggerHandler(events.onReconnect);\r\n                    }\r\n                };\r\n\r\n                connection.socket.onclose = function (event) {\r\n                    var error;\r\n\r\n                    // Only handle a socket close if the close is from the current socket.\r\n                    // Sometimes on disconnect the server will push down an onclose event\r\n                    // to an expired socket.\r\n\r\n                    if (this === connection.socket) {\r\n                        if (opened && typeof event.wasClean !== \"undefined\" && event.wasClean === false) {\r\n                            // Ideally this would use the websocket.onerror handler (rather than checking wasClean in onclose) but\r\n                            // I found in some circumstances Chrome won't call onerror. This implementation seems to work on all browsers.\r\n                            error = signalR._.transportError(\r\n                                signalR.resources.webSocketClosed,\r\n                                connection.transport,\r\n                                event);\r\n\r\n                            connection.log(\"Unclean disconnect from websocket: \" + (event.reason || \"[no reason given].\"));\r\n                        } else {\r\n                            connection.log(\"Websocket closed.\");\r\n                        }\r\n\r\n                        if (!onFailed || !onFailed(error)) {\r\n                            if (error) {\r\n                                $(connection).triggerHandler(events.onError, [error]);\r\n                            }\r\n\r\n                            that.reconnect(connection);\r\n                        }\r\n                    }\r\n                };\r\n\r\n                connection.socket.onmessage = function (event) {\r\n                    var data;\r\n\r\n                    try {\r\n                        data = connection._parseResponse(event.data);\r\n                    }\r\n                    catch (error) {\r\n                        transportLogic.handleParseFailure(connection, event.data, error, onFailed, event);\r\n                        return;\r\n                    }\r\n\r\n                    if (data) {\r\n                        transportLogic.processMessages(connection, data, onSuccess);\r\n                    }\r\n                };\r\n            }\r\n        },\r\n\r\n        reconnect: function (connection) {\r\n            transportLogic.reconnect(connection, this.name);\r\n        },\r\n\r\n        lostConnection: function (connection) {\r\n            this.reconnect(connection);\r\n        },\r\n\r\n        stop: function (connection) {\r\n            // Don't trigger a reconnect after stopping\r\n            transportLogic.clearReconnectTimeout(connection);\r\n\r\n            if (connection.socket) {\r\n                connection.log(\"Closing the Websocket.\");\r\n                connection.socket.close();\r\n                connection.socket = null;\r\n            }\r\n        },\r\n\r\n        abort: function (connection, async) {\r\n            transportLogic.ajaxAbort(connection, async);\r\n        }\r\n    };\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.transports.serverSentEvents.js */\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n\r\n/*global window:false */\r\n/// <reference path=\"jquery.signalR.transports.common.js\" />\r\n\r\n(function ($, window, undefined) {\r\n\r\n    var signalR = $.signalR,\r\n        events = $.signalR.events,\r\n        changeState = $.signalR.changeState,\r\n        transportLogic = signalR.transports._logic,\r\n        clearReconnectAttemptTimeout = function (connection) {\r\n            window.clearTimeout(connection._.reconnectAttemptTimeoutHandle);\r\n            delete connection._.reconnectAttemptTimeoutHandle;\r\n        };\r\n\r\n    signalR.transports.serverSentEvents = {\r\n        name: \"serverSentEvents\",\r\n\r\n        supportsKeepAlive: function () {\r\n            return true;\r\n        },\r\n\r\n        timeOut: 3000,\r\n\r\n        start: function (connection, onSuccess, onFailed) {\r\n            var that = this,\r\n                opened = false,\r\n                $connection = $(connection),\r\n                reconnecting = !onSuccess,\r\n                url;\r\n\r\n            if (connection.eventSource) {\r\n                connection.log(\"The connection already has an event source. Stopping it.\");\r\n                connection.stop();\r\n            }\r\n\r\n            if (!window.EventSource) {\r\n                if (onFailed) {\r\n                    connection.log(\"This browser doesn't support SSE.\");\r\n                    onFailed();\r\n                }\r\n                return;\r\n            }\r\n\r\n            url = transportLogic.getUrl(connection, this.name, reconnecting);\r\n\r\n            try {\r\n                connection.log(\"Attempting to connect to SSE endpoint '\" + url + \"'.\");\r\n                connection.eventSource = new window.EventSource(url, { withCredentials: connection.withCredentials });\r\n            }\r\n            catch (e) {\r\n                connection.log(\"EventSource failed trying to connect with error \" + e.Message + \".\");\r\n                if (onFailed) {\r\n                    // The connection failed, call the failed callback\r\n                    onFailed();\r\n                } else {\r\n                    $connection.triggerHandler(events.onError, [signalR._.transportError(signalR.resources.eventSourceFailedToConnect, connection.transport, e)]);\r\n                    if (reconnecting) {\r\n                        // If we were reconnecting, rather than doing initial connect, then try reconnect again\r\n                        that.reconnect(connection);\r\n                    }\r\n                }\r\n                return;\r\n            }\r\n\r\n            if (reconnecting) {\r\n                connection._.reconnectAttemptTimeoutHandle = window.setTimeout(function () {\r\n                    if (opened === false) {\r\n                        // If we're reconnecting and the event source is attempting to connect,\r\n                        // don't keep retrying. This causes duplicate connections to spawn.\r\n                        if (connection.eventSource.readyState !== window.EventSource.OPEN) {\r\n                            // If we were reconnecting, rather than doing initial connect, then try reconnect again\r\n                            that.reconnect(connection);\r\n                        }\r\n                    }\r\n                },\r\n                that.timeOut);\r\n            }\r\n\r\n            connection.eventSource.addEventListener(\"open\", function (e) {\r\n                connection.log(\"EventSource connected.\");\r\n\r\n                clearReconnectAttemptTimeout(connection);\r\n                transportLogic.clearReconnectTimeout(connection);\r\n\r\n                if (opened === false) {\r\n                    opened = true;\r\n\r\n                    if (changeState(connection,\r\n                                         signalR.connectionState.reconnecting,\r\n                                         signalR.connectionState.connected) === true) {\r\n                        $connection.triggerHandler(events.onReconnect);\r\n                    }\r\n                }\r\n            }, false);\r\n\r\n            connection.eventSource.addEventListener(\"message\", function (e) {\r\n                var res;\r\n\r\n                // process messages\r\n                if (e.data === \"initialized\") {\r\n                    return;\r\n                }\r\n\r\n                try {\r\n                    res = connection._parseResponse(e.data);\r\n                }\r\n                catch (error) {\r\n                    transportLogic.handleParseFailure(connection, e.data, error, onFailed, e);\r\n                    return;\r\n                }\r\n\r\n                transportLogic.processMessages(connection, res, onSuccess);\r\n            }, false);\r\n\r\n            connection.eventSource.addEventListener(\"error\", function (e) {\r\n                var error = signalR._.transportError(\r\n                    signalR.resources.eventSourceError,\r\n                    connection.transport,\r\n                    e);\r\n\r\n                // Only handle an error if the error is from the current Event Source.\r\n                // Sometimes on disconnect the server will push down an error event\r\n                // to an expired Event Source.\r\n                if (this !== connection.eventSource) {\r\n                    return;\r\n                }\r\n\r\n                if (onFailed && onFailed(error)) {\r\n                    return;\r\n                }\r\n\r\n                connection.log(\"EventSource readyState: \" + connection.eventSource.readyState + \".\");\r\n\r\n                if (e.eventPhase === window.EventSource.CLOSED) {\r\n                    // We don't use the EventSource's native reconnect function as it\r\n                    // doesn't allow us to change the URL when reconnecting. We need\r\n                    // to change the URL to not include the /connect suffix, and pass\r\n                    // the last message id we received.\r\n                    connection.log(\"EventSource reconnecting due to the server connection ending.\");\r\n                    that.reconnect(connection);\r\n                } else {\r\n                    // connection error\r\n                    connection.log(\"EventSource error.\");\r\n                    $connection.triggerHandler(events.onError, [error]);\r\n                }\r\n            }, false);\r\n        },\r\n\r\n        reconnect: function (connection) {\r\n            transportLogic.reconnect(connection, this.name);\r\n        },\r\n\r\n        lostConnection: function (connection) {\r\n            this.reconnect(connection);\r\n        },\r\n\r\n        send: function (connection, data) {\r\n            transportLogic.ajaxSend(connection, data);\r\n        },\r\n\r\n        stop: function (connection) {\r\n            // Don't trigger a reconnect after stopping\r\n            clearReconnectAttemptTimeout(connection);\r\n            transportLogic.clearReconnectTimeout(connection);\r\n\r\n            if (connection && connection.eventSource) {\r\n                connection.log(\"EventSource calling close().\");\r\n                connection.eventSource.close();\r\n                connection.eventSource = null;\r\n                delete connection.eventSource;\r\n            }\r\n        },\r\n\r\n        abort: function (connection, async) {\r\n            transportLogic.ajaxAbort(connection, async);\r\n        }\r\n    };\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.transports.foreverFrame.js */\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n\r\n/*global window:false */\r\n/// <reference path=\"jquery.signalR.transports.common.js\" />\r\n\r\n(function ($, window, undefined) {\r\n\r\n    var signalR = $.signalR,\r\n        events = $.signalR.events,\r\n        changeState = $.signalR.changeState,\r\n        transportLogic = signalR.transports._logic,\r\n        createFrame = function () {\r\n            var frame = window.document.createElement(\"iframe\");\r\n            frame.setAttribute(\"style\", \"position:absolute;top:0;left:0;width:0;height:0;visibility:hidden;\");\r\n            return frame;\r\n        },\r\n        // Used to prevent infinite loading icon spins in older versions of ie\r\n        // We build this object inside a closure so we don't pollute the rest of\r\n        // the foreverFrame transport with unnecessary functions/utilities.\r\n        loadPreventer = (function () {\r\n            var loadingFixIntervalId = null,\r\n                loadingFixInterval = 1000,\r\n                attachedTo = 0;\r\n\r\n            return {\r\n                prevent: function () {\r\n                    // Prevent additional iframe removal procedures from newer browsers\r\n                    if (signalR._.ieVersion <= 8) {\r\n                        // We only ever want to set the interval one time, so on the first attachedTo\r\n                        if (attachedTo === 0) {\r\n                            // Create and destroy iframe every 3 seconds to prevent loading icon, super hacky\r\n                            loadingFixIntervalId = window.setInterval(function () {\r\n                                var tempFrame = createFrame();\r\n\r\n                                window.document.body.appendChild(tempFrame);\r\n                                window.document.body.removeChild(tempFrame);\r\n\r\n                                tempFrame = null;\r\n                            }, loadingFixInterval);\r\n                        }\r\n\r\n                        attachedTo++;\r\n                    }\r\n                },\r\n                cancel: function () {\r\n                    // Only clear the interval if there's only one more object that the loadPreventer is attachedTo\r\n                    if (attachedTo === 1) {\r\n                        window.clearInterval(loadingFixIntervalId);\r\n                    }\r\n\r\n                    if (attachedTo > 0) {\r\n                        attachedTo--;\r\n                    }\r\n                }\r\n            };\r\n        })();\r\n\r\n    signalR.transports.foreverFrame = {\r\n        name: \"foreverFrame\",\r\n\r\n        supportsKeepAlive: function () {\r\n            return true;\r\n        },\r\n\r\n        // Added as a value here so we can create tests to verify functionality\r\n        iframeClearThreshold: 50,\r\n\r\n        start: function (connection, onSuccess, onFailed) {\r\n            if (connection.accessToken) {\r\n                if (onFailed) {\r\n                    connection.log(\"Forever Frame does not support connections that require a Bearer token to connect, such as the Azure SignalR Service.\");\r\n                    onFailed();\r\n                }\r\n                return;\r\n            }\r\n\r\n            var that = this,\r\n                frameId = (transportLogic.foreverFrame.count += 1),\r\n                url,\r\n                frame = createFrame(),\r\n                frameLoadHandler = function () {\r\n                    connection.log(\"Forever frame iframe finished loading and is no longer receiving messages.\");\r\n                    if (!onFailed || !onFailed()) {\r\n                        that.reconnect(connection);\r\n                    }\r\n                };\r\n\r\n            if (window.EventSource) {\r\n                // If the browser supports SSE, don't use Forever Frame\r\n                if (onFailed) {\r\n                    connection.log(\"Forever Frame is not supported by SignalR on browsers with SSE support.\");\r\n                    onFailed();\r\n                }\r\n                return;\r\n            }\r\n\r\n            frame.setAttribute(\"data-signalr-connection-id\", connection.id);\r\n\r\n            // Start preventing loading icon\r\n            // This will only perform work if the loadPreventer is not attached to another connection.\r\n            loadPreventer.prevent();\r\n\r\n            // Build the url\r\n            url = transportLogic.getUrl(connection, this.name);\r\n            url += \"&frameId=\" + frameId;\r\n\r\n            // add frame to the document prior to setting URL to avoid caching issues.\r\n            window.document.documentElement.appendChild(frame);\r\n\r\n            connection.log(\"Binding to iframe's load event.\");\r\n\r\n            if (frame.addEventListener) {\r\n                frame.addEventListener(\"load\", frameLoadHandler, false);\r\n            } else if (frame.attachEvent) {\r\n                frame.attachEvent(\"onload\", frameLoadHandler);\r\n            }\r\n\r\n            frame.src = url;\r\n            transportLogic.foreverFrame.connections[frameId] = connection;\r\n\r\n            connection.frame = frame;\r\n            connection.frameId = frameId;\r\n\r\n            if (onSuccess) {\r\n                connection.onSuccess = function () {\r\n                    connection.log(\"Iframe transport started.\");\r\n                    onSuccess();\r\n                };\r\n            }\r\n        },\r\n\r\n        reconnect: function (connection) {\r\n            var that = this;\r\n\r\n            // Need to verify connection state and verify before the setTimeout occurs because an application sleep could occur during the setTimeout duration.\r\n            if (transportLogic.isConnectedOrReconnecting(connection) && transportLogic.verifyLastActive(connection)) {\r\n                window.setTimeout(function () {\r\n                    // Verify that we're ok to reconnect.\r\n                    if (!transportLogic.verifyLastActive(connection)) {\r\n                        return;\r\n                    }\r\n\r\n                    if (connection.frame && transportLogic.ensureReconnectingState(connection)) {\r\n                        var frame = connection.frame,\r\n                            src = transportLogic.getUrl(connection, that.name, true) + \"&frameId=\" + connection.frameId;\r\n                        connection.log(\"Updating iframe src to '\" + src + \"'.\");\r\n                        frame.src = src;\r\n                    }\r\n                }, connection.reconnectDelay);\r\n            }\r\n        },\r\n\r\n        lostConnection: function (connection) {\r\n            this.reconnect(connection);\r\n        },\r\n\r\n        send: function (connection, data) {\r\n            transportLogic.ajaxSend(connection, data);\r\n        },\r\n\r\n        receive: function (connection, data) {\r\n            var cw,\r\n                body,\r\n                response;\r\n\r\n            if (connection.json !== connection._originalJson) {\r\n                // If there's a custom JSON parser configured then serialize the object\r\n                // using the original (browser) JSON parser and then deserialize it using\r\n                // the custom parser (connection._parseResponse does that). This is so we\r\n                // can easily send the response from the server as \"raw\" JSON but still\r\n                // support custom JSON deserialization in the browser.\r\n                data = connection._originalJson.stringify(data);\r\n            }\r\n\r\n            response = connection._parseResponse(data);\r\n\r\n            transportLogic.processMessages(connection, response, connection.onSuccess);\r\n\r\n            // Protect against connection stopping from a callback trigger within the processMessages above.\r\n            if (connection.state === $.signalR.connectionState.connected) {\r\n                // Delete the script & div elements\r\n                connection.frameMessageCount = (connection.frameMessageCount || 0) + 1;\r\n                if (connection.frameMessageCount > signalR.transports.foreverFrame.iframeClearThreshold) {\r\n                    connection.frameMessageCount = 0;\r\n                    cw = connection.frame.contentWindow || connection.frame.contentDocument;\r\n                    if (cw && cw.document && cw.document.body) {\r\n                        body = cw.document.body;\r\n\r\n                        // Remove all the child elements from the iframe's body to conserver memory\r\n                        while (body.firstChild) {\r\n                            body.removeChild(body.firstChild);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        },\r\n\r\n        stop: function (connection) {\r\n            var cw = null;\r\n\r\n            // Stop attempting to prevent loading icon\r\n            loadPreventer.cancel();\r\n\r\n            if (connection.frame) {\r\n                if (connection.frame.stop) {\r\n                    connection.frame.stop();\r\n                } else {\r\n                    try {\r\n                        cw = connection.frame.contentWindow || connection.frame.contentDocument;\r\n                        if (cw.document && cw.document.execCommand) {\r\n                            cw.document.execCommand(\"Stop\");\r\n                        }\r\n                    }\r\n                    catch (e) {\r\n                        connection.log(\"Error occurred when stopping foreverFrame transport. Message = \" + e.message + \".\");\r\n                    }\r\n                }\r\n\r\n                // Ensure the iframe is where we left it\r\n                if (connection.frame.parentNode === window.document.documentElement) {\r\n                    window.document.documentElement.removeChild(connection.frame);\r\n                }\r\n\r\n                delete transportLogic.foreverFrame.connections[connection.frameId];\r\n                connection.frame = null;\r\n                connection.frameId = null;\r\n                delete connection.frame;\r\n                delete connection.frameId;\r\n                delete connection.onSuccess;\r\n                delete connection.frameMessageCount;\r\n                connection.log(\"Stopping forever frame.\");\r\n            }\r\n        },\r\n\r\n        abort: function (connection, async) {\r\n            transportLogic.ajaxAbort(connection, async);\r\n        },\r\n\r\n        getConnection: function (id) {\r\n            return transportLogic.foreverFrame.connections[id];\r\n        },\r\n\r\n        started: function (connection) {\r\n            if (changeState(connection,\r\n                signalR.connectionState.reconnecting,\r\n                signalR.connectionState.connected) === true) {\r\n\r\n                $(connection).triggerHandler(events.onReconnect);\r\n            }\r\n        }\r\n    };\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.transports.longPolling.js */\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n\r\n/*global window:false */\r\n/// <reference path=\"jquery.signalR.transports.common.js\" />\r\n\r\n(function ($, window, undefined) {\r\n\r\n    var signalR = $.signalR,\r\n        events = $.signalR.events,\r\n        changeState = $.signalR.changeState,\r\n        isDisconnecting = $.signalR.isDisconnecting,\r\n        transportLogic = signalR.transports._logic;\r\n\r\n    signalR.transports.longPolling = {\r\n        name: \"longPolling\",\r\n\r\n        supportsKeepAlive: function () {\r\n            return false;\r\n        },\r\n\r\n        reconnectDelay: 3000,\r\n\r\n        start: function (connection, onSuccess, onFailed) {\r\n            /// <summary>Starts the long polling connection</summary>\r\n            /// <param name=\"connection\" type=\"signalR\">The SignalR connection to start</param>\r\n            var that = this,\r\n                fireConnect = function () {\r\n                    fireConnect = $.noop;\r\n\r\n                    connection.log(\"LongPolling connected.\");\r\n\r\n                    if (onSuccess) {\r\n                        onSuccess();\r\n                    } else {\r\n                        connection.log(\"WARNING! The client received an init message after reconnecting.\");\r\n                    }\r\n                },\r\n                tryFailConnect = function (error) {\r\n                    if (onFailed(error)) {\r\n                        connection.log(\"LongPolling failed to connect.\");\r\n                        return true;\r\n                    }\r\n\r\n                    return false;\r\n                },\r\n                privateData = connection._,\r\n                reconnectErrors = 0,\r\n                fireReconnected = function (instance) {\r\n                    window.clearTimeout(privateData.reconnectTimeoutId);\r\n                    privateData.reconnectTimeoutId = null;\r\n\r\n                    if (changeState(instance,\r\n                                    signalR.connectionState.reconnecting,\r\n                                    signalR.connectionState.connected) === true) {\r\n                        // Successfully reconnected!\r\n                        instance.log(\"Raising the reconnect event\");\r\n                        $(instance).triggerHandler(events.onReconnect);\r\n                    }\r\n                },\r\n                // 1 hour\r\n                maxFireReconnectedTimeout = 3600000;\r\n\r\n            if (connection.pollXhr) {\r\n                connection.log(\"Polling xhr requests already exists, aborting.\");\r\n                connection.stop();\r\n            }\r\n\r\n            connection.messageId = null;\r\n\r\n            privateData.reconnectTimeoutId = null;\r\n\r\n            privateData.pollTimeoutId = window.setTimeout(function () {\r\n                (function poll(instance, raiseReconnect) {\r\n                    var messageId = instance.messageId,\r\n                        connect = (messageId === null),\r\n                        reconnecting = !connect,\r\n                        polling = !raiseReconnect,\r\n                        url = transportLogic.getUrl(instance, that.name, reconnecting, polling, true /* use Post for longPolling */),\r\n                        postData = {};\r\n\r\n                    if (instance.messageId) {\r\n                        postData.messageId = instance.messageId;\r\n                    }\r\n\r\n                    if (instance.groupsToken) {\r\n                        postData.groupsToken = instance.groupsToken;\r\n                    }\r\n\r\n                    // If we've disconnected during the time we've tried to re-instantiate the poll then stop.\r\n                    if (isDisconnecting(instance) === true) {\r\n                        return;\r\n                    }\r\n\r\n                    connection.log(\"Opening long polling request to '\" + url + \"'.\");\r\n                    instance.pollXhr = transportLogic.ajax(connection, {\r\n                        xhrFields: {\r\n                            onprogress: function () {\r\n                                transportLogic.markLastMessage(connection);\r\n                            }\r\n                        },\r\n                        url: url,\r\n                        type: \"POST\",\r\n                        contentType: signalR._.defaultContentType,\r\n                        data: postData,\r\n                        timeout: connection._.pollTimeout,\r\n                        headers: connection.accessToken ? { \"Authorization\": \"Bearer \" + connection.accessToken } : {},\r\n                        success: function (result) {\r\n                            var minData,\r\n                                delay = 0,\r\n                                data,\r\n                                shouldReconnect;\r\n\r\n                            connection.log(\"Long poll complete.\");\r\n\r\n                            // Reset our reconnect errors so if we transition into a reconnecting state again we trigger\r\n                            // reconnected quickly\r\n                            reconnectErrors = 0;\r\n\r\n                            try {\r\n                                // Remove any keep-alives from the beginning of the result\r\n                                minData = connection._parseResponse(result);\r\n                            }\r\n                            catch (error) {\r\n                                transportLogic.handleParseFailure(instance, result, error, tryFailConnect, instance.pollXhr);\r\n                                return;\r\n                            }\r\n\r\n                            // If there's currently a timeout to trigger reconnect, fire it now before processing messages\r\n                            if (privateData.reconnectTimeoutId !== null) {\r\n                                fireReconnected(instance);\r\n                            }\r\n\r\n                            if (minData) {\r\n                                data = transportLogic.maximizePersistentResponse(minData);\r\n                            }\r\n\r\n                            transportLogic.processMessages(instance, minData, fireConnect);\r\n\r\n                            if (data &&\r\n                                $.type(data.LongPollDelay) === \"number\") {\r\n                                delay = data.LongPollDelay;\r\n                            }\r\n\r\n                            if (isDisconnecting(instance) === true) {\r\n                                return;\r\n                            }\r\n\r\n                            shouldReconnect = data && data.ShouldReconnect;\r\n                            if (shouldReconnect) {\r\n                                // Transition into the reconnecting state\r\n                                // If this fails then that means that the user transitioned the connection into a invalid state in processMessages.\r\n                                if (!transportLogic.ensureReconnectingState(instance)) {\r\n                                    return;\r\n                                }\r\n                            }\r\n\r\n                            // We never want to pass a raiseReconnect flag after a successful poll.  This is handled via the error function\r\n                            if (delay > 0) {\r\n                                privateData.pollTimeoutId = window.setTimeout(function () {\r\n                                    poll(instance, shouldReconnect);\r\n                                }, delay);\r\n                            } else {\r\n                                poll(instance, shouldReconnect);\r\n                            }\r\n                        },\r\n\r\n                        error: function (data, textStatus) {\r\n                            var error = signalR._.transportError(signalR.resources.longPollFailed, connection.transport, data, instance.pollXhr);\r\n\r\n                            // Stop trying to trigger reconnect, connection is in an error state\r\n                            // If we're not in the reconnect state this will noop\r\n                            window.clearTimeout(privateData.reconnectTimeoutId);\r\n                            privateData.reconnectTimeoutId = null;\r\n\r\n                            if (textStatus === \"abort\") {\r\n                                connection.log(\"Aborted xhr request.\");\r\n                                return;\r\n                            }\r\n\r\n                            if (!tryFailConnect(error)) {\r\n\r\n                                // Increment our reconnect errors, we assume all errors to be reconnect errors\r\n                                // In the case that it's our first error this will cause Reconnect to be fired\r\n                                // after 1 second due to reconnectErrors being = 1.\r\n                                reconnectErrors++;\r\n\r\n                                if (connection.state !== signalR.connectionState.reconnecting) {\r\n                                    connection.log(\"An error occurred using longPolling. Status = \" + textStatus + \".  Response = \" + data.responseText + \".\");\r\n                                    $(instance).triggerHandler(events.onError, [error]);\r\n                                }\r\n\r\n                                // We check the state here to verify that we're not in an invalid state prior to verifying Reconnect.\r\n                                // If we're not in connected or reconnecting then the next ensureReconnectingState check will fail and will return.\r\n                                // Therefore we don't want to change that failure code path.\r\n                                if ((connection.state === signalR.connectionState.connected ||\r\n                                    connection.state === signalR.connectionState.reconnecting) &&\r\n                                    !transportLogic.verifyLastActive(connection)) {\r\n                                    return;\r\n                                }\r\n\r\n                                // Transition into the reconnecting state\r\n                                // If this fails then that means that the user transitioned the connection into the disconnected or connecting state within the above error handler trigger.\r\n                                if (!transportLogic.ensureReconnectingState(instance)) {\r\n                                    return;\r\n                                }\r\n\r\n                                // Call poll with the raiseReconnect flag as true after the reconnect delay\r\n                                privateData.pollTimeoutId = window.setTimeout(function () {\r\n                                    poll(instance, true);\r\n                                }, that.reconnectDelay);\r\n                            }\r\n                        }\r\n                    });\r\n\r\n                    // This will only ever pass after an error has occurred via the poll ajax procedure.\r\n                    if (reconnecting && raiseReconnect === true) {\r\n                        // We wait to reconnect depending on how many times we've failed to reconnect.\r\n                        // This is essentially a heuristic that will exponentially increase in wait time before\r\n                        // triggering reconnected.  This depends on the \"error\" handler of Poll to cancel this\r\n                        // timeout if it triggers before the Reconnected event fires.\r\n                        // The Math.min at the end is to ensure that the reconnect timeout does not overflow.\r\n                        privateData.reconnectTimeoutId = window.setTimeout(function () { fireReconnected(instance); }, Math.min(1000 * (Math.pow(2, reconnectErrors) - 1), maxFireReconnectedTimeout));\r\n                    }\r\n                }(connection));\r\n            }, 250); // Have to delay initial poll so Chrome doesn't show loader spinner in tab\r\n        },\r\n\r\n        lostConnection: function (connection) {\r\n            if (connection.pollXhr) {\r\n                connection.pollXhr.abort(\"lostConnection\");\r\n            }\r\n        },\r\n\r\n        send: function (connection, data) {\r\n            transportLogic.ajaxSend(connection, data);\r\n        },\r\n\r\n        stop: function (connection) {\r\n            /// <summary>Stops the long polling connection</summary>\r\n            /// <param name=\"connection\" type=\"signalR\">The SignalR connection to stop</param>\r\n\r\n            window.clearTimeout(connection._.pollTimeoutId);\r\n            window.clearTimeout(connection._.reconnectTimeoutId);\r\n\r\n            delete connection._.pollTimeoutId;\r\n            delete connection._.reconnectTimeoutId;\r\n\r\n            if (connection.pollXhr) {\r\n                connection.pollXhr.abort();\r\n                connection.pollXhr = null;\r\n                delete connection.pollXhr;\r\n            }\r\n        },\r\n\r\n        abort: function (connection, async) {\r\n            transportLogic.ajaxAbort(connection, async);\r\n        }\r\n    };\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.hubs.js */\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n/*global window:false */\r\n/// <reference path=\"jquery.signalR.core.js\" />\r\n\r\n(function ($, window, undefined) {\r\n\r\n    var nextGuid = 0;\r\n    var eventNamespace = \".hubProxy\",\r\n        signalR = $.signalR;\r\n\r\n    function makeEventName(event) {\r\n        return event + eventNamespace;\r\n    }\r\n\r\n    // Equivalent to Array.prototype.map\r\n    function map(arr, fun, thisp) {\r\n        var i,\r\n            length = arr.length,\r\n            result = [];\r\n        for (i = 0; i < length; i += 1) {\r\n            if (arr.hasOwnProperty(i)) {\r\n                result[i] = fun.call(thisp, arr[i], i, arr);\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n\r\n    function getArgValue(a) {\r\n        return $.isFunction(a) ? null : ($.type(a) === \"undefined\" ? null : a);\r\n    }\r\n\r\n    function hasMembers(obj) {\r\n        for (var key in obj) {\r\n            // If we have any properties in our callback map then we have callbacks and can exit the loop via return\r\n            if (obj.hasOwnProperty(key)) {\r\n                return true;\r\n            }\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    function clearInvocationCallbacks(connection, error) {\r\n        /// <param name=\"connection\" type=\"hubConnection\" />\r\n        var callbacks = connection._.invocationCallbacks,\r\n            callback;\r\n\r\n        if (hasMembers(callbacks)) {\r\n            connection.log(\"Clearing hub invocation callbacks with error: \" + error + \".\");\r\n        }\r\n\r\n        // Reset the callback cache now as we have a local var referencing it\r\n        connection._.invocationCallbackId = 0;\r\n        delete connection._.invocationCallbacks;\r\n        connection._.invocationCallbacks = {};\r\n\r\n        // Loop over the callbacks and invoke them.\r\n        // We do this using a local var reference and *after* we've cleared the cache\r\n        // so that if a fail callback itself tries to invoke another method we don't\r\n        // end up with its callback in the list we're looping over.\r\n        for (var callbackId in callbacks) {\r\n            callback = callbacks[callbackId];\r\n            callback.method.call(callback.scope, { E: error });\r\n        }\r\n    }\r\n\r\n    function isCallbackFromGeneratedHubProxy(callback) {\r\n        // https://github.com/SignalR/SignalR/issues/4310\r\n        // The stringified callback from the old generated hub proxy is 137 characters in Edge, Firefox and Chrome.\r\n        // We slice to avoid wasting too many cycles searching through the text of a long large function.\r\n        return $.isFunction(callback) && callback.toString().slice(0, 256).indexOf(\"// Call the client hub method\") >= 0;\r\n    }\r\n\r\n    // hubProxy\r\n    function hubProxy(hubConnection, hubName) {\r\n        /// <summary>\r\n        ///     Creates a new proxy object for the given hub connection that can be used to invoke\r\n        ///     methods on server hubs and handle client method invocation requests from the server.\r\n        /// </summary>\r\n        return new hubProxy.fn.init(hubConnection, hubName);\r\n    }\r\n\r\n    hubProxy.fn = hubProxy.prototype = {\r\n        init: function (connection, hubName) {\r\n            this.state = {};\r\n            this.connection = connection;\r\n            this.hubName = hubName;\r\n            this._ = {\r\n                callbackMap: {}\r\n            };\r\n        },\r\n\r\n        constructor: hubProxy,\r\n\r\n        hasSubscriptions: function () {\r\n            return hasMembers(this._.callbackMap);\r\n        },\r\n\r\n        on: function (eventName, callback, callbackIdentity) {\r\n            /// <summary>Wires up a callback to be invoked when a invocation request is received from the server hub.</summary>\r\n            /// <param name=\"eventName\" type=\"String\">The name of the hub event to register the callback for.</param>\r\n            /// <param name=\"callback\" type=\"Function\">The callback to be invoked.</param>\r\n            /// <param name=\"callbackIdentity\" type=\"Object\">An optional object to use as the \"identity\" for the callback when checking if the handler has already been registered. Defaults to the value of 'callback' if not provided.</param>\r\n            var that = this,\r\n                callbackMap = that._.callbackMap,\r\n                isFromOldGeneratedHubProxy = !callbackIdentity && isCallbackFromGeneratedHubProxy(callback);\r\n\r\n            // We need the third \"identity\" argument because the registerHubProxies call made by signalr/js wraps the user-provided callback in a custom wrapper which breaks the identity comparison.\r\n            // callbackIdentity allows the caller of `on` to provide a separate object to use as the \"identity\". `registerHubProxies` uses the original user callback as this identity object.\r\n            callbackIdentity = callbackIdentity || callback;\r\n\r\n            // Assign a global ID to the identity object. This tags the object so we can detect the same object when it comes back.\r\n            if(!callbackIdentity._signalRGuid) {\r\n                callbackIdentity._signalRGuid = nextGuid++;\r\n            }\r\n\r\n            // Normalize the event name to lowercase\r\n            eventName = eventName.toLowerCase();\r\n\r\n            // If there is not an event registered for this callback yet we want to create its event space in the callback map.\r\n            var callbackSpace = callbackMap[eventName];\r\n            if (!callbackSpace) {\r\n                callbackSpace = [];\r\n                callbackMap[eventName] = callbackSpace;\r\n            }\r\n\r\n            // Check if there's already a registration\r\n            var registration;\r\n            for (var i = 0; i < callbackSpace.length; i++) {\r\n                if (callbackSpace[i].guid === callbackIdentity._signalRGuid || (isFromOldGeneratedHubProxy && callbackSpace[i].isFromOldGeneratedHubProxy)) {\r\n                    registration = callbackSpace[i];\r\n                }\r\n            }\r\n\r\n            // Create a registration if there isn't one already\r\n            if (!registration) {\r\n                registration = {\r\n                    guid: callbackIdentity._signalRGuid,\r\n                    eventHandlers: [],\r\n                    isFromOldGeneratedHubProxy: isFromOldGeneratedHubProxy\r\n                };\r\n                callbackMap[eventName].push(registration);\r\n            }\r\n\r\n            var handler = function (e, data) {\r\n                callback.apply(that, data);\r\n            };\r\n            registration.eventHandlers.push(handler);\r\n\r\n            $(that).bind(makeEventName(eventName), handler);\r\n\r\n            return that;\r\n        },\r\n\r\n        off: function (eventName, callback, callbackIdentity) {\r\n            /// <summary>Removes the callback invocation request from the server hub for the given event name.</summary>\r\n            /// <param name=\"eventName\" type=\"String\">The name of the hub event to unregister the callback for.</param>\r\n            /// <param name=\"callback\" type=\"Function\">The callback to be removed.</param>\r\n            /// <param name=\"callbackIdentity\" type=\"Object\">An optional object to use as the \"identity\" when looking up the callback. Corresponds to the same parameter provided to 'on'. Defaults to the value of 'callback' if not provided.</param>\r\n            var that = this,\r\n                callbackMap = that._.callbackMap,\r\n                callbackSpace,\r\n                isFromOldGeneratedHubProxy = !callbackIdentity && isCallbackFromGeneratedHubProxy(callback);\r\n\r\n            callbackIdentity = callbackIdentity || callback;\r\n\r\n            // Normalize the event name to lowercase\r\n            eventName = eventName.toLowerCase();\r\n\r\n            callbackSpace = callbackMap[eventName];\r\n\r\n            // Verify that there is an event space to unbind\r\n            if (callbackSpace) {\r\n\r\n                if (callback) {\r\n                    // Find the callback registration\r\n                    var callbackRegistration;\r\n                    var callbackIndex;\r\n                    for (var i = 0; i < callbackSpace.length; i++) {\r\n                        if (callbackSpace[i].guid === callbackIdentity._signalRGuid || (isFromOldGeneratedHubProxy && callbackSpace[i].isFromOldGeneratedHubProxy)) {\r\n                            callbackIndex = i;\r\n                            callbackRegistration = callbackSpace[i];\r\n                        }\r\n                    }\r\n\r\n                    // Only unbind if there's an event bound with eventName and a callback with the specified callback\r\n                    if (callbackRegistration) {\r\n                        // Unbind all event handlers associated with the registration.\r\n                        for (var j = 0; j < callbackRegistration.eventHandlers.length; j++) {\r\n                            $(that).unbind(makeEventName(eventName), callbackRegistration.eventHandlers[j]);\r\n                        }\r\n\r\n                        // Remove the registration from the list\r\n                        callbackSpace.splice(i, 1);\r\n\r\n                        // Check if there are any registrations left, if not we need to destroy it.\r\n                        if (callbackSpace.length === 0) {\r\n                            delete callbackMap[eventName];\r\n                        }\r\n                    }\r\n                } else if (!callback) { // Check if we're removing the whole event and we didn't error because of an invalid callback\r\n                    $(that).unbind(makeEventName(eventName));\r\n\r\n                    delete callbackMap[eventName];\r\n                }\r\n            }\r\n\r\n            return that;\r\n        },\r\n\r\n        invoke: function (methodName) {\r\n            /// <summary>Invokes a server hub method with the given arguments.</summary>\r\n            /// <param name=\"methodName\" type=\"String\">The name of the server hub method.</param>\r\n\r\n            var that = this,\r\n                connection = that.connection,\r\n                args = $.makeArray(arguments).slice(1),\r\n                argValues = map(args, getArgValue),\r\n                data = { H: that.hubName, M: methodName, A: argValues, I: connection._.invocationCallbackId },\r\n                d = $.Deferred(),\r\n                callback = function (minResult) {\r\n                    var result = that._maximizeHubResponse(minResult),\r\n                        source,\r\n                        error;\r\n\r\n                    // Update the hub state\r\n                    $.extend(that.state, result.State);\r\n\r\n                    if (result.Progress) {\r\n                        if (d.notifyWith) {\r\n                            // Progress is only supported in jQuery 1.7+\r\n                            d.notifyWith(that, [result.Progress.Data]);\r\n                        } else if (!connection._.progressjQueryVersionLogged) {\r\n                            connection.log(\"A hub method invocation progress update was received but the version of jQuery in use (\" + $.prototype.jquery + \") does not support progress updates. Upgrade to jQuery 1.7+ to receive progress notifications.\");\r\n                            connection._.progressjQueryVersionLogged = true;\r\n                        }\r\n                    } else if (result.Error) {\r\n                        // Server hub method threw an exception, log it & reject the deferred\r\n                        if (result.StackTrace) {\r\n                            connection.log(result.Error + \"\\n\" + result.StackTrace + \".\");\r\n                        }\r\n\r\n                        // result.ErrorData is only set if a HubException was thrown\r\n                        source = result.IsHubException ? \"HubException\" : \"Exception\";\r\n                        error = signalR._.error(result.Error, source);\r\n                        error.data = result.ErrorData;\r\n\r\n                        connection.log(that.hubName + \".\" + methodName + \" failed to execute. Error: \" + error.message);\r\n                        d.rejectWith(that, [error]);\r\n                    } else {\r\n                        // Server invocation succeeded, resolve the deferred\r\n                        connection.log(\"Invoked \" + that.hubName + \".\" + methodName);\r\n                        d.resolveWith(that, [result.Result]);\r\n                    }\r\n                };\r\n\r\n            connection._.invocationCallbacks[connection._.invocationCallbackId.toString()] = { scope: that, method: callback };\r\n            connection._.invocationCallbackId += 1;\r\n\r\n            if (!$.isEmptyObject(that.state)) {\r\n                data.S = that.state;\r\n            }\r\n\r\n            connection.log(\"Invoking \" + that.hubName + \".\" + methodName);\r\n            connection.send(data);\r\n\r\n            return d.promise();\r\n        },\r\n\r\n        _maximizeHubResponse: function (minHubResponse) {\r\n            return {\r\n                State: minHubResponse.S,\r\n                Result: minHubResponse.R,\r\n                Progress: minHubResponse.P ? {\r\n                    Id: minHubResponse.P.I,\r\n                    Data: minHubResponse.P.D\r\n                } : null,\r\n                Id: minHubResponse.I,\r\n                IsHubException: minHubResponse.H,\r\n                Error: minHubResponse.E,\r\n                StackTrace: minHubResponse.T,\r\n                ErrorData: minHubResponse.D\r\n            };\r\n        }\r\n    };\r\n\r\n    hubProxy.fn.init.prototype = hubProxy.fn;\r\n\r\n    // hubConnection\r\n    function hubConnection(url, options) {\r\n        /// <summary>Creates a new hub connection.</summary>\r\n        /// <param name=\"url\" type=\"String\">[Optional] The hub route url, defaults to \"/signalr\".</param>\r\n        /// <param name=\"options\" type=\"Object\">[Optional] Settings to use when creating the hubConnection.</param>\r\n        var settings = {\r\n            qs: null,\r\n            logging: false,\r\n            useDefaultPath: true\r\n        };\r\n\r\n        $.extend(settings, options);\r\n\r\n        if (!url || settings.useDefaultPath) {\r\n            url = (url || \"\") + \"/signalr\";\r\n        }\r\n        return new hubConnection.fn.init(url, settings);\r\n    }\r\n\r\n    hubConnection.fn = hubConnection.prototype = $.connection();\r\n\r\n    hubConnection.fn.init = function (url, options) {\r\n        var settings = {\r\n            qs: null,\r\n            logging: false,\r\n            useDefaultPath: true\r\n        },\r\n            connection = this;\r\n\r\n        $.extend(settings, options);\r\n\r\n        // Call the base constructor\r\n        $.signalR.fn.init.call(connection, url, settings.qs, settings.logging);\r\n\r\n        // Object to store hub proxies for this connection\r\n        connection.proxies = {};\r\n\r\n        connection._.invocationCallbackId = 0;\r\n        connection._.invocationCallbacks = {};\r\n\r\n        // Wire up the received handler\r\n        connection.received(function (minData) {\r\n            var data, proxy, dataCallbackId, callback, hubName, eventName;\r\n            if (!minData) {\r\n                return;\r\n            }\r\n\r\n            // We have to handle progress updates first in order to ensure old clients that receive\r\n            // progress updates enter the return value branch and then no-op when they can't find\r\n            // the callback in the map (because the minData.I value will not be a valid callback ID)\r\n            // Process progress notification\r\n            if (typeof (minData.P) !== \"undefined\") {\r\n                dataCallbackId = minData.P.I.toString();\r\n                callback = connection._.invocationCallbacks[dataCallbackId];\r\n                if (callback) {\r\n                    callback.method.call(callback.scope, minData);\r\n                }\r\n            } else if (typeof (minData.I) !== \"undefined\") {\r\n                // We received the return value from a server method invocation, look up callback by id and call it\r\n                dataCallbackId = minData.I.toString();\r\n                callback = connection._.invocationCallbacks[dataCallbackId];\r\n                if (callback) {\r\n                    // Delete the callback from the proxy\r\n                    connection._.invocationCallbacks[dataCallbackId] = null;\r\n                    delete connection._.invocationCallbacks[dataCallbackId];\r\n\r\n                    // Invoke the callback\r\n                    callback.method.call(callback.scope, minData);\r\n                }\r\n            } else {\r\n                data = this._maximizeClientHubInvocation(minData);\r\n\r\n                // We received a client invocation request, i.e. broadcast from server hub\r\n                connection.log(\"Triggering client hub event '\" + data.Method + \"' on hub '\" + data.Hub + \"'.\");\r\n\r\n                // Normalize the names to lowercase\r\n                hubName = data.Hub.toLowerCase();\r\n                eventName = data.Method.toLowerCase();\r\n\r\n                // Trigger the local invocation event\r\n                proxy = this.proxies[hubName];\r\n\r\n                // Update the hub state\r\n                $.extend(proxy.state, data.State);\r\n                $(proxy).triggerHandler(makeEventName(eventName), [data.Args]);\r\n            }\r\n        });\r\n\r\n        connection.error(function (errData, origData) {\r\n            var callbackId, callback;\r\n\r\n            if (!origData) {\r\n                // No original data passed so this is not a send error\r\n                return;\r\n            }\r\n\r\n            callbackId = origData.I;\r\n            callback = connection._.invocationCallbacks[callbackId];\r\n\r\n            // Verify that there is a callback bound (could have been cleared)\r\n            if (callback) {\r\n                // Delete the callback\r\n                connection._.invocationCallbacks[callbackId] = null;\r\n                delete connection._.invocationCallbacks[callbackId];\r\n\r\n                // Invoke the callback with an error to reject the promise\r\n                callback.method.call(callback.scope, { E: errData });\r\n            }\r\n        });\r\n\r\n        connection.reconnecting(function () {\r\n            if (connection.transport && connection.transport.name === \"webSockets\") {\r\n                clearInvocationCallbacks(connection, \"Connection started reconnecting before invocation result was received.\");\r\n            }\r\n        });\r\n\r\n        connection.disconnected(function () {\r\n            clearInvocationCallbacks(connection, \"Connection was disconnected before invocation result was received.\");\r\n        });\r\n    };\r\n\r\n    hubConnection.fn._maximizeClientHubInvocation = function (minClientHubInvocation) {\r\n        return {\r\n            Hub: minClientHubInvocation.H,\r\n            Method: minClientHubInvocation.M,\r\n            Args: minClientHubInvocation.A,\r\n            State: minClientHubInvocation.S\r\n        };\r\n    };\r\n\r\n    hubConnection.fn._registerSubscribedHubs = function () {\r\n        /// <summary>\r\n        ///     Sets the starting event to loop through the known hubs and register any new hubs\r\n        ///     that have been added to the proxy.\r\n        /// </summary>\r\n        var connection = this;\r\n\r\n        if (!connection._subscribedToHubs) {\r\n            connection._subscribedToHubs = true;\r\n            connection.starting(function () {\r\n                // Set the connection's data object with all the hub proxies with active subscriptions.\r\n                // These proxies will receive notifications from the server.\r\n                var subscribedHubs = [];\r\n\r\n                $.each(connection.proxies, function (key) {\r\n                    if (this.hasSubscriptions()) {\r\n                        subscribedHubs.push({ name: key });\r\n                        connection.log(\"Client subscribed to hub '\" + key + \"'.\");\r\n                    }\r\n                });\r\n\r\n                if (subscribedHubs.length === 0) {\r\n                    connection.log(\"No hubs have been subscribed to.  The client will not receive data from hubs.  To fix, declare at least one client side function prior to connection start for each hub you wish to subscribe to.\");\r\n                }\r\n\r\n                connection.data = connection.json.stringify(subscribedHubs);\r\n            });\r\n        }\r\n    };\r\n\r\n    hubConnection.fn.createHubProxy = function (hubName) {\r\n        /// <summary>\r\n        ///     Creates a new proxy object for the given hub connection that can be used to invoke\r\n        ///     methods on server hubs and handle client method invocation requests from the server.\r\n        /// </summary>\r\n        /// <param name=\"hubName\" type=\"String\">\r\n        ///     The name of the hub on the server to create the proxy for.\r\n        /// </param>\r\n\r\n        // Normalize the name to lowercase\r\n        hubName = hubName.toLowerCase();\r\n\r\n        var proxy = this.proxies[hubName];\r\n        if (!proxy) {\r\n            proxy = hubProxy(this, hubName);\r\n            this.proxies[hubName] = proxy;\r\n        }\r\n\r\n        this._registerSubscribedHubs();\r\n\r\n        return proxy;\r\n    };\r\n\r\n    hubConnection.fn.init.prototype = hubConnection.fn;\r\n\r\n    $.hubConnection = hubConnection;\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.version.js */\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n\r\n/*global window:false */\r\n/// <reference path=\"jquery.signalR.core.js\" />\r\n(function ($, undefined) {\r\n    // This will be modified by the build script\r\n    $.signalR.version = \"2.4.3\";\r\n}(window.jQuery));\r\n\ndefine(\"signalr\", function(){});\n\n","define('lq/asyncSubcriptions',[\r\n    'underscore',\r\n    'lq',\r\n    'when',\r\n    'signalr'\r\n], function (_, lq, when, signalR) {\r\n    'use strict';\r\n\r\n    var connection = null;\r\n    var groups = {};\r\n\r\n    var getRandom = function (min, max) {\r\n        return Math.floor(Math.random() * (max - min + 1) + min);\r\n    };\r\n\r\n    var createSubscription = function (register, actionInstanceId, receiverIdentifier, callback) {\r\n        return register()\r\n            .then(function (groupName) {\r\n                if (!groups[groupName]) {\r\n                    groups[groupName] = {\r\n                        subscribers: []\r\n                    };\r\n                }\r\n\r\n                var registrationAlreadyExists = !!_.findWhere(groups[groupName].subscribers, {\r\n                    actionInstanceId: actionInstanceId,\r\n                    receiverIdentifier: receiverIdentifier\r\n                });\r\n\r\n                if (!registrationAlreadyExists) {\r\n                    groups[groupName].subscribers.push({\r\n                        actionInstanceId: actionInstanceId,\r\n                        receiverIdentifier: receiverIdentifier,\r\n                        callback: callback,\r\n                        register: register\r\n                    });\r\n                }\r\n            });\r\n    };\r\n\r\n    var callSubscribers = function (groupName, calleeArguments) {\r\n        _.each(groups[groupName].subscribers, function (subscriber) {\r\n            subscriber.callback.apply(null, calleeArguments);\r\n        });\r\n    };\r\n\r\n    var addSubscription = function (initialiseCallback) {\r\n        var deferred = when.defer();\r\n        if ($.connection) {\r\n            require([\r\n                'signalr.hubs'\r\n            ],\r\n                function () {\r\n                    if ($.connection.hub.state == $.connection.connectionState.connected) {\r\n                        initialiseCallback()\r\n                            .then(function () {\r\n                                deferred.resolve();\r\n                            })\r\n                    } else {\r\n                        $.connection.asyncHub.client.receiveResults = function (data) {\r\n                            callSubscribers(data.groupName, ['receiveResults', data.results]);\r\n                        };\r\n                        $.connection.asyncHub.client.deleteResult = function (data) {\r\n                            callSubscribers(data.groupName, ['deleteResult', data.id]);\r\n                        };\r\n                        $.connection.asyncHub.client.receiveEvent = function (data) {\r\n                            callSubscribers(data.groupName, ['receiveEvent', data.eventName, data.argument]);\r\n                        };\r\n                        $.connection.hub.disconnected(function () {\r\n                            var delay = getRandom(200, 2000);\r\n\r\n                            setTimeout(function () {\r\n                                $.connection.hub.start()\r\n                                    .then(function () {\r\n                                        _.each(_.keys(groups), function (groupName) {\r\n                                            _.each(groups[groupName].subscribers, function (subscriber) {\r\n                                                subscriber.register();\r\n                                            });\r\n                                        });\r\n                                    });\r\n                            }, delay);\r\n                        });\r\n                        $.connection.hub.logging = true;\r\n                        $.connection.hub.start()\r\n                            .then(function () {\r\n                                return initialiseCallback();\r\n                            })\r\n                            .then(function () {\r\n                                deferred.resolve();\r\n                            });\r\n                    }\r\n                });\r\n        } else {\r\n            connection = new signalR.HubConnectionBuilder()\r\n                .withUrl(\"/RuntimeHub\")\r\n                .build();\r\n\r\n            connection.on('ReceiveResults', function (data) {\r\n                var capitalizedResults = { // Have to capitalize the keys of the 'results' object unless it won't work\r\n                    outputs: data.results.outputs,\r\n                    results: data.results.results,\r\n                    totalResults: data.results.totalResults\r\n                };\r\n                callSubscribers(data.groupName, ['receiveResults', capitalizedResults]);\r\n            });\r\n\r\n            connection.on('DeleteResult', function (data) {\r\n                callSubscribers(data.groupName, ['deleteResult', data.id]);\r\n            });\r\n\r\n            connection.on('ReceiveEvent', function (data) {\r\n                callSubscribers(data.groupName, ['receiveEvent', data.eventName, data.argument]);\r\n            });\r\n\r\n            connection.connection.onclose(function () {\r\n                var delay = getRandom(200, 2000);\r\n\r\n                setTimeout(function () {\r\n                    connection.start().then(function () {\r\n                        _.each(_.keys(groups), function (groupName) {\r\n                            _.each(groups[groupName].subscribers, function (subscriber) {\r\n                                subscriber.register();\r\n                            });\r\n                        });\r\n                    });\r\n                }, delay);\r\n            });\r\n\r\n            var start = function () {\r\n                 connection.start().then(function () {\r\n                    try {\r\n                        connection.invoke(\"OnConnected\", lq.getTenantName() + '/' + lq.getTenantApplicationName())\r\n                            .then(function () {\r\n                               initialiseCallback().then(function () {\r\n                                    deferred.resolve();\r\n                                });\r\n                            });\r\n                    } catch (err) {\r\n                        console.error(err);\r\n                    }\r\n                 });\r\n            }\r\n            start();\r\n        }\r\n\r\n        return deferred.promise;\r\n    };\r\n\r\n    var addDatasourceSubscription = function (piping, receiverIdentifier, filter, callback) {\r\n        filter = piping.parameters.replace(filter);\r\n\r\n        var registerDatasourceSubscription = function () {\r\n            if ($.connection) {\r\n                return $.connection.asyncHub.server.addDatasourceListener(\r\n                    lq.getTenantName(),\r\n                    lq.getTenantApplicationName(),\r\n                    piping.actionId,\r\n                    receiverIdentifier,\r\n                    filter);\r\n            } else {\r\n                return connection.invoke(\"AddDatasourceListener\",\r\n                    lq.getTenantName(),\r\n                    lq.getTenantApplicationName(),\r\n                    piping.actionId,\r\n                    receiverIdentifier,\r\n                    filter);\r\n            }\r\n        };\r\n\r\n        return addSubscription(function () {\r\n            return createSubscription(registerDatasourceSubscription, piping.actionInstanceId, receiverIdentifier, callback);\r\n        });\r\n    };\r\n\r\n    var addEventSubscription = function (piping, receiverIdentifier, filter, callback) {\r\n        filter = piping.parameters.replace(filter);\r\n\r\n        var registerEventSubscription = function () {\r\n            if ($.connection) {\r\n                return $.connection.asyncHub.server.addEventListener(\r\n                    lq.getTenantName(),\r\n                    lq.getTenantApplicationName(),\r\n                    piping.actionId,\r\n                    receiverIdentifier,\r\n                    filter);\r\n            } else {\r\n                return connection.invoke(\"AddEventListener\",\r\n                    lq.getTenantName(),\r\n                    lq.getTenantApplicationName(),\r\n                    piping.actionId,\r\n                    receiverIdentifier,\r\n                    filter);\r\n            }\r\n        };\r\n\r\n        return addSubscription(function () {\r\n            return createSubscription(registerEventSubscription, piping.actionInstanceId, receiverIdentifier, callback);\r\n        });\r\n    };\r\n\r\n    var unsubscribe = function (groupNames) {\r\n        if ($.connection) {\r\n            return $.connection.asyncHub.server.unsubscribe(groupNames);\r\n        } else {\r\n            return connection.invoke(\"Unsubscribe\", groupNames);\r\n        }\r\n    };\r\n\r\n    var unsubscribeActionInstance = function (actionInstanceId) {\r\n        _.each(_.keys(groups), function (groupName) {\r\n            groups[groupName].subscribers = _.filter(groups[groupName].subscribers, function (subscriber) {\r\n                return subscriber.actionInstanceId !== actionInstanceId;\r\n            });\r\n        });\r\n\r\n        var toClose = _.filter(_.keys(groups), function (groupName) {\r\n            return groups[groupName].subscribers.length === 0;\r\n        });\r\n\r\n        if (toClose.length > 0) {   \r\n            unsubscribe(toClose)\r\n                .then(function () {\r\n                    _.each(toClose, function (groupName) {\r\n                        delete groups[groupName];\r\n                    });\r\n                });\r\n        }\r\n    };\r\n\r\n    return {\r\n\r\n        addDatasourceSubscription: addDatasourceSubscription,\r\n        addEventSubscription: addEventSubscription,\r\n        unsubscribeActionInstance: unsubscribeActionInstance\r\n\r\n    };\r\n});\n","define('lq/typesProvider',[\r\n    'underscore'\r\n], function (_) {\r\n    'use strict';\r\n\r\n    var TypesProvider = function(listOfTypes) {\r\n        this.types = _.reduce(\r\n            listOfTypes,\r\n            function (memo, type) {\r\n                var typeName = type.typeName;\r\n\r\n                if (!typeName) {\r\n                    var parentPrototype = Object.getPrototypeOf(type.prototype);\r\n                    typeName = parentPrototype.constructor.typeName;\r\n                }\r\n                \r\n                if (!typeName)\r\n                    throw new Error('Type does not have a name.');\r\n\r\n                if (memo[typeName])\r\n                    throw new Error('More than 1 type found with name ' + typeName + '.');\r\n\r\n                memo[typeName] = type;\r\n                return memo;\r\n            },\r\n            {});\r\n    };\r\n\r\n    TypesProvider.prototype.get = function(typeName) {\r\n        var type = this.types[typeName];\r\n\r\n        if (!type)\r\n            throw new Error('Type ' + typeName + ' was not found.');\r\n\r\n        return type;\r\n    };\r\n\r\n    return TypesProvider;\r\n});\n","define('lq/services/action/pasteCommand',[\r\n    'jquery',\r\n    'underscore'\r\n], function ($, _) {\r\n    'use strict';\r\n\r\n    var filePastedEvent = 'filePasted';\r\n    var textPastedEvent = 'textPasted';\r\n\r\n    function PasteCommand(data, rootDrop) {\r\n        this.data = data;\r\n        this.rootDrop = rootDrop;\r\n        this.onPaste = this.handlePaste.bind(this);\r\n    };\r\n\r\n    PasteCommand.typeName = 'PasteCommand';\r\n\r\n    PasteCommand.prototype.initialize = function () {\r\n        if (!this.shouldListenForPaste()) return;\r\n        this.addEventHandlers();\r\n    };\r\n\r\n    PasteCommand.prototype.shouldListenForPaste = function () {\r\n        return this.shouldListenFor(filePastedEvent) || this.shouldListenFor(textPastedEvent);\r\n    };\r\n\r\n    PasteCommand.prototype.shouldListenFor = function (eventName) {\r\n        return this.data.eventing\r\n            && this.data.eventing[eventName]\r\n            && this.data.eventing[eventName].enabled;\r\n    };\r\n\r\n    PasteCommand.prototype.addEventHandlers = function () {\r\n        document.addEventListener('paste', this.onPaste);\r\n    };\r\n\r\n    PasteCommand.prototype.handlePaste = function (event) {\r\n        if (!this.rootDrop.piping) return;\r\n\r\n        var items = (event.clipboardData || event.originalEvent.clipboardData).items;\r\n\r\n        var image = _.find(items, function (item) { return item.kind === 'file'; });\r\n\r\n        if (image) {\r\n            if (this.shouldListenFor(filePastedEvent))\r\n                this.rootDrop.piping.eventing.publish(this.data.eventing[filePastedEvent].raisedEventName, null, image.getAsFile(), null, self.eventActionId);\r\n        } else if (this.shouldListenFor(textPastedEvent)) {\r\n            var text = _.find(items, function (item) { return item.kind === 'string'; });\r\n\r\n            if (text) {\r\n                var self = this;\r\n                text.getAsString(function (textData) {\r\n                    self.rootDrop.piping.eventing.publish(self.data.eventing[textPastedEvent].raisedEventName, null, textData, null, self.eventActionId);\r\n                });\r\n            }\r\n        }\r\n    };\r\n\r\n    PasteCommand.prototype.dispose = function () {\r\n        document.removeEventListener('paste', this.onPaste);\r\n        this.rootDrop = undefined;\r\n    };\r\n\r\n    return PasteCommand;\r\n});\n","define('lq/services/action/addToHomeScreenCommand',[\r\n    'lq/responsive'\r\n], function (responsive) {\r\n    'use strict';\r\n\r\n    function AddToHomeScreenCommand(data, rootDrop) {\r\n        this.data = data;\r\n        this.rootDrop = rootDrop;\r\n    };\r\n\r\n    AddToHomeScreenCommand.typeName = 'AddToHomeScreenCommand';\r\n\r\n    AddToHomeScreenCommand.deferredPrompt = null;\r\n\r\n    AddToHomeScreenCommand.prototype.initialize = function () {\r\n        if (!responsive.isPWA()) {\r\n            // Running in Browser\r\n            AddToHomeScreenCommand.deferredPrompt = this.rootDrop.piping.deferredPrompt;\r\n        } else {\r\n            // Running as PWA\r\n            var self = this;\r\n            var eventName = 'alreadyAdded';\r\n            setTimeout(function () {\r\n                if (self.rootDrop.piping.eventing && self.data.eventing[eventName] && self.data.eventing[eventName].enabled) {\r\n                    self.rootDrop.piping.eventing.publish(self.data.eventing[eventName].raisedEventName, null, null, null, self.eventActionId);\r\n                }\r\n            });\r\n        }\r\n    };\r\n\r\n    AddToHomeScreenCommand.prototype.dispose = function () {\r\n        this.rootDrop = undefined;\r\n    };\r\n\r\n    return AddToHomeScreenCommand;\r\n});\r\n\n","define('lq/services/action/actionServiceFactory',[\r\n    'lq/typesProvider',\r\n\r\n    './pasteCommand',\r\n    './addToHomeScreenCommand'\r\n], function (TypesProvider) {\r\n    'use strict';\r\n\r\n    var servicesTypes = Array.prototype.slice.call(arguments, 1);\r\n    var typesProvider = new TypesProvider(servicesTypes);\r\n\r\n    var createService = function(service, rootDrop) {\r\n        var ServiceType = typesProvider.get(service.serviceType);\r\n        var instance = new ServiceType(service.data, rootDrop);\r\n        return instance;\r\n    };\r\n\r\n    return {\r\n        createService: createService\r\n    };\r\n});\n","define('lq/style',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq',\r\n    'lq/util'\r\n], function ($, _, lq, util) {\r\n    'use strict';\r\n\r\n    var defaultSupportedFontFamilies = [\r\n        'Arial,Arial,Helvetica,sans-serif',\r\n        'Arial Black,Arial Black,Gadget,sans-serif',\r\n        'Comic Sans MS,Comic Sans MS,cursive',\r\n        'Courier New,Courier New,Courier,monospace',\r\n        'Georgia,Georgia,serif',\r\n        'Impact,Charcoal,sans-serif',\r\n        'Lucida Console,Monaco,monospace',\r\n        'Lucida Sans Unicode,Lucida Grande,sans-serif',\r\n        'Palatino Linotype,Book Antiqua,Palatino,serif',\r\n        'Tahoma,Geneva,sans-serif',\r\n        'Times New Roman,Times,serif',\r\n        'Trebuchet MS,Helvetica,sans-serif',\r\n        'Verdana,Geneva,sans-serif',\r\n        'Gill Sans MT,Gill Sans,Geneva,sans-serif',\r\n\r\n        // TheSans\r\n        'TheSans Light Plain, sans-serif',\r\n        'TheSans Light Italic, sans-serif',\r\n        'TheSans Plain, sans-serif',\r\n        'TheSans Italic, sans-serif',\r\n        'TheSans Bold Plain, sans-serif',\r\n        'TheSans Bold Italic, sans-serif',\r\n\r\n        //// from fontdeck, trial license (20 IP addresses)\r\n        //'FS Rufus Web Light, Rockwell, Verdana, sans-serif',\r\n        //'FS Rufus Web Light Italic, Rockwell, Verdana, sans-serif',\r\n        //'FS Rufus Web Regular, Rockwell, Verdana, sans-serif',\r\n        //'FS Rufus Web Italic, Rockwell, Verdana, sans-serif',\r\n        //'FS Rufus Web Bold, Rockwell, Verdana, sans-serif',\r\n        //'FS Rufus Web Bold Italic, Rockwell, Verdana, sans-serif',\r\n\r\n        // these fonts are temporarily hard coded\r\n        'Abril Fatface, cursive',\r\n        'Asap Bold, sans-serif',\r\n        'Asap Regular, sans-serif',\r\n        'Audi Type Extended Bold',\r\n        'Audi Type Extended Normal',\r\n        'Audi Type Screen Bold',\r\n        'Audi Type Screen Normal',\r\n        'Audi Type Screen Light',\r\n        'Autour One, cursive',\r\n        'Avenir Black, sans-serif',\r\n        'Avenir Book, sans-serif',\r\n        'Avenir Heavy, sans-serif',\r\n        'Avenir Light, sans-serif',\r\n        'Avenir Medium, sans-serif',\r\n        'Avenir Roman, sans-serif',\r\n        'Average Sans, sans-serif',\r\n        'Bad Script, cursive',\r\n        'Bellerose, sans-serif',\r\n        'BNPP Sans, sans-serif',\r\n        'BNPP Sans Light, sans-serif',\r\n        'BNPP Sans Condensed, sans-serif',\r\n        'BNPP Rounded, sans-serif',\r\n        'Cabin, sans-serif',\r\n        'Cabin Bold, sans-serif',\r\n        'Cabin Bold Italic, sans-serif',\r\n        'Cabin Italic, sans-serif',\r\n        'Cabin Medium, sans-serif',\r\n        'Cabin Medium Italic, sans-serif',\r\n        'Cabin Regular, sans-serif',\r\n        'Cabin SemiBold, sans-serif',\r\n        'Cabin SemiBold Italic, sans-serif',\r\n        'Cambo, serif',\r\n        'CantoraOne, sans-serif',\r\n        'Carrois Gothic SC, sans-serif',\r\n        'Chela One, cursive',\r\n        'Chewy, cursive',\r\n        'Combo, cursive',\r\n        'Days One, sans-serif',\r\n        'Didact Gothic, sans-serif',\r\n        'Droid Sans Normal, sans-serif',\r\n        'Droid Sans Bold, sans-serif',\r\n        'Fascinate, cursive',\r\n        'Faster One, cursive',\r\n        '\"HelveticaNeueLT Std Extended\", sans-serif',\r\n        '\"HelveticaNeueLT Std Ext\", sans-serif',\r\n        '\"HelveticaNeueLT Std Lt Ext\", sans-serif',\r\n        'Hind Bold, sans-serif',\r\n        'Hind Light, sans-serif',\r\n        'Hind Regular, sans-serif',\r\n        'Hind Semibold, sans-serif',\r\n        'FontAwesome, cursive',\r\n        'Gravity Bold, sans-serif',\r\n        'Gravity Light, sans-serif',\r\n        'Iceland, cursive',\r\n        'Kavoon, cursive',\r\n        'Market Deco, sans-serif',\r\n        'Meie Script, cursive',\r\n        'Merriweather Sans, sans-serif',\r\n        'Microsoft YaHei, sans-serif',\r\n        'Noto Serif CJK SC Black, serif',\r\n        'Noto Serif CJK SC Bold, serif',\r\n        'Noto Serif CJK SC Extra Light, serif',\r\n        'Noto Serif CJK SC Light, serif',\r\n        'Noto Serif CJK SC Medium, serif',\r\n        'Noto Serif CJK SC Regular, serif',\r\n        'Noto Serif CJK SC Semi Bold, serif',\r\n        'Noto Sans CJK SC Regular, sans-serif',\r\n        'Noto Sans CJK SC Black, sans-serif',\r\n        'Noto Sans CJK SC Bold, sans-serif',\r\n        'Noto Sans CJK SC Demi Light, sans-serif',\r\n        'Noto Sans CJK SC Light, sans-serif',\r\n        'Noto Sans CJK SC Medium, sans-serif',\r\n        'Noto Sans CJK SC Thin, sans-serif',\r\n        'Nunito, sans-serif',\r\n        'Oleo Script Swash Caps, cursive',\r\n        'Open Sans, sans-serif',\r\n        'Open Sans Condensed, sans-serif',\r\n        'Patrick Hand SC, cursive',\r\n        'Paulistana Deco, sans-serif',\r\n        'PT Sans Bold, sans-serif',\r\n        'PT Sans Bold Italic, sans-serif',\r\n        'PT Sans Italic, sans-serif',\r\n        'PT Sans Regular, sans-serif',\r\n        'Quando, serif',\r\n        'Quicksand, sans-serif',\r\n        'Raleway Black, sans-serif',\r\n        'Raleway Black Italic, sans-serif',\r\n        'Raleway Bold, sans-serif',\r\n        'Raleway Bold Italic, sans-serif',\r\n        'Raleway Extra Bold, sans-serif',\r\n        'Raleway Extra Bold Italic, sans-serif',\r\n        'Raleway Extra Light, sans-serif',\r\n        'Raleway Extra Light Italic, sans-serif',\r\n        'Raleway Italic, sans-serif',\r\n        'Raleway Light, sans-serif',\r\n        'Raleway Light Italic, sans-serif',\r\n        'Raleway Medium, sans-serif',\r\n        'Raleway Medium Italic, sans-serif',\r\n        'Raleway Regular, sans-serif',\r\n        'Raleway Semi Bold, sans-serif',\r\n        'Raleway Semi Bold Italic, sans-serif',\r\n        'Raleway Thin, sans-serif',\r\n        'Raleway Thin Italic, sans-serif',\r\n        'Roboto, sans-serif',\r\n        'Roboto Bold, sans-serif',\r\n        'Roboto Bold Italic, sans-serif',\r\n        'Roboto Italic, sans-serif',\r\n        'Roboto Regular, sans-serif',\r\n        'Roboto Slab, serif',\r\n        'Shojumaru, cursive',\r\n        'Sofadi One, cursive',\r\n        'Strong Glasgow, sans-serif',\r\n        'Swanky and Moo Moo, cursive',\r\n        '\"Swiss 721 Extended Bold\", sans-serif',\r\n        '\"Swiss 721 Extended Light\", sans-serif',\r\n        '\"Swiss 721 Extended Roman\", sans-serif',\r\n        'Titillium Web, sans-serif',\r\n        'Unkempt, cursive',\r\n        'Lato, sans-serif',\r\n        'Lato Black',\r\n        'Lato BlackItalic',\r\n        'Lato Bold',\r\n        'Lato BoldItalic',\r\n        'Lato Italic',\r\n        'Lato Light',\r\n        'Lato LightItalic',\r\n        'Lato Regular',\r\n        'Lato Thin',\r\n        'Lato ThinItalic'\r\n    ];\r\n\r\n    var supportedTextAligns = [\r\n        'left',\r\n        'center',\r\n        'right'\r\n    ];\r\n\r\n    var supportedFontWeights = [\r\n        'normal',\r\n        'bold',\r\n        'bolder',\r\n        'lighter',\r\n        'inherit'\r\n    ];\r\n\r\n    var supportedTextTransforms = [\r\n        'none',\r\n        'capitalize',\r\n        'uppercase',\r\n        'lowercase'\r\n    ];\r\n\r\n    var supportedHorizontalPositions = [\r\n        'left',\r\n        'center',\r\n        'right'\r\n    ];\r\n\r\n    var supportedVerticalPositions = [\r\n        'top',\r\n        'center',\r\n        'bottom'\r\n    ];\r\n\r\n    var defaults = {\r\n\r\n        enabled: false,\r\n\r\n        border: {\r\n            top: false,\r\n            right: false,\r\n            bottom: false,\r\n            left: false,\r\n            style: 'solid',\r\n            color: 'rgba(0, 0, 0, 1)',\r\n            width: 1\r\n        },\r\n\r\n        font: {\r\n            size: 14,\r\n            fontFamily: defaultSupportedFontFamilies[0],\r\n            color: 'rgba(0, 0, 0, 1)',\r\n            inheritColor: false,\r\n            weight: supportedFontWeights[0],\r\n            italic: false,\r\n            underline: false\r\n        },\r\n\r\n        text: {\r\n            align: supportedTextAligns[0],\r\n            verticalAlign: 'top',\r\n            lineHeight: '',\r\n            textTransform: supportedTextTransforms[0]\r\n        },\r\n\r\n        background: {\r\n            enabled: false,\r\n            color: 'rgba(255, 255, 255, 1)'\r\n        },\r\n\r\n        padding: {\r\n            left: 0,\r\n            right: 0,\r\n            top: 0,\r\n            bottom: 0\r\n        },\r\n\r\n        boxShadow: {\r\n            enabled: false,\r\n            x: 4,\r\n            y: 4,\r\n            blur: 5,\r\n            spread: 0,\r\n            color: 'rgba(0, 0, 0, 1)'\r\n        },\r\n\r\n        textShadow: {\r\n            enabled: false,\r\n            x: 4,\r\n            y: 4,\r\n            blur: 5,\r\n            color: 'rgba(0, 0, 0, 1)'\r\n        },\r\n\r\n        textStroke: {\r\n            enabled: false,\r\n            color: 'rgba(0, 0, 0, 1)',\r\n            size: 0\r\n        },\r\n\r\n        opacity: 100,\r\n\r\n        roundedCorners: {\r\n            enabled: false,\r\n            leftTopRadius: 0,\r\n            rightTopRadius: 0,\r\n            rightBottomRadius: 0,\r\n            leftBottomRadius: 0\r\n        },\r\n\r\n        backgroundImage: {\r\n             leftMargin: 0,\r\n             rightMargin: 0\r\n        },\r\n\r\n        heading: {\r\n            enabled: false,\r\n            level: 1,\r\n            numberingStyle: 'numeric'\r\n        },\r\n\r\n\t\trotate: 0,\r\n\r\n        runtime: false\r\n    };\r\n\r\n    var hasTransform = _.has(document.createElement('div').style, 'transform');\r\n    var radianConversionFactor = Math.PI / 180.0;\r\n    var rotateFilterTemplate = _.template(\"progid:DXImageTransform.Microsoft.Matrix(\" +\r\n\t\t\"M11=<%= data.cos %>, M12=<%= data.sin %>, M21=<%= -data.sin %>, M22=<%= data.cos %>, SizingMethod='auto expand')\",\r\n\t\tundefined, { variable: 'data' });\r\n\r\n    var Style = function () {\r\n    };\r\n\r\n    Style.prototype.defaultStyles = [];\r\n    Style.prototype.defaultMockStyles = [];\r\n    Style.prototype.mockMode = lq.isInMockMode();\r\n\r\n    var customStyleStates = ['dragTarget', 'dragHover', 'selected', 'active', 'normal'];\r\n\r\n    Style.prototype.renderStyles = function (drop, classPrefix, $actualElement, actualStyle, customState, customHoverStyle, $requiredIndicatorElement) {\r\n        if (!$actualElement)\r\n            $actualElement = drop.$element;\r\n        if (!actualStyle)\r\n            actualStyle = drop.data.styles;\r\n        if (!$requiredIndicatorElement)\r\n            $requiredIndicatorElement = drop.$element;\r\n\r\n    \tvar prefix = classPrefix || 'userstyle-';\r\n\r\n    \tif (!actualStyle || ((drop.rootDrop && drop.rootDrop.isMockAction) && this.mockMode)) {\r\n    \t    var styleId = this.getDefaultStyleIdByDropType(drop);\r\n    \t\tif (styleId)\r\n    \t\t\t$actualElement.addClass(this.getClassNameFromStyleId(prefix, styleId));\r\n    \t} else if (typeof actualStyle === 'string') {\r\n\t        var classNameFromStyleId = this.getClassNameFromStyleId(prefix, actualStyle);\r\n\r\n\t        $actualElement.addClass(classNameFromStyleId);\r\n\t        $actualElement.removeClass(customStyleStates.join(' '));\r\n\r\n    \t    if (customState)\r\n    \t        $actualElement.addClass(customState);\r\n\r\n            // styling the required indicator -> should always be applied to drop.$element\r\n    \t    $requiredIndicatorElement.addClass(classNameFromStyleId + '-required-indicator');\r\n       \t} else {\r\n    \t    this.renderCustomStyle(drop, $actualElement, actualStyle, customState, customHoverStyle);\r\n    \t}\r\n    };\r\n\r\n    Style.prototype.renderSavedStyles = function (drop, classPrefix, $actualElement, actualStyle, customState) {\r\n        if (!actualStyle)\r\n            actualStyle = drop.data.styles;\r\n\r\n        if (!$actualElement)\r\n            $actualElement = drop.$element;\r\n\r\n        if (typeof actualStyle !== 'string') {\r\n            $actualElement.removeClass(function (i, className) {\r\n                return (className.match(/(^|\\s)userstyle-\\S+/g) || []).join(' ');\r\n            });\r\n\r\n            return;\r\n        }\r\n\r\n        var prefix = classPrefix || 'userstyle-';\r\n\r\n        var classNameFromStyleId = this.getClassNameFromStyleId(prefix, actualStyle);\r\n\r\n        $actualElement.addClass(classNameFromStyleId);\r\n        $actualElement.removeClass(customStyleStates.join(' '));\r\n\r\n        if (customState)\r\n            $actualElement.addClass(customState);\r\n\r\n        // styling the required indicator -> should always be applied to drop.$element\r\n        drop.$element.addClass(classNameFromStyleId + '-required-indicator');\r\n    };\r\n\r\n    Style.prototype.getDefaultStyleIdByDropType = function (drop, ignoreMock) {\r\n        return this.getDefaultStyleIdForComponentByDropType(drop, '', ignoreMock);\r\n    };\r\n\r\n    Style.prototype.getDefaultStyleIdForComponentByDropType = function (drop, componentName, ignoreMock) {\r\n        var uncapitalizedComponentName =\r\n            drop.data.type\r\n                .substring(0, 1)\r\n                .toLowerCase()\r\n            + drop.data.type.substring(1)\r\n            + componentName;\r\n\r\n        var key = !!drop.data.role ? uncapitalizedComponentName + '_' + drop.data.role : uncapitalizedComponentName;\r\n        if (((drop.rootDrop && drop.rootDrop.isMockAction)) && !ignoreMock && this.mockMode)\r\n            return this.defaultMockStyles[key] || this.defaultMockStyles[uncapitalizedComponentName];\r\n        else return this.defaultStyles[key] || this.defaultStyles[uncapitalizedComponentName];\r\n    };\r\n\r\n    Style.prototype.renderStyle = function (style, drop, $actualElement) {\r\n    \tif (!$actualElement)\r\n    \t    $actualElement = drop.$element;\r\n    \tthis.renderCss(style, drop, $actualElement);\r\n    };\r\n\r\n    Style.prototype.getClassNameFromStyleId = function (prefix, styleId) {\r\n        var id = styleId;\r\n        if (styleId.indexOf('/') > -1)\r\n            id = styleId.split('/')[1];\r\n        return prefix + id;\r\n    };\r\n\r\n    Style.prototype.renderCustomStyle = function (drop, $actualElement, actualStyle, customState, customHoverState) {\r\n    \tif (actualStyle instanceof Array)\r\n    \t\tvar style = util.convertListOfKeyValuesToObject(actualStyle);\r\n    \telse\r\n    \t    var style = actualStyle;\r\n\r\n    \tvar styleState = style[customState || 'normal'];\r\n    \tif (styleState && styleState.enabled)\r\n    \t    this.renderCss(styleState, drop, $actualElement);\r\n\r\n        if (customState){\r\n            $actualElement.removeClass(customStyleStates.join(' '));\r\n            $actualElement.addClass(customState);\r\n        }\r\n\r\n    \t$actualElement.off(\".licquid-style-hover\");\r\n\r\n    \tvar self = this;\r\n    \tvar hoverStyle = style[customHoverState || 'hover'];\r\n    \tif (hoverStyle && hoverStyle.enabled) {\r\n    \t\t$actualElement\r\n                .on(\"mouseenter.licquid-style-hover\", function () {\r\n                    self.renderCss(hoverStyle, drop, $(this));\r\n                })\r\n                .on(\"mouseleave.licquid-style-hover\", function () {\r\n                    if (customState === 'selected' && style.selected && style.selected.enabled)\r\n                        self.renderCss(style.selected, drop, $(this));\r\n                    else\r\n                        self.renderCss(styleState, drop, $(this));\r\n                });\r\n    \t}\r\n    };\r\n\r\n    Style.prototype.removeStyleClass = function (drop, classPrefix, $actualElement) {\r\n    \tif (typeof drop.data.styles != 'string')\r\n    \t    return;\r\n\r\n        if (!$actualElement)\r\n            $actualElement = drop.$element;\r\n\r\n        var prefix = classPrefix || 'userstyle-';\r\n        var className = this.getClassNameFromStyleId(prefix, drop.data.styles);\r\n        $actualElement.removeClass(className);\r\n    };\r\n\r\n    Style.prototype.renderCss = function (style, drop, $actualElement) {\r\n        style = $.extend(true, {}, defaults, drop.defaultStyleSettings, style);\r\n\r\n    \tStyle.prototype.resetCss(drop, $actualElement);\r\n    \t$actualElement\r\n            .css({\r\n                borderStyle: style.border.style,\r\n                borderColor: style.border.color,\r\n                borderTopWidth: style.border.top ? style.border.width + \"px\" : 0,\r\n                borderBottomWidth: style.border.bottom ? style.border.width + \"px\" : 0,\r\n                borderRightWidth: style.border.right ? style.border.width + \"px\" : 0,\r\n                borderLeftWidth: style.border.left ? style.border.width + \"px\" : 0,\r\n\r\n                fontSize: style.font.size + \"px\",\r\n                fontFamily: style.font.fontFamily,\r\n                fontWeight: style.font.weight,\r\n                color: style.font.inheritColor ? 'inherit' : style.font.color,\r\n                fontStyle: style.font.italic ? 'italic' : '',\r\n                textDecoration: style.font.underline ? 'underline' : '',\r\n\r\n                textAlign: style.text.align,\r\n                textTransform: style.text.transform,\r\n                lineHeight: style.text.lineHeight ? style.text.lineHeight + \"px\" : \"normal\",\r\n\r\n                background: style.background.enabled ? style.background.color : \"transparent\",\r\n\r\n                outline: '',\r\n\r\n                paddingLeft: style.padding.left + \"px\",\r\n                paddingRight: style.padding.right + \"px\",\r\n                paddingTop: style.padding.top + \"px\",\r\n                paddingBottom: style.padding.bottom + \"px\",\r\n\r\n                boxShadow: style.boxShadow.enabled ? style.boxShadow.x + \"px \" + style.boxShadow.y + \"px \" + style.boxShadow.blur + \"px \" + style.boxShadow.spread + \"px \" + style.boxShadow.color : null,\r\n                textShadow:\r\n                (style.textShadow.enabled ?\r\n                    style.textShadow.x + \"px \" + style.textShadow.y + \"px \" + style.textShadow.blur + \"px \" + style.textShadow.color : \"\")\r\n                    + (style.textStroke.enabled ? (style.textShadow.enabled ? \", \" : \"\") +\r\n                        style.textStroke.color + \" \" + style.textStroke.size + \"px \" + style.textStroke.size + \"px, \" +\r\n                        style.textStroke.color + \" \" + (-style.textStroke.size) + \"px \" + (-style.textStroke.size) + \"px, \" +\r\n                        style.textStroke.color + \" \" + (-style.textStroke.size) + \"px \" + style.textStroke.size + \"px, \" +\r\n                        style.textStroke.color + \" \" + style.textStroke.size + \"px \" + (-style.textStroke.size) + \"px \"\r\n                        : \"\"),\r\n\r\n                transform: style.rotate ? 'rotate(' + style.rotate + 'deg)' : '',\r\n\r\n                borderTopLeftRadius: style.roundedCorners.enabled ? style.roundedCorners.leftTopRadius + \"px\" : null,\r\n                borderTopRightRadius: style.roundedCorners.enabled ? style.roundedCorners.rightTopRadius + \"px\" : null,\r\n                borderBottomLeftRadius: style.roundedCorners.enabled ? style.roundedCorners.leftBottomRadius + \"px\" : null,\r\n                borderBottomRightRadius: style.roundedCorners.enabled ? style.roundedCorners.rightBottomRadius + \"px\" : null\r\n            });\r\n\r\n        var $content = this.getDropTextContent($actualElement);\r\n        if ($content.css(\"flex-direction\") === \"column\") {\r\n            $content.css({\r\n                justifyContent: this.convertAlignmentValue(style.text.verticalAlign), // vertical (main axis)\r\n                alignItems: this.convertAlignmentValue(style.text.align) // horizontal (cross axis)\r\n            });\r\n        } else {\r\n            $content.css({\r\n                justifyContent: this.convertAlignmentValue(style.text.align), // horizontal (main axis)\r\n                alignItems: this.convertAlignmentValue(style.text.verticalAlign) // vertical (cross axis)\r\n            });\r\n        }\r\n\r\n        // only for IE < 11\r\n        // document.documentMode will return true\r\n        // window.MSInputMethodContext will only return true on IE11\r\n        if (style.rotate && !window.MSInputMethodContext && document.documentMode && !hasTransform) {\r\n    \t    var rotateRadians = style.rotate * radianConversionFactor;\r\n    \t    $actualElement.css({\r\n\t\t\t\t'-ms-transform': '', // seems to have issues, so even though ie9 has it, we remove what jquery adds\r\n    \t    \tfilter: rotateFilterTemplate({ sin: Math.sin(rotateRadians), cos: Math.cos(rotateRadians) })\r\n    \t    });\r\n    \t}\r\n\r\n    \t// IE 8 messes up png files with transparency when we set the opacity, so only apply this style when really necessary\r\n    \tif (style.opacity !== 100) {\r\n    \t    $actualElement\r\n                .css({\r\n                    opacity: (style.opacity || 100) / 100\r\n                });\r\n    \t}\r\n    };\r\n\r\n    Style.prototype.getDropTextContent = function ($actualElement) {\r\n        // can be anywhere in the ancestor tree\r\n        if ($actualElement.hasClass('drop-text-container'))\r\n            return $actualElement.find('.drop-text-content');\r\n\r\n        // can only be a direct descendant (needed for drops that contain child drops with their own styling)\r\n        return $actualElement\r\n            .children()\r\n            .addBack()\r\n            .filter('.drop-text-content');\r\n    };\r\n\r\n    Style.prototype.convertAlignmentValue = function (value) {\r\n        switch(value) {\r\n            case 'top':\r\n            case 'left':\r\n                return 'start';\r\n            case 'middle':\r\n            case 'center':\r\n                return 'center';\r\n            case 'bottom':\r\n            case 'right':\r\n                return 'end';\r\n            default:\r\n                return value;\r\n        }\r\n    }\r\n\r\n    Style.prototype.resetCss = function (drop, $actualElement) {\r\n    \t$actualElement\r\n            .css({\r\n                borderStyle: '',\r\n                borderColor: '',\r\n                borderTopWidth: '',\r\n                borderBottomWidth: '',\r\n                borderRightWidth: '',\r\n                borderLeftWidth: '',\r\n\r\n                fontSize: '',\r\n                fontFamily: '',\r\n                fontWeight: '',\r\n                color: '',\r\n                fontStyle: '',\r\n                textDecoration: '',\r\n\r\n                textAlign: '',\r\n                textTransform: '',\r\n                lineHeight: '',\r\n\r\n                background: '',\r\n\r\n                paddingLeft: '',\r\n                paddingRight: '',\r\n                paddingTop: '',\r\n                paddingBottom: '',\r\n\r\n                boxShadow: '',\r\n                textShadow: '',\r\n\r\n                opacity: '',\r\n\r\n                transform: '',\r\n                filter: '',\r\n\r\n                borderTopLeftRadius: '',\r\n                borderTopRightRadius: '',\r\n                borderBottomLeftRadius: '',\r\n                borderBottomRightRadius: ''\r\n            });\r\n\r\n        $actualElement\r\n            .children('.drop-text-content')\r\n            .css({\r\n    \t        verticalAlign: ''\r\n    \t    });\r\n    };\r\n\r\n    Style.prototype.supportedFontFamilies = defaultSupportedFontFamilies;\r\n\r\n    Style.prototype.getSupportedFontFamilies = function () {\r\n        return _.sortBy(this.supportedFontFamilies, function (fontName) { return fontName.replace('\"', ''); })\r\n            .slice(0); // copy\r\n    };\r\n\r\n    Style.prototype.getSupportedTextTransforms = function () {\r\n        return supportedTextTransforms.slice(0);\r\n    };\r\n\r\n    Style.prototype.getSupportedTextAligns = function () {\r\n    \treturn supportedTextAligns.slice(0);\r\n    };\r\n\r\n    Style.prototype.getSupportedFontWeights = function () {\r\n    \treturn supportedFontWeights.slice(0);\r\n    };\r\n\r\n    Style.prototype.getSupportedHorizontalPositions = function () {\r\n        return supportedHorizontalPositions.slice(0);\r\n    };\r\n\r\n    Style.prototype.getSupportedVerticalPositions = function () {\r\n        return supportedVerticalPositions.slice(0);\r\n    };\r\n\r\n    Style.prototype.getDefaults = function () {\r\n    \treturn $.extend(true, {}, defaults);\r\n    };\r\n\r\n    Style.prototype.bestFontSize = function (container, text) {\r\n        var successSize = 0;\r\n        var failingSize = 500;\r\n        text.css('line-height', 'normal');\r\n        while (successSize < (failingSize - 1)) {\r\n\r\n            var newFontSize = Math.floor((successSize + failingSize) / 2);\r\n            text.css('font-size', newFontSize);\r\n\r\n            if (container.offsetHeight < container.scrollHeight\r\n             || container.offsetWidth < container.scrollWidth) {\r\n                failingSize = newFontSize;\r\n            } else {\r\n                successSize = newFontSize;\r\n            }\r\n        }\r\n        text.css('font-size', successSize);\r\n    };\r\n\r\n    return new Style();\r\n});\n","define('drops/action/action',[\r\n\t'jquery',\r\n\t'underscore',\r\n    'lq/drop',\r\n    'lq/responsive',\r\n    'lq/asyncSubcriptions',\r\n    'lq/services/action/actionServiceFactory',\r\n    'lq/style'\r\n], function (\r\n    $,\r\n\t_,\r\n    Drop,\r\n    responsive,\r\n    asyncSubcriptions,\r\n    actionServiceFactory,\r\n    Style\r\n) {\r\n    'use strict';\r\n\r\n    var defaults ={\r\n        data: {\r\n            type: 'Action',\r\n            masterPageId: null,\r\n            contentRegionActionId: null,\r\n            embeddable: false,\r\n            appliedLayouts: []\r\n        }\r\n    };\r\n\r\n    var keyDownHandler = function (e) {\r\n        // might need some tweaking\r\n        if (e.which === 8 && !$(e.target).is(\"input, textarea, div[contenteditable=true]\"))\r\n            e.preventDefault();\r\n    };\r\n\r\n    var instanceCounter = 0;\r\n    \r\n    function Action(model, options) {\r\n        Drop.call(this, $('<div class=\"licquid-drops-pool\" style=\"overflow:hidden;\"></div>'), defaults, model);\r\n\r\n        this.instanceId = Action.nextInstanceId();\r\n\r\n        // todo add a real fix for this\r\n        // backwards compatibility -> &nbsp; is needed for the positioning of RadioButtonGroup, but\r\n        // we can't add it when the action is positioned relative\r\n        if (!this.data.makeItGrow)\r\n            this.$element.html('&nbsp;');\r\n\r\n        this.insideAnIFrame = window.top.location !== window.location;\r\n        this.options = options;\r\n\r\n        this.rootDrop = this;\r\n\r\n    \tif (this.data.useScroll)\r\n    \t    this.$element.css('overflow', 'visible');\r\n\r\n        this.$masterPage = $('<div class=\"licquid-drops-pool-master-page\" />');\r\n        this.$pageAnchored = $('<div class=\"licquid-drops-pool-page-anchored\" />');\r\n\r\n        if (this.options.disableBackspaceNavigation)\r\n            this.subscribeEventHandler($(document), 'keydown', keyDownHandler);\r\n\r\n        this.addSwipeEvents();\r\n    };\r\n\r\n    Drop.extend(Action, Drop);\r\n\r\n    Action.nextInstanceId = function() {\r\n        return instanceCounter++;\r\n    };\r\n\r\n    // Variables to track starting and current touch positions\r\n    var xStart = null;\r\n    var yStart = null;\r\n    var xCurrent = null;\r\n    var yCurrent = null;\r\n\r\n    // Add swipe events to action -  swipe left, swipe right, pull down\r\n\r\n    Action.prototype.addSwipeEvents = function () {\r\n        if (this.isEventEnabled('swipeLeft') || this.isEventEnabled('swipeRight')) {\r\n            document.addEventListener('touchstart', this.handleTouchStart.bind(this), false);\r\n            document.addEventListener('touchmove', this.handleTouchMove.bind(this), false);\r\n        }\r\n    };\r\n\r\n    // Get touches\r\n    Action.prototype.getTouches = function (evt) {\r\n        return evt.touches ||             // browser API\r\n            evt.originalEvent.touches; // jQuery\r\n    };\r\n\r\n    // Get the touch's starting position\r\n    Action.prototype.handleTouchStart = function (evt) {\r\n        var touchStart = this.getTouches(evt)[0];\r\n\r\n        xStart = touchStart.clientX;\r\n        yStart = touchStart.clientY;\r\n    };\r\n\r\n    Action.prototype.handleTouchMove = function (evt) {\r\n        if (!xStart || !yStart || !this.piping) {\r\n            return;\r\n        }\r\n\r\n        var touchCurrent = this.getTouches(evt)[0];\r\n\r\n        xCurrent = touchCurrent.clientX;\r\n        yCurrent = touchCurrent.clientY;\r\n\r\n        var xDiff = xStart - xCurrent;\r\n        var yDiff = yStart - yCurrent;\r\n\r\n        var thresholdOfLeftSwipeBack = 20;\r\n\r\n        if (Math.abs(xDiff) > Math.abs(yDiff) && xStart > thresholdOfLeftSwipeBack) {/*most significant*/\r\n            if (xDiff > 0) {\r\n                /* left swipe */\r\n                this.triggerEventIfEnabled('swipeLeft');\r\n            } else {\r\n                /* right swipe */\r\n                this.triggerEventIfEnabled('swipeRight');\r\n            }\r\n        }\r\n    };\r\n\r\n    Action.prototype.scrollEventHandler = function () {\r\n        if (this.data.verScrollGt) {\r\n            if (!this.verScrollLimitGt) {\r\n                if (this.data.verScrollGt < this.piping.$actionWrapper[0].scrollTop) {\r\n                    this.triggerEventIfEnabled('verticalScrollGreaterThan');\r\n                    this.verScrollLimitGt = true;\r\n                }\r\n            } else if (this.data.verScrollGt >= this.piping.$actionWrapper[0].scrollTop) {\r\n                this.verScrollLimitGt = false;\r\n            }\r\n        }\r\n        if (this.data.horScrollGt) {\r\n            if (!this.horScrollLimitGt) {\r\n                if (this.data.horScrollGt < this.piping.$actionWrapper[0].scrollLeft) {\r\n                    this.triggerEventIfEnabled('horizontalScrollGreaterThan');\r\n                    this.horScrollLimitGt = true;\r\n                }\r\n            } else if (this.data.horScrollGt >= this.piping.$actionWrapper[0].scrollLeft) {\r\n                this.horScrollLimitGt = false;\r\n            }\r\n        }\r\n\r\n        if (this.data.verScrollLt) {\r\n            if (!this.verScrollLimitLt) {\r\n                if (this.data.verScrollLt > this.piping.$actionWrapper[0].scrollTop) {\r\n                    this.triggerEventIfEnabled('verticalScrollSmallerThan');\r\n                    this.verScrollLimitLt = true;\r\n                }\r\n            } else if (this.data.verScrollLt <= this.piping.$actionWrapper[0].scrollTop) {\r\n                this.verScrollLimitLt = false;\r\n            }\r\n        }\r\n        if (this.data.horScrollLt) {\r\n            if (!this.horScrollLimitLt) {\r\n                if (this.data.horScrollLt > this.piping.$actionWrapper[0].scrollLeft) {\r\n                    this.triggerEventIfEnabled('horizontalScrollSmallerThan');\r\n                    this.horScrollLimitLt = true;\r\n                }\r\n            } else if (this.data.horScrollLt <= this.piping.$actionWrapper[0].scrollLeft) {\r\n                this.horScrollLimitLt = false;\r\n            }\r\n        }\r\n    };\r\n\r\n    Action.prototype.unsubscribeEventHandlers = function () {\r\n        this.$masterPage.remove();\r\n        this.$pageAnchored.remove();\r\n\r\n        _.forEach(this.services, function (service) {\r\n            service.dispose();\r\n        });\r\n\r\n        asyncSubcriptions.unsubscribeActionInstance(this.actionInstanceId);\r\n    };\r\n\r\n    Action.prototype.applyLayout = function (currentLayout) {\r\n        if (currentLayout) {\r\n            this.piping.parameters.systems.setValue('CurrentLayoutName', currentLayout.name);\r\n            responsive.applyLayoutRecursive(this, currentLayout);\r\n        }\r\n\r\n        this.layout = currentLayout;\r\n        this.updateBackgroundSize(this.data);\r\n    };\r\n\r\n    Action.prototype.runningOnHandheldDevice = function () {\r\n        if(!this.layout)\r\n            return false;\r\n        return this.layout.deviceTypeName === 'Phone' || this.layout.deviceTypeName === 'Tablet';\r\n    };\r\n\r\n    Action.prototype.shouldUseWidthOfLayout = function () {\r\n        return this.runningOnHandheldDevice() && $.isNumeric(this.data.left) && $.isNumeric(this.data.right);\r\n    };\r\n    \r\n    Action.prototype.preRender = function () {\r\n        this.applyPosition();\r\n\r\n        if (this.canGrow()) {\r\n            this.piping.$actionView.addClass('relative-positioning');\r\n\r\n            // if the width of the screen is smaller than the total width required by the action\r\n            // we have to explicitely set the width off the body, otherwise the background layer won't\r\n            // grow beyond the right edge of the window\r\n            if (!$.isNumeric(this.data.left) || !$.isNumeric(this.data.right)) {\r\n                var minWidth = this.data.size.x;\r\n\r\n                if ($.isNumeric(this.data.left))\r\n                    minWidth += this.data.left;\r\n\r\n                if ($.isNumeric(this.data.right))\r\n                    minWidth += this.data.right;\r\n\r\n                this.piping.$actionView.css({\r\n                    minWidth: minWidth + 'px'\r\n                });\r\n            }\r\n        } else {\r\n            this.piping.$actionView.addClass('absolute-positioning');\r\n        }\r\n\r\n        _.forEach(this.services, function (applicationService) {\r\n            applicationService.initialize();\r\n        });\r\n\r\n        Style.renderSavedStyles(this, null, this.piping.$actionWrapper);\r\n    };\r\n\r\n    Action.prototype.doesThisMakeMeGrow = function (otherDrop) {\r\n        return this.canGrow() && this.data.growingDrop === otherDrop.data.name;\r\n    };\r\n\r\n    Action.prototype.canGrow = function () {\r\n        return !!this.data.makeItGrow;\r\n    };\r\n\r\n    Action.prototype.createAndRenderDrops = function ($viewport) {\r\n        var self = this;\r\n\r\n        this.piping.$actionView\r\n            .removeClass('relative-positioning absolute-positioning')\r\n            .removeAttr('style');\r\n        \r\n        this.resizeViewport($viewport);\r\n\r\n        this.$masterPage.appendTo(this.piping.$actionView);\r\n        this.$pageAnchored.appendTo(this.piping.$actionView);\r\n\r\n        $.each(this.backgroundDrops, function (index, model) {\r\n            model.renderInBackground = true;\r\n        });\r\n\r\n        var morphs = this.childDrops.concat(this.backgroundDrops);\r\n        this.addRootMorph(morphs);\r\n\r\n        var drops = this.piping.dropFactory.createDrops(morphs);\r\n\r\n        var self = this;\r\n        _.each(drops, function (drop) {\r\n            self.addDrop(drop);\r\n        });\r\n\r\n        self.piping.eventing.bindEvents();\r\n\r\n        return self.render(this.piping.$actionView)\r\n            .then(function () {\r\n                return self.piping.eventing.triggerPageLoadEvent();\r\n            });\r\n    };\r\n\r\n    Action.prototype.postRender = function () {\r\n    \t// click fall-through for master page drops\r\n    \tnew PointerEventsPolyfill({\r\n            selector: '.licquid-drops-pool'\r\n        });\r\n\r\n        if (this.data.scrollEventEnabled) {\r\n            this.verScrollLimitGt = false;\r\n            this.horScrollLimitGt = false;\r\n            this.verScrollLimitLt = false;\r\n            this.horScrollLimitLt = false;\r\n\r\n            this.subscribeEventHandler(this.piping.$actionWrapper, 'scroll', this.scrollEventHandler.bind(this));\r\n        }\r\n    };\r\n\r\n    Action.prototype.updateBackgroundSize = function (data) {\r\n        var positioning = {};\r\n\r\n        data = data || this.data;\r\n\r\n        if (this.canGrow()) {\r\n            positioning.height = '100%';\r\n            positioning.width = '100%';\r\n        } else {\r\n            if (data.top != null && data.bottom != null) {\r\n                // action is anchored at both sides, so the background needs to cover the entire window\r\n                positioning.top = 0;\r\n                positioning.bottom = 0;\r\n            } else if (data.bottom && data.bottom < 0) {\r\n                positioning.bottom = data.bottom;\r\n            } else if (!this.insideAnIFrame) {\r\n                if (this.options.windowMinHeight != null && this.options.windowMinHeight > data.size.y)\r\n                    positioning.minHeight = this.options.windowMinHeight;\r\n                else\r\n                    positioning.minHeight = data.size.y;\r\n\r\n                if (data.top)\r\n                    positioning.minHeight += data.top;\r\n                else\r\n                    positioning.minHeight += data.position.y;\r\n            }\r\n\r\n            if (data.right != null && data.left != null) {\r\n                // action is anchored at both sides, so the background needs to cover the entire window\r\n                positioning.right = 0;\r\n                positioning.left = 0;\r\n            } else if (data.right && data.right < 0) {\r\n                positioning.right = data.right;\r\n            } else {\r\n                positioning.minWidth = data.size.x;\r\n            }\r\n        }\r\n\r\n        this.$masterPage.css(positioning);\r\n        this.$pageAnchored.css(positioning);\r\n    };\r\n\r\n    Action.prototype.resizeViewport = function ($viewport) {\r\n        if ($viewport.length === 0)\r\n            return;\r\n\r\n        if (this.runningOnHandheldDevice()) {\r\n            $viewport.attr('content', 'width=' + this.data.size.x + ', user-scalable=yes');\r\n        } else {\r\n            var scale = 1;\r\n            var ww = $(window).width();\r\n            var width = 'device-width';\r\n            var wscale = 1;\r\n            var hscale = 1;\r\n\r\n            if (this.options.viewportScaleForWidth && (this.data.left !== null || this.data.right !== null || this.data.centered === true)) {\r\n                var actionWidth =\r\n                   (this.data.centered === true\r\n                       ? this.data.size.x\r\n                       : (this.data.left || this.data.position.x) + this.data.size.x + (this.data.right || 0));\r\n\r\n                if (!this.options.viewportScaleForHeight) {\r\n                    var width = this.layout && this.data.size.x > this.layout.windowMinWidth ? this.layout.windowMinWidth : this.data.size.x;\r\n                    $viewport.attr('content', 'width=' + width + ', user-scalable=yes');\r\n                    return;\r\n                } else {\r\n                    if (ww < actionWidth) wscale = ww / actionWidth;\r\n                }\r\n            }\r\n\r\n            if (this.options.viewportScaleForHeight && (this.data.top !== null || this.data.bottom !== null)) {\r\n                var wh = $(window).height();\r\n                var actionHeight = this.data.size.y + (this.data.top || 0) + (this.data.bottom || 0);\r\n                if (wh < actionHeight) hscale = wh / actionHeight;\r\n\r\n                //if the device is too small, don't take the height into account for scaling\r\n                if (ww < 768 || wh <= 390) hscale = 1;\r\n            }\r\n\r\n            scale = Math.min(wscale, hscale);\r\n\r\n            $viewport.attr('content', 'width=device-width, initial-scale=' + scale + ', user-scalable=no');\r\n\r\n            if (!this.insideAnIFrame) {\r\n                if (this.layout && this.layout.windowMinWidth !== null && this.layout.windowMinWidth !== undefined)\r\n                    this.piping.$actionView.css('min-width', this.layout.windowMinWidth);\r\n                else if (this.options.windowMinWidth)\r\n                    this.piping.$actionView.css('min-width', this.options.windowMinWidth);\r\n\r\n                if (this.layout && this.layout.windowMinHeight !== null && this.layout.windowMinHeight !== undefined && !this.canGrow())\r\n                    this.piping.$actionView.css('min-height', this.layout.windowMinHeight);\r\n                else if (this.options.windowMinHeight && !this.canGrow())\r\n                    this.piping.$actionView.css('min-height', this.options.windowMinHeight);\r\n            }\r\n        }\r\n    };\r\n\r\n    Action.prototype.setContent = function (contentArray, locals, insertionPoint) {\r\n        if(contentArray.length === 0) return;\r\n        var contentRegion = _.findWhere(this.piping.dropFactory.getAllDrops(), { type: 'ContentRegion' });\r\n        if(!contentRegion) throw Error('No content region found');\r\n        contentRegion.setContent(contentArray, locals, insertionPoint);\r\n    };\r\n\r\n    Action.prototype.loadData = function (actionData) {\r\n        this.backgroundDrops = actionData.backgroundDrops;\r\n        this.allLayouts = actionData.allLayouts;\r\n        this.defaultLayout = actionData.defaultLayout;\r\n        this.isMockAction = actionData.isMockAction;\r\n\r\n        var self = this;\r\n        this.services = _.map(actionData.services, function (service) {\r\n            return actionServiceFactory.createService(service, self);\r\n        });\r\n    };\r\n\r\n    Action.prototype.isActive = function () {\r\n        return !!this.piping;\r\n    };\r\n\r\n    Action.prototype.addRootMorph = function (morphs) {\r\n        var self = this;\r\n        _.each(morphs, function (morph) { \r\n            morph.rootDrop = self;\r\n            if ((!morph.data || morph.data.type !== \"List\") && $.isArray(morph.childDrops) && morph.childDrops.length > 0)\r\n                self.addRootMorph(morph.childDrops)\r\n        });\r\n    };\r\n    \r\n    return Action;\r\n});\r\n\n","define('lq/events/processEventActionsUrl',[],function () {\r\n    'use strict';\r\n\r\n    var prepareName = function(value) {\r\n        value = value.replace(/[^a-zA-Z0-9 ]+/g, '').trim();\r\n        return encodeURIComponent(value);\r\n    };\r\n\r\n    return {\r\n\r\n        get: function (piping, section, optionalName) {\r\n            var url = 'LicquidAction/ProcessEventActions/' + piping.actionId;\r\n            url += '/' + prepareName(section);\r\n\r\n            if (optionalName)\r\n                url += '/' + prepareName(optionalName);\r\n\r\n            var params = {\r\n                'r': Math.floor((Math.random() * 1000000))\r\n            };\r\n            \r\n            return piping.url.prepare(url, params);\r\n        }\r\n\r\n    };\r\n});\n","define('lq/queryDispatcher',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/events/processEventActionsUrl'\r\n], function ($, _, processEventActionsUrl) {\r\n    'use strict';\r\n\r\n    var QueryDispatcher = function (piping) {\r\n        this.piping = piping;\r\n    };\r\n\r\n    QueryDispatcher.getDefaultQueryParams = function () {\r\n        return {};\r\n    };\r\n\r\n    QueryDispatcher.prototype.getDefaultQueryParams = function () {\r\n        return QueryDispatcher.getDefaultQueryParams();\r\n    };\r\n\r\n    QueryDispatcher.prototype.getQueryRequest = function (batch) {\r\n        var self = this;\r\n        return {\r\n            actionId: this.piping.actionId,\r\n            globalParameters: this.piping.parameters.globals.getAll(),\r\n            localParameters: this.piping.parameters.locals.getAll(),\r\n            requests: _.map(batch, function (batchEntry) {\r\n                var queryData = self.getDefaultQueryParams();\r\n\r\n                if (typeof batchEntry.decorateDataFunc === 'function')\r\n                    batchEntry.decorateDataFunc(queryData);\r\n\r\n                return {\r\n                    eventActionType: 'ExecuteQuery',\r\n                    queryObjectName: batchEntry.queryName,\r\n                    queries: [\r\n                        {\r\n                            listeners: [],\r\n                            params: queryData\r\n                        }\r\n                    ],\r\n                    eventActionId: 0\r\n                };\r\n            })\r\n        };\r\n    };\r\n\r\n    QueryDispatcher.prototype.dispatchBatch = function (batch) {\r\n        var requestData = this.getQueryRequest(batch);\r\n\r\n        this.piping.dispatcher\r\n            .dispatch(processEventActionsUrl.get(this.piping, 'Queries'), requestData, function (batchResult) {\r\n                _.each(batchResult.responses, function (response, i) {\r\n                    var handler = batch[i].handler;\r\n                    var result = response.results[0].result;\r\n                    handler(result);\r\n                });\r\n            }, null, function() {\r\n                _.each(batch, function() {\r\n                    if (batch.errorHandler) batch.errorHandler();\r\n                });\r\n            });\r\n\r\n    };\r\n\r\n    QueryDispatcher.prototype.dispatch = function (queryName, handler, decorateDataFunc, errorHandler) {\r\n        this.dispatchBatch([{\r\n            queryName: queryName,\r\n            handler: handler,\r\n            decorateDataFunc: decorateDataFunc,\r\n            errorHandler: errorHandler\r\n        }]);\r\n    };\r\n\r\n    QueryDispatcher.prototype.backgroundDispatch = function (queryName, handler, decorateDataFunc, errorHandler) {\r\n        var requestData = this.getQueryRequest([{\r\n            queryName: queryName,\r\n            decorateDataFunc: decorateDataFunc\r\n        }]);\r\n        this.piping.dispatcher\r\n            .backgroundDispatch(processEventActionsUrl.get(this.piping, 'Queries'), requestData, function (batchResult) {\r\n                handler(batchResult.responses[0].results[0].result);\r\n            }, null, errorHandler || $.noop)\r\n            .catch(function () { });\r\n    };\r\n\r\n    return QueryDispatcher;\r\n});\r\n\n","define('drops/actionSlideshow/actionSlide',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq'\r\n], function ($, _, lq) {\r\n\r\n    var ActionSlide = function (data) {\r\n        this.url = this.getActionUrl(data);\r\n        this.delay = data.delay;\r\n\r\n        this.$element = $('<iframe frameBorder=\"0\" />')\r\n            .attr('src', this.url)\r\n            .css({\r\n                'visibility': 'hidden'\r\n            });\r\n    };\r\n\r\n    ActionSlide.prototype.getActionUrl = function (data) {\r\n        var targetUrl = lq.getTenantUrl('LicquidAction/Get/' + data.actionId);\r\n        targetUrl += '?embedded=true&parameters=' + encodeURIComponent(JSON.stringify(data.parameters));\r\n        return targetUrl;\r\n    };\r\n\r\n    ActionSlide.prototype.init = function ($parent) {\r\n        var deferred = $.Deferred();\r\n\r\n        var self = this;\r\n        this.listenForMessage(function (e) {\r\n            if (e.source !== self.$element.get(0).contentWindow)\r\n                return;\r\n\r\n            if (typeof e.data !== 'string')\r\n                return;\r\n\r\n            var obj = JSON.parse(e.data);\r\n\r\n            if (obj.eventName === 'LicquidLoaded')\r\n                deferred.resolve();\r\n        });\r\n\r\n        $parent.append(this.$element);\r\n\r\n        return deferred.promise();\r\n    };\r\n\r\n    ActionSlide.prototype.listenForMessage = function (callback) {\r\n        var eventMethod = window.addEventListener ? 'addEventListener' : 'attachEvent';\r\n        var messageEvent = window.addEventListener ? 'message' : 'onmessage';\r\n        \r\n        window[eventMethod](messageEvent, function (e) {\r\n            callback(e);\r\n        }, false);\r\n    };\r\n\r\n    ActionSlide.prototype.show = function () {\r\n        this.$element.css({\r\n            'visibility': 'inherit'\r\n        });\r\n    };\r\n\r\n    ActionSlide.prototype.remove = function () {\r\n        this.$element.remove();\r\n    };\r\n\r\n    ActionSlide.prototype.timeout = function() {\r\n        var deferred = $.Deferred();\r\n        _.delay(function () { deferred.resolve(); }, this.delay * 1000);\r\n        return deferred.promise();\r\n    };\r\n\r\n    ActionSlide.prototype.hide = function () {\r\n        this.$element.fadeOut();\r\n    };\r\n\r\n    return ActionSlide;\r\n});\n","define('drops/actionSlideshow/actionSlideshow',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq',\r\n    'lq/drop',\r\n    'drops/actionSlideshow/actionSlide'\r\n], function ($, _, lq, Drop, ActionSlide) {\r\n\r\n    var ActionSlideshow = function (options) {\r\n        Drop.call(this, $('<div/>'), options);\r\n\r\n        this.slides = [];\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize action-slideshow');\r\n        this.$slides = $('<div/>')\r\n            .addClass('action-slideshow-slides')\r\n            .appendTo(this.$element);\r\n    };\r\n\r\n    Drop.extend(ActionSlideshow, Drop);\r\n\r\n    ActionSlideshow.typeName = 'ActionSlideshow';\r\n\r\n    // prevent the page from showing a dialog when a request fails\r\n    ActionSlideshow.prototype.onError = function (e) {\r\n        e.handled = true;\r\n    };\r\n\r\n    ActionSlideshow.prototype.preRender = function () {\r\n        this.applyPosition();\r\n    };\r\n\r\n    ActionSlideshow.prototype.postRender = function () {\r\n        this.performInitialLoad();\r\n    };\r\n\r\n    ActionSlideshow.prototype.performInitialLoad = function () {\r\n        var self = this;\r\n        if (!$.contains(document.body, this.$element[0]))\r\n            return; // removed, stop trying\r\n        this\r\n            .loadSlides()\r\n            .done(function () {\r\n                if (self.slides.length === 0)\r\n                    _.delay(function () { self.performInitialLoad(); }, 5000);\r\n                else\r\n                    self.showSlide(0);\r\n            })\r\n            .fail(function () {\r\n                _.delay(function () { self.performInitialLoad(); }, 5000);\r\n            });\r\n    };\r\n\r\n    ActionSlideshow.prototype.loadSlides = function () {\r\n        var deferred = $.Deferred();\r\n        \r\n        var self = this;\r\n        $.ajax({\r\n            url: lq.getTenantUrl('ActionSlideshow/GetSlides'),\r\n            type: 'POST',\r\n            cache: false,\r\n            data: JSON.stringify({\r\n                locals: this.piping.parameters.locals.getAll(),\r\n                globals: this.piping.parameters.globals.getAll(),\r\n                actionId: this.piping.actionId,\r\n                actionSlideshowId: this.data.id\r\n            }),\r\n            dataType: 'json',\r\n            contentType: 'application/json; charset=utf-8'\r\n        })\r\n        .done(function (data) {\r\n            var newSlides = _.map(data.slides, function (slide) {\r\n                return new ActionSlide(slide);\r\n            });\r\n\r\n            var promises = _.map(newSlides, function (slide) {\r\n                return slide.init(self.$slides);\r\n            });\r\n            \r\n            // make sure deferred.resolve() is triggered anyway after a certain amount of time\r\n            _.delay(function () {\r\n                if (!deferred)\r\n                    return;\r\n\r\n                _.each(newSlides, function (slide) { slide.remove(); });\r\n\r\n                deferred.resolve();\r\n                deferred = null;\r\n            }, 15000);\r\n\r\n            $.when\r\n                .apply($, promises)\r\n                .done(function () {\r\n                    if (!deferred)\r\n                        return;\r\n\r\n                    _.each(self.slides, function(slide) { slide.remove(); });\r\n                    self.slides = newSlides;\r\n\r\n                    deferred.resolve();\r\n                    deferred = null;\r\n                });\r\n        })\r\n        .fail(function () {\r\n            deferred.reject();\r\n        });\r\n\r\n        return deferred.promise();\r\n    };\r\n    \r\n    ActionSlideshow.prototype.showSlide = function (index) {\r\n        var self = this;\r\n        var slide = this.slides[index];\r\n        slide.show();\r\n        slide.timeout()\r\n            .done(function () {\r\n                var nextIndex = index + 1;\r\n\r\n                if (self.slides.length <= nextIndex) {\r\n                    self.loadSlides()\r\n                        .done(function() {\r\n                            slide.hide();\r\n\r\n                            if (self.slides.length === 0)\r\n                                _.delay(function () { self.performInitialLoad(); }, 5000);\r\n                            else\r\n                                self.showSlide(0);\r\n                        })\r\n                        .fail(function() {\r\n                            slide.hide();\r\n                            self.showSlide(0);\r\n                        });\r\n                } else {\r\n                    slide.hide();\r\n                    self.showSlide(nextIndex);\r\n                }\r\n        });\r\n    };\r\n\r\n    return ActionSlideshow;\r\n});\n","//JavaScript HTML Sanitizer v2.0.2, (c) Alexander Yumashev, Jitbit Software.\r\n\r\n//homepage https://github.com/jitbit/HtmlSanitizer\r\n\r\n//License: MIT https://github.com/jitbit/HtmlSanitizer/blob/master/LICENSE\r\n'use strict'\r\n\r\nwindow.HtmlSanitizer = new (function () {\r\n\r\n\tconst _tagWhitelist = {\r\n\t\t'A': true, 'ABBR': true, 'B': true, 'BLOCKQUOTE': true, 'BODY': true, 'BR': true, 'CENTER': true, 'CODE': true, 'DD': true, 'DIV': true, 'DL': true, 'DT': true, 'EM': true, 'FONT': true,\r\n\t\t'H1': true, 'H2': true, 'H3': true, 'H4': true, 'H5': true, 'H6': true, 'HR': true, 'I': true, 'IMG': true, 'LABEL': true, 'LI': true, 'OL': true, 'P': true, 'PRE': true,\r\n\t\t'SMALL': true, 'SOURCE': true, 'SPAN': true, 'STRONG': true, 'SUB': true, 'SUP': true, 'TABLE': true, 'TBODY': true, 'TR': true, 'TD': true, 'TH': true, 'THEAD': true, 'UL': true, 'U': true, 'VIDEO': true,\r\n\t\t'CAPTION': true, 'FIGURE': true\r\n\t};\r\n\r\n\tconst _contentTagWhiteList = { 'FORM': true, 'GOOGLE-SHEETS-HTML-ORIGIN': true }; //tags that will be converted to DIVs\r\n\r\n\tconst _attributeWhitelist = { \r\n\t\t'border': true, 'cellspacing': true, 'cellpadding': true, 'colspan': true, 'rowspan': true, 'rel': true, 'scope': true,\r\n\t\t'align': true, 'color': true, 'controls': true, 'height': true, 'href': true, 'id': true, 'src': true, 'style': true, 'target': true, 'title': true, 'type': true, 'width': true };\r\n\r\n\tconst _cssWhitelist = {\r\n        \"background-color\": true, color: true, \"font-size\": true, \"font-weight\": true, \"text-align\": true, \"text-decoration\": true, width: true, 'text-decoration-line': true, 'text-decoration-thickness': true, \r\n\t\t'text-decoration-style': true, 'text-decoration-color': true, 'font-family': true, 'line-height': true, 'border-collapse': true, 'height': true, 'border-top-color': true, 'border-right-color': true,\r\n\t\t'border-bottom-color': true, 'border-left-color': true, 'border-top-style': true, 'border-right-style': true, 'border-bottom-style': true, 'border-left-style': true, 'margin-top': true, 'margin-bottom': true,\r\n\t\t'margin-left': true, 'margin-right': true, 'border': true, 'float': true, 'vertical-align': true, 'border-top-width': true, 'border-right-width': true, 'border-bottom-width': true, 'border-left-width': true,\r\n\t\t'border-image-source': true, 'border-image-slice': true, 'border-image-width': true, 'border-image-repeat': true, 'border-image-outset': true, 'border-image-position': true, 'border-image': true,\r\n\t\t'padding-left': true, 'padding-right': true, 'padding-top': true, 'padding-bottom': true, 'border-radius': true, 'display': true, 'align-items': true,\r\n\t\t'border-top-left-radius': true, 'border-top-right-radius': true, 'border-bottom-right-radius': true, 'border-bottom-left-radius': true, 'object-fit': true, 'table-layout': true,\r\n\t\t'white-space': true, 'word-break': true, 'word-wrap': true, 'white-space-collapse': true, 'text-wrap': true, 'text-wrap-mode': true, 'overflow-wrap': true\r\n\t};\r\n\r\n\tconst _schemaWhiteList = [ 'http:', 'https:', 'data:', 'm-files:', 'file:', 'ftp:', 'mailto:', 'pw:' ]; //which \"protocols\" are allowed in \"href\", \"src\" etc\r\n\r\n\tconst _uriAttributes = { 'href': true, 'action': true };\r\n\r\n\tconst _parser = new DOMParser();\r\n\r\n\tthis.SanitizeHtml = function (input, extraSelector) {\r\n\t\tinput = input.trim();\r\n\t\tif (input == \"\") return \"\"; //to save performance\r\n\r\n\t\t//firefox \"bogus node\" workaround for wysiwyg's\r\n\t\tif (input == \"<br>\") return \"\";\r\n\r\n\t\tif (input.indexOf(\"<body\")==-1) input = \"<body>\" + input + \"</body>\"; //add \"body\" otherwise some tags are skipped, like <style>\r\n\r\n\t\tlet doc = _parser.parseFromString(input, \"text/html\");\r\n\r\n\t\t//DOM clobbering check (damn you firefox)\r\n\t\tif (doc.body.tagName !== 'BODY')\r\n\t\t\tdoc.body.remove();\r\n\t\tif (typeof doc.createElement !== 'function')\r\n\t\t\tdoc.createElement.remove();\r\n\r\n\t\tfunction makeSanitizedCopy(node) {\r\n\t\t\tlet newNode;\r\n\t\t\tif (node.nodeType == Node.TEXT_NODE) {\r\n\t\t\t\tnewNode = node.cloneNode(true);\r\n\t\t\t} else if (node.nodeType == Node.ELEMENT_NODE && (_tagWhitelist[node.tagName] || _contentTagWhiteList[node.tagName] || (extraSelector && node.matches(extraSelector)))) { //is tag allowed?\r\n\r\n\t\t\t\tif (_contentTagWhiteList[node.tagName])\r\n\t\t\t\t\t{\r\n\t\t\t\t\tconsole.log(node.tagName)\r\n\t\t\t\t\tnewNode = doc.createElement('DIV'); //convert to DIV\r\n\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\tnewNode = doc.createElement(node.tagName);\r\n\r\n\r\n\t\t\t\tfor (let i = 0; i < node.attributes.length; i++) {\r\n\t\t\t\t\tlet attr = node.attributes[i];\r\n\t\t\t\t\tif (_attributeWhitelist[attr.name]) {\r\n\t\t\t\t\t\tif (attr.name == \"style\") {\r\n\t\t\t\t\t\t\tfor (let s = 0; s < node.style.length; s++) {\r\n\t\t\t\t\t\t\t\tlet styleName = node.style[s];\r\n\t\t\t\t\t\t\t\tif (_cssWhitelist[styleName])\r\n\t\t\t\t\t\t\t\t\tnewNode.style.setProperty(styleName, node.style.getPropertyValue(styleName));\r\n\t\t\t\t\t\t\t\telse console.log(`'${styleName}': true,`, 'csswhitelist');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (_uriAttributes[attr.name]) { //if this is a \"uri\" attribute, that can have \"javascript:\" or something\r\n\t\t\t\t\t\t\t\tif (attr.value.indexOf(\":\") > -1 && !startsWithAny(attr.value, _schemaWhiteList))\r\n\t\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tnewNode.setAttribute(attr.name, attr.value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse console.log(`'${attr.name}': true,`, 'attrWhitelist');\r\n\t\t\t\t}\r\n\t\t\t\tfor (let i = 0; i < node.childNodes.length; i++) {\r\n\t\t\t\t\tlet subCopy = makeSanitizedCopy(node.childNodes[i]);\r\n\t\t\t\t\tnewNode.appendChild(subCopy, false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//remove useless empty spans (lots of those when pasting from MS Outlook)\r\n\t\t\t\tif ((newNode.tagName == \"SPAN\" || newNode.tagName == \"B\" || newNode.tagName == \"I\" || newNode.tagName == \"U\")\r\n\t\t\t\t\t&& newNode.innerHTML.trim() == \"\") {\r\n\t\t\t\t\treturn doc.createDocumentFragment();\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t} else {\r\n\t\t\t\tconsole.log(node.tagName)\r\n\t\t\t\tnewNode = doc.createDocumentFragment();\r\n\t\t\t}\r\n\t\t\treturn newNode;\r\n\t\t};\r\n\r\n\t\tlet resultElement = makeSanitizedCopy(doc.body);\r\n\t\t\r\n\t\treturn resultElement.innerHTML;\r\n\t\t\t// NOTE: Removed by Licquid because breaks layout in eCQare beeldvorming\r\n\t\t\t//.replace(/<br[^>]*>(\\S)/g, \"<br>\\n$1\")\r\n\t\t\t//.replace(/div><div/g, \"div>\\n<div\"); //replace is just for cleaner code\r\n\t}\r\n\r\n\tfunction startsWithAny(str, substrings) {\r\n\t\tfor (let i = 0; i < substrings.length; i++) {\r\n\t\t\tif (str.indexOf(substrings[i]) == 0) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tthis.AllowedTags = _tagWhitelist;\r\n\tthis.AllowedAttributes = _attributeWhitelist;\r\n\tthis.AllowedCssStyles = _cssWhitelist;\r\n\tthis.AllowedSchemas = _schemaWhiteList;\r\n});\ndefine(\"HtmlSanitizer\", (function (global) {\n    return function () {\n        var ret, fn;\n        return ret || global.HtmlSanitizer;\n    };\n}(this)));\n\n","define('lq/html',[\r\n    'jquery',\r\n    'HtmlSanitizer'\r\n], function ($, HtmlSanitizer) {\r\n\r\n    // WHY can't use _.escape() and _.unescape() here, because that one\r\n    // assumes ' is replaced with &#27; while the backend actually replaces it with &#39;\r\n\r\n    var $htmStripper = $('<div />');\r\n\r\n    return {\r\n        escape: function(text) {\r\n            return String(text)\r\n                .replace(/&/g, '&amp;')\r\n                .replace(/\"/g, '&quot;')\r\n                .replace(/'/g, '&#39;')\r\n                .replace(/</g, '&lt;')\r\n                .replace(/\\u00A0/g, '&#160;')\r\n                .replace(/>/g, '&gt;');\r\n        },\r\n        unescape: function(text) {\r\n            return String(text)\r\n                .replace(/&amp;/g, '&')\r\n                .replace(/&quot;/g, '\"')\r\n                .replace(/&#39;/g, '\\'')\r\n                .replace(/&#27;/g, '\\'')\r\n                .replace(/&#160;/g, '\\u00A0')\r\n                .replace(/&lt;/g, '<')\r\n                .replace(/&gt;/g, '>');\r\n        },\r\n        strip: function (text) {\r\n            if (!text) return text;\r\n            return $htmStripper.html(text).text();\r\n        },\r\n        sanitize: function (text) {\r\n            if(!text) return text;\r\n            return HtmlSanitizer.SanitizeHtml(text);\r\n        }\r\n    };\r\n\r\n});\n","define('lq/tooltip',[\r\n    'lq/html'\r\n], function (html) {\r\n\r\n    function Tooltip(drop, tooltipData, $element) {\r\n        this.drop = drop;\r\n        this.tooltipData = tooltipData;\r\n        this.$element = $element;\r\n\r\n        if (!!tooltipData && tooltipData.option === Tooltip.queryParent) {\r\n            var parentDatasourceOutput = tooltipData.parentDatasourceOutput;\r\n            drop.addOnceListener('DatasourceApplied', function (ctx) {\r\n                var tooltip = ctx[parentDatasourceOutput];\r\n                $element.attr('title', html.strip(tooltip));\r\n            });\r\n        }\r\n    }\r\n\r\n    Tooltip.isEnabled = function(tooltipData) {\r\n        return !!tooltipData && (tooltipData.option !== 'Hardcoded' || !!tooltipData.hardcodedTooltip);\r\n    };\r\n\r\n    Tooltip.hardcoded = 'Hardcoded';\r\n    Tooltip.parameter = 'Parameter';\r\n    Tooltip.query = 'Query';\r\n    Tooltip.queryParent = 'QueryParent';\r\n\r\n    Tooltip.prototype.update = function (optionalTooltipOverride) {\r\n        if (optionalTooltipOverride !== undefined) {\r\n            this.$element.attr('title', html.strip(optionalTooltipOverride));\r\n        } else if (this.tooltipData) {\r\n            var $element = this.$element;\r\n\r\n            if (this.tooltipData.option === Tooltip.hardcoded || !this.tooltipData.option)\r\n                $element.attr('title', html.strip(this.tooltipData.hardcodedTooltip));\r\n\r\n            if (this.tooltipData.option === Tooltip.parameter)\r\n                $element.attr('title', html.strip(this.drop.piping.parameters.getValue(this.tooltipData.parameter)));\r\n\r\n            if (this.tooltipData.option === Tooltip.query) {\r\n                var datasourceOutput = this.tooltipData.datasourceOutput;\r\n                this.drop.piping.datasources.registerDatasourceListener(\r\n                    this.tooltipData.datasource,\r\n                    function (data) {\r\n                        var tooltip = data.results.length && data.results[0][datasourceOutput];\r\n                        $element.attr('title', html.strip(tooltip));\r\n                    }\r\n                );\r\n            }\r\n        }\r\n    };\r\n\r\n    return Tooltip;\r\n});\n","define('lq/required',[\r\n    'jquery',\r\n    'underscore'\r\n], function ($, _) {\r\n    'use strict';\r\n\r\n    var Required = function () {\r\n    };\r\n\r\n    Required.prototype.apply = function (drop, callBack) {\r\n        if (drop.data.required.isRequired) {\r\n            if (this.fromQuery(drop)) {\r\n                // Initializing\r\n                drop.requiredData = !!drop.data.required.initialVisibility;\r\n                drop.piping.datasources.registerDatasourceListener(\r\n                    drop.data.required.datasource,\r\n                    function (data) {\r\n                        var isRequired = data.results.length && data.results[0][drop.data.required.datasourceOutput];\r\n                        if (isRequired === true) {\r\n                            drop.$element.addClass('isRequiredField');\r\n                            drop.requiredData = true;\r\n                        } else {\r\n                            drop.$element.removeClass('isRequiredField');\r\n                            drop.requiredData = false;\r\n                        }\r\n\r\n                        drop.updateRequiredIndicator();\r\n                        if ((typeof callBack) === 'function')\r\n                            callBack(drop.requiredData);\r\n                    }\r\n                );\r\n            } else if (this.fromParameter(drop)) {\r\n                if (this.valueFromParameterIsTrue(drop)) {\r\n                    drop.$element.addClass('isRequiredField');\r\n                    drop.requiredData = true;\r\n                }\r\n                else {\r\n                    drop.$element.removeClass('isRequiredField');\r\n                    drop.requiredData = false;\r\n                }\r\n            } else { // Hardcoded case\r\n                drop.requiredData = true;\r\n            }\r\n            if (drop.data.defaultValue) {\r\n                setTimeout(function () {\r\n                    drop.updateRequiredIndicator();\r\n                });\r\n            }\r\n        } else {\r\n            drop.requiredData = false;\r\n        }\r\n        if ((typeof callBack) === 'function')\r\n            callBack(drop.requiredData);\r\n    };\r\n\r\n    // note that this is a very naive implementation. It can use parameters that are passed in from another page,\r\n    // but it won't be able to pick up parameters that are set during the PageLoad event or any other event.\r\n    // If we need to support that second use case, we need to be able to listen to changes to parameter values\r\n    Required.prototype.valueFromParameterIsTrue = function (drop) {\r\n        var value = drop.piping.parameters.getValue(drop.data.required.parameter);\r\n\r\n        if ($.type(value) === 'boolean')\r\n            return value === true;\r\n\r\n        if ($.type(value) === 'string')\r\n            return value.toLowerCase() === 'true';\r\n\r\n        return !!drop.data.required.initialVisibility;\r\n    };\r\n\r\n    Required.prototype.addRemoveRequiredIndicator = function (drop) {\r\n        if (!this.fromParameter(drop)) {\r\n            if (drop.data.required.isRequired && (this.fromHardcoded(drop) || drop.designData || drop.data.required.initialVisibility))\r\n                drop.$element.addClass('isRequiredField');\r\n            else\r\n                drop.$element.removeClass('isRequiredField');\r\n        }\r\n    };\r\n\r\n    Required.prototype.fromQuery = function (drop) {\r\n        return drop.data.required.valueSource === 'query' && drop.data.required.datasource;\r\n    };\r\n\r\n    Required.prototype.fromParameter = function (drop) {\r\n        return drop.data.required.valueSource === 'parameter';\r\n    };\r\n\r\n    Required.prototype.fromHardcoded = function (drop) {\r\n        return drop.data.required.valueSource === 'hardcoded';\r\n    };\r\n\r\n    return Required;\r\n});\r\n\n","define('drops/modals',[],function () {\r\n    'use strict';\r\n\r\n    var currentZIndexOfRealModals = 600000;\r\n    var zIndexForPopups = 10000;\r\n\r\n    return {\r\n\r\n        getZIndexForPopups: function () {\r\n            return currentZIndexOfRealModals + zIndexForPopups;\r\n        },\r\n\r\n        getNextZIndex: function () {\r\n            return currentZIndexOfRealModals++;\r\n        }\r\n\r\n    };\r\n});\r\n\n","define('drops/autoComplete/autoComplete',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'lq/constants',\r\n    'lq',\r\n    'underscore',\r\n    'lq/tooltip',\r\n    'lq/html',\r\n    'lq/required',\r\n    'drops/modals'\r\n], function($, Drop, style, util, constants, lq, _, Tooltip, html, Required, modals) {\r\n    'use strict';\r\n\r\n    var generateRandomSuffix = function(length) {\r\n        var text = \"\";\r\n        var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n        for (var i = 0; i < length; i++)\r\n            text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n\r\n        return text;\r\n    };\r\n\r\n    var defaults = {\r\n        data: {\r\n            filterParameterName: '',\r\n            keyOutputName: 'Id',\r\n            behaviour: 'dropdown',\r\n            onlyShowSelectedItem: true,\r\n            title: {\r\n                option: Tooltip.hardcoded\r\n            },\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded'\r\n            }\r\n        }\r\n    };\r\n\r\n    var ARROWDOWN = 40;\r\n    var ARROWUP = 38;\r\n    var ENTER = 13;\r\n    var TAB = 9;\r\n\r\n    function AutoComplete(options) {\r\n        Drop.call(this, $('<div />'), defaults, options);\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing);\r\n\r\n        this.typeOfCurrentValue = constants.valueTypes.string;\r\n        this.focused = false;\r\n\r\n        this.selectedItem = null;\r\n        this.selectedId = null;\r\n        this.selectedText = null;\r\n\r\n        this.results = null;\r\n        this.outputs = null;\r\n\r\n        this.afterUpdate = null;\r\n\r\n        this.hasSearch = this.data.behaviour === 'dropdown-with-search';\r\n\r\n        this.$element\r\n            .css({\r\n                whiteSpace: 'pre-wrap'\r\n            });\r\n\r\n        this.$list = $('<div />')\r\n            .addClass('auto-complete-popup')\r\n            .addClass('prevent-hover')\r\n            .addClass('prevent-normal')\r\n            .hide();\r\n\r\n        this.currentPage = 0;\r\n        this.fetchingPage = false;\r\n        this.lastPageReached = true;\r\n        this.blockInfiniteScroll = true;\r\n\r\n        this.totalNumberOfResults = null;\r\n        this.numberOfLoadedResults = null;\r\n\r\n        this.$inputWrapper = $('<div id=\"IPW\"/>')\r\n            .addClass('auto-complete-input boxToBorderSize')\r\n            .appendTo(this.hasSearch ? this.$list : this.$element);\r\n\r\n        if (this.hasSearch) {\r\n            this.$inputWrapper.addClass('prevent-normal prevent-hover')\r\n        }\r\n\r\n        this.$inputField = $('<input autocomplete=\"off\" />')\r\n            .addClass('inherit-all')\r\n            .attr('name', (this.data.name || '') + '_' + generateRandomSuffix(10)) // add random suffix because depending on the version of Chrome autocomplete=\"off\" might be ignored\r\n            .appendTo(this.$inputWrapper);\r\n\r\n        this.$scrollContainer = $('<div class=\"list-of-results prevent-hover prevent-normal\" />')\r\n            .attr('id', this.data.id)\r\n            .appendTo(this.$list);\r\n\r\n        this.$listTable = $('<table />')\r\n            .attr('id', this.data.id)\r\n            .appendTo(this.$scrollContainer);\r\n\r\n        this.$listFooter = $('<div class=\"list-footer pagerText\" />')\r\n            .appendTo(this.$list);\r\n\r\n        this.tooltip = new Tooltip(this, this.data.title, this.$inputField);\r\n\r\n        if (this.data.infiniteScroll) {\r\n            this.onScroll = this.fetchNextPageIfNeeded.bind(this);\r\n            this.$scrollContainer\r\n                .on('scroll', this.onScroll);\r\n        }\r\n\r\n        this.$imgWrapper = $('<div />')\r\n            .addClass('auto-complete-toggle-wrapper');\r\n\r\n        if (this.hasSearch) {\r\n            this.$displayField = $('<div />')\r\n                .addClass('auto-complete-label auto-complete-label-placeholder')\r\n                .text(this.data.watermark)\r\n                .css({\r\n                    position: 'relative',\r\n                    inset: 0,\r\n                    overflow: 'hidden',\r\n                    display: 'flex',\r\n                    justifyContent: 'center',\r\n                    verticalAlign: 'middle',\r\n                    flexDirection: 'column',\r\n                    width: '100%'\r\n                });\r\n            this.$clearButton = $('<div class=\"auto-complete-clear-button\"></div>')\r\n                .on('click', this.clearValue.bind(this))\r\n                .appendTo(this.$imgWrapper);\r\n            this.$borderWrapper = $(\"<div />\")\r\n                .css({\r\n                    display: 'flex',\r\n                    verticalAlign: 'middle',\r\n                    justifyContent: 'space-between',\r\n                    position: 'absolute',\r\n                    inset: '0'\r\n                })\r\n                .append(this.$displayField)\r\n            this.$element\r\n                .prepend(\r\n                    this.$borderWrapper\r\n                );\r\n            this.$borderWrapper.append(this.$imgWrapper);\r\n        } else {\r\n            this.$displayField = this.$inputField;\r\n            this.$inputField.attr('placeholder', this.data.watermark);\r\n            this.$imgWrapper.appendTo(this.$inputWrapper);\r\n        }\r\n\r\n        this.$img = $('<div />')\r\n            .toggle(this.isDropDown())\r\n            .addClass('auto-complete-toggle')\r\n            .appendTo(this.$imgWrapper);\r\n\r\n        this.$displayField.attr('tabindex', this.data.tabIndex);\r\n\r\n        this.renderStyles();\r\n        this.tooglePlaceholder(true);\r\n\r\n        if (!this.data.dataSource && !this.designData)\r\n            this.$displayField.addClass('query-error').prop('placeholder', \"Query error!\");\r\n\r\n\r\n        this.newSearchDebounced = _.debounce(this.newSearch.bind(this), 400);\r\n        this.onScroll = _.debounce(this.newSearch.bind(this), 400);\r\n    };\r\n\r\n    Drop.extend(AutoComplete, Drop);\r\n\r\n    AutoComplete.typeName = 'AutoComplete';\r\n\r\n    AutoComplete.prototype.fetchNextPageIfNeeded = function () {\r\n        if (this.lastPageReached || this.fetchingPage || this.blockInfiniteScroll)\r\n            return;\r\n\r\n        if (this.$scrollContainer.scrollTop() + this.$scrollContainer.height() >= this.$scrollContainer[0].scrollHeight - 30) {\r\n            this.currentPage++;\r\n            this.fetchingPage = true;\r\n\r\n            var self = this;\r\n            this.piping.queryDispatcher.dispatch(\r\n                this.data.dataSource,\r\n                function (data) {\r\n                    self.fetchingPage = false;\r\n                    self.update(data, false);\r\n                },\r\n                function (params) {\r\n                    self.decorateQuery(params);\r\n                });\r\n        }\r\n    };\r\n\r\n    AutoComplete.prototype.isDropDown = function () {\r\n        return this.data.behaviour === 'dropdown'\r\n            || this.data.behaviour === 'dropdown-with-search';\r\n    };\r\n\r\n    AutoComplete.prototype.clearFilterParameter = function () {\r\n        if (!this.data.filterParameterName)\r\n            return;\r\n        this.piping.parameters.locals.setValue(this.data.filterParameterName, '');\r\n    };\r\n\r\n    AutoComplete.prototype.tooglePlaceholder = function (isVisible) {\r\n        if (isVisible) {\r\n            if (this.hasSearch) {\r\n                this.$borderWrapper.addClass('has-placeholder');\r\n            } else {\r\n                this.$inputWrapper.addClass('has-placeholder');\r\n                this.$inputWrapper.addClass('prevent-hover');\r\n            }\r\n        } else {\r\n            if (this.hasSearch) {\r\n                this.$borderWrapper.removeClass('has-placeholder');\r\n            } else {\r\n                this.$inputWrapper.removeClass('has-placeholder');\r\n                this.$inputWrapper.removeClass('prevent-hover');\r\n            }\r\n        }\r\n    };\r\n\r\n    AutoComplete.prototype.renderStyles = function () {\r\n        if (this.hasSearch) {\r\n            style.renderStyles(this, null, this.$borderWrapper);\r\n            style.renderStyles(this, null, this.$inputWrapper, null, 'input');\r\n        } else {\r\n            style.renderStyles(this, null, this.$inputWrapper);\r\n        }\r\n\r\n        if (typeof this.data.styles === 'string') {\r\n            style.renderStyles(this, null, this.$scrollContainer);\r\n            style.renderStyles(this, null, this.$list);\r\n        }\r\n\r\n        var tempStyles = this.data.styles;\r\n        var tempType = this.data.type;\r\n        this.data.styles = this.data.gridStyleId;\r\n        this.data.type = 'Grid';\r\n\r\n        style.renderStyles(this, \"gridstyle-\", this.$list);\r\n        style.renderStyles(this, \"gridstyle-\", this.$listFooter);\r\n\r\n        this.data.styles = tempStyles;\r\n        this.data.type = tempType;\r\n    };\r\n\r\n    AutoComplete.prototype.preRender = function () {\r\n        this.tooltip.update();\r\n        this.piping.visibility.apply(this);\r\n        this.piping.required.apply(this);\r\n        Required.prototype.addRemoveRequiredIndicator(this);\r\n\r\n        this.$list\r\n            .appendTo(this.piping.$app);\r\n\r\n        this.subscribeEventHandler(this.piping.$actionWrapper, 'scroll', this.closeItemList.bind(this));\r\n        this.formatter = this.piping.formatting.createFormatter(this.data.formatting);\r\n\r\n        this.clearFilterParameter();\r\n\r\n        this.applyPosition();\r\n\r\n        var self = this;\r\n        if (this.data.dataSource) {\r\n            this.piping.datasources.registerDatasourceListener(this.data.dataSource, function (data) {\r\n                self.update(data, true);\r\n            }, function (params) {\r\n                self.decorateQuery(params);\r\n            });\r\n        }\r\n\r\n        this.initialize();\r\n    };\r\n\r\n    AutoComplete.prototype.decorateQuery = function (params) {\r\n        params.doNotExecuteCountQuery = !!this.data.hideTotal;\r\n        params.page = this.currentPage;\r\n        params.pageSize = this.getPageSize();\r\n    };\r\n\r\n    AutoComplete.prototype.getPageSize = function () {\r\n        return this.data.pageSize || 128;\r\n    };\r\n\r\n    AutoComplete.prototype.initialize = function () {\r\n        var self = this;\r\n\r\n        var enterPressedEvent = this.getEventDataFor('enterPressed');\r\n\r\n        this.$inputField\r\n            .on('click',function () {\r\n                if (!self.hasSearch) {\r\n                    if (self.$inputField.val().length)\r\n                        self.openItemList();\r\n                }\r\n            })\r\n            .on('focus', function () {\r\n                self.focused = true;\r\n            })\r\n            .on('keydown', function (e) {\r\n                if (e.which === ARROWDOWN) {\r\n                    self.nextItem();\r\n                } else if (e.which === ARROWUP) {\r\n                    self.previousItem();\r\n                } else if (e.which === ENTER) {\r\n                    if (enterPressedEvent.enabled) {\r\n                        if (self.itemListIsOpen() && self.hasFocusedItem()) {\r\n                            self.selectCurrentItem();\r\n                        } else {\r\n                            self.triggerEvent(enterPressedEvent.raisedEventName);\r\n                        }\r\n                    } else if (self.itemListIsOpen()) {\r\n                        self.selectCurrentItem();\r\n                    }\r\n                } else if (e.which === TAB) {\r\n                    if (self.selectedId === null || self.selectedId === undefined)\r\n                        self.handleFocusLost();\r\n\r\n                    if (self.itemListIsOpen()) {\r\n                        // when 'dropdown-with-search' is enabled IE has to handle the blur event first\r\n                        // if we don't do this the focus will be moved to the element with the lowest tabindex\r\n                        // instead of to the element with the next tabindex\r\n                        _.defer(function () {\r\n                            self.getFocusedItem().trigger('mousedown');\r\n                            self.closeItemList();\r\n                        });\r\n                    }\r\n                }\r\n            })\r\n            .on('blur', function () {\r\n                // make sure clicking the scrollbar does not close the popup (IE only?)\r\n                if (!self.keepFocus)\r\n                    self.focused = false;\r\n\r\n                setTimeout(function () {\r\n                    if (!self.focused)\r\n                        self.closeItemList();\r\n                });\r\n\r\n                if (self.selectedText !== self.$inputField.val())\r\n                    self.handleFocusLost();\r\n            })\r\n            .on('keyup', function (e) {\r\n                if (e.which === ARROWDOWN || e.which === ARROWUP) {\r\n                    e.preventDefault();\r\n                    return;\r\n                }\r\n\r\n                if (e.which === ENTER || e.which === TAB) {\r\n                    e.preventDefault();\r\n                    return;\r\n                }\r\n\r\n                if (self.data.filterParameterName)\r\n                    self.piping.parameters.locals.setValue(self.data.filterParameterName, self.$inputField.val());\r\n\r\n                self.newSearchDebounced();\r\n\r\n                if (!self.hasSearch) {\r\n                    if (self.$inputField.val().length)\r\n                        self.openItemList();\r\n                    else {\r\n                        self.closeItemList();\r\n                        self.clearValue();\r\n                    }\r\n                }\r\n\r\n                self.updateRequiredIndicator();\r\n            });\r\n\r\n        var onMouseDown = function () {\r\n            if (self.itemListIsOpen()) {\r\n                self.closeItemList();\r\n            } else {\r\n                if (self.numberOfLoadedResults === null) {\r\n                    if (self.selectedItem && self.data.onlyShowSelectedItem) {\r\n                        self.update({\r\n                            results: [self.selectedItem],\r\n                            outputs: self.outputs,\r\n                            totalNumberOfResults: 1\r\n                        }, true);\r\n                        self.openItemList();\r\n                    } else {\r\n                        self.piping.queryDispatcher.dispatch(\r\n                            self.data.dataSource,\r\n                            function (data) {\r\n                                self.update(data, true);\r\n                                self.openItemList();\r\n                            },\r\n                            function (params) {\r\n                                self.currentPage = 0;\r\n                                self.decorateQuery(params);\r\n                            });\r\n                    }\r\n                } else {\r\n                    self.openItemList();\r\n                }\r\n            }\r\n        };\r\n\r\n        this.$img\r\n            .on('mousedown', onMouseDown)\r\n            .on('focus', function () {\r\n                self.focused = true;\r\n            })\r\n            .on('blur', function () {\r\n                self.focused = false;\r\n            });\r\n\r\n        if (this.hasSearch) {\r\n            this.$displayField\r\n                .on('mousedown', onMouseDown)\r\n                .on('focus', onMouseDown)\r\n                .on('focus', function () {\r\n                    self.$displayField.attr('tabindex', -1);\r\n                    self.$inputField.attr('tabindex', self.data.tabIndex);\r\n                });\r\n            this.$inputField.on('blur', function () {\r\n                self.$inputField.attr('tabindex', -1);\r\n                self.$displayField.attr('tabindex', self.data.tabIndex);\r\n                self.closeItemList();\r\n            });\r\n        }\r\n\r\n        this.$list\r\n            .on('focus', function () {\r\n                self.focused = true;\r\n            })\r\n            .on('blur', function () {\r\n                self.focused = false;\r\n                setTimeout(function () {\r\n                    if (!self.focused) {\r\n                        self.closeItemList();\r\n\r\n                        if (self.selectedText !== self.$inputField.val())\r\n                            self.clearValue();\r\n                    }\r\n                });\r\n            })\r\n            .on('mousedown', function () {\r\n                self.keepFocus = true;\r\n            });\r\n    };\r\n\r\n    AutoComplete.prototype.handleFocusLost = function () {\r\n        if (this.data.behaviour === 'dropdown') {\r\n            this.clearValue();\r\n        } else if (this.data.behaviour === 'input') {\r\n            // clear the value (the selected id), but keep the text that was inputted by the user\r\n            this.clearValue(true);\r\n        }\r\n\r\n        if (this.data.behaviour !== 'dropdown-with-search') {\r\n            this.results = null;\r\n            this.numberOfLoadedResults = null;\r\n        }\r\n    };\r\n\r\n    AutoComplete.prototype.newSearch = function () {\r\n        if (!this.data.dataSource)\r\n            return;\r\n\r\n        var queryId = this.queryId = _.uniqueId('autocomplete_');\r\n\r\n        var self = this;\r\n        this.piping.queryDispatcher.dispatch(\r\n            this.data.dataSource,\r\n            function (data) {\r\n                if (self.queryId !== queryId)\r\n                    return;\r\n                self.update(data, true, true);\r\n            },\r\n            function (params) {\r\n                self.currentPage = 0;\r\n                self.decorateQuery(params);\r\n            });\r\n    };\r\n\r\n    AutoComplete.prototype.focus = function () {\r\n        this.$inputField.trigger('focus');\r\n    };\r\n\r\n    AutoComplete.prototype.clearValue = function (keepText) {\r\n        if (!keepText) {\r\n            this.$inputField.val('');\r\n            this.clearFilterParameter();\r\n        }\r\n\r\n        if (!this.selectedId)\r\n            return;\r\n\r\n        this.selectedId = null;\r\n        this.selectedItem = null;\r\n        this.selectedText = null;\r\n\r\n        this.results = null;\r\n        this.numberOfLoadedResults = null;\r\n\r\n        if (this.hasSearch)\r\n            this.$displayField\r\n                .text(this.data.watermark || '')\r\n                .addClass('auto-complete-label-placeholder');\r\n\r\n        this.tooglePlaceholder(true);\r\n\r\n        this.updateRequiredIndicator();\r\n        this.triggerEventIfEnabled('deselected'); // should happen after the value is cleared in case it is used in a mapping\r\n        this.triggerEventIfEnabled('changed');\r\n    };\r\n\r\n    AutoComplete.prototype.setValue = function (update) {\r\n        if (update.value === undefined || update.value === null || update.value === '') {\r\n            this.clearValue();\r\n            return;\r\n        }\r\n\r\n        var match = this.findMatchingRowById(update.value);\r\n\r\n        if (match) {\r\n            this.selectItem(match);\r\n        } else {\r\n            this.selectedId = update.value; //set selected id anyway, otherwise when you immediately get the current value after setting it, you would always get nothing\r\n\r\n            var self = this;\r\n            if (self.data.useSecondDataSource) {\r\n                self.piping.parameters.locals.setValue(self.data.secondParameter, update.value);\r\n                self.piping.queryDispatcher.dispatch(\r\n                    self.data.secondDataSource,\r\n                    function (result) {\r\n                        self.outputs = result.outputs;\r\n                        self.checkForResults(result, update);\r\n                    });\r\n            } else {\r\n                var data = {\r\n                    actionId: this.piping.actionId,\r\n                    dataSource: this.data.dataSource,\r\n                    parameters: this.piping.parameters.getNonSystemParameters(),\r\n                    filterValues: [{\r\n                        outputAlias: this.data.keyOutputName,\r\n                        value: update.value\r\n                    }]\r\n                };\r\n\r\n                self.piping.dispatcher.dispatch(\r\n                    'Query/Find',\r\n                    data,\r\n                    function (result) {\r\n                        self.outputs = result.outputs;\r\n                        self.checkForResults(result, update);\r\n                    });\r\n            }\r\n\r\n        }\r\n    };\r\n\r\n    AutoComplete.prototype.findMatchingRowById = function (anId) {\r\n        if (this.results && this.results.length !== 0) {\r\n            var self = this;\r\n            return _.find(this.results, function (item) {\r\n                return item[self.data.keyOutputName] === anId;\r\n            });\r\n        }\r\n        return null;\r\n    };\r\n\r\n    AutoComplete.prototype.selectItem = function (selectedItem) {\r\n        this.selectedItem = selectedItem;\r\n        this.selectedText = (selectedItem[this.data.outputName] || \"\").toString();\r\n        this.selectedId = selectedItem[this.data.keyOutputName];\r\n\r\n        this.tooglePlaceholder(false);\r\n        if (this.hasSearch)\r\n            this.$displayField\r\n                .removeClass('auto-complete-label-placeholder')\r\n                .text(this.selectedText);\r\n        else\r\n            this.$inputField.val(html.strip(this.selectedText));\r\n\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    AutoComplete.prototype.checkForResults = function (result, update) {\r\n        var self = this;\r\n\r\n        if (result.results.length > 0) {\r\n            var addedItem = result.results[0];\r\n            self.selectItem(addedItem);\r\n        } else {\r\n            self.selectedId = update.value;\r\n            self.$inputField.val('');\r\n\r\n            if (self.hasSearch)\r\n                self.$displayField.empty();\r\n        }\r\n    }\r\n\r\n    AutoComplete.prototype.update = function (data, isNewSearch) {\r\n        if (data == undefined)\r\n            return;\r\n\r\n        this.outputs = data.outputs;\r\n\r\n        this.updateAutoCompleteList(isNewSearch, data.results, data.totalNumberOfResults);\r\n\r\n        if (this.afterUpdate) {\r\n            this.afterUpdate();\r\n            this.afterUpdate = null;\r\n        }\r\n        this.fetchNextPageIfNeeded();\r\n    };\r\n\r\n    AutoComplete.prototype.isValid = function () {\r\n        if (!this.requiredData || this.hasValue())\r\n            return true;\r\n        if (this.data.behaviour === 'input')\r\n            return !!this.$inputField.val();\r\n        return false;\r\n    };\r\n\r\n    AutoComplete.prototype.getValue = function () {\r\n        return this.selectedId;\r\n    };\r\n\r\n    AutoComplete.prototype.clearFocusedItem = function () {\r\n        this.getFocusedItem().removeClass('focusedItem');\r\n    };\r\n\r\n    AutoComplete.prototype.setFocusedItem = function (index) {\r\n        this.clearFocusedItem();\r\n        this.getAllItems().eq(index).addClass('focusedItem');\r\n    };\r\n\r\n    AutoComplete.prototype.hasFocusedItem = function () {\r\n        return !!this.$listTable.find('.focusedItem').length;\r\n    };\r\n\r\n    AutoComplete.prototype.getFocusedItem = function () {\r\n        return this.$listTable.find('.focusedItem');\r\n    };\r\n\r\n    AutoComplete.prototype.getFocusedIndex = function () {\r\n        var focusedItem = this.getFocusedItem();\r\n        return this.getAllItems().index(focusedItem);\r\n    };\r\n\r\n    AutoComplete.prototype.getAllItems = function () {\r\n        return this.$listTable.find('tr.item');\r\n    };\r\n\r\n    AutoComplete.prototype.nextItem = function () {\r\n        var index = this.getFocusedIndex() + 1;\r\n        if (index >= this.getAllItems().length)\r\n            index = 0;\r\n        this.setFocusedItem(index);\r\n\r\n        if (index === 0) {\r\n            this.$scrollContainer.scrollTop(0);\r\n        } else {\r\n            var scrollTopOfContainer = this.$scrollContainer.scrollTop();\r\n            var heightOfContainer = this.$scrollContainer.outerHeight();\r\n            var bottomOfContainer = scrollTopOfContainer + heightOfContainer;\r\n\r\n            var $item = this.getFocusedItem();\r\n\r\n            var positionTopOfItem = $item.position().top;\r\n            var heightOfItem = $item.outerHeight();\r\n            var positionBottomOfItem = positionTopOfItem + heightOfItem;\r\n\r\n            var tryToMakeUpForTheHorizontalScrollbar = 25;\r\n            var bestPosition = positionBottomOfItem + tryToMakeUpForTheHorizontalScrollbar;\r\n\r\n            if (bestPosition > scrollTopOfContainer + heightOfContainer)\r\n                this.$scrollContainer.scrollTop(scrollTopOfContainer + (bestPosition - bottomOfContainer));\r\n        }\r\n    };\r\n\r\n    AutoComplete.prototype.previousItem = function () {\r\n        var index = this.getFocusedIndex() - 1;\r\n        var movingToTheLastItem = index < 0;\r\n        if (movingToTheLastItem)\r\n            index = this.getAllItems().length - 1;\r\n        this.setFocusedItem(index);\r\n\r\n        if (movingToTheLastItem) {\r\n            this.$scrollContainer.scrollTop(this.$scrollContainer.innerHeight());\r\n        } else {\r\n            var scrollTopOfContainer = this.$scrollContainer.scrollTop();\r\n\r\n            var $item = this.getFocusedItem();\r\n\r\n            var positionTopOfItem = $item.position().top;\r\n            var addABitOfSpacing = 10;\r\n            var bestPosition = positionTopOfItem - addABitOfSpacing;\r\n\r\n            if (bestPosition < scrollTopOfContainer)\r\n                this.$scrollContainer.scrollTop(scrollTopOfContainer - (scrollTopOfContainer - bestPosition));\r\n        }\r\n    };\r\n\r\n    AutoComplete.prototype.selectCurrentItem = function () {\r\n        this.getFocusedItem().trigger('mousedown');\r\n        this.closeItemList();\r\n    };\r\n\r\n    AutoComplete.prototype.updateAutoCompleteList = function (isNewSearch, results, totalNumberOfResults) {\r\n        this.totalNumberOfResults = totalNumberOfResults;\r\n\r\n        if (this.data.infiniteScroll)\r\n            this.lastPageReached = results.length < this.getPageSize();\r\n\r\n        var headers = {};\r\n\r\n        var self = this;\r\n        _.each(this.outputs, function (value, outputName) {\r\n            if (outputName === 'Id' && outputName === self.data.keyOutputName)\r\n                return;\r\n            if (_.contains(self.data.hiddenColumns, outputName))\r\n                return;\r\n            headers[outputName] = value;\r\n        });\r\n\r\n        if (isNewSearch) {\r\n            this.$listTable.empty();\r\n\r\n            var headerNames = _.keys(headers);\r\n\r\n            if (!this.data.hideHeaders && headerNames.length !== 0) {\r\n                var $header = $('<tr />')\r\n                    .addClass('headers')\r\n                    .addClass('prevent-hover')\r\n                    .appendTo(this.$listTable);\r\n\r\n                if (typeof this.data.styles !== 'string') {\r\n                    style.renderStyles(this, null, $header, null, 'header');\r\n                }\r\n\r\n                _.each(headerNames,\r\n                    function(value) {\r\n                        $header.append($('<th />').text(value));\r\n                    });\r\n            }\r\n\r\n            this.numberOfLoadedResults = results.length;\r\n\r\n            if (this.selectedItem) {\r\n                var notYetLoaded = _.every(results, function(item) {\r\n                    return item[self.data.keyOutputName] !== self.selectedId;\r\n                });\r\n                if (notYetLoaded) {\r\n                    results.unshift(this.selectedItem);\r\n                    this.numberOfLoadedResults++;\r\n                }\r\n            }\r\n        } else {\r\n            this.numberOfLoadedResults += results.length;\r\n\r\n            // the current selection is always shown on the first page\r\n            if (this.selectedItem) {\r\n                var currentSelection = _.find(results, function (item) {\r\n                    return item[self.data.keyOutputName] === self.selectedId;\r\n                });\r\n                if (currentSelection) {\r\n                    var indexOfCurrentSelection = results.indexOf(currentSelection);\r\n                    results.splice(indexOfCurrentSelection, 1);\r\n                    this.numberOfLoadedResults--;\r\n                }\r\n            }\r\n        }\r\n\r\n        _.each(results, function (item) {\r\n            var $row = $('<tr class=\"item\" />')\r\n                .on('mousedown', function () {\r\n                    self.selectItem(item);\r\n                    self.closeItemList();\r\n\r\n                    self.$listTable\r\n                        .find('.selectedItem')\r\n                        .removeClass('selectedItem');\r\n\r\n                    $row.addClass('selectedItem');\r\n\r\n                    self.triggerEventIfEnabled('selected', self.selectedId);\r\n                    self.triggerEventIfEnabled('changed', self.selectedId);\r\n\r\n                    if (self.data.onlyShowSelectedItem)\r\n                        results = null;\r\n                })\r\n                .appendTo(self.$listTable);\r\n\r\n            if (isNewSearch && item[self.data.keyOutputName] === self.selectedId)\r\n                $row.addClass('selectedItem');\r\n\r\n            _.each(headers, function (type, key) {\r\n                var cellValue = item[key];\r\n                if (cellValue === undefined || cellValue === null) {\r\n                    cellValue = \"\";\r\n                }\r\n                var formattedValue = html.strip(self.formatter.convertFromLicquidFormat(type, cellValue));\r\n\r\n                $row.append(\r\n                    $('<td />')\r\n                        .on('mouseenter', function () {\r\n                            self.$listTable.find('tr').removeClass('focusedItem');\r\n                            $row.addClass('focusedItem');\r\n                        })\r\n                        .text(formattedValue));\r\n            });\r\n        });\r\n\r\n        if (!this.data.hideTotal && $.isNumeric(this.totalNumberOfResults))\r\n            this.$listFooter.text(\"Loaded \" + this.numberOfLoadedResults + \" out of \" + this.totalNumberOfResults);\r\n        else\r\n            this.$listFooter.text(\"\");\r\n\r\n        if (this.itemListIsOpen()) {\r\n            if (this.data.behaviour === 'input') {\r\n                // only preselect an exact match\r\n                var search = self.$inputField.val();\r\n                var result = _.find(results, function(row) {\r\n                    return row[self.data.outputName] === search;\r\n                });\r\n                if (result) {\r\n                    var index = _.indexOf(results, result);\r\n                    this.setFocusedItem(index);\r\n                }\r\n            } else if (!this.hasFocusedItem()) {\r\n                this.setFocusedItem(0);\r\n            }\r\n        }\r\n    };\r\n\r\n    AutoComplete.prototype.itemListIsOpen = function () {\r\n        return this.$list.is(':visible');\r\n    };\r\n\r\n    AutoComplete.prototype.openItemList = function () {\r\n        var left = this.$element.offset().left - this.piping.$app.offset().left;\r\n        var top = this.$element.offset().top - this.piping.$app.offset().top + this.$element.height() + 4; //4px offset\r\n        var width = 0;\r\n\r\n        if (this.hasSearch) {\r\n            var width = this.data.popupHasWidth ? this.data.popupWidth : this.$borderWrapper.outerWidth();\r\n        } else {\r\n            var width = this.data.popupHasWidth ? this.data.popupWidth : this.$inputWrapper.outerWidth();\r\n        }\r\n        var availableWidth = this.piping.$app.width() - left;\r\n        if (width > availableWidth)\r\n            left -= (width - availableWidth);\r\n\r\n        var borderWidthOfList = this.$list.outerWidth() - this.$list.innerWidth();\r\n        this.$list\r\n            .css({\r\n                top: top,\r\n                left: left,\r\n                width: width - borderWidthOfList,\r\n                zIndex: modals.getZIndexForPopups()\r\n            })\r\n            .show();\r\n\r\n        var availableHeight = this.piping.$app.height() - top;\r\n\r\n        if (availableHeight > 400)\r\n            availableHeight = 400;\r\n\r\n        // note: we need to insert $inputField into the DOM first before we can read its height\r\n        if (this.hasSearch)\r\n            availableHeight -= this.$inputField.outerHeight();\r\n\r\n        this.$scrollContainer.css('maxHeight', availableHeight);\r\n\r\n        this.$displayField.addClass('auto-complete-open');\r\n        this.$inputWrapper.addClass('auto-complete-open');\r\n\r\n        if (this.data.behaviour === 'dropdown' || this.data.behaviour === 'dropdown-with-search') {\r\n            var $selected = this.$list.find('.selectedItem');\r\n            if ($selected.length === 0) {\r\n                this.setFocusedItem(0);\r\n                this.$scrollContainer.scrollTop(0);\r\n            } else {\r\n                $selected.addClass('focusedItem');\r\n                this.$scrollContainer.scrollTop($selected.position().top);\r\n            }\r\n        }\r\n\r\n        var self = this;\r\n        setTimeout(function () {\r\n            self.blockInfiniteScroll = false;\r\n            self.fetchNextPageIfNeeded();\r\n            self.$inputField.trigger('focus');\r\n        }, 0);\r\n\r\n        this.keepFocus = false;\r\n    };\r\n\r\n    AutoComplete.prototype.closeItemList = function () {\r\n        if (!this.itemListIsOpen())\r\n            return;\r\n\r\n        this.$list.hide();\r\n        this.$displayField.removeClass('auto-complete-open');\r\n        this.$inputWrapper.removeClass('auto-complete-open');\r\n\r\n        this.blockInfiniteScroll = true;\r\n    };\r\n\r\n    AutoComplete.prototype.unsubscribeEventHandlers = function () {\r\n        this.$list.remove();\r\n\r\n        if (this.data.infiniteScroll) {\r\n            this.$scrollContainer.off('scroll', this.onScroll);\r\n        }\r\n    };\r\n\r\n    return AutoComplete;\r\n});\n","define('drops/baiduMaps/baiduMaps',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/drop',\r\n    'lq/style'\r\n], function ($, _, Drop, Style) {\r\n    'use strict';\r\n\r\n    var bmStatuses = {\r\n        notReady: 'notReady',\r\n        loading: 'loading',\r\n        ready: 'ready',\r\n        apiKey: null\r\n    };\r\n\r\n    var bmStatus = bmStatuses.notReady;\r\n    var bmReadyCallbacks = [];\r\n\r\n    var waitForBaiduMaps = function (callback) {\r\n        bmReadyCallbacks.push(callback);\r\n    };\r\n\r\n    var loadBaiduMaps = function (apiKey, callback) {\r\n        waitForBaiduMaps(callback);\r\n\r\n        window.baiduMapsReady = function () {\r\n            _.each(bmReadyCallbacks.splice(0, bmReadyCallbacks.length), function (callback) {\r\n                callback();\r\n            });\r\n        };\r\n        \r\n        var jsFile = 'https://api.map.baidu.com/api?v=2.0&s=1&callback=baiduMapsReady&ak=' + apiKey;\r\n        $.getScript(jsFile);\r\n\r\n        bmStatus = bmStatuses.loading;\r\n    };\r\n\r\n    var defaults = {\r\n        data: {\r\n            mapType: 'BMAP_NORMAL_MAP',\r\n            size: { x: 500, y: 500 },\r\n            showMapTypeButtons: false,\r\n            locationType: 'city',\r\n            city: '北京',\r\n            defaultZoom: 10\r\n        }\r\n    };\r\n\r\n    function BaiduMaps(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize');\r\n\r\n        this.$map = $('<div />')\r\n            .css({\r\n                width: '100%',\r\n                height: '100%'\r\n            })\r\n            .appendTo(this.$element);\r\n\r\n        Style.renderStyles(this);\r\n\r\n        this.usable = false;\r\n    };\r\n\r\n    Drop.extend(BaiduMaps, Drop);\r\n\r\n    BaiduMaps.typeName = 'BaiduMaps';\r\n\r\n    BaiduMaps.prototype.preRender = function () {\r\n        this.applyPosition();\r\n    };\r\n\r\n    BaiduMaps.prototype.postRender = function () {\r\n        this.renderMap();\r\n    };\r\n\r\n    BaiduMaps.prototype.renderMap = function () {\r\n        if (!this.data.apiKey) return;\r\n\r\n        if (bmStatus === bmStatuses.notReady) {\r\n            loadBaiduMaps(this.data.apiKey, this.onReady.bind(this));\r\n        } else if (bmStatus === bmStatuses.loading) {\r\n            waitForBaiduMaps(this.onReady.bind(this));\r\n        } else {\r\n            this.onReady();\r\n        }\r\n\r\n        this.usable = true;\r\n    };\r\n\r\n    BaiduMaps.prototype.onReady = function () {\r\n        this.map = new window.BMap.Map(this.$map[0], {\r\n            mapType: this.getMapType()\r\n        });\r\n        this.map.enableScrollWheelZoom(true);\r\n        this.map.enablePinchToZoom();\r\n\r\n        this.toggleMapTypeControl();\r\n        this.toggleNavigationControl();\r\n\r\n        this.updateLocation();\r\n    };\r\n\r\n    BaiduMaps.prototype.updateLocation = function () {\r\n        if (this.data.locationType === 'city' && this.data.showDefaultCity)\r\n            this.openCity(this.data.city);\r\n        else if (this.data.locationType === 'address' && this.data.showDefaultAddress)\r\n            this.openAddress(this.data.address);\r\n        else if (this.data.locationType === 'gpsCoordinates' && this.data.showDefaultGpsLocation)\r\n            this.openGpsCoordinates(this.data.gpsLongitude, this.data.gpsLatitude);\r\n        else if (this.data.locationType === 'bd09Coordinates' && this.data.showDefaultBd09Location)\r\n            this.openBaiduCoordinates(this.data.bd09Longitude, this.data.bd09Latitude);\r\n        else if (this.data.locationType === 'userCoordinates')\r\n            this.openLocationOfUser();\r\n        else if (this.data.locationType === 'userCity')\r\n            this.openCityOfUser();\r\n    };\r\n\r\n    BaiduMaps.prototype.toggleMapTypeControl = function () {\r\n        if (this.data.showMapTypeButtons) {\r\n            if (!this.mapTypeControl)\r\n                this.mapTypeControl = new window.BMap.MapTypeControl();\r\n            this.map.addControl(this.mapTypeControl);\r\n        } else if (this.mapTypeControl) {\r\n            this.map.removeControl(this.mapTypeControl);\r\n        }\r\n    };\r\n\r\n    BaiduMaps.prototype.toggleNavigationControl = function () {\r\n        if (this.data.showNavigationControl) {\r\n            if (!this.navigationControl)\r\n                this.navigationControl = new window.BMap.NavigationControl();\r\n            this.map.addControl(this.navigationControl);\r\n        } else if (this.navigationControl) {\r\n            this.map.removeControl(this.navigationControl);\r\n        }\r\n    };\r\n\r\n    BaiduMaps.prototype.openCity = function (city) {\r\n        this.map.setCurrentCity(city);\r\n        this.map.centerAndZoom(city, this.data.defaultZoom);\r\n    };\r\n\r\n    BaiduMaps.prototype.openAddress = function (address) {\r\n        var geoAddress = new window.BMap.Geocoder();\r\n\r\n        var self = this;\r\n        geoAddress.getPoint(address,\r\n            function (point) {\r\n                if (!point) return;\r\n\r\n                self.map.centerAndZoom(point, self.data.defaultZoom);\r\n            });\r\n    };\r\n\r\n    BaiduMaps.prototype.openBaiduCoordinates = function (longitude, latitude) {\r\n        var point = new window.BMap.Point(longitude, latitude);\r\n        this.map.centerAndZoom(point, this.data.defaultZoom);\r\n    };\r\n\r\n    BaiduMaps.prototype.openGpsCoordinates = function (longitude, latitude) {\r\n        var points = [new window.BMap.Point(longitude, latitude)];\r\n        var convertor = new window.BMap.Convertor();\r\n        \r\n        var self = this;\r\n        convertor.translate(points,\r\n            1, // from GPS\r\n            5, // to Baidu\r\n            this.data.apiKey,\r\n            function (data) {\r\n                if (data.status !== 0) return;\r\n                self.map.centerAndZoom(data.points[0], self.data.defaultZoom);\r\n            });\r\n    };\r\n\r\n    BaiduMaps.prototype.openLocationOfUser = function () {\r\n        var geolocation = new window.BMap.Geolocation();\r\n\r\n        var self = this;\r\n        geolocation.getCurrentPosition(function (r) {\r\n            if (this.getStatus() !== window.BMAP_STATUS_SUCCESS) return;\r\n            self.map.centerAndZoom(r.point, self.data.defaultZoom);\r\n        }, { enableHighAccuracy: true });\r\n    };\r\n\r\n    BaiduMaps.prototype.openCityOfUser = function () {\r\n        var theCity = new window.BMap.LocalCity();\r\n\r\n        var self = this;\r\n        theCity.get(function (result) {\r\n            self.map.setCurrentCity(result.name);\r\n            self.map.centerAndZoom(result.name, self.data.defaultZoom);\r\n        });\r\n    };\r\n\r\n    BaiduMaps.prototype.clearValue = $.noop;\r\n\r\n    BaiduMaps.prototype.setValue = function (update) {\r\n        switch(this.data.locationType) {\r\n\r\n            case 'city':\r\n                this.openCity(update.value);\r\n                break;\r\n\r\n            case 'address':\r\n                this.openAddress(update.value);\r\n                break;\r\n\r\n            case 'gpsCoordinates':\r\n                var gpsParts = update.value.split(',');\r\n                this.openGpsCoordinates(gpsParts[0], gpsParts[1]);\r\n                break;\r\n\r\n            case 'bd09Coordinates':\r\n                var baiduParts = update.value.split(',');\r\n                this.openBaiduCoordinates(baiduParts[0], baiduParts[1]);\r\n                break;\r\n\r\n        }\r\n    };\r\n    \r\n    BaiduMaps.prototype.getMapType = function () {\r\n        return window[this.data.mapType];\r\n    };\r\n\r\n    return BaiduMaps;\r\n});\n","define('drops/barCode/barCode',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'lq',\r\n    'lq/tooltip'\r\n], function ($, Drop, Style, util, lq, Tooltip) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        title: {\r\n            option: Tooltip.hardcoded\r\n        }\r\n    }\r\n\r\n    function Barcode(options) {\r\n        Drop.call(this, $('<div />'), defaults, options);\r\n        var self = this;\r\n       \r\n        self.$image = $('<img />')\r\n            .on('load', function () {\r\n                self.$image.show();\r\n            })\r\n            .hide()\r\n            .appendTo(self.$element);\r\n\r\n        self.$element\r\n\t        .addClass('boxToBorderSize')\r\n\t        .css({\r\n\t            whiteSpace: 'pre-wrap'\r\n\t        });\r\n        this.tooltip = new Tooltip(this, this.data.title, this.$element);\r\n        \r\n\r\n        Style.renderStyles(self);\r\n\r\n        self.setValue(null);\r\n        return self;\r\n    };\r\n\r\n    Drop.extend(Barcode, Drop);\r\n\r\n    Barcode.typeName = 'Barcode';\r\n\r\n    Barcode.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n        this.tooltip.update();\r\n    };\r\n    \r\n    Barcode.prototype.clearValue = function () {\r\n        this.$image.attr('src', '');\r\n    };\r\n\r\n    Barcode.prototype.rgba2hex = function (rgba) {\r\n        var rgb = rgba.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\r\n        return (rgb && rgb.length === 4) ?\r\n          (\"0\" + parseInt(rgb[1], 10).toString(16)).slice(-2) +\r\n          (\"0\" + parseInt(rgb[2], 10).toString(16)).slice(-2) +\r\n          (\"0\" + parseInt(rgb[3], 10).toString(16)).slice(-2) : 'FFFFFF';\r\n    }\r\n\r\n    Barcode.prototype.setValue = function (update) {\r\n        var self = this;\r\n        \r\n        var value = (update === null) ? self.data.value : util.convertListOfKeyValuesToObject(update.value);\r\n        if (!value) {\r\n            self.$image.hide();\r\n            return;\r\n        }\r\n\r\n        var filePath = lq.getTenantUrl(\"GeneratedContent/Barcode/\"\r\n                                            + \"?code=\" + value\r\n                                            + \"&height=\" + (self.data.size.y - self.data.styles.normal.padding.top - self.data.styles.normal.padding.bottom - (self.data.styles.normal.border.width * 2))\r\n                                            + \"&width=\" + (self.data.size.x - self.data.styles.normal.padding.left - self.data.styles.normal.padding.right - (self.data.styles.normal.border.width*2))\r\n                                            + \"&type=\" + self.data.selectedType\r\n                                            + \"&barcodeColor=\" + self.rgba2hex(self.data.styles.normal.font.color)\r\n                                            + \"&backgroundColor=\" + self.rgba2hex(self.data.styles.normal.background.color)\r\n                                            + \"&fontFamily=\" + self.data.styles.normal.font.fontFamily.split(\",\")[0].replace(/'/g, \"\")\r\n                                            + \"&fontSize=\" + self.data.styles.normal.font.size,\r\n                                            + \"&fontColor=\" + self.rgba2hex(self.data.styles.normal.font.color)\r\n                                            + \"&hideLabel=\" + self.data.hideLabel);\r\n\r\n        self.$image\r\n            .hide()\r\n            .attr('src', filePath);\r\n\r\n        if (self.$image[0].complete) {\r\n            self.$image.trigger('load');\r\n        }\r\n    };\r\n\r\n    return Barcode;\r\n});\n","define('drops/boolImageInput/boolImageInput',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq',\r\n    'lq/util',\r\n    'lq/constants',\r\n    'lq/required',\r\n    'lq/tooltip'\r\n], function ($, Drop, Style, lq, util, constants, Required, Tooltip) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            size: { x: 50, y: 50 },\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded'\r\n            },\r\n            isTriStateEnabled: false,\r\n            title: {\r\n                option: Tooltip.hardcoded\r\n            },\r\n        }\r\n    };\r\n\r\n    function BoolImageInput(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing);\r\n        this.value = false;\r\n\r\n        this.$img = $('<div />')\r\n            .attr('tabindex', this.data.tabIndex)\r\n            .addClass('bool-input-image')\r\n            .addClass(this.data.value === true ? 'bool-input-true' \r\n                : (this.data.value === false ? 'bool-input-false' : 'bool-input-null'))\r\n            .appendTo(this.$element);\r\n\r\n        this.changeValueTo(this.data.defaultValue || false);\r\n\r\n        this.tooltip = new Tooltip(this, this.data.title, this.$img);\r\n\r\n        if (!this.data.readOnly && !this.designData) {\r\n            this.$img\r\n\t\t\t\t.css({ cursor: 'pointer' })\r\n                .on('click', this.handleClickAndTriggerEvents.bind(this));\r\n        }\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize')\r\n            .css({\r\n                whiteSpace: 'pre-wrap'\r\n            });\r\n\r\n        if (this.data.readOnly)\r\n            this.$img.prop('readonly', true);\r\n    }\r\n\r\n    Drop.extend(BoolImageInput, Drop);\r\n\r\n    BoolImageInput.typeName = 'BoolImageInput';\r\n\r\n    BoolImageInput.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.piping.required.apply(this);\r\n        Required.prototype.addRemoveRequiredIndicator(this);\r\n        this.renderStyles();\r\n        this.applyPosition();\r\n        this.tooltip.update();\r\n    };\r\n\r\n    BoolImageInput.prototype.postRender = function () {\r\n        var self = this;\r\n        var $labels = $(\"label[for='\" + this.rootDrop.instanceId + '_' + this.data.id + \"']\");\r\n\r\n        $labels.each(function () {\r\n            $(this).on('click', self.handleClickAndTriggerEvents.bind(self));\r\n        });\r\n    };\r\n\r\n    BoolImageInput.prototype.getValue = function () {\r\n        return this.value;\r\n    };\r\n\r\n    BoolImageInput.prototype.handleClick = function () {\r\n        if (!this.data.isTriStateEnabled)\r\n            this.changeValueTo(!this.value);\r\n        else {\r\n            if (this.value) {\r\n                this.changeValueTo(!this.value);\r\n            } else if (this.value === false) {\r\n                this.changeValueTo(null);\r\n            } else {\r\n                this.changeValueTo(true);\r\n            }\r\n        }\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    BoolImageInput.prototype.clearValue = function () {\r\n        this.changeValueTo(false);\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    BoolImageInput.prototype.setValue = function (update) {\r\n        var isTrue = this.isTrue(update);\r\n        this.changeValueTo(isTrue);\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    BoolImageInput.prototype.getNullImageUrl = function () {\r\n        if (!this.data.nullImage)\r\n            return lq.getCdnUrl('Drops/BoolImageInput/Defaults/null.png');\r\n        return lq.getTenantUploads(this.data.nullImage);\r\n    };\r\n\r\n    BoolImageInput.prototype.getFalseImageUrl = function () {\r\n        if (!this.data.falseImage)\r\n            return lq.getCdnUrl(this.data.defaultFalseImage);\r\n        return lq.getTenantUploads(this.data.falseImage);\r\n    };\r\n\r\n    BoolImageInput.prototype.getTrueImageUrl = function () {\r\n        if (!this.data.trueImage)\r\n            return lq.getCdnUrl(this.data.defaultTrueImage);\r\n        return lq.getTenantUploads(this.data.trueImage);\r\n    };\r\n\r\n    BoolImageInput.prototype.changeValueTo = function (value) {\r\n        var imageUrl;\r\n        if (value === true) {\r\n            imageUrl = this.getTrueImageUrl();\r\n            this.$img.removeClass('bool-input-false bool-input-null').addClass('bool-input-true');\r\n        } else if (value === false) {\r\n            imageUrl = this.getFalseImageUrl();\r\n            this.$img.removeClass('bool-input-true bool-input-null').addClass('bool-input-false');\r\n        } else {\r\n            imageUrl = this.getNullImageUrl();\r\n            this.$img.removeClass('bool-input-true bool-input-false').addClass('bool-input-null');\r\n        }\r\n\r\n        if ((value === true && this.data.trueImage) || (value === false && this.data.falseImage) || ((value === undefined || value === null) && this.data.nullImage)){\r\n            this.$img[0].style.removeProperty('background-image');\r\n            this.$img[0].style.setProperty('background-image', `url(${imageUrl})`, 'important'); // jquery can't apply !important\r\n        }\r\n        else this.$img[0].style.removeProperty('background-image');\r\n\r\n        this.value = value;\r\n    };\r\n\r\n    BoolImageInput.prototype.renderStyles = function () {\r\n        Style.renderStyles(this);\r\n    };\r\n\r\n    BoolImageInput.prototype.isTrue = function (update) {\r\n        if (!this.data.isTriStateEnabled) {\r\n            return update.value === true ||\r\n            (update.type === constants.valueTypes.string\r\n                && update.value\r\n                && update.value.toString().toLowerCase() === 'true');\r\n        } else if (update.value === true ||\r\n            (update.type === constants.valueTypes.string\r\n                && update.value\r\n                && update.value.toString().toLowerCase() === 'true')) {\r\n            return true;\r\n        } else if (update.value === false ||\r\n            (update.type === constants.valueTypes.string\r\n                && update.value\r\n                && update.value.toString().toLowerCase() === 'false')) {\r\n            return false;\r\n        }\r\n        return null;\r\n    };\r\n\r\n    BoolImageInput.prototype.handleClickAndTriggerEvents = function () {\r\n        this.handleClick();\r\n\r\n        var isChecked = this.value;\r\n        this.triggerEventIfEnabled('toggled', isChecked);\r\n        if (isChecked === true) {\r\n            this.triggerEventIfEnabled('checked');\r\n        } else if (isChecked === false) {\r\n            this.triggerEventIfEnabled('unchecked');\r\n        } else {\r\n            this.triggerEventIfEnabled('nullchecked');\r\n        }\r\n    };\r\n\r\n    return BoolImageInput;\r\n});\n","define('drops/boolInput/boolInput',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'lq/constants',\r\n    'lq/required',\r\n    'lq/tooltip'\r\n], function ($, Drop, Style, util, constants, Required, Tooltip) {\r\n\t'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            useBuiltInStyle: true,\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded'\r\n            },\r\n            title: {\r\n                option: Tooltip.hardcoded\r\n            },\r\n        }\r\n    };\r\n\r\n    function BoolInput(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing);\r\n\r\n        this.$element\r\n            .css({\r\n                // backwards compatibility fix (rendering issue)\r\n                lineHeight: '1'\r\n            })\r\n\t        .addClass('boxToBorderSize');\r\n        this.tooltip = new Tooltip(this, this.data.title, this.$element);\r\n    };\r\n\r\n    Drop.extend(BoolInput, Drop);\r\n\r\n    BoolInput.typeName = 'BoolInput';\r\n\r\n    BoolInput.prototype.renderCheckbox = function () {\r\n        this.$checkbox = $('<input type = \"checkbox\" />')\r\n            .prop('checked', this.data.defaultValue)\r\n            .attr('name', this.data.name)\r\n            .attr('id', this.rootDrop.instanceId + '_' + this.data.id)\r\n            .attr('tabindex', this.data.tabIndex)\r\n            .css({\r\n                margin: '0'\r\n            });\r\n\r\n        if (this.data.useBuiltInStyle) {\r\n            this.$checkbox\r\n                .appendTo(this.$element);\r\n        } else {\r\n            this.$wrapper = $('<label class=\"customCheckState\" />')\r\n                .append(this.$checkbox)\r\n                .append($('<div class=\"drop-text-content customCheckState-tick\"></div>')\r\n                    .append($('<div>&#x2714</div>')))\r\n                .appendTo(this.$element);\r\n\r\n            Style.renderStyles(this, null, this.$wrapper);\r\n        }\r\n\r\n        var self = this;\r\n        this.$checkbox.on('change', function () {\r\n            var isChecked = self.$checkbox.is(':checked');\r\n            self.triggerEventIfEnabled('toggled', isChecked);\r\n            self.triggerEventIfEnabled(isChecked ? 'checked' : 'unchecked');\r\n            self.updateRequiredIndicator();\r\n        });\r\n    };\r\n\r\n    BoolInput.prototype.preRender = function () {\r\n        this.renderCheckbox();\r\n        this.piping.visibility.apply(this);\r\n        this.piping.required.apply(this);\r\n        Required.prototype.addRemoveRequiredIndicator(this);\r\n\r\n        this.applyPosition();\r\n        this.initialize();\r\n        this.tooltip.update();\r\n    };\r\n\r\n    BoolInput.prototype.initialize = function () {\r\n        if (this.data.readOnly)\r\n            this.$checkbox.prop('disabled', true);\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    BoolInput.prototype.getValue = function () {\r\n        return this.$checkbox.is(':checked');\r\n    };\r\n\r\n    BoolInput.prototype.clearValue = function () {\r\n        this.$checkbox.prop('checked', false);\r\n    };\r\n\r\n    BoolInput.prototype.setValue = function (update) {\r\n        this.$checkbox.prop('checked', this.isTrue(update));\r\n    };\r\n\r\n    BoolInput.prototype.isTrue = function (update) {\r\n        return update.value === true ||\r\n            (update.type === constants.valueTypes.string\r\n                && update.value\r\n                && update.value.toString().toLowerCase() === 'true');\r\n    };\r\n    \r\n    return BoolInput;\r\n});\n","define('drops/businessProcess/businessProcess',['jquery',\r\n\t\t'underscore',\r\n\t\t'lq/drop'\r\n], function (\r\n\t\t$,\r\n\t\t_,\r\n\t\tDrop) {\r\n        'use strict';\r\n\r\n        var defaults = {\r\n            data: {\r\n                type: 'BusinessProcess'\r\n            }\r\n        };\r\n\r\n        function BusinessProcess(model) {\r\n            Drop.call(this, $('<div class=\"licquid-drops-pool\" style=\"overflow:hidden;\" >&nbsp;</div>'), defaults, model);\r\n            Drop.rootDrop = this;\r\n\r\n            this.applyPosition();\r\n\r\n            this.$element.css({\r\n                zIndex: '5999'\r\n            });\r\n        };\r\n\r\n        Drop.extend(BusinessProcess, Drop);\r\n\r\n        BusinessProcess.typeName = 'BusinessProcess';\r\n    \r\n        return BusinessProcess;\r\n    });\r\n\n","define('lq/dropFactory',[\r\n    'underscore'\r\n], function (_) {\r\n    'use strict';\r\n\r\n    var defaultCreationOptions = {\r\n        dynamic: false\r\n    };\r\n\r\n    // todo svb - do caching properly\r\n    var DropFactory = function (typesProvider, keepTrackOfDrops) {\r\n        this.typesProvider = typesProvider;\r\n        this.keepTrackOfDrops = keepTrackOfDrops;\r\n\r\n        this.createdDropsById = {};\r\n        this.createdDropsByName = {};\r\n        this.createdDrops = [];\r\n        this.createdDropsByViewModelKey = {};\r\n    };\r\n\r\n    DropFactory.prototype.clearCache = function () {\r\n        this.createdDropsById = {};\r\n        this.createdDropsByName = {};\r\n        this.createdDrops = [];\r\n        this.createdDropsByViewModelKey = {};\r\n    };\r\n\r\n    DropFactory.prototype.createDrop = function (model, creationOptions) {\r\n        creationOptions = creationOptions || defaultCreationOptions;\r\n\r\n        var Drop = this.typesProvider.get(model.data.type);\r\n        var drop = new Drop(model);\r\n\r\n        if (this.keepTrackOfDrops && !creationOptions.dynamic) { // dynamically created drops (like list items and their children) don't need to be looked up and would cause a memory leak here\r\n            this.createdDrops.push(drop); // TODO: potential memory leak, we will need to dispose/release drops when they are no longer needed (e.g. list items)\r\n            this.createdDropsById[model.data.id] = drop; // TODO: potential memory leak, we will need to dispose/release drops when they are no longer needed (e.g. list items)\r\n\r\n            if (model.data.name)\r\n                this.createdDropsByName[model.data.name] = drop; //potential memory leak, we will need to dispose/release drops when they are no longer needed (e.g. list items)\r\n\r\n            if (model.data.viewModelKey)\r\n                this.createdDropsByViewModelKey[model.data.viewModelKey] = drop; //potential memory leak, we will need to dispose/release drops when they are no longer needed (e.g. list items)\r\n        }\r\n\r\n        return drop;\r\n    };\r\n\r\n    DropFactory.prototype.createDrops = function (models, creationOptions) {\r\n        var self = this;\r\n        return _.map(models, function (model) {\r\n            return self.createDrop(model, creationOptions);\r\n        });\r\n    };\r\n\r\n    DropFactory.prototype.getAllChildMorphs = function (models, results) {\r\n        var drops = results || [];\r\n\r\n        var self = this;\r\n        _.each(models, function (model) {\r\n            drops.push(model);\r\n            self.getAllChildMorphs(model.childDrops, drops);\r\n        });\r\n\r\n        return drops;\r\n    };\r\n\r\n    DropFactory.prototype.findDropById = function (id) {\r\n        return this.createdDropsById[id];\r\n    };\r\n\r\n    DropFactory.prototype.findDropByName = function (name) {\r\n        return this.createdDropsByName[name];\r\n    };\r\n\r\n    DropFactory.prototype.findDropByViewModelKey = function (viewModelKey) {\r\n        return this.createdDropsByViewModelKey[viewModelKey];\r\n    };\r\n\r\n    DropFactory.prototype.getAllDrops = function () {\r\n        return this.createdDrops;\r\n    };\r\n\r\n    return DropFactory;\r\n});\n","define('drops/drawings/businessprocessEvents',['jquery','underscore'],\r\n    function ($, _) {\r\n        'use strict';\r\n\r\n        function BusinessProcessEvents() {\r\n            this.eventRegistrations = {};\r\n        }\r\n\r\n        BusinessProcessEvents.prototype.addListener = function (event, listener, optionalOwner) {\r\n            if (!this.eventRegistrations[event])\r\n                this.eventRegistrations[event] = [];\r\n            this.eventRegistrations[event].push({\r\n                listener: listener,\r\n                owner: optionalOwner\r\n            });\r\n        };\r\n\r\n        BusinessProcessEvents.prototype.removeListener = function (event, owner) {\r\n            var registrations = this.eventRegistrations[event];\r\n            var registration = _.findWhere(registrations, { owner: owner });\r\n            if (registration) {\r\n                var index = registrations.indexOf(registration);\r\n                registrations.splice(index, 1);\r\n            }\r\n        };\r\n\r\n        BusinessProcessEvents.prototype.informListeners = function (event) {\r\n            if (!this.eventRegistrations[event])\r\n                return;\r\n\r\n            var args = Array.prototype.slice.call(arguments, 1);\r\n            _.forEach(this.eventRegistrations[event], function (registration) {\r\n                registration.listener.apply(null, args);\r\n            });\r\n        };\r\n\r\n        return new BusinessProcessEvents();\r\n    });\r\n\n","define('lq/point',['lq/drop'], function (Drop) {\r\n\t'use strict';\r\n\r\n\tvar Point = function(x, y) {\r\n\t\tthis.x = x || 0;\r\n\t\tthis.y = y || 0;\r\n\t};\r\n\t\r\n\tPoint.prototype.fromPosition = function(position) {\r\n\t\tthis.x = position.left;\r\n\t\tthis.y = position.top;\r\n\t\treturn this;\r\n\t};\r\n\r\n\tPoint.prototype.fromPositionToZoomPosition = function (position) {\r\n\t    this.x = position.left * (1 / Drop.zoomlevel);\r\n\t    this.y = position.top * (1 / Drop.zoomlevel);\r\n\t    return this;\r\n\t};\r\n\t\r\n\tPoint.prototype.fromPositionXAndY = function (position) {\r\n\t\tthis.x = position.x;\r\n\t\tthis.y = position.y;\r\n\t\treturn this;\r\n\t};\r\n\r\n\tPoint.prototype.x = null;\r\n\tPoint.prototype.y = null;\r\n\r\n\tPoint.prototype.toPositionXAndY = function () {\r\n\t    return {\r\n\t        x: this.x,\r\n\t        y: this.y\r\n\t    };\r\n\t};\r\n\r\n\tPoint.prototype.toPosition = function () {\r\n\t    return {\r\n\t        left: this.x,\r\n\t        top: this.y\r\n\t    };\r\n\t};\r\n\r\n\tPoint.prototype.add = function (v) {\r\n\t\treturn new Point(this.x + v.x, this.y + v.y);\r\n\t};\r\n\r\n\tPoint.prototype.subtract = function (v) {\r\n\t\treturn new Point(this.x - v.x, this.y - v.y);\r\n\t};\r\n\r\n\tPoint.prototype.multiply = function (v) {\r\n\t\treturn new Point(this.x * v, this.y * v);\r\n\t};\r\n\r\n\tPoint.prototype.divide = function (v) {\r\n\t\treturn new Point(this.x / v, this.y / v);\r\n\t};\r\n\r\n\tPoint.prototype.abs = function () {\r\n\t\treturn new Point(Math.abs(this.x), Math.abs(this.y));\r\n\t   };\r\n\r\n\tPoint.prototype.clone = function () {\r\n\t\treturn new Point(this.x, this.y);\r\n\t};\r\n\r\n\tPoint.prototype.distance = function (v) {\r\n\t\tvar delta = this.subtract(v);\r\n\t\treturn Math.sqrt(delta.multiplyScalar(delta));\r\n\t};\r\n\r\n\tPoint.prototype.multiplyScalar = function (v) {\r\n\t\treturn this.x * v.x + this.y * v.y;\r\n\t};\r\n\r\n\tPoint.prototype.rot90 = function () {\r\n\t\treturn new Point(-this.y, this.x);\r\n\t};\r\n\r\n\tPoint.prototype.rot270 = function () {\r\n\t\treturn new Point(this.y, -this.x);\r\n\t};\r\n\r\n\treturn Point;\r\n\r\n});\r\n\r\n\n","define('lq/design/jqueryExtensions',[\r\n    'jquery'\r\n], function ($) {\r\n    'use strict';\r\n\r\n    var positionWithoutTransform = function () {\r\n        var originalTtransform = this.css('transform');\r\n        this.css('transform', '');\r\n        //var result = this.position();\r\n        var result = { top: this[0].offsetTop, left: this[0].offsetLeft };\r\n        if (originalTtransform) {\r\n            this.css('transform', originalTtransform);\r\n        }\r\n        return result;\r\n    };\r\n    \r\n    var enterKey = function (callback) {\r\n        return this.each(function () {\r\n            $(this).on('keypress', function (ev) {\r\n                var keycode = ev.keyCode ? ev.keyCode : ev.which;\r\n                if (keycode === 13) callback.call(this, ev);\r\n            });\r\n        });\r\n    };\r\n\r\n    $.fn.extend({\r\n        positionWithoutTransform: positionWithoutTransform,\r\n        enterKey: enterKey\r\n    });\r\n\r\n    $.fn.naturalDimensions = function () {\r\n        return this.map(function () {\r\n            if (this.naturalWidth !== undefined) {\r\n                return {\r\n                    width: this.naturalWidth,\r\n                    height: this.naturalHeight\r\n                };\r\n            }\r\n\r\n            // fallback for older browsers (e.g. IE8 and lower)\r\n            var inMemoryCopy = new Image();\r\n            inMemoryCopy.src = $(this).attr('src');\r\n            return {\r\n                width: inMemoryCopy.width,\r\n                height: inMemoryCopy.height\r\n            };\r\n        });\r\n    };\r\n\r\n});\r\n\n","define('lq/design/editors/dropExtensionsClicks',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/drop',\r\n    'lq/point',\r\n    'lq/util',\r\n    'lq/style',\r\n    'lq/design/jqueryExtensions'\r\n], function ($, _, Drop, Point, util, Style) {\r\n\t'use strict';\r\n\r\n\tvar defaults = function () {\r\n\t\treturn {\r\n\t\t\t$target: null,\r\n\t\t    drag: false,\r\n\t\t    revertWhenDroppedOffTarget: false,\r\n\t\t    getDropTargets: function () { return []; },\r\n\t\t\tdropToDrag: null,\r\n\t\t\tignoreChildren: false,\r\n\t\t\tbeforeDrag: function () {\r\n\t\t\t    this.saveTargets();\r\n\t\t\t    this.dropToDrag.$element.addClass('dragging');\r\n\t\t\t},\r\n\t\t\tafterDrag: function () {\r\n\t\t\t    this.dropToDrag.$element.removeClass('dragging');\r\n\t\t\t    this.highlightTargets(false);\r\n\t\t\t    var overlappingTargets = this.dropToDrag.getOverlappingDrops(this.targets);\r\n\t\t\t    if (overlappingTargets.length)\r\n\t\t\t        this.droppedOnTarget(overlappingTargets[0]);\r\n\t\t\t    else\r\n\t\t\t        this.droppedOffTarget();\r\n\t\t\t},\r\n\t\t\tdragFunc: function (newPos, drop, target, startPos, extraInfo) {\r\n\t\t\t    this.highlightTargets(true);\r\n\t\t\t    drop.dragToPosition(newPos);\r\n\t\t\t},\r\n\t\t\tsaveTargets: function () {\r\n\t\t\t    this.targets = this.getDropTargets();\r\n\t\t\t},\r\n\t\t\thighlightTargets: function (state) {\r\n\t\t\t    var customState = state ? 'dragTarget' : null;\r\n\t\t\t    _.each(this.targets, function (targetDrop) {\r\n\t\t\t        Style.renderStyles(targetDrop, null, null, null, customState);\r\n\t\t\t    });\r\n\t\t\t    var overlappingTargets = this.dropToDrag.getOverlappingDrops(this.targets);\r\n\t\t\t    if (state && overlappingTargets.length)\r\n\t\t\t        Style.renderStyles(overlappingTargets[0], null, null, null, 'dragHover');\r\n\t\t\t},\r\n\t\t\tdroppedOnTarget: function (targetDrop) { },\r\n\t\t\tdroppedOffTarget: function () {\r\n\t\t\t    if (this.revertWhenDroppedOffTarget)\r\n\t\t\t        this.dropToDrag.animateBackToStart();\r\n\t\t\t},\r\n            dragIgnoreOffset: false,\r\n\t\t\tclick: $.noop,\r\n\t\t\tdoubleClick: $.noop,\r\n            snapGridSize: null\r\n\t\t};\r\n\t};\r\n\r\n\tvar rectanglesOverlap = function (left1, top1, right1, bottom1, left2, top2, right2, bottom2) {\r\n\t    if (left1 > right2 || left2 > right1)\r\n\t        return false;\r\n\t    if (top1 > bottom2 || top2 > bottom1)\r\n\t        return false;\r\n\t    return true;\r\n\t};\r\n\r\n\tDrop.prototype.getOverlappingDrops = function (drops) {\r\n\t    var self = this;\r\n\t    var left = this.data.position.x;\r\n\t    var top = this.data.position.y;\r\n\t    var right = this.data.position.x + this.data.size.x;\r\n\t    var bottom = this.data.position.y + this.data.size.y;\r\n\r\n\t    return _.filter(drops, function (drop) {\r\n\t        return rectanglesOverlap(left, top, right, bottom,\r\n                drop.data.position.x, drop.data.position.y, drop.data.position.x + drop.data.size.x, drop.data.position.y + drop.data.size.y);\r\n\t    });\r\n\t};\r\n\r\n\tDrop.prototype.animateBackToStart = function () {\r\n\t    var self = this;\r\n\t    if (self.initialPosition)\r\n\t        self.$element.animate({\r\n\t            left: self.initialPosition.x,\r\n\t            top: self.initialPosition.y\r\n\t        }, {\r\n\t            duration: 'slow',\r\n\t            queue: false,\r\n\t            complete: function () {\r\n\t                self.dragToPosition(self.initialPosition);\r\n\t            }\r\n\t        });\r\n\t};\r\n\r\n\tDrop.prototype.getCurrentPosition = function () {\r\n\t    if (!this.data.centered)\r\n\t        return new Point().fromPositionToZoomPosition(this.$element.position());\r\n\r\n\t    // WHY When centering a drop we apply 'auto' to the 'margin-left' and 'margin-right' properties.\r\n\t    // For an element that is positioned absolute automargin does not work unless you set 'left'\r\n\t    // and 'right' to '0'. Unfortunately this means when calling position() on $element we will\r\n        // get the wrong 'left' value\r\n\t    var leftMargin = (this.$element.parent().innerWidth() - this.$element.width()) / 2;\r\n\t    return new Point(leftMargin, this.$element.position().top);\r\n\t};\r\n\r\n    Drop.prototype.setZoomLevel = function (value) {\r\n        Drop.zoomlevel = value;\r\n    };\r\n    Drop.prototype.getZoomLevel = function () {\r\n        return Drop.zoomlevel;\r\n    };\r\n\tDrop.prototype.getCurrentSize = function () {\r\n\t    return new Point(this.$element.width(), this.$element.height());\r\n\t};\r\n\r\n    Drop.prototype.dragToPosition = function (newPos) {\r\n\t    var centered = this.data.centered;\r\n\t    /*var $parent = this.$element.offsetParent();\r\n\t    var position = this.$element.position();*/\r\n\r\n\t    var oldLeft = this.data.position.x;//position.left / scalePercentage;\r\n\t    var newLeft = newPos.x;// + $parent.scrollLeft();\r\n\t    var oldTop = this.data.position.y;//position.top / scalePercentage;\r\n\t    var newTop = newPos.y;// + $parent.scrollTop();\r\n\t\t\r\n\r\n\t\tif (newLeft < this.offsetLeft) {\r\n\t\t\tnewLeft = this.offsetLeft;\r\n\t\t}\r\n\t\tif (newLeft + this.$element[0].offsetWidth > this.poolWidth + this.offsetLeft) {\r\n\t\t\tnewLeft = this.poolWidth - this.$element[0].offsetWidth + this.offsetLeft;\r\n\t\t}\r\n\r\n\t\tif (newTop < this.offsetTop) {\r\n\t\t\tnewTop = this.offsetTop;\r\n\t\t}\r\n\t\tif (newTop + this.$element[0].offsetHeight > this.poolHeight + this.offsetTop) {\r\n\t\t\tnewTop = this.poolHeight - this.$element[0].offsetHeight + this.offsetTop;\r\n\t\t}\r\n\r\n\t    this.data.position = new Point(centered ? oldLeft : newLeft, newTop);\r\n\r\n\t    if (this.data.top !== null && this.data.top !== undefined) {\r\n\t        this.data.top = newTop;\r\n\t    }\r\n\r\n\t    if (this.data.bottom !== null && this.data.bottom !== undefined) {\r\n\t        this.data.bottom = this.data.bottom - (newTop - oldTop);\r\n\t    }\r\n\r\n\t\tif (this.data.left !== null && this.data.left !== undefined) {\r\n\t\t\tthis.data.left = newLeft;\r\n\t\t}\r\n\r\n\t\tif (this.data.right !== null && this.data.right !== undefined) {\r\n\t\t\tthis.data.right = this.data.right - (newLeft - oldLeft);\r\n\t\t}\r\n\r\n\t    if (this.anchor) {\r\n\t        this.anchor.top = this.data.top;\r\n\t        this.anchor.bottom = this.data.bottom;\r\n\t        this.anchor.left = this.data.left;\r\n\t        this.anchor.right = this.data.right;\r\n        }\r\n\r\n\t    this.applyPosition();\r\n\r\n        if (this.updatePositionIndicator)\r\n            this.updatePositionIndicator();\r\n\r\n        if (this.triggerDropMoved)\r\n            this.triggerDropMoved();\r\n    };\r\n\r\n    // Do not use the pointer events.\r\n    // Chrome 55 unified the mouse and pointer events api.\r\n    // Since this change the code below assumes any device is a touch device on Chrome 55+.\r\n    // There are some bugs in the code below on touch enabled devices, so we should\r\n    // fix those first before enabling pointer events again.\r\n    // https://developers.google.com/web/updates/2016/10/pointer-events\r\n\r\n\t/*var pointerEvents = {\r\n\t\tstart: 'pointerdown',\r\n\t\tmove: 'pointermove',\r\n\t\tend: 'pointerup',\r\n\t\tcancel: 'pointercancel'\r\n\t};*/\r\n\r\n\t/*var msPointerEvents = {\r\n\t\tstart: 'mspointerdown',\r\n\t\tmove: 'mspointermove',\r\n\t\tend: 'mspointerup',\r\n\t\tcancel: 'mspointercancel'\r\n\t};*/\r\n\r\n\tvar touchEvents = {\r\n\t\tstart: 'touchstart',\r\n\t\tmove: 'touchmove',\r\n\t\tend: 'touchend',\r\n\t\tcancel: 'touchcancel'\r\n\t};\r\n\r\n\t//var mouseEvents = {\r\n\t//\tstart: 'mousedown',\r\n\t//\tmove: 'mousemove',\r\n\t//\tend: 'mouseup',\r\n\t//\tcancel: 'mousecancel'\r\n\t//};\r\n\r\n    // for now only use touch events on touch-enabled devices\r\n\r\n\t/*var events = window.PointerEvent ? pointerEvents :\r\n\t\twindow.navigator.msPointerEnabled ? msPointerEvents :\r\n\t\ttouchEvents;*/\r\n    var events = touchEvents;\r\n\r\n\t//document.body.ontouchstart !== undefined ? touchEvents :\r\n\t//mouseEvents;\r\n\r\n\tDrop.prototype.removeClicks = function () {\r\n\t    var $this = this.$element;\r\n\t    var settings = this.clickHandlers;\r\n\t    if (!settings) {\r\n\t        return;\r\n\t    }\r\n\t    $this.each(function (index, element) {\r\n\t        element.removeEventListener(events.start, settings.touchStartHandler, false);\r\n\t    });\r\n\t    $this.off('mousedown', settings.startHandler);\r\n\t    $this.removeClass('draggable');\r\n\t    delete this.clickHandlers;\r\n\t};\r\n\r\n\tDrop.prototype.clicks = function (options) {\r\n\t\tvar _oldZIndex = 0;\r\n\t\tvar dragging = false;\r\n\t\tvar clickTimer = null;\r\n\t\tvar clicks = 0;\r\n\t\tvar offset;\r\n\t\tvar startPos;\r\n\t\tvar target;\r\n\t\tvar $this;\r\n\t\tvar $element;\r\n\t\tvar self = this;\r\n\t\tvar dropToDrag = self;\r\n\t\tvar settings = $.extend(defaults(), options);\r\n\r\n\t\tself.removeClicks();\r\n\r\n\t\tself.clickHandlers = settings;\r\n\r\n\t\t$this = options.$target || self.$element;\r\n\t\t$element = $this;\r\n\r\n\t\tif (settings.drag) {\r\n\t\t\t$this.addClass('draggable');\r\n\t\t\tif (settings.dropToDrag) {\r\n\t\t\t    dropToDrag = settings.dropToDrag;\r\n\t\t\t    $element = settings.dropToDrag.$element;\r\n\t\t\t} else {\r\n\t\t\t    settings.dropToDrag = self;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsettings.touchStartHandler = function (e) {\r\n\t\t    if (!$(getTarget(e)).is(':input')) {\r\n\t\t        if (!onMouseDown(settings, e))\r\n\t\t            e.preventDefault(); // prevents mousemove event that would fire at the wrong time and place anyway\r\n\t\t    }\r\n\t\t};\r\n\t\t$this.each(function (index, element) {\r\n\t\t    element.addEventListener(events.start, settings.touchStartHandler, false);\r\n\t\t});\r\n\t\tsettings.startHandler = function (e) { onMouseDown(settings, e); };\r\n\t\t$this.on('mousedown', settings.startHandler);\r\n\r\n\t\tvar touchMoveHandler = function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tonMouseMove(settings, e);\r\n\t\t};\r\n\r\n\t\tfunction getPositionSource(e) {\r\n            // we only support single touches for now\r\n\t\t    if (e.targetTouches && e.targetTouches.length) {\r\n\t\t        return e.targetTouches[0];\r\n\t\t    } else if (e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches.length) {\r\n\t\t        return e.originalEvent.changedTouches[0];\r\n\t\t    } else if (e.pageX) {\r\n\t\t        return e;\r\n\t\t    } else {\r\n\t\t        return e.originalEvent;\r\n\t\t    }\r\n\t\t}\r\n\r\n\t\tfunction getPosition(e) {\r\n\t\t    var source = getPositionSource(e);\r\n\t\t    var scalePercentage = Drop.zoomlevel || 1;\r\n\t\t    return new Point(Math.round(source.pageX / scalePercentage), Math.round(source.pageY / scalePercentage));\r\n\t\t}\r\n\r\n\t\tfunction getClientPosition(e) {\r\n\t\t    var source = getPositionSource(e);\r\n\t\t    var scalePercentage = Drop.zoomlevel || 1;\r\n\t\t    return new Point(Math.round(source.clientX / scalePercentage), Math.round(source.clientX / scalePercentage));\r\n\t\t}\r\n\r\n\t\tfunction getTarget(e) {\r\n\t\t\tvar source;\r\n\t\t\tif (e.targetTouches && e.targetTouches.length) {\r\n\t\t\t\tsource = e.targetTouches[0];\r\n\t\t\t} else {\r\n\t\t\t\tsource = e;\r\n\t\t\t}\r\n\t\t\treturn source.target;\r\n\t\t}\r\n\r\n\t\tvar blockDragStart = function () { return false; };\r\n\r\n\t\tfunction onMouseDown(options, e) {\r\n\r\n\t\t    if (e.which === 2 || e.which === 3) { // Use event.which instead of event.button. http://api.jquery.com/event.which/\r\n                // use reverse filtering because touch events don't have a button\r\n\t\t        return true;\r\n\t\t    }\r\n\r\n\t\t    target = getTarget(e);\r\n\t\t    if (settings.ignoreChildren && target !== $this[0]) {\r\n\t\t        return true;\r\n\t\t    }\r\n\r\n\t\t\tif (![\"input\", \"select\", \"textarea\", \"button\"].includes(document.activeElement.tagName)) {\r\n\t\t\t\tclicks++;\r\n\t\t\t} else {\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\tself.triggerClick();\r\n\t\t\t\t}, 1);\t\t  \r\n\t\t\t}\r\n\r\n\t\t\tif (clicks === 2) {\r\n\t\t\t    window.clearTimeout(clickTimer);\r\n\t\t\t}\r\n\r\n\t\t\t// prevent text selection (except for IE otherwise input text not selectable)\r\n            if (!document.documentMode) {\r\n\t\t\t    document.onselectstart = function () { return false; };\r\n\t\t\t}\r\n\r\n\t\t\tstartPos = getPosition(e);\r\n\r\n\t\t\t$this.on(events.end + ' ' + events.cancel, doClick);\r\n\t\t\t$this.on('mouseup', doClick);\r\n\t\t\t$(document).on(events.end + ' ' + events.cancel, endDrag);\r\n\t\t\t$(document).on('mouseup', endDrag);\r\n\r\n\t\t\te.stopPropagation();\r\n\r\n\t\t\tif (!options.drag)\r\n\t\t\t    return;\r\n\r\n\t\t\tdropToDrag.initialPosition = util.cloneData(dropToDrag.data.position);\r\n\r\n\t\t\tvar value = new Point().fromPosition($element.positionWithoutTransform());\r\n\r\n\t\t\toffset = value.subtract(startPos);\r\n\r\n\t\t\tdocument.body.addEventListener(events.move, touchMoveHandler);\r\n\t\t    // tell our code to start moving the element with the mouse\r\n\t\t\t$(document).on(\"mousemove.lq-drop-extensions-clicks\", function (e) { onMouseMove(settings, e); });\r\n\r\n\t\t\t// cancel out any text selections\r\n\t\t\tdocument.body.focus();\r\n\r\n\t\t\t// prevent IE from trying to drag an image\r\n\t\t\t$this.on('dragstart', blockDragStart);\r\n\r\n\t\t\t// prevent text selection (except IE)\r\n\t\t\treturn false;\r\n\r\n\t\t}\r\n\r\n\t\tfunction onMouseMove(options, e) {\r\n\t\t\tvar position = getPosition(e);\r\n\r\n\t\t\tvar xMove = (position.x - startPos.x);\r\n\t\t\tvar yMove = (position.y - startPos.y);\r\n\r\n\t\t\t// if moved a bit => drag\r\n\t\t\tif (!dragging && Math.abs(xMove) + Math.abs(yMove) > 5) {\r\n\r\n\t\t\t\toptions.beforeDrag(startPos);\r\n\t\t\t\tdragging = true;\r\n\r\n\t\t\t\t// disable the clickTimer\r\n\t\t\t\tclicks = 0;\r\n\t\t\t\tclearTimeout(clickTimer);\r\n\r\n\t\t\t\t// bring the clicked element to the front while it is being dragged\r\n\t\t\t\t_oldZIndex = $element.css('z-index');\r\n\t\t\t\t$element.css('z-index', 10000);\r\n\t\t\t}\r\n\r\n\t\t\tif (!dragging) {\r\n\t\t\t    return;\r\n\t\t\t}\r\n\r\n\t\t\tvar pos = new Point(position.x, position.y);\r\n\t\t\tvar adjustedStartPos = startPos;\r\n\t\t\tif (!options.dragIgnoreOffset) {\r\n\t\t\t    pos = pos.add(offset);\r\n\t\t\t    adjustedStartPos = startPos.add(offset);\r\n\t\t\t}\r\n\r\n\t\t\tif (typeof options.snapFunc === \"function\") {\r\n\t\t\t    pos = options.snapFunc(pos, adjustedStartPos);\r\n\t\t\t}\r\n\t\t\toptions.dragFunc(pos, dropToDrag, target, adjustedStartPos, {\r\n\t\t\t    offset: offset,\r\n\t\t\t    xMove: xMove,\r\n\t\t\t    yMove: yMove,\r\n\t\t\t    clientPos: getClientPosition(e)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction endDrag() {\r\n\t\t    $this.off('mouseup', doClick);\r\n\t\t    $this.off(events.end, doClick);\r\n\t\t    $(document).off(events.end + ' ' + events.cancel, endDrag);\r\n\t\t    $(document).off('mouseup', endDrag);\r\n\r\n\t\t\tif (settings.drag) {\r\n\t\t\t\tif (dragging) {\r\n\t\t\t\t\tdragging = false;\r\n\t\t\t\t\t$element.css('z-index', _oldZIndex);\r\n\t\t\t\t\tsettings.afterDrag();\r\n\t\t\t\t}\r\n\t\t\t\t// we're done with these events until the next OnMouseDown\r\n\t\t\t\t$(document).off(\"mousemove.lq-drop-extensions-clicks\");\r\n\t\t\t\tdocument.body.removeEventListener(events.move, touchMoveHandler);\r\n\t\t\t\tdocument.onselectstart = null;\r\n\t\t\t\t$this.off('dragstart', blockDragStart);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tself.triggerClick = function () {\r\n\t\t\tvar position = $this.positionWithoutTransform();\r\n\t\t    var simulatedClickPosition = new Point().fromPosition(position);\r\n\t\t    settings.click(simulatedClickPosition, $this[0], new $.Event('click'));\r\n\t\t};\r\n\r\n\t\tfunction doClick(e) {\r\n\t\t    if (clicks === 1) {\r\n\t\t        var isTouch = e.type === events.end;\r\n\t\t        var timeout = isTouch ? 400 : 200;\r\n\t\t\t\tclickTimer =\r\n\t\t\t\t\t\twindow.setTimeout(function () {\r\n\t\t\t\t\t\t    clicks = 0;\r\n\t\t\t\t\t\t    if (!dragging) {\r\n\t\t\t\t\t\t        var returnValue = settings.click(startPos, target, e);\r\n\t\t\t\t\t\t        if (returnValue && isTouch) {\r\n\t\t\t\t\t\t            // fire prevented mouse events in case someone needs them\r\n\t\t\t\t\t\t            var $target = $(target);\r\n                                    $target.trigger('mousedown');\r\n                                    $target.trigger('mouseup');\r\n                                    $target.trigger('click');\r\n\t\t\t\t\t\t        }\r\n\t\t\t\t\t\t    }\r\n\t\t\t\t\t\t}, timeout);\r\n\t\t\t}\r\n\r\n\t\t\tif (clicks === 2) {\r\n\t\t\t    clicks = 0;\r\n\t\t\t    $this.off('mouseup', doClick);\r\n\t\t\t    $this.off(events.end, doClick);\r\n\t\t\t    $(document).off(events.end + ' ' + events.cancel, endDrag);\r\n\t\t\t    $(document).off('mouseup', endDrag);\r\n\t\t\t\t$(document).off(\"mousemove.lq-drop-extensions-clicks\");\r\n\t\t\t\tdocument.body.removeEventListener(events.move, touchMoveHandler);\r\n\t\t\t\tif (!dragging)\r\n\t\t\t\t    settings.doubleClick(startPos, target);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t};\r\n\r\n});\r\n\n","define('drops/drawings/businessprocessElement',['jquery', 'lq/drop', 'lq/oop', 'lq/point', './businessprocessEvents', 'lq/design/editors/dropExtensionsClicks'],\r\n    function ($, Drop, oop, Point, businessProcessEvents, clicks) {\r\n    'use strict';\r\n\r\n    function BusinessProcessElement($element, defaults, options) {\r\n        Drop.call(this, $element, defaults, options);\r\n    };\r\n\r\n    Drop.extend(BusinessProcessElement, Drop);\r\n    \r\n    oop.makeExtendable(BusinessProcessElement);\r\n\r\n    BusinessProcessElement.prototype.preRender = function () {\r\n        this.applyPosition();\r\n    };\r\n\r\n    BusinessProcessElement.prototype.acceptsFlowConnections = true;\r\n\r\n    BusinessProcessElement.prototype.getAnchoringPoints = function () {\r\n        return [\r\n            new Point(Math.round(this.data.position.x), Math.round(this.data.position.y + (this.data.size.y / 2))),\r\n            new Point(Math.round(this.data.position.x + (this.data.size.x / 2)), Math.round(this.data.position.y)),\r\n            new Point(Math.round(this.data.position.x + this.data.size.x), Math.round(this.data.position.y + (this.data.size.y / 2))),\r\n            new Point(Math.round(this.data.position.x + (this.data.size.x / 2)), Math.round(this.data.position.y + this.data.size.y))\r\n        ];\r\n    };\r\n\r\n    BusinessProcessElement.prototype.informPositionChanged = function() {\r\n        businessProcessEvents.informListeners('bp_element_moved_' + this.data.id, this);\r\n    };\r\n\r\n    BusinessProcessElement.prototype.onResizing = function () {\r\n        businessProcessEvents.informListeners('bp_element_moved_' + this.data.id, this);\r\n    }\r\n\r\n    return BusinessProcessElement;\r\n});\n","define('drops/drawings/flow/segment',['jquery', 'lq/drop'],\r\n    function ($, Drop) {\r\n        'use strict';\r\n        \r\n        function Segment() {\r\n            var self = this;\r\n            Drop.call(this, $('<div/>'), {});\r\n\r\n            self.$arrow = $('<div/>')\r\n                .addClass('bp-flow-arrow')\r\n                .hide();\r\n\r\n            self.$text = $('<div/>')\r\n                .text(\"\")\r\n                .addClass('bp-flow-text')\r\n                .hide();\r\n            self.$textContainer = $('<div/>')\r\n                .addClass('bp-flow-textcontainer')\r\n                .append(self.$text);\r\n\r\n            self.$line = $('<div/>')\r\n                .addClass('bp-flow')\r\n                .append(self.$arrow);\r\n\r\n            self.$element\r\n                .append(self.$line)\r\n                .append(self.$textContainer);\r\n        }\r\n\r\n        Drop.extend(Segment, Drop);\r\n\r\n        Segment.prototype.showArrow = function () {\r\n            var self = this;\r\n            self.$arrow.show();\r\n        };\r\n\r\n        Segment.prototype.showText = function (text) {\r\n            var self = this;\r\n            self.$text.text(text).show();\r\n        };\r\n\r\n        Segment.prototype.setTextPosition = function (point) {\r\n            var self = this;\r\n            self.$textContainer\r\n                .css('top', point.y + 'px')\r\n                .css('left', point.x + 'px');\r\n        };\r\n\r\n        Segment.prototype.draw = function () {\r\n            var self = this;\r\n            function drawLine(ax, ay, bx, by) {\r\n                var angle = (Math.atan2((ax - bx), (by - ay))) * 180 / Math.PI;\r\n                var length = Math.sqrt((ax - bx) * (ax - bx) + (ay - by) * (ay - by));\r\n                self.$line\r\n                    .css('height', length  + 'px')\r\n                    .css('transform', 'rotate(' + angle + 'deg)')\r\n                    .css('-ms-transform', 'rotate(' + angle + 'deg)')\r\n                    .css('transform-origin', '50% 0%')\r\n                    .css('-moz-transform', 'rotate(' + angle + 'deg)')\r\n                    .css('-moz-transform-origin', '50% 0%')\r\n                    .css('-webkit-transform', 'rotate(' + angle + 'deg)')\r\n                    .css('-webkit-transform-origin', '50% 0%')\r\n                    .css('-o-transform', 'rotate(' + angle + 'deg)')\r\n                    .css('-o-transform-origin', '50% 0%');\r\n\r\n                self.$element\r\n                    .css('position', 'absolute')\r\n                    .css('top', ay + 'px')\r\n                    .css('left', ax + 'px');\r\n            }\r\n\r\n            drawLine(self.startPoint.x, self.startPoint.y, self.endPoint.x, self.endPoint.y);\r\n        };\r\n\r\n        return Segment;\r\n    });\n","define('drops/drawings/flow/flow',['jquery', 'drops/drawings/businessprocessElement', 'drops/drawings/businessprocessEvents', 'drops/drawings/flow/segment'],\r\n    function ($, BusinessProcessElement, businessProcessEvents, Segment) {\r\n        'use strict';\r\n\r\n        var defaults = {\r\n            data: {\r\n                outId: null,\r\n                inId: null,\r\n                size: { x: 100, y: 100 },\r\n                text: \"\",\r\n                textTop: -10,\r\n                textLeft: 10,\r\n                joints: [],\r\n                linkToApplication: false\r\n            }\r\n        };\r\n\r\n        function Flow(options) {\r\n            BusinessProcessElement.call(this, $('<div/>'), defaults, options);\r\n            var self = this;\r\n\r\n            self.outDrop = null;\r\n            self.inDrop = null;\r\n\r\n            self.$element.addClass('bp-flow-root');\r\n\r\n            self.createAllSegments();\r\n\r\n            self.listenToConnectedDropMovements();\r\n        };\r\n\r\n        BusinessProcessElement.extend(Flow, BusinessProcessElement);\r\n\r\n        Flow.typeName = 'Flow';\r\n\r\n        Flow.prototype.applyPosition = $.noop;\r\n\r\n        Flow.prototype.acceptsFlowConnections = false;\r\n\r\n        Flow.prototype.createSegment = function () {\r\n            return new Segment();\r\n        };\r\n\r\n        Flow.prototype.createAllSegments = function () {\r\n            var self = this;\r\n            self.segments = [];\r\n            self.segments.push(self.createSegment());\r\n            _.forEach(self.data.joints, function () {\r\n                self.segments.push(self.createSegment());\r\n            });\r\n            self.segments.pop();\r\n            self.segments.push(self.createSegment());\r\n\r\n            _.forEach(self.segments, function (segment) {\r\n                self.$element.prepend(segment.$element);\r\n            });\r\n        };\r\n\r\n        Flow.prototype.listenToConnectedDropMovements = function () {\r\n            var self = this;\r\n\r\n            if (self.data.outId != null) {\r\n                businessProcessEvents.removeListener('bp_element_moved_' + self.data.outId, self);\r\n                businessProcessEvents.addListener('bp_element_moved_' + self.data.outId, function (bpElement) {\r\n                    self.outDrop = bpElement;\r\n\r\n                    self.data.position = bpElement.getAnchoringPoints()[0];\r\n                    self.drawSegments();\r\n                }, self);\r\n            }\r\n\r\n            if (self.data.inId != null) {\r\n                businessProcessEvents.removeListener('bp_element_moved_' + self.data.inId, self);\r\n                businessProcessEvents.addListener('bp_element_moved_' + self.data.inId, function (bpElement) {\r\n                    self.inDrop = bpElement;\r\n\r\n                    self.data.size = bpElement.getAnchoringPoints()[0];\r\n                    self.drawSegments();\r\n                }, self);\r\n            }\r\n        };\r\n\r\n        Flow.prototype.drawSegments = function () {\r\n            var self = this;\r\n            var points = self.getAllSegmentCoordinates();\r\n            for (var i = 0; i < self.segments.length; i++) {\r\n                self.segments[i].startPoint = points[i][0];\r\n                self.segments[i].endPoint = points[i][1];\r\n                self.segments[i].draw();\r\n            }\r\n\r\n            if (self.segments.length !== 0) {\r\n                self.segments[0].showText(self.data.text);\r\n                self.segments[0].setTextPosition({ x: self.data.textLeft, y: self.data.textTop });\r\n                self.segments[self.segments.length - 1].showArrow();\r\n            }\r\n        };\r\n\r\n        Flow.prototype.getAllSegmentCoordinates = function () {\r\n            var self = this;\r\n\r\n            var getAvailablePoints = function (bpElement, fallback) {\r\n                if (bpElement != null) {\r\n                    return bpElement.getAnchoringPoints();\r\n                }\r\n                return [fallback];\r\n            };\r\n\r\n            var pointGroups = [];\r\n            pointGroups.push(getAvailablePoints(this.outDrop, this.data.position));\r\n            _.forEach(self.data.joints, function (jointPoint) {\r\n                pointGroups.push([jointPoint]);\r\n            });\r\n            pointGroups.push(getAvailablePoints(this.inDrop, this.data.size));\r\n\r\n            var points = [];\r\n            for (var i = 0; i < (pointGroups.length - 1) ; i++) {\r\n                points.push(self.getClosestPoints(pointGroups[i], pointGroups[i + 1]));\r\n            }\r\n\r\n            return points;\r\n        };\r\n\r\n        Flow.prototype.getClosestPoints = function (pointGroupA, pointGroupB) {\r\n            var getDistanceBetweenPoints = function (pointA, pointB) {\r\n                return Math.sqrt(Math.pow(pointB.x - pointA.x, 2) + Math.pow(pointB.y - pointA.y, 2));\r\n            };\r\n\r\n            var shortestDistance = null;\r\n            var closestAnchoringPoints = [];\r\n\r\n            _.each(pointGroupA, function (outPoint) {\r\n                _.each(pointGroupB, function (inPoint) {\r\n                    var distance = getDistanceBetweenPoints(outPoint, inPoint);\r\n                    if (shortestDistance === null || shortestDistance > distance) {\r\n                        shortestDistance = distance;\r\n                        closestAnchoringPoints = [outPoint, inPoint];\r\n                    }\r\n                });\r\n            });\r\n\r\n            return closestAnchoringPoints;\r\n        };\r\n\r\n        Flow.prototype.preRender = function () {\r\n            this.drawSegments();\r\n        };\r\n\r\n        return Flow;\r\n    });\n","define('drops/drawings/gateway/gateway',['jquery', 'drops/drawings/businessprocessElement'],\r\n    function ($, BusinessProcessElement) {\r\n    'use strict';\r\n\r\n    Gateway.EXLUSIVE = \"exclusive\";\r\n    Gateway.PARALLEL = \"parallel\";\r\n\r\n    var defaults = {\r\n        data: {\r\n            size: { x: 40, y: 40 },\r\n            text: '',\r\n            gateType: Gateway.EXLUSIVE,\r\n            textPosition: 'Right',\r\n            linkToApplication: false\r\n        }\r\n    };\r\n\r\n    function Gateway(options) {\r\n        BusinessProcessElement.call(this, $('<div/>'), defaults, options);\r\n        var self = this;\r\n\r\n        self.$text = self.createTextElement();\r\n        self.$textCell = $('<div/>')\r\n            .append(self.$text)\r\n            .addClass('bp-textcell');\r\n        self.$textContainer = $('<div/>')\r\n            .append(self.$textCell)\r\n            .addClass('bp-textcontainer');\r\n\r\n        self.$text.addClass('bp-text-' + self.data.textPosition);\r\n        self.$textCell.addClass('bp-textcell-' + self.data.textPosition);\r\n        self.$textContainer.addClass('bp-textcontainer-' + self.data.textPosition);\r\n\r\n        var $diamond = $('<div/>')\r\n            .addClass('bp-gateway-diamond')\r\n            .addClass('bp-element');\r\n\r\n        self.$plusSign = $('<div/>')\r\n            .addClass('bp-gateway-plus')\r\n            .hide();\r\n\r\n        self.$element\r\n\t        .addClass('boxToBorderSize')\r\n            .addClass('bp-gateway')\r\n            .append($diamond)\r\n            .append(self.$textContainer)\r\n            .append(self.$plusSign);\r\n\r\n        if (self.data.gateType === Gateway.PARALLEL) {\r\n            self.$plusSign.show();\r\n        }\r\n    };\r\n\r\n    BusinessProcessElement.extend(Gateway, BusinessProcessElement);\r\n\r\n    Gateway.typeName = 'Gateway';\r\n\r\n    Gateway.prototype.preRender = function () {\r\n        if (!this.editable && this.data.entityId) {\r\n            var self = this;\r\n            this.$element\r\n                .css('cursor', 'pointer')\r\n                .on('click', function () {\r\n                    self.triggerEvent('drawingClicked', self.data.entityId);\r\n                });\r\n        }\r\n\r\n        this.applyPosition();\r\n    };\r\n\r\n    Gateway.prototype.createTextElement = function () {\r\n        return $('<div/>')\r\n            .text(this.data.text)\r\n            .addClass('bp-text');\r\n    };\r\n\r\n    return Gateway;\r\n});\n","define('drops/drawings/milestone/milestone',['jquery', 'drops/drawings/businessprocessElement'], function ($, BusinessProcessElement) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            text: 'New Milestone',\r\n            size: { x: 200, y: 150 }\r\n        }\r\n    };\r\n\r\n    function Milestone(options) {\r\n        BusinessProcessElement.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.$text = this.createTextElement();\r\n\r\n        this.$element\r\n\t        .addClass('boxToBorderSize')\r\n            .addClass('bp-milestone')\r\n            .append(this.$text);\r\n    };\r\n\r\n    BusinessProcessElement.extend(Milestone, BusinessProcessElement);\r\n\r\n    Milestone.typeName = 'Milestone';\r\n\r\n    Milestone.prototype.acceptsFlowConnections = false;\r\n\r\n    Milestone.prototype.createTextElement = function () {\r\n        return $('<div/>')\r\n            .text(this.data.text);\r\n    };\r\n\r\n    Milestone.prototype.preRender = function () {\r\n        if (!this.editable && this.data.entityId) {\r\n            var self = this;\r\n            this.$element\r\n                .css('cursor', 'pointer')\r\n                .on('click', function () {\r\n                    self.triggerEvent('milestoneClicked', self.data.entityId);\r\n                });\r\n        }\r\n\r\n        this.applyPosition();\r\n    };\r\n\r\n    return Milestone;\r\n});\n","define('drops/drawings/start/start',['jquery', 'drops/drawings/businessprocessElement'],\r\n    function ($, BusinessProcessElement) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            size: { x: 40, y: 40 },\r\n            text: '',\r\n            textPosition: 'Right',\r\n            linkToApplication: false\r\n        }\r\n    };\r\n\r\n    function Start(options) {\r\n        BusinessProcessElement.call(this, $('<div/>'), defaults, options);\r\n        var self = this;\r\n\r\n        self.$text = self.createTextElement();\r\n        self.$textCell = $('<div/>')\r\n            .append(self.$text)\r\n            .addClass('bp-textcell');\r\n        self.$textContainer = $('<div/>')\r\n            .append(self.$textCell)\r\n            .addClass('bp-textcontainer');\r\n\r\n        self.$text.addClass('bp-text-' + self.data.textPosition);\r\n        self.$textCell.addClass('bp-textcell-' + self.data.textPosition);\r\n        self.$textContainer.addClass('bp-textcontainer-' + self.data.textPosition);\r\n\r\n        var $circle = $('<div/>')\r\n            .addClass('bp-start')\r\n            .addClass('bp-element');\r\n\r\n        self.$element\r\n\t        .addClass('boxToBorderSize')\r\n            .append(self.$textContainer)\r\n            .append($circle);\r\n    };\r\n\r\n    BusinessProcessElement.extend(Start, BusinessProcessElement);\r\n\r\n    Start.typeName = 'Start';\r\n\r\n    Start.prototype.createTextElement = function () {\r\n        return $('<div/>')\r\n            .text(this.data.text)\r\n            .addClass('bp-text');\r\n    };\r\n        \r\n    Start.prototype.preRender = function () {\r\n        if (!this.editable && this.data.entityId) {\r\n            var self = this;\r\n            this.$element\r\n                .css('cursor', 'pointer')\r\n                .on('click', function () {\r\n                    self.triggerEvent('drawingClicked', self.data.entityId);\r\n                });\r\n        }\r\n\r\n        this.applyPosition();\r\n    };\r\n\r\n    return Start;\r\n});\n","define('drops/drawings/stop/stop',['jquery', 'drops/drawings/businessprocessElement'],\r\n    function ($, BusinessProcessElement) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            size: { x: 40, y: 40 },\r\n            text: '',\r\n            textPosition: 'Right',\r\n            linkToApplication: false\r\n        }\r\n    };\r\n\r\n    function Stop(options) {\r\n        BusinessProcessElement.call(this, $('<div/>'), defaults, options);\r\n        var self = this;\r\n\r\n        self.$text = self.createTextElement();\r\n        self.$textCell = $('<div/>')\r\n            .append(self.$text)\r\n            .addClass('bp-textcell');\r\n        self.$textContainer = $('<div/>')\r\n            .append(self.$textCell)\r\n            .addClass('bp-textcontainer');\r\n\r\n        self.$text.addClass('bp-text-' + self.data.textPosition);\r\n        self.$textCell.addClass('bp-textcell-' + self.data.textPosition);\r\n        self.$textContainer.addClass('bp-textcontainer-' + self.data.textPosition);\r\n        \r\n        var $circle = $('<div/>')\r\n            .addClass('bp-stop')\r\n            .addClass('bp-element');\r\n\r\n        self.$element\r\n\t        .addClass('boxToBorderSize')\r\n            .append(self.$textContainer)\r\n            .append($circle);\r\n    };\r\n\r\n    BusinessProcessElement.extend(Stop, BusinessProcessElement);\r\n\r\n    Stop.typeName = 'Stop';\r\n\r\n    Stop.prototype.createTextElement = function () {\r\n        return $('<div/>')\r\n            .text(this.data.text)\r\n            .addClass('bp-text');\r\n    };\r\n\r\n    Stop.prototype.preRender = function () {\r\n        if (!this.editable && this.data.entityId) {\r\n            var self = this;\r\n            this.$element\r\n                .css('cursor', 'pointer')\r\n                .on('click', function () {\r\n                    self.triggerEvent('drawingClicked', self.data.entityId);\r\n                });\r\n        }\r\n\r\n        this.applyPosition();\r\n    };\r\n\r\n    return Stop;\r\n});\n","define('drops/drawings/task/task',['jquery', 'drops/drawings/businessprocessElement'], function ($, BusinessProcessElement) {\r\n    'use strict';\r\n    \r\n    var defaults = {\r\n        data: {\r\n            text: 'New Task',\r\n            size: { x: 100, y: 40 },\r\n            linkToApplication: false\r\n        }\r\n    };\r\n\r\n    function Task(options) {\r\n        BusinessProcessElement.call(this, $('<div/>'), defaults, options);\r\n        \r\n        this.$text = this.createTextElement();\r\n\r\n        this.$element\r\n\t        .addClass('boxToBorderSize')\r\n            .addClass('bp-element')\r\n            .addClass('bp-task')\r\n            .append(this.$text);\r\n    };\r\n\r\n    BusinessProcessElement.extend(Task, BusinessProcessElement);\r\n\r\n    Task.typeName = 'Task';\r\n\r\n    Task.prototype.createTextElement = function () {\r\n        return $('<div/>')\r\n            .text(this.data.text)\r\n            .css({\r\n                height: '100%'\r\n            });\r\n    };\r\n\r\n    Task.prototype.preRender = function () {\r\n        if (!this.editable && this.data.entityId) {\r\n            var self = this;\r\n            this.$element\r\n                .css('cursor', 'pointer')\r\n                .on('click', function () {\r\n                    self.triggerEvent('drawingClicked', self.data.entityId);\r\n                });\r\n        }\r\n\r\n        this.applyPosition();\r\n    };\r\n\r\n    return Task;\r\n});\n","define('drops/drawings/runtimeTypesProvider',[\r\n    'lq/typesProvider',\r\n\r\n    './flow/flow',\r\n    './gateway/gateway',\r\n    './milestone/milestone',\r\n    './start/start',\r\n    './stop/stop',\r\n    './task/task'\r\n], function (TypesProvider) {\r\n    'use strict';\r\n\r\n    var dropTypes = Array.prototype.slice.call(arguments, 1);\r\n    return new TypesProvider(dropTypes);\r\n});\n","/**\r\n * jQuery.browser.mobile (http://detectmobilebrowser.com/)\r\n *\r\n * jQuery.browser.mobile will be true if the browser is a mobile device\r\n *\r\n **/\r\n(function(a){(jQuery.browser=jQuery.browser||{}).mobile=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0,4))})(navigator.userAgent||navigator.vendor||window.opera);\ndefine(\"detectmobilebrowser\", function(){});\n\n","define('lq/onlongpress',[\r\n    'underscore',\r\n    'jquery',\r\n    'detectmobilebrowser'\r\n], function (_, $) {\r\n    'use strict';\r\n\r\n    var eventToTrigger = null;\r\n    var timerExceeded = false;\r\n    var scrolledOrMoved = false;\r\n\r\n    var checkForSelection = function (drop) {\r\n        return drop.isEventEnabled('selected') ||\r\n            drop.isEventEnabled('deselected') ||\r\n            drop.isEventEnabled('itemSelected') ||\r\n            drop.isEventEnabled('itemDeselected');\r\n    };\r\n\r\n    function OnLongPress() { };\r\n\r\n    OnLongPress.prototype.applyLongPressOnElement = function ($element, drop, eventArg, callback, eventName, $scrollableElement, unhandledClickCallback) {\r\n        if (this.drop)\r\n            drop = this.drop;\r\n        if (drop.$element && drop.isEventEnabled('onLongPress'))\r\n            drop.$element.addClass('prevent-selection');\r\n        eventName = eventName || 'onLongPress';\r\n        var self = this;\r\n        if ($scrollableElement) {\r\n            $scrollableElement.on('touchmove', function () {\r\n                scrolledOrMoved = true;\r\n                eventToTrigger = null;\r\n                clearTimeout(self.pressTimer);\r\n            });\r\n        }\r\n\r\n        var timeout = drop.data.longPressDelay ? drop.data.longPressDelay : 1000;\r\n\r\n        var longPressEvent = drop.getEventDataFor(eventName);\r\n        var clickedEvent = drop.getEventDataFor('clicked');\r\n        var end = function(e) {\r\n            if (unhandledClickCallback) {\r\n                unhandledClickCallback(e);\r\n            }\r\n            \r\n            if (timerExceeded) {\r\n                if (!parentStillHasSomeEvents(drop.parent)) {\r\n                    timerExceeded = false;\r\n                }\r\n            } else if (!scrolledOrMoved) {\r\n                if (eventToTrigger === null) {\r\n                    if (checkForSelection(drop)) { // In case we have a selected we must have a callback\r\n                        eventToTrigger = {\r\n                            callback: !callback ? null : function () { callback(e); }\r\n                        };\r\n                    } else if (drop.isEventEnabled('clicked')) {\r\n                        eventToTrigger = {\r\n                            name: drop.data.name,\r\n                            drop: drop,\r\n                            event: 'clicked',\r\n                            eventName: clickedEvent.raisedEventName,\r\n                            eventArg: eventArg,\r\n                            callback: !callback ? null : function () { callback(e); }\r\n                        };\r\n                    }\r\n                }\r\n\r\n                if (!parentStillHasSomeEvents(drop.parent)) {\r\n                    self.triggerTheCorrectEvent(e);\r\n                }\r\n            }\r\n            clearTimeout(self.pressTimer);\r\n        }\r\n\r\n        if ($.browser.mobile) {\r\n            $element.on('touchend', function () {\r\n                clearTimeout(self.pressTimer);\r\n            });\r\n\r\n            var eventName = 'clicked';\r\n            var jsEventName = 'click';\r\n\r\n            var eventData = drop.getEventDataFor(eventName);\r\n            var jsEventNameWithNamespace = jsEventName + \".licquidEventTrigger-\" + eventName;\r\n\r\n            $element.off(jsEventNameWithNamespace);\r\n            if (eventData.enabled || checkForSelection(drop)) {\r\n                drop.subscribeEventHandler($element, jsEventNameWithNamespace, end);\r\n            }\r\n        } else {\r\n            $element.on('click', end);\r\n        }\r\n\r\n        var start = function(e) {\r\n            timerExceeded = false;\r\n            scrolledOrMoved = false;\r\n            self.pressTimer = window.setTimeout(function () {\r\n                if (!drop.piping) return;\r\n\r\n                if (drop.isEventEnabled('onLongPress') && eventToTrigger === null) {\r\n                    eventToTrigger = {\r\n                        name: drop.data.name,\r\n                        drop: drop,\r\n                        event: 'onLongPress',\r\n                        eventName: longPressEvent.raisedEventName,\r\n                        eventArg: eventArg\r\n                    };\r\n                }\r\n\r\n                if (!parentStillHasSomeEvents(drop.parent)) {\r\n                    drop.piping.$app.addClass('prevent-selection');\r\n                    self.triggerTheCorrectEvent(e);\r\n                    setTimeout(function () {\r\n                        if (!drop.piping) return;\r\n\r\n                        drop.piping.$app.removeClass('prevent-selection');\r\n                    }, 10);\r\n                }\r\n            }, timeout);\r\n        }\r\n        if ($.browser.mobile) {\r\n            $element.on('touchstart', start);\r\n        } else {\r\n            $element.on('mousedown', start);\r\n        }\r\n        var parentStillHasSomeEvents = function(drop) {\r\n            if (!drop ||\r\n                drop.type === \"CalendarWeekView\" || // The calendar is special, because the\r\n                drop.type === \"CalendarDayView\") { // child drop is next to the the parent drop\r\n                return false;\r\n            }\r\n            if (drop.isEventEnabled('onLongPress') || drop.isEventEnabled('clicked') || checkForSelection(drop)) {\r\n                return true;\r\n            }\r\n            if (drop.parent) {\r\n                if (parentStillHasSomeEvents(drop.parent)) {\r\n                    return true;\r\n                }\r\n            }\r\n            return false;\r\n        };\r\n    };\r\n\r\n    OnLongPress.prototype.triggerTheCorrectEvent = function (e) {\r\n        if (eventToTrigger === null) {\r\n            return; // Nothing to do here\r\n        }\r\n        if (eventToTrigger.callback) {\r\n            eventToTrigger.callback();\r\n        } else if (eventToTrigger.eventArg === null || eventToTrigger.eventArg === undefined) {\r\n            eventToTrigger.drop.triggerEvent(eventToTrigger.eventName);\r\n        } else {\r\n            if (typeof eventToTrigger.eventArg === 'function') {\r\n                var determinedEventArg = eventToTrigger.eventArg(e);\r\n                eventToTrigger.drop.triggerEvent(eventToTrigger.eventName, determinedEventArg);\r\n            } else {\r\n                eventToTrigger.drop.triggerEvent(eventToTrigger.eventName, eventToTrigger.eventArg);\r\n            }\r\n        }\r\n        if (eventToTrigger.event === 'onLongPress') {\r\n            timerExceeded = true;\r\n        } else {\r\n            timerExceeded = false;\r\n        }\r\n\r\n        eventToTrigger = null;\r\n    };\r\n\r\n    return OnLongPress;\r\n});\r\n\n","/*!\r\n * html2canvas 1.4.1 <https://html2canvas.hertzen.com>\r\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\r\n * Released under MIT License\r\n */\r\n(function (global, factory) {\r\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\n    typeof define === 'function' && define.amd ? define('html2canvas',factory) :\r\n    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.html2canvas = factory());\r\n}(this, (function () { 'use strict';\r\n\r\n    /*! *****************************************************************************\r\n    Copyright (c) Microsoft Corporation.\r\n\r\n    Permission to use, copy, modify, and/or distribute this software for any\r\n    purpose with or without fee is hereby granted.\r\n\r\n    THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n    PERFORMANCE OF THIS SOFTWARE.\r\n    ***************************************************************************** */\r\n    /* global Reflect, Promise */\r\n\r\n    var extendStatics = function(d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n\r\n    function __extends(d, b) {\r\n        if (typeof b !== \"function\" && b !== null)\r\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    }\r\n\r\n    var __assign = function() {\r\n        __assign = Object.assign || function __assign(t) {\r\n            for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n                s = arguments[i];\r\n                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n            }\r\n            return t;\r\n        };\r\n        return __assign.apply(this, arguments);\r\n    };\r\n\r\n    function __awaiter(thisArg, _arguments, P, generator) {\r\n        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n        return new (P || (P = Promise))(function (resolve, reject) {\r\n            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n            function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n            step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n        });\r\n    }\r\n\r\n    function __generator(thisArg, body) {\r\n        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n        return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n        function verb(n) { return function (v) { return step([n, v]); }; }\r\n        function step(op) {\r\n            if (f) throw new TypeError(\"Generator is already executing.\");\r\n            while (_) try {\r\n                if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n                if (y = 0, t) op = [op[0] & 2, t.value];\r\n                switch (op[0]) {\r\n                    case 0: case 1: t = op; break;\r\n                    case 4: _.label++; return { value: op[1], done: false };\r\n                    case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                    case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                    default:\r\n                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                        if (t[2]) _.ops.pop();\r\n                        _.trys.pop(); continue;\r\n                }\r\n                op = body.call(thisArg, _);\r\n            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n        }\r\n    }\r\n\r\n    function __spreadArray(to, from, pack) {\r\n        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n            if (ar || !(i in from)) {\r\n                if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n                ar[i] = from[i];\r\n            }\r\n        }\r\n        return to.concat(ar || from);\r\n    }\r\n\r\n    var Bounds = /** @class */ (function () {\r\n        function Bounds(left, top, width, height) {\r\n            this.left = left;\r\n            this.top = top;\r\n            this.width = width;\r\n            this.height = height;\r\n        }\r\n        Bounds.prototype.add = function (x, y, w, h) {\r\n            return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\r\n        };\r\n        Bounds.fromClientRect = function (context, clientRect) {\r\n            return new Bounds(clientRect.left + context.windowBounds.left, clientRect.top + context.windowBounds.top, clientRect.width, clientRect.height);\r\n        };\r\n        Bounds.fromDOMRectList = function (context, domRectList) {\r\n            var domRect = Array.from(domRectList).find(function (rect) { return rect.width !== 0; });\r\n            return domRect\r\n                ? new Bounds(domRect.left + context.windowBounds.left, domRect.top + context.windowBounds.top, domRect.width, domRect.height)\r\n                : Bounds.EMPTY;\r\n        };\r\n        Bounds.EMPTY = new Bounds(0, 0, 0, 0);\r\n        return Bounds;\r\n    }());\r\n    var parseBounds = function (context, node) {\r\n        return Bounds.fromClientRect(context, node.getBoundingClientRect());\r\n    };\r\n    var parseDocumentSize = function (document) {\r\n        var body = document.body;\r\n        var documentElement = document.documentElement;\r\n        if (!body || !documentElement) {\r\n            throw new Error(\"Unable to get document size\");\r\n        }\r\n        var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));\r\n        var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));\r\n        return new Bounds(0, 0, width, height);\r\n    };\r\n\r\n    /*\r\n     * css-line-break 2.1.0 <https://github.com/niklasvh/css-line-break#readme>\r\n     * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\r\n     * Released under MIT License\r\n     */\r\n    var toCodePoints$1 = function (str) {\r\n        var codePoints = [];\r\n        var i = 0;\r\n        var length = str.length;\r\n        while (i < length) {\r\n            var value = str.charCodeAt(i++);\r\n            if (value >= 0xd800 && value <= 0xdbff && i < length) {\r\n                var extra = str.charCodeAt(i++);\r\n                if ((extra & 0xfc00) === 0xdc00) {\r\n                    codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\r\n                }\r\n                else {\r\n                    codePoints.push(value);\r\n                    i--;\r\n                }\r\n            }\r\n            else {\r\n                codePoints.push(value);\r\n            }\r\n        }\r\n        return codePoints;\r\n    };\r\n    var fromCodePoint$1 = function () {\r\n        var codePoints = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            codePoints[_i] = arguments[_i];\r\n        }\r\n        if (String.fromCodePoint) {\r\n            return String.fromCodePoint.apply(String, codePoints);\r\n        }\r\n        var length = codePoints.length;\r\n        if (!length) {\r\n            return '';\r\n        }\r\n        var codeUnits = [];\r\n        var index = -1;\r\n        var result = '';\r\n        while (++index < length) {\r\n            var codePoint = codePoints[index];\r\n            if (codePoint <= 0xffff) {\r\n                codeUnits.push(codePoint);\r\n            }\r\n            else {\r\n                codePoint -= 0x10000;\r\n                codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\r\n            }\r\n            if (index + 1 === length || codeUnits.length > 0x4000) {\r\n                result += String.fromCharCode.apply(String, codeUnits);\r\n                codeUnits.length = 0;\r\n            }\r\n        }\r\n        return result;\r\n    };\r\n    var chars$2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\r\n    // Use a lookup table to find the index.\r\n    var lookup$2 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\r\n    for (var i$2 = 0; i$2 < chars$2.length; i$2++) {\r\n        lookup$2[chars$2.charCodeAt(i$2)] = i$2;\r\n    }\r\n\r\n    /*\r\n     * utrie 1.0.2 <https://github.com/niklasvh/utrie>\r\n     * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\r\n     * Released under MIT License\r\n     */\r\n    var chars$1$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\r\n    // Use a lookup table to find the index.\r\n    var lookup$1$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\r\n    for (var i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) {\r\n        lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1;\r\n    }\r\n    var decode$1 = function (base64) {\r\n        var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\r\n        if (base64[base64.length - 1] === '=') {\r\n            bufferLength--;\r\n            if (base64[base64.length - 2] === '=') {\r\n                bufferLength--;\r\n            }\r\n        }\r\n        var buffer = typeof ArrayBuffer !== 'undefined' &&\r\n            typeof Uint8Array !== 'undefined' &&\r\n            typeof Uint8Array.prototype.slice !== 'undefined'\r\n            ? new ArrayBuffer(bufferLength)\r\n            : new Array(bufferLength);\r\n        var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\r\n        for (i = 0; i < len; i += 4) {\r\n            encoded1 = lookup$1$1[base64.charCodeAt(i)];\r\n            encoded2 = lookup$1$1[base64.charCodeAt(i + 1)];\r\n            encoded3 = lookup$1$1[base64.charCodeAt(i + 2)];\r\n            encoded4 = lookup$1$1[base64.charCodeAt(i + 3)];\r\n            bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\r\n            bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\r\n            bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\r\n        }\r\n        return buffer;\r\n    };\r\n    var polyUint16Array$1 = function (buffer) {\r\n        var length = buffer.length;\r\n        var bytes = [];\r\n        for (var i = 0; i < length; i += 2) {\r\n            bytes.push((buffer[i + 1] << 8) | buffer[i]);\r\n        }\r\n        return bytes;\r\n    };\r\n    var polyUint32Array$1 = function (buffer) {\r\n        var length = buffer.length;\r\n        var bytes = [];\r\n        for (var i = 0; i < length; i += 4) {\r\n            bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\r\n        }\r\n        return bytes;\r\n    };\r\n\r\n    /** Shift size for getting the index-2 table offset. */\r\n    var UTRIE2_SHIFT_2$1 = 5;\r\n    /** Shift size for getting the index-1 table offset. */\r\n    var UTRIE2_SHIFT_1$1 = 6 + 5;\r\n    /**\r\n     * Shift size for shifting left the index array values.\r\n     * Increases possible data size with 16-bit index values at the cost\r\n     * of compactability.\r\n     * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\r\n     */\r\n    var UTRIE2_INDEX_SHIFT$1 = 2;\r\n    /**\r\n     * Difference between the two shift sizes,\r\n     * for getting an index-1 offset from an index-2 offset. 6=11-5\r\n     */\r\n    var UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1;\r\n    /**\r\n     * The part of the index-2 table for U+D800..U+DBFF stores values for\r\n     * lead surrogate code _units_ not code _points_.\r\n     * Values for lead surrogate code _points_ are indexed with this portion of the table.\r\n     * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\r\n     */\r\n    var UTRIE2_LSCP_INDEX_2_OFFSET$1 = 0x10000 >> UTRIE2_SHIFT_2$1;\r\n    /** Number of entries in a data block. 32=0x20 */\r\n    var UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1;\r\n    /** Mask for getting the lower bits for the in-data-block offset. */\r\n    var UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1;\r\n    var UTRIE2_LSCP_INDEX_2_LENGTH$1 = 0x400 >> UTRIE2_SHIFT_2$1;\r\n    /** Count the lengths of both BMP pieces. 2080=0x820 */\r\n    var UTRIE2_INDEX_2_BMP_LENGTH$1 = UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1;\r\n    /**\r\n     * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\r\n     * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\r\n     */\r\n    var UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1;\r\n    var UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\r\n    /**\r\n     * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\r\n     * Variable length, for code points up to highStart, where the last single-value range starts.\r\n     * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\r\n     * (For 0x100000 supplementary code points U+10000..U+10ffff.)\r\n     *\r\n     * The part of the index-2 table for supplementary code points starts\r\n     * after this index-1 table.\r\n     *\r\n     * Both the index-1 table and the following part of the index-2 table\r\n     * are omitted completely if there is only BMP data.\r\n     */\r\n    var UTRIE2_INDEX_1_OFFSET$1 = UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1;\r\n    /**\r\n     * Number of index-1 entries for the BMP. 32=0x20\r\n     * This part of the index-1 table is omitted from the serialized form.\r\n     */\r\n    var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 0x10000 >> UTRIE2_SHIFT_1$1;\r\n    /** Number of entries in an index-2 block. 64=0x40 */\r\n    var UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1;\r\n    /** Mask for getting the lower bits for the in-index-2-block offset. */\r\n    var UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1;\r\n    var slice16$1 = function (view, start, end) {\r\n        if (view.slice) {\r\n            return view.slice(start, end);\r\n        }\r\n        return new Uint16Array(Array.prototype.slice.call(view, start, end));\r\n    };\r\n    var slice32$1 = function (view, start, end) {\r\n        if (view.slice) {\r\n            return view.slice(start, end);\r\n        }\r\n        return new Uint32Array(Array.prototype.slice.call(view, start, end));\r\n    };\r\n    var createTrieFromBase64$1 = function (base64, _byteLength) {\r\n        var buffer = decode$1(base64);\r\n        var view32 = Array.isArray(buffer) ? polyUint32Array$1(buffer) : new Uint32Array(buffer);\r\n        var view16 = Array.isArray(buffer) ? polyUint16Array$1(buffer) : new Uint16Array(buffer);\r\n        var headerLength = 24;\r\n        var index = slice16$1(view16, headerLength / 2, view32[4] / 2);\r\n        var data = view32[5] === 2\r\n            ? slice16$1(view16, (headerLength + view32[4]) / 2)\r\n            : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4));\r\n        return new Trie$1(view32[0], view32[1], view32[2], view32[3], index, data);\r\n    };\r\n    var Trie$1 = /** @class */ (function () {\r\n        function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\r\n            this.initialValue = initialValue;\r\n            this.errorValue = errorValue;\r\n            this.highStart = highStart;\r\n            this.highValueIndex = highValueIndex;\r\n            this.index = index;\r\n            this.data = data;\r\n        }\r\n        /**\r\n         * Get the value for a code point as stored in the Trie.\r\n         *\r\n         * @param codePoint the code point\r\n         * @return the value\r\n         */\r\n        Trie.prototype.get = function (codePoint) {\r\n            var ix;\r\n            if (codePoint >= 0) {\r\n                if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\r\n                    // Ordinary BMP code point, excluding leading surrogates.\r\n                    // BMP uses a single level lookup.  BMP index starts at offset 0 in the Trie2 index.\r\n                    // 16 bit data is stored in the index array itself.\r\n                    ix = this.index[codePoint >> UTRIE2_SHIFT_2$1];\r\n                    ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\r\n                    return this.data[ix];\r\n                }\r\n                if (codePoint <= 0xffff) {\r\n                    // Lead Surrogate Code Point.  A Separate index section is stored for\r\n                    // lead surrogate code units and code points.\r\n                    //   The main index has the code unit data.\r\n                    //   For this function, we need the code point data.\r\n                    // Note: this expression could be refactored for slightly improved efficiency, but\r\n                    //       surrogate code points will be so rare in practice that it's not worth it.\r\n                    ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET$1 + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2$1)];\r\n                    ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\r\n                    return this.data[ix];\r\n                }\r\n                if (codePoint < this.highStart) {\r\n                    // Supplemental code point, use two-level lookup.\r\n                    ix = UTRIE2_INDEX_1_OFFSET$1 - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 + (codePoint >> UTRIE2_SHIFT_1$1);\r\n                    ix = this.index[ix];\r\n                    ix += (codePoint >> UTRIE2_SHIFT_2$1) & UTRIE2_INDEX_2_MASK$1;\r\n                    ix = this.index[ix];\r\n                    ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\r\n                    return this.data[ix];\r\n                }\r\n                if (codePoint <= 0x10ffff) {\r\n                    return this.data[this.highValueIndex];\r\n                }\r\n            }\r\n            // Fall through.  The code point is outside of the legal range of 0..0x10ffff.\r\n            return this.errorValue;\r\n        };\r\n        return Trie;\r\n    }());\r\n\r\n    /*\r\n     * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>\r\n     * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\r\n     * Released under MIT License\r\n     */\r\n    var chars$3 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\r\n    // Use a lookup table to find the index.\r\n    var lookup$3 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\r\n    for (var i$3 = 0; i$3 < chars$3.length; i$3++) {\r\n        lookup$3[chars$3.charCodeAt(i$3)] = i$3;\r\n    }\r\n\r\n    var base64$1 = 'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';\r\n\r\n    var LETTER_NUMBER_MODIFIER = 50;\r\n    // Non-tailorable Line Breaking Classes\r\n    var BK = 1; //  Cause a line break (after)\r\n    var CR$1 = 2; //  Cause a line break (after), except between CR and LF\r\n    var LF$1 = 3; //  Cause a line break (after)\r\n    var CM = 4; //  Prohibit a line break between the character and the preceding character\r\n    var NL = 5; //  Cause a line break (after)\r\n    var WJ = 7; //  Prohibit line breaks before and after\r\n    var ZW = 8; //  Provide a break opportunity\r\n    var GL = 9; //  Prohibit line breaks before and after\r\n    var SP = 10; // Enable indirect line breaks\r\n    var ZWJ$1 = 11; // Prohibit line breaks within joiner sequences\r\n    // Break Opportunities\r\n    var B2 = 12; //  Provide a line break opportunity before and after the character\r\n    var BA = 13; //  Generally provide a line break opportunity after the character\r\n    var BB = 14; //  Generally provide a line break opportunity before the character\r\n    var HY = 15; //  Provide a line break opportunity after the character, except in numeric context\r\n    var CB = 16; //   Provide a line break opportunity contingent on additional information\r\n    // Characters Prohibiting Certain Breaks\r\n    var CL = 17; //  Prohibit line breaks before\r\n    var CP = 18; //  Prohibit line breaks before\r\n    var EX = 19; //  Prohibit line breaks before\r\n    var IN = 20; //  Allow only indirect line breaks between pairs\r\n    var NS = 21; //  Allow only indirect line breaks before\r\n    var OP = 22; //  Prohibit line breaks after\r\n    var QU = 23; //  Act like they are both opening and closing\r\n    // Numeric Context\r\n    var IS = 24; //  Prevent breaks after any and before numeric\r\n    var NU = 25; //  Form numeric expressions for line breaking purposes\r\n    var PO = 26; //  Do not break following a numeric expression\r\n    var PR = 27; //  Do not break in front of a numeric expression\r\n    var SY = 28; //  Prevent a break before; and allow a break after\r\n    // Other Characters\r\n    var AI = 29; //  Act like AL when the resolvedEAW is N; otherwise; act as ID\r\n    var AL = 30; //  Are alphabetic characters or symbols that are used with alphabetic characters\r\n    var CJ = 31; //  Treat as NS or ID for strict or normal breaking.\r\n    var EB = 32; //  Do not break from following Emoji Modifier\r\n    var EM = 33; //  Do not break from preceding Emoji Base\r\n    var H2 = 34; //  Form Korean syllable blocks\r\n    var H3 = 35; //  Form Korean syllable blocks\r\n    var HL = 36; //  Do not break around a following hyphen; otherwise act as Alphabetic\r\n    var ID = 37; //  Break before or after; except in some numeric context\r\n    var JL = 38; //  Form Korean syllable blocks\r\n    var JV = 39; //  Form Korean syllable blocks\r\n    var JT = 40; //  Form Korean syllable blocks\r\n    var RI$1 = 41; //  Keep pairs together. For pairs; break before and after other classes\r\n    var SA = 42; //  Provide a line break opportunity contingent on additional, language-specific context analysis\r\n    var XX = 43; //  Have as yet unknown line breaking behavior or unassigned code positions\r\n    var ea_OP = [0x2329, 0xff08];\r\n    var BREAK_MANDATORY = '!';\r\n    var BREAK_NOT_ALLOWED$1 = '×';\r\n    var BREAK_ALLOWED$1 = '÷';\r\n    var UnicodeTrie$1 = createTrieFromBase64$1(base64$1);\r\n    var ALPHABETICS = [AL, HL];\r\n    var HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL];\r\n    var SPACE$1 = [SP, ZW];\r\n    var PREFIX_POSTFIX = [PR, PO];\r\n    var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1);\r\n    var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\r\n    var HYPHEN = [HY, BA];\r\n    var codePointsToCharacterClasses = function (codePoints, lineBreak) {\r\n        if (lineBreak === void 0) { lineBreak = 'strict'; }\r\n        var types = [];\r\n        var indices = [];\r\n        var categories = [];\r\n        codePoints.forEach(function (codePoint, index) {\r\n            var classType = UnicodeTrie$1.get(codePoint);\r\n            if (classType > LETTER_NUMBER_MODIFIER) {\r\n                categories.push(true);\r\n                classType -= LETTER_NUMBER_MODIFIER;\r\n            }\r\n            else {\r\n                categories.push(false);\r\n            }\r\n            if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\r\n                // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\r\n                if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\r\n                    indices.push(index);\r\n                    return types.push(CB);\r\n                }\r\n            }\r\n            if (classType === CM || classType === ZWJ$1) {\r\n                // LB10 Treat any remaining combining mark or ZWJ as AL.\r\n                if (index === 0) {\r\n                    indices.push(index);\r\n                    return types.push(AL);\r\n                }\r\n                // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\r\n                // the base character in all of the following rules. Treat ZWJ as if it were CM.\r\n                var prev = types[index - 1];\r\n                if (LINE_BREAKS.indexOf(prev) === -1) {\r\n                    indices.push(indices[index - 1]);\r\n                    return types.push(prev);\r\n                }\r\n                indices.push(index);\r\n                return types.push(AL);\r\n            }\r\n            indices.push(index);\r\n            if (classType === CJ) {\r\n                return types.push(lineBreak === 'strict' ? NS : ID);\r\n            }\r\n            if (classType === SA) {\r\n                return types.push(AL);\r\n            }\r\n            if (classType === AI) {\r\n                return types.push(AL);\r\n            }\r\n            // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\r\n            // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\r\n            // to take into account the actual line breaking properties for these characters.\r\n            if (classType === XX) {\r\n                if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\r\n                    return types.push(ID);\r\n                }\r\n                else {\r\n                    return types.push(AL);\r\n                }\r\n            }\r\n            types.push(classType);\r\n        });\r\n        return [indices, types, categories];\r\n    };\r\n    var isAdjacentWithSpaceIgnored = function (a, b, currentIndex, classTypes) {\r\n        var current = classTypes[currentIndex];\r\n        if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\r\n            var i = currentIndex;\r\n            while (i <= classTypes.length) {\r\n                i++;\r\n                var next = classTypes[i];\r\n                if (next === b) {\r\n                    return true;\r\n                }\r\n                if (next !== SP) {\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        if (current === SP) {\r\n            var i = currentIndex;\r\n            while (i > 0) {\r\n                i--;\r\n                var prev = classTypes[i];\r\n                if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\r\n                    var n = currentIndex;\r\n                    while (n <= classTypes.length) {\r\n                        n++;\r\n                        var next = classTypes[n];\r\n                        if (next === b) {\r\n                            return true;\r\n                        }\r\n                        if (next !== SP) {\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                if (prev !== SP) {\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        return false;\r\n    };\r\n    var previousNonSpaceClassType = function (currentIndex, classTypes) {\r\n        var i = currentIndex;\r\n        while (i >= 0) {\r\n            var type = classTypes[i];\r\n            if (type === SP) {\r\n                i--;\r\n            }\r\n            else {\r\n                return type;\r\n            }\r\n        }\r\n        return 0;\r\n    };\r\n    var _lineBreakAtIndex = function (codePoints, classTypes, indicies, index, forbiddenBreaks) {\r\n        if (indicies[index] === 0) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        var currentIndex = index - 1;\r\n        if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        var beforeIndex = currentIndex - 1;\r\n        var afterIndex = currentIndex + 1;\r\n        var current = classTypes[currentIndex];\r\n        // LB4 Always break after hard line breaks.\r\n        // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\r\n        var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\r\n        var next = classTypes[afterIndex];\r\n        if (current === CR$1 && next === LF$1) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\r\n            return BREAK_MANDATORY;\r\n        }\r\n        // LB6 Do not break before hard line breaks.\r\n        if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB7 Do not break before spaces or zero width space.\r\n        if (SPACE$1.indexOf(next) !== -1) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\r\n        if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\r\n            return BREAK_ALLOWED$1;\r\n        }\r\n        // LB8a Do not break after a zero width joiner.\r\n        if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // zwj emojis\r\n        if ((current === EB || current === EM) && UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB11 Do not break before or after Word joiner and related characters.\r\n        if (current === WJ || next === WJ) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB12 Do not break after NBSP and related characters.\r\n        if (current === GL) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\r\n        if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\r\n        if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB14 Do not break after ‘[’, even after spaces.\r\n        if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB15 Do not break within ‘”[’, even with intervening spaces.\r\n        if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\r\n        if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB17 Do not break within ‘——’, even with intervening spaces.\r\n        if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB18 Break after spaces.\r\n        if (current === SP) {\r\n            return BREAK_ALLOWED$1;\r\n        }\r\n        // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\r\n        if (current === QU || next === QU) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB20 Break before and after unresolved CB.\r\n        if (next === CB || current === CB) {\r\n            return BREAK_ALLOWED$1;\r\n        }\r\n        // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\r\n        if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB21a Don't break after Hebrew + Hyphen.\r\n        if (before === HL && HYPHEN.indexOf(current) !== -1) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB21b Don’t break between Solidus and Hebrew letters.\r\n        if (current === SY && next === HL) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB22 Do not break before ellipsis.\r\n        if (next === IN) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB23 Do not break between digits and letters.\r\n        if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\r\n        if ((current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\r\n            ([ID, EB, EM].indexOf(current) !== -1 && next === PO)) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\r\n        if ((ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\r\n            (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB25 Do not break between the following pairs of classes relevant to numbers:\r\n        if (\r\n        // (PR | PO) × ( OP | HY )? NU\r\n        ([PR, PO].indexOf(current) !== -1 &&\r\n            (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\r\n            // ( OP | HY ) × NU\r\n            ([OP, HY].indexOf(current) !== -1 && next === NU) ||\r\n            // NU ×\t(NU | SY | IS)\r\n            (current === NU && [NU, SY, IS].indexOf(next) !== -1)) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\r\n        if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\r\n            var prevIndex = currentIndex;\r\n            while (prevIndex >= 0) {\r\n                var type = classTypes[prevIndex];\r\n                if (type === NU) {\r\n                    return BREAK_NOT_ALLOWED$1;\r\n                }\r\n                else if ([SY, IS].indexOf(type) !== -1) {\r\n                    prevIndex--;\r\n                }\r\n                else {\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\r\n        if ([PR, PO].indexOf(next) !== -1) {\r\n            var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\r\n            while (prevIndex >= 0) {\r\n                var type = classTypes[prevIndex];\r\n                if (type === NU) {\r\n                    return BREAK_NOT_ALLOWED$1;\r\n                }\r\n                else if ([SY, IS].indexOf(type) !== -1) {\r\n                    prevIndex--;\r\n                }\r\n                else {\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        // LB26 Do not break a Korean syllable.\r\n        if ((JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\r\n            ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\r\n            ([JT, H3].indexOf(current) !== -1 && next === JT)) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB27 Treat a Korean Syllable Block the same as ID.\r\n        if ((KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\r\n            (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB28 Do not break between alphabetics (“at”).\r\n        if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\r\n        if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\r\n        if ((ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\r\n            next === OP &&\r\n            ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\r\n            (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\r\n        // indicators preceding the position of the break.\r\n        if (current === RI$1 && next === RI$1) {\r\n            var i = indicies[currentIndex];\r\n            var count = 1;\r\n            while (i > 0) {\r\n                i--;\r\n                if (classTypes[i] === RI$1) {\r\n                    count++;\r\n                }\r\n                else {\r\n                    break;\r\n                }\r\n            }\r\n            if (count % 2 !== 0) {\r\n                return BREAK_NOT_ALLOWED$1;\r\n            }\r\n        }\r\n        // LB30b Do not break between an emoji base and an emoji modifier.\r\n        if (current === EB && next === EM) {\r\n            return BREAK_NOT_ALLOWED$1;\r\n        }\r\n        return BREAK_ALLOWED$1;\r\n    };\r\n    var cssFormattedClasses = function (codePoints, options) {\r\n        if (!options) {\r\n            options = { lineBreak: 'normal', wordBreak: 'normal' };\r\n        }\r\n        var _a = codePointsToCharacterClasses(codePoints, options.lineBreak), indicies = _a[0], classTypes = _a[1], isLetterNumber = _a[2];\r\n        if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\r\n            classTypes = classTypes.map(function (type) { return ([NU, AL, SA].indexOf(type) !== -1 ? ID : type); });\r\n        }\r\n        var forbiddenBreakpoints = options.wordBreak === 'keep-all'\r\n            ? isLetterNumber.map(function (letterNumber, i) {\r\n                return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\r\n            })\r\n            : undefined;\r\n        return [indicies, classTypes, forbiddenBreakpoints];\r\n    };\r\n    var Break = /** @class */ (function () {\r\n        function Break(codePoints, lineBreak, start, end) {\r\n            this.codePoints = codePoints;\r\n            this.required = lineBreak === BREAK_MANDATORY;\r\n            this.start = start;\r\n            this.end = end;\r\n        }\r\n        Break.prototype.slice = function () {\r\n            return fromCodePoint$1.apply(void 0, this.codePoints.slice(this.start, this.end));\r\n        };\r\n        return Break;\r\n    }());\r\n    var LineBreaker = function (str, options) {\r\n        var codePoints = toCodePoints$1(str);\r\n        var _a = cssFormattedClasses(codePoints, options), indicies = _a[0], classTypes = _a[1], forbiddenBreakpoints = _a[2];\r\n        var length = codePoints.length;\r\n        var lastEnd = 0;\r\n        var nextIndex = 0;\r\n        return {\r\n            next: function () {\r\n                if (nextIndex >= length) {\r\n                    return { done: true, value: null };\r\n                }\r\n                var lineBreak = BREAK_NOT_ALLOWED$1;\r\n                while (nextIndex < length &&\r\n                    (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\r\n                        BREAK_NOT_ALLOWED$1) { }\r\n                if (lineBreak !== BREAK_NOT_ALLOWED$1 || nextIndex === length) {\r\n                    var value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\r\n                    lastEnd = nextIndex;\r\n                    return { value: value, done: false };\r\n                }\r\n                return { done: true, value: null };\r\n            },\r\n        };\r\n    };\r\n\r\n    // https://www.w3.org/TR/css-syntax-3\r\n    var FLAG_UNRESTRICTED = 1 << 0;\r\n    var FLAG_ID = 1 << 1;\r\n    var FLAG_INTEGER = 1 << 2;\r\n    var FLAG_NUMBER = 1 << 3;\r\n    var LINE_FEED = 0x000a;\r\n    var SOLIDUS = 0x002f;\r\n    var REVERSE_SOLIDUS = 0x005c;\r\n    var CHARACTER_TABULATION = 0x0009;\r\n    var SPACE = 0x0020;\r\n    var QUOTATION_MARK = 0x0022;\r\n    var EQUALS_SIGN = 0x003d;\r\n    var NUMBER_SIGN = 0x0023;\r\n    var DOLLAR_SIGN = 0x0024;\r\n    var PERCENTAGE_SIGN = 0x0025;\r\n    var APOSTROPHE = 0x0027;\r\n    var LEFT_PARENTHESIS = 0x0028;\r\n    var RIGHT_PARENTHESIS = 0x0029;\r\n    var LOW_LINE = 0x005f;\r\n    var HYPHEN_MINUS = 0x002d;\r\n    var EXCLAMATION_MARK = 0x0021;\r\n    var LESS_THAN_SIGN = 0x003c;\r\n    var GREATER_THAN_SIGN = 0x003e;\r\n    var COMMERCIAL_AT = 0x0040;\r\n    var LEFT_SQUARE_BRACKET = 0x005b;\r\n    var RIGHT_SQUARE_BRACKET = 0x005d;\r\n    var CIRCUMFLEX_ACCENT = 0x003d;\r\n    var LEFT_CURLY_BRACKET = 0x007b;\r\n    var QUESTION_MARK = 0x003f;\r\n    var RIGHT_CURLY_BRACKET = 0x007d;\r\n    var VERTICAL_LINE = 0x007c;\r\n    var TILDE = 0x007e;\r\n    var CONTROL = 0x0080;\r\n    var REPLACEMENT_CHARACTER = 0xfffd;\r\n    var ASTERISK = 0x002a;\r\n    var PLUS_SIGN = 0x002b;\r\n    var COMMA = 0x002c;\r\n    var COLON = 0x003a;\r\n    var SEMICOLON = 0x003b;\r\n    var FULL_STOP = 0x002e;\r\n    var NULL = 0x0000;\r\n    var BACKSPACE = 0x0008;\r\n    var LINE_TABULATION = 0x000b;\r\n    var SHIFT_OUT = 0x000e;\r\n    var INFORMATION_SEPARATOR_ONE = 0x001f;\r\n    var DELETE = 0x007f;\r\n    var EOF = -1;\r\n    var ZERO = 0x0030;\r\n    var a = 0x0061;\r\n    var e = 0x0065;\r\n    var f = 0x0066;\r\n    var u = 0x0075;\r\n    var z = 0x007a;\r\n    var A = 0x0041;\r\n    var E = 0x0045;\r\n    var F = 0x0046;\r\n    var U = 0x0055;\r\n    var Z = 0x005a;\r\n    var isDigit = function (codePoint) { return codePoint >= ZERO && codePoint <= 0x0039; };\r\n    var isSurrogateCodePoint = function (codePoint) { return codePoint >= 0xd800 && codePoint <= 0xdfff; };\r\n    var isHex = function (codePoint) {\r\n        return isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\r\n    };\r\n    var isLowerCaseLetter = function (codePoint) { return codePoint >= a && codePoint <= z; };\r\n    var isUpperCaseLetter = function (codePoint) { return codePoint >= A && codePoint <= Z; };\r\n    var isLetter = function (codePoint) { return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint); };\r\n    var isNonASCIICodePoint = function (codePoint) { return codePoint >= CONTROL; };\r\n    var isWhiteSpace = function (codePoint) {\r\n        return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\r\n    };\r\n    var isNameStartCodePoint = function (codePoint) {\r\n        return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\r\n    };\r\n    var isNameCodePoint = function (codePoint) {\r\n        return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\r\n    };\r\n    var isNonPrintableCodePoint = function (codePoint) {\r\n        return ((codePoint >= NULL && codePoint <= BACKSPACE) ||\r\n            codePoint === LINE_TABULATION ||\r\n            (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\r\n            codePoint === DELETE);\r\n    };\r\n    var isValidEscape = function (c1, c2) {\r\n        if (c1 !== REVERSE_SOLIDUS) {\r\n            return false;\r\n        }\r\n        return c2 !== LINE_FEED;\r\n    };\r\n    var isIdentifierStart = function (c1, c2, c3) {\r\n        if (c1 === HYPHEN_MINUS) {\r\n            return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\r\n        }\r\n        else if (isNameStartCodePoint(c1)) {\r\n            return true;\r\n        }\r\n        else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\r\n            return true;\r\n        }\r\n        return false;\r\n    };\r\n    var isNumberStart = function (c1, c2, c3) {\r\n        if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\r\n            if (isDigit(c2)) {\r\n                return true;\r\n            }\r\n            return c2 === FULL_STOP && isDigit(c3);\r\n        }\r\n        if (c1 === FULL_STOP) {\r\n            return isDigit(c2);\r\n        }\r\n        return isDigit(c1);\r\n    };\r\n    var stringToNumber = function (codePoints) {\r\n        var c = 0;\r\n        var sign = 1;\r\n        if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\r\n            if (codePoints[c] === HYPHEN_MINUS) {\r\n                sign = -1;\r\n            }\r\n            c++;\r\n        }\r\n        var integers = [];\r\n        while (isDigit(codePoints[c])) {\r\n            integers.push(codePoints[c++]);\r\n        }\r\n        var int = integers.length ? parseInt(fromCodePoint$1.apply(void 0, integers), 10) : 0;\r\n        if (codePoints[c] === FULL_STOP) {\r\n            c++;\r\n        }\r\n        var fraction = [];\r\n        while (isDigit(codePoints[c])) {\r\n            fraction.push(codePoints[c++]);\r\n        }\r\n        var fracd = fraction.length;\r\n        var frac = fracd ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10) : 0;\r\n        if (codePoints[c] === E || codePoints[c] === e) {\r\n            c++;\r\n        }\r\n        var expsign = 1;\r\n        if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\r\n            if (codePoints[c] === HYPHEN_MINUS) {\r\n                expsign = -1;\r\n            }\r\n            c++;\r\n        }\r\n        var exponent = [];\r\n        while (isDigit(codePoints[c])) {\r\n            exponent.push(codePoints[c++]);\r\n        }\r\n        var exp = exponent.length ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10) : 0;\r\n        return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\r\n    };\r\n    var LEFT_PARENTHESIS_TOKEN = {\r\n        type: 2 /* LEFT_PARENTHESIS_TOKEN */\r\n    };\r\n    var RIGHT_PARENTHESIS_TOKEN = {\r\n        type: 3 /* RIGHT_PARENTHESIS_TOKEN */\r\n    };\r\n    var COMMA_TOKEN = { type: 4 /* COMMA_TOKEN */ };\r\n    var SUFFIX_MATCH_TOKEN = { type: 13 /* SUFFIX_MATCH_TOKEN */ };\r\n    var PREFIX_MATCH_TOKEN = { type: 8 /* PREFIX_MATCH_TOKEN */ };\r\n    var COLUMN_TOKEN = { type: 21 /* COLUMN_TOKEN */ };\r\n    var DASH_MATCH_TOKEN = { type: 9 /* DASH_MATCH_TOKEN */ };\r\n    var INCLUDE_MATCH_TOKEN = { type: 10 /* INCLUDE_MATCH_TOKEN */ };\r\n    var LEFT_CURLY_BRACKET_TOKEN = {\r\n        type: 11 /* LEFT_CURLY_BRACKET_TOKEN */\r\n    };\r\n    var RIGHT_CURLY_BRACKET_TOKEN = {\r\n        type: 12 /* RIGHT_CURLY_BRACKET_TOKEN */\r\n    };\r\n    var SUBSTRING_MATCH_TOKEN = { type: 14 /* SUBSTRING_MATCH_TOKEN */ };\r\n    var BAD_URL_TOKEN = { type: 23 /* BAD_URL_TOKEN */ };\r\n    var BAD_STRING_TOKEN = { type: 1 /* BAD_STRING_TOKEN */ };\r\n    var CDO_TOKEN = { type: 25 /* CDO_TOKEN */ };\r\n    var CDC_TOKEN = { type: 24 /* CDC_TOKEN */ };\r\n    var COLON_TOKEN = { type: 26 /* COLON_TOKEN */ };\r\n    var SEMICOLON_TOKEN = { type: 27 /* SEMICOLON_TOKEN */ };\r\n    var LEFT_SQUARE_BRACKET_TOKEN = {\r\n        type: 28 /* LEFT_SQUARE_BRACKET_TOKEN */\r\n    };\r\n    var RIGHT_SQUARE_BRACKET_TOKEN = {\r\n        type: 29 /* RIGHT_SQUARE_BRACKET_TOKEN */\r\n    };\r\n    var WHITESPACE_TOKEN = { type: 31 /* WHITESPACE_TOKEN */ };\r\n    var EOF_TOKEN = { type: 32 /* EOF_TOKEN */ };\r\n    var Tokenizer = /** @class */ (function () {\r\n        function Tokenizer() {\r\n            this._value = [];\r\n        }\r\n        Tokenizer.prototype.write = function (chunk) {\r\n            this._value = this._value.concat(toCodePoints$1(chunk));\r\n        };\r\n        Tokenizer.prototype.read = function () {\r\n            var tokens = [];\r\n            var token = this.consumeToken();\r\n            while (token !== EOF_TOKEN) {\r\n                tokens.push(token);\r\n                token = this.consumeToken();\r\n            }\r\n            return tokens;\r\n        };\r\n        Tokenizer.prototype.consumeToken = function () {\r\n            var codePoint = this.consumeCodePoint();\r\n            switch (codePoint) {\r\n                case QUOTATION_MARK:\r\n                    return this.consumeStringToken(QUOTATION_MARK);\r\n                case NUMBER_SIGN:\r\n                    var c1 = this.peekCodePoint(0);\r\n                    var c2 = this.peekCodePoint(1);\r\n                    var c3 = this.peekCodePoint(2);\r\n                    if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\r\n                        var flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\r\n                        var value = this.consumeName();\r\n                        return { type: 5 /* HASH_TOKEN */, value: value, flags: flags };\r\n                    }\r\n                    break;\r\n                case DOLLAR_SIGN:\r\n                    if (this.peekCodePoint(0) === EQUALS_SIGN) {\r\n                        this.consumeCodePoint();\r\n                        return SUFFIX_MATCH_TOKEN;\r\n                    }\r\n                    break;\r\n                case APOSTROPHE:\r\n                    return this.consumeStringToken(APOSTROPHE);\r\n                case LEFT_PARENTHESIS:\r\n                    return LEFT_PARENTHESIS_TOKEN;\r\n                case RIGHT_PARENTHESIS:\r\n                    return RIGHT_PARENTHESIS_TOKEN;\r\n                case ASTERISK:\r\n                    if (this.peekCodePoint(0) === EQUALS_SIGN) {\r\n                        this.consumeCodePoint();\r\n                        return SUBSTRING_MATCH_TOKEN;\r\n                    }\r\n                    break;\r\n                case PLUS_SIGN:\r\n                    if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\r\n                        this.reconsumeCodePoint(codePoint);\r\n                        return this.consumeNumericToken();\r\n                    }\r\n                    break;\r\n                case COMMA:\r\n                    return COMMA_TOKEN;\r\n                case HYPHEN_MINUS:\r\n                    var e1 = codePoint;\r\n                    var e2 = this.peekCodePoint(0);\r\n                    var e3 = this.peekCodePoint(1);\r\n                    if (isNumberStart(e1, e2, e3)) {\r\n                        this.reconsumeCodePoint(codePoint);\r\n                        return this.consumeNumericToken();\r\n                    }\r\n                    if (isIdentifierStart(e1, e2, e3)) {\r\n                        this.reconsumeCodePoint(codePoint);\r\n                        return this.consumeIdentLikeToken();\r\n                    }\r\n                    if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\r\n                        this.consumeCodePoint();\r\n                        this.consumeCodePoint();\r\n                        return CDC_TOKEN;\r\n                    }\r\n                    break;\r\n                case FULL_STOP:\r\n                    if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\r\n                        this.reconsumeCodePoint(codePoint);\r\n                        return this.consumeNumericToken();\r\n                    }\r\n                    break;\r\n                case SOLIDUS:\r\n                    if (this.peekCodePoint(0) === ASTERISK) {\r\n                        this.consumeCodePoint();\r\n                        while (true) {\r\n                            var c = this.consumeCodePoint();\r\n                            if (c === ASTERISK) {\r\n                                c = this.consumeCodePoint();\r\n                                if (c === SOLIDUS) {\r\n                                    return this.consumeToken();\r\n                                }\r\n                            }\r\n                            if (c === EOF) {\r\n                                return this.consumeToken();\r\n                            }\r\n                        }\r\n                    }\r\n                    break;\r\n                case COLON:\r\n                    return COLON_TOKEN;\r\n                case SEMICOLON:\r\n                    return SEMICOLON_TOKEN;\r\n                case LESS_THAN_SIGN:\r\n                    if (this.peekCodePoint(0) === EXCLAMATION_MARK &&\r\n                        this.peekCodePoint(1) === HYPHEN_MINUS &&\r\n                        this.peekCodePoint(2) === HYPHEN_MINUS) {\r\n                        this.consumeCodePoint();\r\n                        this.consumeCodePoint();\r\n                        return CDO_TOKEN;\r\n                    }\r\n                    break;\r\n                case COMMERCIAL_AT:\r\n                    var a1 = this.peekCodePoint(0);\r\n                    var a2 = this.peekCodePoint(1);\r\n                    var a3 = this.peekCodePoint(2);\r\n                    if (isIdentifierStart(a1, a2, a3)) {\r\n                        var value = this.consumeName();\r\n                        return { type: 7 /* AT_KEYWORD_TOKEN */, value: value };\r\n                    }\r\n                    break;\r\n                case LEFT_SQUARE_BRACKET:\r\n                    return LEFT_SQUARE_BRACKET_TOKEN;\r\n                case REVERSE_SOLIDUS:\r\n                    if (isValidEscape(codePoint, this.peekCodePoint(0))) {\r\n                        this.reconsumeCodePoint(codePoint);\r\n                        return this.consumeIdentLikeToken();\r\n                    }\r\n                    break;\r\n                case RIGHT_SQUARE_BRACKET:\r\n                    return RIGHT_SQUARE_BRACKET_TOKEN;\r\n                case CIRCUMFLEX_ACCENT:\r\n                    if (this.peekCodePoint(0) === EQUALS_SIGN) {\r\n                        this.consumeCodePoint();\r\n                        return PREFIX_MATCH_TOKEN;\r\n                    }\r\n                    break;\r\n                case LEFT_CURLY_BRACKET:\r\n                    return LEFT_CURLY_BRACKET_TOKEN;\r\n                case RIGHT_CURLY_BRACKET:\r\n                    return RIGHT_CURLY_BRACKET_TOKEN;\r\n                case u:\r\n                case U:\r\n                    var u1 = this.peekCodePoint(0);\r\n                    var u2 = this.peekCodePoint(1);\r\n                    if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\r\n                        this.consumeCodePoint();\r\n                        this.consumeUnicodeRangeToken();\r\n                    }\r\n                    this.reconsumeCodePoint(codePoint);\r\n                    return this.consumeIdentLikeToken();\r\n                case VERTICAL_LINE:\r\n                    if (this.peekCodePoint(0) === EQUALS_SIGN) {\r\n                        this.consumeCodePoint();\r\n                        return DASH_MATCH_TOKEN;\r\n                    }\r\n                    if (this.peekCodePoint(0) === VERTICAL_LINE) {\r\n                        this.consumeCodePoint();\r\n                        return COLUMN_TOKEN;\r\n                    }\r\n                    break;\r\n                case TILDE:\r\n                    if (this.peekCodePoint(0) === EQUALS_SIGN) {\r\n                        this.consumeCodePoint();\r\n                        return INCLUDE_MATCH_TOKEN;\r\n                    }\r\n                    break;\r\n                case EOF:\r\n                    return EOF_TOKEN;\r\n            }\r\n            if (isWhiteSpace(codePoint)) {\r\n                this.consumeWhiteSpace();\r\n                return WHITESPACE_TOKEN;\r\n            }\r\n            if (isDigit(codePoint)) {\r\n                this.reconsumeCodePoint(codePoint);\r\n                return this.consumeNumericToken();\r\n            }\r\n            if (isNameStartCodePoint(codePoint)) {\r\n                this.reconsumeCodePoint(codePoint);\r\n                return this.consumeIdentLikeToken();\r\n            }\r\n            return { type: 6 /* DELIM_TOKEN */, value: fromCodePoint$1(codePoint) };\r\n        };\r\n        Tokenizer.prototype.consumeCodePoint = function () {\r\n            var value = this._value.shift();\r\n            return typeof value === 'undefined' ? -1 : value;\r\n        };\r\n        Tokenizer.prototype.reconsumeCodePoint = function (codePoint) {\r\n            this._value.unshift(codePoint);\r\n        };\r\n        Tokenizer.prototype.peekCodePoint = function (delta) {\r\n            if (delta >= this._value.length) {\r\n                return -1;\r\n            }\r\n            return this._value[delta];\r\n        };\r\n        Tokenizer.prototype.consumeUnicodeRangeToken = function () {\r\n            var digits = [];\r\n            var codePoint = this.consumeCodePoint();\r\n            while (isHex(codePoint) && digits.length < 6) {\r\n                digits.push(codePoint);\r\n                codePoint = this.consumeCodePoint();\r\n            }\r\n            var questionMarks = false;\r\n            while (codePoint === QUESTION_MARK && digits.length < 6) {\r\n                digits.push(codePoint);\r\n                codePoint = this.consumeCodePoint();\r\n                questionMarks = true;\r\n            }\r\n            if (questionMarks) {\r\n                var start_1 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? ZERO : digit); })), 16);\r\n                var end = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? F : digit); })), 16);\r\n                return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start_1, end: end };\r\n            }\r\n            var start = parseInt(fromCodePoint$1.apply(void 0, digits), 16);\r\n            if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\r\n                this.consumeCodePoint();\r\n                codePoint = this.consumeCodePoint();\r\n                var endDigits = [];\r\n                while (isHex(codePoint) && endDigits.length < 6) {\r\n                    endDigits.push(codePoint);\r\n                    codePoint = this.consumeCodePoint();\r\n                }\r\n                var end = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16);\r\n                return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: end };\r\n            }\r\n            else {\r\n                return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: start };\r\n            }\r\n        };\r\n        Tokenizer.prototype.consumeIdentLikeToken = function () {\r\n            var value = this.consumeName();\r\n            if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\r\n                this.consumeCodePoint();\r\n                return this.consumeUrlToken();\r\n            }\r\n            else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\r\n                this.consumeCodePoint();\r\n                return { type: 19 /* FUNCTION_TOKEN */, value: value };\r\n            }\r\n            return { type: 20 /* IDENT_TOKEN */, value: value };\r\n        };\r\n        Tokenizer.prototype.consumeUrlToken = function () {\r\n            var value = [];\r\n            this.consumeWhiteSpace();\r\n            if (this.peekCodePoint(0) === EOF) {\r\n                return { type: 22 /* URL_TOKEN */, value: '' };\r\n            }\r\n            var next = this.peekCodePoint(0);\r\n            if (next === APOSTROPHE || next === QUOTATION_MARK) {\r\n                var stringToken = this.consumeStringToken(this.consumeCodePoint());\r\n                if (stringToken.type === 0 /* STRING_TOKEN */) {\r\n                    this.consumeWhiteSpace();\r\n                    if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\r\n                        this.consumeCodePoint();\r\n                        return { type: 22 /* URL_TOKEN */, value: stringToken.value };\r\n                    }\r\n                }\r\n                this.consumeBadUrlRemnants();\r\n                return BAD_URL_TOKEN;\r\n            }\r\n            while (true) {\r\n                var codePoint = this.consumeCodePoint();\r\n                if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\r\n                    return { type: 22 /* URL_TOKEN */, value: fromCodePoint$1.apply(void 0, value) };\r\n                }\r\n                else if (isWhiteSpace(codePoint)) {\r\n                    this.consumeWhiteSpace();\r\n                    if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\r\n                        this.consumeCodePoint();\r\n                        return { type: 22 /* URL_TOKEN */, value: fromCodePoint$1.apply(void 0, value) };\r\n                    }\r\n                    this.consumeBadUrlRemnants();\r\n                    return BAD_URL_TOKEN;\r\n                }\r\n                else if (codePoint === QUOTATION_MARK ||\r\n                    codePoint === APOSTROPHE ||\r\n                    codePoint === LEFT_PARENTHESIS ||\r\n                    isNonPrintableCodePoint(codePoint)) {\r\n                    this.consumeBadUrlRemnants();\r\n                    return BAD_URL_TOKEN;\r\n                }\r\n                else if (codePoint === REVERSE_SOLIDUS) {\r\n                    if (isValidEscape(codePoint, this.peekCodePoint(0))) {\r\n                        value.push(this.consumeEscapedCodePoint());\r\n                    }\r\n                    else {\r\n                        this.consumeBadUrlRemnants();\r\n                        return BAD_URL_TOKEN;\r\n                    }\r\n                }\r\n                else {\r\n                    value.push(codePoint);\r\n                }\r\n            }\r\n        };\r\n        Tokenizer.prototype.consumeWhiteSpace = function () {\r\n            while (isWhiteSpace(this.peekCodePoint(0))) {\r\n                this.consumeCodePoint();\r\n            }\r\n        };\r\n        Tokenizer.prototype.consumeBadUrlRemnants = function () {\r\n            while (true) {\r\n                var codePoint = this.consumeCodePoint();\r\n                if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\r\n                    return;\r\n                }\r\n                if (isValidEscape(codePoint, this.peekCodePoint(0))) {\r\n                    this.consumeEscapedCodePoint();\r\n                }\r\n            }\r\n        };\r\n        Tokenizer.prototype.consumeStringSlice = function (count) {\r\n            var SLICE_STACK_SIZE = 50000;\r\n            var value = '';\r\n            while (count > 0) {\r\n                var amount = Math.min(SLICE_STACK_SIZE, count);\r\n                value += fromCodePoint$1.apply(void 0, this._value.splice(0, amount));\r\n                count -= amount;\r\n            }\r\n            this._value.shift();\r\n            return value;\r\n        };\r\n        Tokenizer.prototype.consumeStringToken = function (endingCodePoint) {\r\n            var value = '';\r\n            var i = 0;\r\n            do {\r\n                var codePoint = this._value[i];\r\n                if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\r\n                    value += this.consumeStringSlice(i);\r\n                    return { type: 0 /* STRING_TOKEN */, value: value };\r\n                }\r\n                if (codePoint === LINE_FEED) {\r\n                    this._value.splice(0, i);\r\n                    return BAD_STRING_TOKEN;\r\n                }\r\n                if (codePoint === REVERSE_SOLIDUS) {\r\n                    var next = this._value[i + 1];\r\n                    if (next !== EOF && next !== undefined) {\r\n                        if (next === LINE_FEED) {\r\n                            value += this.consumeStringSlice(i);\r\n                            i = -1;\r\n                            this._value.shift();\r\n                        }\r\n                        else if (isValidEscape(codePoint, next)) {\r\n                            value += this.consumeStringSlice(i);\r\n                            value += fromCodePoint$1(this.consumeEscapedCodePoint());\r\n                            i = -1;\r\n                        }\r\n                    }\r\n                }\r\n                i++;\r\n            } while (true);\r\n        };\r\n        Tokenizer.prototype.consumeNumber = function () {\r\n            var repr = [];\r\n            var type = FLAG_INTEGER;\r\n            var c1 = this.peekCodePoint(0);\r\n            if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\r\n                repr.push(this.consumeCodePoint());\r\n            }\r\n            while (isDigit(this.peekCodePoint(0))) {\r\n                repr.push(this.consumeCodePoint());\r\n            }\r\n            c1 = this.peekCodePoint(0);\r\n            var c2 = this.peekCodePoint(1);\r\n            if (c1 === FULL_STOP && isDigit(c2)) {\r\n                repr.push(this.consumeCodePoint(), this.consumeCodePoint());\r\n                type = FLAG_NUMBER;\r\n                while (isDigit(this.peekCodePoint(0))) {\r\n                    repr.push(this.consumeCodePoint());\r\n                }\r\n            }\r\n            c1 = this.peekCodePoint(0);\r\n            c2 = this.peekCodePoint(1);\r\n            var c3 = this.peekCodePoint(2);\r\n            if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\r\n                repr.push(this.consumeCodePoint(), this.consumeCodePoint());\r\n                type = FLAG_NUMBER;\r\n                while (isDigit(this.peekCodePoint(0))) {\r\n                    repr.push(this.consumeCodePoint());\r\n                }\r\n            }\r\n            return [stringToNumber(repr), type];\r\n        };\r\n        Tokenizer.prototype.consumeNumericToken = function () {\r\n            var _a = this.consumeNumber(), number = _a[0], flags = _a[1];\r\n            var c1 = this.peekCodePoint(0);\r\n            var c2 = this.peekCodePoint(1);\r\n            var c3 = this.peekCodePoint(2);\r\n            if (isIdentifierStart(c1, c2, c3)) {\r\n                var unit = this.consumeName();\r\n                return { type: 15 /* DIMENSION_TOKEN */, number: number, flags: flags, unit: unit };\r\n            }\r\n            if (c1 === PERCENTAGE_SIGN) {\r\n                this.consumeCodePoint();\r\n                return { type: 16 /* PERCENTAGE_TOKEN */, number: number, flags: flags };\r\n            }\r\n            return { type: 17 /* NUMBER_TOKEN */, number: number, flags: flags };\r\n        };\r\n        Tokenizer.prototype.consumeEscapedCodePoint = function () {\r\n            var codePoint = this.consumeCodePoint();\r\n            if (isHex(codePoint)) {\r\n                var hex = fromCodePoint$1(codePoint);\r\n                while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\r\n                    hex += fromCodePoint$1(this.consumeCodePoint());\r\n                }\r\n                if (isWhiteSpace(this.peekCodePoint(0))) {\r\n                    this.consumeCodePoint();\r\n                }\r\n                var hexCodePoint = parseInt(hex, 16);\r\n                if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\r\n                    return REPLACEMENT_CHARACTER;\r\n                }\r\n                return hexCodePoint;\r\n            }\r\n            if (codePoint === EOF) {\r\n                return REPLACEMENT_CHARACTER;\r\n            }\r\n            return codePoint;\r\n        };\r\n        Tokenizer.prototype.consumeName = function () {\r\n            var result = '';\r\n            while (true) {\r\n                var codePoint = this.consumeCodePoint();\r\n                if (isNameCodePoint(codePoint)) {\r\n                    result += fromCodePoint$1(codePoint);\r\n                }\r\n                else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\r\n                    result += fromCodePoint$1(this.consumeEscapedCodePoint());\r\n                }\r\n                else {\r\n                    this.reconsumeCodePoint(codePoint);\r\n                    return result;\r\n                }\r\n            }\r\n        };\r\n        return Tokenizer;\r\n    }());\r\n\r\n    var Parser = /** @class */ (function () {\r\n        function Parser(tokens) {\r\n            this._tokens = tokens;\r\n        }\r\n        Parser.create = function (value) {\r\n            var tokenizer = new Tokenizer();\r\n            tokenizer.write(value);\r\n            return new Parser(tokenizer.read());\r\n        };\r\n        Parser.parseValue = function (value) {\r\n            return Parser.create(value).parseComponentValue();\r\n        };\r\n        Parser.parseValues = function (value) {\r\n            return Parser.create(value).parseComponentValues();\r\n        };\r\n        Parser.prototype.parseComponentValue = function () {\r\n            var token = this.consumeToken();\r\n            while (token.type === 31 /* WHITESPACE_TOKEN */) {\r\n                token = this.consumeToken();\r\n            }\r\n            if (token.type === 32 /* EOF_TOKEN */) {\r\n                throw new SyntaxError(\"Error parsing CSS component value, unexpected EOF\");\r\n            }\r\n            this.reconsumeToken(token);\r\n            var value = this.consumeComponentValue();\r\n            do {\r\n                token = this.consumeToken();\r\n            } while (token.type === 31 /* WHITESPACE_TOKEN */);\r\n            if (token.type === 32 /* EOF_TOKEN */) {\r\n                return value;\r\n            }\r\n            throw new SyntaxError(\"Error parsing CSS component value, multiple values found when expecting only one\");\r\n        };\r\n        Parser.prototype.parseComponentValues = function () {\r\n            var values = [];\r\n            while (true) {\r\n                var value = this.consumeComponentValue();\r\n                if (value.type === 32 /* EOF_TOKEN */) {\r\n                    return values;\r\n                }\r\n                values.push(value);\r\n                values.push();\r\n            }\r\n        };\r\n        Parser.prototype.consumeComponentValue = function () {\r\n            var token = this.consumeToken();\r\n            switch (token.type) {\r\n                case 11 /* LEFT_CURLY_BRACKET_TOKEN */:\r\n                case 28 /* LEFT_SQUARE_BRACKET_TOKEN */:\r\n                case 2 /* LEFT_PARENTHESIS_TOKEN */:\r\n                    return this.consumeSimpleBlock(token.type);\r\n                case 19 /* FUNCTION_TOKEN */:\r\n                    return this.consumeFunction(token);\r\n            }\r\n            return token;\r\n        };\r\n        Parser.prototype.consumeSimpleBlock = function (type) {\r\n            var block = { type: type, values: [] };\r\n            var token = this.consumeToken();\r\n            while (true) {\r\n                if (token.type === 32 /* EOF_TOKEN */ || isEndingTokenFor(token, type)) {\r\n                    return block;\r\n                }\r\n                this.reconsumeToken(token);\r\n                block.values.push(this.consumeComponentValue());\r\n                token = this.consumeToken();\r\n            }\r\n        };\r\n        Parser.prototype.consumeFunction = function (functionToken) {\r\n            var cssFunction = {\r\n                name: functionToken.value,\r\n                values: [],\r\n                type: 18 /* FUNCTION */\r\n            };\r\n            while (true) {\r\n                var token = this.consumeToken();\r\n                if (token.type === 32 /* EOF_TOKEN */ || token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */) {\r\n                    return cssFunction;\r\n                }\r\n                this.reconsumeToken(token);\r\n                cssFunction.values.push(this.consumeComponentValue());\r\n            }\r\n        };\r\n        Parser.prototype.consumeToken = function () {\r\n            var token = this._tokens.shift();\r\n            return typeof token === 'undefined' ? EOF_TOKEN : token;\r\n        };\r\n        Parser.prototype.reconsumeToken = function (token) {\r\n            this._tokens.unshift(token);\r\n        };\r\n        return Parser;\r\n    }());\r\n    var isDimensionToken = function (token) { return token.type === 15 /* DIMENSION_TOKEN */; };\r\n    var isNumberToken = function (token) { return token.type === 17 /* NUMBER_TOKEN */; };\r\n    var isIdentToken = function (token) { return token.type === 20 /* IDENT_TOKEN */; };\r\n    var isStringToken = function (token) { return token.type === 0 /* STRING_TOKEN */; };\r\n    var isIdentWithValue = function (token, value) {\r\n        return isIdentToken(token) && token.value === value;\r\n    };\r\n    var nonWhiteSpace = function (token) { return token.type !== 31 /* WHITESPACE_TOKEN */; };\r\n    var nonFunctionArgSeparator = function (token) {\r\n        return token.type !== 31 /* WHITESPACE_TOKEN */ && token.type !== 4 /* COMMA_TOKEN */;\r\n    };\r\n    var parseFunctionArgs = function (tokens) {\r\n        var args = [];\r\n        var arg = [];\r\n        tokens.forEach(function (token) {\r\n            if (token.type === 4 /* COMMA_TOKEN */) {\r\n                if (arg.length === 0) {\r\n                    throw new Error(\"Error parsing function args, zero tokens for arg\");\r\n                }\r\n                args.push(arg);\r\n                arg = [];\r\n                return;\r\n            }\r\n            if (token.type !== 31 /* WHITESPACE_TOKEN */) {\r\n                arg.push(token);\r\n            }\r\n        });\r\n        if (arg.length) {\r\n            args.push(arg);\r\n        }\r\n        return args;\r\n    };\r\n    var isEndingTokenFor = function (token, type) {\r\n        if (type === 11 /* LEFT_CURLY_BRACKET_TOKEN */ && token.type === 12 /* RIGHT_CURLY_BRACKET_TOKEN */) {\r\n            return true;\r\n        }\r\n        if (type === 28 /* LEFT_SQUARE_BRACKET_TOKEN */ && token.type === 29 /* RIGHT_SQUARE_BRACKET_TOKEN */) {\r\n            return true;\r\n        }\r\n        return type === 2 /* LEFT_PARENTHESIS_TOKEN */ && token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */;\r\n    };\r\n\r\n    var isLength = function (token) {\r\n        return token.type === 17 /* NUMBER_TOKEN */ || token.type === 15 /* DIMENSION_TOKEN */;\r\n    };\r\n\r\n    var isLengthPercentage = function (token) {\r\n        return token.type === 16 /* PERCENTAGE_TOKEN */ || isLength(token);\r\n    };\r\n    var parseLengthPercentageTuple = function (tokens) {\r\n        return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\r\n    };\r\n    var ZERO_LENGTH = {\r\n        type: 17 /* NUMBER_TOKEN */,\r\n        number: 0,\r\n        flags: FLAG_INTEGER\r\n    };\r\n    var FIFTY_PERCENT = {\r\n        type: 16 /* PERCENTAGE_TOKEN */,\r\n        number: 50,\r\n        flags: FLAG_INTEGER\r\n    };\r\n    var HUNDRED_PERCENT = {\r\n        type: 16 /* PERCENTAGE_TOKEN */,\r\n        number: 100,\r\n        flags: FLAG_INTEGER\r\n    };\r\n    var getAbsoluteValueForTuple = function (tuple, width, height) {\r\n        var x = tuple[0], y = tuple[1];\r\n        return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\r\n    };\r\n    var getAbsoluteValue = function (token, parent) {\r\n        if (token.type === 16 /* PERCENTAGE_TOKEN */) {\r\n            return (token.number / 100) * parent;\r\n        }\r\n        if (isDimensionToken(token)) {\r\n            switch (token.unit) {\r\n                case 'rem':\r\n                case 'em':\r\n                    return 16 * token.number; // TODO use correct font-size\r\n                case 'px':\r\n                default:\r\n                    return token.number;\r\n            }\r\n        }\r\n        return token.number;\r\n    };\r\n\r\n    var DEG = 'deg';\r\n    var GRAD = 'grad';\r\n    var RAD = 'rad';\r\n    var TURN = 'turn';\r\n    var angle = {\r\n        name: 'angle',\r\n        parse: function (_context, value) {\r\n            if (value.type === 15 /* DIMENSION_TOKEN */) {\r\n                switch (value.unit) {\r\n                    case DEG:\r\n                        return (Math.PI * value.number) / 180;\r\n                    case GRAD:\r\n                        return (Math.PI / 200) * value.number;\r\n                    case RAD:\r\n                        return value.number;\r\n                    case TURN:\r\n                        return Math.PI * 2 * value.number;\r\n                }\r\n            }\r\n            throw new Error(\"Unsupported angle type\");\r\n        }\r\n    };\r\n    var isAngle = function (value) {\r\n        if (value.type === 15 /* DIMENSION_TOKEN */) {\r\n            if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    };\r\n    var parseNamedSide = function (tokens) {\r\n        var sideOrCorner = tokens\r\n            .filter(isIdentToken)\r\n            .map(function (ident) { return ident.value; })\r\n            .join(' ');\r\n        switch (sideOrCorner) {\r\n            case 'to bottom right':\r\n            case 'to right bottom':\r\n            case 'left top':\r\n            case 'top left':\r\n                return [ZERO_LENGTH, ZERO_LENGTH];\r\n            case 'to top':\r\n            case 'bottom':\r\n                return deg(0);\r\n            case 'to bottom left':\r\n            case 'to left bottom':\r\n            case 'right top':\r\n            case 'top right':\r\n                return [ZERO_LENGTH, HUNDRED_PERCENT];\r\n            case 'to right':\r\n            case 'left':\r\n                return deg(90);\r\n            case 'to top left':\r\n            case 'to left top':\r\n            case 'right bottom':\r\n            case 'bottom right':\r\n                return [HUNDRED_PERCENT, HUNDRED_PERCENT];\r\n            case 'to bottom':\r\n            case 'top':\r\n                return deg(180);\r\n            case 'to top right':\r\n            case 'to right top':\r\n            case 'left bottom':\r\n            case 'bottom left':\r\n                return [HUNDRED_PERCENT, ZERO_LENGTH];\r\n            case 'to left':\r\n            case 'right':\r\n                return deg(270);\r\n        }\r\n        return 0;\r\n    };\r\n    var deg = function (deg) { return (Math.PI * deg) / 180; };\r\n\r\n    var color$1 = {\r\n        name: 'color',\r\n        parse: function (context, value) {\r\n            if (value.type === 18 /* FUNCTION */) {\r\n                var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\r\n                if (typeof colorFunction === 'undefined') {\r\n                    throw new Error(\"Attempting to parse an unsupported color function \\\"\" + value.name + \"\\\"\");\r\n                }\r\n                return colorFunction(context, value.values);\r\n            }\r\n            if (value.type === 5 /* HASH_TOKEN */) {\r\n                if (value.value.length === 3) {\r\n                    var r = value.value.substring(0, 1);\r\n                    var g = value.value.substring(1, 2);\r\n                    var b = value.value.substring(2, 3);\r\n                    return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\r\n                }\r\n                if (value.value.length === 4) {\r\n                    var r = value.value.substring(0, 1);\r\n                    var g = value.value.substring(1, 2);\r\n                    var b = value.value.substring(2, 3);\r\n                    var a = value.value.substring(3, 4);\r\n                    return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\r\n                }\r\n                if (value.value.length === 6) {\r\n                    var r = value.value.substring(0, 2);\r\n                    var g = value.value.substring(2, 4);\r\n                    var b = value.value.substring(4, 6);\r\n                    return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\r\n                }\r\n                if (value.value.length === 8) {\r\n                    var r = value.value.substring(0, 2);\r\n                    var g = value.value.substring(2, 4);\r\n                    var b = value.value.substring(4, 6);\r\n                    var a = value.value.substring(6, 8);\r\n                    return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\r\n                }\r\n            }\r\n            if (value.type === 20 /* IDENT_TOKEN */) {\r\n                var namedColor = COLORS[value.value.toUpperCase()];\r\n                if (typeof namedColor !== 'undefined') {\r\n                    return namedColor;\r\n                }\r\n            }\r\n            return COLORS.TRANSPARENT;\r\n        }\r\n    };\r\n    var isTransparent = function (color) { return (0xff & color) === 0; };\r\n    var asString = function (color) {\r\n        var alpha = 0xff & color;\r\n        var blue = 0xff & (color >> 8);\r\n        var green = 0xff & (color >> 16);\r\n        var red = 0xff & (color >> 24);\r\n        return alpha < 255 ? \"rgba(\" + red + \",\" + green + \",\" + blue + \",\" + alpha / 255 + \")\" : \"rgb(\" + red + \",\" + green + \",\" + blue + \")\";\r\n    };\r\n    var pack = function (r, g, b, a) {\r\n        return ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\r\n    };\r\n    var getTokenColorValue = function (token, i) {\r\n        if (token.type === 17 /* NUMBER_TOKEN */) {\r\n            return token.number;\r\n        }\r\n        if (token.type === 16 /* PERCENTAGE_TOKEN */) {\r\n            var max = i === 3 ? 1 : 255;\r\n            return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\r\n        }\r\n        return 0;\r\n    };\r\n    var rgb = function (_context, args) {\r\n        var tokens = args.filter(nonFunctionArgSeparator);\r\n        if (tokens.length === 3) {\r\n            var _a = tokens.map(getTokenColorValue), r = _a[0], g = _a[1], b = _a[2];\r\n            return pack(r, g, b, 1);\r\n        }\r\n        if (tokens.length === 4) {\r\n            var _b = tokens.map(getTokenColorValue), r = _b[0], g = _b[1], b = _b[2], a = _b[3];\r\n            return pack(r, g, b, a);\r\n        }\r\n        return 0;\r\n    };\r\n    function hue2rgb(t1, t2, hue) {\r\n        if (hue < 0) {\r\n            hue += 1;\r\n        }\r\n        if (hue >= 1) {\r\n            hue -= 1;\r\n        }\r\n        if (hue < 1 / 6) {\r\n            return (t2 - t1) * hue * 6 + t1;\r\n        }\r\n        else if (hue < 1 / 2) {\r\n            return t2;\r\n        }\r\n        else if (hue < 2 / 3) {\r\n            return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\r\n        }\r\n        else {\r\n            return t1;\r\n        }\r\n    }\r\n    var hsl = function (context, args) {\r\n        var tokens = args.filter(nonFunctionArgSeparator);\r\n        var hue = tokens[0], saturation = tokens[1], lightness = tokens[2], alpha = tokens[3];\r\n        var h = (hue.type === 17 /* NUMBER_TOKEN */ ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);\r\n        var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\r\n        var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\r\n        var a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\r\n        if (s === 0) {\r\n            return pack(l * 255, l * 255, l * 255, 1);\r\n        }\r\n        var t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\r\n        var t1 = l * 2 - t2;\r\n        var r = hue2rgb(t1, t2, h + 1 / 3);\r\n        var g = hue2rgb(t1, t2, h);\r\n        var b = hue2rgb(t1, t2, h - 1 / 3);\r\n        return pack(r * 255, g * 255, b * 255, a);\r\n    };\r\n    var SUPPORTED_COLOR_FUNCTIONS = {\r\n        hsl: hsl,\r\n        hsla: hsl,\r\n        rgb: rgb,\r\n        rgba: rgb\r\n    };\r\n    var parseColor = function (context, value) {\r\n        return color$1.parse(context, Parser.create(value).parseComponentValue());\r\n    };\r\n    var COLORS = {\r\n        ALICEBLUE: 0xf0f8ffff,\r\n        ANTIQUEWHITE: 0xfaebd7ff,\r\n        AQUA: 0x00ffffff,\r\n        AQUAMARINE: 0x7fffd4ff,\r\n        AZURE: 0xf0ffffff,\r\n        BEIGE: 0xf5f5dcff,\r\n        BISQUE: 0xffe4c4ff,\r\n        BLACK: 0x000000ff,\r\n        BLANCHEDALMOND: 0xffebcdff,\r\n        BLUE: 0x0000ffff,\r\n        BLUEVIOLET: 0x8a2be2ff,\r\n        BROWN: 0xa52a2aff,\r\n        BURLYWOOD: 0xdeb887ff,\r\n        CADETBLUE: 0x5f9ea0ff,\r\n        CHARTREUSE: 0x7fff00ff,\r\n        CHOCOLATE: 0xd2691eff,\r\n        CORAL: 0xff7f50ff,\r\n        CORNFLOWERBLUE: 0x6495edff,\r\n        CORNSILK: 0xfff8dcff,\r\n        CRIMSON: 0xdc143cff,\r\n        CYAN: 0x00ffffff,\r\n        DARKBLUE: 0x00008bff,\r\n        DARKCYAN: 0x008b8bff,\r\n        DARKGOLDENROD: 0xb886bbff,\r\n        DARKGRAY: 0xa9a9a9ff,\r\n        DARKGREEN: 0x006400ff,\r\n        DARKGREY: 0xa9a9a9ff,\r\n        DARKKHAKI: 0xbdb76bff,\r\n        DARKMAGENTA: 0x8b008bff,\r\n        DARKOLIVEGREEN: 0x556b2fff,\r\n        DARKORANGE: 0xff8c00ff,\r\n        DARKORCHID: 0x9932ccff,\r\n        DARKRED: 0x8b0000ff,\r\n        DARKSALMON: 0xe9967aff,\r\n        DARKSEAGREEN: 0x8fbc8fff,\r\n        DARKSLATEBLUE: 0x483d8bff,\r\n        DARKSLATEGRAY: 0x2f4f4fff,\r\n        DARKSLATEGREY: 0x2f4f4fff,\r\n        DARKTURQUOISE: 0x00ced1ff,\r\n        DARKVIOLET: 0x9400d3ff,\r\n        DEEPPINK: 0xff1493ff,\r\n        DEEPSKYBLUE: 0x00bfffff,\r\n        DIMGRAY: 0x696969ff,\r\n        DIMGREY: 0x696969ff,\r\n        DODGERBLUE: 0x1e90ffff,\r\n        FIREBRICK: 0xb22222ff,\r\n        FLORALWHITE: 0xfffaf0ff,\r\n        FORESTGREEN: 0x228b22ff,\r\n        FUCHSIA: 0xff00ffff,\r\n        GAINSBORO: 0xdcdcdcff,\r\n        GHOSTWHITE: 0xf8f8ffff,\r\n        GOLD: 0xffd700ff,\r\n        GOLDENROD: 0xdaa520ff,\r\n        GRAY: 0x808080ff,\r\n        GREEN: 0x008000ff,\r\n        GREENYELLOW: 0xadff2fff,\r\n        GREY: 0x808080ff,\r\n        HONEYDEW: 0xf0fff0ff,\r\n        HOTPINK: 0xff69b4ff,\r\n        INDIANRED: 0xcd5c5cff,\r\n        INDIGO: 0x4b0082ff,\r\n        IVORY: 0xfffff0ff,\r\n        KHAKI: 0xf0e68cff,\r\n        LAVENDER: 0xe6e6faff,\r\n        LAVENDERBLUSH: 0xfff0f5ff,\r\n        LAWNGREEN: 0x7cfc00ff,\r\n        LEMONCHIFFON: 0xfffacdff,\r\n        LIGHTBLUE: 0xadd8e6ff,\r\n        LIGHTCORAL: 0xf08080ff,\r\n        LIGHTCYAN: 0xe0ffffff,\r\n        LIGHTGOLDENRODYELLOW: 0xfafad2ff,\r\n        LIGHTGRAY: 0xd3d3d3ff,\r\n        LIGHTGREEN: 0x90ee90ff,\r\n        LIGHTGREY: 0xd3d3d3ff,\r\n        LIGHTPINK: 0xffb6c1ff,\r\n        LIGHTSALMON: 0xffa07aff,\r\n        LIGHTSEAGREEN: 0x20b2aaff,\r\n        LIGHTSKYBLUE: 0x87cefaff,\r\n        LIGHTSLATEGRAY: 0x778899ff,\r\n        LIGHTSLATEGREY: 0x778899ff,\r\n        LIGHTSTEELBLUE: 0xb0c4deff,\r\n        LIGHTYELLOW: 0xffffe0ff,\r\n        LIME: 0x00ff00ff,\r\n        LIMEGREEN: 0x32cd32ff,\r\n        LINEN: 0xfaf0e6ff,\r\n        MAGENTA: 0xff00ffff,\r\n        MAROON: 0x800000ff,\r\n        MEDIUMAQUAMARINE: 0x66cdaaff,\r\n        MEDIUMBLUE: 0x0000cdff,\r\n        MEDIUMORCHID: 0xba55d3ff,\r\n        MEDIUMPURPLE: 0x9370dbff,\r\n        MEDIUMSEAGREEN: 0x3cb371ff,\r\n        MEDIUMSLATEBLUE: 0x7b68eeff,\r\n        MEDIUMSPRINGGREEN: 0x00fa9aff,\r\n        MEDIUMTURQUOISE: 0x48d1ccff,\r\n        MEDIUMVIOLETRED: 0xc71585ff,\r\n        MIDNIGHTBLUE: 0x191970ff,\r\n        MINTCREAM: 0xf5fffaff,\r\n        MISTYROSE: 0xffe4e1ff,\r\n        MOCCASIN: 0xffe4b5ff,\r\n        NAVAJOWHITE: 0xffdeadff,\r\n        NAVY: 0x000080ff,\r\n        OLDLACE: 0xfdf5e6ff,\r\n        OLIVE: 0x808000ff,\r\n        OLIVEDRAB: 0x6b8e23ff,\r\n        ORANGE: 0xffa500ff,\r\n        ORANGERED: 0xff4500ff,\r\n        ORCHID: 0xda70d6ff,\r\n        PALEGOLDENROD: 0xeee8aaff,\r\n        PALEGREEN: 0x98fb98ff,\r\n        PALETURQUOISE: 0xafeeeeff,\r\n        PALEVIOLETRED: 0xdb7093ff,\r\n        PAPAYAWHIP: 0xffefd5ff,\r\n        PEACHPUFF: 0xffdab9ff,\r\n        PERU: 0xcd853fff,\r\n        PINK: 0xffc0cbff,\r\n        PLUM: 0xdda0ddff,\r\n        POWDERBLUE: 0xb0e0e6ff,\r\n        PURPLE: 0x800080ff,\r\n        REBECCAPURPLE: 0x663399ff,\r\n        RED: 0xff0000ff,\r\n        ROSYBROWN: 0xbc8f8fff,\r\n        ROYALBLUE: 0x4169e1ff,\r\n        SADDLEBROWN: 0x8b4513ff,\r\n        SALMON: 0xfa8072ff,\r\n        SANDYBROWN: 0xf4a460ff,\r\n        SEAGREEN: 0x2e8b57ff,\r\n        SEASHELL: 0xfff5eeff,\r\n        SIENNA: 0xa0522dff,\r\n        SILVER: 0xc0c0c0ff,\r\n        SKYBLUE: 0x87ceebff,\r\n        SLATEBLUE: 0x6a5acdff,\r\n        SLATEGRAY: 0x708090ff,\r\n        SLATEGREY: 0x708090ff,\r\n        SNOW: 0xfffafaff,\r\n        SPRINGGREEN: 0x00ff7fff,\r\n        STEELBLUE: 0x4682b4ff,\r\n        TAN: 0xd2b48cff,\r\n        TEAL: 0x008080ff,\r\n        THISTLE: 0xd8bfd8ff,\r\n        TOMATO: 0xff6347ff,\r\n        TRANSPARENT: 0x00000000,\r\n        TURQUOISE: 0x40e0d0ff,\r\n        VIOLET: 0xee82eeff,\r\n        WHEAT: 0xf5deb3ff,\r\n        WHITE: 0xffffffff,\r\n        WHITESMOKE: 0xf5f5f5ff,\r\n        YELLOW: 0xffff00ff,\r\n        YELLOWGREEN: 0x9acd32ff\r\n    };\r\n\r\n    var backgroundClip = {\r\n        name: 'background-clip',\r\n        initialValue: 'border-box',\r\n        prefix: false,\r\n        type: 1 /* LIST */,\r\n        parse: function (_context, tokens) {\r\n            return tokens.map(function (token) {\r\n                if (isIdentToken(token)) {\r\n                    switch (token.value) {\r\n                        case 'padding-box':\r\n                            return 1 /* PADDING_BOX */;\r\n                        case 'content-box':\r\n                            return 2 /* CONTENT_BOX */;\r\n                    }\r\n                }\r\n                return 0 /* BORDER_BOX */;\r\n            });\r\n        }\r\n    };\r\n\r\n    var backgroundColor = {\r\n        name: \"background-color\",\r\n        initialValue: 'transparent',\r\n        prefix: false,\r\n        type: 3 /* TYPE_VALUE */,\r\n        format: 'color'\r\n    };\r\n\r\n    var parseColorStop = function (context, args) {\r\n        var color = color$1.parse(context, args[0]);\r\n        var stop = args[1];\r\n        return stop && isLengthPercentage(stop) ? { color: color, stop: stop } : { color: color, stop: null };\r\n    };\r\n    var processColorStops = function (stops, lineLength) {\r\n        var first = stops[0];\r\n        var last = stops[stops.length - 1];\r\n        if (first.stop === null) {\r\n            first.stop = ZERO_LENGTH;\r\n        }\r\n        if (last.stop === null) {\r\n            last.stop = HUNDRED_PERCENT;\r\n        }\r\n        var processStops = [];\r\n        var previous = 0;\r\n        for (var i = 0; i < stops.length; i++) {\r\n            var stop_1 = stops[i].stop;\r\n            if (stop_1 !== null) {\r\n                var absoluteValue = getAbsoluteValue(stop_1, lineLength);\r\n                if (absoluteValue > previous) {\r\n                    processStops.push(absoluteValue);\r\n                }\r\n                else {\r\n                    processStops.push(previous);\r\n                }\r\n                previous = absoluteValue;\r\n            }\r\n            else {\r\n                processStops.push(null);\r\n            }\r\n        }\r\n        var gapBegin = null;\r\n        for (var i = 0; i < processStops.length; i++) {\r\n            var stop_2 = processStops[i];\r\n            if (stop_2 === null) {\r\n                if (gapBegin === null) {\r\n                    gapBegin = i;\r\n                }\r\n            }\r\n            else if (gapBegin !== null) {\r\n                var gapLength = i - gapBegin;\r\n                var beforeGap = processStops[gapBegin - 1];\r\n                var gapValue = (stop_2 - beforeGap) / (gapLength + 1);\r\n                for (var g = 1; g <= gapLength; g++) {\r\n                    processStops[gapBegin + g - 1] = gapValue * g;\r\n                }\r\n                gapBegin = null;\r\n            }\r\n        }\r\n        return stops.map(function (_a, i) {\r\n            var color = _a.color;\r\n            return { color: color, stop: Math.max(Math.min(1, processStops[i] / lineLength), 0) };\r\n        });\r\n    };\r\n    var getAngleFromCorner = function (corner, width, height) {\r\n        var centerX = width / 2;\r\n        var centerY = height / 2;\r\n        var x = getAbsoluteValue(corner[0], width) - centerX;\r\n        var y = centerY - getAbsoluteValue(corner[1], height);\r\n        return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\r\n    };\r\n    var calculateGradientDirection = function (angle, width, height) {\r\n        var radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\r\n        var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\r\n        var halfWidth = width / 2;\r\n        var halfHeight = height / 2;\r\n        var halfLineLength = lineLength / 2;\r\n        var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\r\n        var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\r\n        return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\r\n    };\r\n    var distance = function (a, b) { return Math.sqrt(a * a + b * b); };\r\n    var findCorner = function (width, height, x, y, closest) {\r\n        var corners = [\r\n            [0, 0],\r\n            [0, height],\r\n            [width, 0],\r\n            [width, height]\r\n        ];\r\n        return corners.reduce(function (stat, corner) {\r\n            var cx = corner[0], cy = corner[1];\r\n            var d = distance(x - cx, y - cy);\r\n            if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\r\n                return {\r\n                    optimumCorner: corner,\r\n                    optimumDistance: d\r\n                };\r\n            }\r\n            return stat;\r\n        }, {\r\n            optimumDistance: closest ? Infinity : -Infinity,\r\n            optimumCorner: null\r\n        }).optimumCorner;\r\n    };\r\n    var calculateRadius = function (gradient, x, y, width, height) {\r\n        var rx = 0;\r\n        var ry = 0;\r\n        switch (gradient.size) {\r\n            case 0 /* CLOSEST_SIDE */:\r\n                // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\r\n                // If the shape is an ellipse, it exactly meets the closest side in each dimension.\r\n                if (gradient.shape === 0 /* CIRCLE */) {\r\n                    rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\r\n                }\r\n                else if (gradient.shape === 1 /* ELLIPSE */) {\r\n                    rx = Math.min(Math.abs(x), Math.abs(x - width));\r\n                    ry = Math.min(Math.abs(y), Math.abs(y - height));\r\n                }\r\n                break;\r\n            case 2 /* CLOSEST_CORNER */:\r\n                // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\r\n                // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\r\n                if (gradient.shape === 0 /* CIRCLE */) {\r\n                    rx = ry = Math.min(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\r\n                }\r\n                else if (gradient.shape === 1 /* ELLIPSE */) {\r\n                    // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\r\n                    var c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\r\n                    var _a = findCorner(width, height, x, y, true), cx = _a[0], cy = _a[1];\r\n                    rx = distance(cx - x, (cy - y) / c);\r\n                    ry = c * rx;\r\n                }\r\n                break;\r\n            case 1 /* FARTHEST_SIDE */:\r\n                // Same as closest-side, except the ending shape is sized based on the farthest side(s)\r\n                if (gradient.shape === 0 /* CIRCLE */) {\r\n                    rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\r\n                }\r\n                else if (gradient.shape === 1 /* ELLIPSE */) {\r\n                    rx = Math.max(Math.abs(x), Math.abs(x - width));\r\n                    ry = Math.max(Math.abs(y), Math.abs(y - height));\r\n                }\r\n                break;\r\n            case 3 /* FARTHEST_CORNER */:\r\n                // Same as closest-corner, except the ending shape is sized based on the farthest corner.\r\n                // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\r\n                if (gradient.shape === 0 /* CIRCLE */) {\r\n                    rx = ry = Math.max(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\r\n                }\r\n                else if (gradient.shape === 1 /* ELLIPSE */) {\r\n                    // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\r\n                    var c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\r\n                    var _b = findCorner(width, height, x, y, false), cx = _b[0], cy = _b[1];\r\n                    rx = distance(cx - x, (cy - y) / c);\r\n                    ry = c * rx;\r\n                }\r\n                break;\r\n        }\r\n        if (Array.isArray(gradient.size)) {\r\n            rx = getAbsoluteValue(gradient.size[0], width);\r\n            ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\r\n        }\r\n        return [rx, ry];\r\n    };\r\n\r\n    var linearGradient = function (context, tokens) {\r\n        var angle$1 = deg(180);\r\n        var stops = [];\r\n        parseFunctionArgs(tokens).forEach(function (arg, i) {\r\n            if (i === 0) {\r\n                var firstToken = arg[0];\r\n                if (firstToken.type === 20 /* IDENT_TOKEN */ && firstToken.value === 'to') {\r\n                    angle$1 = parseNamedSide(arg);\r\n                    return;\r\n                }\r\n                else if (isAngle(firstToken)) {\r\n                    angle$1 = angle.parse(context, firstToken);\r\n                    return;\r\n                }\r\n            }\r\n            var colorStop = parseColorStop(context, arg);\r\n            stops.push(colorStop);\r\n        });\r\n        return { angle: angle$1, stops: stops, type: 1 /* LINEAR_GRADIENT */ };\r\n    };\r\n\r\n    var prefixLinearGradient = function (context, tokens) {\r\n        var angle$1 = deg(180);\r\n        var stops = [];\r\n        parseFunctionArgs(tokens).forEach(function (arg, i) {\r\n            if (i === 0) {\r\n                var firstToken = arg[0];\r\n                if (firstToken.type === 20 /* IDENT_TOKEN */ &&\r\n                    ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1) {\r\n                    angle$1 = parseNamedSide(arg);\r\n                    return;\r\n                }\r\n                else if (isAngle(firstToken)) {\r\n                    angle$1 = (angle.parse(context, firstToken) + deg(270)) % deg(360);\r\n                    return;\r\n                }\r\n            }\r\n            var colorStop = parseColorStop(context, arg);\r\n            stops.push(colorStop);\r\n        });\r\n        return {\r\n            angle: angle$1,\r\n            stops: stops,\r\n            type: 1 /* LINEAR_GRADIENT */\r\n        };\r\n    };\r\n\r\n    var webkitGradient = function (context, tokens) {\r\n        var angle = deg(180);\r\n        var stops = [];\r\n        var type = 1 /* LINEAR_GRADIENT */;\r\n        var shape = 0 /* CIRCLE */;\r\n        var size = 3 /* FARTHEST_CORNER */;\r\n        var position = [];\r\n        parseFunctionArgs(tokens).forEach(function (arg, i) {\r\n            var firstToken = arg[0];\r\n            if (i === 0) {\r\n                if (isIdentToken(firstToken) && firstToken.value === 'linear') {\r\n                    type = 1 /* LINEAR_GRADIENT */;\r\n                    return;\r\n                }\r\n                else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\r\n                    type = 2 /* RADIAL_GRADIENT */;\r\n                    return;\r\n                }\r\n            }\r\n            if (firstToken.type === 18 /* FUNCTION */) {\r\n                if (firstToken.name === 'from') {\r\n                    var color = color$1.parse(context, firstToken.values[0]);\r\n                    stops.push({ stop: ZERO_LENGTH, color: color });\r\n                }\r\n                else if (firstToken.name === 'to') {\r\n                    var color = color$1.parse(context, firstToken.values[0]);\r\n                    stops.push({ stop: HUNDRED_PERCENT, color: color });\r\n                }\r\n                else if (firstToken.name === 'color-stop') {\r\n                    var values = firstToken.values.filter(nonFunctionArgSeparator);\r\n                    if (values.length === 2) {\r\n                        var color = color$1.parse(context, values[1]);\r\n                        var stop_1 = values[0];\r\n                        if (isNumberToken(stop_1)) {\r\n                            stops.push({\r\n                                stop: { type: 16 /* PERCENTAGE_TOKEN */, number: stop_1.number * 100, flags: stop_1.flags },\r\n                                color: color\r\n                            });\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        });\r\n        return type === 1 /* LINEAR_GRADIENT */\r\n            ? {\r\n                angle: (angle + deg(180)) % deg(360),\r\n                stops: stops,\r\n                type: type\r\n            }\r\n            : { size: size, shape: shape, stops: stops, position: position, type: type };\r\n    };\r\n\r\n    var CLOSEST_SIDE = 'closest-side';\r\n    var FARTHEST_SIDE = 'farthest-side';\r\n    var CLOSEST_CORNER = 'closest-corner';\r\n    var FARTHEST_CORNER = 'farthest-corner';\r\n    var CIRCLE = 'circle';\r\n    var ELLIPSE = 'ellipse';\r\n    var COVER = 'cover';\r\n    var CONTAIN = 'contain';\r\n    var radialGradient = function (context, tokens) {\r\n        var shape = 0 /* CIRCLE */;\r\n        var size = 3 /* FARTHEST_CORNER */;\r\n        var stops = [];\r\n        var position = [];\r\n        parseFunctionArgs(tokens).forEach(function (arg, i) {\r\n            var isColorStop = true;\r\n            if (i === 0) {\r\n                var isAtPosition_1 = false;\r\n                isColorStop = arg.reduce(function (acc, token) {\r\n                    if (isAtPosition_1) {\r\n                        if (isIdentToken(token)) {\r\n                            switch (token.value) {\r\n                                case 'center':\r\n                                    position.push(FIFTY_PERCENT);\r\n                                    return acc;\r\n                                case 'top':\r\n                                case 'left':\r\n                                    position.push(ZERO_LENGTH);\r\n                                    return acc;\r\n                                case 'right':\r\n                                case 'bottom':\r\n                                    position.push(HUNDRED_PERCENT);\r\n                                    return acc;\r\n                            }\r\n                        }\r\n                        else if (isLengthPercentage(token) || isLength(token)) {\r\n                            position.push(token);\r\n                        }\r\n                    }\r\n                    else if (isIdentToken(token)) {\r\n                        switch (token.value) {\r\n                            case CIRCLE:\r\n                                shape = 0 /* CIRCLE */;\r\n                                return false;\r\n                            case ELLIPSE:\r\n                                shape = 1 /* ELLIPSE */;\r\n                                return false;\r\n                            case 'at':\r\n                                isAtPosition_1 = true;\r\n                                return false;\r\n                            case CLOSEST_SIDE:\r\n                                size = 0 /* CLOSEST_SIDE */;\r\n                                return false;\r\n                            case COVER:\r\n                            case FARTHEST_SIDE:\r\n                                size = 1 /* FARTHEST_SIDE */;\r\n                                return false;\r\n                            case CONTAIN:\r\n                            case CLOSEST_CORNER:\r\n                                size = 2 /* CLOSEST_CORNER */;\r\n                                return false;\r\n                            case FARTHEST_CORNER:\r\n                                size = 3 /* FARTHEST_CORNER */;\r\n                                return false;\r\n                        }\r\n                    }\r\n                    else if (isLength(token) || isLengthPercentage(token)) {\r\n                        if (!Array.isArray(size)) {\r\n                            size = [];\r\n                        }\r\n                        size.push(token);\r\n                        return false;\r\n                    }\r\n                    return acc;\r\n                }, isColorStop);\r\n            }\r\n            if (isColorStop) {\r\n                var colorStop = parseColorStop(context, arg);\r\n                stops.push(colorStop);\r\n            }\r\n        });\r\n        return { size: size, shape: shape, stops: stops, position: position, type: 2 /* RADIAL_GRADIENT */ };\r\n    };\r\n\r\n    var prefixRadialGradient = function (context, tokens) {\r\n        var shape = 0 /* CIRCLE */;\r\n        var size = 3 /* FARTHEST_CORNER */;\r\n        var stops = [];\r\n        var position = [];\r\n        parseFunctionArgs(tokens).forEach(function (arg, i) {\r\n            var isColorStop = true;\r\n            if (i === 0) {\r\n                isColorStop = arg.reduce(function (acc, token) {\r\n                    if (isIdentToken(token)) {\r\n                        switch (token.value) {\r\n                            case 'center':\r\n                                position.push(FIFTY_PERCENT);\r\n                                return false;\r\n                            case 'top':\r\n                            case 'left':\r\n                                position.push(ZERO_LENGTH);\r\n                                return false;\r\n                            case 'right':\r\n                            case 'bottom':\r\n                                position.push(HUNDRED_PERCENT);\r\n                                return false;\r\n                        }\r\n                    }\r\n                    else if (isLengthPercentage(token) || isLength(token)) {\r\n                        position.push(token);\r\n                        return false;\r\n                    }\r\n                    return acc;\r\n                }, isColorStop);\r\n            }\r\n            else if (i === 1) {\r\n                isColorStop = arg.reduce(function (acc, token) {\r\n                    if (isIdentToken(token)) {\r\n                        switch (token.value) {\r\n                            case CIRCLE:\r\n                                shape = 0 /* CIRCLE */;\r\n                                return false;\r\n                            case ELLIPSE:\r\n                                shape = 1 /* ELLIPSE */;\r\n                                return false;\r\n                            case CONTAIN:\r\n                            case CLOSEST_SIDE:\r\n                                size = 0 /* CLOSEST_SIDE */;\r\n                                return false;\r\n                            case FARTHEST_SIDE:\r\n                                size = 1 /* FARTHEST_SIDE */;\r\n                                return false;\r\n                            case CLOSEST_CORNER:\r\n                                size = 2 /* CLOSEST_CORNER */;\r\n                                return false;\r\n                            case COVER:\r\n                            case FARTHEST_CORNER:\r\n                                size = 3 /* FARTHEST_CORNER */;\r\n                                return false;\r\n                        }\r\n                    }\r\n                    else if (isLength(token) || isLengthPercentage(token)) {\r\n                        if (!Array.isArray(size)) {\r\n                            size = [];\r\n                        }\r\n                        size.push(token);\r\n                        return false;\r\n                    }\r\n                    return acc;\r\n                }, isColorStop);\r\n            }\r\n            if (isColorStop) {\r\n                var colorStop = parseColorStop(context, arg);\r\n                stops.push(colorStop);\r\n            }\r\n        });\r\n        return { size: size, shape: shape, stops: stops, position: position, type: 2 /* RADIAL_GRADIENT */ };\r\n    };\r\n\r\n    var isLinearGradient = function (background) {\r\n        return background.type === 1 /* LINEAR_GRADIENT */;\r\n    };\r\n    var isRadialGradient = function (background) {\r\n        return background.type === 2 /* RADIAL_GRADIENT */;\r\n    };\r\n    var image = {\r\n        name: 'image',\r\n        parse: function (context, value) {\r\n            if (value.type === 22 /* URL_TOKEN */) {\r\n                var image_1 = { url: value.value, type: 0 /* URL */ };\r\n                context.cache.addImage(value.value);\r\n                return image_1;\r\n            }\r\n            if (value.type === 18 /* FUNCTION */) {\r\n                var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\r\n                if (typeof imageFunction === 'undefined') {\r\n                    throw new Error(\"Attempting to parse an unsupported image function \\\"\" + value.name + \"\\\"\");\r\n                }\r\n                return imageFunction(context, value.values);\r\n            }\r\n            throw new Error(\"Unsupported image type \" + value.type);\r\n        }\r\n    };\r\n    function isSupportedImage(value) {\r\n        return (!(value.type === 20 /* IDENT_TOKEN */ && value.value === 'none') &&\r\n            (value.type !== 18 /* FUNCTION */ || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]));\r\n    }\r\n    var SUPPORTED_IMAGE_FUNCTIONS = {\r\n        'linear-gradient': linearGradient,\r\n        '-moz-linear-gradient': prefixLinearGradient,\r\n        '-ms-linear-gradient': prefixLinearGradient,\r\n        '-o-linear-gradient': prefixLinearGradient,\r\n        '-webkit-linear-gradient': prefixLinearGradient,\r\n        'radial-gradient': radialGradient,\r\n        '-moz-radial-gradient': prefixRadialGradient,\r\n        '-ms-radial-gradient': prefixRadialGradient,\r\n        '-o-radial-gradient': prefixRadialGradient,\r\n        '-webkit-radial-gradient': prefixRadialGradient,\r\n        '-webkit-gradient': webkitGradient\r\n    };\r\n\r\n    var backgroundImage = {\r\n        name: 'background-image',\r\n        initialValue: 'none',\r\n        type: 1 /* LIST */,\r\n        prefix: false,\r\n        parse: function (context, tokens) {\r\n            if (tokens.length === 0) {\r\n                return [];\r\n            }\r\n            var first = tokens[0];\r\n            if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\r\n                return [];\r\n            }\r\n            return tokens\r\n                .filter(function (value) { return nonFunctionArgSeparator(value) && isSupportedImage(value); })\r\n                .map(function (value) { return image.parse(context, value); });\r\n        }\r\n    };\r\n\r\n    var backgroundOrigin = {\r\n        name: 'background-origin',\r\n        initialValue: 'border-box',\r\n        prefix: false,\r\n        type: 1 /* LIST */,\r\n        parse: function (_context, tokens) {\r\n            return tokens.map(function (token) {\r\n                if (isIdentToken(token)) {\r\n                    switch (token.value) {\r\n                        case 'padding-box':\r\n                            return 1 /* PADDING_BOX */;\r\n                        case 'content-box':\r\n                            return 2 /* CONTENT_BOX */;\r\n                    }\r\n                }\r\n                return 0 /* BORDER_BOX */;\r\n            });\r\n        }\r\n    };\r\n\r\n    var backgroundPosition = {\r\n        name: 'background-position',\r\n        initialValue: '0% 0%',\r\n        type: 1 /* LIST */,\r\n        prefix: false,\r\n        parse: function (_context, tokens) {\r\n            return parseFunctionArgs(tokens)\r\n                .map(function (values) { return values.filter(isLengthPercentage); })\r\n                .map(parseLengthPercentageTuple);\r\n        }\r\n    };\r\n\r\n    var backgroundRepeat = {\r\n        name: 'background-repeat',\r\n        initialValue: 'repeat',\r\n        prefix: false,\r\n        type: 1 /* LIST */,\r\n        parse: function (_context, tokens) {\r\n            return parseFunctionArgs(tokens)\r\n                .map(function (values) {\r\n                return values\r\n                    .filter(isIdentToken)\r\n                    .map(function (token) { return token.value; })\r\n                    .join(' ');\r\n            })\r\n                .map(parseBackgroundRepeat);\r\n        }\r\n    };\r\n    var parseBackgroundRepeat = function (value) {\r\n        switch (value) {\r\n            case 'no-repeat':\r\n                return 1 /* NO_REPEAT */;\r\n            case 'repeat-x':\r\n            case 'repeat no-repeat':\r\n                return 2 /* REPEAT_X */;\r\n            case 'repeat-y':\r\n            case 'no-repeat repeat':\r\n                return 3 /* REPEAT_Y */;\r\n            case 'repeat':\r\n            default:\r\n                return 0 /* REPEAT */;\r\n        }\r\n    };\r\n\r\n    var BACKGROUND_SIZE;\r\n    (function (BACKGROUND_SIZE) {\r\n        BACKGROUND_SIZE[\"AUTO\"] = \"auto\";\r\n        BACKGROUND_SIZE[\"CONTAIN\"] = \"contain\";\r\n        BACKGROUND_SIZE[\"COVER\"] = \"cover\";\r\n    })(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}));\r\n    var backgroundSize = {\r\n        name: 'background-size',\r\n        initialValue: '0',\r\n        prefix: false,\r\n        type: 1 /* LIST */,\r\n        parse: function (_context, tokens) {\r\n            return parseFunctionArgs(tokens).map(function (values) { return values.filter(isBackgroundSizeInfoToken); });\r\n        }\r\n    };\r\n    var isBackgroundSizeInfoToken = function (value) {\r\n        return isIdentToken(value) || isLengthPercentage(value);\r\n    };\r\n\r\n    var borderColorForSide = function (side) { return ({\r\n        name: \"border-\" + side + \"-color\",\r\n        initialValue: 'transparent',\r\n        prefix: false,\r\n        type: 3 /* TYPE_VALUE */,\r\n        format: 'color'\r\n    }); };\r\n    var borderTopColor = borderColorForSide('top');\r\n    var borderRightColor = borderColorForSide('right');\r\n    var borderBottomColor = borderColorForSide('bottom');\r\n    var borderLeftColor = borderColorForSide('left');\r\n\r\n    var borderRadiusForSide = function (side) { return ({\r\n        name: \"border-radius-\" + side,\r\n        initialValue: '0 0',\r\n        prefix: false,\r\n        type: 1 /* LIST */,\r\n        parse: function (_context, tokens) {\r\n            return parseLengthPercentageTuple(tokens.filter(isLengthPercentage));\r\n        }\r\n    }); };\r\n    var borderTopLeftRadius = borderRadiusForSide('top-left');\r\n    var borderTopRightRadius = borderRadiusForSide('top-right');\r\n    var borderBottomRightRadius = borderRadiusForSide('bottom-right');\r\n    var borderBottomLeftRadius = borderRadiusForSide('bottom-left');\r\n\r\n    var borderStyleForSide = function (side) { return ({\r\n        name: \"border-\" + side + \"-style\",\r\n        initialValue: 'solid',\r\n        prefix: false,\r\n        type: 2 /* IDENT_VALUE */,\r\n        parse: function (_context, style) {\r\n            switch (style) {\r\n                case 'none':\r\n                    return 0 /* NONE */;\r\n                case 'dashed':\r\n                    return 2 /* DASHED */;\r\n                case 'dotted':\r\n                    return 3 /* DOTTED */;\r\n                case 'double':\r\n                    return 4 /* DOUBLE */;\r\n            }\r\n            return 1 /* SOLID */;\r\n        }\r\n    }); };\r\n    var borderTopStyle = borderStyleForSide('top');\r\n    var borderRightStyle = borderStyleForSide('right');\r\n    var borderBottomStyle = borderStyleForSide('bottom');\r\n    var borderLeftStyle = borderStyleForSide('left');\r\n\r\n    var borderWidthForSide = function (side) { return ({\r\n        name: \"border-\" + side + \"-width\",\r\n        initialValue: '0',\r\n        type: 0 /* VALUE */,\r\n        prefix: false,\r\n        parse: function (_context, token) {\r\n            if (isDimensionToken(token)) {\r\n                return token.number;\r\n            }\r\n            return 0;\r\n        }\r\n    }); };\r\n    var borderTopWidth = borderWidthForSide('top');\r\n    var borderRightWidth = borderWidthForSide('right');\r\n    var borderBottomWidth = borderWidthForSide('bottom');\r\n    var borderLeftWidth = borderWidthForSide('left');\r\n\r\n    var color = {\r\n        name: \"color\",\r\n        initialValue: 'transparent',\r\n        prefix: false,\r\n        type: 3 /* TYPE_VALUE */,\r\n        format: 'color'\r\n    };\r\n\r\n    var direction = {\r\n        name: 'direction',\r\n        initialValue: 'ltr',\r\n        prefix: false,\r\n        type: 2 /* IDENT_VALUE */,\r\n        parse: function (_context, direction) {\r\n            switch (direction) {\r\n                case 'rtl':\r\n                    return 1 /* RTL */;\r\n                case 'ltr':\r\n                default:\r\n                    return 0 /* LTR */;\r\n            }\r\n        }\r\n    };\r\n\r\n    var display = {\r\n        name: 'display',\r\n        initialValue: 'inline-block',\r\n        prefix: false,\r\n        type: 1 /* LIST */,\r\n        parse: function (_context, tokens) {\r\n            return tokens.filter(isIdentToken).reduce(function (bit, token) {\r\n                return bit | parseDisplayValue(token.value);\r\n            }, 0 /* NONE */);\r\n        }\r\n    };\r\n    var parseDisplayValue = function (display) {\r\n        switch (display) {\r\n            case 'block':\r\n            case '-webkit-box':\r\n                return 2 /* BLOCK */;\r\n            case 'inline':\r\n                return 4 /* INLINE */;\r\n            case 'run-in':\r\n                return 8 /* RUN_IN */;\r\n            case 'flow':\r\n                return 16 /* FLOW */;\r\n            case 'flow-root':\r\n                return 32 /* FLOW_ROOT */;\r\n            case 'table':\r\n                return 64 /* TABLE */;\r\n            case 'flex':\r\n            case '-webkit-flex':\r\n                return 128 /* FLEX */;\r\n            case 'grid':\r\n            case '-ms-grid':\r\n                return 256 /* GRID */;\r\n            case 'ruby':\r\n                return 512 /* RUBY */;\r\n            case 'subgrid':\r\n                return 1024 /* SUBGRID */;\r\n            case 'list-item':\r\n                return 2048 /* LIST_ITEM */;\r\n            case 'table-row-group':\r\n                return 4096 /* TABLE_ROW_GROUP */;\r\n            case 'table-header-group':\r\n                return 8192 /* TABLE_HEADER_GROUP */;\r\n            case 'table-footer-group':\r\n                return 16384 /* TABLE_FOOTER_GROUP */;\r\n            case 'table-row':\r\n                return 32768 /* TABLE_ROW */;\r\n            case 'table-cell':\r\n                return 65536 /* TABLE_CELL */;\r\n            case 'table-column-group':\r\n                return 131072 /* TABLE_COLUMN_GROUP */;\r\n            case 'table-column':\r\n                return 262144 /* TABLE_COLUMN */;\r\n            case 'table-caption':\r\n                return 524288 /* TABLE_CAPTION */;\r\n            case 'ruby-base':\r\n                return 1048576 /* RUBY_BASE */;\r\n            case 'ruby-text':\r\n                return 2097152 /* RUBY_TEXT */;\r\n            case 'ruby-base-container':\r\n                return 4194304 /* RUBY_BASE_CONTAINER */;\r\n            case 'ruby-text-container':\r\n                return 8388608 /* RUBY_TEXT_CONTAINER */;\r\n            case 'contents':\r\n                return 16777216 /* CONTENTS */;\r\n            case 'inline-block':\r\n                return 33554432 /* INLINE_BLOCK */;\r\n            case 'inline-list-item':\r\n                return 67108864 /* INLINE_LIST_ITEM */;\r\n            case 'inline-table':\r\n                return 134217728 /* INLINE_TABLE */;\r\n            case 'inline-flex':\r\n                return 268435456 /* INLINE_FLEX */;\r\n            case 'inline-grid':\r\n                return 536870912 /* INLINE_GRID */;\r\n        }\r\n        return 0 /* NONE */;\r\n    };\r\n\r\n    var float = {\r\n        name: 'float',\r\n        initialValue: 'none',\r\n        prefix: false,\r\n        type: 2 /* IDENT_VALUE */,\r\n        parse: function (_context, float) {\r\n            switch (float) {\r\n                case 'left':\r\n                    return 1 /* LEFT */;\r\n                case 'right':\r\n                    return 2 /* RIGHT */;\r\n                case 'inline-start':\r\n                    return 3 /* INLINE_START */;\r\n                case 'inline-end':\r\n                    return 4 /* INLINE_END */;\r\n            }\r\n            return 0 /* NONE */;\r\n        }\r\n    };\r\n\r\n    var letterSpacing = {\r\n        name: 'letter-spacing',\r\n        initialValue: '0',\r\n        prefix: false,\r\n        type: 0 /* VALUE */,\r\n        parse: function (_context, token) {\r\n            if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'normal') {\r\n                return 0;\r\n            }\r\n            if (token.type === 17 /* NUMBER_TOKEN */) {\r\n                return token.number;\r\n            }\r\n            if (token.type === 15 /* DIMENSION_TOKEN */) {\r\n                return token.number;\r\n            }\r\n            return 0;\r\n        }\r\n    };\r\n\r\n    var LINE_BREAK;\r\n    (function (LINE_BREAK) {\r\n        LINE_BREAK[\"NORMAL\"] = \"normal\";\r\n        LINE_BREAK[\"STRICT\"] = \"strict\";\r\n    })(LINE_BREAK || (LINE_BREAK = {}));\r\n    var lineBreak = {\r\n        name: 'line-break',\r\n        initialValue: 'normal',\r\n        prefix: false,\r\n        type: 2 /* IDENT_VALUE */,\r\n        parse: function (_context, lineBreak) {\r\n            switch (lineBreak) {\r\n                case 'strict':\r\n                    return LINE_BREAK.STRICT;\r\n                case 'normal':\r\n                default:\r\n                    return LINE_BREAK.NORMAL;\r\n            }\r\n        }\r\n    };\r\n\r\n    var lineHeight = {\r\n        name: 'line-height',\r\n        initialValue: 'normal',\r\n        prefix: false,\r\n        type: 4 /* TOKEN_VALUE */\r\n    };\r\n    var computeLineHeight = function (token, fontSize) {\r\n        if (isIdentToken(token) && token.value === 'normal') {\r\n            return 1.2 * fontSize;\r\n        }\r\n        else if (token.type === 17 /* NUMBER_TOKEN */) {\r\n            return fontSize * token.number;\r\n        }\r\n        else if (isLengthPercentage(token)) {\r\n            return getAbsoluteValue(token, fontSize);\r\n        }\r\n        return fontSize;\r\n    };\r\n\r\n    var listStyleImage = {\r\n        name: 'list-style-image',\r\n        initialValue: 'none',\r\n        type: 0 /* VALUE */,\r\n        prefix: false,\r\n        parse: function (context, token) {\r\n            if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') {\r\n                return null;\r\n            }\r\n            return image.parse(context, token);\r\n        }\r\n    };\r\n\r\n    var listStylePosition = {\r\n        name: 'list-style-position',\r\n        initialValue: 'outside',\r\n        prefix: false,\r\n        type: 2 /* IDENT_VALUE */,\r\n        parse: function (_context, position) {\r\n            switch (position) {\r\n                case 'inside':\r\n                    return 0 /* INSIDE */;\r\n                case 'outside':\r\n                default:\r\n                    return 1 /* OUTSIDE */;\r\n            }\r\n        }\r\n    };\r\n\r\n    var listStyleType = {\r\n        name: 'list-style-type',\r\n        initialValue: 'none',\r\n        prefix: false,\r\n        type: 2 /* IDENT_VALUE */,\r\n        parse: function (_context, type) {\r\n            switch (type) {\r\n                case 'disc':\r\n                    return 0 /* DISC */;\r\n                case 'circle':\r\n                    return 1 /* CIRCLE */;\r\n                case 'square':\r\n                    return 2 /* SQUARE */;\r\n                case 'decimal':\r\n                    return 3 /* DECIMAL */;\r\n                case 'cjk-decimal':\r\n                    return 4 /* CJK_DECIMAL */;\r\n                case 'decimal-leading-zero':\r\n                    return 5 /* DECIMAL_LEADING_ZERO */;\r\n                case 'lower-roman':\r\n                    return 6 /* LOWER_ROMAN */;\r\n                case 'upper-roman':\r\n                    return 7 /* UPPER_ROMAN */;\r\n                case 'lower-greek':\r\n                    return 8 /* LOWER_GREEK */;\r\n                case 'lower-alpha':\r\n                    return 9 /* LOWER_ALPHA */;\r\n                case 'upper-alpha':\r\n                    return 10 /* UPPER_ALPHA */;\r\n                case 'arabic-indic':\r\n                    return 11 /* ARABIC_INDIC */;\r\n                case 'armenian':\r\n                    return 12 /* ARMENIAN */;\r\n                case 'bengali':\r\n                    return 13 /* BENGALI */;\r\n                case 'cambodian':\r\n                    return 14 /* CAMBODIAN */;\r\n                case 'cjk-earthly-branch':\r\n                    return 15 /* CJK_EARTHLY_BRANCH */;\r\n                case 'cjk-heavenly-stem':\r\n                    return 16 /* CJK_HEAVENLY_STEM */;\r\n                case 'cjk-ideographic':\r\n                    return 17 /* CJK_IDEOGRAPHIC */;\r\n                case 'devanagari':\r\n                    return 18 /* DEVANAGARI */;\r\n                case 'ethiopic-numeric':\r\n                    return 19 /* ETHIOPIC_NUMERIC */;\r\n                case 'georgian':\r\n                    return 20 /* GEORGIAN */;\r\n                case 'gujarati':\r\n                    return 21 /* GUJARATI */;\r\n                case 'gurmukhi':\r\n                    return 22 /* GURMUKHI */;\r\n                case 'hebrew':\r\n                    return 22 /* HEBREW */;\r\n                case 'hiragana':\r\n                    return 23 /* HIRAGANA */;\r\n                case 'hiragana-iroha':\r\n                    return 24 /* HIRAGANA_IROHA */;\r\n                case 'japanese-formal':\r\n                    return 25 /* JAPANESE_FORMAL */;\r\n                case 'japanese-informal':\r\n                    return 26 /* JAPANESE_INFORMAL */;\r\n                case 'kannada':\r\n                    return 27 /* KANNADA */;\r\n                case 'katakana':\r\n                    return 28 /* KATAKANA */;\r\n                case 'katakana-iroha':\r\n                    return 29 /* KATAKANA_IROHA */;\r\n                case 'khmer':\r\n                    return 30 /* KHMER */;\r\n                case 'korean-hangul-formal':\r\n                    return 31 /* KOREAN_HANGUL_FORMAL */;\r\n                case 'korean-hanja-formal':\r\n                    return 32 /* KOREAN_HANJA_FORMAL */;\r\n                case 'korean-hanja-informal':\r\n                    return 33 /* KOREAN_HANJA_INFORMAL */;\r\n                case 'lao':\r\n                    return 34 /* LAO */;\r\n                case 'lower-armenian':\r\n                    return 35 /* LOWER_ARMENIAN */;\r\n                case 'malayalam':\r\n                    return 36 /* MALAYALAM */;\r\n                case 'mongolian':\r\n                    return 37 /* MONGOLIAN */;\r\n                case 'myanmar':\r\n                    return 38 /* MYANMAR */;\r\n                case 'oriya':\r\n                    return 39 /* ORIYA */;\r\n                case 'persian':\r\n                    return 40 /* PERSIAN */;\r\n                case 'simp-chinese-formal':\r\n                    return 41 /* SIMP_CHINESE_FORMAL */;\r\n                case 'simp-chinese-informal':\r\n                    return 42 /* SIMP_CHINESE_INFORMAL */;\r\n                case 'tamil':\r\n                    return 43 /* TAMIL */;\r\n                case 'telugu':\r\n                    return 44 /* TELUGU */;\r\n                case 'thai':\r\n                    return 45 /* THAI */;\r\n                case 'tibetan':\r\n                    return 46 /* TIBETAN */;\r\n                case 'trad-chinese-formal':\r\n                    return 47 /* TRAD_CHINESE_FORMAL */;\r\n                case 'trad-chinese-informal':\r\n                    return 48 /* TRAD_CHINESE_INFORMAL */;\r\n                case 'upper-armenian':\r\n                    return 49 /* UPPER_ARMENIAN */;\r\n                case 'disclosure-open':\r\n                    return 50 /* DISCLOSURE_OPEN */;\r\n                case 'disclosure-closed':\r\n                    return 51 /* DISCLOSURE_CLOSED */;\r\n                case 'none':\r\n                default:\r\n                    return -1 /* NONE */;\r\n            }\r\n        }\r\n    };\r\n\r\n    var marginForSide = function (side) { return ({\r\n        name: \"margin-\" + side,\r\n        initialValue: '0',\r\n        prefix: false,\r\n        type: 4 /* TOKEN_VALUE */\r\n    }); };\r\n    var marginTop = marginForSide('top');\r\n    var marginRight = marginForSide('right');\r\n    var marginBottom = marginForSide('bottom');\r\n    var marginLeft = marginForSide('left');\r\n\r\n    var overflow = {\r\n        name: 'overflow',\r\n        initialValue: 'visible',\r\n        prefix: false,\r\n        type: 1 /* LIST */,\r\n        parse: function (_context, tokens) {\r\n            return tokens.filter(isIdentToken).map(function (overflow) {\r\n                switch (overflow.value) {\r\n                    case 'hidden':\r\n                        return 1 /* HIDDEN */;\r\n                    case 'scroll':\r\n                        return 2 /* SCROLL */;\r\n                    case 'clip':\r\n                        return 3 /* CLIP */;\r\n                    case 'auto':\r\n                        return 4 /* AUTO */;\r\n                    case 'visible':\r\n                    default:\r\n                        return 0 /* VISIBLE */;\r\n                }\r\n            });\r\n        }\r\n    };\r\n\r\n    var overflowWrap = {\r\n        name: 'overflow-wrap',\r\n        initialValue: 'normal',\r\n        prefix: false,\r\n        type: 2 /* IDENT_VALUE */,\r\n        parse: function (_context, overflow) {\r\n            switch (overflow) {\r\n                case 'break-word':\r\n                    return \"break-word\" /* BREAK_WORD */;\r\n                case 'normal':\r\n                default:\r\n                    return \"normal\" /* NORMAL */;\r\n            }\r\n        }\r\n    };\r\n\r\n    var paddingForSide = function (side) { return ({\r\n        name: \"padding-\" + side,\r\n        initialValue: '0',\r\n        prefix: false,\r\n        type: 3 /* TYPE_VALUE */,\r\n        format: 'length-percentage'\r\n    }); };\r\n    var paddingTop = paddingForSide('top');\r\n    var paddingRight = paddingForSide('right');\r\n    var paddingBottom = paddingForSide('bottom');\r\n    var paddingLeft = paddingForSide('left');\r\n\r\n    var textAlign = {\r\n        name: 'text-align',\r\n        initialValue: 'left',\r\n        prefix: false,\r\n        type: 2 /* IDENT_VALUE */,\r\n        parse: function (_context, textAlign) {\r\n            switch (textAlign) {\r\n                case 'right':\r\n                    return 2 /* RIGHT */;\r\n                case 'center':\r\n                case 'justify':\r\n                    return 1 /* CENTER */;\r\n                case 'left':\r\n                default:\r\n                    return 0 /* LEFT */;\r\n            }\r\n        }\r\n    };\r\n\r\n    var position = {\r\n        name: 'position',\r\n        initialValue: 'static',\r\n        prefix: false,\r\n        type: 2 /* IDENT_VALUE */,\r\n        parse: function (_context, position) {\r\n            switch (position) {\r\n                case 'relative':\r\n                    return 1 /* RELATIVE */;\r\n                case 'absolute':\r\n                    return 2 /* ABSOLUTE */;\r\n                case 'fixed':\r\n                    return 3 /* FIXED */;\r\n                case 'sticky':\r\n                    return 4 /* STICKY */;\r\n            }\r\n            return 0 /* STATIC */;\r\n        }\r\n    };\r\n\r\n    var textShadow = {\r\n        name: 'text-shadow',\r\n        initialValue: 'none',\r\n        type: 1 /* LIST */,\r\n        prefix: false,\r\n        parse: function (context, tokens) {\r\n            if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\r\n                return [];\r\n            }\r\n            return parseFunctionArgs(tokens).map(function (values) {\r\n                var shadow = {\r\n                    color: COLORS.TRANSPARENT,\r\n                    offsetX: ZERO_LENGTH,\r\n                    offsetY: ZERO_LENGTH,\r\n                    blur: ZERO_LENGTH\r\n                };\r\n                var c = 0;\r\n                for (var i = 0; i < values.length; i++) {\r\n                    var token = values[i];\r\n                    if (isLength(token)) {\r\n                        if (c === 0) {\r\n                            shadow.offsetX = token;\r\n                        }\r\n                        else if (c === 1) {\r\n                            shadow.offsetY = token;\r\n                        }\r\n                        else {\r\n                            shadow.blur = token;\r\n                        }\r\n                        c++;\r\n                    }\r\n                    else {\r\n                        shadow.color = color$1.parse(context, token);\r\n                    }\r\n                }\r\n                return shadow;\r\n            });\r\n        }\r\n    };\r\n\r\n    var textTransform = {\r\n        name: 'text-transform',\r\n        initialValue: 'none',\r\n        prefix: false,\r\n        type: 2 /* IDENT_VALUE */,\r\n        parse: function (_context, textTransform) {\r\n            switch (textTransform) {\r\n                case 'uppercase':\r\n                    return 2 /* UPPERCASE */;\r\n                case 'lowercase':\r\n                    return 1 /* LOWERCASE */;\r\n                case 'capitalize':\r\n                    return 3 /* CAPITALIZE */;\r\n            }\r\n            return 0 /* NONE */;\r\n        }\r\n    };\r\n\r\n    var transform$1 = {\r\n        name: 'transform',\r\n        initialValue: 'none',\r\n        prefix: true,\r\n        type: 0 /* VALUE */,\r\n        parse: function (_context, token) {\r\n            if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') {\r\n                return null;\r\n            }\r\n            if (token.type === 18 /* FUNCTION */) {\r\n                var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\r\n                if (typeof transformFunction === 'undefined') {\r\n                    throw new Error(\"Attempting to parse an unsupported transform function \\\"\" + token.name + \"\\\"\");\r\n                }\r\n                return transformFunction(token.values);\r\n            }\r\n            return null;\r\n        }\r\n    };\r\n    var matrix = function (args) {\r\n        var values = args.filter(function (arg) { return arg.type === 17 /* NUMBER_TOKEN */; }).map(function (arg) { return arg.number; });\r\n        return values.length === 6 ? values : null;\r\n    };\r\n    // doesn't support 3D transforms at the moment\r\n    var matrix3d = function (args) {\r\n        var values = args.filter(function (arg) { return arg.type === 17 /* NUMBER_TOKEN */; }).map(function (arg) { return arg.number; });\r\n        var a1 = values[0], b1 = values[1]; values[2]; values[3]; var a2 = values[4], b2 = values[5]; values[6]; values[7]; values[8]; values[9]; values[10]; values[11]; var a4 = values[12], b4 = values[13]; values[14]; values[15];\r\n        return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\r\n    };\r\n    var SUPPORTED_TRANSFORM_FUNCTIONS = {\r\n        matrix: matrix,\r\n        matrix3d: matrix3d\r\n    };\r\n\r\n    var DEFAULT_VALUE = {\r\n        type: 16 /* PERCENTAGE_TOKEN */,\r\n        number: 50,\r\n        flags: FLAG_INTEGER\r\n    };\r\n    var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE];\r\n    var transformOrigin = {\r\n        name: 'transform-origin',\r\n        initialValue: '50% 50%',\r\n        prefix: true,\r\n        type: 1 /* LIST */,\r\n        parse: function (_context, tokens) {\r\n            var origins = tokens.filter(isLengthPercentage);\r\n            if (origins.length !== 2) {\r\n                return DEFAULT;\r\n            }\r\n            return [origins[0], origins[1]];\r\n        }\r\n    };\r\n\r\n    var visibility = {\r\n        name: 'visible',\r\n        initialValue: 'none',\r\n        prefix: false,\r\n        type: 2 /* IDENT_VALUE */,\r\n        parse: function (_context, visibility) {\r\n            switch (visibility) {\r\n                case 'hidden':\r\n                    return 1 /* HIDDEN */;\r\n                case 'collapse':\r\n                    return 2 /* COLLAPSE */;\r\n                case 'visible':\r\n                default:\r\n                    return 0 /* VISIBLE */;\r\n            }\r\n        }\r\n    };\r\n\r\n    var WORD_BREAK;\r\n    (function (WORD_BREAK) {\r\n        WORD_BREAK[\"NORMAL\"] = \"normal\";\r\n        WORD_BREAK[\"BREAK_ALL\"] = \"break-all\";\r\n        WORD_BREAK[\"KEEP_ALL\"] = \"keep-all\";\r\n    })(WORD_BREAK || (WORD_BREAK = {}));\r\n    var wordBreak = {\r\n        name: 'word-break',\r\n        initialValue: 'normal',\r\n        prefix: false,\r\n        type: 2 /* IDENT_VALUE */,\r\n        parse: function (_context, wordBreak) {\r\n            switch (wordBreak) {\r\n                case 'break-all':\r\n                    return WORD_BREAK.BREAK_ALL;\r\n                case 'keep-all':\r\n                    return WORD_BREAK.KEEP_ALL;\r\n                case 'normal':\r\n                default:\r\n                    return WORD_BREAK.NORMAL;\r\n            }\r\n        }\r\n    };\r\n\r\n    var zIndex = {\r\n        name: 'z-index',\r\n        initialValue: 'auto',\r\n        prefix: false,\r\n        type: 0 /* VALUE */,\r\n        parse: function (_context, token) {\r\n            if (token.type === 20 /* IDENT_TOKEN */) {\r\n                return { auto: true, order: 0 };\r\n            }\r\n            if (isNumberToken(token)) {\r\n                return { auto: false, order: token.number };\r\n            }\r\n            throw new Error(\"Invalid z-index number parsed\");\r\n        }\r\n    };\r\n\r\n    var time = {\r\n        name: 'time',\r\n        parse: function (_context, value) {\r\n            if (value.type === 15 /* DIMENSION_TOKEN */) {\r\n                switch (value.unit.toLowerCase()) {\r\n                    case 's':\r\n                        return 1000 * value.number;\r\n                    case 'ms':\r\n                        return value.number;\r\n                }\r\n            }\r\n            throw new Error(\"Unsupported time type\");\r\n        }\r\n    };\r\n\r\n    var opacity = {\r\n        name: 'opacity',\r\n        initialValue: '1',\r\n        type: 0 /* VALUE */,\r\n        prefix: false,\r\n        parse: function (_context, token) {\r\n            if (isNumberToken(token)) {\r\n                return token.number;\r\n            }\r\n            return 1;\r\n        }\r\n    };\r\n\r\n    var textDecorationColor = {\r\n        name: \"text-decoration-color\",\r\n        initialValue: 'transparent',\r\n        prefix: false,\r\n        type: 3 /* TYPE_VALUE */,\r\n        format: 'color'\r\n    };\r\n\r\n    var textDecorationLine = {\r\n        name: 'text-decoration-line',\r\n        initialValue: 'none',\r\n        prefix: false,\r\n        type: 1 /* LIST */,\r\n        parse: function (_context, tokens) {\r\n            return tokens\r\n                .filter(isIdentToken)\r\n                .map(function (token) {\r\n                switch (token.value) {\r\n                    case 'underline':\r\n                        return 1 /* UNDERLINE */;\r\n                    case 'overline':\r\n                        return 2 /* OVERLINE */;\r\n                    case 'line-through':\r\n                        return 3 /* LINE_THROUGH */;\r\n                    case 'none':\r\n                        return 4 /* BLINK */;\r\n                }\r\n                return 0 /* NONE */;\r\n            })\r\n                .filter(function (line) { return line !== 0 /* NONE */; });\r\n        }\r\n    };\r\n\r\n    var fontFamily = {\r\n        name: \"font-family\",\r\n        initialValue: '',\r\n        prefix: false,\r\n        type: 1 /* LIST */,\r\n        parse: function (_context, tokens) {\r\n            var accumulator = [];\r\n            var results = [];\r\n            tokens.forEach(function (token) {\r\n                switch (token.type) {\r\n                    case 20 /* IDENT_TOKEN */:\r\n                    case 0 /* STRING_TOKEN */:\r\n                        accumulator.push(token.value);\r\n                        break;\r\n                    case 17 /* NUMBER_TOKEN */:\r\n                        accumulator.push(token.number.toString());\r\n                        break;\r\n                    case 4 /* COMMA_TOKEN */:\r\n                        results.push(accumulator.join(' '));\r\n                        accumulator.length = 0;\r\n                        break;\r\n                }\r\n            });\r\n            if (accumulator.length) {\r\n                results.push(accumulator.join(' '));\r\n            }\r\n            return results.map(function (result) { return (result.indexOf(' ') === -1 ? result : \"'\" + result + \"'\"); });\r\n        }\r\n    };\r\n\r\n    var fontSize = {\r\n        name: \"font-size\",\r\n        initialValue: '0',\r\n        prefix: false,\r\n        type: 3 /* TYPE_VALUE */,\r\n        format: 'length'\r\n    };\r\n\r\n    var fontWeight = {\r\n        name: 'font-weight',\r\n        initialValue: 'normal',\r\n        type: 0 /* VALUE */,\r\n        prefix: false,\r\n        parse: function (_context, token) {\r\n            if (isNumberToken(token)) {\r\n                return token.number;\r\n            }\r\n            if (isIdentToken(token)) {\r\n                switch (token.value) {\r\n                    case 'bold':\r\n                        return 700;\r\n                    case 'normal':\r\n                    default:\r\n                        return 400;\r\n                }\r\n            }\r\n            return 400;\r\n        }\r\n    };\r\n\r\n    var fontVariant = {\r\n        name: 'font-variant',\r\n        initialValue: 'none',\r\n        type: 1 /* LIST */,\r\n        prefix: false,\r\n        parse: function (_context, tokens) {\r\n            return tokens.filter(isIdentToken).map(function (token) { return token.value; });\r\n        }\r\n    };\r\n\r\n    var fontStyle = {\r\n        name: 'font-style',\r\n        initialValue: 'normal',\r\n        prefix: false,\r\n        type: 2 /* IDENT_VALUE */,\r\n        parse: function (_context, overflow) {\r\n            switch (overflow) {\r\n                case 'oblique':\r\n                    return \"oblique\" /* OBLIQUE */;\r\n                case 'italic':\r\n                    return \"italic\" /* ITALIC */;\r\n                case 'normal':\r\n                default:\r\n                    return \"normal\" /* NORMAL */;\r\n            }\r\n        }\r\n    };\r\n\r\n    var contains = function (bit, value) { return (bit & value) !== 0; };\r\n\r\n    var content = {\r\n        name: 'content',\r\n        initialValue: 'none',\r\n        type: 1 /* LIST */,\r\n        prefix: false,\r\n        parse: function (_context, tokens) {\r\n            if (tokens.length === 0) {\r\n                return [];\r\n            }\r\n            var first = tokens[0];\r\n            if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\r\n                return [];\r\n            }\r\n            return tokens;\r\n        }\r\n    };\r\n\r\n    var counterIncrement = {\r\n        name: 'counter-increment',\r\n        initialValue: 'none',\r\n        prefix: true,\r\n        type: 1 /* LIST */,\r\n        parse: function (_context, tokens) {\r\n            if (tokens.length === 0) {\r\n                return null;\r\n            }\r\n            var first = tokens[0];\r\n            if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\r\n                return null;\r\n            }\r\n            var increments = [];\r\n            var filtered = tokens.filter(nonWhiteSpace);\r\n            for (var i = 0; i < filtered.length; i++) {\r\n                var counter = filtered[i];\r\n                var next = filtered[i + 1];\r\n                if (counter.type === 20 /* IDENT_TOKEN */) {\r\n                    var increment = next && isNumberToken(next) ? next.number : 1;\r\n                    increments.push({ counter: counter.value, increment: increment });\r\n                }\r\n            }\r\n            return increments;\r\n        }\r\n    };\r\n\r\n    var counterReset = {\r\n        name: 'counter-reset',\r\n        initialValue: 'none',\r\n        prefix: true,\r\n        type: 1 /* LIST */,\r\n        parse: function (_context, tokens) {\r\n            if (tokens.length === 0) {\r\n                return [];\r\n            }\r\n            var resets = [];\r\n            var filtered = tokens.filter(nonWhiteSpace);\r\n            for (var i = 0; i < filtered.length; i++) {\r\n                var counter = filtered[i];\r\n                var next = filtered[i + 1];\r\n                if (isIdentToken(counter) && counter.value !== 'none') {\r\n                    var reset = next && isNumberToken(next) ? next.number : 0;\r\n                    resets.push({ counter: counter.value, reset: reset });\r\n                }\r\n            }\r\n            return resets;\r\n        }\r\n    };\r\n\r\n    var duration = {\r\n        name: 'duration',\r\n        initialValue: '0s',\r\n        prefix: false,\r\n        type: 1 /* LIST */,\r\n        parse: function (context, tokens) {\r\n            return tokens.filter(isDimensionToken).map(function (token) { return time.parse(context, token); });\r\n        }\r\n    };\r\n\r\n    var quotes = {\r\n        name: 'quotes',\r\n        initialValue: 'none',\r\n        prefix: true,\r\n        type: 1 /* LIST */,\r\n        parse: function (_context, tokens) {\r\n            if (tokens.length === 0) {\r\n                return null;\r\n            }\r\n            var first = tokens[0];\r\n            if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\r\n                return null;\r\n            }\r\n            var quotes = [];\r\n            var filtered = tokens.filter(isStringToken);\r\n            if (filtered.length % 2 !== 0) {\r\n                return null;\r\n            }\r\n            for (var i = 0; i < filtered.length; i += 2) {\r\n                var open_1 = filtered[i].value;\r\n                var close_1 = filtered[i + 1].value;\r\n                quotes.push({ open: open_1, close: close_1 });\r\n            }\r\n            return quotes;\r\n        }\r\n    };\r\n    var getQuote = function (quotes, depth, open) {\r\n        if (!quotes) {\r\n            return '';\r\n        }\r\n        var quote = quotes[Math.min(depth, quotes.length - 1)];\r\n        if (!quote) {\r\n            return '';\r\n        }\r\n        return open ? quote.open : quote.close;\r\n    };\r\n\r\n    var boxShadow = {\r\n        name: 'box-shadow',\r\n        initialValue: 'none',\r\n        type: 1 /* LIST */,\r\n        prefix: false,\r\n        parse: function (context, tokens) {\r\n            if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\r\n                return [];\r\n            }\r\n            return parseFunctionArgs(tokens).map(function (values) {\r\n                var shadow = {\r\n                    color: 0x000000ff,\r\n                    offsetX: ZERO_LENGTH,\r\n                    offsetY: ZERO_LENGTH,\r\n                    blur: ZERO_LENGTH,\r\n                    spread: ZERO_LENGTH,\r\n                    inset: false\r\n                };\r\n                var c = 0;\r\n                for (var i = 0; i < values.length; i++) {\r\n                    var token = values[i];\r\n                    if (isIdentWithValue(token, 'inset')) {\r\n                        shadow.inset = true;\r\n                    }\r\n                    else if (isLength(token)) {\r\n                        if (c === 0) {\r\n                            shadow.offsetX = token;\r\n                        }\r\n                        else if (c === 1) {\r\n                            shadow.offsetY = token;\r\n                        }\r\n                        else if (c === 2) {\r\n                            shadow.blur = token;\r\n                        }\r\n                        else {\r\n                            shadow.spread = token;\r\n                        }\r\n                        c++;\r\n                    }\r\n                    else {\r\n                        shadow.color = color$1.parse(context, token);\r\n                    }\r\n                }\r\n                return shadow;\r\n            });\r\n        }\r\n    };\r\n\r\n    var paintOrder = {\r\n        name: 'paint-order',\r\n        initialValue: 'normal',\r\n        prefix: false,\r\n        type: 1 /* LIST */,\r\n        parse: function (_context, tokens) {\r\n            var DEFAULT_VALUE = [0 /* FILL */, 1 /* STROKE */, 2 /* MARKERS */];\r\n            var layers = [];\r\n            tokens.filter(isIdentToken).forEach(function (token) {\r\n                switch (token.value) {\r\n                    case 'stroke':\r\n                        layers.push(1 /* STROKE */);\r\n                        break;\r\n                    case 'fill':\r\n                        layers.push(0 /* FILL */);\r\n                        break;\r\n                    case 'markers':\r\n                        layers.push(2 /* MARKERS */);\r\n                        break;\r\n                }\r\n            });\r\n            DEFAULT_VALUE.forEach(function (value) {\r\n                if (layers.indexOf(value) === -1) {\r\n                    layers.push(value);\r\n                }\r\n            });\r\n            return layers;\r\n        }\r\n    };\r\n\r\n    var webkitTextStrokeColor = {\r\n        name: \"-webkit-text-stroke-color\",\r\n        initialValue: 'currentcolor',\r\n        prefix: false,\r\n        type: 3 /* TYPE_VALUE */,\r\n        format: 'color'\r\n    };\r\n\r\n    var webkitTextStrokeWidth = {\r\n        name: \"-webkit-text-stroke-width\",\r\n        initialValue: '0',\r\n        type: 0 /* VALUE */,\r\n        prefix: false,\r\n        parse: function (_context, token) {\r\n            if (isDimensionToken(token)) {\r\n                return token.number;\r\n            }\r\n            return 0;\r\n        }\r\n    };\r\n\r\n    var CSSParsedDeclaration = /** @class */ (function () {\r\n        function CSSParsedDeclaration(context, declaration) {\r\n            var _a, _b;\r\n            this.animationDuration = parse(context, duration, declaration.animationDuration);\r\n            this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\r\n            this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\r\n            this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\r\n            this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\r\n            this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\r\n            this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\r\n            this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\r\n            this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\r\n            this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\r\n            this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\r\n            this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\r\n            this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\r\n            this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\r\n            this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\r\n            this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\r\n            this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\r\n            this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\r\n            this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\r\n            this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\r\n            this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\r\n            this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\r\n            this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\r\n            this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\r\n            this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\r\n            this.color = parse(context, color, declaration.color);\r\n            this.direction = parse(context, direction, declaration.direction);\r\n            this.display = parse(context, display, declaration.display);\r\n            this.float = parse(context, float, declaration.cssFloat);\r\n            this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\r\n            this.fontSize = parse(context, fontSize, declaration.fontSize);\r\n            this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\r\n            this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\r\n            this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\r\n            this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\r\n            this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\r\n            this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\r\n            this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\r\n            this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\r\n            this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\r\n            this.marginTop = parse(context, marginTop, declaration.marginTop);\r\n            this.marginRight = parse(context, marginRight, declaration.marginRight);\r\n            this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\r\n            this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\r\n            this.opacity = parse(context, opacity, declaration.opacity);\r\n            var overflowTuple = parse(context, overflow, declaration.overflow);\r\n            this.overflowX = overflowTuple[0];\r\n            this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\r\n            this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\r\n            this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\r\n            this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\r\n            this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\r\n            this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\r\n            this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\r\n            this.position = parse(context, position, declaration.position);\r\n            this.textAlign = parse(context, textAlign, declaration.textAlign);\r\n            this.textDecorationColor = parse(context, textDecorationColor, (_a = declaration.textDecorationColor) !== null && _a !== void 0 ? _a : declaration.color);\r\n            this.textDecorationLine = parse(context, textDecorationLine, (_b = declaration.textDecorationLine) !== null && _b !== void 0 ? _b : declaration.textDecoration);\r\n            this.textShadow = parse(context, textShadow, declaration.textShadow);\r\n            this.textTransform = parse(context, textTransform, declaration.textTransform);\r\n            this.transform = parse(context, transform$1, declaration.transform);\r\n            this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\r\n            this.visibility = parse(context, visibility, declaration.visibility);\r\n            this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\r\n            this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\r\n            this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\r\n            this.zIndex = parse(context, zIndex, declaration.zIndex);\r\n        }\r\n        CSSParsedDeclaration.prototype.isVisible = function () {\r\n            return this.display > 0 && this.opacity > 0 && this.visibility === 0 /* VISIBLE */;\r\n        };\r\n        CSSParsedDeclaration.prototype.isTransparent = function () {\r\n            return isTransparent(this.backgroundColor);\r\n        };\r\n        CSSParsedDeclaration.prototype.isTransformed = function () {\r\n            return this.transform !== null;\r\n        };\r\n        CSSParsedDeclaration.prototype.isPositioned = function () {\r\n            return this.position !== 0 /* STATIC */;\r\n        };\r\n        CSSParsedDeclaration.prototype.isPositionedWithZIndex = function () {\r\n            return this.isPositioned() && !this.zIndex.auto;\r\n        };\r\n        CSSParsedDeclaration.prototype.isFloating = function () {\r\n            return this.float !== 0 /* NONE */;\r\n        };\r\n        CSSParsedDeclaration.prototype.isInlineLevel = function () {\r\n            return (contains(this.display, 4 /* INLINE */) ||\r\n                contains(this.display, 33554432 /* INLINE_BLOCK */) ||\r\n                contains(this.display, 268435456 /* INLINE_FLEX */) ||\r\n                contains(this.display, 536870912 /* INLINE_GRID */) ||\r\n                contains(this.display, 67108864 /* INLINE_LIST_ITEM */) ||\r\n                contains(this.display, 134217728 /* INLINE_TABLE */));\r\n        };\r\n        return CSSParsedDeclaration;\r\n    }());\r\n    var CSSParsedPseudoDeclaration = /** @class */ (function () {\r\n        function CSSParsedPseudoDeclaration(context, declaration) {\r\n            this.content = parse(context, content, declaration.content);\r\n            this.quotes = parse(context, quotes, declaration.quotes);\r\n        }\r\n        return CSSParsedPseudoDeclaration;\r\n    }());\r\n    var CSSParsedCounterDeclaration = /** @class */ (function () {\r\n        function CSSParsedCounterDeclaration(context, declaration) {\r\n            this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\r\n            this.counterReset = parse(context, counterReset, declaration.counterReset);\r\n        }\r\n        return CSSParsedCounterDeclaration;\r\n    }());\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    var parse = function (context, descriptor, style) {\r\n        var tokenizer = new Tokenizer();\r\n        var value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\r\n        tokenizer.write(value);\r\n        var parser = new Parser(tokenizer.read());\r\n        switch (descriptor.type) {\r\n            case 2 /* IDENT_VALUE */:\r\n                var token = parser.parseComponentValue();\r\n                return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\r\n            case 0 /* VALUE */:\r\n                return descriptor.parse(context, parser.parseComponentValue());\r\n            case 1 /* LIST */:\r\n                return descriptor.parse(context, parser.parseComponentValues());\r\n            case 4 /* TOKEN_VALUE */:\r\n                return parser.parseComponentValue();\r\n            case 3 /* TYPE_VALUE */:\r\n                switch (descriptor.format) {\r\n                    case 'angle':\r\n                        return angle.parse(context, parser.parseComponentValue());\r\n                    case 'color':\r\n                        return color$1.parse(context, parser.parseComponentValue());\r\n                    case 'image':\r\n                        return image.parse(context, parser.parseComponentValue());\r\n                    case 'length':\r\n                        var length_1 = parser.parseComponentValue();\r\n                        return isLength(length_1) ? length_1 : ZERO_LENGTH;\r\n                    case 'length-percentage':\r\n                        var value_1 = parser.parseComponentValue();\r\n                        return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;\r\n                    case 'time':\r\n                        return time.parse(context, parser.parseComponentValue());\r\n                }\r\n                break;\r\n        }\r\n    };\r\n\r\n    var elementDebuggerAttribute = 'data-html2canvas-debug';\r\n    var getElementDebugType = function (element) {\r\n        var attribute = element.getAttribute(elementDebuggerAttribute);\r\n        switch (attribute) {\r\n            case 'all':\r\n                return 1 /* ALL */;\r\n            case 'clone':\r\n                return 2 /* CLONE */;\r\n            case 'parse':\r\n                return 3 /* PARSE */;\r\n            case 'render':\r\n                return 4 /* RENDER */;\r\n            default:\r\n                return 0 /* NONE */;\r\n        }\r\n    };\r\n    var isDebugging = function (element, type) {\r\n        var elementType = getElementDebugType(element);\r\n        return elementType === 1 /* ALL */ || type === elementType;\r\n    };\r\n\r\n    var ElementContainer = /** @class */ (function () {\r\n        function ElementContainer(context, element) {\r\n            this.context = context;\r\n            this.textNodes = [];\r\n            this.elements = [];\r\n            this.flags = 0;\r\n            if (isDebugging(element, 3 /* PARSE */)) {\r\n                debugger;\r\n            }\r\n            this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\r\n            if (isHTMLElementNode(element)) {\r\n                if (this.styles.animationDuration.some(function (duration) { return duration > 0; })) {\r\n                    element.style.animationDuration = '0s';\r\n                }\r\n                if (this.styles.transform !== null) {\r\n                    // getBoundingClientRect takes transforms into account\r\n                    element.style.transform = 'none';\r\n                }\r\n            }\r\n            this.bounds = parseBounds(this.context, element);\r\n            if (isDebugging(element, 4 /* RENDER */)) {\r\n                this.flags |= 16 /* DEBUG_RENDER */;\r\n            }\r\n        }\r\n        return ElementContainer;\r\n    }());\r\n\r\n    /*\r\n     * text-segmentation 1.0.3 <https://github.com/niklasvh/text-segmentation>\r\n     * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\r\n     * Released under MIT License\r\n     */\r\n    var base64 = 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';\r\n\r\n    /*\r\n     * utrie 1.0.2 <https://github.com/niklasvh/utrie>\r\n     * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\r\n     * Released under MIT License\r\n     */\r\n    var chars$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\r\n    // Use a lookup table to find the index.\r\n    var lookup$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\r\n    for (var i$1 = 0; i$1 < chars$1.length; i$1++) {\r\n        lookup$1[chars$1.charCodeAt(i$1)] = i$1;\r\n    }\r\n    var decode = function (base64) {\r\n        var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\r\n        if (base64[base64.length - 1] === '=') {\r\n            bufferLength--;\r\n            if (base64[base64.length - 2] === '=') {\r\n                bufferLength--;\r\n            }\r\n        }\r\n        var buffer = typeof ArrayBuffer !== 'undefined' &&\r\n            typeof Uint8Array !== 'undefined' &&\r\n            typeof Uint8Array.prototype.slice !== 'undefined'\r\n            ? new ArrayBuffer(bufferLength)\r\n            : new Array(bufferLength);\r\n        var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\r\n        for (i = 0; i < len; i += 4) {\r\n            encoded1 = lookup$1[base64.charCodeAt(i)];\r\n            encoded2 = lookup$1[base64.charCodeAt(i + 1)];\r\n            encoded3 = lookup$1[base64.charCodeAt(i + 2)];\r\n            encoded4 = lookup$1[base64.charCodeAt(i + 3)];\r\n            bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\r\n            bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\r\n            bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\r\n        }\r\n        return buffer;\r\n    };\r\n    var polyUint16Array = function (buffer) {\r\n        var length = buffer.length;\r\n        var bytes = [];\r\n        for (var i = 0; i < length; i += 2) {\r\n            bytes.push((buffer[i + 1] << 8) | buffer[i]);\r\n        }\r\n        return bytes;\r\n    };\r\n    var polyUint32Array = function (buffer) {\r\n        var length = buffer.length;\r\n        var bytes = [];\r\n        for (var i = 0; i < length; i += 4) {\r\n            bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\r\n        }\r\n        return bytes;\r\n    };\r\n\r\n    /** Shift size for getting the index-2 table offset. */\r\n    var UTRIE2_SHIFT_2 = 5;\r\n    /** Shift size for getting the index-1 table offset. */\r\n    var UTRIE2_SHIFT_1 = 6 + 5;\r\n    /**\r\n     * Shift size for shifting left the index array values.\r\n     * Increases possible data size with 16-bit index values at the cost\r\n     * of compactability.\r\n     * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\r\n     */\r\n    var UTRIE2_INDEX_SHIFT = 2;\r\n    /**\r\n     * Difference between the two shift sizes,\r\n     * for getting an index-1 offset from an index-2 offset. 6=11-5\r\n     */\r\n    var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\r\n    /**\r\n     * The part of the index-2 table for U+D800..U+DBFF stores values for\r\n     * lead surrogate code _units_ not code _points_.\r\n     * Values for lead surrogate code _points_ are indexed with this portion of the table.\r\n     * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\r\n     */\r\n    var UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\r\n    /** Number of entries in a data block. 32=0x20 */\r\n    var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\r\n    /** Mask for getting the lower bits for the in-data-block offset. */\r\n    var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\r\n    var UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\r\n    /** Count the lengths of both BMP pieces. 2080=0x820 */\r\n    var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\r\n    /**\r\n     * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\r\n     * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\r\n     */\r\n    var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\r\n    var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\r\n    /**\r\n     * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\r\n     * Variable length, for code points up to highStart, where the last single-value range starts.\r\n     * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\r\n     * (For 0x100000 supplementary code points U+10000..U+10ffff.)\r\n     *\r\n     * The part of the index-2 table for supplementary code points starts\r\n     * after this index-1 table.\r\n     *\r\n     * Both the index-1 table and the following part of the index-2 table\r\n     * are omitted completely if there is only BMP data.\r\n     */\r\n    var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\r\n    /**\r\n     * Number of index-1 entries for the BMP. 32=0x20\r\n     * This part of the index-1 table is omitted from the serialized form.\r\n     */\r\n    var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\r\n    /** Number of entries in an index-2 block. 64=0x40 */\r\n    var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\r\n    /** Mask for getting the lower bits for the in-index-2-block offset. */\r\n    var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\r\n    var slice16 = function (view, start, end) {\r\n        if (view.slice) {\r\n            return view.slice(start, end);\r\n        }\r\n        return new Uint16Array(Array.prototype.slice.call(view, start, end));\r\n    };\r\n    var slice32 = function (view, start, end) {\r\n        if (view.slice) {\r\n            return view.slice(start, end);\r\n        }\r\n        return new Uint32Array(Array.prototype.slice.call(view, start, end));\r\n    };\r\n    var createTrieFromBase64 = function (base64, _byteLength) {\r\n        var buffer = decode(base64);\r\n        var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\r\n        var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\r\n        var headerLength = 24;\r\n        var index = slice16(view16, headerLength / 2, view32[4] / 2);\r\n        var data = view32[5] === 2\r\n            ? slice16(view16, (headerLength + view32[4]) / 2)\r\n            : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\r\n        return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\r\n    };\r\n    var Trie = /** @class */ (function () {\r\n        function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\r\n            this.initialValue = initialValue;\r\n            this.errorValue = errorValue;\r\n            this.highStart = highStart;\r\n            this.highValueIndex = highValueIndex;\r\n            this.index = index;\r\n            this.data = data;\r\n        }\r\n        /**\r\n         * Get the value for a code point as stored in the Trie.\r\n         *\r\n         * @param codePoint the code point\r\n         * @return the value\r\n         */\r\n        Trie.prototype.get = function (codePoint) {\r\n            var ix;\r\n            if (codePoint >= 0) {\r\n                if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\r\n                    // Ordinary BMP code point, excluding leading surrogates.\r\n                    // BMP uses a single level lookup.  BMP index starts at offset 0 in the Trie2 index.\r\n                    // 16 bit data is stored in the index array itself.\r\n                    ix = this.index[codePoint >> UTRIE2_SHIFT_2];\r\n                    ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\r\n                    return this.data[ix];\r\n                }\r\n                if (codePoint <= 0xffff) {\r\n                    // Lead Surrogate Code Point.  A Separate index section is stored for\r\n                    // lead surrogate code units and code points.\r\n                    //   The main index has the code unit data.\r\n                    //   For this function, we need the code point data.\r\n                    // Note: this expression could be refactored for slightly improved efficiency, but\r\n                    //       surrogate code points will be so rare in practice that it's not worth it.\r\n                    ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\r\n                    ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\r\n                    return this.data[ix];\r\n                }\r\n                if (codePoint < this.highStart) {\r\n                    // Supplemental code point, use two-level lookup.\r\n                    ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\r\n                    ix = this.index[ix];\r\n                    ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\r\n                    ix = this.index[ix];\r\n                    ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\r\n                    return this.data[ix];\r\n                }\r\n                if (codePoint <= 0x10ffff) {\r\n                    return this.data[this.highValueIndex];\r\n                }\r\n            }\r\n            // Fall through.  The code point is outside of the legal range of 0..0x10ffff.\r\n            return this.errorValue;\r\n        };\r\n        return Trie;\r\n    }());\r\n\r\n    /*\r\n     * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>\r\n     * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\r\n     * Released under MIT License\r\n     */\r\n    var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\r\n    // Use a lookup table to find the index.\r\n    var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\r\n    for (var i = 0; i < chars.length; i++) {\r\n        lookup[chars.charCodeAt(i)] = i;\r\n    }\r\n\r\n    var Prepend = 1;\r\n    var CR = 2;\r\n    var LF = 3;\r\n    var Control = 4;\r\n    var Extend = 5;\r\n    var SpacingMark = 7;\r\n    var L = 8;\r\n    var V = 9;\r\n    var T = 10;\r\n    var LV = 11;\r\n    var LVT = 12;\r\n    var ZWJ = 13;\r\n    var Extended_Pictographic = 14;\r\n    var RI = 15;\r\n    var toCodePoints = function (str) {\r\n        var codePoints = [];\r\n        var i = 0;\r\n        var length = str.length;\r\n        while (i < length) {\r\n            var value = str.charCodeAt(i++);\r\n            if (value >= 0xd800 && value <= 0xdbff && i < length) {\r\n                var extra = str.charCodeAt(i++);\r\n                if ((extra & 0xfc00) === 0xdc00) {\r\n                    codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\r\n                }\r\n                else {\r\n                    codePoints.push(value);\r\n                    i--;\r\n                }\r\n            }\r\n            else {\r\n                codePoints.push(value);\r\n            }\r\n        }\r\n        return codePoints;\r\n    };\r\n    var fromCodePoint = function () {\r\n        var codePoints = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            codePoints[_i] = arguments[_i];\r\n        }\r\n        if (String.fromCodePoint) {\r\n            return String.fromCodePoint.apply(String, codePoints);\r\n        }\r\n        var length = codePoints.length;\r\n        if (!length) {\r\n            return '';\r\n        }\r\n        var codeUnits = [];\r\n        var index = -1;\r\n        var result = '';\r\n        while (++index < length) {\r\n            var codePoint = codePoints[index];\r\n            if (codePoint <= 0xffff) {\r\n                codeUnits.push(codePoint);\r\n            }\r\n            else {\r\n                codePoint -= 0x10000;\r\n                codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\r\n            }\r\n            if (index + 1 === length || codeUnits.length > 0x4000) {\r\n                result += String.fromCharCode.apply(String, codeUnits);\r\n                codeUnits.length = 0;\r\n            }\r\n        }\r\n        return result;\r\n    };\r\n    var UnicodeTrie = createTrieFromBase64(base64);\r\n    var BREAK_NOT_ALLOWED = '×';\r\n    var BREAK_ALLOWED = '÷';\r\n    var codePointToClass = function (codePoint) { return UnicodeTrie.get(codePoint); };\r\n    var _graphemeBreakAtIndex = function (_codePoints, classTypes, index) {\r\n        var prevIndex = index - 2;\r\n        var prev = classTypes[prevIndex];\r\n        var current = classTypes[index - 1];\r\n        var next = classTypes[index];\r\n        // GB3 Do not break between a CR and LF\r\n        if (current === CR && next === LF) {\r\n            return BREAK_NOT_ALLOWED;\r\n        }\r\n        // GB4 Otherwise, break before and after controls.\r\n        if (current === CR || current === LF || current === Control) {\r\n            return BREAK_ALLOWED;\r\n        }\r\n        // GB5\r\n        if (next === CR || next === LF || next === Control) {\r\n            return BREAK_ALLOWED;\r\n        }\r\n        // Do not break Hangul syllable sequences.\r\n        // GB6\r\n        if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\r\n            return BREAK_NOT_ALLOWED;\r\n        }\r\n        // GB7\r\n        if ((current === LV || current === V) && (next === V || next === T)) {\r\n            return BREAK_NOT_ALLOWED;\r\n        }\r\n        // GB8\r\n        if ((current === LVT || current === T) && next === T) {\r\n            return BREAK_NOT_ALLOWED;\r\n        }\r\n        // GB9 Do not break before extending characters or ZWJ.\r\n        if (next === ZWJ || next === Extend) {\r\n            return BREAK_NOT_ALLOWED;\r\n        }\r\n        // Do not break before SpacingMarks, or after Prepend characters.\r\n        // GB9a\r\n        if (next === SpacingMark) {\r\n            return BREAK_NOT_ALLOWED;\r\n        }\r\n        // GB9a\r\n        if (current === Prepend) {\r\n            return BREAK_NOT_ALLOWED;\r\n        }\r\n        // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\r\n        if (current === ZWJ && next === Extended_Pictographic) {\r\n            while (prev === Extend) {\r\n                prev = classTypes[--prevIndex];\r\n            }\r\n            if (prev === Extended_Pictographic) {\r\n                return BREAK_NOT_ALLOWED;\r\n            }\r\n        }\r\n        // GB12 Do not break within emoji flag sequences.\r\n        // That is, do not break between regional indicator (RI) symbols\r\n        // if there is an odd number of RI characters before the break point.\r\n        if (current === RI && next === RI) {\r\n            var countRI = 0;\r\n            while (prev === RI) {\r\n                countRI++;\r\n                prev = classTypes[--prevIndex];\r\n            }\r\n            if (countRI % 2 === 0) {\r\n                return BREAK_NOT_ALLOWED;\r\n            }\r\n        }\r\n        return BREAK_ALLOWED;\r\n    };\r\n    var GraphemeBreaker = function (str) {\r\n        var codePoints = toCodePoints(str);\r\n        var length = codePoints.length;\r\n        var index = 0;\r\n        var lastEnd = 0;\r\n        var classTypes = codePoints.map(codePointToClass);\r\n        return {\r\n            next: function () {\r\n                if (index >= length) {\r\n                    return { done: true, value: null };\r\n                }\r\n                var graphemeBreak = BREAK_NOT_ALLOWED;\r\n                while (index < length &&\r\n                    (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED) { }\r\n                if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\r\n                    var value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\r\n                    lastEnd = index;\r\n                    return { value: value, done: false };\r\n                }\r\n                return { done: true, value: null };\r\n            },\r\n        };\r\n    };\r\n    var splitGraphemes = function (str) {\r\n        var breaker = GraphemeBreaker(str);\r\n        var graphemes = [];\r\n        var bk;\r\n        while (!(bk = breaker.next()).done) {\r\n            if (bk.value) {\r\n                graphemes.push(bk.value.slice());\r\n            }\r\n        }\r\n        return graphemes;\r\n    };\r\n\r\n    var testRangeBounds = function (document) {\r\n        var TEST_HEIGHT = 123;\r\n        if (document.createRange) {\r\n            var range = document.createRange();\r\n            if (range.getBoundingClientRect) {\r\n                var testElement = document.createElement('boundtest');\r\n                testElement.style.height = TEST_HEIGHT + \"px\";\r\n                testElement.style.display = 'block';\r\n                document.body.appendChild(testElement);\r\n                range.selectNode(testElement);\r\n                var rangeBounds = range.getBoundingClientRect();\r\n                var rangeHeight = Math.round(rangeBounds.height);\r\n                document.body.removeChild(testElement);\r\n                if (rangeHeight === TEST_HEIGHT) {\r\n                    return true;\r\n                }\r\n            }\r\n        }\r\n        return false;\r\n    };\r\n    var testIOSLineBreak = function (document) {\r\n        var testElement = document.createElement('boundtest');\r\n        testElement.style.width = '50px';\r\n        testElement.style.display = 'block';\r\n        testElement.style.fontSize = '12px';\r\n        testElement.style.letterSpacing = '0px';\r\n        testElement.style.wordSpacing = '0px';\r\n        document.body.appendChild(testElement);\r\n        var range = document.createRange();\r\n        testElement.innerHTML = typeof ''.repeat === 'function' ? '&#128104;'.repeat(10) : '';\r\n        var node = testElement.firstChild;\r\n        var textList = toCodePoints$1(node.data).map(function (i) { return fromCodePoint$1(i); });\r\n        var offset = 0;\r\n        var prev = {};\r\n        // ios 13 does not handle range getBoundingClientRect line changes correctly #2177\r\n        var supports = textList.every(function (text, i) {\r\n            range.setStart(node, offset);\r\n            range.setEnd(node, offset + text.length);\r\n            var rect = range.getBoundingClientRect();\r\n            offset += text.length;\r\n            var boundAhead = rect.x > prev.x || rect.y > prev.y;\r\n            prev = rect;\r\n            if (i === 0) {\r\n                return true;\r\n            }\r\n            return boundAhead;\r\n        });\r\n        document.body.removeChild(testElement);\r\n        return supports;\r\n    };\r\n    var testCORS = function () { return typeof new Image().crossOrigin !== 'undefined'; };\r\n    var testResponseType = function () { return typeof new XMLHttpRequest().responseType === 'string'; };\r\n    var testSVG = function (document) {\r\n        var img = new Image();\r\n        var canvas = document.createElement('canvas');\r\n        var ctx = canvas.getContext('2d');\r\n        if (!ctx) {\r\n            return false;\r\n        }\r\n        img.src = \"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>\";\r\n        try {\r\n            ctx.drawImage(img, 0, 0);\r\n            canvas.toDataURL();\r\n        }\r\n        catch (e) {\r\n            return false;\r\n        }\r\n        return true;\r\n    };\r\n    var isGreenPixel = function (data) {\r\n        return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\r\n    };\r\n    var testForeignObject = function (document) {\r\n        var canvas = document.createElement('canvas');\r\n        var size = 100;\r\n        canvas.width = size;\r\n        canvas.height = size;\r\n        var ctx = canvas.getContext('2d');\r\n        if (!ctx) {\r\n            return Promise.reject(false);\r\n        }\r\n        ctx.fillStyle = 'rgb(0, 255, 0)';\r\n        ctx.fillRect(0, 0, size, size);\r\n        var img = new Image();\r\n        var greenImageSrc = canvas.toDataURL();\r\n        img.src = greenImageSrc;\r\n        var svg = createForeignObjectSVG(size, size, 0, 0, img);\r\n        ctx.fillStyle = 'red';\r\n        ctx.fillRect(0, 0, size, size);\r\n        return loadSerializedSVG$1(svg)\r\n            .then(function (img) {\r\n            ctx.drawImage(img, 0, 0);\r\n            var data = ctx.getImageData(0, 0, size, size).data;\r\n            ctx.fillStyle = 'red';\r\n            ctx.fillRect(0, 0, size, size);\r\n            var node = document.createElement('div');\r\n            node.style.backgroundImage = \"url(\" + greenImageSrc + \")\";\r\n            node.style.height = size + \"px\";\r\n            // Firefox 55 does not render inline <img /> tags\r\n            return isGreenPixel(data)\r\n                ? loadSerializedSVG$1(createForeignObjectSVG(size, size, 0, 0, node))\r\n                : Promise.reject(false);\r\n        })\r\n            .then(function (img) {\r\n            ctx.drawImage(img, 0, 0);\r\n            // Edge does not render background-images\r\n            return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\r\n        })\r\n            .catch(function () { return false; });\r\n    };\r\n    var createForeignObjectSVG = function (width, height, x, y, node) {\r\n        var xmlns = 'http://www.w3.org/2000/svg';\r\n        var svg = document.createElementNS(xmlns, 'svg');\r\n        var foreignObject = document.createElementNS(xmlns, 'foreignObject');\r\n        svg.setAttributeNS(null, 'width', width.toString());\r\n        svg.setAttributeNS(null, 'height', height.toString());\r\n        foreignObject.setAttributeNS(null, 'width', '100%');\r\n        foreignObject.setAttributeNS(null, 'height', '100%');\r\n        foreignObject.setAttributeNS(null, 'x', x.toString());\r\n        foreignObject.setAttributeNS(null, 'y', y.toString());\r\n        foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\r\n        svg.appendChild(foreignObject);\r\n        foreignObject.appendChild(node);\r\n        return svg;\r\n    };\r\n    var loadSerializedSVG$1 = function (svg) {\r\n        return new Promise(function (resolve, reject) {\r\n            var img = new Image();\r\n            img.onload = function () { return resolve(img); };\r\n            img.onerror = reject;\r\n            img.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(svg));\r\n        });\r\n    };\r\n    var FEATURES = {\r\n        get SUPPORT_RANGE_BOUNDS() {\r\n            var value = testRangeBounds(document);\r\n            Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value: value });\r\n            return value;\r\n        },\r\n        get SUPPORT_WORD_BREAKING() {\r\n            var value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);\r\n            Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', { value: value });\r\n            return value;\r\n        },\r\n        get SUPPORT_SVG_DRAWING() {\r\n            var value = testSVG(document);\r\n            Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value: value });\r\n            return value;\r\n        },\r\n        get SUPPORT_FOREIGNOBJECT_DRAWING() {\r\n            var value = typeof Array.from === 'function' && typeof window.fetch === 'function'\r\n                ? testForeignObject(document)\r\n                : Promise.resolve(false);\r\n            Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value: value });\r\n            return value;\r\n        },\r\n        get SUPPORT_CORS_IMAGES() {\r\n            var value = testCORS();\r\n            Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value: value });\r\n            return value;\r\n        },\r\n        get SUPPORT_RESPONSE_TYPE() {\r\n            var value = testResponseType();\r\n            Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value: value });\r\n            return value;\r\n        },\r\n        get SUPPORT_CORS_XHR() {\r\n            var value = 'withCredentials' in new XMLHttpRequest();\r\n            Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value: value });\r\n            return value;\r\n        },\r\n        get SUPPORT_NATIVE_TEXT_SEGMENTATION() {\r\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n            var value = !!(typeof Intl !== 'undefined' && Intl.Segmenter);\r\n            Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', { value: value });\r\n            return value;\r\n        }\r\n    };\r\n\r\n    var TextBounds = /** @class */ (function () {\r\n        function TextBounds(text, bounds) {\r\n            this.text = text;\r\n            this.bounds = bounds;\r\n        }\r\n        return TextBounds;\r\n    }());\r\n    var parseTextBounds = function (context, value, styles, node) {\r\n        var textList = breakText(value, styles);\r\n        var textBounds = [];\r\n        var offset = 0;\r\n        textList.forEach(function (text) {\r\n            if (styles.textDecorationLine.length || text.trim().length > 0) {\r\n                if (FEATURES.SUPPORT_RANGE_BOUNDS) {\r\n                    var clientRects = createRange(node, offset, text.length).getClientRects();\r\n                    if (clientRects.length > 1) {\r\n                        var subSegments = segmentGraphemes(text);\r\n                        var subOffset_1 = 0;\r\n                        subSegments.forEach(function (subSegment) {\r\n                            textBounds.push(new TextBounds(subSegment, Bounds.fromDOMRectList(context, createRange(node, subOffset_1 + offset, subSegment.length).getClientRects())));\r\n                            subOffset_1 += subSegment.length;\r\n                        });\r\n                    }\r\n                    else {\r\n                        textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));\r\n                    }\r\n                }\r\n                else {\r\n                    var replacementNode = node.splitText(text.length);\r\n                    textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));\r\n                    node = replacementNode;\r\n                }\r\n            }\r\n            else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\r\n                node = node.splitText(text.length);\r\n            }\r\n            offset += text.length;\r\n        });\r\n        return textBounds;\r\n    };\r\n    var getWrapperBounds = function (context, node) {\r\n        var ownerDocument = node.ownerDocument;\r\n        if (ownerDocument) {\r\n            var wrapper = ownerDocument.createElement('html2canvaswrapper');\r\n            wrapper.appendChild(node.cloneNode(true));\r\n            var parentNode = node.parentNode;\r\n            if (parentNode) {\r\n                parentNode.replaceChild(wrapper, node);\r\n                var bounds = parseBounds(context, wrapper);\r\n                if (wrapper.firstChild) {\r\n                    parentNode.replaceChild(wrapper.firstChild, wrapper);\r\n                }\r\n                return bounds;\r\n            }\r\n        }\r\n        return Bounds.EMPTY;\r\n    };\r\n    var createRange = function (node, offset, length) {\r\n        var ownerDocument = node.ownerDocument;\r\n        if (!ownerDocument) {\r\n            throw new Error('Node has no owner document');\r\n        }\r\n        var range = ownerDocument.createRange();\r\n        range.setStart(node, offset);\r\n        range.setEnd(node, offset + length);\r\n        return range;\r\n    };\r\n    var segmentGraphemes = function (value) {\r\n        if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\r\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n            var segmenter = new Intl.Segmenter(void 0, { granularity: 'grapheme' });\r\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n            return Array.from(segmenter.segment(value)).map(function (segment) { return segment.segment; });\r\n        }\r\n        return splitGraphemes(value);\r\n    };\r\n    var segmentWords = function (value, styles) {\r\n        if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\r\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n            var segmenter = new Intl.Segmenter(void 0, {\r\n                granularity: 'word'\r\n            });\r\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n            return Array.from(segmenter.segment(value)).map(function (segment) { return segment.segment; });\r\n        }\r\n        return breakWords(value, styles);\r\n    };\r\n    var breakText = function (value, styles) {\r\n        return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);\r\n    };\r\n    // https://drafts.csswg.org/css-text/#word-separator\r\n    var wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];\r\n    var breakWords = function (str, styles) {\r\n        var breaker = LineBreaker(str, {\r\n            lineBreak: styles.lineBreak,\r\n            wordBreak: styles.overflowWrap === \"break-word\" /* BREAK_WORD */ ? 'break-word' : styles.wordBreak\r\n        });\r\n        var words = [];\r\n        var bk;\r\n        var _loop_1 = function () {\r\n            if (bk.value) {\r\n                var value = bk.value.slice();\r\n                var codePoints = toCodePoints$1(value);\r\n                var word_1 = '';\r\n                codePoints.forEach(function (codePoint) {\r\n                    if (wordSeparators.indexOf(codePoint) === -1) {\r\n                        word_1 += fromCodePoint$1(codePoint);\r\n                    }\r\n                    else {\r\n                        if (word_1.length) {\r\n                            words.push(word_1);\r\n                        }\r\n                        words.push(fromCodePoint$1(codePoint));\r\n                        word_1 = '';\r\n                    }\r\n                });\r\n                if (word_1.length) {\r\n                    words.push(word_1);\r\n                }\r\n            }\r\n        };\r\n        while (!(bk = breaker.next()).done) {\r\n            _loop_1();\r\n        }\r\n        return words;\r\n    };\r\n\r\n    var TextContainer = /** @class */ (function () {\r\n        function TextContainer(context, node, styles) {\r\n            this.text = transform(node.data, styles.textTransform);\r\n            this.textBounds = parseTextBounds(context, this.text, styles, node);\r\n        }\r\n        return TextContainer;\r\n    }());\r\n    var transform = function (text, transform) {\r\n        switch (transform) {\r\n            case 1 /* LOWERCASE */:\r\n                return text.toLowerCase();\r\n            case 3 /* CAPITALIZE */:\r\n                return text.replace(CAPITALIZE, capitalize);\r\n            case 2 /* UPPERCASE */:\r\n                return text.toUpperCase();\r\n            default:\r\n                return text;\r\n        }\r\n    };\r\n    var CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\r\n    var capitalize = function (m, p1, p2) {\r\n        if (m.length > 0) {\r\n            return p1 + p2.toUpperCase();\r\n        }\r\n        return m;\r\n    };\r\n\r\n    var ImageElementContainer = /** @class */ (function (_super) {\r\n        __extends(ImageElementContainer, _super);\r\n        function ImageElementContainer(context, img) {\r\n            var _this = _super.call(this, context, img) || this;\r\n            _this.src = img.currentSrc || img.src;\r\n            _this.intrinsicWidth = img.naturalWidth;\r\n            _this.intrinsicHeight = img.naturalHeight;\r\n            _this.context.cache.addImage(_this.src);\r\n            return _this;\r\n        }\r\n        return ImageElementContainer;\r\n    }(ElementContainer));\r\n\r\n    var CanvasElementContainer = /** @class */ (function (_super) {\r\n        __extends(CanvasElementContainer, _super);\r\n        function CanvasElementContainer(context, canvas) {\r\n            var _this = _super.call(this, context, canvas) || this;\r\n            _this.canvas = canvas;\r\n            _this.intrinsicWidth = canvas.width;\r\n            _this.intrinsicHeight = canvas.height;\r\n            return _this;\r\n        }\r\n        return CanvasElementContainer;\r\n    }(ElementContainer));\r\n\r\n    var SVGElementContainer = /** @class */ (function (_super) {\r\n        __extends(SVGElementContainer, _super);\r\n        function SVGElementContainer(context, img) {\r\n            var _this = _super.call(this, context, img) || this;\r\n            var s = new XMLSerializer();\r\n            var bounds = parseBounds(context, img);\r\n            img.setAttribute('width', bounds.width + \"px\");\r\n            img.setAttribute('height', bounds.height + \"px\");\r\n            _this.svg = \"data:image/svg+xml,\" + encodeURIComponent(s.serializeToString(img));\r\n            _this.intrinsicWidth = img.width.baseVal.value;\r\n            _this.intrinsicHeight = img.height.baseVal.value;\r\n            _this.context.cache.addImage(_this.svg);\r\n            return _this;\r\n        }\r\n        return SVGElementContainer;\r\n    }(ElementContainer));\r\n\r\n    var LIElementContainer = /** @class */ (function (_super) {\r\n        __extends(LIElementContainer, _super);\r\n        function LIElementContainer(context, element) {\r\n            var _this = _super.call(this, context, element) || this;\r\n            _this.value = element.value;\r\n            return _this;\r\n        }\r\n        return LIElementContainer;\r\n    }(ElementContainer));\r\n\r\n    var OLElementContainer = /** @class */ (function (_super) {\r\n        __extends(OLElementContainer, _super);\r\n        function OLElementContainer(context, element) {\r\n            var _this = _super.call(this, context, element) || this;\r\n            _this.start = element.start;\r\n            _this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\r\n            return _this;\r\n        }\r\n        return OLElementContainer;\r\n    }(ElementContainer));\r\n\r\n    var CHECKBOX_BORDER_RADIUS = [\r\n        {\r\n            type: 15 /* DIMENSION_TOKEN */,\r\n            flags: 0,\r\n            unit: 'px',\r\n            number: 3\r\n        }\r\n    ];\r\n    var RADIO_BORDER_RADIUS = [\r\n        {\r\n            type: 16 /* PERCENTAGE_TOKEN */,\r\n            flags: 0,\r\n            number: 50\r\n        }\r\n    ];\r\n    var reformatInputBounds = function (bounds) {\r\n        if (bounds.width > bounds.height) {\r\n            return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\r\n        }\r\n        else if (bounds.width < bounds.height) {\r\n            return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\r\n        }\r\n        return bounds;\r\n    };\r\n    var getInputValue = function (node) {\r\n        var value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\r\n        return value.length === 0 ? node.placeholder || '' : value;\r\n    };\r\n    var CHECKBOX = 'checkbox';\r\n    var RADIO = 'radio';\r\n    var PASSWORD = 'password';\r\n    var INPUT_COLOR = 0x2a2a2aff;\r\n    var InputElementContainer = /** @class */ (function (_super) {\r\n        __extends(InputElementContainer, _super);\r\n        function InputElementContainer(context, input) {\r\n            var _this = _super.call(this, context, input) || this;\r\n            _this.type = input.type.toLowerCase();\r\n            _this.checked = input.checked;\r\n            _this.value = getInputValue(input);\r\n            if (_this.type === CHECKBOX || _this.type === RADIO) {\r\n                _this.styles.backgroundColor = 0xdededeff;\r\n                _this.styles.borderTopColor =\r\n                    _this.styles.borderRightColor =\r\n                        _this.styles.borderBottomColor =\r\n                            _this.styles.borderLeftColor =\r\n                                0xa5a5a5ff;\r\n                _this.styles.borderTopWidth =\r\n                    _this.styles.borderRightWidth =\r\n                        _this.styles.borderBottomWidth =\r\n                            _this.styles.borderLeftWidth =\r\n                                1;\r\n                _this.styles.borderTopStyle =\r\n                    _this.styles.borderRightStyle =\r\n                        _this.styles.borderBottomStyle =\r\n                            _this.styles.borderLeftStyle =\r\n                                1 /* SOLID */;\r\n                _this.styles.backgroundClip = [0 /* BORDER_BOX */];\r\n                _this.styles.backgroundOrigin = [0 /* BORDER_BOX */];\r\n                _this.bounds = reformatInputBounds(_this.bounds);\r\n            }\r\n            switch (_this.type) {\r\n                case CHECKBOX:\r\n                    _this.styles.borderTopRightRadius =\r\n                        _this.styles.borderTopLeftRadius =\r\n                            _this.styles.borderBottomRightRadius =\r\n                                _this.styles.borderBottomLeftRadius =\r\n                                    CHECKBOX_BORDER_RADIUS;\r\n                    break;\r\n                case RADIO:\r\n                    _this.styles.borderTopRightRadius =\r\n                        _this.styles.borderTopLeftRadius =\r\n                            _this.styles.borderBottomRightRadius =\r\n                                _this.styles.borderBottomLeftRadius =\r\n                                    RADIO_BORDER_RADIUS;\r\n                    break;\r\n            }\r\n            return _this;\r\n        }\r\n        return InputElementContainer;\r\n    }(ElementContainer));\r\n\r\n    var SelectElementContainer = /** @class */ (function (_super) {\r\n        __extends(SelectElementContainer, _super);\r\n        function SelectElementContainer(context, element) {\r\n            var _this = _super.call(this, context, element) || this;\r\n            var option = element.options[element.selectedIndex || 0];\r\n            _this.value = option ? option.text || '' : '';\r\n            return _this;\r\n        }\r\n        return SelectElementContainer;\r\n    }(ElementContainer));\r\n\r\n    var TextareaElementContainer = /** @class */ (function (_super) {\r\n        __extends(TextareaElementContainer, _super);\r\n        function TextareaElementContainer(context, element) {\r\n            var _this = _super.call(this, context, element) || this;\r\n            _this.value = element.value;\r\n            return _this;\r\n        }\r\n        return TextareaElementContainer;\r\n    }(ElementContainer));\r\n\r\n    var IFrameElementContainer = /** @class */ (function (_super) {\r\n        __extends(IFrameElementContainer, _super);\r\n        function IFrameElementContainer(context, iframe) {\r\n            var _this = _super.call(this, context, iframe) || this;\r\n            _this.src = iframe.src;\r\n            _this.width = parseInt(iframe.width, 10) || 0;\r\n            _this.height = parseInt(iframe.height, 10) || 0;\r\n            _this.backgroundColor = _this.styles.backgroundColor;\r\n            try {\r\n                if (iframe.contentWindow &&\r\n                    iframe.contentWindow.document &&\r\n                    iframe.contentWindow.document.documentElement) {\r\n                    _this.tree = parseTree(context, iframe.contentWindow.document.documentElement);\r\n                    // http://www.w3.org/TR/css3-background/#special-backgrounds\r\n                    var documentBackgroundColor = iframe.contentWindow.document.documentElement\r\n                        ? parseColor(context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor)\r\n                        : COLORS.TRANSPARENT;\r\n                    var bodyBackgroundColor = iframe.contentWindow.document.body\r\n                        ? parseColor(context, getComputedStyle(iframe.contentWindow.document.body).backgroundColor)\r\n                        : COLORS.TRANSPARENT;\r\n                    _this.backgroundColor = isTransparent(documentBackgroundColor)\r\n                        ? isTransparent(bodyBackgroundColor)\r\n                            ? _this.styles.backgroundColor\r\n                            : bodyBackgroundColor\r\n                        : documentBackgroundColor;\r\n                }\r\n            }\r\n            catch (e) { }\r\n            return _this;\r\n        }\r\n        return IFrameElementContainer;\r\n    }(ElementContainer));\r\n\r\n    var LIST_OWNERS = ['OL', 'UL', 'MENU'];\r\n    var parseNodeTree = function (context, node, parent, root) {\r\n        for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {\r\n            nextNode = childNode.nextSibling;\r\n            if (isTextNode(childNode) && childNode.data.trim().length > 0) {\r\n                parent.textNodes.push(new TextContainer(context, childNode, parent.styles));\r\n            }\r\n            else if (isElementNode(childNode)) {\r\n                if (isSlotElement(childNode) && childNode.assignedNodes) {\r\n                    childNode.assignedNodes().forEach(function (childNode) { return parseNodeTree(context, childNode, parent, root); });\r\n                }\r\n                else {\r\n                    var container = createContainer(context, childNode);\r\n                    if (container.styles.isVisible()) {\r\n                        if (createsRealStackingContext(childNode, container, root)) {\r\n                            container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\r\n                        }\r\n                        else if (createsStackingContext(container.styles)) {\r\n                            container.flags |= 2 /* CREATES_STACKING_CONTEXT */;\r\n                        }\r\n                        if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\r\n                            container.flags |= 8 /* IS_LIST_OWNER */;\r\n                        }\r\n                        parent.elements.push(container);\r\n                        childNode.slot;\r\n                        if (childNode.shadowRoot) {\r\n                            parseNodeTree(context, childNode.shadowRoot, container, root);\r\n                        }\r\n                        else if (!isTextareaElement(childNode) &&\r\n                            !isSVGElement(childNode) &&\r\n                            !isSelectElement(childNode)) {\r\n                            parseNodeTree(context, childNode, container, root);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    };\r\n    var createContainer = function (context, element) {\r\n        if (isImageElement(element)) {\r\n            return new ImageElementContainer(context, element);\r\n        }\r\n        if (isCanvasElement(element)) {\r\n            return new CanvasElementContainer(context, element);\r\n        }\r\n        if (isSVGElement(element)) {\r\n            return new SVGElementContainer(context, element);\r\n        }\r\n        if (isLIElement(element)) {\r\n            return new LIElementContainer(context, element);\r\n        }\r\n        if (isOLElement(element)) {\r\n            return new OLElementContainer(context, element);\r\n        }\r\n        if (isInputElement(element)) {\r\n            return new InputElementContainer(context, element);\r\n        }\r\n        if (isSelectElement(element)) {\r\n            return new SelectElementContainer(context, element);\r\n        }\r\n        if (isTextareaElement(element)) {\r\n            return new TextareaElementContainer(context, element);\r\n        }\r\n        if (isIFrameElement(element)) {\r\n            return new IFrameElementContainer(context, element);\r\n        }\r\n        return new ElementContainer(context, element);\r\n    };\r\n    var parseTree = function (context, element) {\r\n        var container = createContainer(context, element);\r\n        container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\r\n        parseNodeTree(context, element, container, container);\r\n        return container;\r\n    };\r\n    var createsRealStackingContext = function (node, container, root) {\r\n        return (container.styles.isPositionedWithZIndex() ||\r\n            container.styles.opacity < 1 ||\r\n            container.styles.isTransformed() ||\r\n            (isBodyElement(node) && root.styles.isTransparent()));\r\n    };\r\n    var createsStackingContext = function (styles) { return styles.isPositioned() || styles.isFloating(); };\r\n    var isTextNode = function (node) { return node.nodeType === Node.TEXT_NODE; };\r\n    var isElementNode = function (node) { return node.nodeType === Node.ELEMENT_NODE; };\r\n    var isHTMLElementNode = function (node) {\r\n        return isElementNode(node) && typeof node.style !== 'undefined' && !isSVGElementNode(node);\r\n    };\r\n    var isSVGElementNode = function (element) {\r\n        return typeof element.className === 'object';\r\n    };\r\n    var isLIElement = function (node) { return node.tagName === 'LI'; };\r\n    var isOLElement = function (node) { return node.tagName === 'OL'; };\r\n    var isInputElement = function (node) { return node.tagName === 'INPUT'; };\r\n    var isHTMLElement = function (node) { return node.tagName === 'HTML'; };\r\n    var isSVGElement = function (node) { return node.tagName === 'svg'; };\r\n    var isBodyElement = function (node) { return node.tagName === 'BODY'; };\r\n    var isCanvasElement = function (node) { return node.tagName === 'CANVAS'; };\r\n    var isVideoElement = function (node) { return node.tagName === 'VIDEO'; };\r\n    var isImageElement = function (node) { return node.tagName === 'IMG'; };\r\n    var isIFrameElement = function (node) { return node.tagName === 'IFRAME'; };\r\n    var isStyleElement = function (node) { return node.tagName === 'STYLE'; };\r\n    var isScriptElement = function (node) { return node.tagName === 'SCRIPT'; };\r\n    var isTextareaElement = function (node) { return node.tagName === 'TEXTAREA'; };\r\n    var isSelectElement = function (node) { return node.tagName === 'SELECT'; };\r\n    var isSlotElement = function (node) { return node.tagName === 'SLOT'; };\r\n    // https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\r\n    var isCustomElement = function (node) { return node.tagName.indexOf('-') > 0; };\r\n\r\n    var CounterState = /** @class */ (function () {\r\n        function CounterState() {\r\n            this.counters = {};\r\n        }\r\n        CounterState.prototype.getCounterValue = function (name) {\r\n            var counter = this.counters[name];\r\n            if (counter && counter.length) {\r\n                return counter[counter.length - 1];\r\n            }\r\n            return 1;\r\n        };\r\n        CounterState.prototype.getCounterValues = function (name) {\r\n            var counter = this.counters[name];\r\n            return counter ? counter : [];\r\n        };\r\n        CounterState.prototype.pop = function (counters) {\r\n            var _this = this;\r\n            counters.forEach(function (counter) { return _this.counters[counter].pop(); });\r\n        };\r\n        CounterState.prototype.parse = function (style) {\r\n            var _this = this;\r\n            var counterIncrement = style.counterIncrement;\r\n            var counterReset = style.counterReset;\r\n            var canReset = true;\r\n            if (counterIncrement !== null) {\r\n                counterIncrement.forEach(function (entry) {\r\n                    var counter = _this.counters[entry.counter];\r\n                    if (counter && entry.increment !== 0) {\r\n                        canReset = false;\r\n                        if (!counter.length) {\r\n                            counter.push(1);\r\n                        }\r\n                        counter[Math.max(0, counter.length - 1)] += entry.increment;\r\n                    }\r\n                });\r\n            }\r\n            var counterNames = [];\r\n            if (canReset) {\r\n                counterReset.forEach(function (entry) {\r\n                    var counter = _this.counters[entry.counter];\r\n                    counterNames.push(entry.counter);\r\n                    if (!counter) {\r\n                        counter = _this.counters[entry.counter] = [];\r\n                    }\r\n                    counter.push(entry.reset);\r\n                });\r\n            }\r\n            return counterNames;\r\n        };\r\n        return CounterState;\r\n    }());\r\n    var ROMAN_UPPER = {\r\n        integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\r\n        values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\r\n    };\r\n    var ARMENIAN = {\r\n        integers: [\r\n            9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70,\r\n            60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\r\n        ],\r\n        values: [\r\n            'Ք',\r\n            'Փ',\r\n            'Ւ',\r\n            'Ց',\r\n            'Ր',\r\n            'Տ',\r\n            'Վ',\r\n            'Ս',\r\n            'Ռ',\r\n            'Ջ',\r\n            'Պ',\r\n            'Չ',\r\n            'Ո',\r\n            'Շ',\r\n            'Ն',\r\n            'Յ',\r\n            'Մ',\r\n            'Ճ',\r\n            'Ղ',\r\n            'Ձ',\r\n            'Հ',\r\n            'Կ',\r\n            'Ծ',\r\n            'Խ',\r\n            'Լ',\r\n            'Ի',\r\n            'Ժ',\r\n            'Թ',\r\n            'Ը',\r\n            'Է',\r\n            'Զ',\r\n            'Ե',\r\n            'Դ',\r\n            'Գ',\r\n            'Բ',\r\n            'Ա'\r\n        ]\r\n    };\r\n    var HEBREW = {\r\n        integers: [\r\n            10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,\r\n            19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\r\n        ],\r\n        values: [\r\n            'י׳',\r\n            'ט׳',\r\n            'ח׳',\r\n            'ז׳',\r\n            'ו׳',\r\n            'ה׳',\r\n            'ד׳',\r\n            'ג׳',\r\n            'ב׳',\r\n            'א׳',\r\n            'ת',\r\n            'ש',\r\n            'ר',\r\n            'ק',\r\n            'צ',\r\n            'פ',\r\n            'ע',\r\n            'ס',\r\n            'נ',\r\n            'מ',\r\n            'ל',\r\n            'כ',\r\n            'יט',\r\n            'יח',\r\n            'יז',\r\n            'טז',\r\n            'טו',\r\n            'י',\r\n            'ט',\r\n            'ח',\r\n            'ז',\r\n            'ו',\r\n            'ה',\r\n            'ד',\r\n            'ג',\r\n            'ב',\r\n            'א'\r\n        ]\r\n    };\r\n    var GEORGIAN = {\r\n        integers: [\r\n            10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90,\r\n            80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\r\n        ],\r\n        values: [\r\n            'ჵ',\r\n            'ჰ',\r\n            'ჯ',\r\n            'ჴ',\r\n            'ხ',\r\n            'ჭ',\r\n            'წ',\r\n            'ძ',\r\n            'ც',\r\n            'ჩ',\r\n            'შ',\r\n            'ყ',\r\n            'ღ',\r\n            'ქ',\r\n            'ფ',\r\n            'ჳ',\r\n            'ტ',\r\n            'ს',\r\n            'რ',\r\n            'ჟ',\r\n            'პ',\r\n            'ო',\r\n            'ჲ',\r\n            'ნ',\r\n            'მ',\r\n            'ლ',\r\n            'კ',\r\n            'ი',\r\n            'თ',\r\n            'ჱ',\r\n            'ზ',\r\n            'ვ',\r\n            'ე',\r\n            'დ',\r\n            'გ',\r\n            'ბ',\r\n            'ა'\r\n        ]\r\n    };\r\n    var createAdditiveCounter = function (value, min, max, symbols, fallback, suffix) {\r\n        if (value < min || value > max) {\r\n            return createCounterText(value, fallback, suffix.length > 0);\r\n        }\r\n        return (symbols.integers.reduce(function (string, integer, index) {\r\n            while (value >= integer) {\r\n                value -= integer;\r\n                string += symbols.values[index];\r\n            }\r\n            return string;\r\n        }, '') + suffix);\r\n    };\r\n    var createCounterStyleWithSymbolResolver = function (value, codePointRangeLength, isNumeric, resolver) {\r\n        var string = '';\r\n        do {\r\n            if (!isNumeric) {\r\n                value--;\r\n            }\r\n            string = resolver(value) + string;\r\n            value /= codePointRangeLength;\r\n        } while (value * codePointRangeLength >= codePointRangeLength);\r\n        return string;\r\n    };\r\n    var createCounterStyleFromRange = function (value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) {\r\n        var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\r\n        return ((value < 0 ? '-' : '') +\r\n            (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function (codePoint) {\r\n                return fromCodePoint$1(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);\r\n            }) +\r\n                suffix));\r\n    };\r\n    var createCounterStyleFromSymbols = function (value, symbols, suffix) {\r\n        if (suffix === void 0) { suffix = '. '; }\r\n        var codePointRangeLength = symbols.length;\r\n        return (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function (codePoint) { return symbols[Math.floor(codePoint % codePointRangeLength)]; }) + suffix);\r\n    };\r\n    var CJK_ZEROS = 1 << 0;\r\n    var CJK_TEN_COEFFICIENTS = 1 << 1;\r\n    var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\r\n    var CJK_HUNDRED_COEFFICIENTS = 1 << 3;\r\n    var createCJKCounter = function (value, numbers, multipliers, negativeSign, suffix, flags) {\r\n        if (value < -9999 || value > 9999) {\r\n            return createCounterText(value, 4 /* CJK_DECIMAL */, suffix.length > 0);\r\n        }\r\n        var tmp = Math.abs(value);\r\n        var string = suffix;\r\n        if (tmp === 0) {\r\n            return numbers[0] + string;\r\n        }\r\n        for (var digit = 0; tmp > 0 && digit <= 4; digit++) {\r\n            var coefficient = tmp % 10;\r\n            if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\r\n                string = numbers[coefficient] + string;\r\n            }\r\n            else if (coefficient > 1 ||\r\n                (coefficient === 1 && digit === 0) ||\r\n                (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||\r\n                (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||\r\n                (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))) {\r\n                string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\r\n            }\r\n            else if (coefficient === 1 && digit > 0) {\r\n                string = multipliers[digit - 1] + string;\r\n            }\r\n            tmp = Math.floor(tmp / 10);\r\n        }\r\n        return (value < 0 ? negativeSign : '') + string;\r\n    };\r\n    var CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\r\n    var CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\r\n    var JAPANESE_NEGATIVE = 'マイナス';\r\n    var KOREAN_NEGATIVE = '마이너스';\r\n    var createCounterText = function (value, type, appendSuffix) {\r\n        var defaultSuffix = appendSuffix ? '. ' : '';\r\n        var cjkSuffix = appendSuffix ? '、' : '';\r\n        var koreanSuffix = appendSuffix ? ', ' : '';\r\n        var spaceSuffix = appendSuffix ? ' ' : '';\r\n        switch (type) {\r\n            case 0 /* DISC */:\r\n                return '•' + spaceSuffix;\r\n            case 1 /* CIRCLE */:\r\n                return '◦' + spaceSuffix;\r\n            case 2 /* SQUARE */:\r\n                return '◾' + spaceSuffix;\r\n            case 5 /* DECIMAL_LEADING_ZERO */:\r\n                var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\r\n                return string.length < 4 ? \"0\" + string : string;\r\n            case 4 /* CJK_DECIMAL */:\r\n                return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\r\n            case 6 /* LOWER_ROMAN */:\r\n                return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix).toLowerCase();\r\n            case 7 /* UPPER_ROMAN */:\r\n                return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix);\r\n            case 8 /* LOWER_GREEK */:\r\n                return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\r\n            case 9 /* LOWER_ALPHA */:\r\n                return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\r\n            case 10 /* UPPER_ALPHA */:\r\n                return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\r\n            case 11 /* ARABIC_INDIC */:\r\n                return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\r\n            case 12 /* ARMENIAN */:\r\n            case 49 /* UPPER_ARMENIAN */:\r\n                return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix);\r\n            case 35 /* LOWER_ARMENIAN */:\r\n                return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix).toLowerCase();\r\n            case 13 /* BENGALI */:\r\n                return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\r\n            case 14 /* CAMBODIAN */:\r\n            case 30 /* KHMER */:\r\n                return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\r\n            case 15 /* CJK_EARTHLY_BRANCH */:\r\n                return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\r\n            case 16 /* CJK_HEAVENLY_STEM */:\r\n                return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\r\n            case 17 /* CJK_IDEOGRAPHIC */:\r\n            case 48 /* TRAD_CHINESE_INFORMAL */:\r\n                return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\r\n            case 47 /* TRAD_CHINESE_FORMAL */:\r\n                return createCJKCounter(value, '零壹貳參肆伍陸柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\r\n            case 42 /* SIMP_CHINESE_INFORMAL */:\r\n                return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\r\n            case 41 /* SIMP_CHINESE_FORMAL */:\r\n                return createCJKCounter(value, '零壹贰叁肆伍陆柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\r\n            case 26 /* JAPANESE_INFORMAL */:\r\n                return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\r\n            case 25 /* JAPANESE_FORMAL */:\r\n                return createCJKCounter(value, '零壱弐参四伍六七八九', '拾百千万', JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\r\n            case 31 /* KOREAN_HANGUL_FORMAL */:\r\n                return createCJKCounter(value, '영일이삼사오육칠팔구', '십백천만', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\r\n            case 33 /* KOREAN_HANJA_INFORMAL */:\r\n                return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\r\n            case 32 /* KOREAN_HANJA_FORMAL */:\r\n                return createCJKCounter(value, '零壹貳參四五六七八九', '拾百千', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\r\n            case 18 /* DEVANAGARI */:\r\n                return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\r\n            case 20 /* GEORGIAN */:\r\n                return createAdditiveCounter(value, 1, 19999, GEORGIAN, 3 /* DECIMAL */, defaultSuffix);\r\n            case 21 /* GUJARATI */:\r\n                return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\r\n            case 22 /* GURMUKHI */:\r\n                return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\r\n            case 22 /* HEBREW */:\r\n                return createAdditiveCounter(value, 1, 10999, HEBREW, 3 /* DECIMAL */, defaultSuffix);\r\n            case 23 /* HIRAGANA */:\r\n                return createCounterStyleFromSymbols(value, 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん');\r\n            case 24 /* HIRAGANA_IROHA */:\r\n                return createCounterStyleFromSymbols(value, 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす');\r\n            case 27 /* KANNADA */:\r\n                return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\r\n            case 28 /* KATAKANA */:\r\n                return createCounterStyleFromSymbols(value, 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン', cjkSuffix);\r\n            case 29 /* KATAKANA_IROHA */:\r\n                return createCounterStyleFromSymbols(value, 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス', cjkSuffix);\r\n            case 34 /* LAO */:\r\n                return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\r\n            case 37 /* MONGOLIAN */:\r\n                return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\r\n            case 38 /* MYANMAR */:\r\n                return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\r\n            case 39 /* ORIYA */:\r\n                return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\r\n            case 40 /* PERSIAN */:\r\n                return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\r\n            case 43 /* TAMIL */:\r\n                return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\r\n            case 44 /* TELUGU */:\r\n                return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\r\n            case 45 /* THAI */:\r\n                return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\r\n            case 46 /* TIBETAN */:\r\n                return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\r\n            case 3 /* DECIMAL */:\r\n            default:\r\n                return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\r\n        }\r\n    };\r\n\r\n    var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\r\n    var DocumentCloner = /** @class */ (function () {\r\n        function DocumentCloner(context, element, options) {\r\n            this.context = context;\r\n            this.options = options;\r\n            this.scrolledElements = [];\r\n            this.referenceElement = element;\r\n            this.counters = new CounterState();\r\n            this.quoteDepth = 0;\r\n            if (!element.ownerDocument) {\r\n                throw new Error('Cloned element does not have an owner document');\r\n            }\r\n            this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false);\r\n        }\r\n        DocumentCloner.prototype.toIFrame = function (ownerDocument, windowSize) {\r\n            var _this = this;\r\n            var iframe = createIFrameContainer(ownerDocument, windowSize);\r\n            if (!iframe.contentWindow) {\r\n                return Promise.reject(\"Unable to find iframe window\");\r\n            }\r\n            var scrollX = ownerDocument.defaultView.pageXOffset;\r\n            var scrollY = ownerDocument.defaultView.pageYOffset;\r\n            var cloneWindow = iframe.contentWindow;\r\n            var documentClone = cloneWindow.document;\r\n            /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle\r\n             if window url is about:blank, we can assign the url to current by writing onto the document\r\n             */\r\n            var iframeLoad = iframeLoader(iframe).then(function () { return __awaiter(_this, void 0, void 0, function () {\r\n                var onclone, referenceElement;\r\n                return __generator(this, function (_a) {\r\n                    switch (_a.label) {\r\n                        case 0:\r\n                            this.scrolledElements.forEach(restoreNodeScroll);\r\n                            if (cloneWindow) {\r\n                                cloneWindow.scrollTo(windowSize.left, windowSize.top);\r\n                                if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&\r\n                                    (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)) {\r\n                                    this.context.logger.warn('Unable to restore scroll position for cloned document');\r\n                                    this.context.windowBounds = this.context.windowBounds.add(cloneWindow.scrollX - windowSize.left, cloneWindow.scrollY - windowSize.top, 0, 0);\r\n                                }\r\n                            }\r\n                            onclone = this.options.onclone;\r\n                            referenceElement = this.clonedReferenceElement;\r\n                            if (typeof referenceElement === 'undefined') {\r\n                                return [2 /*return*/, Promise.reject(\"Error finding the \" + this.referenceElement.nodeName + \" in the cloned document\")];\r\n                            }\r\n                            if (!(documentClone.fonts && documentClone.fonts.ready)) return [3 /*break*/, 2];\r\n                            return [4 /*yield*/, documentClone.fonts.ready];\r\n                        case 1:\r\n                            _a.sent();\r\n                            _a.label = 2;\r\n                        case 2:\r\n                            if (!/(AppleWebKit)/g.test(navigator.userAgent)) return [3 /*break*/, 4];\r\n                            return [4 /*yield*/, imagesReady(documentClone)];\r\n                        case 3:\r\n                            _a.sent();\r\n                            _a.label = 4;\r\n                        case 4:\r\n                            if (typeof onclone === 'function') {\r\n                                return [2 /*return*/, Promise.resolve()\r\n                                        .then(function () { return onclone(documentClone, referenceElement); })\r\n                                        .then(function () { return iframe; })];\r\n                            }\r\n                            return [2 /*return*/, iframe];\r\n                    }\r\n                });\r\n            }); });\r\n            documentClone.open();\r\n            documentClone.write(serializeDoctype(document.doctype) + \"<html></html>\");\r\n            // Chrome scrolls the parent document for some reason after the write to the cloned window???\r\n            restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);\r\n            documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement);\r\n            documentClone.close();\r\n            return iframeLoad;\r\n        };\r\n        DocumentCloner.prototype.createElementClone = function (node) {\r\n            if (isDebugging(node, 2 /* CLONE */)) {\r\n                debugger;\r\n            }\r\n            if (isCanvasElement(node)) {\r\n                return this.createCanvasClone(node);\r\n            }\r\n            if (isVideoElement(node)) {\r\n                return this.createVideoClone(node);\r\n            }\r\n            if (isStyleElement(node)) {\r\n                return this.createStyleClone(node);\r\n            }\r\n            var clone = node.cloneNode(false);\r\n            if (isImageElement(clone)) {\r\n                if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {\r\n                    clone.src = node.currentSrc;\r\n                    clone.srcset = '';\r\n                }\r\n                if (clone.loading === 'lazy') {\r\n                    clone.loading = 'eager';\r\n                }\r\n            }\r\n            if (isCustomElement(clone)) {\r\n                return this.createCustomElementClone(clone);\r\n            }\r\n            return clone;\r\n        };\r\n        DocumentCloner.prototype.createCustomElementClone = function (node) {\r\n            var clone = document.createElement('html2canvascustomelement');\r\n            copyCSSStyles(node.style, clone);\r\n            return clone;\r\n        };\r\n        DocumentCloner.prototype.createStyleClone = function (node) {\r\n            try {\r\n                var sheet = node.sheet;\r\n                if (sheet && sheet.cssRules) {\r\n                    var css = [].slice.call(sheet.cssRules, 0).reduce(function (css, rule) {\r\n                        if (rule && typeof rule.cssText === 'string') {\r\n                            return css + rule.cssText;\r\n                        }\r\n                        return css;\r\n                    }, '');\r\n                    var style = node.cloneNode(false);\r\n                    style.textContent = css;\r\n                    return style;\r\n                }\r\n            }\r\n            catch (e) {\r\n                // accessing node.sheet.cssRules throws a DOMException\r\n                this.context.logger.error('Unable to access cssRules property', e);\r\n                if (e.name !== 'SecurityError') {\r\n                    throw e;\r\n                }\r\n            }\r\n            return node.cloneNode(false);\r\n        };\r\n        DocumentCloner.prototype.createCanvasClone = function (canvas) {\r\n            var _a;\r\n            if (this.options.inlineImages && canvas.ownerDocument) {\r\n                var img = canvas.ownerDocument.createElement('img');\r\n                try {\r\n                    img.src = canvas.toDataURL();\r\n                    return img;\r\n                }\r\n                catch (e) {\r\n                    this.context.logger.info(\"Unable to inline canvas contents, canvas is tainted\", canvas);\r\n                }\r\n            }\r\n            var clonedCanvas = canvas.cloneNode(false);\r\n            try {\r\n                clonedCanvas.width = canvas.width;\r\n                clonedCanvas.height = canvas.height;\r\n                var ctx = canvas.getContext('2d');\r\n                var clonedCtx = clonedCanvas.getContext('2d');\r\n                if (clonedCtx) {\r\n                    if (!this.options.allowTaint && ctx) {\r\n                        clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);\r\n                    }\r\n                    else {\r\n                        var gl = (_a = canvas.getContext('webgl2')) !== null && _a !== void 0 ? _a : canvas.getContext('webgl');\r\n                        if (gl) {\r\n                            var attribs = gl.getContextAttributes();\r\n                            if ((attribs === null || attribs === void 0 ? void 0 : attribs.preserveDrawingBuffer) === false) {\r\n                                this.context.logger.warn('Unable to clone WebGL context as it has preserveDrawingBuffer=false', canvas);\r\n                            }\r\n                        }\r\n                        clonedCtx.drawImage(canvas, 0, 0);\r\n                    }\r\n                }\r\n                return clonedCanvas;\r\n            }\r\n            catch (e) {\r\n                this.context.logger.info(\"Unable to clone canvas as it is tainted\", canvas);\r\n            }\r\n            return clonedCanvas;\r\n        };\r\n        DocumentCloner.prototype.createVideoClone = function (video) {\r\n            var canvas = video.ownerDocument.createElement('canvas');\r\n            canvas.width = video.offsetWidth;\r\n            canvas.height = video.offsetHeight;\r\n            var ctx = canvas.getContext('2d');\r\n            try {\r\n                if (ctx) {\r\n                    ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n                    if (!this.options.allowTaint) {\r\n                        ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n                    }\r\n                }\r\n                return canvas;\r\n            }\r\n            catch (e) {\r\n                this.context.logger.info(\"Unable to clone video as it is tainted\", video);\r\n            }\r\n            var blankCanvas = video.ownerDocument.createElement('canvas');\r\n            blankCanvas.width = video.offsetWidth;\r\n            blankCanvas.height = video.offsetHeight;\r\n            return blankCanvas;\r\n        };\r\n        DocumentCloner.prototype.appendChildNode = function (clone, child, copyStyles) {\r\n            if (!isElementNode(child) ||\r\n                (!isScriptElement(child) &&\r\n                    !child.hasAttribute(IGNORE_ATTRIBUTE) &&\r\n                    (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))) {\r\n                if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {\r\n                    clone.appendChild(this.cloneNode(child, copyStyles));\r\n                }\r\n            }\r\n        };\r\n        DocumentCloner.prototype.cloneChildNodes = function (node, clone, copyStyles) {\r\n            var _this = this;\r\n            for (var child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild; child; child = child.nextSibling) {\r\n                if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === 'function') {\r\n                    var assignedNodes = child.assignedNodes();\r\n                    if (assignedNodes.length) {\r\n                        assignedNodes.forEach(function (assignedNode) { return _this.appendChildNode(clone, assignedNode, copyStyles); });\r\n                    }\r\n                }\r\n                else {\r\n                    this.appendChildNode(clone, child, copyStyles);\r\n                }\r\n            }\r\n        };\r\n        DocumentCloner.prototype.cloneNode = function (node, copyStyles) {\r\n            if (isTextNode(node)) {\r\n                return document.createTextNode(node.data);\r\n            }\r\n            if (!node.ownerDocument) {\r\n                return node.cloneNode(false);\r\n            }\r\n            var window = node.ownerDocument.defaultView;\r\n            if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {\r\n                var clone = this.createElementClone(node);\r\n                clone.style.transitionProperty = 'none';\r\n                var style = window.getComputedStyle(node);\r\n                var styleBefore = window.getComputedStyle(node, ':before');\r\n                var styleAfter = window.getComputedStyle(node, ':after');\r\n                if (this.referenceElement === node && isHTMLElementNode(clone)) {\r\n                    this.clonedReferenceElement = clone;\r\n                }\r\n                if (isBodyElement(clone)) {\r\n                    createPseudoHideStyles(clone);\r\n                }\r\n                var counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\r\n                var before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);\r\n                if (isCustomElement(node)) {\r\n                    copyStyles = true;\r\n                }\r\n                if (!isVideoElement(node)) {\r\n                    this.cloneChildNodes(node, clone, copyStyles);\r\n                }\r\n                if (before) {\r\n                    clone.insertBefore(before, clone.firstChild);\r\n                }\r\n                var after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);\r\n                if (after) {\r\n                    clone.appendChild(after);\r\n                }\r\n                this.counters.pop(counters);\r\n                if ((style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) ||\r\n                    copyStyles) {\r\n                    copyCSSStyles(style, clone);\r\n                }\r\n                if (node.scrollTop !== 0 || node.scrollLeft !== 0) {\r\n                    this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);\r\n                }\r\n                if ((isTextareaElement(node) || isSelectElement(node)) &&\r\n                    (isTextareaElement(clone) || isSelectElement(clone))) {\r\n                    clone.value = node.value;\r\n                }\r\n                return clone;\r\n            }\r\n            return node.cloneNode(false);\r\n        };\r\n        DocumentCloner.prototype.resolvePseudoContent = function (node, clone, style, pseudoElt) {\r\n            var _this = this;\r\n            if (!style) {\r\n                return;\r\n            }\r\n            var value = style.content;\r\n            var document = clone.ownerDocument;\r\n            if (!document || !value || value === 'none' || value === '-moz-alt-content' || style.display === 'none') {\r\n                return;\r\n            }\r\n            this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\r\n            var declaration = new CSSParsedPseudoDeclaration(this.context, style);\r\n            var anonymousReplacedElement = document.createElement('html2canvaspseudoelement');\r\n            copyCSSStyles(style, anonymousReplacedElement);\r\n            declaration.content.forEach(function (token) {\r\n                if (token.type === 0 /* STRING_TOKEN */) {\r\n                    anonymousReplacedElement.appendChild(document.createTextNode(token.value));\r\n                }\r\n                else if (token.type === 22 /* URL_TOKEN */) {\r\n                    var img = document.createElement('img');\r\n                    img.src = token.value;\r\n                    img.style.opacity = '1';\r\n                    anonymousReplacedElement.appendChild(img);\r\n                }\r\n                else if (token.type === 18 /* FUNCTION */) {\r\n                    if (token.name === 'attr') {\r\n                        var attr = token.values.filter(isIdentToken);\r\n                        if (attr.length) {\r\n                            anonymousReplacedElement.appendChild(document.createTextNode(node.getAttribute(attr[0].value) || ''));\r\n                        }\r\n                    }\r\n                    else if (token.name === 'counter') {\r\n                        var _a = token.values.filter(nonFunctionArgSeparator), counter = _a[0], counterStyle = _a[1];\r\n                        if (counter && isIdentToken(counter)) {\r\n                            var counterState = _this.counters.getCounterValue(counter.value);\r\n                            var counterType = counterStyle && isIdentToken(counterStyle)\r\n                                ? listStyleType.parse(_this.context, counterStyle.value)\r\n                                : 3 /* DECIMAL */;\r\n                            anonymousReplacedElement.appendChild(document.createTextNode(createCounterText(counterState, counterType, false)));\r\n                        }\r\n                    }\r\n                    else if (token.name === 'counters') {\r\n                        var _b = token.values.filter(nonFunctionArgSeparator), counter = _b[0], delim = _b[1], counterStyle = _b[2];\r\n                        if (counter && isIdentToken(counter)) {\r\n                            var counterStates = _this.counters.getCounterValues(counter.value);\r\n                            var counterType_1 = counterStyle && isIdentToken(counterStyle)\r\n                                ? listStyleType.parse(_this.context, counterStyle.value)\r\n                                : 3 /* DECIMAL */;\r\n                            var separator = delim && delim.type === 0 /* STRING_TOKEN */ ? delim.value : '';\r\n                            var text = counterStates\r\n                                .map(function (value) { return createCounterText(value, counterType_1, false); })\r\n                                .join(separator);\r\n                            anonymousReplacedElement.appendChild(document.createTextNode(text));\r\n                        }\r\n                    }\r\n                    else ;\r\n                }\r\n                else if (token.type === 20 /* IDENT_TOKEN */) {\r\n                    switch (token.value) {\r\n                        case 'open-quote':\r\n                            anonymousReplacedElement.appendChild(document.createTextNode(getQuote(declaration.quotes, _this.quoteDepth++, true)));\r\n                            break;\r\n                        case 'close-quote':\r\n                            anonymousReplacedElement.appendChild(document.createTextNode(getQuote(declaration.quotes, --_this.quoteDepth, false)));\r\n                            break;\r\n                        default:\r\n                            // safari doesn't parse string tokens correctly because of lack of quotes\r\n                            anonymousReplacedElement.appendChild(document.createTextNode(token.value));\r\n                    }\r\n                }\r\n            });\r\n            anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + \" \" + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\r\n            var newClassName = pseudoElt === PseudoElementType.BEFORE\r\n                ? \" \" + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE\r\n                : \" \" + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\r\n            if (isSVGElementNode(clone)) {\r\n                clone.className.baseValue += newClassName;\r\n            }\r\n            else {\r\n                clone.className += newClassName;\r\n            }\r\n            return anonymousReplacedElement;\r\n        };\r\n        DocumentCloner.destroy = function (container) {\r\n            if (container.parentNode) {\r\n                container.parentNode.removeChild(container);\r\n                return true;\r\n            }\r\n            return false;\r\n        };\r\n        return DocumentCloner;\r\n    }());\r\n    var PseudoElementType;\r\n    (function (PseudoElementType) {\r\n        PseudoElementType[PseudoElementType[\"BEFORE\"] = 0] = \"BEFORE\";\r\n        PseudoElementType[PseudoElementType[\"AFTER\"] = 1] = \"AFTER\";\r\n    })(PseudoElementType || (PseudoElementType = {}));\r\n    var createIFrameContainer = function (ownerDocument, bounds) {\r\n        var cloneIframeContainer = ownerDocument.createElement('iframe');\r\n        cloneIframeContainer.className = 'html2canvas-container';\r\n        cloneIframeContainer.style.visibility = 'hidden';\r\n        cloneIframeContainer.style.position = 'fixed';\r\n        cloneIframeContainer.style.left = '-10000px';\r\n        cloneIframeContainer.style.top = '0px';\r\n        cloneIframeContainer.style.border = '0';\r\n        cloneIframeContainer.width = bounds.width.toString();\r\n        cloneIframeContainer.height = bounds.height.toString();\r\n        cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it\r\n        cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');\r\n        ownerDocument.body.appendChild(cloneIframeContainer);\r\n        return cloneIframeContainer;\r\n    };\r\n    var imageReady = function (img) {\r\n        return new Promise(function (resolve) {\r\n            if (img.complete) {\r\n                resolve();\r\n                return;\r\n            }\r\n            if (!img.src) {\r\n                resolve();\r\n                return;\r\n            }\r\n            img.onload = resolve;\r\n            img.onerror = resolve;\r\n        });\r\n    };\r\n    var imagesReady = function (document) {\r\n        return Promise.all([].slice.call(document.images, 0).map(imageReady));\r\n    };\r\n    var iframeLoader = function (iframe) {\r\n        return new Promise(function (resolve, reject) {\r\n            var cloneWindow = iframe.contentWindow;\r\n            if (!cloneWindow) {\r\n                return reject(\"No window assigned for iframe\");\r\n            }\r\n            var documentClone = cloneWindow.document;\r\n            cloneWindow.onload = iframe.onload = function () {\r\n                cloneWindow.onload = iframe.onload = null;\r\n                var interval = setInterval(function () {\r\n                    if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {\r\n                        clearInterval(interval);\r\n                        resolve(iframe);\r\n                    }\r\n                }, 50);\r\n            };\r\n        });\r\n    };\r\n    var ignoredStyleProperties = [\r\n        'all',\r\n        'd',\r\n        'content' // Safari shows pseudoelements if content is set\r\n    ];\r\n    var copyCSSStyles = function (style, target) {\r\n        // Edge does not provide value for cssText\r\n        for (var i = style.length - 1; i >= 0; i--) {\r\n            var property = style.item(i);\r\n            if (ignoredStyleProperties.indexOf(property) === -1) {\r\n                target.style.setProperty(property, style.getPropertyValue(property));\r\n            }\r\n        }\r\n        return target;\r\n    };\r\n    var serializeDoctype = function (doctype) {\r\n        var str = '';\r\n        if (doctype) {\r\n            str += '<!DOCTYPE ';\r\n            if (doctype.name) {\r\n                str += doctype.name;\r\n            }\r\n            if (doctype.internalSubset) {\r\n                str += doctype.internalSubset;\r\n            }\r\n            if (doctype.publicId) {\r\n                str += \"\\\"\" + doctype.publicId + \"\\\"\";\r\n            }\r\n            if (doctype.systemId) {\r\n                str += \"\\\"\" + doctype.systemId + \"\\\"\";\r\n            }\r\n            str += '>';\r\n        }\r\n        return str;\r\n    };\r\n    var restoreOwnerScroll = function (ownerDocument, x, y) {\r\n        if (ownerDocument &&\r\n            ownerDocument.defaultView &&\r\n            (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) {\r\n            ownerDocument.defaultView.scrollTo(x, y);\r\n        }\r\n    };\r\n    var restoreNodeScroll = function (_a) {\r\n        var element = _a[0], x = _a[1], y = _a[2];\r\n        element.scrollLeft = x;\r\n        element.scrollTop = y;\r\n    };\r\n    var PSEUDO_BEFORE = ':before';\r\n    var PSEUDO_AFTER = ':after';\r\n    var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';\r\n    var PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';\r\n    var PSEUDO_HIDE_ELEMENT_STYLE = \"{\\n    content: \\\"\\\" !important;\\n    display: none !important;\\n}\";\r\n    var createPseudoHideStyles = function (body) {\r\n        createStyles(body, \".\" + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + PSEUDO_BEFORE + PSEUDO_HIDE_ELEMENT_STYLE + \"\\n         .\" + PSEUDO_HIDE_ELEMENT_CLASS_AFTER + PSEUDO_AFTER + PSEUDO_HIDE_ELEMENT_STYLE);\r\n    };\r\n    var createStyles = function (body, styles) {\r\n        var document = body.ownerDocument;\r\n        if (document) {\r\n            var style = document.createElement('style');\r\n            style.textContent = styles;\r\n            body.appendChild(style);\r\n        }\r\n    };\r\n\r\n    var CacheStorage = /** @class */ (function () {\r\n        function CacheStorage() {\r\n        }\r\n        CacheStorage.getOrigin = function (url) {\r\n            var link = CacheStorage._link;\r\n            if (!link) {\r\n                return 'about:blank';\r\n            }\r\n            link.href = url;\r\n            link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\r\n            return link.protocol + link.hostname + link.port;\r\n        };\r\n        CacheStorage.isSameOrigin = function (src) {\r\n            return CacheStorage.getOrigin(src) === CacheStorage._origin;\r\n        };\r\n        CacheStorage.setContext = function (window) {\r\n            CacheStorage._link = window.document.createElement('a');\r\n            CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\r\n        };\r\n        CacheStorage._origin = 'about:blank';\r\n        return CacheStorage;\r\n    }());\r\n    var Cache = /** @class */ (function () {\r\n        function Cache(context, _options) {\r\n            this.context = context;\r\n            this._options = _options;\r\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n            this._cache = {};\r\n        }\r\n        Cache.prototype.addImage = function (src) {\r\n            var result = Promise.resolve();\r\n            if (this.has(src)) {\r\n                return result;\r\n            }\r\n            if (isBlobImage(src) || isRenderable(src)) {\r\n                (this._cache[src] = this.loadImage(src)).catch(function () {\r\n                    // prevent unhandled rejection\r\n                });\r\n                return result;\r\n            }\r\n            return result;\r\n        };\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        Cache.prototype.match = function (src) {\r\n            return this._cache[src];\r\n        };\r\n        Cache.prototype.loadImage = function (key) {\r\n            return __awaiter(this, void 0, void 0, function () {\r\n                var isSameOrigin, useCORS, useProxy, src;\r\n                var _this = this;\r\n                return __generator(this, function (_a) {\r\n                    switch (_a.label) {\r\n                        case 0:\r\n                            isSameOrigin = CacheStorage.isSameOrigin(key);\r\n                            useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\r\n                            useProxy = !isInlineImage(key) &&\r\n                                !isSameOrigin &&\r\n                                !isBlobImage(key) &&\r\n                                typeof this._options.proxy === 'string' &&\r\n                                FEATURES.SUPPORT_CORS_XHR &&\r\n                                !useCORS;\r\n                            if (!isSameOrigin &&\r\n                                this._options.allowTaint === false &&\r\n                                !isInlineImage(key) &&\r\n                                !isBlobImage(key) &&\r\n                                !useProxy &&\r\n                                !useCORS) {\r\n                                return [2 /*return*/];\r\n                            }\r\n                            src = key;\r\n                            if (!useProxy) return [3 /*break*/, 2];\r\n                            return [4 /*yield*/, this.proxy(src)];\r\n                        case 1:\r\n                            src = _a.sent();\r\n                            _a.label = 2;\r\n                        case 2:\r\n                            this.context.logger.debug(\"Added image \" + key.substring(0, 256));\r\n                            return [4 /*yield*/, new Promise(function (resolve, reject) {\r\n                                    var img = new Image();\r\n                                    img.onload = function () { return resolve(img); };\r\n                                    img.onerror = reject;\r\n                                    //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\r\n                                    if (isInlineBase64Image(src) || useCORS) {\r\n                                        img.crossOrigin = 'anonymous';\r\n                                    }\r\n                                    img.src = src;\r\n                                    if (img.complete === true) {\r\n                                        // Inline XML images may fail to parse, throwing an Error later on\r\n                                        setTimeout(function () { return resolve(img); }, 500);\r\n                                    }\r\n                                    if (_this._options.imageTimeout > 0) {\r\n                                        setTimeout(function () { return reject(\"Timed out (\" + _this._options.imageTimeout + \"ms) loading image\"); }, _this._options.imageTimeout);\r\n                                    }\r\n                                })];\r\n                        case 3: return [2 /*return*/, _a.sent()];\r\n                    }\r\n                });\r\n            });\r\n        };\r\n        Cache.prototype.has = function (key) {\r\n            return typeof this._cache[key] !== 'undefined';\r\n        };\r\n        Cache.prototype.keys = function () {\r\n            return Promise.resolve(Object.keys(this._cache));\r\n        };\r\n        Cache.prototype.proxy = function (src) {\r\n            var _this = this;\r\n            var proxy = this._options.proxy;\r\n            if (!proxy) {\r\n                throw new Error('No proxy defined');\r\n            }\r\n            var key = src.substring(0, 256);\r\n            return new Promise(function (resolve, reject) {\r\n                var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\r\n                var xhr = new XMLHttpRequest();\r\n                xhr.onload = function () {\r\n                    if (xhr.status === 200) {\r\n                        if (responseType === 'text') {\r\n                            resolve(xhr.response);\r\n                        }\r\n                        else {\r\n                            var reader_1 = new FileReader();\r\n                            reader_1.addEventListener('load', function () { return resolve(reader_1.result); }, false);\r\n                            reader_1.addEventListener('error', function (e) { return reject(e); }, false);\r\n                            reader_1.readAsDataURL(xhr.response);\r\n                        }\r\n                    }\r\n                    else {\r\n                        reject(\"Failed to proxy resource \" + key + \" with status code \" + xhr.status);\r\n                    }\r\n                };\r\n                xhr.onerror = reject;\r\n                var queryString = proxy.indexOf('?') > -1 ? '&' : '?';\r\n                xhr.open('GET', \"\" + proxy + queryString + \"url=\" + encodeURIComponent(src) + \"&responseType=\" + responseType);\r\n                if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\r\n                    xhr.responseType = responseType;\r\n                }\r\n                if (_this._options.imageTimeout) {\r\n                    var timeout_1 = _this._options.imageTimeout;\r\n                    xhr.timeout = timeout_1;\r\n                    xhr.ontimeout = function () { return reject(\"Timed out (\" + timeout_1 + \"ms) proxying \" + key); };\r\n                }\r\n                xhr.send();\r\n            });\r\n        };\r\n        return Cache;\r\n    }());\r\n    var INLINE_SVG = /^data:image\\/svg\\+xml/i;\r\n    var INLINE_BASE64 = /^data:image\\/.*;base64,/i;\r\n    var INLINE_IMG = /^data:image\\/.*/i;\r\n    var isRenderable = function (src) { return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src); };\r\n    var isInlineImage = function (src) { return INLINE_IMG.test(src); };\r\n    var isInlineBase64Image = function (src) { return INLINE_BASE64.test(src); };\r\n    var isBlobImage = function (src) { return src.substr(0, 4) === 'blob'; };\r\n    var isSVG = function (src) { return src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src); };\r\n\r\n    var Vector = /** @class */ (function () {\r\n        function Vector(x, y) {\r\n            this.type = 0 /* VECTOR */;\r\n            this.x = x;\r\n            this.y = y;\r\n        }\r\n        Vector.prototype.add = function (deltaX, deltaY) {\r\n            return new Vector(this.x + deltaX, this.y + deltaY);\r\n        };\r\n        return Vector;\r\n    }());\r\n\r\n    var lerp = function (a, b, t) {\r\n        return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);\r\n    };\r\n    var BezierCurve = /** @class */ (function () {\r\n        function BezierCurve(start, startControl, endControl, end) {\r\n            this.type = 1 /* BEZIER_CURVE */;\r\n            this.start = start;\r\n            this.startControl = startControl;\r\n            this.endControl = endControl;\r\n            this.end = end;\r\n        }\r\n        BezierCurve.prototype.subdivide = function (t, firstHalf) {\r\n            var ab = lerp(this.start, this.startControl, t);\r\n            var bc = lerp(this.startControl, this.endControl, t);\r\n            var cd = lerp(this.endControl, this.end, t);\r\n            var abbc = lerp(ab, bc, t);\r\n            var bccd = lerp(bc, cd, t);\r\n            var dest = lerp(abbc, bccd, t);\r\n            return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);\r\n        };\r\n        BezierCurve.prototype.add = function (deltaX, deltaY) {\r\n            return new BezierCurve(this.start.add(deltaX, deltaY), this.startControl.add(deltaX, deltaY), this.endControl.add(deltaX, deltaY), this.end.add(deltaX, deltaY));\r\n        };\r\n        BezierCurve.prototype.reverse = function () {\r\n            return new BezierCurve(this.end, this.endControl, this.startControl, this.start);\r\n        };\r\n        return BezierCurve;\r\n    }());\r\n    var isBezierCurve = function (path) { return path.type === 1 /* BEZIER_CURVE */; };\r\n\r\n    var BoundCurves = /** @class */ (function () {\r\n        function BoundCurves(element) {\r\n            var styles = element.styles;\r\n            var bounds = element.bounds;\r\n            var _a = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height), tlh = _a[0], tlv = _a[1];\r\n            var _b = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height), trh = _b[0], trv = _b[1];\r\n            var _c = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height), brh = _c[0], brv = _c[1];\r\n            var _d = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height), blh = _d[0], blv = _d[1];\r\n            var factors = [];\r\n            factors.push((tlh + trh) / bounds.width);\r\n            factors.push((blh + brh) / bounds.width);\r\n            factors.push((tlv + blv) / bounds.height);\r\n            factors.push((trv + brv) / bounds.height);\r\n            var maxFactor = Math.max.apply(Math, factors);\r\n            if (maxFactor > 1) {\r\n                tlh /= maxFactor;\r\n                tlv /= maxFactor;\r\n                trh /= maxFactor;\r\n                trv /= maxFactor;\r\n                brh /= maxFactor;\r\n                brv /= maxFactor;\r\n                blh /= maxFactor;\r\n                blv /= maxFactor;\r\n            }\r\n            var topWidth = bounds.width - trh;\r\n            var rightHeight = bounds.height - brv;\r\n            var bottomWidth = bounds.width - brh;\r\n            var leftHeight = bounds.height - blv;\r\n            var borderTopWidth = styles.borderTopWidth;\r\n            var borderRightWidth = styles.borderRightWidth;\r\n            var borderBottomWidth = styles.borderBottomWidth;\r\n            var borderLeftWidth = styles.borderLeftWidth;\r\n            var paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);\r\n            var paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);\r\n            var paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);\r\n            var paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);\r\n            this.topLeftBorderDoubleOuterBox =\r\n                tlh > 0 || tlv > 0\r\n                    ? getCurvePoints(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3, tlh - borderLeftWidth / 3, tlv - borderTopWidth / 3, CORNER.TOP_LEFT)\r\n                    : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3);\r\n            this.topRightBorderDoubleOuterBox =\r\n                tlh > 0 || tlv > 0\r\n                    ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth / 3, trh - borderRightWidth / 3, trv - borderTopWidth / 3, CORNER.TOP_RIGHT)\r\n                    : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3);\r\n            this.bottomRightBorderDoubleOuterBox =\r\n                brh > 0 || brv > 0\r\n                    ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth / 3, brv - borderBottomWidth / 3, CORNER.BOTTOM_RIGHT)\r\n                    : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\r\n            this.bottomLeftBorderDoubleOuterBox =\r\n                blh > 0 || blv > 0\r\n                    ? getCurvePoints(bounds.left + borderLeftWidth / 3, bounds.top + leftHeight, blh - borderLeftWidth / 3, blv - borderBottomWidth / 3, CORNER.BOTTOM_LEFT)\r\n                    : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\r\n            this.topLeftBorderDoubleInnerBox =\r\n                tlh > 0 || tlv > 0\r\n                    ? getCurvePoints(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3, tlh - (borderLeftWidth * 2) / 3, tlv - (borderTopWidth * 2) / 3, CORNER.TOP_LEFT)\r\n                    : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\r\n            this.topRightBorderDoubleInnerBox =\r\n                tlh > 0 || tlv > 0\r\n                    ? getCurvePoints(bounds.left + topWidth, bounds.top + (borderTopWidth * 2) / 3, trh - (borderRightWidth * 2) / 3, trv - (borderTopWidth * 2) / 3, CORNER.TOP_RIGHT)\r\n                    : new Vector(bounds.left + bounds.width - (borderRightWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\r\n            this.bottomRightBorderDoubleInnerBox =\r\n                brh > 0 || brv > 0\r\n                    ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - (borderRightWidth * 2) / 3, brv - (borderBottomWidth * 2) / 3, CORNER.BOTTOM_RIGHT)\r\n                    : new Vector(bounds.left + bounds.width - (borderRightWidth * 2) / 3, bounds.top + bounds.height - (borderBottomWidth * 2) / 3);\r\n            this.bottomLeftBorderDoubleInnerBox =\r\n                blh > 0 || blv > 0\r\n                    ? getCurvePoints(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + leftHeight, blh - (borderLeftWidth * 2) / 3, blv - (borderBottomWidth * 2) / 3, CORNER.BOTTOM_LEFT)\r\n                    : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + bounds.height - (borderBottomWidth * 2) / 3);\r\n            this.topLeftBorderStroke =\r\n                tlh > 0 || tlv > 0\r\n                    ? getCurvePoints(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2, tlh - borderLeftWidth / 2, tlv - borderTopWidth / 2, CORNER.TOP_LEFT)\r\n                    : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2);\r\n            this.topRightBorderStroke =\r\n                tlh > 0 || tlv > 0\r\n                    ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth / 2, trh - borderRightWidth / 2, trv - borderTopWidth / 2, CORNER.TOP_RIGHT)\r\n                    : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2);\r\n            this.bottomRightBorderStroke =\r\n                brh > 0 || brv > 0\r\n                    ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth / 2, brv - borderBottomWidth / 2, CORNER.BOTTOM_RIGHT)\r\n                    : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\r\n            this.bottomLeftBorderStroke =\r\n                blh > 0 || blv > 0\r\n                    ? getCurvePoints(bounds.left + borderLeftWidth / 2, bounds.top + leftHeight, blh - borderLeftWidth / 2, blv - borderBottomWidth / 2, CORNER.BOTTOM_LEFT)\r\n                    : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\r\n            this.topLeftBorderBox =\r\n                tlh > 0 || tlv > 0\r\n                    ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)\r\n                    : new Vector(bounds.left, bounds.top);\r\n            this.topRightBorderBox =\r\n                trh > 0 || trv > 0\r\n                    ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT)\r\n                    : new Vector(bounds.left + bounds.width, bounds.top);\r\n            this.bottomRightBorderBox =\r\n                brh > 0 || brv > 0\r\n                    ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT)\r\n                    : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);\r\n            this.bottomLeftBorderBox =\r\n                blh > 0 || blv > 0\r\n                    ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT)\r\n                    : new Vector(bounds.left, bounds.top + bounds.height);\r\n            this.topLeftPaddingBox =\r\n                tlh > 0 || tlv > 0\r\n                    ? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + borderTopWidth, Math.max(0, tlh - borderLeftWidth), Math.max(0, tlv - borderTopWidth), CORNER.TOP_LEFT)\r\n                    : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);\r\n            this.topRightPaddingBox =\r\n                trh > 0 || trv > 0\r\n                    ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width - borderRightWidth), bounds.top + borderTopWidth, topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth), Math.max(0, trv - borderTopWidth), CORNER.TOP_RIGHT)\r\n                    : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);\r\n            this.bottomRightPaddingBox =\r\n                brh > 0 || brv > 0\r\n                    ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth), bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth), Math.max(0, brh - borderRightWidth), Math.max(0, brv - borderBottomWidth), CORNER.BOTTOM_RIGHT)\r\n                    : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + bounds.height - borderBottomWidth);\r\n            this.bottomLeftPaddingBox =\r\n                blh > 0 || blv > 0\r\n                    ? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth), Math.max(0, blh - borderLeftWidth), Math.max(0, blv - borderBottomWidth), CORNER.BOTTOM_LEFT)\r\n                    : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);\r\n            this.topLeftContentBox =\r\n                tlh > 0 || tlv > 0\r\n                    ? getCurvePoints(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop, Math.max(0, tlh - (borderLeftWidth + paddingLeft)), Math.max(0, tlv - (borderTopWidth + paddingTop)), CORNER.TOP_LEFT)\r\n                    : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);\r\n            this.topRightContentBox =\r\n                trh > 0 || trv > 0\r\n                    ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft), bounds.top + borderTopWidth + paddingTop, topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft, trv - (borderTopWidth + paddingTop), CORNER.TOP_RIGHT)\r\n                    : new Vector(bounds.left + bounds.width - (borderRightWidth + paddingRight), bounds.top + borderTopWidth + paddingTop);\r\n            this.bottomRightContentBox =\r\n                brh > 0 || brv > 0\r\n                    ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)), bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop), Math.max(0, brh - (borderRightWidth + paddingRight)), brv - (borderBottomWidth + paddingBottom), CORNER.BOTTOM_RIGHT)\r\n                    : new Vector(bounds.left + bounds.width - (borderRightWidth + paddingRight), bounds.top + bounds.height - (borderBottomWidth + paddingBottom));\r\n            this.bottomLeftContentBox =\r\n                blh > 0 || blv > 0\r\n                    ? getCurvePoints(bounds.left + borderLeftWidth + paddingLeft, bounds.top + leftHeight, Math.max(0, blh - (borderLeftWidth + paddingLeft)), blv - (borderBottomWidth + paddingBottom), CORNER.BOTTOM_LEFT)\r\n                    : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + bounds.height - (borderBottomWidth + paddingBottom));\r\n        }\r\n        return BoundCurves;\r\n    }());\r\n    var CORNER;\r\n    (function (CORNER) {\r\n        CORNER[CORNER[\"TOP_LEFT\"] = 0] = \"TOP_LEFT\";\r\n        CORNER[CORNER[\"TOP_RIGHT\"] = 1] = \"TOP_RIGHT\";\r\n        CORNER[CORNER[\"BOTTOM_RIGHT\"] = 2] = \"BOTTOM_RIGHT\";\r\n        CORNER[CORNER[\"BOTTOM_LEFT\"] = 3] = \"BOTTOM_LEFT\";\r\n    })(CORNER || (CORNER = {}));\r\n    var getCurvePoints = function (x, y, r1, r2, position) {\r\n        var kappa = 4 * ((Math.sqrt(2) - 1) / 3);\r\n        var ox = r1 * kappa; // control point offset horizontal\r\n        var oy = r2 * kappa; // control point offset vertical\r\n        var xm = x + r1; // x-middle\r\n        var ym = y + r2; // y-middle\r\n        switch (position) {\r\n            case CORNER.TOP_LEFT:\r\n                return new BezierCurve(new Vector(x, ym), new Vector(x, ym - oy), new Vector(xm - ox, y), new Vector(xm, y));\r\n            case CORNER.TOP_RIGHT:\r\n                return new BezierCurve(new Vector(x, y), new Vector(x + ox, y), new Vector(xm, ym - oy), new Vector(xm, ym));\r\n            case CORNER.BOTTOM_RIGHT:\r\n                return new BezierCurve(new Vector(xm, y), new Vector(xm, y + oy), new Vector(x + ox, ym), new Vector(x, ym));\r\n            case CORNER.BOTTOM_LEFT:\r\n            default:\r\n                return new BezierCurve(new Vector(xm, ym), new Vector(xm - ox, ym), new Vector(x, y + oy), new Vector(x, y));\r\n        }\r\n    };\r\n    var calculateBorderBoxPath = function (curves) {\r\n        return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];\r\n    };\r\n    var calculateContentBoxPath = function (curves) {\r\n        return [\r\n            curves.topLeftContentBox,\r\n            curves.topRightContentBox,\r\n            curves.bottomRightContentBox,\r\n            curves.bottomLeftContentBox\r\n        ];\r\n    };\r\n    var calculatePaddingBoxPath = function (curves) {\r\n        return [\r\n            curves.topLeftPaddingBox,\r\n            curves.topRightPaddingBox,\r\n            curves.bottomRightPaddingBox,\r\n            curves.bottomLeftPaddingBox\r\n        ];\r\n    };\r\n\r\n    var TransformEffect = /** @class */ (function () {\r\n        function TransformEffect(offsetX, offsetY, matrix) {\r\n            this.offsetX = offsetX;\r\n            this.offsetY = offsetY;\r\n            this.matrix = matrix;\r\n            this.type = 0 /* TRANSFORM */;\r\n            this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;\r\n        }\r\n        return TransformEffect;\r\n    }());\r\n    var ClipEffect = /** @class */ (function () {\r\n        function ClipEffect(path, target) {\r\n            this.path = path;\r\n            this.target = target;\r\n            this.type = 1 /* CLIP */;\r\n        }\r\n        return ClipEffect;\r\n    }());\r\n    var OpacityEffect = /** @class */ (function () {\r\n        function OpacityEffect(opacity) {\r\n            this.opacity = opacity;\r\n            this.type = 2 /* OPACITY */;\r\n            this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;\r\n        }\r\n        return OpacityEffect;\r\n    }());\r\n    var isTransformEffect = function (effect) {\r\n        return effect.type === 0 /* TRANSFORM */;\r\n    };\r\n    var isClipEffect = function (effect) { return effect.type === 1 /* CLIP */; };\r\n    var isOpacityEffect = function (effect) { return effect.type === 2 /* OPACITY */; };\r\n\r\n    var equalPath = function (a, b) {\r\n        if (a.length === b.length) {\r\n            return a.some(function (v, i) { return v === b[i]; });\r\n        }\r\n        return false;\r\n    };\r\n    var transformPath = function (path, deltaX, deltaY, deltaW, deltaH) {\r\n        return path.map(function (point, index) {\r\n            switch (index) {\r\n                case 0:\r\n                    return point.add(deltaX, deltaY);\r\n                case 1:\r\n                    return point.add(deltaX + deltaW, deltaY);\r\n                case 2:\r\n                    return point.add(deltaX + deltaW, deltaY + deltaH);\r\n                case 3:\r\n                    return point.add(deltaX, deltaY + deltaH);\r\n            }\r\n            return point;\r\n        });\r\n    };\r\n\r\n    var StackingContext = /** @class */ (function () {\r\n        function StackingContext(container) {\r\n            this.element = container;\r\n            this.inlineLevel = [];\r\n            this.nonInlineLevel = [];\r\n            this.negativeZIndex = [];\r\n            this.zeroOrAutoZIndexOrTransformedOrOpacity = [];\r\n            this.positiveZIndex = [];\r\n            this.nonPositionedFloats = [];\r\n            this.nonPositionedInlineLevel = [];\r\n        }\r\n        return StackingContext;\r\n    }());\r\n    var ElementPaint = /** @class */ (function () {\r\n        function ElementPaint(container, parent) {\r\n            this.container = container;\r\n            this.parent = parent;\r\n            this.effects = [];\r\n            this.curves = new BoundCurves(this.container);\r\n            if (this.container.styles.opacity < 1) {\r\n                this.effects.push(new OpacityEffect(this.container.styles.opacity));\r\n            }\r\n            if (this.container.styles.transform !== null) {\r\n                var offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;\r\n                var offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;\r\n                var matrix = this.container.styles.transform;\r\n                this.effects.push(new TransformEffect(offsetX, offsetY, matrix));\r\n            }\r\n            if (this.container.styles.overflowX !== 0 /* VISIBLE */) {\r\n                var borderBox = calculateBorderBoxPath(this.curves);\r\n                var paddingBox = calculatePaddingBoxPath(this.curves);\r\n                if (equalPath(borderBox, paddingBox)) {\r\n                    this.effects.push(new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));\r\n                }\r\n                else {\r\n                    this.effects.push(new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */));\r\n                    this.effects.push(new ClipEffect(paddingBox, 4 /* CONTENT */));\r\n                }\r\n            }\r\n        }\r\n        ElementPaint.prototype.getEffects = function (target) {\r\n            var inFlow = [2 /* ABSOLUTE */, 3 /* FIXED */].indexOf(this.container.styles.position) === -1;\r\n            var parent = this.parent;\r\n            var effects = this.effects.slice(0);\r\n            while (parent) {\r\n                var croplessEffects = parent.effects.filter(function (effect) { return !isClipEffect(effect); });\r\n                if (inFlow || parent.container.styles.position !== 0 /* STATIC */ || !parent.parent) {\r\n                    effects.unshift.apply(effects, croplessEffects);\r\n                    inFlow = [2 /* ABSOLUTE */, 3 /* FIXED */].indexOf(parent.container.styles.position) === -1;\r\n                    if (parent.container.styles.overflowX !== 0 /* VISIBLE */) {\r\n                        var borderBox = calculateBorderBoxPath(parent.curves);\r\n                        var paddingBox = calculatePaddingBoxPath(parent.curves);\r\n                        if (!equalPath(borderBox, paddingBox)) {\r\n                            effects.unshift(new ClipEffect(paddingBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    effects.unshift.apply(effects, croplessEffects);\r\n                }\r\n                parent = parent.parent;\r\n            }\r\n            return effects.filter(function (effect) { return contains(effect.target, target); });\r\n        };\r\n        return ElementPaint;\r\n    }());\r\n    var parseStackTree = function (parent, stackingContext, realStackingContext, listItems) {\r\n        parent.container.elements.forEach(function (child) {\r\n            var treatAsRealStackingContext = contains(child.flags, 4 /* CREATES_REAL_STACKING_CONTEXT */);\r\n            var createsStackingContext = contains(child.flags, 2 /* CREATES_STACKING_CONTEXT */);\r\n            var paintContainer = new ElementPaint(child, parent);\r\n            if (contains(child.styles.display, 2048 /* LIST_ITEM */)) {\r\n                listItems.push(paintContainer);\r\n            }\r\n            var listOwnerItems = contains(child.flags, 8 /* IS_LIST_OWNER */) ? [] : listItems;\r\n            if (treatAsRealStackingContext || createsStackingContext) {\r\n                var parentStack = treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;\r\n                var stack = new StackingContext(paintContainer);\r\n                if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {\r\n                    var order_1 = child.styles.zIndex.order;\r\n                    if (order_1 < 0) {\r\n                        var index_1 = 0;\r\n                        parentStack.negativeZIndex.some(function (current, i) {\r\n                            if (order_1 > current.element.container.styles.zIndex.order) {\r\n                                index_1 = i;\r\n                                return false;\r\n                            }\r\n                            else if (index_1 > 0) {\r\n                                return true;\r\n                            }\r\n                            return false;\r\n                        });\r\n                        parentStack.negativeZIndex.splice(index_1, 0, stack);\r\n                    }\r\n                    else if (order_1 > 0) {\r\n                        var index_2 = 0;\r\n                        parentStack.positiveZIndex.some(function (current, i) {\r\n                            if (order_1 >= current.element.container.styles.zIndex.order) {\r\n                                index_2 = i + 1;\r\n                                return false;\r\n                            }\r\n                            else if (index_2 > 0) {\r\n                                return true;\r\n                            }\r\n                            return false;\r\n                        });\r\n                        parentStack.positiveZIndex.splice(index_2, 0, stack);\r\n                    }\r\n                    else {\r\n                        parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);\r\n                    }\r\n                }\r\n                else {\r\n                    if (child.styles.isFloating()) {\r\n                        parentStack.nonPositionedFloats.push(stack);\r\n                    }\r\n                    else {\r\n                        parentStack.nonPositionedInlineLevel.push(stack);\r\n                    }\r\n                }\r\n                parseStackTree(paintContainer, stack, treatAsRealStackingContext ? stack : realStackingContext, listOwnerItems);\r\n            }\r\n            else {\r\n                if (child.styles.isInlineLevel()) {\r\n                    stackingContext.inlineLevel.push(paintContainer);\r\n                }\r\n                else {\r\n                    stackingContext.nonInlineLevel.push(paintContainer);\r\n                }\r\n                parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);\r\n            }\r\n            if (contains(child.flags, 8 /* IS_LIST_OWNER */)) {\r\n                processListItems(child, listOwnerItems);\r\n            }\r\n        });\r\n    };\r\n    var processListItems = function (owner, elements) {\r\n        var numbering = owner instanceof OLElementContainer ? owner.start : 1;\r\n        var reversed = owner instanceof OLElementContainer ? owner.reversed : false;\r\n        for (var i = 0; i < elements.length; i++) {\r\n            var item = elements[i];\r\n            if (item.container instanceof LIElementContainer &&\r\n                typeof item.container.value === 'number' &&\r\n                item.container.value !== 0) {\r\n                numbering = item.container.value;\r\n            }\r\n            item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);\r\n            numbering += reversed ? -1 : 1;\r\n        }\r\n    };\r\n    var parseStackingContexts = function (container) {\r\n        var paintContainer = new ElementPaint(container, null);\r\n        var root = new StackingContext(paintContainer);\r\n        var listItems = [];\r\n        parseStackTree(paintContainer, root, root, listItems);\r\n        processListItems(paintContainer.container, listItems);\r\n        return root;\r\n    };\r\n\r\n    var parsePathForBorder = function (curves, borderSide) {\r\n        switch (borderSide) {\r\n            case 0:\r\n                return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftPaddingBox, curves.topRightBorderBox, curves.topRightPaddingBox);\r\n            case 1:\r\n                return createPathFromCurves(curves.topRightBorderBox, curves.topRightPaddingBox, curves.bottomRightBorderBox, curves.bottomRightPaddingBox);\r\n            case 2:\r\n                return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox);\r\n            case 3:\r\n            default:\r\n                return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox, curves.topLeftBorderBox, curves.topLeftPaddingBox);\r\n        }\r\n    };\r\n    var parsePathForBorderDoubleOuter = function (curves, borderSide) {\r\n        switch (borderSide) {\r\n            case 0:\r\n                return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox, curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox);\r\n            case 1:\r\n                return createPathFromCurves(curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox, curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox);\r\n            case 2:\r\n                return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox, curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox);\r\n            case 3:\r\n            default:\r\n                return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox, curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox);\r\n        }\r\n    };\r\n    var parsePathForBorderDoubleInner = function (curves, borderSide) {\r\n        switch (borderSide) {\r\n            case 0:\r\n                return createPathFromCurves(curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox, curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox);\r\n            case 1:\r\n                return createPathFromCurves(curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox, curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox);\r\n            case 2:\r\n                return createPathFromCurves(curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox);\r\n            case 3:\r\n            default:\r\n                return createPathFromCurves(curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox, curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox);\r\n        }\r\n    };\r\n    var parsePathForBorderStroke = function (curves, borderSide) {\r\n        switch (borderSide) {\r\n            case 0:\r\n                return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);\r\n            case 1:\r\n                return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);\r\n            case 2:\r\n                return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);\r\n            case 3:\r\n            default:\r\n                return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);\r\n        }\r\n    };\r\n    var createStrokePathFromCurves = function (outer1, outer2) {\r\n        var path = [];\r\n        if (isBezierCurve(outer1)) {\r\n            path.push(outer1.subdivide(0.5, false));\r\n        }\r\n        else {\r\n            path.push(outer1);\r\n        }\r\n        if (isBezierCurve(outer2)) {\r\n            path.push(outer2.subdivide(0.5, true));\r\n        }\r\n        else {\r\n            path.push(outer2);\r\n        }\r\n        return path;\r\n    };\r\n    var createPathFromCurves = function (outer1, inner1, outer2, inner2) {\r\n        var path = [];\r\n        if (isBezierCurve(outer1)) {\r\n            path.push(outer1.subdivide(0.5, false));\r\n        }\r\n        else {\r\n            path.push(outer1);\r\n        }\r\n        if (isBezierCurve(outer2)) {\r\n            path.push(outer2.subdivide(0.5, true));\r\n        }\r\n        else {\r\n            path.push(outer2);\r\n        }\r\n        if (isBezierCurve(inner2)) {\r\n            path.push(inner2.subdivide(0.5, true).reverse());\r\n        }\r\n        else {\r\n            path.push(inner2);\r\n        }\r\n        if (isBezierCurve(inner1)) {\r\n            path.push(inner1.subdivide(0.5, false).reverse());\r\n        }\r\n        else {\r\n            path.push(inner1);\r\n        }\r\n        return path;\r\n    };\r\n\r\n    var paddingBox = function (element) {\r\n        var bounds = element.bounds;\r\n        var styles = element.styles;\r\n        return bounds.add(styles.borderLeftWidth, styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth), -(styles.borderTopWidth + styles.borderBottomWidth));\r\n    };\r\n    var contentBox = function (element) {\r\n        var styles = element.styles;\r\n        var bounds = element.bounds;\r\n        var paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);\r\n        var paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);\r\n        var paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);\r\n        var paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);\r\n        return bounds.add(paddingLeft + styles.borderLeftWidth, paddingTop + styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight), -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom));\r\n    };\r\n\r\n    var calculateBackgroundPositioningArea = function (backgroundOrigin, element) {\r\n        if (backgroundOrigin === 0 /* BORDER_BOX */) {\r\n            return element.bounds;\r\n        }\r\n        if (backgroundOrigin === 2 /* CONTENT_BOX */) {\r\n            return contentBox(element);\r\n        }\r\n        return paddingBox(element);\r\n    };\r\n    var calculateBackgroundPaintingArea = function (backgroundClip, element) {\r\n        if (backgroundClip === 0 /* BORDER_BOX */) {\r\n            return element.bounds;\r\n        }\r\n        if (backgroundClip === 2 /* CONTENT_BOX */) {\r\n            return contentBox(element);\r\n        }\r\n        return paddingBox(element);\r\n    };\r\n    var calculateBackgroundRendering = function (container, index, intrinsicSize) {\r\n        var backgroundPositioningArea = calculateBackgroundPositioningArea(getBackgroundValueForIndex(container.styles.backgroundOrigin, index), container);\r\n        var backgroundPaintingArea = calculateBackgroundPaintingArea(getBackgroundValueForIndex(container.styles.backgroundClip, index), container);\r\n        var backgroundImageSize = calculateBackgroundSize(getBackgroundValueForIndex(container.styles.backgroundSize, index), intrinsicSize, backgroundPositioningArea);\r\n        var sizeWidth = backgroundImageSize[0], sizeHeight = backgroundImageSize[1];\r\n        var position = getAbsoluteValueForTuple(getBackgroundValueForIndex(container.styles.backgroundPosition, index), backgroundPositioningArea.width - sizeWidth, backgroundPositioningArea.height - sizeHeight);\r\n        var path = calculateBackgroundRepeatPath(getBackgroundValueForIndex(container.styles.backgroundRepeat, index), position, backgroundImageSize, backgroundPositioningArea, backgroundPaintingArea);\r\n        var offsetX = Math.round(backgroundPositioningArea.left + position[0]);\r\n        var offsetY = Math.round(backgroundPositioningArea.top + position[1]);\r\n        return [path, offsetX, offsetY, sizeWidth, sizeHeight];\r\n    };\r\n    var isAuto = function (token) { return isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO; };\r\n    var hasIntrinsicValue = function (value) { return typeof value === 'number'; };\r\n    var calculateBackgroundSize = function (size, _a, bounds) {\r\n        var intrinsicWidth = _a[0], intrinsicHeight = _a[1], intrinsicProportion = _a[2];\r\n        var first = size[0], second = size[1];\r\n        if (!first) {\r\n            return [0, 0];\r\n        }\r\n        if (isLengthPercentage(first) && second && isLengthPercentage(second)) {\r\n            return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];\r\n        }\r\n        var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);\r\n        if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {\r\n            if (hasIntrinsicValue(intrinsicProportion)) {\r\n                var targetRatio = bounds.width / bounds.height;\r\n                return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER)\r\n                    ? [bounds.width, bounds.width / intrinsicProportion]\r\n                    : [bounds.height * intrinsicProportion, bounds.height];\r\n            }\r\n            return [bounds.width, bounds.height];\r\n        }\r\n        var hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);\r\n        var hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);\r\n        var hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;\r\n        // If the background-size is auto or auto auto:\r\n        if (isAuto(first) && (!second || isAuto(second))) {\r\n            // If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.\r\n            if (hasIntrinsicWidth && hasIntrinsicHeight) {\r\n                return [intrinsicWidth, intrinsicHeight];\r\n            }\r\n            // If the image has no intrinsic dimensions and has no intrinsic proportions,\r\n            // it's rendered at the size of the background positioning area.\r\n            if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {\r\n                return [bounds.width, bounds.height];\r\n            }\r\n            // TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.\r\n            // If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.\r\n            // The other dimension is computed using the specified dimension and the intrinsic proportions.\r\n            if (hasIntrinsicDimensions && hasIntrinsicProportion) {\r\n                var width_1 = hasIntrinsicWidth\r\n                    ? intrinsicWidth\r\n                    : intrinsicHeight * intrinsicProportion;\r\n                var height_1 = hasIntrinsicHeight\r\n                    ? intrinsicHeight\r\n                    : intrinsicWidth / intrinsicProportion;\r\n                return [width_1, height_1];\r\n            }\r\n            // If the image has only one intrinsic dimension but has no intrinsic proportions,\r\n            // it's rendered using the specified dimension and the other dimension of the background positioning area.\r\n            var width_2 = hasIntrinsicWidth ? intrinsicWidth : bounds.width;\r\n            var height_2 = hasIntrinsicHeight ? intrinsicHeight : bounds.height;\r\n            return [width_2, height_2];\r\n        }\r\n        // If the image has intrinsic proportions, it's stretched to the specified dimension.\r\n        // The unspecified dimension is computed using the specified dimension and the intrinsic proportions.\r\n        if (hasIntrinsicProportion) {\r\n            var width_3 = 0;\r\n            var height_3 = 0;\r\n            if (isLengthPercentage(first)) {\r\n                width_3 = getAbsoluteValue(first, bounds.width);\r\n            }\r\n            else if (isLengthPercentage(second)) {\r\n                height_3 = getAbsoluteValue(second, bounds.height);\r\n            }\r\n            if (isAuto(first)) {\r\n                width_3 = height_3 * intrinsicProportion;\r\n            }\r\n            else if (!second || isAuto(second)) {\r\n                height_3 = width_3 / intrinsicProportion;\r\n            }\r\n            return [width_3, height_3];\r\n        }\r\n        // If the image has no intrinsic proportions, it's stretched to the specified dimension.\r\n        // The unspecified dimension is computed using the image's corresponding intrinsic dimension,\r\n        // if there is one. If there is no such intrinsic dimension,\r\n        // it becomes the corresponding dimension of the background positioning area.\r\n        var width = null;\r\n        var height = null;\r\n        if (isLengthPercentage(first)) {\r\n            width = getAbsoluteValue(first, bounds.width);\r\n        }\r\n        else if (second && isLengthPercentage(second)) {\r\n            height = getAbsoluteValue(second, bounds.height);\r\n        }\r\n        if (width !== null && (!second || isAuto(second))) {\r\n            height =\r\n                hasIntrinsicWidth && hasIntrinsicHeight\r\n                    ? (width / intrinsicWidth) * intrinsicHeight\r\n                    : bounds.height;\r\n        }\r\n        if (height !== null && isAuto(first)) {\r\n            width =\r\n                hasIntrinsicWidth && hasIntrinsicHeight\r\n                    ? (height / intrinsicHeight) * intrinsicWidth\r\n                    : bounds.width;\r\n        }\r\n        if (width !== null && height !== null) {\r\n            return [width, height];\r\n        }\r\n        throw new Error(\"Unable to calculate background-size for element\");\r\n    };\r\n    var getBackgroundValueForIndex = function (values, index) {\r\n        var value = values[index];\r\n        if (typeof value === 'undefined') {\r\n            return values[0];\r\n        }\r\n        return value;\r\n    };\r\n    var calculateBackgroundRepeatPath = function (repeat, _a, _b, backgroundPositioningArea, backgroundPaintingArea) {\r\n        var x = _a[0], y = _a[1];\r\n        var width = _b[0], height = _b[1];\r\n        switch (repeat) {\r\n            case 2 /* REPEAT_X */:\r\n                return [\r\n                    new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),\r\n                    new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(backgroundPositioningArea.top + y)),\r\n                    new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(height + backgroundPositioningArea.top + y)),\r\n                    new Vector(Math.round(backgroundPositioningArea.left), Math.round(height + backgroundPositioningArea.top + y))\r\n                ];\r\n            case 3 /* REPEAT_Y */:\r\n                return [\r\n                    new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),\r\n                    new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top)),\r\n                    new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)),\r\n                    new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top))\r\n                ];\r\n            case 1 /* NO_REPEAT */:\r\n                return [\r\n                    new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y)),\r\n                    new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y)),\r\n                    new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y + height)),\r\n                    new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y + height))\r\n                ];\r\n            default:\r\n                return [\r\n                    new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),\r\n                    new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.top)),\r\n                    new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)),\r\n                    new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top))\r\n                ];\r\n        }\r\n    };\r\n\r\n    var SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\r\n\r\n    var SAMPLE_TEXT = 'Hidden Text';\r\n    var FontMetrics = /** @class */ (function () {\r\n        function FontMetrics(document) {\r\n            this._data = {};\r\n            this._document = document;\r\n        }\r\n        FontMetrics.prototype.parseMetrics = function (fontFamily, fontSize) {\r\n            var container = this._document.createElement('div');\r\n            var img = this._document.createElement('img');\r\n            var span = this._document.createElement('span');\r\n            var body = this._document.body;\r\n            container.style.visibility = 'hidden';\r\n            container.style.fontFamily = fontFamily;\r\n            container.style.fontSize = fontSize;\r\n            container.style.margin = '0';\r\n            container.style.padding = '0';\r\n            container.style.whiteSpace = 'nowrap';\r\n            body.appendChild(container);\r\n            img.src = SMALL_IMAGE;\r\n            img.width = 1;\r\n            img.height = 1;\r\n            img.style.margin = '0';\r\n            img.style.padding = '0';\r\n            img.style.verticalAlign = 'baseline';\r\n            span.style.fontFamily = fontFamily;\r\n            span.style.fontSize = fontSize;\r\n            span.style.margin = '0';\r\n            span.style.padding = '0';\r\n            span.appendChild(this._document.createTextNode(SAMPLE_TEXT));\r\n            container.appendChild(span);\r\n            container.appendChild(img);\r\n            var baseline = img.offsetTop - span.offsetTop + 2;\r\n            container.removeChild(span);\r\n            container.appendChild(this._document.createTextNode(SAMPLE_TEXT));\r\n            container.style.lineHeight = 'normal';\r\n            img.style.verticalAlign = 'super';\r\n            var middle = img.offsetTop - container.offsetTop + 2;\r\n            body.removeChild(container);\r\n            return { baseline: baseline, middle: middle };\r\n        };\r\n        FontMetrics.prototype.getMetrics = function (fontFamily, fontSize) {\r\n            var key = fontFamily + \" \" + fontSize;\r\n            if (typeof this._data[key] === 'undefined') {\r\n                this._data[key] = this.parseMetrics(fontFamily, fontSize);\r\n            }\r\n            return this._data[key];\r\n        };\r\n        return FontMetrics;\r\n    }());\r\n\r\n    var Renderer = /** @class */ (function () {\r\n        function Renderer(context, options) {\r\n            this.context = context;\r\n            this.options = options;\r\n        }\r\n        return Renderer;\r\n    }());\r\n\r\n    var MASK_OFFSET = 10000;\r\n    var CanvasRenderer = /** @class */ (function (_super) {\r\n        __extends(CanvasRenderer, _super);\r\n        function CanvasRenderer(context, options) {\r\n            var _this = _super.call(this, context, options) || this;\r\n            _this._activeEffects = [];\r\n            _this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\r\n            _this.ctx = _this.canvas.getContext('2d');\r\n            if (!options.canvas) {\r\n                _this.canvas.width = Math.floor(options.width * options.scale);\r\n                _this.canvas.height = Math.floor(options.height * options.scale);\r\n                _this.canvas.style.width = options.width + \"px\";\r\n                _this.canvas.style.height = options.height + \"px\";\r\n            }\r\n            _this.fontMetrics = new FontMetrics(document);\r\n            _this.ctx.scale(_this.options.scale, _this.options.scale);\r\n            _this.ctx.translate(-options.x, -options.y);\r\n            _this.ctx.textBaseline = 'bottom';\r\n            _this._activeEffects = [];\r\n            _this.context.logger.debug(\"Canvas renderer initialized (\" + options.width + \"x\" + options.height + \") with scale \" + options.scale);\r\n            return _this;\r\n        }\r\n        CanvasRenderer.prototype.applyEffects = function (effects) {\r\n            var _this = this;\r\n            while (this._activeEffects.length) {\r\n                this.popEffect();\r\n            }\r\n            effects.forEach(function (effect) { return _this.applyEffect(effect); });\r\n        };\r\n        CanvasRenderer.prototype.applyEffect = function (effect) {\r\n            this.ctx.save();\r\n            if (isOpacityEffect(effect)) {\r\n                this.ctx.globalAlpha = effect.opacity;\r\n            }\r\n            if (isTransformEffect(effect)) {\r\n                this.ctx.translate(effect.offsetX, effect.offsetY);\r\n                this.ctx.transform(effect.matrix[0], effect.matrix[1], effect.matrix[2], effect.matrix[3], effect.matrix[4], effect.matrix[5]);\r\n                this.ctx.translate(-effect.offsetX, -effect.offsetY);\r\n            }\r\n            if (isClipEffect(effect)) {\r\n                this.path(effect.path);\r\n                this.ctx.clip();\r\n            }\r\n            this._activeEffects.push(effect);\r\n        };\r\n        CanvasRenderer.prototype.popEffect = function () {\r\n            this._activeEffects.pop();\r\n            this.ctx.restore();\r\n        };\r\n        CanvasRenderer.prototype.renderStack = function (stack) {\r\n            return __awaiter(this, void 0, void 0, function () {\r\n                var styles;\r\n                return __generator(this, function (_a) {\r\n                    switch (_a.label) {\r\n                        case 0:\r\n                            styles = stack.element.container.styles;\r\n                            if (!styles.isVisible()) return [3 /*break*/, 2];\r\n                            return [4 /*yield*/, this.renderStackContent(stack)];\r\n                        case 1:\r\n                            _a.sent();\r\n                            _a.label = 2;\r\n                        case 2: return [2 /*return*/];\r\n                    }\r\n                });\r\n            });\r\n        };\r\n        CanvasRenderer.prototype.renderNode = function (paint) {\r\n            return __awaiter(this, void 0, void 0, function () {\r\n                return __generator(this, function (_a) {\r\n                    switch (_a.label) {\r\n                        case 0:\r\n                            if (contains(paint.container.flags, 16 /* DEBUG_RENDER */)) {\r\n                                debugger;\r\n                            }\r\n                            if (!paint.container.styles.isVisible()) return [3 /*break*/, 3];\r\n                            return [4 /*yield*/, this.renderNodeBackgroundAndBorders(paint)];\r\n                        case 1:\r\n                            _a.sent();\r\n                            return [4 /*yield*/, this.renderNodeContent(paint)];\r\n                        case 2:\r\n                            _a.sent();\r\n                            _a.label = 3;\r\n                        case 3: return [2 /*return*/];\r\n                    }\r\n                });\r\n            });\r\n        };\r\n        CanvasRenderer.prototype.renderTextWithLetterSpacing = function (text, letterSpacing, baseline) {\r\n            var _this = this;\r\n            if (letterSpacing === 0) {\r\n                this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);\r\n            }\r\n            else {\r\n                var letters = segmentGraphemes(text.text);\r\n                letters.reduce(function (left, letter) {\r\n                    _this.ctx.fillText(letter, left, text.bounds.top + baseline);\r\n                    return left + _this.ctx.measureText(letter).width;\r\n                }, text.bounds.left);\r\n            }\r\n        };\r\n        CanvasRenderer.prototype.createFontStyle = function (styles) {\r\n            var fontVariant = styles.fontVariant\r\n                .filter(function (variant) { return variant === 'normal' || variant === 'small-caps'; })\r\n                .join('');\r\n            var fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', ');\r\n            var fontSize = isDimensionToken(styles.fontSize)\r\n                ? \"\" + styles.fontSize.number + styles.fontSize.unit\r\n                : styles.fontSize.number + \"px\";\r\n            return [\r\n                [styles.fontStyle, fontVariant, styles.fontWeight, fontSize, fontFamily].join(' '),\r\n                fontFamily,\r\n                fontSize\r\n            ];\r\n        };\r\n        CanvasRenderer.prototype.renderTextNode = function (text, styles) {\r\n            return __awaiter(this, void 0, void 0, function () {\r\n                var _a, font, fontFamily, fontSize, _b, baseline, middle, paintOrder;\r\n                var _this = this;\r\n                return __generator(this, function (_c) {\r\n                    _a = this.createFontStyle(styles), font = _a[0], fontFamily = _a[1], fontSize = _a[2];\r\n                    this.ctx.font = font;\r\n                    this.ctx.direction = styles.direction === 1 /* RTL */ ? 'rtl' : 'ltr';\r\n                    this.ctx.textAlign = 'left';\r\n                    this.ctx.textBaseline = 'alphabetic';\r\n                    _b = this.fontMetrics.getMetrics(fontFamily, fontSize), baseline = _b.baseline, middle = _b.middle;\r\n                    paintOrder = styles.paintOrder;\r\n                    text.textBounds.forEach(function (text) {\r\n                        paintOrder.forEach(function (paintOrderLayer) {\r\n                            switch (paintOrderLayer) {\r\n                                case 0 /* FILL */:\r\n                                    _this.ctx.fillStyle = asString(styles.color);\r\n                                    _this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\r\n                                    var textShadows = styles.textShadow;\r\n                                    if (textShadows.length && text.text.trim().length) {\r\n                                        textShadows\r\n                                            .slice(0)\r\n                                            .reverse()\r\n                                            .forEach(function (textShadow) {\r\n                                            _this.ctx.shadowColor = asString(textShadow.color);\r\n                                            _this.ctx.shadowOffsetX = textShadow.offsetX.number * _this.options.scale;\r\n                                            _this.ctx.shadowOffsetY = textShadow.offsetY.number * _this.options.scale;\r\n                                            _this.ctx.shadowBlur = textShadow.blur.number;\r\n                                            _this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\r\n                                        });\r\n                                        _this.ctx.shadowColor = '';\r\n                                        _this.ctx.shadowOffsetX = 0;\r\n                                        _this.ctx.shadowOffsetY = 0;\r\n                                        _this.ctx.shadowBlur = 0;\r\n                                    }\r\n                                    if (styles.textDecorationLine.length) {\r\n                                        _this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);\r\n                                        styles.textDecorationLine.forEach(function (textDecorationLine) {\r\n                                            switch (textDecorationLine) {\r\n                                                case 1 /* UNDERLINE */:\r\n                                                    // Draws a line at the baseline of the font\r\n                                                    // TODO As some browsers display the line as more than 1px if the font-size is big,\r\n                                                    // need to take that into account both in position and size\r\n                                                    _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top + baseline), text.bounds.width, 1);\r\n                                                    break;\r\n                                                case 2 /* OVERLINE */:\r\n                                                    _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top), text.bounds.width, 1);\r\n                                                    break;\r\n                                                case 3 /* LINE_THROUGH */:\r\n                                                    // TODO try and find exact position for line-through\r\n                                                    _this.ctx.fillRect(text.bounds.left, Math.ceil(text.bounds.top + middle), text.bounds.width, 1);\r\n                                                    break;\r\n                                            }\r\n                                        });\r\n                                    }\r\n                                    break;\r\n                                case 1 /* STROKE */:\r\n                                    if (styles.webkitTextStrokeWidth && text.text.trim().length) {\r\n                                        _this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);\r\n                                        _this.ctx.lineWidth = styles.webkitTextStrokeWidth;\r\n                                        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n                                        _this.ctx.lineJoin = !!window.chrome ? 'miter' : 'round';\r\n                                        _this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + baseline);\r\n                                    }\r\n                                    _this.ctx.strokeStyle = '';\r\n                                    _this.ctx.lineWidth = 0;\r\n                                    _this.ctx.lineJoin = 'miter';\r\n                                    break;\r\n                            }\r\n                        });\r\n                    });\r\n                    return [2 /*return*/];\r\n                });\r\n            });\r\n        };\r\n        CanvasRenderer.prototype.renderReplacedElement = function (container, curves, image) {\r\n            if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {\r\n                var box = contentBox(container);\r\n                var path = calculatePaddingBoxPath(curves);\r\n                this.path(path);\r\n                this.ctx.save();\r\n                this.ctx.clip();\r\n                this.ctx.drawImage(image, 0, 0, container.intrinsicWidth, container.intrinsicHeight, box.left, box.top, box.width, box.height);\r\n                this.ctx.restore();\r\n            }\r\n        };\r\n        CanvasRenderer.prototype.renderNodeContent = function (paint) {\r\n            return __awaiter(this, void 0, void 0, function () {\r\n                var container, curves, styles, _i, _a, child, image, image, iframeRenderer, canvas, size, _b, fontFamily, fontSize, baseline, bounds, x, textBounds, img, image, url, fontFamily, bounds;\r\n                return __generator(this, function (_c) {\r\n                    switch (_c.label) {\r\n                        case 0:\r\n                            this.applyEffects(paint.getEffects(4 /* CONTENT */));\r\n                            container = paint.container;\r\n                            curves = paint.curves;\r\n                            styles = container.styles;\r\n                            _i = 0, _a = container.textNodes;\r\n                            _c.label = 1;\r\n                        case 1:\r\n                            if (!(_i < _a.length)) return [3 /*break*/, 4];\r\n                            child = _a[_i];\r\n                            return [4 /*yield*/, this.renderTextNode(child, styles)];\r\n                        case 2:\r\n                            _c.sent();\r\n                            _c.label = 3;\r\n                        case 3:\r\n                            _i++;\r\n                            return [3 /*break*/, 1];\r\n                        case 4:\r\n                            if (!(container instanceof ImageElementContainer)) return [3 /*break*/, 8];\r\n                            _c.label = 5;\r\n                        case 5:\r\n                            _c.trys.push([5, 7, , 8]);\r\n                            return [4 /*yield*/, this.context.cache.match(container.src)];\r\n                        case 6:\r\n                            image = _c.sent();\r\n                            this.renderReplacedElement(container, curves, image);\r\n                            return [3 /*break*/, 8];\r\n                        case 7:\r\n                            _c.sent();\r\n                            this.context.logger.error(\"Error loading image \" + container.src);\r\n                            return [3 /*break*/, 8];\r\n                        case 8:\r\n                            if (container instanceof CanvasElementContainer) {\r\n                                this.renderReplacedElement(container, curves, container.canvas);\r\n                            }\r\n                            if (!(container instanceof SVGElementContainer)) return [3 /*break*/, 12];\r\n                            _c.label = 9;\r\n                        case 9:\r\n                            _c.trys.push([9, 11, , 12]);\r\n                            return [4 /*yield*/, this.context.cache.match(container.svg)];\r\n                        case 10:\r\n                            image = _c.sent();\r\n                            this.renderReplacedElement(container, curves, image);\r\n                            return [3 /*break*/, 12];\r\n                        case 11:\r\n                            _c.sent();\r\n                            this.context.logger.error(\"Error loading svg \" + container.svg.substring(0, 255));\r\n                            return [3 /*break*/, 12];\r\n                        case 12:\r\n                            if (!(container instanceof IFrameElementContainer && container.tree)) return [3 /*break*/, 14];\r\n                            iframeRenderer = new CanvasRenderer(this.context, {\r\n                                scale: this.options.scale,\r\n                                backgroundColor: container.backgroundColor,\r\n                                x: 0,\r\n                                y: 0,\r\n                                width: container.width,\r\n                                height: container.height\r\n                            });\r\n                            return [4 /*yield*/, iframeRenderer.render(container.tree)];\r\n                        case 13:\r\n                            canvas = _c.sent();\r\n                            if (container.width && container.height) {\r\n                                this.ctx.drawImage(canvas, 0, 0, container.width, container.height, container.bounds.left, container.bounds.top, container.bounds.width, container.bounds.height);\r\n                            }\r\n                            _c.label = 14;\r\n                        case 14:\r\n                            if (container instanceof InputElementContainer) {\r\n                                size = Math.min(container.bounds.width, container.bounds.height);\r\n                                if (container.type === CHECKBOX) {\r\n                                    if (container.checked) {\r\n                                        this.ctx.save();\r\n                                        this.path([\r\n                                            new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),\r\n                                            new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),\r\n                                            new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),\r\n                                            new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),\r\n                                            new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),\r\n                                            new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),\r\n                                            new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)\r\n                                        ]);\r\n                                        this.ctx.fillStyle = asString(INPUT_COLOR);\r\n                                        this.ctx.fill();\r\n                                        this.ctx.restore();\r\n                                    }\r\n                                }\r\n                                else if (container.type === RADIO) {\r\n                                    if (container.checked) {\r\n                                        this.ctx.save();\r\n                                        this.ctx.beginPath();\r\n                                        this.ctx.arc(container.bounds.left + size / 2, container.bounds.top + size / 2, size / 4, 0, Math.PI * 2, true);\r\n                                        this.ctx.fillStyle = asString(INPUT_COLOR);\r\n                                        this.ctx.fill();\r\n                                        this.ctx.restore();\r\n                                    }\r\n                                }\r\n                            }\r\n                            if (isTextInputElement(container) && container.value.length) {\r\n                                _b = this.createFontStyle(styles), fontFamily = _b[0], fontSize = _b[1];\r\n                                baseline = this.fontMetrics.getMetrics(fontFamily, fontSize).baseline;\r\n                                this.ctx.font = fontFamily;\r\n                                this.ctx.fillStyle = asString(styles.color);\r\n                                this.ctx.textBaseline = 'alphabetic';\r\n                                this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);\r\n                                bounds = contentBox(container);\r\n                                x = 0;\r\n                                switch (container.styles.textAlign) {\r\n                                    case 1 /* CENTER */:\r\n                                        x += bounds.width / 2;\r\n                                        break;\r\n                                    case 2 /* RIGHT */:\r\n                                        x += bounds.width;\r\n                                        break;\r\n                                }\r\n                                textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);\r\n                                this.ctx.save();\r\n                                this.path([\r\n                                    new Vector(bounds.left, bounds.top),\r\n                                    new Vector(bounds.left + bounds.width, bounds.top),\r\n                                    new Vector(bounds.left + bounds.width, bounds.top + bounds.height),\r\n                                    new Vector(bounds.left, bounds.top + bounds.height)\r\n                                ]);\r\n                                this.ctx.clip();\r\n                                this.renderTextWithLetterSpacing(new TextBounds(container.value, textBounds), styles.letterSpacing, baseline);\r\n                                this.ctx.restore();\r\n                                this.ctx.textBaseline = 'alphabetic';\r\n                                this.ctx.textAlign = 'left';\r\n                            }\r\n                            if (!contains(container.styles.display, 2048 /* LIST_ITEM */)) return [3 /*break*/, 20];\r\n                            if (!(container.styles.listStyleImage !== null)) return [3 /*break*/, 19];\r\n                            img = container.styles.listStyleImage;\r\n                            if (!(img.type === 0 /* URL */)) return [3 /*break*/, 18];\r\n                            image = void 0;\r\n                            url = img.url;\r\n                            _c.label = 15;\r\n                        case 15:\r\n                            _c.trys.push([15, 17, , 18]);\r\n                            return [4 /*yield*/, this.context.cache.match(url)];\r\n                        case 16:\r\n                            image = _c.sent();\r\n                            this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);\r\n                            return [3 /*break*/, 18];\r\n                        case 17:\r\n                            _c.sent();\r\n                            this.context.logger.error(\"Error loading list-style-image \" + url);\r\n                            return [3 /*break*/, 18];\r\n                        case 18: return [3 /*break*/, 20];\r\n                        case 19:\r\n                            if (paint.listValue && container.styles.listStyleType !== -1 /* NONE */) {\r\n                                fontFamily = this.createFontStyle(styles)[0];\r\n                                this.ctx.font = fontFamily;\r\n                                this.ctx.fillStyle = asString(styles.color);\r\n                                this.ctx.textBaseline = 'middle';\r\n                                this.ctx.textAlign = 'right';\r\n                                bounds = new Bounds(container.bounds.left, container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width), container.bounds.width, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1);\r\n                                this.renderTextWithLetterSpacing(new TextBounds(paint.listValue, bounds), styles.letterSpacing, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2);\r\n                                this.ctx.textBaseline = 'bottom';\r\n                                this.ctx.textAlign = 'left';\r\n                            }\r\n                            _c.label = 20;\r\n                        case 20: return [2 /*return*/];\r\n                    }\r\n                });\r\n            });\r\n        };\r\n        CanvasRenderer.prototype.renderStackContent = function (stack) {\r\n            return __awaiter(this, void 0, void 0, function () {\r\n                var _i, _a, child, _b, _c, child, _d, _e, child, _f, _g, child, _h, _j, child, _k, _l, child, _m, _o, child;\r\n                return __generator(this, function (_p) {\r\n                    switch (_p.label) {\r\n                        case 0:\r\n                            if (contains(stack.element.container.flags, 16 /* DEBUG_RENDER */)) {\r\n                                debugger;\r\n                            }\r\n                            // https://www.w3.org/TR/css-position-3/#painting-order\r\n                            // 1. the background and borders of the element forming the stacking context.\r\n                            return [4 /*yield*/, this.renderNodeBackgroundAndBorders(stack.element)];\r\n                        case 1:\r\n                            // https://www.w3.org/TR/css-position-3/#painting-order\r\n                            // 1. the background and borders of the element forming the stacking context.\r\n                            _p.sent();\r\n                            _i = 0, _a = stack.negativeZIndex;\r\n                            _p.label = 2;\r\n                        case 2:\r\n                            if (!(_i < _a.length)) return [3 /*break*/, 5];\r\n                            child = _a[_i];\r\n                            return [4 /*yield*/, this.renderStack(child)];\r\n                        case 3:\r\n                            _p.sent();\r\n                            _p.label = 4;\r\n                        case 4:\r\n                            _i++;\r\n                            return [3 /*break*/, 2];\r\n                        case 5: \r\n                        // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\r\n                        return [4 /*yield*/, this.renderNodeContent(stack.element)];\r\n                        case 6:\r\n                            // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\r\n                            _p.sent();\r\n                            _b = 0, _c = stack.nonInlineLevel;\r\n                            _p.label = 7;\r\n                        case 7:\r\n                            if (!(_b < _c.length)) return [3 /*break*/, 10];\r\n                            child = _c[_b];\r\n                            return [4 /*yield*/, this.renderNode(child)];\r\n                        case 8:\r\n                            _p.sent();\r\n                            _p.label = 9;\r\n                        case 9:\r\n                            _b++;\r\n                            return [3 /*break*/, 7];\r\n                        case 10:\r\n                            _d = 0, _e = stack.nonPositionedFloats;\r\n                            _p.label = 11;\r\n                        case 11:\r\n                            if (!(_d < _e.length)) return [3 /*break*/, 14];\r\n                            child = _e[_d];\r\n                            return [4 /*yield*/, this.renderStack(child)];\r\n                        case 12:\r\n                            _p.sent();\r\n                            _p.label = 13;\r\n                        case 13:\r\n                            _d++;\r\n                            return [3 /*break*/, 11];\r\n                        case 14:\r\n                            _f = 0, _g = stack.nonPositionedInlineLevel;\r\n                            _p.label = 15;\r\n                        case 15:\r\n                            if (!(_f < _g.length)) return [3 /*break*/, 18];\r\n                            child = _g[_f];\r\n                            return [4 /*yield*/, this.renderStack(child)];\r\n                        case 16:\r\n                            _p.sent();\r\n                            _p.label = 17;\r\n                        case 17:\r\n                            _f++;\r\n                            return [3 /*break*/, 15];\r\n                        case 18:\r\n                            _h = 0, _j = stack.inlineLevel;\r\n                            _p.label = 19;\r\n                        case 19:\r\n                            if (!(_h < _j.length)) return [3 /*break*/, 22];\r\n                            child = _j[_h];\r\n                            return [4 /*yield*/, this.renderNode(child)];\r\n                        case 20:\r\n                            _p.sent();\r\n                            _p.label = 21;\r\n                        case 21:\r\n                            _h++;\r\n                            return [3 /*break*/, 19];\r\n                        case 22:\r\n                            _k = 0, _l = stack.zeroOrAutoZIndexOrTransformedOrOpacity;\r\n                            _p.label = 23;\r\n                        case 23:\r\n                            if (!(_k < _l.length)) return [3 /*break*/, 26];\r\n                            child = _l[_k];\r\n                            return [4 /*yield*/, this.renderStack(child)];\r\n                        case 24:\r\n                            _p.sent();\r\n                            _p.label = 25;\r\n                        case 25:\r\n                            _k++;\r\n                            return [3 /*break*/, 23];\r\n                        case 26:\r\n                            _m = 0, _o = stack.positiveZIndex;\r\n                            _p.label = 27;\r\n                        case 27:\r\n                            if (!(_m < _o.length)) return [3 /*break*/, 30];\r\n                            child = _o[_m];\r\n                            return [4 /*yield*/, this.renderStack(child)];\r\n                        case 28:\r\n                            _p.sent();\r\n                            _p.label = 29;\r\n                        case 29:\r\n                            _m++;\r\n                            return [3 /*break*/, 27];\r\n                        case 30: return [2 /*return*/];\r\n                    }\r\n                });\r\n            });\r\n        };\r\n        CanvasRenderer.prototype.mask = function (paths) {\r\n            this.ctx.beginPath();\r\n            this.ctx.moveTo(0, 0);\r\n            this.ctx.lineTo(this.canvas.width, 0);\r\n            this.ctx.lineTo(this.canvas.width, this.canvas.height);\r\n            this.ctx.lineTo(0, this.canvas.height);\r\n            this.ctx.lineTo(0, 0);\r\n            this.formatPath(paths.slice(0).reverse());\r\n            this.ctx.closePath();\r\n        };\r\n        CanvasRenderer.prototype.path = function (paths) {\r\n            this.ctx.beginPath();\r\n            this.formatPath(paths);\r\n            this.ctx.closePath();\r\n        };\r\n        CanvasRenderer.prototype.formatPath = function (paths) {\r\n            var _this = this;\r\n            paths.forEach(function (point, index) {\r\n                var start = isBezierCurve(point) ? point.start : point;\r\n                if (index === 0) {\r\n                    _this.ctx.moveTo(start.x, start.y);\r\n                }\r\n                else {\r\n                    _this.ctx.lineTo(start.x, start.y);\r\n                }\r\n                if (isBezierCurve(point)) {\r\n                    _this.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y);\r\n                }\r\n            });\r\n        };\r\n        CanvasRenderer.prototype.renderRepeat = function (path, pattern, offsetX, offsetY) {\r\n            this.path(path);\r\n            this.ctx.fillStyle = pattern;\r\n            this.ctx.translate(offsetX, offsetY);\r\n            this.ctx.fill();\r\n            this.ctx.translate(-offsetX, -offsetY);\r\n        };\r\n        CanvasRenderer.prototype.resizeImage = function (image, width, height) {\r\n            var _a;\r\n            if (image.width === width && image.height === height) {\r\n                return image;\r\n            }\r\n            var ownerDocument = (_a = this.canvas.ownerDocument) !== null && _a !== void 0 ? _a : document;\r\n            var canvas = ownerDocument.createElement('canvas');\r\n            canvas.width = Math.max(1, width);\r\n            canvas.height = Math.max(1, height);\r\n            var ctx = canvas.getContext('2d');\r\n            ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);\r\n            return canvas;\r\n        };\r\n        CanvasRenderer.prototype.renderBackgroundImage = function (container) {\r\n            return __awaiter(this, void 0, void 0, function () {\r\n                var index, _loop_1, this_1, _i, _a, backgroundImage;\r\n                return __generator(this, function (_b) {\r\n                    switch (_b.label) {\r\n                        case 0:\r\n                            index = container.styles.backgroundImage.length - 1;\r\n                            _loop_1 = function (backgroundImage) {\r\n                                var image, url, _c, path, x, y, width, height, pattern, _d, path, x, y, width, height, _e, lineLength, x0, x1, y0, y1, canvas, ctx, gradient_1, pattern, _f, path, left, top_1, width, height, position, x, y, _g, rx, ry, radialGradient_1, midX, midY, f, invF;\r\n                                return __generator(this, function (_h) {\r\n                                    switch (_h.label) {\r\n                                        case 0:\r\n                                            if (!(backgroundImage.type === 0 /* URL */)) return [3 /*break*/, 5];\r\n                                            image = void 0;\r\n                                            url = backgroundImage.url;\r\n                                            _h.label = 1;\r\n                                        case 1:\r\n                                            _h.trys.push([1, 3, , 4]);\r\n                                            return [4 /*yield*/, this_1.context.cache.match(url)];\r\n                                        case 2:\r\n                                            image = _h.sent();\r\n                                            return [3 /*break*/, 4];\r\n                                        case 3:\r\n                                            _h.sent();\r\n                                            this_1.context.logger.error(\"Error loading background-image \" + url);\r\n                                            return [3 /*break*/, 4];\r\n                                        case 4:\r\n                                            if (image) {\r\n                                                _c = calculateBackgroundRendering(container, index, [\r\n                                                    image.width,\r\n                                                    image.height,\r\n                                                    image.width / image.height\r\n                                                ]), path = _c[0], x = _c[1], y = _c[2], width = _c[3], height = _c[4];\r\n                                                pattern = this_1.ctx.createPattern(this_1.resizeImage(image, width, height), 'repeat');\r\n                                                this_1.renderRepeat(path, pattern, x, y);\r\n                                            }\r\n                                            return [3 /*break*/, 6];\r\n                                        case 5:\r\n                                            if (isLinearGradient(backgroundImage)) {\r\n                                                _d = calculateBackgroundRendering(container, index, [null, null, null]), path = _d[0], x = _d[1], y = _d[2], width = _d[3], height = _d[4];\r\n                                                _e = calculateGradientDirection(backgroundImage.angle, width, height), lineLength = _e[0], x0 = _e[1], x1 = _e[2], y0 = _e[3], y1 = _e[4];\r\n                                                canvas = document.createElement('canvas');\r\n                                                canvas.width = width;\r\n                                                canvas.height = height;\r\n                                                ctx = canvas.getContext('2d');\r\n                                                gradient_1 = ctx.createLinearGradient(x0, y0, x1, y1);\r\n                                                processColorStops(backgroundImage.stops, lineLength).forEach(function (colorStop) {\r\n                                                    return gradient_1.addColorStop(colorStop.stop, asString(colorStop.color));\r\n                                                });\r\n                                                ctx.fillStyle = gradient_1;\r\n                                                ctx.fillRect(0, 0, width, height);\r\n                                                if (width > 0 && height > 0) {\r\n                                                    pattern = this_1.ctx.createPattern(canvas, 'repeat');\r\n                                                    this_1.renderRepeat(path, pattern, x, y);\r\n                                                }\r\n                                            }\r\n                                            else if (isRadialGradient(backgroundImage)) {\r\n                                                _f = calculateBackgroundRendering(container, index, [\r\n                                                    null,\r\n                                                    null,\r\n                                                    null\r\n                                                ]), path = _f[0], left = _f[1], top_1 = _f[2], width = _f[3], height = _f[4];\r\n                                                position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;\r\n                                                x = getAbsoluteValue(position[0], width);\r\n                                                y = getAbsoluteValue(position[position.length - 1], height);\r\n                                                _g = calculateRadius(backgroundImage, x, y, width, height), rx = _g[0], ry = _g[1];\r\n                                                if (rx > 0 && ry > 0) {\r\n                                                    radialGradient_1 = this_1.ctx.createRadialGradient(left + x, top_1 + y, 0, left + x, top_1 + y, rx);\r\n                                                    processColorStops(backgroundImage.stops, rx * 2).forEach(function (colorStop) {\r\n                                                        return radialGradient_1.addColorStop(colorStop.stop, asString(colorStop.color));\r\n                                                    });\r\n                                                    this_1.path(path);\r\n                                                    this_1.ctx.fillStyle = radialGradient_1;\r\n                                                    if (rx !== ry) {\r\n                                                        midX = container.bounds.left + 0.5 * container.bounds.width;\r\n                                                        midY = container.bounds.top + 0.5 * container.bounds.height;\r\n                                                        f = ry / rx;\r\n                                                        invF = 1 / f;\r\n                                                        this_1.ctx.save();\r\n                                                        this_1.ctx.translate(midX, midY);\r\n                                                        this_1.ctx.transform(1, 0, 0, f, 0, 0);\r\n                                                        this_1.ctx.translate(-midX, -midY);\r\n                                                        this_1.ctx.fillRect(left, invF * (top_1 - midY) + midY, width, height * invF);\r\n                                                        this_1.ctx.restore();\r\n                                                    }\r\n                                                    else {\r\n                                                        this_1.ctx.fill();\r\n                                                    }\r\n                                                }\r\n                                            }\r\n                                            _h.label = 6;\r\n                                        case 6:\r\n                                            index--;\r\n                                            return [2 /*return*/];\r\n                                    }\r\n                                });\r\n                            };\r\n                            this_1 = this;\r\n                            _i = 0, _a = container.styles.backgroundImage.slice(0).reverse();\r\n                            _b.label = 1;\r\n                        case 1:\r\n                            if (!(_i < _a.length)) return [3 /*break*/, 4];\r\n                            backgroundImage = _a[_i];\r\n                            return [5 /*yield**/, _loop_1(backgroundImage)];\r\n                        case 2:\r\n                            _b.sent();\r\n                            _b.label = 3;\r\n                        case 3:\r\n                            _i++;\r\n                            return [3 /*break*/, 1];\r\n                        case 4: return [2 /*return*/];\r\n                    }\r\n                });\r\n            });\r\n        };\r\n        CanvasRenderer.prototype.renderSolidBorder = function (color, side, curvePoints) {\r\n            return __awaiter(this, void 0, void 0, function () {\r\n                return __generator(this, function (_a) {\r\n                    this.path(parsePathForBorder(curvePoints, side));\r\n                    this.ctx.fillStyle = asString(color);\r\n                    this.ctx.fill();\r\n                    return [2 /*return*/];\r\n                });\r\n            });\r\n        };\r\n        CanvasRenderer.prototype.renderDoubleBorder = function (color, width, side, curvePoints) {\r\n            return __awaiter(this, void 0, void 0, function () {\r\n                var outerPaths, innerPaths;\r\n                return __generator(this, function (_a) {\r\n                    switch (_a.label) {\r\n                        case 0:\r\n                            if (!(width < 3)) return [3 /*break*/, 2];\r\n                            return [4 /*yield*/, this.renderSolidBorder(color, side, curvePoints)];\r\n                        case 1:\r\n                            _a.sent();\r\n                            return [2 /*return*/];\r\n                        case 2:\r\n                            outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);\r\n                            this.path(outerPaths);\r\n                            this.ctx.fillStyle = asString(color);\r\n                            this.ctx.fill();\r\n                            innerPaths = parsePathForBorderDoubleInner(curvePoints, side);\r\n                            this.path(innerPaths);\r\n                            this.ctx.fill();\r\n                            return [2 /*return*/];\r\n                    }\r\n                });\r\n            });\r\n        };\r\n        CanvasRenderer.prototype.renderNodeBackgroundAndBorders = function (paint) {\r\n            return __awaiter(this, void 0, void 0, function () {\r\n                var styles, hasBackground, borders, backgroundPaintingArea, side, _i, borders_1, border;\r\n                var _this = this;\r\n                return __generator(this, function (_a) {\r\n                    switch (_a.label) {\r\n                        case 0:\r\n                            this.applyEffects(paint.getEffects(2 /* BACKGROUND_BORDERS */));\r\n                            styles = paint.container.styles;\r\n                            hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;\r\n                            borders = [\r\n                                { style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth },\r\n                                { style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth },\r\n                                { style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth },\r\n                                { style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth }\r\n                            ];\r\n                            backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(getBackgroundValueForIndex(styles.backgroundClip, 0), paint.curves);\r\n                            if (!(hasBackground || styles.boxShadow.length)) return [3 /*break*/, 2];\r\n                            this.ctx.save();\r\n                            this.path(backgroundPaintingArea);\r\n                            this.ctx.clip();\r\n                            if (!isTransparent(styles.backgroundColor)) {\r\n                                this.ctx.fillStyle = asString(styles.backgroundColor);\r\n                                this.ctx.fill();\r\n                            }\r\n                            return [4 /*yield*/, this.renderBackgroundImage(paint.container)];\r\n                        case 1:\r\n                            _a.sent();\r\n                            this.ctx.restore();\r\n                            styles.boxShadow\r\n                                .slice(0)\r\n                                .reverse()\r\n                                .forEach(function (shadow) {\r\n                                _this.ctx.save();\r\n                                var borderBoxArea = calculateBorderBoxPath(paint.curves);\r\n                                var maskOffset = shadow.inset ? 0 : MASK_OFFSET;\r\n                                var shadowPaintingArea = transformPath(borderBoxArea, -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number, (shadow.inset ? 1 : -1) * shadow.spread.number, shadow.spread.number * (shadow.inset ? -2 : 2), shadow.spread.number * (shadow.inset ? -2 : 2));\r\n                                if (shadow.inset) {\r\n                                    _this.path(borderBoxArea);\r\n                                    _this.ctx.clip();\r\n                                    _this.mask(shadowPaintingArea);\r\n                                }\r\n                                else {\r\n                                    _this.mask(borderBoxArea);\r\n                                    _this.ctx.clip();\r\n                                    _this.path(shadowPaintingArea);\r\n                                }\r\n                                _this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;\r\n                                _this.ctx.shadowOffsetY = shadow.offsetY.number;\r\n                                _this.ctx.shadowColor = asString(shadow.color);\r\n                                _this.ctx.shadowBlur = shadow.blur.number;\r\n                                _this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';\r\n                                _this.ctx.fill();\r\n                                _this.ctx.restore();\r\n                            });\r\n                            _a.label = 2;\r\n                        case 2:\r\n                            side = 0;\r\n                            _i = 0, borders_1 = borders;\r\n                            _a.label = 3;\r\n                        case 3:\r\n                            if (!(_i < borders_1.length)) return [3 /*break*/, 13];\r\n                            border = borders_1[_i];\r\n                            if (!(border.style !== 0 /* NONE */ && !isTransparent(border.color) && border.width > 0)) return [3 /*break*/, 11];\r\n                            if (!(border.style === 2 /* DASHED */)) return [3 /*break*/, 5];\r\n                            return [4 /*yield*/, this.renderDashedDottedBorder(border.color, border.width, side, paint.curves, 2 /* DASHED */)];\r\n                        case 4:\r\n                            _a.sent();\r\n                            return [3 /*break*/, 11];\r\n                        case 5:\r\n                            if (!(border.style === 3 /* DOTTED */)) return [3 /*break*/, 7];\r\n                            return [4 /*yield*/, this.renderDashedDottedBorder(border.color, border.width, side, paint.curves, 3 /* DOTTED */)];\r\n                        case 6:\r\n                            _a.sent();\r\n                            return [3 /*break*/, 11];\r\n                        case 7:\r\n                            if (!(border.style === 4 /* DOUBLE */)) return [3 /*break*/, 9];\r\n                            return [4 /*yield*/, this.renderDoubleBorder(border.color, border.width, side, paint.curves)];\r\n                        case 8:\r\n                            _a.sent();\r\n                            return [3 /*break*/, 11];\r\n                        case 9: return [4 /*yield*/, this.renderSolidBorder(border.color, side, paint.curves)];\r\n                        case 10:\r\n                            _a.sent();\r\n                            _a.label = 11;\r\n                        case 11:\r\n                            side++;\r\n                            _a.label = 12;\r\n                        case 12:\r\n                            _i++;\r\n                            return [3 /*break*/, 3];\r\n                        case 13: return [2 /*return*/];\r\n                    }\r\n                });\r\n            });\r\n        };\r\n        CanvasRenderer.prototype.renderDashedDottedBorder = function (color, width, side, curvePoints, style) {\r\n            return __awaiter(this, void 0, void 0, function () {\r\n                var strokePaths, boxPaths, startX, startY, endX, endY, length, dashLength, spaceLength, useLineDash, multiplier, numberOfDashes, minSpace, maxSpace, path1, path2, path1, path2;\r\n                return __generator(this, function (_a) {\r\n                    this.ctx.save();\r\n                    strokePaths = parsePathForBorderStroke(curvePoints, side);\r\n                    boxPaths = parsePathForBorder(curvePoints, side);\r\n                    if (style === 2 /* DASHED */) {\r\n                        this.path(boxPaths);\r\n                        this.ctx.clip();\r\n                    }\r\n                    if (isBezierCurve(boxPaths[0])) {\r\n                        startX = boxPaths[0].start.x;\r\n                        startY = boxPaths[0].start.y;\r\n                    }\r\n                    else {\r\n                        startX = boxPaths[0].x;\r\n                        startY = boxPaths[0].y;\r\n                    }\r\n                    if (isBezierCurve(boxPaths[1])) {\r\n                        endX = boxPaths[1].end.x;\r\n                        endY = boxPaths[1].end.y;\r\n                    }\r\n                    else {\r\n                        endX = boxPaths[1].x;\r\n                        endY = boxPaths[1].y;\r\n                    }\r\n                    if (side === 0 || side === 2) {\r\n                        length = Math.abs(startX - endX);\r\n                    }\r\n                    else {\r\n                        length = Math.abs(startY - endY);\r\n                    }\r\n                    this.ctx.beginPath();\r\n                    if (style === 3 /* DOTTED */) {\r\n                        this.formatPath(strokePaths);\r\n                    }\r\n                    else {\r\n                        this.formatPath(boxPaths.slice(0, 2));\r\n                    }\r\n                    dashLength = width < 3 ? width * 3 : width * 2;\r\n                    spaceLength = width < 3 ? width * 2 : width;\r\n                    if (style === 3 /* DOTTED */) {\r\n                        dashLength = width;\r\n                        spaceLength = width;\r\n                    }\r\n                    useLineDash = true;\r\n                    if (length <= dashLength * 2) {\r\n                        useLineDash = false;\r\n                    }\r\n                    else if (length <= dashLength * 2 + spaceLength) {\r\n                        multiplier = length / (2 * dashLength + spaceLength);\r\n                        dashLength *= multiplier;\r\n                        spaceLength *= multiplier;\r\n                    }\r\n                    else {\r\n                        numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));\r\n                        minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);\r\n                        maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;\r\n                        spaceLength =\r\n                            maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace)\r\n                                ? minSpace\r\n                                : maxSpace;\r\n                    }\r\n                    if (useLineDash) {\r\n                        if (style === 3 /* DOTTED */) {\r\n                            this.ctx.setLineDash([0, dashLength + spaceLength]);\r\n                        }\r\n                        else {\r\n                            this.ctx.setLineDash([dashLength, spaceLength]);\r\n                        }\r\n                    }\r\n                    if (style === 3 /* DOTTED */) {\r\n                        this.ctx.lineCap = 'round';\r\n                        this.ctx.lineWidth = width;\r\n                    }\r\n                    else {\r\n                        this.ctx.lineWidth = width * 2 + 1.1;\r\n                    }\r\n                    this.ctx.strokeStyle = asString(color);\r\n                    this.ctx.stroke();\r\n                    this.ctx.setLineDash([]);\r\n                    // dashed round edge gap\r\n                    if (style === 2 /* DASHED */) {\r\n                        if (isBezierCurve(boxPaths[0])) {\r\n                            path1 = boxPaths[3];\r\n                            path2 = boxPaths[0];\r\n                            this.ctx.beginPath();\r\n                            this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\r\n                            this.ctx.stroke();\r\n                        }\r\n                        if (isBezierCurve(boxPaths[1])) {\r\n                            path1 = boxPaths[1];\r\n                            path2 = boxPaths[2];\r\n                            this.ctx.beginPath();\r\n                            this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\r\n                            this.ctx.stroke();\r\n                        }\r\n                    }\r\n                    this.ctx.restore();\r\n                    return [2 /*return*/];\r\n                });\r\n            });\r\n        };\r\n        CanvasRenderer.prototype.render = function (element) {\r\n            return __awaiter(this, void 0, void 0, function () {\r\n                var stack;\r\n                return __generator(this, function (_a) {\r\n                    switch (_a.label) {\r\n                        case 0:\r\n                            if (this.options.backgroundColor) {\r\n                                this.ctx.fillStyle = asString(this.options.backgroundColor);\r\n                                this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);\r\n                            }\r\n                            stack = parseStackingContexts(element);\r\n                            return [4 /*yield*/, this.renderStack(stack)];\r\n                        case 1:\r\n                            _a.sent();\r\n                            this.applyEffects([]);\r\n                            return [2 /*return*/, this.canvas];\r\n                    }\r\n                });\r\n            });\r\n        };\r\n        return CanvasRenderer;\r\n    }(Renderer));\r\n    var isTextInputElement = function (container) {\r\n        if (container instanceof TextareaElementContainer) {\r\n            return true;\r\n        }\r\n        else if (container instanceof SelectElementContainer) {\r\n            return true;\r\n        }\r\n        else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {\r\n            return true;\r\n        }\r\n        return false;\r\n    };\r\n    var calculateBackgroundCurvedPaintingArea = function (clip, curves) {\r\n        switch (clip) {\r\n            case 0 /* BORDER_BOX */:\r\n                return calculateBorderBoxPath(curves);\r\n            case 2 /* CONTENT_BOX */:\r\n                return calculateContentBoxPath(curves);\r\n            case 1 /* PADDING_BOX */:\r\n            default:\r\n                return calculatePaddingBoxPath(curves);\r\n        }\r\n    };\r\n    var canvasTextAlign = function (textAlign) {\r\n        switch (textAlign) {\r\n            case 1 /* CENTER */:\r\n                return 'center';\r\n            case 2 /* RIGHT */:\r\n                return 'right';\r\n            case 0 /* LEFT */:\r\n            default:\r\n                return 'left';\r\n        }\r\n    };\r\n    // see https://github.com/niklasvh/html2canvas/pull/2645\r\n    var iOSBrokenFonts = ['-apple-system', 'system-ui'];\r\n    var fixIOSSystemFonts = function (fontFamilies) {\r\n        return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent)\r\n            ? fontFamilies.filter(function (fontFamily) { return iOSBrokenFonts.indexOf(fontFamily) === -1; })\r\n            : fontFamilies;\r\n    };\r\n\r\n    var ForeignObjectRenderer = /** @class */ (function (_super) {\r\n        __extends(ForeignObjectRenderer, _super);\r\n        function ForeignObjectRenderer(context, options) {\r\n            var _this = _super.call(this, context, options) || this;\r\n            _this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\r\n            _this.ctx = _this.canvas.getContext('2d');\r\n            _this.options = options;\r\n            _this.canvas.width = Math.floor(options.width * options.scale);\r\n            _this.canvas.height = Math.floor(options.height * options.scale);\r\n            _this.canvas.style.width = options.width + \"px\";\r\n            _this.canvas.style.height = options.height + \"px\";\r\n            _this.ctx.scale(_this.options.scale, _this.options.scale);\r\n            _this.ctx.translate(-options.x, -options.y);\r\n            _this.context.logger.debug(\"EXPERIMENTAL ForeignObject renderer initialized (\" + options.width + \"x\" + options.height + \" at \" + options.x + \",\" + options.y + \") with scale \" + options.scale);\r\n            return _this;\r\n        }\r\n        ForeignObjectRenderer.prototype.render = function (element) {\r\n            return __awaiter(this, void 0, void 0, function () {\r\n                var svg, img;\r\n                return __generator(this, function (_a) {\r\n                    switch (_a.label) {\r\n                        case 0:\r\n                            svg = createForeignObjectSVG(this.options.width * this.options.scale, this.options.height * this.options.scale, this.options.scale, this.options.scale, element);\r\n                            return [4 /*yield*/, loadSerializedSVG(svg)];\r\n                        case 1:\r\n                            img = _a.sent();\r\n                            if (this.options.backgroundColor) {\r\n                                this.ctx.fillStyle = asString(this.options.backgroundColor);\r\n                                this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);\r\n                            }\r\n                            this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);\r\n                            return [2 /*return*/, this.canvas];\r\n                    }\r\n                });\r\n            });\r\n        };\r\n        return ForeignObjectRenderer;\r\n    }(Renderer));\r\n    var loadSerializedSVG = function (svg) {\r\n        return new Promise(function (resolve, reject) {\r\n            var img = new Image();\r\n            img.onload = function () {\r\n                resolve(img);\r\n            };\r\n            img.onerror = reject;\r\n            img.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(svg));\r\n        });\r\n    };\r\n\r\n    var Logger = /** @class */ (function () {\r\n        function Logger(_a) {\r\n            var id = _a.id, enabled = _a.enabled;\r\n            this.id = id;\r\n            this.enabled = enabled;\r\n            this.start = Date.now();\r\n        }\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        Logger.prototype.debug = function () {\r\n            var args = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args[_i] = arguments[_i];\r\n            }\r\n            if (this.enabled) {\r\n                // eslint-disable-next-line no-console\r\n                if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {\r\n                    // eslint-disable-next-line no-console\r\n                    console.debug.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\r\n                }\r\n                else {\r\n                    this.info.apply(this, args);\r\n                }\r\n            }\r\n        };\r\n        Logger.prototype.getTime = function () {\r\n            return Date.now() - this.start;\r\n        };\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        Logger.prototype.info = function () {\r\n            var args = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args[_i] = arguments[_i];\r\n            }\r\n            if (this.enabled) {\r\n                // eslint-disable-next-line no-console\r\n                if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {\r\n                    // eslint-disable-next-line no-console\r\n                    console.info.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\r\n                }\r\n            }\r\n        };\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        Logger.prototype.warn = function () {\r\n            var args = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args[_i] = arguments[_i];\r\n            }\r\n            if (this.enabled) {\r\n                // eslint-disable-next-line no-console\r\n                if (typeof window !== 'undefined' && window.console && typeof console.warn === 'function') {\r\n                    // eslint-disable-next-line no-console\r\n                    console.warn.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\r\n                }\r\n                else {\r\n                    this.info.apply(this, args);\r\n                }\r\n            }\r\n        };\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        Logger.prototype.error = function () {\r\n            var args = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args[_i] = arguments[_i];\r\n            }\r\n            if (this.enabled) {\r\n                // eslint-disable-next-line no-console\r\n                if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {\r\n                    // eslint-disable-next-line no-console\r\n                    console.error.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\r\n                }\r\n                else {\r\n                    this.info.apply(this, args);\r\n                }\r\n            }\r\n        };\r\n        Logger.instances = {};\r\n        return Logger;\r\n    }());\r\n\r\n    var Context = /** @class */ (function () {\r\n        function Context(options, windowBounds) {\r\n            var _a;\r\n            this.windowBounds = windowBounds;\r\n            this.instanceName = \"#\" + Context.instanceCount++;\r\n            this.logger = new Logger({ id: this.instanceName, enabled: options.logging });\r\n            this.cache = (_a = options.cache) !== null && _a !== void 0 ? _a : new Cache(this, options);\r\n        }\r\n        Context.instanceCount = 1;\r\n        return Context;\r\n    }());\r\n\r\n    var html2canvas = function (element, options) {\r\n        if (options === void 0) { options = {}; }\r\n        return renderElement(element, options);\r\n    };\r\n    if (typeof window !== 'undefined') {\r\n        CacheStorage.setContext(window);\r\n    }\r\n    var renderElement = function (element, opts) { return __awaiter(void 0, void 0, void 0, function () {\r\n        var ownerDocument, defaultView, resourceOptions, contextOptions, windowOptions, windowBounds, context, foreignObjectRendering, cloneOptions, documentCloner, clonedElement, container, _a, width, height, left, top, backgroundColor, renderOptions, canvas, renderer, root, renderer;\r\n        var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;\r\n        return __generator(this, function (_u) {\r\n            switch (_u.label) {\r\n                case 0:\r\n                    if (!element || typeof element !== 'object') {\r\n                        return [2 /*return*/, Promise.reject('Invalid element provided as first argument')];\r\n                    }\r\n                    ownerDocument = element.ownerDocument;\r\n                    if (!ownerDocument) {\r\n                        throw new Error(\"Element is not attached to a Document\");\r\n                    }\r\n                    defaultView = ownerDocument.defaultView;\r\n                    if (!defaultView) {\r\n                        throw new Error(\"Document is not attached to a Window\");\r\n                    }\r\n                    resourceOptions = {\r\n                        allowTaint: (_b = opts.allowTaint) !== null && _b !== void 0 ? _b : false,\r\n                        imageTimeout: (_c = opts.imageTimeout) !== null && _c !== void 0 ? _c : 15000,\r\n                        proxy: opts.proxy,\r\n                        useCORS: (_d = opts.useCORS) !== null && _d !== void 0 ? _d : false\r\n                    };\r\n                    contextOptions = __assign({ logging: (_e = opts.logging) !== null && _e !== void 0 ? _e : true, cache: opts.cache }, resourceOptions);\r\n                    windowOptions = {\r\n                        windowWidth: (_f = opts.windowWidth) !== null && _f !== void 0 ? _f : defaultView.innerWidth,\r\n                        windowHeight: (_g = opts.windowHeight) !== null && _g !== void 0 ? _g : defaultView.innerHeight,\r\n                        scrollX: (_h = opts.scrollX) !== null && _h !== void 0 ? _h : defaultView.pageXOffset,\r\n                        scrollY: (_j = opts.scrollY) !== null && _j !== void 0 ? _j : defaultView.pageYOffset\r\n                    };\r\n                    windowBounds = new Bounds(windowOptions.scrollX, windowOptions.scrollY, windowOptions.windowWidth, windowOptions.windowHeight);\r\n                    context = new Context(contextOptions, windowBounds);\r\n                    foreignObjectRendering = (_k = opts.foreignObjectRendering) !== null && _k !== void 0 ? _k : false;\r\n                    cloneOptions = {\r\n                        allowTaint: (_l = opts.allowTaint) !== null && _l !== void 0 ? _l : false,\r\n                        onclone: opts.onclone,\r\n                        ignoreElements: opts.ignoreElements,\r\n                        inlineImages: foreignObjectRendering,\r\n                        copyStyles: foreignObjectRendering\r\n                    };\r\n                    context.logger.debug(\"Starting document clone with size \" + windowBounds.width + \"x\" + windowBounds.height + \" scrolled to \" + -windowBounds.left + \",\" + -windowBounds.top);\r\n                    documentCloner = new DocumentCloner(context, element, cloneOptions);\r\n                    clonedElement = documentCloner.clonedReferenceElement;\r\n                    if (!clonedElement) {\r\n                        return [2 /*return*/, Promise.reject(\"Unable to find element in cloned iframe\")];\r\n                    }\r\n                    return [4 /*yield*/, documentCloner.toIFrame(ownerDocument, windowBounds)];\r\n                case 1:\r\n                    container = _u.sent();\r\n                    _a = isBodyElement(clonedElement) || isHTMLElement(clonedElement)\r\n                        ? parseDocumentSize(clonedElement.ownerDocument)\r\n                        : parseBounds(context, clonedElement), width = _a.width, height = _a.height, left = _a.left, top = _a.top;\r\n                    backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor);\r\n                    renderOptions = {\r\n                        canvas: opts.canvas,\r\n                        backgroundColor: backgroundColor,\r\n                        scale: (_o = (_m = opts.scale) !== null && _m !== void 0 ? _m : defaultView.devicePixelRatio) !== null && _o !== void 0 ? _o : 1,\r\n                        x: ((_p = opts.x) !== null && _p !== void 0 ? _p : 0) + left,\r\n                        y: ((_q = opts.y) !== null && _q !== void 0 ? _q : 0) + top,\r\n                        width: (_r = opts.width) !== null && _r !== void 0 ? _r : Math.ceil(width),\r\n                        height: (_s = opts.height) !== null && _s !== void 0 ? _s : Math.ceil(height)\r\n                    };\r\n                    if (!foreignObjectRendering) return [3 /*break*/, 3];\r\n                    context.logger.debug(\"Document cloned, using foreign object rendering\");\r\n                    renderer = new ForeignObjectRenderer(context, renderOptions);\r\n                    return [4 /*yield*/, renderer.render(clonedElement)];\r\n                case 2:\r\n                    canvas = _u.sent();\r\n                    return [3 /*break*/, 5];\r\n                case 3:\r\n                    context.logger.debug(\"Document cloned, element located at \" + left + \",\" + top + \" with size \" + width + \"x\" + height + \" using computed rendering\");\r\n                    context.logger.debug(\"Starting DOM parsing\");\r\n                    root = parseTree(context, clonedElement);\r\n                    if (backgroundColor === root.styles.backgroundColor) {\r\n                        root.styles.backgroundColor = COLORS.TRANSPARENT;\r\n                    }\r\n                    context.logger.debug(\"Starting renderer for element at \" + renderOptions.x + \",\" + renderOptions.y + \" with size \" + renderOptions.width + \"x\" + renderOptions.height);\r\n                    renderer = new CanvasRenderer(context, renderOptions);\r\n                    return [4 /*yield*/, renderer.render(root)];\r\n                case 4:\r\n                    canvas = _u.sent();\r\n                    _u.label = 5;\r\n                case 5:\r\n                    if ((_t = opts.removeContainer) !== null && _t !== void 0 ? _t : true) {\r\n                        if (!DocumentCloner.destroy(container)) {\r\n                            context.logger.error(\"Cannot detach cloned iframe as it is not in the DOM anymore\");\r\n                        }\r\n                    }\r\n                    context.logger.debug(\"Finished rendering\");\r\n                    return [2 /*return*/, canvas];\r\n            }\r\n        });\r\n    }); };\r\n    var parseBackgroundColor = function (context, element, backgroundColorOverride) {\r\n        var ownerDocument = element.ownerDocument;\r\n        // http://www.w3.org/TR/css3-background/#special-backgrounds\r\n        var documentBackgroundColor = ownerDocument.documentElement\r\n            ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor)\r\n            : COLORS.TRANSPARENT;\r\n        var bodyBackgroundColor = ownerDocument.body\r\n            ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor)\r\n            : COLORS.TRANSPARENT;\r\n        var defaultBackgroundColor = typeof backgroundColorOverride === 'string'\r\n            ? parseColor(context, backgroundColorOverride)\r\n            : backgroundColorOverride === null\r\n                ? COLORS.TRANSPARENT\r\n                : 0xffffffff;\r\n        return element === ownerDocument.documentElement\r\n            ? isTransparent(documentBackgroundColor)\r\n                ? isTransparent(bodyBackgroundColor)\r\n                    ? defaultBackgroundColor\r\n                    : bodyBackgroundColor\r\n                : documentBackgroundColor\r\n            : defaultBackgroundColor;\r\n    };\r\n\r\n    return html2canvas;\r\n\r\n})));\r\n//# sourceMappingURL=html2canvas.js.map\r\n;\n","define('drops/businessProcessCanvas/businessProcessCanvas',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'lq/dropFactory',\r\n    'drops/drawings/businessprocessEvents',\r\n    'drops/drawings/runtimeTypesProvider',\r\n    'lq/onlongpress',\r\n    'html2canvas',\r\n    'when'\r\n],\r\nfunction (\r\n    $,\r\n    Drop,\r\n    Style,\r\n    util,\r\n    DropFactory,\r\n    businessProcessEvents,\r\n    runtimeTypesProvider,\r\n    OnLongPress,\r\n    html2canvas,\r\n    when) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            text: 'Guid',\r\n            longPressDelay: 1000\r\n        }\r\n    };\r\n\r\n    function BusinessProcessCanvas(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        var self = this;\r\n\r\n        self.rootDrop = this;\r\n        self.drawingDropFactory = new DropFactory(runtimeTypesProvider, false);\r\n\r\n        self.data.eventing = util.convertListOfKeyValuesToObject(self.data.eventing);\r\n\r\n        self.$canvas = $('<div/>')\r\n            .addClass('boxToBorderSize')\r\n            .attr('name', self.data.name)\r\n            .appendTo(self.$element)\r\n            .attr('tabindex', self.data.tabIndex)\r\n            .css({\r\n                overflow: \"scroll\",\r\n                position: \"relative\",\r\n                display: \"block\",\r\n                verticalAlign: 'middle',\r\n                width: '100%',\r\n                height: '100%'\r\n            });\r\n\r\n        self.$element\r\n            .css({\r\n                whiteSpace: 'pre-wrap',\r\n                display: \"block\"\r\n            });\r\n\r\n        //new OnLongPress().applyLongPressOnElement(this.$canvas, this);\r\n\r\n        Style.renderStyles(self,null, self.$canvas);\r\n\r\n        return self;\r\n    };\r\n\r\n    Drop.extend(BusinessProcessCanvas, Drop);\r\n\r\n    BusinessProcessCanvas.typeName = 'BusinessProcessCanvas';\r\n\r\n    BusinessProcessCanvas.prototype.setValue = function (update) {\r\n        var self = this;\r\n        self.piping.dispatcher.dispatch(\r\n            'LicquidAction/GetDrawing',\r\n            {\r\n                id: update.value\r\n            },\r\n            function (result) {\r\n                self.$canvas.empty();\r\n\r\n                var drops = self.drawingDropFactory.createDrops(result.drawing.childDrops);\r\n\r\n                _.each(drops, function (drop) {\r\n                    drop.piping = self.piping;\r\n                    drop.render(self.$canvas);\r\n                });\r\n\r\n                _.each(drops, function (drop) {\r\n                    businessProcessEvents.informListeners('bp_element_moved_' + drop.data.id, drop);\r\n                });\r\n            }\r\n        );\r\n    };\r\n\r\n    BusinessProcessCanvas.prototype.renderStyles = function () {\r\n        Style.renderStyles(this, null, this.$canvas);\r\n    };\r\n\r\n    BusinessProcessCanvas.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n    };\r\n\r\n    var getWidth = function ($canvas, $milestones) {\r\n        var width = 0;\r\n\r\n        if ($milestones.length) {\r\n            $milestones\r\n                .each(function () {\r\n                    width += $(this).outerWidth(true);\r\n                });\r\n\r\n            return width;\r\n        } else {\r\n            $canvas.children()\r\n                .each(function () {\r\n                    var $element = $(this);\r\n                    if ($element.height()) {\r\n                        var right = $element.position().left + $element.outerWidth();\r\n                        if (right > width) {\r\n                            width = right;\r\n                        }\r\n                    }\r\n                });     \r\n        }\r\n\r\n        return width;\r\n    };\r\n\r\n    var getHeight = function ($canvas, $milestones) {\r\n        if ($milestones.length)\r\n            return $milestones.height();\r\n        return $canvas.get(0).scrollHeight;\r\n    };\r\n\r\n    var getDimensions = function ($canvas) {\r\n        var $milestones = $canvas\r\n            .children('.bp-milestone');\r\n\r\n        return {\r\n            width: getWidth($canvas, $milestones),\r\n            height: getHeight($canvas, $milestones)\r\n        };\r\n    }\r\n\r\n    BusinessProcessCanvas.prototype.getFile = function () {\r\n        var deferred = when.defer();\r\n\r\n        var dimensions = getDimensions(this.$canvas);\r\n\r\n        var $copy = this.$canvas\r\n            .clone()\r\n            .css({\r\n                position: 'relative',\r\n                width: dimensions.width + 'px',\r\n                height: dimensions.height + 'px'\r\n            })\r\n            .appendTo($('body'));\r\n\r\n        html2canvas($copy.get(0)).then(function (canvas) {\r\n            var image = canvas.toDataURL('image/png');\r\n            deferred.resolve(image);\r\n\r\n            $copy.remove();\r\n        });\r\n\r\n        return deferred.promise;\r\n    };\r\n\r\n    return BusinessProcessCanvas;\r\n});\n","define('drops/button/button',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'lq/onlongpress',\r\n    'lq/tooltip'\r\n], function ($, Drop, Style, util, OnLongPress, Tooltip) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            text: 'New Button',\r\n            useDynamicWidth: true,\r\n            useDynamicHeight: true,\r\n            longPressDelay: 1000,\r\n            activeStyleDuration: 0,\r\n            state: 'enabled',\r\n            title: {\r\n                option: Tooltip.hardcoded\r\n            },\r\n        }\r\n    };\r\n\r\n    function Button(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.defaultStyleSettings = {\r\n            text: { verticalAlign: 'middle' }\r\n        };\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing);\r\n\r\n        this.$button = $('<div/>')\r\n            .addClass('boxToBorderSize drop-text-content')\r\n            .attr('name', this.data.name)\r\n            .text(this.data.text)\r\n            .attr('tabindex', this.data.tabIndex)\r\n            .css({\r\n                cursor: 'pointer',\r\n                display: 'flex',\r\n                flexDirection: 'column',\r\n                flex: '1 1 100%',\r\n                width: '100%'\r\n            });\r\n\r\n        this.tooltip = new Tooltip(this, this.data.title, this.$button);\r\n\r\n        // WHY setting 'display: table' on $element would break centered anchoring, so we have to add a wrapper\r\n        this.$element\r\n            .append($('<div />')\r\n                .css({\r\n                    display: 'flex',\r\n                    whiteSpace: 'pre-wrap',\r\n                    height: '100%',\r\n                    width: '100%'\r\n                })\r\n                .append(this.$button));\r\n\r\n        Style.renderStyles(this, null, this.$button);\r\n\r\n        if (this.data.state === 'enabled') {\r\n            this.enable();\r\n        } else {\r\n            this.disable();\r\n        }\r\n\r\n        if (this.data.activeStyleDuration > 0) {\r\n            this.$element\r\n                .on('click', this.triggerActiveStyle.bind(this));\r\n        }\r\n\r\n        this.applyEventTrigger('mouseEnter', 'mouseenter');\r\n        this.applyEventTrigger('mouseLeave', 'mouseleave');\r\n    };\r\n\r\n    Drop.extend(Button);\r\n\r\n    Button.typeName = 'Button';\r\n\r\n    Button.prototype.triggerActiveStyle = function () {\r\n        this.$button.addClass('active');\r\n\r\n        var self = this;\r\n        setTimeout(function () {\r\n            self.$button.removeClass('active');\r\n        }, this.data.activeStyleDuration);\r\n    };\r\n\r\n    Button.prototype.renderStyles = function () {\r\n        Style.renderStyles(this, null, this.$button);\r\n    };\r\n\r\n    Button.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n        this.$button.text(this.data.text)\r\n        this.tooltip.update();\r\n    };\r\n\r\n    Button.prototype.licquidMethod_enable = function() {\r\n        this.enable();\r\n    };\r\n\r\n    Button.prototype.enable = function () {\r\n        new OnLongPress().applyLongPressOnElement(this.$button, this);\r\n        if (this.data.eventing && this.data.eventing.clicked && this.data.eventing.clicked.enabled === true) {\r\n            var self = this;\r\n            this.$element\r\n                .on('keypress', function (e) {\r\n                    if (e.keyCode === 13) {\r\n                        self.triggerEvent(self.data.eventing.clicked.raisedEventName);\r\n                    }\r\n                });\r\n        }\r\n\r\n        if (!this.designData)\r\n            this.$button\r\n                .css({\r\n                    cursor: 'pointer'\r\n                })\r\n\r\n        this.$button.removeClass('disabled');\r\n    };\r\n\r\n    Button.prototype.licquidMethod_disable = function() {\r\n        this.disable();\r\n    };\r\n\r\n    Button.prototype.disable = function () {\r\n        if (!this.designData)\r\n            this.$button\r\n                .css({\r\n                    cursor: 'default'\r\n                })\r\n\r\n        this.$button.addClass('disabled');\r\n\r\n        this.unsubscribeEventHandlers();\r\n    };\r\n\r\n    Button.prototype.unsubscribeEventHandlers = function () {\r\n        this.$element.off('clicked');\r\n        this.$element.off('keypress');\r\n    };\r\n\r\n    return Button;\r\n});\n","define('drops/buttonWithIcon/buttonWithIcon',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'lq/tooltip',\r\n    'lq/onlongpress'\r\n], function ($, Drop, Style, util, Tooltip, OnLongPress) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            icon: '?',\r\n            text: 'New Button with Icon',\r\n            iconAlignment: 'left',\r\n            title: {\r\n                option: Tooltip.hardcoded\r\n            },\r\n            useDynamicWidth: true,\r\n            useDynamicHeight: true,\r\n            longPressDelay: 1000,\r\n            activeStyleDuration: 0\r\n        }\r\n    };\r\n\r\n    function ButtonWithIcon(options) {\r\n        var self = this;\r\n\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.defaultStyleSettings = {\r\n            text: { verticalAlign: 'middle' }\r\n        };\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing);\r\n\r\n        this.$icon = $('<span class=\"buttonIcon drop-text-content\">' + this.data.icon + '</span>');\r\n\r\n        this.$text = $('<span class=\"text drop-text-content\">' + this.data.text + '</span>');\r\n\r\n        this.$button = $('<div/>')\r\n            .addClass('boxToBorderSize drop-text-content')\r\n            .attr('name', this.data.name)\r\n            .append((this.data.iconAlignment === 'left' || this.data.iconAlignment === 'top') ? this.$icon : this.$text)\r\n            .append((this.data.iconAlignment === 'left' || this.data.iconAlignment === 'top') ? this.$text : this.$icon)\r\n            .addClass((this.data.iconAlignment === 'top' || this.data.iconAlignment === 'bottom') ? 'flex-column' : 'flex-row')\r\n            .attr('tabindex', this.data.tabIndex)\r\n            .css({\r\n                display: 'flex',\r\n                flex: '1 1 100%',\r\n                width: '100%'\r\n            });\r\n\r\n        // WHY setting 'display: table' on $element would break centered anchoring, so we have to add a wrapper\r\n        this.$element\r\n            .append($('<div />')\r\n                .css({\r\n                    cursor: 'pointer',\r\n                    display: 'flex',\r\n                    whiteSpace: 'pre-wrap',\r\n                    height: '100%',\r\n                    width: '100%'\r\n                })\r\n                .append(this.$button));\r\n\r\n        new OnLongPress().applyLongPressOnElement(this.$button, this);\r\n        if (this.data.eventing && this.data.eventing.clicked && this.data.eventing.clicked.enabled === true) {\r\n            var self = this;\r\n            this.$element\r\n                .on('keypress', function (e) {\r\n                    if (e.keyCode === 13) {\r\n                        self.triggerEvent(self.data.eventing.clicked.raisedEventName);\r\n                    }\r\n\t            });\r\n        }\r\n\r\n        if (this.data.activeStyleDuration > 0) {\r\n            this.$element\r\n                .on('click', this.triggerActiveStyle.bind(this));\r\n        }\r\n\r\n        this.applyEventTrigger('mouseEnter', 'mouseenter');\r\n        this.applyEventTrigger('mouseLeave', 'mouseleave');\r\n\r\n        this.tooltip = new Tooltip(this, this.data.title, this.$element);\r\n    };\r\n\r\n    Drop.extend(ButtonWithIcon);\r\n\r\n    ButtonWithIcon.typeName = 'ButtonWithIcon';\r\n\r\n    ButtonWithIcon.prototype.triggerActiveStyle = function () {\r\n        this.$button.addClass('active');\r\n\r\n        var self = this;\r\n        setTimeout(function () {\r\n            self.$button.removeClass('active');\r\n        }, this.data.activeStyleDuration);\r\n    };\r\n\r\n    ButtonWithIcon.prototype.renderStyles = function () {\r\n        Style.renderStyles(this, null, this.$button);\r\n        if (typeof this.data.styles === 'object' && this.data.styles.buttonIcon)\r\n            Style.renderStyles(this, null, this.$icon, this.data.styles, \"buttonIcon\");\r\n\r\n        // WHY: the text-stylings of the main element should affect $text sub-element, but not $icon\r\n        this.moveAttributeToTextElement('font-style', 'normal');\r\n        this.moveAttributeToTextElement('text-decoration', 'none');\r\n        this.moveAttributeToTextElement('text-transform', 'none');\r\n    };\r\n\r\n    ButtonWithIcon.prototype.preRender = function () {\r\n        this.tooltip.update();\r\n\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n    };\r\n\r\n    ButtonWithIcon.prototype.postRender = function () {\r\n        this.renderStyles();\r\n    };\r\n\r\n    ButtonWithIcon.prototype.moveAttributeToTextElement = function (attributeName, parentReplacement) {\r\n        this.$text.css(attributeName, this.$button.css(attributeName));\r\n        this.$button.css(attributeName, parentReplacement);\r\n    };\r\n\r\n    return ButtonWithIcon;\r\n});\n","var luxon = (function (exports) {\r\n    'use strict';\r\n  \r\n    function _defineProperties(target, props) {\r\n      for (var i = 0; i < props.length; i++) {\r\n        var descriptor = props[i];\r\n        descriptor.enumerable = descriptor.enumerable || false;\r\n        descriptor.configurable = true;\r\n        if (\"value\" in descriptor) descriptor.writable = true;\r\n        Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\r\n      }\r\n    }\r\n    function _createClass(Constructor, protoProps, staticProps) {\r\n      if (protoProps) _defineProperties(Constructor.prototype, protoProps);\r\n      if (staticProps) _defineProperties(Constructor, staticProps);\r\n      Object.defineProperty(Constructor, \"prototype\", {\r\n        writable: false\r\n      });\r\n      return Constructor;\r\n    }\r\n    function _extends() {\r\n      _extends = Object.assign ? Object.assign.bind() : function (target) {\r\n        for (var i = 1; i < arguments.length; i++) {\r\n          var source = arguments[i];\r\n          for (var key in source) {\r\n            if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n              target[key] = source[key];\r\n            }\r\n          }\r\n        }\r\n        return target;\r\n      };\r\n      return _extends.apply(this, arguments);\r\n    }\r\n    function _inheritsLoose(subClass, superClass) {\r\n      subClass.prototype = Object.create(superClass.prototype);\r\n      subClass.prototype.constructor = subClass;\r\n      _setPrototypeOf(subClass, superClass);\r\n    }\r\n    function _getPrototypeOf(o) {\r\n      _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\r\n        return o.__proto__ || Object.getPrototypeOf(o);\r\n      };\r\n      return _getPrototypeOf(o);\r\n    }\r\n    function _setPrototypeOf(o, p) {\r\n      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\r\n        o.__proto__ = p;\r\n        return o;\r\n      };\r\n      return _setPrototypeOf(o, p);\r\n    }\r\n    function _isNativeReflectConstruct() {\r\n      if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\r\n      if (Reflect.construct.sham) return false;\r\n      if (typeof Proxy === \"function\") return true;\r\n      try {\r\n        Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\r\n        return true;\r\n      } catch (e) {\r\n        return false;\r\n      }\r\n    }\r\n    function _construct(Parent, args, Class) {\r\n      if (_isNativeReflectConstruct()) {\r\n        _construct = Reflect.construct.bind();\r\n      } else {\r\n        _construct = function _construct(Parent, args, Class) {\r\n          var a = [null];\r\n          a.push.apply(a, args);\r\n          var Constructor = Function.bind.apply(Parent, a);\r\n          var instance = new Constructor();\r\n          if (Class) _setPrototypeOf(instance, Class.prototype);\r\n          return instance;\r\n        };\r\n      }\r\n      return _construct.apply(null, arguments);\r\n    }\r\n    function _isNativeFunction(fn) {\r\n      return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\r\n    }\r\n    function _wrapNativeSuper(Class) {\r\n      var _cache = typeof Map === \"function\" ? new Map() : undefined;\r\n      _wrapNativeSuper = function _wrapNativeSuper(Class) {\r\n        if (Class === null || !_isNativeFunction(Class)) return Class;\r\n        if (typeof Class !== \"function\") {\r\n          throw new TypeError(\"Super expression must either be null or a function\");\r\n        }\r\n        if (typeof _cache !== \"undefined\") {\r\n          if (_cache.has(Class)) return _cache.get(Class);\r\n          _cache.set(Class, Wrapper);\r\n        }\r\n        function Wrapper() {\r\n          return _construct(Class, arguments, _getPrototypeOf(this).constructor);\r\n        }\r\n        Wrapper.prototype = Object.create(Class.prototype, {\r\n          constructor: {\r\n            value: Wrapper,\r\n            enumerable: false,\r\n            writable: true,\r\n            configurable: true\r\n          }\r\n        });\r\n        return _setPrototypeOf(Wrapper, Class);\r\n      };\r\n      return _wrapNativeSuper(Class);\r\n    }\r\n    function _objectWithoutPropertiesLoose(source, excluded) {\r\n      if (source == null) return {};\r\n      var target = {};\r\n      var sourceKeys = Object.keys(source);\r\n      var key, i;\r\n      for (i = 0; i < sourceKeys.length; i++) {\r\n        key = sourceKeys[i];\r\n        if (excluded.indexOf(key) >= 0) continue;\r\n        target[key] = source[key];\r\n      }\r\n      return target;\r\n    }\r\n    function _unsupportedIterableToArray(o, minLen) {\r\n      if (!o) return;\r\n      if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\r\n      var n = Object.prototype.toString.call(o).slice(8, -1);\r\n      if (n === \"Object\" && o.constructor) n = o.constructor.name;\r\n      if (n === \"Map\" || n === \"Set\") return Array.from(o);\r\n      if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\r\n    }\r\n    function _arrayLikeToArray(arr, len) {\r\n      if (len == null || len > arr.length) len = arr.length;\r\n      for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\r\n      return arr2;\r\n    }\r\n    function _createForOfIteratorHelperLoose(o, allowArrayLike) {\r\n      var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\r\n      if (it) return (it = it.call(o)).next.bind(it);\r\n      if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\r\n        if (it) o = it;\r\n        var i = 0;\r\n        return function () {\r\n          if (i >= o.length) return {\r\n            done: true\r\n          };\r\n          return {\r\n            done: false,\r\n            value: o[i++]\r\n          };\r\n        };\r\n      }\r\n      throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\r\n    }\r\n    function _toPrimitive(input, hint) {\r\n      if (typeof input !== \"object\" || input === null) return input;\r\n      var prim = input[Symbol.toPrimitive];\r\n      if (prim !== undefined) {\r\n        var res = prim.call(input, hint || \"default\");\r\n        if (typeof res !== \"object\") return res;\r\n        throw new TypeError(\"@@toPrimitive must return a primitive value.\");\r\n      }\r\n      return (hint === \"string\" ? String : Number)(input);\r\n    }\r\n    function _toPropertyKey(arg) {\r\n      var key = _toPrimitive(arg, \"string\");\r\n      return typeof key === \"symbol\" ? key : String(key);\r\n    }\r\n  \r\n    // these aren't really private, but nor are they really useful to document\r\n    /**\r\n     * @private\r\n     */\r\n    var LuxonError = /*#__PURE__*/function (_Error) {\r\n      _inheritsLoose(LuxonError, _Error);\r\n      function LuxonError() {\r\n        return _Error.apply(this, arguments) || this;\r\n      }\r\n      return LuxonError;\r\n    }( /*#__PURE__*/_wrapNativeSuper(Error));\r\n    /**\r\n     * @private\r\n     */\r\n    var InvalidDateTimeError = /*#__PURE__*/function (_LuxonError) {\r\n      _inheritsLoose(InvalidDateTimeError, _LuxonError);\r\n      function InvalidDateTimeError(reason) {\r\n        return _LuxonError.call(this, \"Invalid DateTime: \" + reason.toMessage()) || this;\r\n      }\r\n      return InvalidDateTimeError;\r\n    }(LuxonError);\r\n  \r\n    /**\r\n     * @private\r\n     */\r\n    var InvalidIntervalError = /*#__PURE__*/function (_LuxonError2) {\r\n      _inheritsLoose(InvalidIntervalError, _LuxonError2);\r\n      function InvalidIntervalError(reason) {\r\n        return _LuxonError2.call(this, \"Invalid Interval: \" + reason.toMessage()) || this;\r\n      }\r\n      return InvalidIntervalError;\r\n    }(LuxonError);\r\n  \r\n    /**\r\n     * @private\r\n     */\r\n    var InvalidDurationError = /*#__PURE__*/function (_LuxonError3) {\r\n      _inheritsLoose(InvalidDurationError, _LuxonError3);\r\n      function InvalidDurationError(reason) {\r\n        return _LuxonError3.call(this, \"Invalid Duration: \" + reason.toMessage()) || this;\r\n      }\r\n      return InvalidDurationError;\r\n    }(LuxonError);\r\n  \r\n    /**\r\n     * @private\r\n     */\r\n    var ConflictingSpecificationError = /*#__PURE__*/function (_LuxonError4) {\r\n      _inheritsLoose(ConflictingSpecificationError, _LuxonError4);\r\n      function ConflictingSpecificationError() {\r\n        return _LuxonError4.apply(this, arguments) || this;\r\n      }\r\n      return ConflictingSpecificationError;\r\n    }(LuxonError);\r\n  \r\n    /**\r\n     * @private\r\n     */\r\n    var InvalidUnitError = /*#__PURE__*/function (_LuxonError5) {\r\n      _inheritsLoose(InvalidUnitError, _LuxonError5);\r\n      function InvalidUnitError(unit) {\r\n        return _LuxonError5.call(this, \"Invalid unit \" + unit) || this;\r\n      }\r\n      return InvalidUnitError;\r\n    }(LuxonError);\r\n  \r\n    /**\r\n     * @private\r\n     */\r\n    var InvalidArgumentError = /*#__PURE__*/function (_LuxonError6) {\r\n      _inheritsLoose(InvalidArgumentError, _LuxonError6);\r\n      function InvalidArgumentError() {\r\n        return _LuxonError6.apply(this, arguments) || this;\r\n      }\r\n      return InvalidArgumentError;\r\n    }(LuxonError);\r\n  \r\n    /**\r\n     * @private\r\n     */\r\n    var ZoneIsAbstractError = /*#__PURE__*/function (_LuxonError7) {\r\n      _inheritsLoose(ZoneIsAbstractError, _LuxonError7);\r\n      function ZoneIsAbstractError() {\r\n        return _LuxonError7.call(this, \"Zone is an abstract class\") || this;\r\n      }\r\n      return ZoneIsAbstractError;\r\n    }(LuxonError);\r\n  \r\n    /**\r\n     * @private\r\n     */\r\n  \r\n    var n = \"numeric\",\r\n      s = \"short\",\r\n      l = \"long\";\r\n    var DATE_SHORT = {\r\n      year: n,\r\n      month: n,\r\n      day: n\r\n    };\r\n    var DATE_MED = {\r\n      year: n,\r\n      month: s,\r\n      day: n\r\n    };\r\n    var DATE_MED_WITH_WEEKDAY = {\r\n      year: n,\r\n      month: s,\r\n      day: n,\r\n      weekday: s\r\n    };\r\n    var DATE_FULL = {\r\n      year: n,\r\n      month: l,\r\n      day: n\r\n    };\r\n    var DATE_HUGE = {\r\n      year: n,\r\n      month: l,\r\n      day: n,\r\n      weekday: l\r\n    };\r\n    var TIME_SIMPLE = {\r\n      hour: n,\r\n      minute: n\r\n    };\r\n    var TIME_WITH_SECONDS = {\r\n      hour: n,\r\n      minute: n,\r\n      second: n\r\n    };\r\n    var TIME_WITH_SHORT_OFFSET = {\r\n      hour: n,\r\n      minute: n,\r\n      second: n,\r\n      timeZoneName: s\r\n    };\r\n    var TIME_WITH_LONG_OFFSET = {\r\n      hour: n,\r\n      minute: n,\r\n      second: n,\r\n      timeZoneName: l\r\n    };\r\n    var TIME_24_SIMPLE = {\r\n      hour: n,\r\n      minute: n,\r\n      hourCycle: \"h23\"\r\n    };\r\n    var TIME_24_WITH_SECONDS = {\r\n      hour: n,\r\n      minute: n,\r\n      second: n,\r\n      hourCycle: \"h23\"\r\n    };\r\n    var TIME_24_WITH_SHORT_OFFSET = {\r\n      hour: n,\r\n      minute: n,\r\n      second: n,\r\n      hourCycle: \"h23\",\r\n      timeZoneName: s\r\n    };\r\n    var TIME_24_WITH_LONG_OFFSET = {\r\n      hour: n,\r\n      minute: n,\r\n      second: n,\r\n      hourCycle: \"h23\",\r\n      timeZoneName: l\r\n    };\r\n    var DATETIME_SHORT = {\r\n      year: n,\r\n      month: n,\r\n      day: n,\r\n      hour: n,\r\n      minute: n\r\n    };\r\n    var DATETIME_SHORT_WITH_SECONDS = {\r\n      year: n,\r\n      month: n,\r\n      day: n,\r\n      hour: n,\r\n      minute: n,\r\n      second: n\r\n    };\r\n    var DATETIME_MED = {\r\n      year: n,\r\n      month: s,\r\n      day: n,\r\n      hour: n,\r\n      minute: n\r\n    };\r\n    var DATETIME_MED_WITH_SECONDS = {\r\n      year: n,\r\n      month: s,\r\n      day: n,\r\n      hour: n,\r\n      minute: n,\r\n      second: n\r\n    };\r\n    var DATETIME_MED_WITH_WEEKDAY = {\r\n      year: n,\r\n      month: s,\r\n      day: n,\r\n      weekday: s,\r\n      hour: n,\r\n      minute: n\r\n    };\r\n    var DATETIME_FULL = {\r\n      year: n,\r\n      month: l,\r\n      day: n,\r\n      hour: n,\r\n      minute: n,\r\n      timeZoneName: s\r\n    };\r\n    var DATETIME_FULL_WITH_SECONDS = {\r\n      year: n,\r\n      month: l,\r\n      day: n,\r\n      hour: n,\r\n      minute: n,\r\n      second: n,\r\n      timeZoneName: s\r\n    };\r\n    var DATETIME_HUGE = {\r\n      year: n,\r\n      month: l,\r\n      day: n,\r\n      weekday: l,\r\n      hour: n,\r\n      minute: n,\r\n      timeZoneName: l\r\n    };\r\n    var DATETIME_HUGE_WITH_SECONDS = {\r\n      year: n,\r\n      month: l,\r\n      day: n,\r\n      weekday: l,\r\n      hour: n,\r\n      minute: n,\r\n      second: n,\r\n      timeZoneName: l\r\n    };\r\n  \r\n    /**\r\n     * @interface\r\n     */\r\n    var Zone = /*#__PURE__*/function () {\r\n      function Zone() {}\r\n      var _proto = Zone.prototype;\r\n      /**\r\n       * Returns the offset's common name (such as EST) at the specified timestamp\r\n       * @abstract\r\n       * @param {number} ts - Epoch milliseconds for which to get the name\r\n       * @param {Object} opts - Options to affect the format\r\n       * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\r\n       * @param {string} opts.locale - What locale to return the offset name in.\r\n       * @return {string}\r\n       */\r\n      _proto.offsetName = function offsetName(ts, opts) {\r\n        throw new ZoneIsAbstractError();\r\n      }\r\n  \r\n      /**\r\n       * Returns the offset's value as a string\r\n       * @abstract\r\n       * @param {number} ts - Epoch milliseconds for which to get the offset\r\n       * @param {string} format - What style of offset to return.\r\n       *                          Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\r\n       * @return {string}\r\n       */;\r\n      _proto.formatOffset = function formatOffset(ts, format) {\r\n        throw new ZoneIsAbstractError();\r\n      }\r\n  \r\n      /**\r\n       * Return the offset in minutes for this zone at the specified timestamp.\r\n       * @abstract\r\n       * @param {number} ts - Epoch milliseconds for which to compute the offset\r\n       * @return {number}\r\n       */;\r\n      _proto.offset = function offset(ts) {\r\n        throw new ZoneIsAbstractError();\r\n      }\r\n  \r\n      /**\r\n       * Return whether this Zone is equal to another zone\r\n       * @abstract\r\n       * @param {Zone} otherZone - the zone to compare\r\n       * @return {boolean}\r\n       */;\r\n      _proto.equals = function equals(otherZone) {\r\n        throw new ZoneIsAbstractError();\r\n      }\r\n  \r\n      /**\r\n       * Return whether this Zone is valid.\r\n       * @abstract\r\n       * @type {boolean}\r\n       */;\r\n      _createClass(Zone, [{\r\n        key: \"type\",\r\n        get:\r\n        /**\r\n         * The type of zone\r\n         * @abstract\r\n         * @type {string}\r\n         */\r\n        function get() {\r\n          throw new ZoneIsAbstractError();\r\n        }\r\n  \r\n        /**\r\n         * The name of this zone.\r\n         * @abstract\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"name\",\r\n        get: function get() {\r\n          throw new ZoneIsAbstractError();\r\n        }\r\n  \r\n        /**\r\n         * The IANA name of this zone.\r\n         * Defaults to `name` if not overwritten by a subclass.\r\n         * @abstract\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"ianaName\",\r\n        get: function get() {\r\n          return this.name;\r\n        }\r\n  \r\n        /**\r\n         * Returns whether the offset is known to be fixed for the whole year.\r\n         * @abstract\r\n         * @type {boolean}\r\n         */\r\n      }, {\r\n        key: \"isUniversal\",\r\n        get: function get() {\r\n          throw new ZoneIsAbstractError();\r\n        }\r\n      }, {\r\n        key: \"isValid\",\r\n        get: function get() {\r\n          throw new ZoneIsAbstractError();\r\n        }\r\n      }]);\r\n      return Zone;\r\n    }();\r\n  \r\n    var singleton$1 = null;\r\n  \r\n    /**\r\n     * Represents the local zone for this JavaScript environment.\r\n     * @implements {Zone}\r\n     */\r\n    var SystemZone = /*#__PURE__*/function (_Zone) {\r\n      _inheritsLoose(SystemZone, _Zone);\r\n      function SystemZone() {\r\n        return _Zone.apply(this, arguments) || this;\r\n      }\r\n      var _proto = SystemZone.prototype;\r\n      /** @override **/\r\n      _proto.offsetName = function offsetName(ts, _ref) {\r\n        var format = _ref.format,\r\n          locale = _ref.locale;\r\n        return parseZoneInfo(ts, format, locale);\r\n      }\r\n  \r\n      /** @override **/;\r\n      _proto.formatOffset = function formatOffset$1(ts, format) {\r\n        return formatOffset(this.offset(ts), format);\r\n      }\r\n  \r\n      /** @override **/;\r\n      _proto.offset = function offset(ts) {\r\n        return -new Date(ts).getTimezoneOffset();\r\n      }\r\n  \r\n      /** @override **/;\r\n      _proto.equals = function equals(otherZone) {\r\n        return otherZone.type === \"system\";\r\n      }\r\n  \r\n      /** @override **/;\r\n      _createClass(SystemZone, [{\r\n        key: \"type\",\r\n        get: /** @override **/\r\n        function get() {\r\n          return \"system\";\r\n        }\r\n  \r\n        /** @override **/\r\n      }, {\r\n        key: \"name\",\r\n        get: function get() {\r\n          return new Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n        }\r\n  \r\n        /** @override **/\r\n      }, {\r\n        key: \"isUniversal\",\r\n        get: function get() {\r\n          return false;\r\n        }\r\n      }, {\r\n        key: \"isValid\",\r\n        get: function get() {\r\n          return true;\r\n        }\r\n      }], [{\r\n        key: \"instance\",\r\n        get:\r\n        /**\r\n         * Get a singleton instance of the local zone\r\n         * @return {SystemZone}\r\n         */\r\n        function get() {\r\n          if (singleton$1 === null) {\r\n            singleton$1 = new SystemZone();\r\n          }\r\n          return singleton$1;\r\n        }\r\n      }]);\r\n      return SystemZone;\r\n    }(Zone);\r\n  \r\n    var dtfCache = {};\r\n    function makeDTF(zone) {\r\n      if (!dtfCache[zone]) {\r\n        dtfCache[zone] = new Intl.DateTimeFormat(\"en-US\", {\r\n          hour12: false,\r\n          timeZone: zone,\r\n          year: \"numeric\",\r\n          month: \"2-digit\",\r\n          day: \"2-digit\",\r\n          hour: \"2-digit\",\r\n          minute: \"2-digit\",\r\n          second: \"2-digit\",\r\n          era: \"short\"\r\n        });\r\n      }\r\n      return dtfCache[zone];\r\n    }\r\n    var typeToPos = {\r\n      year: 0,\r\n      month: 1,\r\n      day: 2,\r\n      era: 3,\r\n      hour: 4,\r\n      minute: 5,\r\n      second: 6\r\n    };\r\n    function hackyOffset(dtf, date) {\r\n      var formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\r\n        parsed = /(\\d+)\\/(\\d+)\\/(\\d+) (AD|BC),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\r\n        fMonth = parsed[1],\r\n        fDay = parsed[2],\r\n        fYear = parsed[3],\r\n        fadOrBc = parsed[4],\r\n        fHour = parsed[5],\r\n        fMinute = parsed[6],\r\n        fSecond = parsed[7];\r\n      return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond];\r\n    }\r\n    function partsOffset(dtf, date) {\r\n      var formatted = dtf.formatToParts(date);\r\n      var filled = [];\r\n      for (var i = 0; i < formatted.length; i++) {\r\n        var _formatted$i = formatted[i],\r\n          type = _formatted$i.type,\r\n          value = _formatted$i.value;\r\n        var pos = typeToPos[type];\r\n        if (type === \"era\") {\r\n          filled[pos] = value;\r\n        } else if (!isUndefined(pos)) {\r\n          filled[pos] = parseInt(value, 10);\r\n        }\r\n      }\r\n      return filled;\r\n    }\r\n    var ianaZoneCache = {};\r\n    /**\r\n     * A zone identified by an IANA identifier, like America/New_York\r\n     * @implements {Zone}\r\n     */\r\n    var IANAZone = /*#__PURE__*/function (_Zone) {\r\n      _inheritsLoose(IANAZone, _Zone);\r\n      /**\r\n       * @param {string} name - Zone name\r\n       * @return {IANAZone}\r\n       */\r\n      IANAZone.create = function create(name) {\r\n        if (!ianaZoneCache[name]) {\r\n          ianaZoneCache[name] = new IANAZone(name);\r\n        }\r\n        return ianaZoneCache[name];\r\n      }\r\n  \r\n      /**\r\n       * Reset local caches. Should only be necessary in testing scenarios.\r\n       * @return {void}\r\n       */;\r\n      IANAZone.resetCache = function resetCache() {\r\n        ianaZoneCache = {};\r\n        dtfCache = {};\r\n      }\r\n  \r\n      /**\r\n       * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\r\n       * @param {string} s - The string to check validity on\r\n       * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\r\n       * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\r\n       * @deprecated For backward compatibility, this forwards to isValidZone, better use `isValidZone()` directly instead.\r\n       * @return {boolean}\r\n       */;\r\n      IANAZone.isValidSpecifier = function isValidSpecifier(s) {\r\n        return this.isValidZone(s);\r\n      }\r\n  \r\n      /**\r\n       * Returns whether the provided string identifies a real zone\r\n       * @param {string} zone - The string to check\r\n       * @example IANAZone.isValidZone(\"America/New_York\") //=> true\r\n       * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\r\n       * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\r\n       * @return {boolean}\r\n       */;\r\n      IANAZone.isValidZone = function isValidZone(zone) {\r\n        if (!zone) {\r\n          return false;\r\n        }\r\n        try {\r\n          new Intl.DateTimeFormat(\"en-US\", {\r\n            timeZone: zone\r\n          }).format();\r\n          return true;\r\n        } catch (e) {\r\n          return false;\r\n        }\r\n      };\r\n      function IANAZone(name) {\r\n        var _this;\r\n        _this = _Zone.call(this) || this;\r\n        /** @private **/\r\n        _this.zoneName = name;\r\n        /** @private **/\r\n        _this.valid = IANAZone.isValidZone(name);\r\n        return _this;\r\n      }\r\n  \r\n      /**\r\n       * The type of zone. `iana` for all instances of `IANAZone`.\r\n       * @override\r\n       * @type {string}\r\n       */\r\n      var _proto = IANAZone.prototype;\r\n      /**\r\n       * Returns the offset's common name (such as EST) at the specified timestamp\r\n       * @override\r\n       * @param {number} ts - Epoch milliseconds for which to get the name\r\n       * @param {Object} opts - Options to affect the format\r\n       * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\r\n       * @param {string} opts.locale - What locale to return the offset name in.\r\n       * @return {string}\r\n       */\r\n      _proto.offsetName = function offsetName(ts, _ref) {\r\n        var format = _ref.format,\r\n          locale = _ref.locale;\r\n        return parseZoneInfo(ts, format, locale, this.name);\r\n      }\r\n  \r\n      /**\r\n       * Returns the offset's value as a string\r\n       * @override\r\n       * @param {number} ts - Epoch milliseconds for which to get the offset\r\n       * @param {string} format - What style of offset to return.\r\n       *                          Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\r\n       * @return {string}\r\n       */;\r\n      _proto.formatOffset = function formatOffset$1(ts, format) {\r\n        return formatOffset(this.offset(ts), format);\r\n      }\r\n  \r\n      /**\r\n       * Return the offset in minutes for this zone at the specified timestamp.\r\n       * @override\r\n       * @param {number} ts - Epoch milliseconds for which to compute the offset\r\n       * @return {number}\r\n       */;\r\n      _proto.offset = function offset(ts) {\r\n        var date = new Date(ts);\r\n        if (isNaN(date)) return NaN;\r\n        var dtf = makeDTF(this.name);\r\n        var _ref2 = dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date),\r\n          year = _ref2[0],\r\n          month = _ref2[1],\r\n          day = _ref2[2],\r\n          adOrBc = _ref2[3],\r\n          hour = _ref2[4],\r\n          minute = _ref2[5],\r\n          second = _ref2[6];\r\n        if (adOrBc === \"BC\") {\r\n          year = -Math.abs(year) + 1;\r\n        }\r\n  \r\n        // because we're using hour12 and https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\r\n        var adjustedHour = hour === 24 ? 0 : hour;\r\n        var asUTC = objToLocalTS({\r\n          year: year,\r\n          month: month,\r\n          day: day,\r\n          hour: adjustedHour,\r\n          minute: minute,\r\n          second: second,\r\n          millisecond: 0\r\n        });\r\n        var asTS = +date;\r\n        var over = asTS % 1000;\r\n        asTS -= over >= 0 ? over : 1000 + over;\r\n        return (asUTC - asTS) / (60 * 1000);\r\n      }\r\n  \r\n      /**\r\n       * Return whether this Zone is equal to another zone\r\n       * @override\r\n       * @param {Zone} otherZone - the zone to compare\r\n       * @return {boolean}\r\n       */;\r\n      _proto.equals = function equals(otherZone) {\r\n        return otherZone.type === \"iana\" && otherZone.name === this.name;\r\n      }\r\n  \r\n      /**\r\n       * Return whether this Zone is valid.\r\n       * @override\r\n       * @type {boolean}\r\n       */;\r\n      _createClass(IANAZone, [{\r\n        key: \"type\",\r\n        get: function get() {\r\n          return \"iana\";\r\n        }\r\n  \r\n        /**\r\n         * The name of this zone (i.e. the IANA zone name).\r\n         * @override\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"name\",\r\n        get: function get() {\r\n          return this.zoneName;\r\n        }\r\n  \r\n        /**\r\n         * Returns whether the offset is known to be fixed for the whole year:\r\n         * Always returns false for all IANA zones.\r\n         * @override\r\n         * @type {boolean}\r\n         */\r\n      }, {\r\n        key: \"isUniversal\",\r\n        get: function get() {\r\n          return false;\r\n        }\r\n      }, {\r\n        key: \"isValid\",\r\n        get: function get() {\r\n          return this.valid;\r\n        }\r\n      }]);\r\n      return IANAZone;\r\n    }(Zone);\r\n  \r\n    var _excluded = [\"base\"],\r\n      _excluded2 = [\"padTo\", \"floor\"];\r\n  \r\n    // todo - remap caching\r\n  \r\n    var intlLFCache = {};\r\n    function getCachedLF(locString, opts) {\r\n      if (opts === void 0) {\r\n        opts = {};\r\n      }\r\n      var key = JSON.stringify([locString, opts]);\r\n      var dtf = intlLFCache[key];\r\n      if (!dtf) {\r\n        dtf = new Intl.ListFormat(locString, opts);\r\n        intlLFCache[key] = dtf;\r\n      }\r\n      return dtf;\r\n    }\r\n    var intlDTCache = {};\r\n    function getCachedDTF(locString, opts) {\r\n      if (opts === void 0) {\r\n        opts = {};\r\n      }\r\n      var key = JSON.stringify([locString, opts]);\r\n      var dtf = intlDTCache[key];\r\n      if (!dtf) {\r\n        dtf = new Intl.DateTimeFormat(locString, opts);\r\n        intlDTCache[key] = dtf;\r\n      }\r\n      return dtf;\r\n    }\r\n    var intlNumCache = {};\r\n    function getCachedINF(locString, opts) {\r\n      if (opts === void 0) {\r\n        opts = {};\r\n      }\r\n      var key = JSON.stringify([locString, opts]);\r\n      var inf = intlNumCache[key];\r\n      if (!inf) {\r\n        inf = new Intl.NumberFormat(locString, opts);\r\n        intlNumCache[key] = inf;\r\n      }\r\n      return inf;\r\n    }\r\n    var intlRelCache = {};\r\n    function getCachedRTF(locString, opts) {\r\n      if (opts === void 0) {\r\n        opts = {};\r\n      }\r\n      var _opts = opts;\r\n        _opts.base;\r\n        var cacheKeyOpts = _objectWithoutPropertiesLoose(_opts, _excluded); // exclude `base` from the options\r\n      var key = JSON.stringify([locString, cacheKeyOpts]);\r\n      var inf = intlRelCache[key];\r\n      if (!inf) {\r\n        inf = new Intl.RelativeTimeFormat(locString, opts);\r\n        intlRelCache[key] = inf;\r\n      }\r\n      return inf;\r\n    }\r\n    var sysLocaleCache = null;\r\n    function systemLocale() {\r\n      if (sysLocaleCache) {\r\n        return sysLocaleCache;\r\n      } else {\r\n        sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale;\r\n        return sysLocaleCache;\r\n      }\r\n    }\r\n    var weekInfoCache = {};\r\n    function getCachedWeekInfo(locString) {\r\n      var data = weekInfoCache[locString];\r\n      if (!data) {\r\n        var locale = new Intl.Locale(locString);\r\n        // browsers currently implement this as a property, but spec says it should be a getter function\r\n        data = \"getWeekInfo\" in locale ? locale.getWeekInfo() : locale.weekInfo;\r\n        weekInfoCache[locString] = data;\r\n      }\r\n      return data;\r\n    }\r\n    function parseLocaleString(localeStr) {\r\n      // I really want to avoid writing a BCP 47 parser\r\n      // see, e.g. https://github.com/wooorm/bcp-47\r\n      // Instead, we'll do this:\r\n  \r\n      // a) if the string has no -u extensions, just leave it alone\r\n      // b) if it does, use Intl to resolve everything\r\n      // c) if Intl fails, try again without the -u\r\n  \r\n      // private subtags and unicode subtags have ordering requirements,\r\n      // and we're not properly parsing this, so just strip out the\r\n      // private ones if they exist.\r\n      var xIndex = localeStr.indexOf(\"-x-\");\r\n      if (xIndex !== -1) {\r\n        localeStr = localeStr.substring(0, xIndex);\r\n      }\r\n      var uIndex = localeStr.indexOf(\"-u-\");\r\n      if (uIndex === -1) {\r\n        return [localeStr];\r\n      } else {\r\n        var options;\r\n        var selectedStr;\r\n        try {\r\n          options = getCachedDTF(localeStr).resolvedOptions();\r\n          selectedStr = localeStr;\r\n        } catch (e) {\r\n          var smaller = localeStr.substring(0, uIndex);\r\n          options = getCachedDTF(smaller).resolvedOptions();\r\n          selectedStr = smaller;\r\n        }\r\n        var _options = options,\r\n          numberingSystem = _options.numberingSystem,\r\n          calendar = _options.calendar;\r\n        return [selectedStr, numberingSystem, calendar];\r\n      }\r\n    }\r\n    function intlConfigString(localeStr, numberingSystem, outputCalendar) {\r\n      if (outputCalendar || numberingSystem) {\r\n        if (!localeStr.includes(\"-u-\")) {\r\n          localeStr += \"-u\";\r\n        }\r\n        if (outputCalendar) {\r\n          localeStr += \"-ca-\" + outputCalendar;\r\n        }\r\n        if (numberingSystem) {\r\n          localeStr += \"-nu-\" + numberingSystem;\r\n        }\r\n        return localeStr;\r\n      } else {\r\n        return localeStr;\r\n      }\r\n    }\r\n    function mapMonths(f) {\r\n      var ms = [];\r\n      for (var i = 1; i <= 12; i++) {\r\n        var dt = DateTime.utc(2009, i, 1);\r\n        ms.push(f(dt));\r\n      }\r\n      return ms;\r\n    }\r\n    function mapWeekdays(f) {\r\n      var ms = [];\r\n      for (var i = 1; i <= 7; i++) {\r\n        var dt = DateTime.utc(2016, 11, 13 + i);\r\n        ms.push(f(dt));\r\n      }\r\n      return ms;\r\n    }\r\n    function listStuff(loc, length, englishFn, intlFn) {\r\n      var mode = loc.listingMode();\r\n      if (mode === \"error\") {\r\n        return null;\r\n      } else if (mode === \"en\") {\r\n        return englishFn(length);\r\n      } else {\r\n        return intlFn(length);\r\n      }\r\n    }\r\n    function supportsFastNumbers(loc) {\r\n      if (loc.numberingSystem && loc.numberingSystem !== \"latn\") {\r\n        return false;\r\n      } else {\r\n        return loc.numberingSystem === \"latn\" || !loc.locale || loc.locale.startsWith(\"en\") || new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === \"latn\";\r\n      }\r\n    }\r\n  \r\n    /**\r\n     * @private\r\n     */\r\n    var PolyNumberFormatter = /*#__PURE__*/function () {\r\n      function PolyNumberFormatter(intl, forceSimple, opts) {\r\n        this.padTo = opts.padTo || 0;\r\n        this.floor = opts.floor || false;\r\n        opts.padTo;\r\n          opts.floor;\r\n          var otherOpts = _objectWithoutPropertiesLoose(opts, _excluded2);\r\n        if (!forceSimple || Object.keys(otherOpts).length > 0) {\r\n          var intlOpts = _extends({\r\n            useGrouping: false\r\n          }, opts);\r\n          if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\r\n          this.inf = getCachedINF(intl, intlOpts);\r\n        }\r\n      }\r\n      var _proto = PolyNumberFormatter.prototype;\r\n      _proto.format = function format(i) {\r\n        if (this.inf) {\r\n          var fixed = this.floor ? Math.floor(i) : i;\r\n          return this.inf.format(fixed);\r\n        } else {\r\n          // to match the browser's numberformatter defaults\r\n          var _fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\r\n          return padStart(_fixed, this.padTo);\r\n        }\r\n      };\r\n      return PolyNumberFormatter;\r\n    }();\r\n    /**\r\n     * @private\r\n     */\r\n    var PolyDateFormatter = /*#__PURE__*/function () {\r\n      function PolyDateFormatter(dt, intl, opts) {\r\n        this.opts = opts;\r\n        this.originalZone = undefined;\r\n        var z = undefined;\r\n        if (this.opts.timeZone) {\r\n          // Don't apply any workarounds if a timeZone is explicitly provided in opts\r\n          this.dt = dt;\r\n        } else if (dt.zone.type === \"fixed\") {\r\n          // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.\r\n          // That is why fixed-offset TZ is set to that unless it is:\r\n          // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.\r\n          // 2. Unsupported by the browser:\r\n          //    - some do not support Etc/\r\n          //    - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata\r\n          var gmtOffset = -1 * (dt.offset / 60);\r\n          var offsetZ = gmtOffset >= 0 ? \"Etc/GMT+\" + gmtOffset : \"Etc/GMT\" + gmtOffset;\r\n          if (dt.offset !== 0 && IANAZone.create(offsetZ).valid) {\r\n            z = offsetZ;\r\n            this.dt = dt;\r\n          } else {\r\n            // Not all fixed-offset zones like Etc/+4:30 are present in tzdata so\r\n            // we manually apply the offset and substitute the zone as needed.\r\n            z = \"UTC\";\r\n            this.dt = dt.offset === 0 ? dt : dt.setZone(\"UTC\").plus({\r\n              minutes: dt.offset\r\n            });\r\n            this.originalZone = dt.zone;\r\n          }\r\n        } else if (dt.zone.type === \"system\") {\r\n          this.dt = dt;\r\n        } else if (dt.zone.type === \"iana\") {\r\n          this.dt = dt;\r\n          z = dt.zone.name;\r\n        } else {\r\n          // Custom zones can have any offset / offsetName so we just manually\r\n          // apply the offset and substitute the zone as needed.\r\n          z = \"UTC\";\r\n          this.dt = dt.setZone(\"UTC\").plus({\r\n            minutes: dt.offset\r\n          });\r\n          this.originalZone = dt.zone;\r\n        }\r\n        var intlOpts = _extends({}, this.opts);\r\n        intlOpts.timeZone = intlOpts.timeZone || z;\r\n        this.dtf = getCachedDTF(intl, intlOpts);\r\n      }\r\n      var _proto2 = PolyDateFormatter.prototype;\r\n      _proto2.format = function format() {\r\n        if (this.originalZone) {\r\n          // If we have to substitute in the actual zone name, we have to use\r\n          // formatToParts so that the timezone can be replaced.\r\n          return this.formatToParts().map(function (_ref) {\r\n            var value = _ref.value;\r\n            return value;\r\n          }).join(\"\");\r\n        }\r\n        return this.dtf.format(this.dt.toJSDate());\r\n      };\r\n      _proto2.formatToParts = function formatToParts() {\r\n        var _this = this;\r\n        var parts = this.dtf.formatToParts(this.dt.toJSDate());\r\n        if (this.originalZone) {\r\n          return parts.map(function (part) {\r\n            if (part.type === \"timeZoneName\") {\r\n              var offsetName = _this.originalZone.offsetName(_this.dt.ts, {\r\n                locale: _this.dt.locale,\r\n                format: _this.opts.timeZoneName\r\n              });\r\n              return _extends({}, part, {\r\n                value: offsetName\r\n              });\r\n            } else {\r\n              return part;\r\n            }\r\n          });\r\n        }\r\n        return parts;\r\n      };\r\n      _proto2.resolvedOptions = function resolvedOptions() {\r\n        return this.dtf.resolvedOptions();\r\n      };\r\n      return PolyDateFormatter;\r\n    }();\r\n    /**\r\n     * @private\r\n     */\r\n    var PolyRelFormatter = /*#__PURE__*/function () {\r\n      function PolyRelFormatter(intl, isEnglish, opts) {\r\n        this.opts = _extends({\r\n          style: \"long\"\r\n        }, opts);\r\n        if (!isEnglish && hasRelative()) {\r\n          this.rtf = getCachedRTF(intl, opts);\r\n        }\r\n      }\r\n      var _proto3 = PolyRelFormatter.prototype;\r\n      _proto3.format = function format(count, unit) {\r\n        if (this.rtf) {\r\n          return this.rtf.format(count, unit);\r\n        } else {\r\n          return formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== \"long\");\r\n        }\r\n      };\r\n      _proto3.formatToParts = function formatToParts(count, unit) {\r\n        if (this.rtf) {\r\n          return this.rtf.formatToParts(count, unit);\r\n        } else {\r\n          return [];\r\n        }\r\n      };\r\n      return PolyRelFormatter;\r\n    }();\r\n    var fallbackWeekSettings = {\r\n      firstDay: 1,\r\n      minimalDays: 4,\r\n      weekend: [6, 7]\r\n    };\r\n  \r\n    /**\r\n     * @private\r\n     */\r\n    var Locale = /*#__PURE__*/function () {\r\n      Locale.fromOpts = function fromOpts(opts) {\r\n        return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.weekSettings, opts.defaultToEN);\r\n      };\r\n      Locale.create = function create(locale, numberingSystem, outputCalendar, weekSettings, defaultToEN) {\r\n        if (defaultToEN === void 0) {\r\n          defaultToEN = false;\r\n        }\r\n        var specifiedLocale = locale || Settings.defaultLocale;\r\n        // the system locale is useful for human-readable strings but annoying for parsing/formatting known formats\r\n        var localeR = specifiedLocale || (defaultToEN ? \"en-US\" : systemLocale());\r\n        var numberingSystemR = numberingSystem || Settings.defaultNumberingSystem;\r\n        var outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\r\n        var weekSettingsR = validateWeekSettings(weekSettings) || Settings.defaultWeekSettings;\r\n        return new Locale(localeR, numberingSystemR, outputCalendarR, weekSettingsR, specifiedLocale);\r\n      };\r\n      Locale.resetCache = function resetCache() {\r\n        sysLocaleCache = null;\r\n        intlDTCache = {};\r\n        intlNumCache = {};\r\n        intlRelCache = {};\r\n      };\r\n      Locale.fromObject = function fromObject(_temp) {\r\n        var _ref2 = _temp === void 0 ? {} : _temp,\r\n          locale = _ref2.locale,\r\n          numberingSystem = _ref2.numberingSystem,\r\n          outputCalendar = _ref2.outputCalendar,\r\n          weekSettings = _ref2.weekSettings;\r\n        return Locale.create(locale, numberingSystem, outputCalendar, weekSettings);\r\n      };\r\n      function Locale(locale, numbering, outputCalendar, weekSettings, specifiedLocale) {\r\n        var _parseLocaleString = parseLocaleString(locale),\r\n          parsedLocale = _parseLocaleString[0],\r\n          parsedNumberingSystem = _parseLocaleString[1],\r\n          parsedOutputCalendar = _parseLocaleString[2];\r\n        this.locale = parsedLocale;\r\n        this.numberingSystem = numbering || parsedNumberingSystem || null;\r\n        this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\r\n        this.weekSettings = weekSettings;\r\n        this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\r\n        this.weekdaysCache = {\r\n          format: {},\r\n          standalone: {}\r\n        };\r\n        this.monthsCache = {\r\n          format: {},\r\n          standalone: {}\r\n        };\r\n        this.meridiemCache = null;\r\n        this.eraCache = {};\r\n        this.specifiedLocale = specifiedLocale;\r\n        this.fastNumbersCached = null;\r\n      }\r\n      var _proto4 = Locale.prototype;\r\n      _proto4.listingMode = function listingMode() {\r\n        var isActuallyEn = this.isEnglish();\r\n        var hasNoWeirdness = (this.numberingSystem === null || this.numberingSystem === \"latn\") && (this.outputCalendar === null || this.outputCalendar === \"gregory\");\r\n        return isActuallyEn && hasNoWeirdness ? \"en\" : \"intl\";\r\n      };\r\n      _proto4.clone = function clone(alts) {\r\n        if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\r\n          return this;\r\n        } else {\r\n          return Locale.create(alts.locale || this.specifiedLocale, alts.numberingSystem || this.numberingSystem, alts.outputCalendar || this.outputCalendar, validateWeekSettings(alts.weekSettings) || this.weekSettings, alts.defaultToEN || false);\r\n        }\r\n      };\r\n      _proto4.redefaultToEN = function redefaultToEN(alts) {\r\n        if (alts === void 0) {\r\n          alts = {};\r\n        }\r\n        return this.clone(_extends({}, alts, {\r\n          defaultToEN: true\r\n        }));\r\n      };\r\n      _proto4.redefaultToSystem = function redefaultToSystem(alts) {\r\n        if (alts === void 0) {\r\n          alts = {};\r\n        }\r\n        return this.clone(_extends({}, alts, {\r\n          defaultToEN: false\r\n        }));\r\n      };\r\n      _proto4.months = function months$1(length, format) {\r\n        var _this2 = this;\r\n        if (format === void 0) {\r\n          format = false;\r\n        }\r\n        return listStuff(this, length, months, function () {\r\n          var intl = format ? {\r\n              month: length,\r\n              day: \"numeric\"\r\n            } : {\r\n              month: length\r\n            },\r\n            formatStr = format ? \"format\" : \"standalone\";\r\n          if (!_this2.monthsCache[formatStr][length]) {\r\n            _this2.monthsCache[formatStr][length] = mapMonths(function (dt) {\r\n              return _this2.extract(dt, intl, \"month\");\r\n            });\r\n          }\r\n          return _this2.monthsCache[formatStr][length];\r\n        });\r\n      };\r\n      _proto4.weekdays = function weekdays$1(length, format) {\r\n        var _this3 = this;\r\n        if (format === void 0) {\r\n          format = false;\r\n        }\r\n        return listStuff(this, length, weekdays, function () {\r\n          var intl = format ? {\r\n              weekday: length,\r\n              year: \"numeric\",\r\n              month: \"long\",\r\n              day: \"numeric\"\r\n            } : {\r\n              weekday: length\r\n            },\r\n            formatStr = format ? \"format\" : \"standalone\";\r\n          if (!_this3.weekdaysCache[formatStr][length]) {\r\n            _this3.weekdaysCache[formatStr][length] = mapWeekdays(function (dt) {\r\n              return _this3.extract(dt, intl, \"weekday\");\r\n            });\r\n          }\r\n          return _this3.weekdaysCache[formatStr][length];\r\n        });\r\n      };\r\n      _proto4.meridiems = function meridiems$1() {\r\n        var _this4 = this;\r\n        return listStuff(this, undefined, function () {\r\n          return meridiems;\r\n        }, function () {\r\n          // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\r\n          // for AM and PM. This is probably wrong, but it's makes parsing way easier.\r\n          if (!_this4.meridiemCache) {\r\n            var intl = {\r\n              hour: \"numeric\",\r\n              hourCycle: \"h12\"\r\n            };\r\n            _this4.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(function (dt) {\r\n              return _this4.extract(dt, intl, \"dayperiod\");\r\n            });\r\n          }\r\n          return _this4.meridiemCache;\r\n        });\r\n      };\r\n      _proto4.eras = function eras$1(length) {\r\n        var _this5 = this;\r\n        return listStuff(this, length, eras, function () {\r\n          var intl = {\r\n            era: length\r\n          };\r\n  \r\n          // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\r\n          // to definitely enumerate them.\r\n          if (!_this5.eraCache[length]) {\r\n            _this5.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map(function (dt) {\r\n              return _this5.extract(dt, intl, \"era\");\r\n            });\r\n          }\r\n          return _this5.eraCache[length];\r\n        });\r\n      };\r\n      _proto4.extract = function extract(dt, intlOpts, field) {\r\n        var df = this.dtFormatter(dt, intlOpts),\r\n          results = df.formatToParts(),\r\n          matching = results.find(function (m) {\r\n            return m.type.toLowerCase() === field;\r\n          });\r\n        return matching ? matching.value : null;\r\n      };\r\n      _proto4.numberFormatter = function numberFormatter(opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\r\n        // (in contrast, the rest of the condition is used heavily)\r\n        return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\r\n      };\r\n      _proto4.dtFormatter = function dtFormatter(dt, intlOpts) {\r\n        if (intlOpts === void 0) {\r\n          intlOpts = {};\r\n        }\r\n        return new PolyDateFormatter(dt, this.intl, intlOpts);\r\n      };\r\n      _proto4.relFormatter = function relFormatter(opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\r\n      };\r\n      _proto4.listFormatter = function listFormatter(opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        return getCachedLF(this.intl, opts);\r\n      };\r\n      _proto4.isEnglish = function isEnglish() {\r\n        return this.locale === \"en\" || this.locale.toLowerCase() === \"en-us\" || new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith(\"en-us\");\r\n      };\r\n      _proto4.getWeekSettings = function getWeekSettings() {\r\n        if (this.weekSettings) {\r\n          return this.weekSettings;\r\n        } else if (!hasLocaleWeekInfo()) {\r\n          return fallbackWeekSettings;\r\n        } else {\r\n          return getCachedWeekInfo(this.locale);\r\n        }\r\n      };\r\n      _proto4.getStartOfWeek = function getStartOfWeek() {\r\n        return this.getWeekSettings().firstDay;\r\n      };\r\n      _proto4.getMinDaysInFirstWeek = function getMinDaysInFirstWeek() {\r\n        return this.getWeekSettings().minimalDays;\r\n      };\r\n      _proto4.getWeekendDays = function getWeekendDays() {\r\n        return this.getWeekSettings().weekend;\r\n      };\r\n      _proto4.equals = function equals(other) {\r\n        return this.locale === other.locale && this.numberingSystem === other.numberingSystem && this.outputCalendar === other.outputCalendar;\r\n      };\r\n      _proto4.toString = function toString() {\r\n        return \"Locale(\" + this.locale + \", \" + this.numberingSystem + \", \" + this.outputCalendar + \")\";\r\n      };\r\n      _createClass(Locale, [{\r\n        key: \"fastNumbers\",\r\n        get: function get() {\r\n          if (this.fastNumbersCached == null) {\r\n            this.fastNumbersCached = supportsFastNumbers(this);\r\n          }\r\n          return this.fastNumbersCached;\r\n        }\r\n      }]);\r\n      return Locale;\r\n    }();\r\n  \r\n    var singleton = null;\r\n  \r\n    /**\r\n     * A zone with a fixed offset (meaning no DST)\r\n     * @implements {Zone}\r\n     */\r\n    var FixedOffsetZone = /*#__PURE__*/function (_Zone) {\r\n      _inheritsLoose(FixedOffsetZone, _Zone);\r\n      /**\r\n       * Get an instance with a specified offset\r\n       * @param {number} offset - The offset in minutes\r\n       * @return {FixedOffsetZone}\r\n       */\r\n      FixedOffsetZone.instance = function instance(offset) {\r\n        return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\r\n      }\r\n  \r\n      /**\r\n       * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\r\n       * @param {string} s - The offset string to parse\r\n       * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\r\n       * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\r\n       * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\r\n       * @return {FixedOffsetZone}\r\n       */;\r\n      FixedOffsetZone.parseSpecifier = function parseSpecifier(s) {\r\n        if (s) {\r\n          var r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\r\n          if (r) {\r\n            return new FixedOffsetZone(signedOffset(r[1], r[2]));\r\n          }\r\n        }\r\n        return null;\r\n      };\r\n      function FixedOffsetZone(offset) {\r\n        var _this;\r\n        _this = _Zone.call(this) || this;\r\n        /** @private **/\r\n        _this.fixed = offset;\r\n        return _this;\r\n      }\r\n  \r\n      /**\r\n       * The type of zone. `fixed` for all instances of `FixedOffsetZone`.\r\n       * @override\r\n       * @type {string}\r\n       */\r\n      var _proto = FixedOffsetZone.prototype;\r\n      /**\r\n       * Returns the offset's common name at the specified timestamp.\r\n       *\r\n       * For fixed offset zones this equals to the zone name.\r\n       * @override\r\n       */\r\n      _proto.offsetName = function offsetName() {\r\n        return this.name;\r\n      }\r\n  \r\n      /**\r\n       * Returns the offset's value as a string\r\n       * @override\r\n       * @param {number} ts - Epoch milliseconds for which to get the offset\r\n       * @param {string} format - What style of offset to return.\r\n       *                          Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\r\n       * @return {string}\r\n       */;\r\n      _proto.formatOffset = function formatOffset$1(ts, format) {\r\n        return formatOffset(this.fixed, format);\r\n      }\r\n  \r\n      /**\r\n       * Returns whether the offset is known to be fixed for the whole year:\r\n       * Always returns true for all fixed offset zones.\r\n       * @override\r\n       * @type {boolean}\r\n       */;\r\n      /**\r\n       * Return the offset in minutes for this zone at the specified timestamp.\r\n       *\r\n       * For fixed offset zones, this is constant and does not depend on a timestamp.\r\n       * @override\r\n       * @return {number}\r\n       */\r\n      _proto.offset = function offset() {\r\n        return this.fixed;\r\n      }\r\n  \r\n      /**\r\n       * Return whether this Zone is equal to another zone (i.e. also fixed and same offset)\r\n       * @override\r\n       * @param {Zone} otherZone - the zone to compare\r\n       * @return {boolean}\r\n       */;\r\n      _proto.equals = function equals(otherZone) {\r\n        return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\r\n      }\r\n  \r\n      /**\r\n       * Return whether this Zone is valid:\r\n       * All fixed offset zones are valid.\r\n       * @override\r\n       * @type {boolean}\r\n       */;\r\n      _createClass(FixedOffsetZone, [{\r\n        key: \"type\",\r\n        get: function get() {\r\n          return \"fixed\";\r\n        }\r\n  \r\n        /**\r\n         * The name of this zone.\r\n         * All fixed zones' names always start with \"UTC\" (plus optional offset)\r\n         * @override\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"name\",\r\n        get: function get() {\r\n          return this.fixed === 0 ? \"UTC\" : \"UTC\" + formatOffset(this.fixed, \"narrow\");\r\n        }\r\n  \r\n        /**\r\n         * The IANA name of this zone, i.e. `Etc/UTC` or `Etc/GMT+/-nn`\r\n         *\r\n         * @override\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"ianaName\",\r\n        get: function get() {\r\n          if (this.fixed === 0) {\r\n            return \"Etc/UTC\";\r\n          } else {\r\n            return \"Etc/GMT\" + formatOffset(-this.fixed, \"narrow\");\r\n          }\r\n        }\r\n      }, {\r\n        key: \"isUniversal\",\r\n        get: function get() {\r\n          return true;\r\n        }\r\n      }, {\r\n        key: \"isValid\",\r\n        get: function get() {\r\n          return true;\r\n        }\r\n      }], [{\r\n        key: \"utcInstance\",\r\n        get:\r\n        /**\r\n         * Get a singleton instance of UTC\r\n         * @return {FixedOffsetZone}\r\n         */\r\n        function get() {\r\n          if (singleton === null) {\r\n            singleton = new FixedOffsetZone(0);\r\n          }\r\n          return singleton;\r\n        }\r\n      }]);\r\n      return FixedOffsetZone;\r\n    }(Zone);\r\n  \r\n    /**\r\n     * A zone that failed to parse. You should never need to instantiate this.\r\n     * @implements {Zone}\r\n     */\r\n    var InvalidZone = /*#__PURE__*/function (_Zone) {\r\n      _inheritsLoose(InvalidZone, _Zone);\r\n      function InvalidZone(zoneName) {\r\n        var _this;\r\n        _this = _Zone.call(this) || this;\r\n        /**  @private */\r\n        _this.zoneName = zoneName;\r\n        return _this;\r\n      }\r\n  \r\n      /** @override **/\r\n      var _proto = InvalidZone.prototype;\r\n      /** @override **/\r\n      _proto.offsetName = function offsetName() {\r\n        return null;\r\n      }\r\n  \r\n      /** @override **/;\r\n      _proto.formatOffset = function formatOffset() {\r\n        return \"\";\r\n      }\r\n  \r\n      /** @override **/;\r\n      _proto.offset = function offset() {\r\n        return NaN;\r\n      }\r\n  \r\n      /** @override **/;\r\n      _proto.equals = function equals() {\r\n        return false;\r\n      }\r\n  \r\n      /** @override **/;\r\n      _createClass(InvalidZone, [{\r\n        key: \"type\",\r\n        get: function get() {\r\n          return \"invalid\";\r\n        }\r\n  \r\n        /** @override **/\r\n      }, {\r\n        key: \"name\",\r\n        get: function get() {\r\n          return this.zoneName;\r\n        }\r\n  \r\n        /** @override **/\r\n      }, {\r\n        key: \"isUniversal\",\r\n        get: function get() {\r\n          return false;\r\n        }\r\n      }, {\r\n        key: \"isValid\",\r\n        get: function get() {\r\n          return false;\r\n        }\r\n      }]);\r\n      return InvalidZone;\r\n    }(Zone);\r\n  \r\n    /**\r\n     * @private\r\n     */\r\n    function normalizeZone(input, defaultZone) {\r\n      if (isUndefined(input) || input === null) {\r\n        return defaultZone;\r\n      } else if (input instanceof Zone) {\r\n        return input;\r\n      } else if (isString(input)) {\r\n        var lowered = input.toLowerCase();\r\n        if (lowered === \"default\") return defaultZone;else if (lowered === \"local\" || lowered === \"system\") return SystemZone.instance;else if (lowered === \"utc\" || lowered === \"gmt\") return FixedOffsetZone.utcInstance;else return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input);\r\n      } else if (isNumber(input)) {\r\n        return FixedOffsetZone.instance(input);\r\n      } else if (typeof input === \"object\" && \"offset\" in input && typeof input.offset === \"function\") {\r\n        // This is dumb, but the instanceof check above doesn't seem to really work\r\n        // so we're duck checking it\r\n        return input;\r\n      } else {\r\n        return new InvalidZone(input);\r\n      }\r\n    }\r\n  \r\n    var numberingSystems = {\r\n      arab: \"[\\u0660-\\u0669]\",\r\n      arabext: \"[\\u06F0-\\u06F9]\",\r\n      bali: \"[\\u1B50-\\u1B59]\",\r\n      beng: \"[\\u09E6-\\u09EF]\",\r\n      deva: \"[\\u0966-\\u096F]\",\r\n      fullwide: \"[\\uFF10-\\uFF19]\",\r\n      gujr: \"[\\u0AE6-\\u0AEF]\",\r\n      hanidec: \"[〇|一|二|三|四|五|六|七|八|九]\",\r\n      khmr: \"[\\u17E0-\\u17E9]\",\r\n      knda: \"[\\u0CE6-\\u0CEF]\",\r\n      laoo: \"[\\u0ED0-\\u0ED9]\",\r\n      limb: \"[\\u1946-\\u194F]\",\r\n      mlym: \"[\\u0D66-\\u0D6F]\",\r\n      mong: \"[\\u1810-\\u1819]\",\r\n      mymr: \"[\\u1040-\\u1049]\",\r\n      orya: \"[\\u0B66-\\u0B6F]\",\r\n      tamldec: \"[\\u0BE6-\\u0BEF]\",\r\n      telu: \"[\\u0C66-\\u0C6F]\",\r\n      thai: \"[\\u0E50-\\u0E59]\",\r\n      tibt: \"[\\u0F20-\\u0F29]\",\r\n      latn: \"\\\\d\"\r\n    };\r\n    var numberingSystemsUTF16 = {\r\n      arab: [1632, 1641],\r\n      arabext: [1776, 1785],\r\n      bali: [6992, 7001],\r\n      beng: [2534, 2543],\r\n      deva: [2406, 2415],\r\n      fullwide: [65296, 65303],\r\n      gujr: [2790, 2799],\r\n      khmr: [6112, 6121],\r\n      knda: [3302, 3311],\r\n      laoo: [3792, 3801],\r\n      limb: [6470, 6479],\r\n      mlym: [3430, 3439],\r\n      mong: [6160, 6169],\r\n      mymr: [4160, 4169],\r\n      orya: [2918, 2927],\r\n      tamldec: [3046, 3055],\r\n      telu: [3174, 3183],\r\n      thai: [3664, 3673],\r\n      tibt: [3872, 3881]\r\n    };\r\n    var hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\r\n    function parseDigits(str) {\r\n      var value = parseInt(str, 10);\r\n      if (isNaN(value)) {\r\n        value = \"\";\r\n        for (var i = 0; i < str.length; i++) {\r\n          var code = str.charCodeAt(i);\r\n          if (str[i].search(numberingSystems.hanidec) !== -1) {\r\n            value += hanidecChars.indexOf(str[i]);\r\n          } else {\r\n            for (var key in numberingSystemsUTF16) {\r\n              var _numberingSystemsUTF = numberingSystemsUTF16[key],\r\n                min = _numberingSystemsUTF[0],\r\n                max = _numberingSystemsUTF[1];\r\n              if (code >= min && code <= max) {\r\n                value += code - min;\r\n              }\r\n            }\r\n          }\r\n        }\r\n        return parseInt(value, 10);\r\n      } else {\r\n        return value;\r\n      }\r\n    }\r\n  \r\n    // cache of {numberingSystem: {append: regex}}\r\n    var digitRegexCache = {};\r\n    function resetDigitRegexCache() {\r\n      digitRegexCache = {};\r\n    }\r\n    function digitRegex(_ref, append) {\r\n      var numberingSystem = _ref.numberingSystem;\r\n      if (append === void 0) {\r\n        append = \"\";\r\n      }\r\n      var ns = numberingSystem || \"latn\";\r\n      if (!digitRegexCache[ns]) {\r\n        digitRegexCache[ns] = {};\r\n      }\r\n      if (!digitRegexCache[ns][append]) {\r\n        digitRegexCache[ns][append] = new RegExp(\"\" + numberingSystems[ns] + append);\r\n      }\r\n      return digitRegexCache[ns][append];\r\n    }\r\n  \r\n    var now = function now() {\r\n        return Date.now();\r\n      },\r\n      defaultZone = \"system\",\r\n      defaultLocale = null,\r\n      defaultNumberingSystem = null,\r\n      defaultOutputCalendar = null,\r\n      twoDigitCutoffYear = 60,\r\n      throwOnInvalid,\r\n      defaultWeekSettings = null;\r\n  \r\n    /**\r\n     * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\r\n     */\r\n    var Settings = /*#__PURE__*/function () {\r\n      function Settings() {}\r\n      /**\r\n       * Reset Luxon's global caches. Should only be necessary in testing scenarios.\r\n       * @return {void}\r\n       */\r\n      Settings.resetCaches = function resetCaches() {\r\n        Locale.resetCache();\r\n        IANAZone.resetCache();\r\n        DateTime.resetCache();\r\n        resetDigitRegexCache();\r\n      };\r\n      _createClass(Settings, null, [{\r\n        key: \"now\",\r\n        get:\r\n        /**\r\n         * Get the callback for returning the current timestamp.\r\n         * @type {function}\r\n         */\r\n        function get() {\r\n          return now;\r\n        }\r\n  \r\n        /**\r\n         * Set the callback for returning the current timestamp.\r\n         * The function should return a number, which will be interpreted as an Epoch millisecond count\r\n         * @type {function}\r\n         * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\r\n         * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time\r\n         */,\r\n        set: function set(n) {\r\n          now = n;\r\n        }\r\n  \r\n        /**\r\n         * Set the default time zone to create DateTimes in. Does not affect existing instances.\r\n         * Use the value \"system\" to reset this value to the system's time zone.\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"defaultZone\",\r\n        get:\r\n        /**\r\n         * Get the default time zone object currently used to create DateTimes. Does not affect existing instances.\r\n         * The default value is the system's time zone (the one set on the machine that runs this code).\r\n         * @type {Zone}\r\n         */\r\n        function get() {\r\n          return normalizeZone(defaultZone, SystemZone.instance);\r\n        }\r\n  \r\n        /**\r\n         * Get the default locale to create DateTimes with. Does not affect existing instances.\r\n         * @type {string}\r\n         */,\r\n        set: function set(zone) {\r\n          defaultZone = zone;\r\n        }\r\n      }, {\r\n        key: \"defaultLocale\",\r\n        get: function get() {\r\n          return defaultLocale;\r\n        }\r\n  \r\n        /**\r\n         * Set the default locale to create DateTimes with. Does not affect existing instances.\r\n         * @type {string}\r\n         */,\r\n        set: function set(locale) {\r\n          defaultLocale = locale;\r\n        }\r\n  \r\n        /**\r\n         * Get the default numbering system to create DateTimes with. Does not affect existing instances.\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"defaultNumberingSystem\",\r\n        get: function get() {\r\n          return defaultNumberingSystem;\r\n        }\r\n  \r\n        /**\r\n         * Set the default numbering system to create DateTimes with. Does not affect existing instances.\r\n         * @type {string}\r\n         */,\r\n        set: function set(numberingSystem) {\r\n          defaultNumberingSystem = numberingSystem;\r\n        }\r\n  \r\n        /**\r\n         * Get the default output calendar to create DateTimes with. Does not affect existing instances.\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"defaultOutputCalendar\",\r\n        get: function get() {\r\n          return defaultOutputCalendar;\r\n        }\r\n  \r\n        /**\r\n         * Set the default output calendar to create DateTimes with. Does not affect existing instances.\r\n         * @type {string}\r\n         */,\r\n        set: function set(outputCalendar) {\r\n          defaultOutputCalendar = outputCalendar;\r\n        }\r\n  \r\n        /**\r\n         * @typedef {Object} WeekSettings\r\n         * @property {number} firstDay\r\n         * @property {number} minimalDays\r\n         * @property {number[]} weekend\r\n         */\r\n  \r\n        /**\r\n         * @return {WeekSettings|null}\r\n         */\r\n      }, {\r\n        key: \"defaultWeekSettings\",\r\n        get: function get() {\r\n          return defaultWeekSettings;\r\n        }\r\n  \r\n        /**\r\n         * Allows overriding the default locale week settings, i.e. the start of the week, the weekend and\r\n         * how many days are required in the first week of a year.\r\n         * Does not affect existing instances.\r\n         *\r\n         * @param {WeekSettings|null} weekSettings\r\n         */,\r\n        set: function set(weekSettings) {\r\n          defaultWeekSettings = validateWeekSettings(weekSettings);\r\n        }\r\n  \r\n        /**\r\n         * Get the cutoff year for whether a 2-digit year string is interpreted in the current or previous century. Numbers higher than the cutoff will be considered to mean 19xx and numbers lower or equal to the cutoff will be considered 20xx.\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"twoDigitCutoffYear\",\r\n        get: function get() {\r\n          return twoDigitCutoffYear;\r\n        }\r\n  \r\n        /**\r\n         * Set the cutoff year for whether a 2-digit year string is interpreted in the current or previous century. Numbers higher than the cutoff will be considered to mean 19xx and numbers lower or equal to the cutoff will be considered 20xx.\r\n         * @type {number}\r\n         * @example Settings.twoDigitCutoffYear = 0 // all 'yy' are interpreted as 20th century\r\n         * @example Settings.twoDigitCutoffYear = 99 // all 'yy' are interpreted as 21st century\r\n         * @example Settings.twoDigitCutoffYear = 50 // '49' -> 2049; '50' -> 1950\r\n         * @example Settings.twoDigitCutoffYear = 1950 // interpreted as 50\r\n         * @example Settings.twoDigitCutoffYear = 2050 // ALSO interpreted as 50\r\n         */,\r\n        set: function set(cutoffYear) {\r\n          twoDigitCutoffYear = cutoffYear % 100;\r\n        }\r\n  \r\n        /**\r\n         * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\r\n         * @type {boolean}\r\n         */\r\n      }, {\r\n        key: \"throwOnInvalid\",\r\n        get: function get() {\r\n          return throwOnInvalid;\r\n        }\r\n  \r\n        /**\r\n         * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\r\n         * @type {boolean}\r\n         */,\r\n        set: function set(t) {\r\n          throwOnInvalid = t;\r\n        }\r\n      }]);\r\n      return Settings;\r\n    }();\r\n  \r\n    var Invalid = /*#__PURE__*/function () {\r\n      function Invalid(reason, explanation) {\r\n        this.reason = reason;\r\n        this.explanation = explanation;\r\n      }\r\n      var _proto = Invalid.prototype;\r\n      _proto.toMessage = function toMessage() {\r\n        if (this.explanation) {\r\n          return this.reason + \": \" + this.explanation;\r\n        } else {\r\n          return this.reason;\r\n        }\r\n      };\r\n      return Invalid;\r\n    }();\r\n  \r\n    var nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\r\n      leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\r\n    function unitOutOfRange(unit, value) {\r\n      return new Invalid(\"unit out of range\", \"you specified \" + value + \" (of type \" + typeof value + \") as a \" + unit + \", which is invalid\");\r\n    }\r\n    function dayOfWeek(year, month, day) {\r\n      var d = new Date(Date.UTC(year, month - 1, day));\r\n      if (year < 100 && year >= 0) {\r\n        d.setUTCFullYear(d.getUTCFullYear() - 1900);\r\n      }\r\n      var js = d.getUTCDay();\r\n      return js === 0 ? 7 : js;\r\n    }\r\n    function computeOrdinal(year, month, day) {\r\n      return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\r\n    }\r\n    function uncomputeOrdinal(year, ordinal) {\r\n      var table = isLeapYear(year) ? leapLadder : nonLeapLadder,\r\n        month0 = table.findIndex(function (i) {\r\n          return i < ordinal;\r\n        }),\r\n        day = ordinal - table[month0];\r\n      return {\r\n        month: month0 + 1,\r\n        day: day\r\n      };\r\n    }\r\n    function isoWeekdayToLocal(isoWeekday, startOfWeek) {\r\n      return (isoWeekday - startOfWeek + 7) % 7 + 1;\r\n    }\r\n  \r\n    /**\r\n     * @private\r\n     */\r\n  \r\n    function gregorianToWeek(gregObj, minDaysInFirstWeek, startOfWeek) {\r\n      if (minDaysInFirstWeek === void 0) {\r\n        minDaysInFirstWeek = 4;\r\n      }\r\n      if (startOfWeek === void 0) {\r\n        startOfWeek = 1;\r\n      }\r\n      var year = gregObj.year,\r\n        month = gregObj.month,\r\n        day = gregObj.day,\r\n        ordinal = computeOrdinal(year, month, day),\r\n        weekday = isoWeekdayToLocal(dayOfWeek(year, month, day), startOfWeek);\r\n      var weekNumber = Math.floor((ordinal - weekday + 14 - minDaysInFirstWeek) / 7),\r\n        weekYear;\r\n      if (weekNumber < 1) {\r\n        weekYear = year - 1;\r\n        weekNumber = weeksInWeekYear(weekYear, minDaysInFirstWeek, startOfWeek);\r\n      } else if (weekNumber > weeksInWeekYear(year, minDaysInFirstWeek, startOfWeek)) {\r\n        weekYear = year + 1;\r\n        weekNumber = 1;\r\n      } else {\r\n        weekYear = year;\r\n      }\r\n      return _extends({\r\n        weekYear: weekYear,\r\n        weekNumber: weekNumber,\r\n        weekday: weekday\r\n      }, timeObject(gregObj));\r\n    }\r\n    function weekToGregorian(weekData, minDaysInFirstWeek, startOfWeek) {\r\n      if (minDaysInFirstWeek === void 0) {\r\n        minDaysInFirstWeek = 4;\r\n      }\r\n      if (startOfWeek === void 0) {\r\n        startOfWeek = 1;\r\n      }\r\n      var weekYear = weekData.weekYear,\r\n        weekNumber = weekData.weekNumber,\r\n        weekday = weekData.weekday,\r\n        weekdayOfJan4 = isoWeekdayToLocal(dayOfWeek(weekYear, 1, minDaysInFirstWeek), startOfWeek),\r\n        yearInDays = daysInYear(weekYear);\r\n      var ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 7 + minDaysInFirstWeek,\r\n        year;\r\n      if (ordinal < 1) {\r\n        year = weekYear - 1;\r\n        ordinal += daysInYear(year);\r\n      } else if (ordinal > yearInDays) {\r\n        year = weekYear + 1;\r\n        ordinal -= daysInYear(weekYear);\r\n      } else {\r\n        year = weekYear;\r\n      }\r\n      var _uncomputeOrdinal = uncomputeOrdinal(year, ordinal),\r\n        month = _uncomputeOrdinal.month,\r\n        day = _uncomputeOrdinal.day;\r\n      return _extends({\r\n        year: year,\r\n        month: month,\r\n        day: day\r\n      }, timeObject(weekData));\r\n    }\r\n    function gregorianToOrdinal(gregData) {\r\n      var year = gregData.year,\r\n        month = gregData.month,\r\n        day = gregData.day;\r\n      var ordinal = computeOrdinal(year, month, day);\r\n      return _extends({\r\n        year: year,\r\n        ordinal: ordinal\r\n      }, timeObject(gregData));\r\n    }\r\n    function ordinalToGregorian(ordinalData) {\r\n      var year = ordinalData.year,\r\n        ordinal = ordinalData.ordinal;\r\n      var _uncomputeOrdinal2 = uncomputeOrdinal(year, ordinal),\r\n        month = _uncomputeOrdinal2.month,\r\n        day = _uncomputeOrdinal2.day;\r\n      return _extends({\r\n        year: year,\r\n        month: month,\r\n        day: day\r\n      }, timeObject(ordinalData));\r\n    }\r\n  \r\n    /**\r\n     * Check if local week units like localWeekday are used in obj.\r\n     * If so, validates that they are not mixed with ISO week units and then copies them to the normal week unit properties.\r\n     * Modifies obj in-place!\r\n     * @param obj the object values\r\n     */\r\n    function usesLocalWeekValues(obj, loc) {\r\n      var hasLocaleWeekData = !isUndefined(obj.localWeekday) || !isUndefined(obj.localWeekNumber) || !isUndefined(obj.localWeekYear);\r\n      if (hasLocaleWeekData) {\r\n        var hasIsoWeekData = !isUndefined(obj.weekday) || !isUndefined(obj.weekNumber) || !isUndefined(obj.weekYear);\r\n        if (hasIsoWeekData) {\r\n          throw new ConflictingSpecificationError(\"Cannot mix locale-based week fields with ISO-based week fields\");\r\n        }\r\n        if (!isUndefined(obj.localWeekday)) obj.weekday = obj.localWeekday;\r\n        if (!isUndefined(obj.localWeekNumber)) obj.weekNumber = obj.localWeekNumber;\r\n        if (!isUndefined(obj.localWeekYear)) obj.weekYear = obj.localWeekYear;\r\n        delete obj.localWeekday;\r\n        delete obj.localWeekNumber;\r\n        delete obj.localWeekYear;\r\n        return {\r\n          minDaysInFirstWeek: loc.getMinDaysInFirstWeek(),\r\n          startOfWeek: loc.getStartOfWeek()\r\n        };\r\n      } else {\r\n        return {\r\n          minDaysInFirstWeek: 4,\r\n          startOfWeek: 1\r\n        };\r\n      }\r\n    }\r\n    function hasInvalidWeekData(obj, minDaysInFirstWeek, startOfWeek) {\r\n      if (minDaysInFirstWeek === void 0) {\r\n        minDaysInFirstWeek = 4;\r\n      }\r\n      if (startOfWeek === void 0) {\r\n        startOfWeek = 1;\r\n      }\r\n      var validYear = isInteger(obj.weekYear),\r\n        validWeek = integerBetween(obj.weekNumber, 1, weeksInWeekYear(obj.weekYear, minDaysInFirstWeek, startOfWeek)),\r\n        validWeekday = integerBetween(obj.weekday, 1, 7);\r\n      if (!validYear) {\r\n        return unitOutOfRange(\"weekYear\", obj.weekYear);\r\n      } else if (!validWeek) {\r\n        return unitOutOfRange(\"week\", obj.weekNumber);\r\n      } else if (!validWeekday) {\r\n        return unitOutOfRange(\"weekday\", obj.weekday);\r\n      } else return false;\r\n    }\r\n    function hasInvalidOrdinalData(obj) {\r\n      var validYear = isInteger(obj.year),\r\n        validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\r\n      if (!validYear) {\r\n        return unitOutOfRange(\"year\", obj.year);\r\n      } else if (!validOrdinal) {\r\n        return unitOutOfRange(\"ordinal\", obj.ordinal);\r\n      } else return false;\r\n    }\r\n    function hasInvalidGregorianData(obj) {\r\n      var validYear = isInteger(obj.year),\r\n        validMonth = integerBetween(obj.month, 1, 12),\r\n        validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\r\n      if (!validYear) {\r\n        return unitOutOfRange(\"year\", obj.year);\r\n      } else if (!validMonth) {\r\n        return unitOutOfRange(\"month\", obj.month);\r\n      } else if (!validDay) {\r\n        return unitOutOfRange(\"day\", obj.day);\r\n      } else return false;\r\n    }\r\n    function hasInvalidTimeData(obj) {\r\n      var hour = obj.hour,\r\n        minute = obj.minute,\r\n        second = obj.second,\r\n        millisecond = obj.millisecond;\r\n      var validHour = integerBetween(hour, 0, 23) || hour === 24 && minute === 0 && second === 0 && millisecond === 0,\r\n        validMinute = integerBetween(minute, 0, 59),\r\n        validSecond = integerBetween(second, 0, 59),\r\n        validMillisecond = integerBetween(millisecond, 0, 999);\r\n      if (!validHour) {\r\n        return unitOutOfRange(\"hour\", hour);\r\n      } else if (!validMinute) {\r\n        return unitOutOfRange(\"minute\", minute);\r\n      } else if (!validSecond) {\r\n        return unitOutOfRange(\"second\", second);\r\n      } else if (!validMillisecond) {\r\n        return unitOutOfRange(\"millisecond\", millisecond);\r\n      } else return false;\r\n    }\r\n  \r\n    /**\r\n     * @private\r\n     */\r\n  \r\n    // TYPES\r\n  \r\n    function isUndefined(o) {\r\n      return typeof o === \"undefined\";\r\n    }\r\n    function isNumber(o) {\r\n      return typeof o === \"number\";\r\n    }\r\n    function isInteger(o) {\r\n      return typeof o === \"number\" && o % 1 === 0;\r\n    }\r\n    function isString(o) {\r\n      return typeof o === \"string\";\r\n    }\r\n    function isDate(o) {\r\n      return Object.prototype.toString.call(o) === \"[object Date]\";\r\n    }\r\n  \r\n    // CAPABILITIES\r\n  \r\n    function hasRelative() {\r\n      try {\r\n        return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\r\n      } catch (e) {\r\n        return false;\r\n      }\r\n    }\r\n    function hasLocaleWeekInfo() {\r\n      try {\r\n        return typeof Intl !== \"undefined\" && !!Intl.Locale && (\"weekInfo\" in Intl.Locale.prototype || \"getWeekInfo\" in Intl.Locale.prototype);\r\n      } catch (e) {\r\n        return false;\r\n      }\r\n    }\r\n  \r\n    // OBJECTS AND ARRAYS\r\n  \r\n    function maybeArray(thing) {\r\n      return Array.isArray(thing) ? thing : [thing];\r\n    }\r\n    function bestBy(arr, by, compare) {\r\n      if (arr.length === 0) {\r\n        return undefined;\r\n      }\r\n      return arr.reduce(function (best, next) {\r\n        var pair = [by(next), next];\r\n        if (!best) {\r\n          return pair;\r\n        } else if (compare(best[0], pair[0]) === best[0]) {\r\n          return best;\r\n        } else {\r\n          return pair;\r\n        }\r\n      }, null)[1];\r\n    }\r\n    function pick(obj, keys) {\r\n      return keys.reduce(function (a, k) {\r\n        a[k] = obj[k];\r\n        return a;\r\n      }, {});\r\n    }\r\n    function hasOwnProperty(obj, prop) {\r\n      return Object.prototype.hasOwnProperty.call(obj, prop);\r\n    }\r\n    function validateWeekSettings(settings) {\r\n      if (settings == null) {\r\n        return null;\r\n      } else if (typeof settings !== \"object\") {\r\n        throw new InvalidArgumentError(\"Week settings must be an object\");\r\n      } else {\r\n        if (!integerBetween(settings.firstDay, 1, 7) || !integerBetween(settings.minimalDays, 1, 7) || !Array.isArray(settings.weekend) || settings.weekend.some(function (v) {\r\n          return !integerBetween(v, 1, 7);\r\n        })) {\r\n          throw new InvalidArgumentError(\"Invalid week settings\");\r\n        }\r\n        return {\r\n          firstDay: settings.firstDay,\r\n          minimalDays: settings.minimalDays,\r\n          weekend: Array.from(settings.weekend)\r\n        };\r\n      }\r\n    }\r\n  \r\n    // NUMBERS AND STRINGS\r\n  \r\n    function integerBetween(thing, bottom, top) {\r\n      return isInteger(thing) && thing >= bottom && thing <= top;\r\n    }\r\n  \r\n    // x % n but takes the sign of n instead of x\r\n    function floorMod(x, n) {\r\n      return x - n * Math.floor(x / n);\r\n    }\r\n    function padStart(input, n) {\r\n      if (n === void 0) {\r\n        n = 2;\r\n      }\r\n      var isNeg = input < 0;\r\n      var padded;\r\n      if (isNeg) {\r\n        padded = \"-\" + (\"\" + -input).padStart(n, \"0\");\r\n      } else {\r\n        padded = (\"\" + input).padStart(n, \"0\");\r\n      }\r\n      return padded;\r\n    }\r\n    function parseInteger(string) {\r\n      if (isUndefined(string) || string === null || string === \"\") {\r\n        return undefined;\r\n      } else {\r\n        return parseInt(string, 10);\r\n      }\r\n    }\r\n    function parseFloating(string) {\r\n      if (isUndefined(string) || string === null || string === \"\") {\r\n        return undefined;\r\n      } else {\r\n        return parseFloat(string);\r\n      }\r\n    }\r\n    function parseMillis(fraction) {\r\n      // Return undefined (instead of 0) in these cases, where fraction is not set\r\n      if (isUndefined(fraction) || fraction === null || fraction === \"\") {\r\n        return undefined;\r\n      } else {\r\n        var f = parseFloat(\"0.\" + fraction) * 1000;\r\n        return Math.floor(f);\r\n      }\r\n    }\r\n    function roundTo(number, digits, towardZero) {\r\n      if (towardZero === void 0) {\r\n        towardZero = false;\r\n      }\r\n      var factor = Math.pow(10, digits),\r\n        rounder = towardZero ? Math.trunc : Math.round;\r\n      return rounder(number * factor) / factor;\r\n    }\r\n  \r\n    // DATE BASICS\r\n  \r\n    function isLeapYear(year) {\r\n      return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\r\n    }\r\n    function daysInYear(year) {\r\n      return isLeapYear(year) ? 366 : 365;\r\n    }\r\n    function daysInMonth(year, month) {\r\n      var modMonth = floorMod(month - 1, 12) + 1,\r\n        modYear = year + (month - modMonth) / 12;\r\n      if (modMonth === 2) {\r\n        return isLeapYear(modYear) ? 29 : 28;\r\n      } else {\r\n        return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\r\n      }\r\n    }\r\n  \r\n    // convert a calendar object to a local timestamp (epoch, but with the offset baked in)\r\n    function objToLocalTS(obj) {\r\n      var d = Date.UTC(obj.year, obj.month - 1, obj.day, obj.hour, obj.minute, obj.second, obj.millisecond);\r\n  \r\n      // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\r\n      if (obj.year < 100 && obj.year >= 0) {\r\n        d = new Date(d);\r\n        // set the month and day again, this is necessary because year 2000 is a leap year, but year 100 is not\r\n        // so if obj.year is in 99, but obj.day makes it roll over into year 100,\r\n        // the calculations done by Date.UTC are using year 2000 - which is incorrect\r\n        d.setUTCFullYear(obj.year, obj.month - 1, obj.day);\r\n      }\r\n      return +d;\r\n    }\r\n  \r\n    // adapted from moment.js: https://github.com/moment/moment/blob/000ac1800e620f770f4eb31b5ae908f6167b0ab2/src/lib/units/week-calendar-utils.js\r\n    function firstWeekOffset(year, minDaysInFirstWeek, startOfWeek) {\r\n      var fwdlw = isoWeekdayToLocal(dayOfWeek(year, 1, minDaysInFirstWeek), startOfWeek);\r\n      return -fwdlw + minDaysInFirstWeek - 1;\r\n    }\r\n    function weeksInWeekYear(weekYear, minDaysInFirstWeek, startOfWeek) {\r\n      if (minDaysInFirstWeek === void 0) {\r\n        minDaysInFirstWeek = 4;\r\n      }\r\n      if (startOfWeek === void 0) {\r\n        startOfWeek = 1;\r\n      }\r\n      var weekOffset = firstWeekOffset(weekYear, minDaysInFirstWeek, startOfWeek);\r\n      var weekOffsetNext = firstWeekOffset(weekYear + 1, minDaysInFirstWeek, startOfWeek);\r\n      return (daysInYear(weekYear) - weekOffset + weekOffsetNext) / 7;\r\n    }\r\n    function untruncateYear(year) {\r\n      if (year > 99) {\r\n        return year;\r\n      } else return year > Settings.twoDigitCutoffYear ? 1900 + year : 2000 + year;\r\n    }\r\n  \r\n    // PARSING\r\n  \r\n    function parseZoneInfo(ts, offsetFormat, locale, timeZone) {\r\n      if (timeZone === void 0) {\r\n        timeZone = null;\r\n      }\r\n      var date = new Date(ts),\r\n        intlOpts = {\r\n          hourCycle: \"h23\",\r\n          year: \"numeric\",\r\n          month: \"2-digit\",\r\n          day: \"2-digit\",\r\n          hour: \"2-digit\",\r\n          minute: \"2-digit\"\r\n        };\r\n      if (timeZone) {\r\n        intlOpts.timeZone = timeZone;\r\n      }\r\n      var modified = _extends({\r\n        timeZoneName: offsetFormat\r\n      }, intlOpts);\r\n      var parsed = new Intl.DateTimeFormat(locale, modified).formatToParts(date).find(function (m) {\r\n        return m.type.toLowerCase() === \"timezonename\";\r\n      });\r\n      return parsed ? parsed.value : null;\r\n    }\r\n  \r\n    // signedOffset('-5', '30') -> -330\r\n    function signedOffset(offHourStr, offMinuteStr) {\r\n      var offHour = parseInt(offHourStr, 10);\r\n  \r\n      // don't || this because we want to preserve -0\r\n      if (Number.isNaN(offHour)) {\r\n        offHour = 0;\r\n      }\r\n      var offMin = parseInt(offMinuteStr, 10) || 0,\r\n        offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\r\n      return offHour * 60 + offMinSigned;\r\n    }\r\n  \r\n    // COERCION\r\n  \r\n    function asNumber(value) {\r\n      var numericValue = Number(value);\r\n      if (typeof value === \"boolean\" || value === \"\" || Number.isNaN(numericValue)) throw new InvalidArgumentError(\"Invalid unit value \" + value);\r\n      return numericValue;\r\n    }\r\n    function normalizeObject(obj, normalizer) {\r\n      var normalized = {};\r\n      for (var u in obj) {\r\n        if (hasOwnProperty(obj, u)) {\r\n          var v = obj[u];\r\n          if (v === undefined || v === null) continue;\r\n          normalized[normalizer(u)] = asNumber(v);\r\n        }\r\n      }\r\n      return normalized;\r\n    }\r\n  \r\n    /**\r\n     * Returns the offset's value as a string\r\n     * @param {number} ts - Epoch milliseconds for which to get the offset\r\n     * @param {string} format - What style of offset to return.\r\n     *                          Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\r\n     * @return {string}\r\n     */\r\n    function formatOffset(offset, format) {\r\n      var hours = Math.trunc(Math.abs(offset / 60)),\r\n        minutes = Math.trunc(Math.abs(offset % 60)),\r\n        sign = offset >= 0 ? \"+\" : \"-\";\r\n      switch (format) {\r\n        case \"short\":\r\n          return \"\" + sign + padStart(hours, 2) + \":\" + padStart(minutes, 2);\r\n        case \"narrow\":\r\n          return \"\" + sign + hours + (minutes > 0 ? \":\" + minutes : \"\");\r\n        case \"techie\":\r\n          return \"\" + sign + padStart(hours, 2) + padStart(minutes, 2);\r\n        default:\r\n          throw new RangeError(\"Value format \" + format + \" is out of range for property format\");\r\n      }\r\n    }\r\n    function timeObject(obj) {\r\n      return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\r\n    }\r\n  \r\n    /**\r\n     * @private\r\n     */\r\n  \r\n    var monthsLong = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\r\n    var monthsShort = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\n    var monthsNarrow = [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"];\r\n    function months(length) {\r\n      switch (length) {\r\n        case \"narrow\":\r\n          return [].concat(monthsNarrow);\r\n        case \"short\":\r\n          return [].concat(monthsShort);\r\n        case \"long\":\r\n          return [].concat(monthsLong);\r\n        case \"numeric\":\r\n          return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"];\r\n        case \"2-digit\":\r\n          return [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"];\r\n        default:\r\n          return null;\r\n      }\r\n    }\r\n    var weekdaysLong = [\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"];\r\n    var weekdaysShort = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\r\n    var weekdaysNarrow = [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"];\r\n    function weekdays(length) {\r\n      switch (length) {\r\n        case \"narrow\":\r\n          return [].concat(weekdaysNarrow);\r\n        case \"short\":\r\n          return [].concat(weekdaysShort);\r\n        case \"long\":\r\n          return [].concat(weekdaysLong);\r\n        case \"numeric\":\r\n          return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"];\r\n        default:\r\n          return null;\r\n      }\r\n    }\r\n    var meridiems = [\"AM\", \"PM\"];\r\n    var erasLong = [\"Before Christ\", \"Anno Domini\"];\r\n    var erasShort = [\"BC\", \"AD\"];\r\n    var erasNarrow = [\"B\", \"A\"];\r\n    function eras(length) {\r\n      switch (length) {\r\n        case \"narrow\":\r\n          return [].concat(erasNarrow);\r\n        case \"short\":\r\n          return [].concat(erasShort);\r\n        case \"long\":\r\n          return [].concat(erasLong);\r\n        default:\r\n          return null;\r\n      }\r\n    }\r\n    function meridiemForDateTime(dt) {\r\n      return meridiems[dt.hour < 12 ? 0 : 1];\r\n    }\r\n    function weekdayForDateTime(dt, length) {\r\n      return weekdays(length)[dt.weekday - 1];\r\n    }\r\n    function monthForDateTime(dt, length) {\r\n      return months(length)[dt.month - 1];\r\n    }\r\n    function eraForDateTime(dt, length) {\r\n      return eras(length)[dt.year < 0 ? 0 : 1];\r\n    }\r\n    function formatRelativeTime(unit, count, numeric, narrow) {\r\n      if (numeric === void 0) {\r\n        numeric = \"always\";\r\n      }\r\n      if (narrow === void 0) {\r\n        narrow = false;\r\n      }\r\n      var units = {\r\n        years: [\"year\", \"yr.\"],\r\n        quarters: [\"quarter\", \"qtr.\"],\r\n        months: [\"month\", \"mo.\"],\r\n        weeks: [\"week\", \"wk.\"],\r\n        days: [\"day\", \"day\", \"days\"],\r\n        hours: [\"hour\", \"hr.\"],\r\n        minutes: [\"minute\", \"min.\"],\r\n        seconds: [\"second\", \"sec.\"]\r\n      };\r\n      var lastable = [\"hours\", \"minutes\", \"seconds\"].indexOf(unit) === -1;\r\n      if (numeric === \"auto\" && lastable) {\r\n        var isDay = unit === \"days\";\r\n        switch (count) {\r\n          case 1:\r\n            return isDay ? \"tomorrow\" : \"next \" + units[unit][0];\r\n          case -1:\r\n            return isDay ? \"yesterday\" : \"last \" + units[unit][0];\r\n          case 0:\r\n            return isDay ? \"today\" : \"this \" + units[unit][0];\r\n        }\r\n      }\r\n  \r\n      var isInPast = Object.is(count, -0) || count < 0,\r\n        fmtValue = Math.abs(count),\r\n        singular = fmtValue === 1,\r\n        lilUnits = units[unit],\r\n        fmtUnit = narrow ? singular ? lilUnits[1] : lilUnits[2] || lilUnits[1] : singular ? units[unit][0] : unit;\r\n      return isInPast ? fmtValue + \" \" + fmtUnit + \" ago\" : \"in \" + fmtValue + \" \" + fmtUnit;\r\n    }\r\n  \r\n    function stringifyTokens(splits, tokenToString) {\r\n      var s = \"\";\r\n      for (var _iterator = _createForOfIteratorHelperLoose(splits), _step; !(_step = _iterator()).done;) {\r\n        var token = _step.value;\r\n        if (token.literal) {\r\n          s += token.val;\r\n        } else {\r\n          s += tokenToString(token.val);\r\n        }\r\n      }\r\n      return s;\r\n    }\r\n    var _macroTokenToFormatOpts = {\r\n      D: DATE_SHORT,\r\n      DD: DATE_MED,\r\n      DDD: DATE_FULL,\r\n      DDDD: DATE_HUGE,\r\n      t: TIME_SIMPLE,\r\n      tt: TIME_WITH_SECONDS,\r\n      ttt: TIME_WITH_SHORT_OFFSET,\r\n      tttt: TIME_WITH_LONG_OFFSET,\r\n      T: TIME_24_SIMPLE,\r\n      TT: TIME_24_WITH_SECONDS,\r\n      TTT: TIME_24_WITH_SHORT_OFFSET,\r\n      TTTT: TIME_24_WITH_LONG_OFFSET,\r\n      f: DATETIME_SHORT,\r\n      ff: DATETIME_MED,\r\n      fff: DATETIME_FULL,\r\n      ffff: DATETIME_HUGE,\r\n      F: DATETIME_SHORT_WITH_SECONDS,\r\n      FF: DATETIME_MED_WITH_SECONDS,\r\n      FFF: DATETIME_FULL_WITH_SECONDS,\r\n      FFFF: DATETIME_HUGE_WITH_SECONDS\r\n    };\r\n  \r\n    /**\r\n     * @private\r\n     */\r\n    var Formatter = /*#__PURE__*/function () {\r\n      Formatter.create = function create(locale, opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        return new Formatter(locale, opts);\r\n      };\r\n      Formatter.parseFormat = function parseFormat(fmt) {\r\n        // white-space is always considered a literal in user-provided formats\r\n        // the \" \" token has a special meaning (see unitForToken)\r\n  \r\n        var current = null,\r\n          currentFull = \"\",\r\n          bracketed = false;\r\n        var splits = [];\r\n        for (var i = 0; i < fmt.length; i++) {\r\n          var c = fmt.charAt(i);\r\n          if (c === \"'\") {\r\n            if (currentFull.length > 0) {\r\n              splits.push({\r\n                literal: bracketed || /^\\s+$/.test(currentFull),\r\n                val: currentFull\r\n              });\r\n            }\r\n            current = null;\r\n            currentFull = \"\";\r\n            bracketed = !bracketed;\r\n          } else if (bracketed) {\r\n            currentFull += c;\r\n          } else if (c === current) {\r\n            currentFull += c;\r\n          } else {\r\n            if (currentFull.length > 0) {\r\n              splits.push({\r\n                literal: /^\\s+$/.test(currentFull),\r\n                val: currentFull\r\n              });\r\n            }\r\n            currentFull = c;\r\n            current = c;\r\n          }\r\n        }\r\n        if (currentFull.length > 0) {\r\n          splits.push({\r\n            literal: bracketed || /^\\s+$/.test(currentFull),\r\n            val: currentFull\r\n          });\r\n        }\r\n        return splits;\r\n      };\r\n      Formatter.macroTokenToFormatOpts = function macroTokenToFormatOpts(token) {\r\n        return _macroTokenToFormatOpts[token];\r\n      };\r\n      function Formatter(locale, formatOpts) {\r\n        this.opts = formatOpts;\r\n        this.loc = locale;\r\n        this.systemLoc = null;\r\n      }\r\n      var _proto = Formatter.prototype;\r\n      _proto.formatWithSystemDefault = function formatWithSystemDefault(dt, opts) {\r\n        if (this.systemLoc === null) {\r\n          this.systemLoc = this.loc.redefaultToSystem();\r\n        }\r\n        var df = this.systemLoc.dtFormatter(dt, _extends({}, this.opts, opts));\r\n        return df.format();\r\n      };\r\n      _proto.dtFormatter = function dtFormatter(dt, opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        return this.loc.dtFormatter(dt, _extends({}, this.opts, opts));\r\n      };\r\n      _proto.formatDateTime = function formatDateTime(dt, opts) {\r\n        return this.dtFormatter(dt, opts).format();\r\n      };\r\n      _proto.formatDateTimeParts = function formatDateTimeParts(dt, opts) {\r\n        return this.dtFormatter(dt, opts).formatToParts();\r\n      };\r\n      _proto.formatInterval = function formatInterval(interval, opts) {\r\n        var df = this.dtFormatter(interval.start, opts);\r\n        return df.dtf.formatRange(interval.start.toJSDate(), interval.end.toJSDate());\r\n      };\r\n      _proto.resolvedOptions = function resolvedOptions(dt, opts) {\r\n        return this.dtFormatter(dt, opts).resolvedOptions();\r\n      };\r\n      _proto.num = function num(n, p) {\r\n        if (p === void 0) {\r\n          p = 0;\r\n        }\r\n        // we get some perf out of doing this here, annoyingly\r\n        if (this.opts.forceSimple) {\r\n          return padStart(n, p);\r\n        }\r\n        var opts = _extends({}, this.opts);\r\n        if (p > 0) {\r\n          opts.padTo = p;\r\n        }\r\n        return this.loc.numberFormatter(opts).format(n);\r\n      };\r\n      _proto.formatDateTimeFromString = function formatDateTimeFromString(dt, fmt) {\r\n        var _this = this;\r\n        var knownEnglish = this.loc.listingMode() === \"en\",\r\n          useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== \"gregory\",\r\n          string = function string(opts, extract) {\r\n            return _this.loc.extract(dt, opts, extract);\r\n          },\r\n          formatOffset = function formatOffset(opts) {\r\n            if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\r\n              return \"Z\";\r\n            }\r\n            return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : \"\";\r\n          },\r\n          meridiem = function meridiem() {\r\n            return knownEnglish ? meridiemForDateTime(dt) : string({\r\n              hour: \"numeric\",\r\n              hourCycle: \"h12\"\r\n            }, \"dayperiod\");\r\n          },\r\n          month = function month(length, standalone) {\r\n            return knownEnglish ? monthForDateTime(dt, length) : string(standalone ? {\r\n              month: length\r\n            } : {\r\n              month: length,\r\n              day: \"numeric\"\r\n            }, \"month\");\r\n          },\r\n          weekday = function weekday(length, standalone) {\r\n            return knownEnglish ? weekdayForDateTime(dt, length) : string(standalone ? {\r\n              weekday: length\r\n            } : {\r\n              weekday: length,\r\n              month: \"long\",\r\n              day: \"numeric\"\r\n            }, \"weekday\");\r\n          },\r\n          maybeMacro = function maybeMacro(token) {\r\n            var formatOpts = Formatter.macroTokenToFormatOpts(token);\r\n            if (formatOpts) {\r\n              return _this.formatWithSystemDefault(dt, formatOpts);\r\n            } else {\r\n              return token;\r\n            }\r\n          },\r\n          era = function era(length) {\r\n            return knownEnglish ? eraForDateTime(dt, length) : string({\r\n              era: length\r\n            }, \"era\");\r\n          },\r\n          tokenToString = function tokenToString(token) {\r\n            // Where possible: https://cldr.unicode.org/translation/date-time/date-time-symbols\r\n            switch (token) {\r\n              // ms\r\n              case \"S\":\r\n                return _this.num(dt.millisecond);\r\n              case \"u\":\r\n              // falls through\r\n              case \"SSS\":\r\n                return _this.num(dt.millisecond, 3);\r\n              // seconds\r\n              case \"s\":\r\n                return _this.num(dt.second);\r\n              case \"ss\":\r\n                return _this.num(dt.second, 2);\r\n              // fractional seconds\r\n              case \"uu\":\r\n                return _this.num(Math.floor(dt.millisecond / 10), 2);\r\n              case \"uuu\":\r\n                return _this.num(Math.floor(dt.millisecond / 100));\r\n              // minutes\r\n              case \"m\":\r\n                return _this.num(dt.minute);\r\n              case \"mm\":\r\n                return _this.num(dt.minute, 2);\r\n              // hours\r\n              case \"h\":\r\n                return _this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\r\n              case \"hh\":\r\n                return _this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\r\n              case \"H\":\r\n                return _this.num(dt.hour);\r\n              case \"HH\":\r\n                return _this.num(dt.hour, 2);\r\n              // offset\r\n              case \"Z\":\r\n                // like +6\r\n                return formatOffset({\r\n                  format: \"narrow\",\r\n                  allowZ: _this.opts.allowZ\r\n                });\r\n              case \"ZZ\":\r\n                // like +06:00\r\n                return formatOffset({\r\n                  format: \"short\",\r\n                  allowZ: _this.opts.allowZ\r\n                });\r\n              case \"ZZZ\":\r\n                // like +0600\r\n                return formatOffset({\r\n                  format: \"techie\",\r\n                  allowZ: _this.opts.allowZ\r\n                });\r\n              case \"ZZZZ\":\r\n                // like EST\r\n                return dt.zone.offsetName(dt.ts, {\r\n                  format: \"short\",\r\n                  locale: _this.loc.locale\r\n                });\r\n              case \"ZZZZZ\":\r\n                // like Eastern Standard Time\r\n                return dt.zone.offsetName(dt.ts, {\r\n                  format: \"long\",\r\n                  locale: _this.loc.locale\r\n                });\r\n              // zone\r\n              case \"z\":\r\n                // like America/New_York\r\n                return dt.zoneName;\r\n              // meridiems\r\n              case \"a\":\r\n                return meridiem();\r\n              // dates\r\n              case \"d\":\r\n                return useDateTimeFormatter ? string({\r\n                  day: \"numeric\"\r\n                }, \"day\") : _this.num(dt.day);\r\n              case \"dd\":\r\n                return useDateTimeFormatter ? string({\r\n                  day: \"2-digit\"\r\n                }, \"day\") : _this.num(dt.day, 2);\r\n              // weekdays - standalone\r\n              case \"c\":\r\n                // like 1\r\n                return _this.num(dt.weekday);\r\n              case \"ccc\":\r\n                // like 'Tues'\r\n                return weekday(\"short\", true);\r\n              case \"cccc\":\r\n                // like 'Tuesday'\r\n                return weekday(\"long\", true);\r\n              case \"ccccc\":\r\n                // like 'T'\r\n                return weekday(\"narrow\", true);\r\n              // weekdays - format\r\n              case \"E\":\r\n                // like 1\r\n                return _this.num(dt.weekday);\r\n              case \"EEE\":\r\n                // like 'Tues'\r\n                return weekday(\"short\", false);\r\n              case \"EEEE\":\r\n                // like 'Tuesday'\r\n                return weekday(\"long\", false);\r\n              case \"EEEEE\":\r\n                // like 'T'\r\n                return weekday(\"narrow\", false);\r\n              // months - standalone\r\n              case \"L\":\r\n                // like 1\r\n                return useDateTimeFormatter ? string({\r\n                  month: \"numeric\",\r\n                  day: \"numeric\"\r\n                }, \"month\") : _this.num(dt.month);\r\n              case \"LL\":\r\n                // like 01, doesn't seem to work\r\n                return useDateTimeFormatter ? string({\r\n                  month: \"2-digit\",\r\n                  day: \"numeric\"\r\n                }, \"month\") : _this.num(dt.month, 2);\r\n              case \"LLL\":\r\n                // like Jan\r\n                return month(\"short\", true);\r\n              case \"LLLL\":\r\n                // like January\r\n                return month(\"long\", true);\r\n              case \"LLLLL\":\r\n                // like J\r\n                return month(\"narrow\", true);\r\n              // months - format\r\n              case \"M\":\r\n                // like 1\r\n                return useDateTimeFormatter ? string({\r\n                  month: \"numeric\"\r\n                }, \"month\") : _this.num(dt.month);\r\n              case \"MM\":\r\n                // like 01\r\n                return useDateTimeFormatter ? string({\r\n                  month: \"2-digit\"\r\n                }, \"month\") : _this.num(dt.month, 2);\r\n              case \"MMM\":\r\n                // like Jan\r\n                return month(\"short\", false);\r\n              case \"MMMM\":\r\n                // like January\r\n                return month(\"long\", false);\r\n              case \"MMMMM\":\r\n                // like J\r\n                return month(\"narrow\", false);\r\n              // years\r\n              case \"y\":\r\n                // like 2014\r\n                return useDateTimeFormatter ? string({\r\n                  year: \"numeric\"\r\n                }, \"year\") : _this.num(dt.year);\r\n              case \"yy\":\r\n                // like 14\r\n                return useDateTimeFormatter ? string({\r\n                  year: \"2-digit\"\r\n                }, \"year\") : _this.num(dt.year.toString().slice(-2), 2);\r\n              case \"yyyy\":\r\n                // like 0012\r\n                return useDateTimeFormatter ? string({\r\n                  year: \"numeric\"\r\n                }, \"year\") : _this.num(dt.year, 4);\r\n              case \"yyyyyy\":\r\n                // like 000012\r\n                return useDateTimeFormatter ? string({\r\n                  year: \"numeric\"\r\n                }, \"year\") : _this.num(dt.year, 6);\r\n              // eras\r\n              case \"G\":\r\n                // like AD\r\n                return era(\"short\");\r\n              case \"GG\":\r\n                // like Anno Domini\r\n                return era(\"long\");\r\n              case \"GGGGG\":\r\n                return era(\"narrow\");\r\n              case \"kk\":\r\n                return _this.num(dt.weekYear.toString().slice(-2), 2);\r\n              case \"kkkk\":\r\n                return _this.num(dt.weekYear, 4);\r\n              case \"W\":\r\n                return _this.num(dt.weekNumber);\r\n              case \"WW\":\r\n                return _this.num(dt.weekNumber, 2);\r\n              case \"n\":\r\n                return _this.num(dt.localWeekNumber);\r\n              case \"nn\":\r\n                return _this.num(dt.localWeekNumber, 2);\r\n              case \"ii\":\r\n                return _this.num(dt.localWeekYear.toString().slice(-2), 2);\r\n              case \"iiii\":\r\n                return _this.num(dt.localWeekYear, 4);\r\n              case \"o\":\r\n                return _this.num(dt.ordinal);\r\n              case \"ooo\":\r\n                return _this.num(dt.ordinal, 3);\r\n              case \"q\":\r\n                // like 1\r\n                return _this.num(dt.quarter);\r\n              case \"qq\":\r\n                // like 01\r\n                return _this.num(dt.quarter, 2);\r\n              case \"X\":\r\n                return _this.num(Math.floor(dt.ts / 1000));\r\n              case \"x\":\r\n                return _this.num(dt.ts);\r\n              default:\r\n                return maybeMacro(token);\r\n            }\r\n          };\r\n        return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\r\n      };\r\n      _proto.formatDurationFromString = function formatDurationFromString(dur, fmt) {\r\n        var _this2 = this;\r\n        var tokenToField = function tokenToField(token) {\r\n            switch (token[0]) {\r\n              case \"S\":\r\n                return \"millisecond\";\r\n              case \"s\":\r\n                return \"second\";\r\n              case \"m\":\r\n                return \"minute\";\r\n              case \"h\":\r\n                return \"hour\";\r\n              case \"d\":\r\n                return \"day\";\r\n              case \"w\":\r\n                return \"week\";\r\n              case \"M\":\r\n                return \"month\";\r\n              case \"y\":\r\n                return \"year\";\r\n              default:\r\n                return null;\r\n            }\r\n          },\r\n          tokenToString = function tokenToString(lildur) {\r\n            return function (token) {\r\n              var mapped = tokenToField(token);\r\n              if (mapped) {\r\n                return _this2.num(lildur.get(mapped), token.length);\r\n              } else {\r\n                return token;\r\n              }\r\n            };\r\n          },\r\n          tokens = Formatter.parseFormat(fmt),\r\n          realTokens = tokens.reduce(function (found, _ref) {\r\n            var literal = _ref.literal,\r\n              val = _ref.val;\r\n            return literal ? found : found.concat(val);\r\n          }, []),\r\n          collapsed = dur.shiftTo.apply(dur, realTokens.map(tokenToField).filter(function (t) {\r\n            return t;\r\n          }));\r\n        return stringifyTokens(tokens, tokenToString(collapsed));\r\n      };\r\n      return Formatter;\r\n    }();\r\n  \r\n    /*\r\n     * This file handles parsing for well-specified formats. Here's how it works:\r\n     * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\r\n     * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\r\n     * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\r\n     * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\r\n     * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\r\n     * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\r\n     */\r\n  \r\n    var ianaRegex = /[A-Za-z_+-]{1,256}(?::?\\/[A-Za-z0-9_+-]{1,256}(?:\\/[A-Za-z0-9_+-]{1,256})?)?/;\r\n    function combineRegexes() {\r\n      for (var _len = arguments.length, regexes = new Array(_len), _key = 0; _key < _len; _key++) {\r\n        regexes[_key] = arguments[_key];\r\n      }\r\n      var full = regexes.reduce(function (f, r) {\r\n        return f + r.source;\r\n      }, \"\");\r\n      return RegExp(\"^\" + full + \"$\");\r\n    }\r\n    function combineExtractors() {\r\n      for (var _len2 = arguments.length, extractors = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\r\n        extractors[_key2] = arguments[_key2];\r\n      }\r\n      return function (m) {\r\n        return extractors.reduce(function (_ref, ex) {\r\n          var mergedVals = _ref[0],\r\n            mergedZone = _ref[1],\r\n            cursor = _ref[2];\r\n          var _ex = ex(m, cursor),\r\n            val = _ex[0],\r\n            zone = _ex[1],\r\n            next = _ex[2];\r\n          return [_extends({}, mergedVals, val), zone || mergedZone, next];\r\n        }, [{}, null, 1]).slice(0, 2);\r\n      };\r\n    }\r\n    function parse(s) {\r\n      if (s == null) {\r\n        return [null, null];\r\n      }\r\n      for (var _len3 = arguments.length, patterns = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\r\n        patterns[_key3 - 1] = arguments[_key3];\r\n      }\r\n      for (var _i = 0, _patterns = patterns; _i < _patterns.length; _i++) {\r\n        var _patterns$_i = _patterns[_i],\r\n          regex = _patterns$_i[0],\r\n          extractor = _patterns$_i[1];\r\n        var m = regex.exec(s);\r\n        if (m) {\r\n          return extractor(m);\r\n        }\r\n      }\r\n      return [null, null];\r\n    }\r\n    function simpleParse() {\r\n      for (var _len4 = arguments.length, keys = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\r\n        keys[_key4] = arguments[_key4];\r\n      }\r\n      return function (match, cursor) {\r\n        var ret = {};\r\n        var i;\r\n        for (i = 0; i < keys.length; i++) {\r\n          ret[keys[i]] = parseInteger(match[cursor + i]);\r\n        }\r\n        return [ret, null, cursor + i];\r\n      };\r\n    }\r\n  \r\n    // ISO and SQL parsing\r\n    var offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/;\r\n    var isoExtendedZone = \"(?:\" + offsetRegex.source + \"?(?:\\\\[(\" + ianaRegex.source + \")\\\\])?)?\";\r\n    var isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/;\r\n    var isoTimeRegex = RegExp(\"\" + isoTimeBaseRegex.source + isoExtendedZone);\r\n    var isoTimeExtensionRegex = RegExp(\"(?:T\" + isoTimeRegex.source + \")?\");\r\n    var isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/;\r\n    var isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/;\r\n    var isoOrdinalRegex = /(\\d{4})-?(\\d{3})/;\r\n    var extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\");\r\n    var extractISOOrdinalData = simpleParse(\"year\", \"ordinal\");\r\n    var sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/; // dumbed-down version of the ISO one\r\n    var sqlTimeRegex = RegExp(isoTimeBaseRegex.source + \" ?(?:\" + offsetRegex.source + \"|(\" + ianaRegex.source + \"))?\");\r\n    var sqlTimeExtensionRegex = RegExp(\"(?: \" + sqlTimeRegex.source + \")?\");\r\n    function int(match, pos, fallback) {\r\n      var m = match[pos];\r\n      return isUndefined(m) ? fallback : parseInteger(m);\r\n    }\r\n    function extractISOYmd(match, cursor) {\r\n      var item = {\r\n        year: int(match, cursor),\r\n        month: int(match, cursor + 1, 1),\r\n        day: int(match, cursor + 2, 1)\r\n      };\r\n      return [item, null, cursor + 3];\r\n    }\r\n    function extractISOTime(match, cursor) {\r\n      var item = {\r\n        hours: int(match, cursor, 0),\r\n        minutes: int(match, cursor + 1, 0),\r\n        seconds: int(match, cursor + 2, 0),\r\n        milliseconds: parseMillis(match[cursor + 3])\r\n      };\r\n      return [item, null, cursor + 4];\r\n    }\r\n    function extractISOOffset(match, cursor) {\r\n      var local = !match[cursor] && !match[cursor + 1],\r\n        fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\r\n        zone = local ? null : FixedOffsetZone.instance(fullOffset);\r\n      return [{}, zone, cursor + 3];\r\n    }\r\n    function extractIANAZone(match, cursor) {\r\n      var zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\r\n      return [{}, zone, cursor + 1];\r\n    }\r\n  \r\n    // ISO time parsing\r\n  \r\n    var isoTimeOnly = RegExp(\"^T?\" + isoTimeBaseRegex.source + \"$\");\r\n  \r\n    // ISO duration parsing\r\n  \r\n    var isoDuration = /^-?P(?:(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)Y)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)W)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)D)?(?:T(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)H)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,20}))?S)?)?)$/;\r\n    function extractISODuration(match) {\r\n      var s = match[0],\r\n        yearStr = match[1],\r\n        monthStr = match[2],\r\n        weekStr = match[3],\r\n        dayStr = match[4],\r\n        hourStr = match[5],\r\n        minuteStr = match[6],\r\n        secondStr = match[7],\r\n        millisecondsStr = match[8];\r\n      var hasNegativePrefix = s[0] === \"-\";\r\n      var negativeSeconds = secondStr && secondStr[0] === \"-\";\r\n      var maybeNegate = function maybeNegate(num, force) {\r\n        if (force === void 0) {\r\n          force = false;\r\n        }\r\n        return num !== undefined && (force || num && hasNegativePrefix) ? -num : num;\r\n      };\r\n      return [{\r\n        years: maybeNegate(parseFloating(yearStr)),\r\n        months: maybeNegate(parseFloating(monthStr)),\r\n        weeks: maybeNegate(parseFloating(weekStr)),\r\n        days: maybeNegate(parseFloating(dayStr)),\r\n        hours: maybeNegate(parseFloating(hourStr)),\r\n        minutes: maybeNegate(parseFloating(minuteStr)),\r\n        seconds: maybeNegate(parseFloating(secondStr), secondStr === \"-0\"),\r\n        milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds)\r\n      }];\r\n    }\r\n  \r\n    // These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\r\n    // and not just that we're in -240 *right now*. But since I don't think these are used that often\r\n    // I'm just going to ignore that\r\n    var obsOffsets = {\r\n      GMT: 0,\r\n      EDT: -4 * 60,\r\n      EST: -5 * 60,\r\n      CDT: -5 * 60,\r\n      CST: -6 * 60,\r\n      MDT: -6 * 60,\r\n      MST: -7 * 60,\r\n      PDT: -7 * 60,\r\n      PST: -8 * 60\r\n    };\r\n    function fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\r\n      var result = {\r\n        year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\r\n        month: monthsShort.indexOf(monthStr) + 1,\r\n        day: parseInteger(dayStr),\r\n        hour: parseInteger(hourStr),\r\n        minute: parseInteger(minuteStr)\r\n      };\r\n      if (secondStr) result.second = parseInteger(secondStr);\r\n      if (weekdayStr) {\r\n        result.weekday = weekdayStr.length > 3 ? weekdaysLong.indexOf(weekdayStr) + 1 : weekdaysShort.indexOf(weekdayStr) + 1;\r\n      }\r\n      return result;\r\n    }\r\n  \r\n    // RFC 2822/5322\r\n    var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\\d\\d)(\\d\\d)))$/;\r\n    function extractRFC2822(match) {\r\n      var weekdayStr = match[1],\r\n        dayStr = match[2],\r\n        monthStr = match[3],\r\n        yearStr = match[4],\r\n        hourStr = match[5],\r\n        minuteStr = match[6],\r\n        secondStr = match[7],\r\n        obsOffset = match[8],\r\n        milOffset = match[9],\r\n        offHourStr = match[10],\r\n        offMinuteStr = match[11],\r\n        result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\r\n      var offset;\r\n      if (obsOffset) {\r\n        offset = obsOffsets[obsOffset];\r\n      } else if (milOffset) {\r\n        offset = 0;\r\n      } else {\r\n        offset = signedOffset(offHourStr, offMinuteStr);\r\n      }\r\n      return [result, new FixedOffsetZone(offset)];\r\n    }\r\n    function preprocessRFC2822(s) {\r\n      // Remove comments and folding whitespace and replace multiple-spaces with a single space\r\n      return s.replace(/\\([^()]*\\)|[\\n\\t]/g, \" \").replace(/(\\s\\s+)/g, \" \").trim();\r\n    }\r\n  \r\n    // http date\r\n  \r\n    var rfc1123 = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\r\n      rfc850 = /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\r\n      ascii = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\r\n    function extractRFC1123Or850(match) {\r\n      var weekdayStr = match[1],\r\n        dayStr = match[2],\r\n        monthStr = match[3],\r\n        yearStr = match[4],\r\n        hourStr = match[5],\r\n        minuteStr = match[6],\r\n        secondStr = match[7],\r\n        result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\r\n      return [result, FixedOffsetZone.utcInstance];\r\n    }\r\n    function extractASCII(match) {\r\n      var weekdayStr = match[1],\r\n        monthStr = match[2],\r\n        dayStr = match[3],\r\n        hourStr = match[4],\r\n        minuteStr = match[5],\r\n        secondStr = match[6],\r\n        yearStr = match[7],\r\n        result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\r\n      return [result, FixedOffsetZone.utcInstance];\r\n    }\r\n    var isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\r\n    var isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\r\n    var isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\r\n    var isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\r\n    var extractISOYmdTimeAndOffset = combineExtractors(extractISOYmd, extractISOTime, extractISOOffset, extractIANAZone);\r\n    var extractISOWeekTimeAndOffset = combineExtractors(extractISOWeekData, extractISOTime, extractISOOffset, extractIANAZone);\r\n    var extractISOOrdinalDateAndTime = combineExtractors(extractISOOrdinalData, extractISOTime, extractISOOffset, extractIANAZone);\r\n    var extractISOTimeAndOffset = combineExtractors(extractISOTime, extractISOOffset, extractIANAZone);\r\n  \r\n    /*\r\n     * @private\r\n     */\r\n  \r\n    function parseISODate(s) {\r\n      return parse(s, [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset], [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset], [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime], [isoTimeCombinedRegex, extractISOTimeAndOffset]);\r\n    }\r\n    function parseRFC2822Date(s) {\r\n      return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\r\n    }\r\n    function parseHTTPDate(s) {\r\n      return parse(s, [rfc1123, extractRFC1123Or850], [rfc850, extractRFC1123Or850], [ascii, extractASCII]);\r\n    }\r\n    function parseISODuration(s) {\r\n      return parse(s, [isoDuration, extractISODuration]);\r\n    }\r\n    var extractISOTimeOnly = combineExtractors(extractISOTime);\r\n    function parseISOTimeOnly(s) {\r\n      return parse(s, [isoTimeOnly, extractISOTimeOnly]);\r\n    }\r\n    var sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\r\n    var sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\r\n    var extractISOTimeOffsetAndIANAZone = combineExtractors(extractISOTime, extractISOOffset, extractIANAZone);\r\n    function parseSQL(s) {\r\n      return parse(s, [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset], [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]);\r\n    }\r\n  \r\n    var INVALID$2 = \"Invalid Duration\";\r\n  \r\n    // unit conversion constants\r\n    var lowOrderMatrix = {\r\n        weeks: {\r\n          days: 7,\r\n          hours: 7 * 24,\r\n          minutes: 7 * 24 * 60,\r\n          seconds: 7 * 24 * 60 * 60,\r\n          milliseconds: 7 * 24 * 60 * 60 * 1000\r\n        },\r\n        days: {\r\n          hours: 24,\r\n          minutes: 24 * 60,\r\n          seconds: 24 * 60 * 60,\r\n          milliseconds: 24 * 60 * 60 * 1000\r\n        },\r\n        hours: {\r\n          minutes: 60,\r\n          seconds: 60 * 60,\r\n          milliseconds: 60 * 60 * 1000\r\n        },\r\n        minutes: {\r\n          seconds: 60,\r\n          milliseconds: 60 * 1000\r\n        },\r\n        seconds: {\r\n          milliseconds: 1000\r\n        }\r\n      },\r\n      casualMatrix = _extends({\r\n        years: {\r\n          quarters: 4,\r\n          months: 12,\r\n          weeks: 52,\r\n          days: 365,\r\n          hours: 365 * 24,\r\n          minutes: 365 * 24 * 60,\r\n          seconds: 365 * 24 * 60 * 60,\r\n          milliseconds: 365 * 24 * 60 * 60 * 1000\r\n        },\r\n        quarters: {\r\n          months: 3,\r\n          weeks: 13,\r\n          days: 91,\r\n          hours: 91 * 24,\r\n          minutes: 91 * 24 * 60,\r\n          seconds: 91 * 24 * 60 * 60,\r\n          milliseconds: 91 * 24 * 60 * 60 * 1000\r\n        },\r\n        months: {\r\n          weeks: 4,\r\n          days: 30,\r\n          hours: 30 * 24,\r\n          minutes: 30 * 24 * 60,\r\n          seconds: 30 * 24 * 60 * 60,\r\n          milliseconds: 30 * 24 * 60 * 60 * 1000\r\n        }\r\n      }, lowOrderMatrix),\r\n      daysInYearAccurate = 146097.0 / 400,\r\n      daysInMonthAccurate = 146097.0 / 4800,\r\n      accurateMatrix = _extends({\r\n        years: {\r\n          quarters: 4,\r\n          months: 12,\r\n          weeks: daysInYearAccurate / 7,\r\n          days: daysInYearAccurate,\r\n          hours: daysInYearAccurate * 24,\r\n          minutes: daysInYearAccurate * 24 * 60,\r\n          seconds: daysInYearAccurate * 24 * 60 * 60,\r\n          milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000\r\n        },\r\n        quarters: {\r\n          months: 3,\r\n          weeks: daysInYearAccurate / 28,\r\n          days: daysInYearAccurate / 4,\r\n          hours: daysInYearAccurate * 24 / 4,\r\n          minutes: daysInYearAccurate * 24 * 60 / 4,\r\n          seconds: daysInYearAccurate * 24 * 60 * 60 / 4,\r\n          milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000 / 4\r\n        },\r\n        months: {\r\n          weeks: daysInMonthAccurate / 7,\r\n          days: daysInMonthAccurate,\r\n          hours: daysInMonthAccurate * 24,\r\n          minutes: daysInMonthAccurate * 24 * 60,\r\n          seconds: daysInMonthAccurate * 24 * 60 * 60,\r\n          milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000\r\n        }\r\n      }, lowOrderMatrix);\r\n  \r\n    // units ordered by size\r\n    var orderedUnits$1 = [\"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\"];\r\n    var reverseUnits = orderedUnits$1.slice(0).reverse();\r\n  \r\n    // clone really means \"create another instance just like this one, but with these changes\"\r\n    function clone$1(dur, alts, clear) {\r\n      if (clear === void 0) {\r\n        clear = false;\r\n      }\r\n      // deep merge for vals\r\n      var conf = {\r\n        values: clear ? alts.values : _extends({}, dur.values, alts.values || {}),\r\n        loc: dur.loc.clone(alts.loc),\r\n        conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy,\r\n        matrix: alts.matrix || dur.matrix\r\n      };\r\n      return new Duration(conf);\r\n    }\r\n    function durationToMillis(matrix, vals) {\r\n      var _vals$milliseconds;\r\n      var sum = (_vals$milliseconds = vals.milliseconds) != null ? _vals$milliseconds : 0;\r\n      for (var _iterator = _createForOfIteratorHelperLoose(reverseUnits.slice(1)), _step; !(_step = _iterator()).done;) {\r\n        var unit = _step.value;\r\n        if (vals[unit]) {\r\n          sum += vals[unit] * matrix[unit][\"milliseconds\"];\r\n        }\r\n      }\r\n      return sum;\r\n    }\r\n  \r\n    // NB: mutates parameters\r\n    function normalizeValues(matrix, vals) {\r\n      // the logic below assumes the overall value of the duration is positive\r\n      // if this is not the case, factor is used to make it so\r\n      var factor = durationToMillis(matrix, vals) < 0 ? -1 : 1;\r\n      orderedUnits$1.reduceRight(function (previous, current) {\r\n        if (!isUndefined(vals[current])) {\r\n          if (previous) {\r\n            var previousVal = vals[previous] * factor;\r\n            var conv = matrix[current][previous];\r\n  \r\n            // if (previousVal < 0):\r\n            // lower order unit is negative (e.g. { years: 2, days: -2 })\r\n            // normalize this by reducing the higher order unit by the appropriate amount\r\n            // and increasing the lower order unit\r\n            // this can never make the higher order unit negative, because this function only operates\r\n            // on positive durations, so the amount of time represented by the lower order unit cannot\r\n            // be larger than the higher order unit\r\n            // else:\r\n            // lower order unit is positive (e.g. { years: 2, days: 450 } or { years: -2, days: 450 })\r\n            // in this case we attempt to convert as much as possible from the lower order unit into\r\n            // the higher order one\r\n            //\r\n            // Math.floor takes care of both of these cases, rounding away from 0\r\n            // if previousVal < 0 it makes the absolute value larger\r\n            // if previousVal >= it makes the absolute value smaller\r\n            var rollUp = Math.floor(previousVal / conv);\r\n            vals[current] += rollUp * factor;\r\n            vals[previous] -= rollUp * conv * factor;\r\n          }\r\n          return current;\r\n        } else {\r\n          return previous;\r\n        }\r\n      }, null);\r\n  \r\n      // try to convert any decimals into smaller units if possible\r\n      // for example for { years: 2.5, days: 0, seconds: 0 } we want to get { years: 2, days: 182, hours: 12 }\r\n      orderedUnits$1.reduce(function (previous, current) {\r\n        if (!isUndefined(vals[current])) {\r\n          if (previous) {\r\n            var fraction = vals[previous] % 1;\r\n            vals[previous] -= fraction;\r\n            vals[current] += fraction * matrix[previous][current];\r\n          }\r\n          return current;\r\n        } else {\r\n          return previous;\r\n        }\r\n      }, null);\r\n    }\r\n  \r\n    // Remove all properties with a value of 0 from an object\r\n    function removeZeroes(vals) {\r\n      var newVals = {};\r\n      for (var _i = 0, _Object$entries = Object.entries(vals); _i < _Object$entries.length; _i++) {\r\n        var _Object$entries$_i = _Object$entries[_i],\r\n          key = _Object$entries$_i[0],\r\n          value = _Object$entries$_i[1];\r\n        if (value !== 0) {\r\n          newVals[key] = value;\r\n        }\r\n      }\r\n      return newVals;\r\n    }\r\n  \r\n    /**\r\n     * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime#plus} to add a Duration object to a DateTime, producing another DateTime.\r\n     *\r\n     * Here is a brief overview of commonly used methods and getters in Duration:\r\n     *\r\n     * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.\r\n     * * **Unit values** See the {@link Duration#years}, {@link Duration#months}, {@link Duration#weeks}, {@link Duration#days}, {@link Duration#hours}, {@link Duration#minutes}, {@link Duration#seconds}, {@link Duration#milliseconds} accessors.\r\n     * * **Configuration** See  {@link Duration#locale} and {@link Duration#numberingSystem} accessors.\r\n     * * **Transformation** To create new Durations out of old ones use {@link Duration#plus}, {@link Duration#minus}, {@link Duration#normalize}, {@link Duration#set}, {@link Duration#reconfigure}, {@link Duration#shiftTo}, and {@link Duration#negate}.\r\n     * * **Output** To convert the Duration into other representations, see {@link Duration#as}, {@link Duration#toISO}, {@link Duration#toFormat}, and {@link Duration#toJSON}\r\n     *\r\n     * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\r\n     */\r\n    var Duration = /*#__PURE__*/function (_Symbol$for) {\r\n      /**\r\n       * @private\r\n       */\r\n      function Duration(config) {\r\n        var accurate = config.conversionAccuracy === \"longterm\" || false;\r\n        var matrix = accurate ? accurateMatrix : casualMatrix;\r\n        if (config.matrix) {\r\n          matrix = config.matrix;\r\n        }\r\n  \r\n        /**\r\n         * @access private\r\n         */\r\n        this.values = config.values;\r\n        /**\r\n         * @access private\r\n         */\r\n        this.loc = config.loc || Locale.create();\r\n        /**\r\n         * @access private\r\n         */\r\n        this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\r\n        /**\r\n         * @access private\r\n         */\r\n        this.invalid = config.invalid || null;\r\n        /**\r\n         * @access private\r\n         */\r\n        this.matrix = matrix;\r\n        /**\r\n         * @access private\r\n         */\r\n        this.isLuxonDuration = true;\r\n      }\r\n  \r\n      /**\r\n       * Create Duration from a number of milliseconds.\r\n       * @param {number} count of milliseconds\r\n       * @param {Object} opts - options for parsing\r\n       * @param {string} [opts.locale='en-US'] - the locale to use\r\n       * @param {string} opts.numberingSystem - the numbering system to use\r\n       * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\r\n       * @return {Duration}\r\n       */\r\n      Duration.fromMillis = function fromMillis(count, opts) {\r\n        return Duration.fromObject({\r\n          milliseconds: count\r\n        }, opts);\r\n      }\r\n  \r\n      /**\r\n       * Create a Duration from a JavaScript object with keys like 'years' and 'hours'.\r\n       * If this object is empty then a zero milliseconds duration is returned.\r\n       * @param {Object} obj - the object to create the DateTime from\r\n       * @param {number} obj.years\r\n       * @param {number} obj.quarters\r\n       * @param {number} obj.months\r\n       * @param {number} obj.weeks\r\n       * @param {number} obj.days\r\n       * @param {number} obj.hours\r\n       * @param {number} obj.minutes\r\n       * @param {number} obj.seconds\r\n       * @param {number} obj.milliseconds\r\n       * @param {Object} [opts=[]] - options for creating this Duration\r\n       * @param {string} [opts.locale='en-US'] - the locale to use\r\n       * @param {string} opts.numberingSystem - the numbering system to use\r\n       * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\r\n       * @param {string} [opts.matrix=Object] - the custom conversion system to use\r\n       * @return {Duration}\r\n       */;\r\n      Duration.fromObject = function fromObject(obj, opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        if (obj == null || typeof obj !== \"object\") {\r\n          throw new InvalidArgumentError(\"Duration.fromObject: argument expected to be an object, got \" + (obj === null ? \"null\" : typeof obj));\r\n        }\r\n        return new Duration({\r\n          values: normalizeObject(obj, Duration.normalizeUnit),\r\n          loc: Locale.fromObject(opts),\r\n          conversionAccuracy: opts.conversionAccuracy,\r\n          matrix: opts.matrix\r\n        });\r\n      }\r\n  \r\n      /**\r\n       * Create a Duration from DurationLike.\r\n       *\r\n       * @param {Object | number | Duration} durationLike\r\n       * One of:\r\n       * - object with keys like 'years' and 'hours'.\r\n       * - number representing milliseconds\r\n       * - Duration instance\r\n       * @return {Duration}\r\n       */;\r\n      Duration.fromDurationLike = function fromDurationLike(durationLike) {\r\n        if (isNumber(durationLike)) {\r\n          return Duration.fromMillis(durationLike);\r\n        } else if (Duration.isDuration(durationLike)) {\r\n          return durationLike;\r\n        } else if (typeof durationLike === \"object\") {\r\n          return Duration.fromObject(durationLike);\r\n        } else {\r\n          throw new InvalidArgumentError(\"Unknown duration argument \" + durationLike + \" of type \" + typeof durationLike);\r\n        }\r\n      }\r\n  \r\n      /**\r\n       * Create a Duration from an ISO 8601 duration string.\r\n       * @param {string} text - text to parse\r\n       * @param {Object} opts - options for parsing\r\n       * @param {string} [opts.locale='en-US'] - the locale to use\r\n       * @param {string} opts.numberingSystem - the numbering system to use\r\n       * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\r\n       * @param {string} [opts.matrix=Object] - the preset conversion system to use\r\n       * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\r\n       * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\r\n       * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\r\n       * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\r\n       * @return {Duration}\r\n       */;\r\n      Duration.fromISO = function fromISO(text, opts) {\r\n        var _parseISODuration = parseISODuration(text),\r\n          parsed = _parseISODuration[0];\r\n        if (parsed) {\r\n          return Duration.fromObject(parsed, opts);\r\n        } else {\r\n          return Duration.invalid(\"unparsable\", \"the input \\\"\" + text + \"\\\" can't be parsed as ISO 8601\");\r\n        }\r\n      }\r\n  \r\n      /**\r\n       * Create a Duration from an ISO 8601 time string.\r\n       * @param {string} text - text to parse\r\n       * @param {Object} opts - options for parsing\r\n       * @param {string} [opts.locale='en-US'] - the locale to use\r\n       * @param {string} opts.numberingSystem - the numbering system to use\r\n       * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\r\n       * @param {string} [opts.matrix=Object] - the conversion system to use\r\n       * @see https://en.wikipedia.org/wiki/ISO_8601#Times\r\n       * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }\r\n       * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\r\n       * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\r\n       * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\r\n       * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\r\n       * @return {Duration}\r\n       */;\r\n      Duration.fromISOTime = function fromISOTime(text, opts) {\r\n        var _parseISOTimeOnly = parseISOTimeOnly(text),\r\n          parsed = _parseISOTimeOnly[0];\r\n        if (parsed) {\r\n          return Duration.fromObject(parsed, opts);\r\n        } else {\r\n          return Duration.invalid(\"unparsable\", \"the input \\\"\" + text + \"\\\" can't be parsed as ISO 8601\");\r\n        }\r\n      }\r\n  \r\n      /**\r\n       * Create an invalid Duration.\r\n       * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\r\n       * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\r\n       * @return {Duration}\r\n       */;\r\n      Duration.invalid = function invalid(reason, explanation) {\r\n        if (explanation === void 0) {\r\n          explanation = null;\r\n        }\r\n        if (!reason) {\r\n          throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\r\n        }\r\n        var invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\r\n        if (Settings.throwOnInvalid) {\r\n          throw new InvalidDurationError(invalid);\r\n        } else {\r\n          return new Duration({\r\n            invalid: invalid\r\n          });\r\n        }\r\n      }\r\n  \r\n      /**\r\n       * @private\r\n       */;\r\n      Duration.normalizeUnit = function normalizeUnit(unit) {\r\n        var normalized = {\r\n          year: \"years\",\r\n          years: \"years\",\r\n          quarter: \"quarters\",\r\n          quarters: \"quarters\",\r\n          month: \"months\",\r\n          months: \"months\",\r\n          week: \"weeks\",\r\n          weeks: \"weeks\",\r\n          day: \"days\",\r\n          days: \"days\",\r\n          hour: \"hours\",\r\n          hours: \"hours\",\r\n          minute: \"minutes\",\r\n          minutes: \"minutes\",\r\n          second: \"seconds\",\r\n          seconds: \"seconds\",\r\n          millisecond: \"milliseconds\",\r\n          milliseconds: \"milliseconds\"\r\n        }[unit ? unit.toLowerCase() : unit];\r\n        if (!normalized) throw new InvalidUnitError(unit);\r\n        return normalized;\r\n      }\r\n  \r\n      /**\r\n       * Check if an object is a Duration. Works across context boundaries\r\n       * @param {object} o\r\n       * @return {boolean}\r\n       */;\r\n      Duration.isDuration = function isDuration(o) {\r\n        return o && o.isLuxonDuration || false;\r\n      }\r\n  \r\n      /**\r\n       * Get  the locale of a Duration, such 'en-GB'\r\n       * @type {string}\r\n       */;\r\n      var _proto = Duration.prototype;\r\n      /**\r\n       * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\r\n       * * `S` for milliseconds\r\n       * * `s` for seconds\r\n       * * `m` for minutes\r\n       * * `h` for hours\r\n       * * `d` for days\r\n       * * `w` for weeks\r\n       * * `M` for months\r\n       * * `y` for years\r\n       * Notes:\r\n       * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\r\n       * * Tokens can be escaped by wrapping with single quotes.\r\n       * * The duration will be converted to the set of units in the format string using {@link Duration#shiftTo} and the Durations's conversion accuracy setting.\r\n       * @param {string} fmt - the format string\r\n       * @param {Object} opts - options\r\n       * @param {boolean} [opts.floor=true] - floor numerical values\r\n       * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\r\n       * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\r\n       * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\r\n       * @return {string}\r\n       */\r\n      _proto.toFormat = function toFormat(fmt, opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        // reverse-compat since 1.2; we always round down now, never up, and we do it by default\r\n        var fmtOpts = _extends({}, opts, {\r\n          floor: opts.round !== false && opts.floor !== false\r\n        });\r\n        return this.isValid ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt) : INVALID$2;\r\n      }\r\n  \r\n      /**\r\n       * Returns a string representation of a Duration with all units included.\r\n       * To modify its behavior, use `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant.\r\n       * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options\r\n       * @param {Object} opts - Formatting options. Accepts the same keys as the options parameter of the native `Intl.NumberFormat` constructor, as well as `listStyle`.\r\n       * @param {string} [opts.listStyle='narrow'] - How to format the merged list. Corresponds to the `style` property of the options parameter of the native `Intl.ListFormat` constructor.\r\n       * @example\r\n       * ```js\r\n       * var dur = Duration.fromObject({ days: 1, hours: 5, minutes: 6 })\r\n       * dur.toHuman() //=> '1 day, 5 hours, 6 minutes'\r\n       * dur.toHuman({ listStyle: \"long\" }) //=> '1 day, 5 hours, and 6 minutes'\r\n       * dur.toHuman({ unitDisplay: \"short\" }) //=> '1 day, 5 hr, 6 min'\r\n       * ```\r\n       */;\r\n      _proto.toHuman = function toHuman(opts) {\r\n        var _this = this;\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        if (!this.isValid) return INVALID$2;\r\n        var l = orderedUnits$1.map(function (unit) {\r\n          var val = _this.values[unit];\r\n          if (isUndefined(val)) {\r\n            return null;\r\n          }\r\n          return _this.loc.numberFormatter(_extends({\r\n            style: \"unit\",\r\n            unitDisplay: \"long\"\r\n          }, opts, {\r\n            unit: unit.slice(0, -1)\r\n          })).format(val);\r\n        }).filter(function (n) {\r\n          return n;\r\n        });\r\n        return this.loc.listFormatter(_extends({\r\n          type: \"conjunction\",\r\n          style: opts.listStyle || \"narrow\"\r\n        }, opts)).format(l);\r\n      }\r\n  \r\n      /**\r\n       * Returns a JavaScript object with this Duration's values.\r\n       * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\r\n       * @return {Object}\r\n       */;\r\n      _proto.toObject = function toObject() {\r\n        if (!this.isValid) return {};\r\n        return _extends({}, this.values);\r\n      }\r\n  \r\n      /**\r\n       * Returns an ISO 8601-compliant string representation of this Duration.\r\n       * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\r\n       * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\r\n       * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\r\n       * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\r\n       * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\r\n       * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\r\n       * @return {string}\r\n       */;\r\n      _proto.toISO = function toISO() {\r\n        // we could use the formatter, but this is an easier way to get the minimum string\r\n        if (!this.isValid) return null;\r\n        var s = \"P\";\r\n        if (this.years !== 0) s += this.years + \"Y\";\r\n        if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\r\n        if (this.weeks !== 0) s += this.weeks + \"W\";\r\n        if (this.days !== 0) s += this.days + \"D\";\r\n        if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0) s += \"T\";\r\n        if (this.hours !== 0) s += this.hours + \"H\";\r\n        if (this.minutes !== 0) s += this.minutes + \"M\";\r\n        if (this.seconds !== 0 || this.milliseconds !== 0)\r\n          // this will handle \"floating point madness\" by removing extra decimal places\r\n          // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\r\n          s += roundTo(this.seconds + this.milliseconds / 1000, 3) + \"S\";\r\n        if (s === \"P\") s += \"T0S\";\r\n        return s;\r\n      }\r\n  \r\n      /**\r\n       * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.\r\n       * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.\r\n       * @see https://en.wikipedia.org/wiki/ISO_8601#Times\r\n       * @param {Object} opts - options\r\n       * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\r\n       * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\r\n       * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\r\n       * @param {string} [opts.format='extended'] - choose between the basic and extended format\r\n       * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000'\r\n       * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00'\r\n       * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00'\r\n       * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000'\r\n       * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000'\r\n       * @return {string}\r\n       */;\r\n      _proto.toISOTime = function toISOTime(opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        if (!this.isValid) return null;\r\n        var millis = this.toMillis();\r\n        if (millis < 0 || millis >= 86400000) return null;\r\n        opts = _extends({\r\n          suppressMilliseconds: false,\r\n          suppressSeconds: false,\r\n          includePrefix: false,\r\n          format: \"extended\"\r\n        }, opts, {\r\n          includeOffset: false\r\n        });\r\n        var dateTime = DateTime.fromMillis(millis, {\r\n          zone: \"UTC\"\r\n        });\r\n        return dateTime.toISOTime(opts);\r\n      }\r\n  \r\n      /**\r\n       * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\r\n       * @return {string}\r\n       */;\r\n      _proto.toJSON = function toJSON() {\r\n        return this.toISO();\r\n      }\r\n  \r\n      /**\r\n       * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\r\n       * @return {string}\r\n       */;\r\n      _proto.toString = function toString() {\r\n        return this.toISO();\r\n      }\r\n  \r\n      /**\r\n       * Returns a string representation of this Duration appropriate for the REPL.\r\n       * @return {string}\r\n       */;\r\n      _proto[_Symbol$for] = function () {\r\n        if (this.isValid) {\r\n          return \"Duration { values: \" + JSON.stringify(this.values) + \" }\";\r\n        } else {\r\n          return \"Duration { Invalid, reason: \" + this.invalidReason + \" }\";\r\n        }\r\n      }\r\n  \r\n      /**\r\n       * Returns an milliseconds value of this Duration.\r\n       * @return {number}\r\n       */;\r\n      _proto.toMillis = function toMillis() {\r\n        if (!this.isValid) return NaN;\r\n        return durationToMillis(this.matrix, this.values);\r\n      }\r\n  \r\n      /**\r\n       * Returns an milliseconds value of this Duration. Alias of {@link toMillis}\r\n       * @return {number}\r\n       */;\r\n      _proto.valueOf = function valueOf() {\r\n        return this.toMillis();\r\n      }\r\n  \r\n      /**\r\n       * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\r\n       * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\r\n       * @return {Duration}\r\n       */;\r\n      _proto.plus = function plus(duration) {\r\n        if (!this.isValid) return this;\r\n        var dur = Duration.fromDurationLike(duration),\r\n          result = {};\r\n        for (var _i2 = 0, _orderedUnits = orderedUnits$1; _i2 < _orderedUnits.length; _i2++) {\r\n          var k = _orderedUnits[_i2];\r\n          if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\r\n            result[k] = dur.get(k) + this.get(k);\r\n          }\r\n        }\r\n        return clone$1(this, {\r\n          values: result\r\n        }, true);\r\n      }\r\n  \r\n      /**\r\n       * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\r\n       * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\r\n       * @return {Duration}\r\n       */;\r\n      _proto.minus = function minus(duration) {\r\n        if (!this.isValid) return this;\r\n        var dur = Duration.fromDurationLike(duration);\r\n        return this.plus(dur.negate());\r\n      }\r\n  \r\n      /**\r\n       * Scale this Duration by the specified amount. Return a newly-constructed Duration.\r\n       * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\r\n       * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 }\r\n       * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === \"hours\" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\r\n       * @return {Duration}\r\n       */;\r\n      _proto.mapUnits = function mapUnits(fn) {\r\n        if (!this.isValid) return this;\r\n        var result = {};\r\n        for (var _i3 = 0, _Object$keys = Object.keys(this.values); _i3 < _Object$keys.length; _i3++) {\r\n          var k = _Object$keys[_i3];\r\n          result[k] = asNumber(fn(this.values[k], k));\r\n        }\r\n        return clone$1(this, {\r\n          values: result\r\n        }, true);\r\n      }\r\n  \r\n      /**\r\n       * Get the value of unit.\r\n       * @param {string} unit - a unit such as 'minute' or 'day'\r\n       * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2\r\n       * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0\r\n       * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3\r\n       * @return {number}\r\n       */;\r\n      _proto.get = function get(unit) {\r\n        return this[Duration.normalizeUnit(unit)];\r\n      }\r\n  \r\n      /**\r\n       * \"Set\" the values of specified units. Return a newly-constructed Duration.\r\n       * @param {Object} values - a mapping of units to numbers\r\n       * @example dur.set({ years: 2017 })\r\n       * @example dur.set({ hours: 8, minutes: 30 })\r\n       * @return {Duration}\r\n       */;\r\n      _proto.set = function set(values) {\r\n        if (!this.isValid) return this;\r\n        var mixed = _extends({}, this.values, normalizeObject(values, Duration.normalizeUnit));\r\n        return clone$1(this, {\r\n          values: mixed\r\n        });\r\n      }\r\n  \r\n      /**\r\n       * \"Set\" the locale and/or numberingSystem.  Returns a newly-constructed Duration.\r\n       * @example dur.reconfigure({ locale: 'en-GB' })\r\n       * @return {Duration}\r\n       */;\r\n      _proto.reconfigure = function reconfigure(_temp) {\r\n        var _ref = _temp === void 0 ? {} : _temp,\r\n          locale = _ref.locale,\r\n          numberingSystem = _ref.numberingSystem,\r\n          conversionAccuracy = _ref.conversionAccuracy,\r\n          matrix = _ref.matrix;\r\n        var loc = this.loc.clone({\r\n          locale: locale,\r\n          numberingSystem: numberingSystem\r\n        });\r\n        var opts = {\r\n          loc: loc,\r\n          matrix: matrix,\r\n          conversionAccuracy: conversionAccuracy\r\n        };\r\n        return clone$1(this, opts);\r\n      }\r\n  \r\n      /**\r\n       * Return the length of the duration in the specified unit.\r\n       * @param {string} unit - a unit such as 'minutes' or 'days'\r\n       * @example Duration.fromObject({years: 1}).as('days') //=> 365\r\n       * @example Duration.fromObject({years: 1}).as('months') //=> 12\r\n       * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\r\n       * @return {number}\r\n       */;\r\n      _proto.as = function as(unit) {\r\n        return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\r\n      }\r\n  \r\n      /**\r\n       * Reduce this Duration to its canonical representation in its current units.\r\n       * Assuming the overall value of the Duration is positive, this means:\r\n       * - excessive values for lower-order units are converted to higher-order units (if possible, see first and second example)\r\n       * - negative lower-order units are converted to higher order units (there must be such a higher order unit, otherwise\r\n       *   the overall value would be negative, see third example)\r\n       * - fractional values for higher-order units are converted to lower-order units (if possible, see fourth example)\r\n       *\r\n       * If the overall value is negative, the result of this method is equivalent to `this.negate().normalize().negate()`.\r\n       * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\r\n       * @example Duration.fromObject({ days: 5000 }).normalize().toObject() //=> { days: 5000 }\r\n       * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\r\n       * @example Duration.fromObject({ years: 2.5, days: 0, hours: 0 }).normalize().toObject() //=> { years: 2, days: 182, hours: 12 }\r\n       * @return {Duration}\r\n       */;\r\n      _proto.normalize = function normalize() {\r\n        if (!this.isValid) return this;\r\n        var vals = this.toObject();\r\n        normalizeValues(this.matrix, vals);\r\n        return clone$1(this, {\r\n          values: vals\r\n        }, true);\r\n      }\r\n  \r\n      /**\r\n       * Rescale units to its largest representation\r\n       * @example Duration.fromObject({ milliseconds: 90000 }).rescale().toObject() //=> { minutes: 1, seconds: 30 }\r\n       * @return {Duration}\r\n       */;\r\n      _proto.rescale = function rescale() {\r\n        if (!this.isValid) return this;\r\n        var vals = removeZeroes(this.normalize().shiftToAll().toObject());\r\n        return clone$1(this, {\r\n          values: vals\r\n        }, true);\r\n      }\r\n  \r\n      /**\r\n       * Convert this Duration into its representation in a different set of units.\r\n       * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\r\n       * @return {Duration}\r\n       */;\r\n      _proto.shiftTo = function shiftTo() {\r\n        for (var _len = arguments.length, units = new Array(_len), _key = 0; _key < _len; _key++) {\r\n          units[_key] = arguments[_key];\r\n        }\r\n        if (!this.isValid) return this;\r\n        if (units.length === 0) {\r\n          return this;\r\n        }\r\n        units = units.map(function (u) {\r\n          return Duration.normalizeUnit(u);\r\n        });\r\n        var built = {},\r\n          accumulated = {},\r\n          vals = this.toObject();\r\n        var lastUnit;\r\n        for (var _i4 = 0, _orderedUnits2 = orderedUnits$1; _i4 < _orderedUnits2.length; _i4++) {\r\n          var k = _orderedUnits2[_i4];\r\n          if (units.indexOf(k) >= 0) {\r\n            lastUnit = k;\r\n            var own = 0;\r\n  \r\n            // anything we haven't boiled down yet should get boiled to this unit\r\n            for (var ak in accumulated) {\r\n              own += this.matrix[ak][k] * accumulated[ak];\r\n              accumulated[ak] = 0;\r\n            }\r\n  \r\n            // plus anything that's already in this unit\r\n            if (isNumber(vals[k])) {\r\n              own += vals[k];\r\n            }\r\n  \r\n            // only keep the integer part for now in the hopes of putting any decimal part\r\n            // into a smaller unit later\r\n            var i = Math.trunc(own);\r\n            built[k] = i;\r\n            accumulated[k] = (own * 1000 - i * 1000) / 1000;\r\n  \r\n            // otherwise, keep it in the wings to boil it later\r\n          } else if (isNumber(vals[k])) {\r\n            accumulated[k] = vals[k];\r\n          }\r\n        }\r\n  \r\n        // anything leftover becomes the decimal for the last unit\r\n        // lastUnit must be defined since units is not empty\r\n        for (var key in accumulated) {\r\n          if (accumulated[key] !== 0) {\r\n            built[lastUnit] += key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\r\n          }\r\n        }\r\n        normalizeValues(this.matrix, built);\r\n        return clone$1(this, {\r\n          values: built\r\n        }, true);\r\n      }\r\n  \r\n      /**\r\n       * Shift this Duration to all available units.\r\n       * Same as shiftTo(\"years\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\")\r\n       * @return {Duration}\r\n       */;\r\n      _proto.shiftToAll = function shiftToAll() {\r\n        if (!this.isValid) return this;\r\n        return this.shiftTo(\"years\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\");\r\n      }\r\n  \r\n      /**\r\n       * Return the negative of this Duration.\r\n       * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\r\n       * @return {Duration}\r\n       */;\r\n      _proto.negate = function negate() {\r\n        if (!this.isValid) return this;\r\n        var negated = {};\r\n        for (var _i5 = 0, _Object$keys2 = Object.keys(this.values); _i5 < _Object$keys2.length; _i5++) {\r\n          var k = _Object$keys2[_i5];\r\n          negated[k] = this.values[k] === 0 ? 0 : -this.values[k];\r\n        }\r\n        return clone$1(this, {\r\n          values: negated\r\n        }, true);\r\n      }\r\n  \r\n      /**\r\n       * Get the years.\r\n       * @type {number}\r\n       */;\r\n      /**\r\n       * Equality check\r\n       * Two Durations are equal iff they have the same units and the same values for each unit.\r\n       * @param {Duration} other\r\n       * @return {boolean}\r\n       */\r\n      _proto.equals = function equals(other) {\r\n        if (!this.isValid || !other.isValid) {\r\n          return false;\r\n        }\r\n        if (!this.loc.equals(other.loc)) {\r\n          return false;\r\n        }\r\n        function eq(v1, v2) {\r\n          // Consider 0 and undefined as equal\r\n          if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;\r\n          return v1 === v2;\r\n        }\r\n        for (var _i6 = 0, _orderedUnits3 = orderedUnits$1; _i6 < _orderedUnits3.length; _i6++) {\r\n          var u = _orderedUnits3[_i6];\r\n          if (!eq(this.values[u], other.values[u])) {\r\n            return false;\r\n          }\r\n        }\r\n        return true;\r\n      };\r\n      _createClass(Duration, [{\r\n        key: \"locale\",\r\n        get: function get() {\r\n          return this.isValid ? this.loc.locale : null;\r\n        }\r\n  \r\n        /**\r\n         * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\r\n         *\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"numberingSystem\",\r\n        get: function get() {\r\n          return this.isValid ? this.loc.numberingSystem : null;\r\n        }\r\n      }, {\r\n        key: \"years\",\r\n        get: function get() {\r\n          return this.isValid ? this.values.years || 0 : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the quarters.\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"quarters\",\r\n        get: function get() {\r\n          return this.isValid ? this.values.quarters || 0 : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the months.\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"months\",\r\n        get: function get() {\r\n          return this.isValid ? this.values.months || 0 : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the weeks\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"weeks\",\r\n        get: function get() {\r\n          return this.isValid ? this.values.weeks || 0 : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the days.\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"days\",\r\n        get: function get() {\r\n          return this.isValid ? this.values.days || 0 : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the hours.\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"hours\",\r\n        get: function get() {\r\n          return this.isValid ? this.values.hours || 0 : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the minutes.\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"minutes\",\r\n        get: function get() {\r\n          return this.isValid ? this.values.minutes || 0 : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the seconds.\r\n         * @return {number}\r\n         */\r\n      }, {\r\n        key: \"seconds\",\r\n        get: function get() {\r\n          return this.isValid ? this.values.seconds || 0 : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the milliseconds.\r\n         * @return {number}\r\n         */\r\n      }, {\r\n        key: \"milliseconds\",\r\n        get: function get() {\r\n          return this.isValid ? this.values.milliseconds || 0 : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\r\n         * on invalid DateTimes or Intervals.\r\n         * @return {boolean}\r\n         */\r\n      }, {\r\n        key: \"isValid\",\r\n        get: function get() {\r\n          return this.invalid === null;\r\n        }\r\n  \r\n        /**\r\n         * Returns an error code if this Duration became invalid, or null if the Duration is valid\r\n         * @return {string}\r\n         */\r\n      }, {\r\n        key: \"invalidReason\",\r\n        get: function get() {\r\n          return this.invalid ? this.invalid.reason : null;\r\n        }\r\n  \r\n        /**\r\n         * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"invalidExplanation\",\r\n        get: function get() {\r\n          return this.invalid ? this.invalid.explanation : null;\r\n        }\r\n      }]);\r\n      return Duration;\r\n    }(Symbol.for(\"nodejs.util.inspect.custom\"));\r\n  \r\n    var INVALID$1 = \"Invalid Interval\";\r\n  \r\n    // checks if the start is equal to or before the end\r\n    function validateStartEnd(start, end) {\r\n      if (!start || !start.isValid) {\r\n        return Interval.invalid(\"missing or invalid start\");\r\n      } else if (!end || !end.isValid) {\r\n        return Interval.invalid(\"missing or invalid end\");\r\n      } else if (end < start) {\r\n        return Interval.invalid(\"end before start\", \"The end of an interval must be after its start, but you had start=\" + start.toISO() + \" and end=\" + end.toISO());\r\n      } else {\r\n        return null;\r\n      }\r\n    }\r\n  \r\n    /**\r\n     * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\r\n     *\r\n     * Here is a brief overview of the most commonly used methods and getters in Interval:\r\n     *\r\n     * * **Creation** To create an Interval, use {@link Interval.fromDateTimes}, {@link Interval.after}, {@link Interval.before}, or {@link Interval.fromISO}.\r\n     * * **Accessors** Use {@link Interval#start} and {@link Interval#end} to get the start and end.\r\n     * * **Interrogation** To analyze the Interval, use {@link Interval#count}, {@link Interval#length}, {@link Interval#hasSame}, {@link Interval#contains}, {@link Interval#isAfter}, or {@link Interval#isBefore}.\r\n     * * **Transformation** To create other Intervals out of this one, use {@link Interval#set}, {@link Interval#splitAt}, {@link Interval#splitBy}, {@link Interval#divideEqually}, {@link Interval.merge}, {@link Interval.xor}, {@link Interval#union}, {@link Interval#intersection}, or {@link Interval#difference}.\r\n     * * **Comparison** To compare this Interval to another one, use {@link Interval#equals}, {@link Interval#overlaps}, {@link Interval#abutsStart}, {@link Interval#abutsEnd}, {@link Interval#engulfs}\r\n     * * **Output** To convert the Interval into other representations, see {@link Interval#toString}, {@link Interval#toLocaleString}, {@link Interval#toISO}, {@link Interval#toISODate}, {@link Interval#toISOTime}, {@link Interval#toFormat}, and {@link Interval#toDuration}.\r\n     */\r\n    var Interval = /*#__PURE__*/function (_Symbol$for) {\r\n      /**\r\n       * @private\r\n       */\r\n      function Interval(config) {\r\n        /**\r\n         * @access private\r\n         */\r\n        this.s = config.start;\r\n        /**\r\n         * @access private\r\n         */\r\n        this.e = config.end;\r\n        /**\r\n         * @access private\r\n         */\r\n        this.invalid = config.invalid || null;\r\n        /**\r\n         * @access private\r\n         */\r\n        this.isLuxonInterval = true;\r\n      }\r\n  \r\n      /**\r\n       * Create an invalid Interval.\r\n       * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\r\n       * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\r\n       * @return {Interval}\r\n       */\r\n      Interval.invalid = function invalid(reason, explanation) {\r\n        if (explanation === void 0) {\r\n          explanation = null;\r\n        }\r\n        if (!reason) {\r\n          throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\r\n        }\r\n        var invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\r\n        if (Settings.throwOnInvalid) {\r\n          throw new InvalidIntervalError(invalid);\r\n        } else {\r\n          return new Interval({\r\n            invalid: invalid\r\n          });\r\n        }\r\n      }\r\n  \r\n      /**\r\n       * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\r\n       * @param {DateTime|Date|Object} start\r\n       * @param {DateTime|Date|Object} end\r\n       * @return {Interval}\r\n       */;\r\n      Interval.fromDateTimes = function fromDateTimes(start, end) {\r\n        var builtStart = friendlyDateTime(start),\r\n          builtEnd = friendlyDateTime(end);\r\n        var validateError = validateStartEnd(builtStart, builtEnd);\r\n        if (validateError == null) {\r\n          return new Interval({\r\n            start: builtStart,\r\n            end: builtEnd\r\n          });\r\n        } else {\r\n          return validateError;\r\n        }\r\n      }\r\n  \r\n      /**\r\n       * Create an Interval from a start DateTime and a Duration to extend to.\r\n       * @param {DateTime|Date|Object} start\r\n       * @param {Duration|Object|number} duration - the length of the Interval.\r\n       * @return {Interval}\r\n       */;\r\n      Interval.after = function after(start, duration) {\r\n        var dur = Duration.fromDurationLike(duration),\r\n          dt = friendlyDateTime(start);\r\n        return Interval.fromDateTimes(dt, dt.plus(dur));\r\n      }\r\n  \r\n      /**\r\n       * Create an Interval from an end DateTime and a Duration to extend backwards to.\r\n       * @param {DateTime|Date|Object} end\r\n       * @param {Duration|Object|number} duration - the length of the Interval.\r\n       * @return {Interval}\r\n       */;\r\n      Interval.before = function before(end, duration) {\r\n        var dur = Duration.fromDurationLike(duration),\r\n          dt = friendlyDateTime(end);\r\n        return Interval.fromDateTimes(dt.minus(dur), dt);\r\n      }\r\n  \r\n      /**\r\n       * Create an Interval from an ISO 8601 string.\r\n       * Accepts `<start>/<end>`, `<start>/<duration>`, and `<duration>/<end>` formats.\r\n       * @param {string} text - the ISO string to parse\r\n       * @param {Object} [opts] - options to pass {@link DateTime#fromISO} and optionally {@link Duration#fromISO}\r\n       * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\r\n       * @return {Interval}\r\n       */;\r\n      Interval.fromISO = function fromISO(text, opts) {\r\n        var _split = (text || \"\").split(\"/\", 2),\r\n          s = _split[0],\r\n          e = _split[1];\r\n        if (s && e) {\r\n          var start, startIsValid;\r\n          try {\r\n            start = DateTime.fromISO(s, opts);\r\n            startIsValid = start.isValid;\r\n          } catch (e) {\r\n            startIsValid = false;\r\n          }\r\n          var end, endIsValid;\r\n          try {\r\n            end = DateTime.fromISO(e, opts);\r\n            endIsValid = end.isValid;\r\n          } catch (e) {\r\n            endIsValid = false;\r\n          }\r\n          if (startIsValid && endIsValid) {\r\n            return Interval.fromDateTimes(start, end);\r\n          }\r\n          if (startIsValid) {\r\n            var dur = Duration.fromISO(e, opts);\r\n            if (dur.isValid) {\r\n              return Interval.after(start, dur);\r\n            }\r\n          } else if (endIsValid) {\r\n            var _dur = Duration.fromISO(s, opts);\r\n            if (_dur.isValid) {\r\n              return Interval.before(end, _dur);\r\n            }\r\n          }\r\n        }\r\n        return Interval.invalid(\"unparsable\", \"the input \\\"\" + text + \"\\\" can't be parsed as ISO 8601\");\r\n      }\r\n  \r\n      /**\r\n       * Check if an object is an Interval. Works across context boundaries\r\n       * @param {object} o\r\n       * @return {boolean}\r\n       */;\r\n      Interval.isInterval = function isInterval(o) {\r\n        return o && o.isLuxonInterval || false;\r\n      }\r\n  \r\n      /**\r\n       * Returns the start of the Interval\r\n       * @type {DateTime}\r\n       */;\r\n      var _proto = Interval.prototype;\r\n      /**\r\n       * Returns the length of the Interval in the specified unit.\r\n       * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\r\n       * @return {number}\r\n       */\r\n      _proto.length = function length(unit) {\r\n        if (unit === void 0) {\r\n          unit = \"milliseconds\";\r\n        }\r\n        return this.isValid ? this.toDuration.apply(this, [unit]).get(unit) : NaN;\r\n      }\r\n  \r\n      /**\r\n       * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\r\n       * Unlike {@link Interval#length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\r\n       * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\r\n       * @param {string} [unit='milliseconds'] - the unit of time to count.\r\n       * @param {Object} opts - options\r\n       * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; this operation will always use the locale of the start DateTime\r\n       * @return {number}\r\n       */;\r\n      _proto.count = function count(unit, opts) {\r\n        if (unit === void 0) {\r\n          unit = \"milliseconds\";\r\n        }\r\n        if (!this.isValid) return NaN;\r\n        var start = this.start.startOf(unit, opts);\r\n        var end;\r\n        if (opts != null && opts.useLocaleWeeks) {\r\n          end = this.end.reconfigure({\r\n            locale: start.locale\r\n          });\r\n        } else {\r\n          end = this.end;\r\n        }\r\n        end = end.startOf(unit, opts);\r\n        return Math.floor(end.diff(start, unit).get(unit)) + (end.valueOf() !== this.end.valueOf());\r\n      }\r\n  \r\n      /**\r\n       * Returns whether this Interval's start and end are both in the same unit of time\r\n       * @param {string} unit - the unit of time to check sameness on\r\n       * @return {boolean}\r\n       */;\r\n      _proto.hasSame = function hasSame(unit) {\r\n        return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;\r\n      }\r\n  \r\n      /**\r\n       * Return whether this Interval has the same start and end DateTimes.\r\n       * @return {boolean}\r\n       */;\r\n      _proto.isEmpty = function isEmpty() {\r\n        return this.s.valueOf() === this.e.valueOf();\r\n      }\r\n  \r\n      /**\r\n       * Return whether this Interval's start is after the specified DateTime.\r\n       * @param {DateTime} dateTime\r\n       * @return {boolean}\r\n       */;\r\n      _proto.isAfter = function isAfter(dateTime) {\r\n        if (!this.isValid) return false;\r\n        return this.s > dateTime;\r\n      }\r\n  \r\n      /**\r\n       * Return whether this Interval's end is before the specified DateTime.\r\n       * @param {DateTime} dateTime\r\n       * @return {boolean}\r\n       */;\r\n      _proto.isBefore = function isBefore(dateTime) {\r\n        if (!this.isValid) return false;\r\n        return this.e <= dateTime;\r\n      }\r\n  \r\n      /**\r\n       * Return whether this Interval contains the specified DateTime.\r\n       * @param {DateTime} dateTime\r\n       * @return {boolean}\r\n       */;\r\n      _proto.contains = function contains(dateTime) {\r\n        if (!this.isValid) return false;\r\n        return this.s <= dateTime && this.e > dateTime;\r\n      }\r\n  \r\n      /**\r\n       * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\r\n       * @param {Object} values - the values to set\r\n       * @param {DateTime} values.start - the starting DateTime\r\n       * @param {DateTime} values.end - the ending DateTime\r\n       * @return {Interval}\r\n       */;\r\n      _proto.set = function set(_temp) {\r\n        var _ref = _temp === void 0 ? {} : _temp,\r\n          start = _ref.start,\r\n          end = _ref.end;\r\n        if (!this.isValid) return this;\r\n        return Interval.fromDateTimes(start || this.s, end || this.e);\r\n      }\r\n  \r\n      /**\r\n       * Split this Interval at each of the specified DateTimes\r\n       * @param {...DateTime} dateTimes - the unit of time to count.\r\n       * @return {Array}\r\n       */;\r\n      _proto.splitAt = function splitAt() {\r\n        var _this = this;\r\n        if (!this.isValid) return [];\r\n        for (var _len = arguments.length, dateTimes = new Array(_len), _key = 0; _key < _len; _key++) {\r\n          dateTimes[_key] = arguments[_key];\r\n        }\r\n        var sorted = dateTimes.map(friendlyDateTime).filter(function (d) {\r\n            return _this.contains(d);\r\n          }).sort(function (a, b) {\r\n            return a.toMillis() - b.toMillis();\r\n          }),\r\n          results = [];\r\n        var s = this.s,\r\n          i = 0;\r\n        while (s < this.e) {\r\n          var added = sorted[i] || this.e,\r\n            next = +added > +this.e ? this.e : added;\r\n          results.push(Interval.fromDateTimes(s, next));\r\n          s = next;\r\n          i += 1;\r\n        }\r\n        return results;\r\n      }\r\n  \r\n      /**\r\n       * Split this Interval into smaller Intervals, each of the specified length.\r\n       * Left over time is grouped into a smaller interval\r\n       * @param {Duration|Object|number} duration - The length of each resulting interval.\r\n       * @return {Array}\r\n       */;\r\n      _proto.splitBy = function splitBy(duration) {\r\n        var dur = Duration.fromDurationLike(duration);\r\n        if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\r\n          return [];\r\n        }\r\n        var s = this.s,\r\n          idx = 1,\r\n          next;\r\n        var results = [];\r\n        while (s < this.e) {\r\n          var added = this.start.plus(dur.mapUnits(function (x) {\r\n            return x * idx;\r\n          }));\r\n          next = +added > +this.e ? this.e : added;\r\n          results.push(Interval.fromDateTimes(s, next));\r\n          s = next;\r\n          idx += 1;\r\n        }\r\n        return results;\r\n      }\r\n  \r\n      /**\r\n       * Split this Interval into the specified number of smaller intervals.\r\n       * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\r\n       * @return {Array}\r\n       */;\r\n      _proto.divideEqually = function divideEqually(numberOfParts) {\r\n        if (!this.isValid) return [];\r\n        return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\r\n      }\r\n  \r\n      /**\r\n       * Return whether this Interval overlaps with the specified Interval\r\n       * @param {Interval} other\r\n       * @return {boolean}\r\n       */;\r\n      _proto.overlaps = function overlaps(other) {\r\n        return this.e > other.s && this.s < other.e;\r\n      }\r\n  \r\n      /**\r\n       * Return whether this Interval's end is adjacent to the specified Interval's start.\r\n       * @param {Interval} other\r\n       * @return {boolean}\r\n       */;\r\n      _proto.abutsStart = function abutsStart(other) {\r\n        if (!this.isValid) return false;\r\n        return +this.e === +other.s;\r\n      }\r\n  \r\n      /**\r\n       * Return whether this Interval's start is adjacent to the specified Interval's end.\r\n       * @param {Interval} other\r\n       * @return {boolean}\r\n       */;\r\n      _proto.abutsEnd = function abutsEnd(other) {\r\n        if (!this.isValid) return false;\r\n        return +other.e === +this.s;\r\n      }\r\n  \r\n      /**\r\n       * Returns true if this Interval fully contains the specified Interval, specifically if the intersect (of this Interval and the other Interval) is equal to the other Interval; false otherwise.\r\n       * @param {Interval} other\r\n       * @return {boolean}\r\n       */;\r\n      _proto.engulfs = function engulfs(other) {\r\n        if (!this.isValid) return false;\r\n        return this.s <= other.s && this.e >= other.e;\r\n      }\r\n  \r\n      /**\r\n       * Return whether this Interval has the same start and end as the specified Interval.\r\n       * @param {Interval} other\r\n       * @return {boolean}\r\n       */;\r\n      _proto.equals = function equals(other) {\r\n        if (!this.isValid || !other.isValid) {\r\n          return false;\r\n        }\r\n        return this.s.equals(other.s) && this.e.equals(other.e);\r\n      }\r\n  \r\n      /**\r\n       * Return an Interval representing the intersection of this Interval and the specified Interval.\r\n       * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\r\n       * Returns null if the intersection is empty, meaning, the intervals don't intersect.\r\n       * @param {Interval} other\r\n       * @return {Interval}\r\n       */;\r\n      _proto.intersection = function intersection(other) {\r\n        if (!this.isValid) return this;\r\n        var s = this.s > other.s ? this.s : other.s,\r\n          e = this.e < other.e ? this.e : other.e;\r\n        if (s >= e) {\r\n          return null;\r\n        } else {\r\n          return Interval.fromDateTimes(s, e);\r\n        }\r\n      }\r\n  \r\n      /**\r\n       * Return an Interval representing the union of this Interval and the specified Interval.\r\n       * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\r\n       * @param {Interval} other\r\n       * @return {Interval}\r\n       */;\r\n      _proto.union = function union(other) {\r\n        if (!this.isValid) return this;\r\n        var s = this.s < other.s ? this.s : other.s,\r\n          e = this.e > other.e ? this.e : other.e;\r\n        return Interval.fromDateTimes(s, e);\r\n      }\r\n  \r\n      /**\r\n       * Merge an array of Intervals into a equivalent minimal set of Intervals.\r\n       * Combines overlapping and adjacent Intervals.\r\n       * @param {Array} intervals\r\n       * @return {Array}\r\n       */;\r\n      Interval.merge = function merge(intervals) {\r\n        var _intervals$sort$reduc = intervals.sort(function (a, b) {\r\n            return a.s - b.s;\r\n          }).reduce(function (_ref2, item) {\r\n            var sofar = _ref2[0],\r\n              current = _ref2[1];\r\n            if (!current) {\r\n              return [sofar, item];\r\n            } else if (current.overlaps(item) || current.abutsStart(item)) {\r\n              return [sofar, current.union(item)];\r\n            } else {\r\n              return [sofar.concat([current]), item];\r\n            }\r\n          }, [[], null]),\r\n          found = _intervals$sort$reduc[0],\r\n          final = _intervals$sort$reduc[1];\r\n        if (final) {\r\n          found.push(final);\r\n        }\r\n        return found;\r\n      }\r\n  \r\n      /**\r\n       * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\r\n       * @param {Array} intervals\r\n       * @return {Array}\r\n       */;\r\n      Interval.xor = function xor(intervals) {\r\n        var _Array$prototype;\r\n        var start = null,\r\n          currentCount = 0;\r\n        var results = [],\r\n          ends = intervals.map(function (i) {\r\n            return [{\r\n              time: i.s,\r\n              type: \"s\"\r\n            }, {\r\n              time: i.e,\r\n              type: \"e\"\r\n            }];\r\n          }),\r\n          flattened = (_Array$prototype = Array.prototype).concat.apply(_Array$prototype, ends),\r\n          arr = flattened.sort(function (a, b) {\r\n            return a.time - b.time;\r\n          });\r\n        for (var _iterator = _createForOfIteratorHelperLoose(arr), _step; !(_step = _iterator()).done;) {\r\n          var i = _step.value;\r\n          currentCount += i.type === \"s\" ? 1 : -1;\r\n          if (currentCount === 1) {\r\n            start = i.time;\r\n          } else {\r\n            if (start && +start !== +i.time) {\r\n              results.push(Interval.fromDateTimes(start, i.time));\r\n            }\r\n            start = null;\r\n          }\r\n        }\r\n        return Interval.merge(results);\r\n      }\r\n  \r\n      /**\r\n       * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\r\n       * @param {...Interval} intervals\r\n       * @return {Array}\r\n       */;\r\n      _proto.difference = function difference() {\r\n        var _this2 = this;\r\n        for (var _len2 = arguments.length, intervals = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\r\n          intervals[_key2] = arguments[_key2];\r\n        }\r\n        return Interval.xor([this].concat(intervals)).map(function (i) {\r\n          return _this2.intersection(i);\r\n        }).filter(function (i) {\r\n          return i && !i.isEmpty();\r\n        });\r\n      }\r\n  \r\n      /**\r\n       * Returns a string representation of this Interval appropriate for debugging.\r\n       * @return {string}\r\n       */;\r\n      _proto.toString = function toString() {\r\n        if (!this.isValid) return INVALID$1;\r\n        return \"[\" + this.s.toISO() + \" \\u2013 \" + this.e.toISO() + \")\";\r\n      }\r\n  \r\n      /**\r\n       * Returns a string representation of this Interval appropriate for the REPL.\r\n       * @return {string}\r\n       */;\r\n      _proto[_Symbol$for] = function () {\r\n        if (this.isValid) {\r\n          return \"Interval { start: \" + this.s.toISO() + \", end: \" + this.e.toISO() + \" }\";\r\n        } else {\r\n          return \"Interval { Invalid, reason: \" + this.invalidReason + \" }\";\r\n        }\r\n      }\r\n  \r\n      /**\r\n       * Returns a localized string representing this Interval. Accepts the same options as the\r\n       * Intl.DateTimeFormat constructor and any presets defined by Luxon, such as\r\n       * {@link DateTime.DATE_FULL} or {@link DateTime.TIME_SIMPLE}. The exact behavior of this method\r\n       * is browser-specific, but in general it will return an appropriate representation of the\r\n       * Interval in the assigned locale. Defaults to the system's locale if no locale has been\r\n       * specified.\r\n       * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\r\n       * @param {Object} [formatOpts=DateTime.DATE_SHORT] - Either a DateTime preset or\r\n       * Intl.DateTimeFormat constructor options.\r\n       * @param {Object} opts - Options to override the configuration of the start DateTime.\r\n       * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(); //=> 11/7/2022 – 11/8/2022\r\n       * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL); //=> November 7 – 8, 2022\r\n       * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL, { locale: 'fr-FR' }); //=> 7–8 novembre 2022\r\n       * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString(DateTime.TIME_SIMPLE); //=> 6:00 – 8:00 PM\r\n       * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> Mon, Nov 07, 6:00 – 8:00 p\r\n       * @return {string}\r\n       */;\r\n      _proto.toLocaleString = function toLocaleString(formatOpts, opts) {\r\n        if (formatOpts === void 0) {\r\n          formatOpts = DATE_SHORT;\r\n        }\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        return this.isValid ? Formatter.create(this.s.loc.clone(opts), formatOpts).formatInterval(this) : INVALID$1;\r\n      }\r\n  \r\n      /**\r\n       * Returns an ISO 8601-compliant string representation of this Interval.\r\n       * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\r\n       * @param {Object} opts - The same options as {@link DateTime#toISO}\r\n       * @return {string}\r\n       */;\r\n      _proto.toISO = function toISO(opts) {\r\n        if (!this.isValid) return INVALID$1;\r\n        return this.s.toISO(opts) + \"/\" + this.e.toISO(opts);\r\n      }\r\n  \r\n      /**\r\n       * Returns an ISO 8601-compliant string representation of date of this Interval.\r\n       * The time components are ignored.\r\n       * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\r\n       * @return {string}\r\n       */;\r\n      _proto.toISODate = function toISODate() {\r\n        if (!this.isValid) return INVALID$1;\r\n        return this.s.toISODate() + \"/\" + this.e.toISODate();\r\n      }\r\n  \r\n      /**\r\n       * Returns an ISO 8601-compliant string representation of time of this Interval.\r\n       * The date components are ignored.\r\n       * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\r\n       * @param {Object} opts - The same options as {@link DateTime#toISO}\r\n       * @return {string}\r\n       */;\r\n      _proto.toISOTime = function toISOTime(opts) {\r\n        if (!this.isValid) return INVALID$1;\r\n        return this.s.toISOTime(opts) + \"/\" + this.e.toISOTime(opts);\r\n      }\r\n  \r\n      /**\r\n       * Returns a string representation of this Interval formatted according to the specified format\r\n       * string. **You may not want this.** See {@link Interval#toLocaleString} for a more flexible\r\n       * formatting tool.\r\n       * @param {string} dateFormat - The format string. This string formats the start and end time.\r\n       * See {@link DateTime#toFormat} for details.\r\n       * @param {Object} opts - Options.\r\n       * @param {string} [opts.separator =  ' – '] - A separator to place between the start and end\r\n       * representations.\r\n       * @return {string}\r\n       */;\r\n      _proto.toFormat = function toFormat(dateFormat, _temp2) {\r\n        var _ref3 = _temp2 === void 0 ? {} : _temp2,\r\n          _ref3$separator = _ref3.separator,\r\n          separator = _ref3$separator === void 0 ? \" – \" : _ref3$separator;\r\n        if (!this.isValid) return INVALID$1;\r\n        return \"\" + this.s.toFormat(dateFormat) + separator + this.e.toFormat(dateFormat);\r\n      }\r\n  \r\n      /**\r\n       * Return a Duration representing the time spanned by this interval.\r\n       * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\r\n       * @param {Object} opts - options that affect the creation of the Duration\r\n       * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\r\n       * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\r\n       * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\r\n       * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\r\n       * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\r\n       * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\r\n       * @return {Duration}\r\n       */;\r\n      _proto.toDuration = function toDuration(unit, opts) {\r\n        if (!this.isValid) {\r\n          return Duration.invalid(this.invalidReason);\r\n        }\r\n        return this.e.diff(this.s, unit, opts);\r\n      }\r\n  \r\n      /**\r\n       * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\r\n       * @param {function} mapFn\r\n       * @return {Interval}\r\n       * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\r\n       * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\r\n       */;\r\n      _proto.mapEndpoints = function mapEndpoints(mapFn) {\r\n        return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\r\n      };\r\n      _createClass(Interval, [{\r\n        key: \"start\",\r\n        get: function get() {\r\n          return this.isValid ? this.s : null;\r\n        }\r\n  \r\n        /**\r\n         * Returns the end of the Interval\r\n         * @type {DateTime}\r\n         */\r\n      }, {\r\n        key: \"end\",\r\n        get: function get() {\r\n          return this.isValid ? this.e : null;\r\n        }\r\n  \r\n        /**\r\n         * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\r\n         * @type {boolean}\r\n         */\r\n      }, {\r\n        key: \"isValid\",\r\n        get: function get() {\r\n          return this.invalidReason === null;\r\n        }\r\n  \r\n        /**\r\n         * Returns an error code if this Interval is invalid, or null if the Interval is valid\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"invalidReason\",\r\n        get: function get() {\r\n          return this.invalid ? this.invalid.reason : null;\r\n        }\r\n  \r\n        /**\r\n         * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"invalidExplanation\",\r\n        get: function get() {\r\n          return this.invalid ? this.invalid.explanation : null;\r\n        }\r\n      }]);\r\n      return Interval;\r\n    }(Symbol.for(\"nodejs.util.inspect.custom\"));\r\n  \r\n    /**\r\n     * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\r\n     */\r\n    var Info = /*#__PURE__*/function () {\r\n      function Info() {}\r\n      /**\r\n       * Return whether the specified zone contains a DST.\r\n       * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\r\n       * @return {boolean}\r\n       */\r\n      Info.hasDST = function hasDST(zone) {\r\n        if (zone === void 0) {\r\n          zone = Settings.defaultZone;\r\n        }\r\n        var proto = DateTime.now().setZone(zone).set({\r\n          month: 12\r\n        });\r\n        return !zone.isUniversal && proto.offset !== proto.set({\r\n          month: 6\r\n        }).offset;\r\n      }\r\n  \r\n      /**\r\n       * Return whether the specified zone is a valid IANA specifier.\r\n       * @param {string} zone - Zone to check\r\n       * @return {boolean}\r\n       */;\r\n      Info.isValidIANAZone = function isValidIANAZone(zone) {\r\n        return IANAZone.isValidZone(zone);\r\n      }\r\n  \r\n      /**\r\n       * Converts the input into a {@link Zone} instance.\r\n       *\r\n       * * If `input` is already a Zone instance, it is returned unchanged.\r\n       * * If `input` is a string containing a valid time zone name, a Zone instance\r\n       *   with that name is returned.\r\n       * * If `input` is a string that doesn't refer to a known time zone, a Zone\r\n       *   instance with {@link Zone#isValid} == false is returned.\r\n       * * If `input is a number, a Zone instance with the specified fixed offset\r\n       *   in minutes is returned.\r\n       * * If `input` is `null` or `undefined`, the default zone is returned.\r\n       * @param {string|Zone|number} [input] - the value to be converted\r\n       * @return {Zone}\r\n       */;\r\n      Info.normalizeZone = function normalizeZone$1(input) {\r\n        return normalizeZone(input, Settings.defaultZone);\r\n      }\r\n  \r\n      /**\r\n       * Get the weekday on which the week starts according to the given locale.\r\n       * @param {Object} opts - options\r\n       * @param {string} [opts.locale] - the locale code\r\n       * @param {string} [opts.locObj=null] - an existing locale object to use\r\n       * @returns {number} the start of the week, 1 for Monday through 7 for Sunday\r\n       */;\r\n      Info.getStartOfWeek = function getStartOfWeek(_temp) {\r\n        var _ref = _temp === void 0 ? {} : _temp,\r\n          _ref$locale = _ref.locale,\r\n          locale = _ref$locale === void 0 ? null : _ref$locale,\r\n          _ref$locObj = _ref.locObj,\r\n          locObj = _ref$locObj === void 0 ? null : _ref$locObj;\r\n        return (locObj || Locale.create(locale)).getStartOfWeek();\r\n      }\r\n  \r\n      /**\r\n       * Get the minimum number of days necessary in a week before it is considered part of the next year according\r\n       * to the given locale.\r\n       * @param {Object} opts - options\r\n       * @param {string} [opts.locale] - the locale code\r\n       * @param {string} [opts.locObj=null] - an existing locale object to use\r\n       * @returns {number}\r\n       */;\r\n      Info.getMinimumDaysInFirstWeek = function getMinimumDaysInFirstWeek(_temp2) {\r\n        var _ref2 = _temp2 === void 0 ? {} : _temp2,\r\n          _ref2$locale = _ref2.locale,\r\n          locale = _ref2$locale === void 0 ? null : _ref2$locale,\r\n          _ref2$locObj = _ref2.locObj,\r\n          locObj = _ref2$locObj === void 0 ? null : _ref2$locObj;\r\n        return (locObj || Locale.create(locale)).getMinDaysInFirstWeek();\r\n      }\r\n  \r\n      /**\r\n       * Get the weekdays, which are considered the weekend according to the given locale\r\n       * @param {Object} opts - options\r\n       * @param {string} [opts.locale] - the locale code\r\n       * @param {string} [opts.locObj=null] - an existing locale object to use\r\n       * @returns {number[]} an array of weekdays, 1 for Monday through 7 for Sunday\r\n       */;\r\n      Info.getWeekendWeekdays = function getWeekendWeekdays(_temp3) {\r\n        var _ref3 = _temp3 === void 0 ? {} : _temp3,\r\n          _ref3$locale = _ref3.locale,\r\n          locale = _ref3$locale === void 0 ? null : _ref3$locale,\r\n          _ref3$locObj = _ref3.locObj,\r\n          locObj = _ref3$locObj === void 0 ? null : _ref3$locObj;\r\n        // copy the array, because we cache it internally\r\n        return (locObj || Locale.create(locale)).getWeekendDays().slice();\r\n      }\r\n  \r\n      /**\r\n       * Return an array of standalone month names.\r\n       * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\r\n       * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\r\n       * @param {Object} opts - options\r\n       * @param {string} [opts.locale] - the locale code\r\n       * @param {string} [opts.numberingSystem=null] - the numbering system\r\n       * @param {string} [opts.locObj=null] - an existing locale object to use\r\n       * @param {string} [opts.outputCalendar='gregory'] - the calendar\r\n       * @example Info.months()[0] //=> 'January'\r\n       * @example Info.months('short')[0] //=> 'Jan'\r\n       * @example Info.months('numeric')[0] //=> '1'\r\n       * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\r\n       * @example Info.months('numeric', { locale: 'ar' })[0] //=> '١'\r\n       * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I'\r\n       * @return {Array}\r\n       */;\r\n      Info.months = function months(length, _temp4) {\r\n        if (length === void 0) {\r\n          length = \"long\";\r\n        }\r\n        var _ref4 = _temp4 === void 0 ? {} : _temp4,\r\n          _ref4$locale = _ref4.locale,\r\n          locale = _ref4$locale === void 0 ? null : _ref4$locale,\r\n          _ref4$numberingSystem = _ref4.numberingSystem,\r\n          numberingSystem = _ref4$numberingSystem === void 0 ? null : _ref4$numberingSystem,\r\n          _ref4$locObj = _ref4.locObj,\r\n          locObj = _ref4$locObj === void 0 ? null : _ref4$locObj,\r\n          _ref4$outputCalendar = _ref4.outputCalendar,\r\n          outputCalendar = _ref4$outputCalendar === void 0 ? \"gregory\" : _ref4$outputCalendar;\r\n        return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);\r\n      }\r\n  \r\n      /**\r\n       * Return an array of format month names.\r\n       * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\r\n       * changes the string.\r\n       * See {@link Info#months}\r\n       * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\r\n       * @param {Object} opts - options\r\n       * @param {string} [opts.locale] - the locale code\r\n       * @param {string} [opts.numberingSystem=null] - the numbering system\r\n       * @param {string} [opts.locObj=null] - an existing locale object to use\r\n       * @param {string} [opts.outputCalendar='gregory'] - the calendar\r\n       * @return {Array}\r\n       */;\r\n      Info.monthsFormat = function monthsFormat(length, _temp5) {\r\n        if (length === void 0) {\r\n          length = \"long\";\r\n        }\r\n        var _ref5 = _temp5 === void 0 ? {} : _temp5,\r\n          _ref5$locale = _ref5.locale,\r\n          locale = _ref5$locale === void 0 ? null : _ref5$locale,\r\n          _ref5$numberingSystem = _ref5.numberingSystem,\r\n          numberingSystem = _ref5$numberingSystem === void 0 ? null : _ref5$numberingSystem,\r\n          _ref5$locObj = _ref5.locObj,\r\n          locObj = _ref5$locObj === void 0 ? null : _ref5$locObj,\r\n          _ref5$outputCalendar = _ref5.outputCalendar,\r\n          outputCalendar = _ref5$outputCalendar === void 0 ? \"gregory\" : _ref5$outputCalendar;\r\n        return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);\r\n      }\r\n  \r\n      /**\r\n       * Return an array of standalone week names.\r\n       * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\r\n       * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\r\n       * @param {Object} opts - options\r\n       * @param {string} [opts.locale] - the locale code\r\n       * @param {string} [opts.numberingSystem=null] - the numbering system\r\n       * @param {string} [opts.locObj=null] - an existing locale object to use\r\n       * @example Info.weekdays()[0] //=> 'Monday'\r\n       * @example Info.weekdays('short')[0] //=> 'Mon'\r\n       * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\r\n       * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين'\r\n       * @return {Array}\r\n       */;\r\n      Info.weekdays = function weekdays(length, _temp6) {\r\n        if (length === void 0) {\r\n          length = \"long\";\r\n        }\r\n        var _ref6 = _temp6 === void 0 ? {} : _temp6,\r\n          _ref6$locale = _ref6.locale,\r\n          locale = _ref6$locale === void 0 ? null : _ref6$locale,\r\n          _ref6$numberingSystem = _ref6.numberingSystem,\r\n          numberingSystem = _ref6$numberingSystem === void 0 ? null : _ref6$numberingSystem,\r\n          _ref6$locObj = _ref6.locObj,\r\n          locObj = _ref6$locObj === void 0 ? null : _ref6$locObj;\r\n        return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);\r\n      }\r\n  \r\n      /**\r\n       * Return an array of format week names.\r\n       * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\r\n       * changes the string.\r\n       * See {@link Info#weekdays}\r\n       * @param {string} [length='long'] - the length of the month representation, such as \"narrow\", \"short\", \"long\".\r\n       * @param {Object} opts - options\r\n       * @param {string} [opts.locale=null] - the locale code\r\n       * @param {string} [opts.numberingSystem=null] - the numbering system\r\n       * @param {string} [opts.locObj=null] - an existing locale object to use\r\n       * @return {Array}\r\n       */;\r\n      Info.weekdaysFormat = function weekdaysFormat(length, _temp7) {\r\n        if (length === void 0) {\r\n          length = \"long\";\r\n        }\r\n        var _ref7 = _temp7 === void 0 ? {} : _temp7,\r\n          _ref7$locale = _ref7.locale,\r\n          locale = _ref7$locale === void 0 ? null : _ref7$locale,\r\n          _ref7$numberingSystem = _ref7.numberingSystem,\r\n          numberingSystem = _ref7$numberingSystem === void 0 ? null : _ref7$numberingSystem,\r\n          _ref7$locObj = _ref7.locObj,\r\n          locObj = _ref7$locObj === void 0 ? null : _ref7$locObj;\r\n        return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);\r\n      }\r\n  \r\n      /**\r\n       * Return an array of meridiems.\r\n       * @param {Object} opts - options\r\n       * @param {string} [opts.locale] - the locale code\r\n       * @example Info.meridiems() //=> [ 'AM', 'PM' ]\r\n       * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ]\r\n       * @return {Array}\r\n       */;\r\n      Info.meridiems = function meridiems(_temp8) {\r\n        var _ref8 = _temp8 === void 0 ? {} : _temp8,\r\n          _ref8$locale = _ref8.locale,\r\n          locale = _ref8$locale === void 0 ? null : _ref8$locale;\r\n        return Locale.create(locale).meridiems();\r\n      }\r\n  \r\n      /**\r\n       * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\r\n       * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\r\n       * @param {Object} opts - options\r\n       * @param {string} [opts.locale] - the locale code\r\n       * @example Info.eras() //=> [ 'BC', 'AD' ]\r\n       * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\r\n       * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]\r\n       * @return {Array}\r\n       */;\r\n      Info.eras = function eras(length, _temp9) {\r\n        if (length === void 0) {\r\n          length = \"short\";\r\n        }\r\n        var _ref9 = _temp9 === void 0 ? {} : _temp9,\r\n          _ref9$locale = _ref9.locale,\r\n          locale = _ref9$locale === void 0 ? null : _ref9$locale;\r\n        return Locale.create(locale, null, \"gregory\").eras(length);\r\n      }\r\n  \r\n      /**\r\n       * Return the set of available features in this environment.\r\n       * Some features of Luxon are not available in all environments. For example, on older browsers, relative time formatting support is not available. Use this function to figure out if that's the case.\r\n       * Keys:\r\n       * * `relative`: whether this environment supports relative time formatting\r\n       * * `localeWeek`: whether this environment supports different weekdays for the start of the week based on the locale\r\n       * @example Info.features() //=> { relative: false, localeWeek: true }\r\n       * @return {Object}\r\n       */;\r\n      Info.features = function features() {\r\n        return {\r\n          relative: hasRelative(),\r\n          localeWeek: hasLocaleWeekInfo()\r\n        };\r\n      };\r\n      return Info;\r\n    }();\r\n  \r\n    function dayDiff(earlier, later) {\r\n      var utcDayStart = function utcDayStart(dt) {\r\n          return dt.toUTC(0, {\r\n            keepLocalTime: true\r\n          }).startOf(\"day\").valueOf();\r\n        },\r\n        ms = utcDayStart(later) - utcDayStart(earlier);\r\n      return Math.floor(Duration.fromMillis(ms).as(\"days\"));\r\n    }\r\n    function highOrderDiffs(cursor, later, units) {\r\n      var differs = [[\"years\", function (a, b) {\r\n        return b.year - a.year;\r\n      }], [\"quarters\", function (a, b) {\r\n        return b.quarter - a.quarter + (b.year - a.year) * 4;\r\n      }], [\"months\", function (a, b) {\r\n        return b.month - a.month + (b.year - a.year) * 12;\r\n      }], [\"weeks\", function (a, b) {\r\n        var days = dayDiff(a, b);\r\n        return (days - days % 7) / 7;\r\n      }], [\"days\", dayDiff]];\r\n      var results = {};\r\n      var earlier = cursor;\r\n      var lowestOrder, highWater;\r\n  \r\n      /* This loop tries to diff using larger units first.\r\n         If we overshoot, we backtrack and try the next smaller unit.\r\n         \"cursor\" starts out at the earlier timestamp and moves closer and closer to \"later\"\r\n         as we use smaller and smaller units.\r\n         highWater keeps track of where we would be if we added one more of the smallest unit,\r\n         this is used later to potentially convert any difference smaller than the smallest higher order unit\r\n         into a fraction of that smallest higher order unit\r\n      */\r\n      for (var _i = 0, _differs = differs; _i < _differs.length; _i++) {\r\n        var _differs$_i = _differs[_i],\r\n          unit = _differs$_i[0],\r\n          differ = _differs$_i[1];\r\n        if (units.indexOf(unit) >= 0) {\r\n          lowestOrder = unit;\r\n          results[unit] = differ(cursor, later);\r\n          highWater = earlier.plus(results);\r\n          if (highWater > later) {\r\n            // we overshot the end point, backtrack cursor by 1\r\n            results[unit]--;\r\n            cursor = earlier.plus(results);\r\n  \r\n            // if we are still overshooting now, we need to backtrack again\r\n            // this happens in certain situations when diffing times in different zones,\r\n            // because this calculation ignores time zones\r\n            if (cursor > later) {\r\n              // keep the \"overshot by 1\" around as highWater\r\n              highWater = cursor;\r\n              // backtrack cursor by 1\r\n              results[unit]--;\r\n              cursor = earlier.plus(results);\r\n            }\r\n          } else {\r\n            cursor = highWater;\r\n          }\r\n        }\r\n      }\r\n      return [cursor, results, highWater, lowestOrder];\r\n    }\r\n    function _diff (earlier, later, units, opts) {\r\n      var _highOrderDiffs = highOrderDiffs(earlier, later, units),\r\n        cursor = _highOrderDiffs[0],\r\n        results = _highOrderDiffs[1],\r\n        highWater = _highOrderDiffs[2],\r\n        lowestOrder = _highOrderDiffs[3];\r\n      var remainingMillis = later - cursor;\r\n      var lowerOrderUnits = units.filter(function (u) {\r\n        return [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"].indexOf(u) >= 0;\r\n      });\r\n      if (lowerOrderUnits.length === 0) {\r\n        if (highWater < later) {\r\n          var _cursor$plus;\r\n          highWater = cursor.plus((_cursor$plus = {}, _cursor$plus[lowestOrder] = 1, _cursor$plus));\r\n        }\r\n        if (highWater !== cursor) {\r\n          results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\r\n        }\r\n      }\r\n      var duration = Duration.fromObject(results, opts);\r\n      if (lowerOrderUnits.length > 0) {\r\n        var _Duration$fromMillis;\r\n        return (_Duration$fromMillis = Duration.fromMillis(remainingMillis, opts)).shiftTo.apply(_Duration$fromMillis, lowerOrderUnits).plus(duration);\r\n      } else {\r\n        return duration;\r\n      }\r\n    }\r\n  \r\n    var MISSING_FTP = \"missing Intl.DateTimeFormat.formatToParts support\";\r\n    function intUnit(regex, post) {\r\n      if (post === void 0) {\r\n        post = function post(i) {\r\n          return i;\r\n        };\r\n      }\r\n      return {\r\n        regex: regex,\r\n        deser: function deser(_ref) {\r\n          var s = _ref[0];\r\n          return post(parseDigits(s));\r\n        }\r\n      };\r\n    }\r\n    var NBSP = String.fromCharCode(160);\r\n    var spaceOrNBSP = \"[ \" + NBSP + \"]\";\r\n    var spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, \"g\");\r\n    function fixListRegex(s) {\r\n      // make dots optional and also make them literal\r\n      // make space and non breakable space characters interchangeable\r\n      return s.replace(/\\./g, \"\\\\.?\").replace(spaceOrNBSPRegExp, spaceOrNBSP);\r\n    }\r\n    function stripInsensitivities(s) {\r\n      return s.replace(/\\./g, \"\") // ignore dots that were made optional\r\n      .replace(spaceOrNBSPRegExp, \" \") // interchange space and nbsp\r\n      .toLowerCase();\r\n    }\r\n    function oneOf(strings, startIndex) {\r\n      if (strings === null) {\r\n        return null;\r\n      } else {\r\n        return {\r\n          regex: RegExp(strings.map(fixListRegex).join(\"|\")),\r\n          deser: function deser(_ref2) {\r\n            var s = _ref2[0];\r\n            return strings.findIndex(function (i) {\r\n              return stripInsensitivities(s) === stripInsensitivities(i);\r\n            }) + startIndex;\r\n          }\r\n        };\r\n      }\r\n    }\r\n    function offset(regex, groups) {\r\n      return {\r\n        regex: regex,\r\n        deser: function deser(_ref3) {\r\n          var h = _ref3[1],\r\n            m = _ref3[2];\r\n          return signedOffset(h, m);\r\n        },\r\n        groups: groups\r\n      };\r\n    }\r\n    function simple(regex) {\r\n      return {\r\n        regex: regex,\r\n        deser: function deser(_ref4) {\r\n          var s = _ref4[0];\r\n          return s;\r\n        }\r\n      };\r\n    }\r\n    function escapeToken(value) {\r\n      return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\r\n    }\r\n  \r\n    /**\r\n     * @param token\r\n     * @param {Locale} loc\r\n     */\r\n    function unitForToken(token, loc) {\r\n      var one = digitRegex(loc),\r\n        two = digitRegex(loc, \"{2}\"),\r\n        three = digitRegex(loc, \"{3}\"),\r\n        four = digitRegex(loc, \"{4}\"),\r\n        six = digitRegex(loc, \"{6}\"),\r\n        oneOrTwo = digitRegex(loc, \"{1,2}\"),\r\n        oneToThree = digitRegex(loc, \"{1,3}\"),\r\n        oneToSix = digitRegex(loc, \"{1,6}\"),\r\n        oneToNine = digitRegex(loc, \"{1,9}\"),\r\n        twoToFour = digitRegex(loc, \"{2,4}\"),\r\n        fourToSix = digitRegex(loc, \"{4,6}\"),\r\n        literal = function literal(t) {\r\n          return {\r\n            regex: RegExp(escapeToken(t.val)),\r\n            deser: function deser(_ref5) {\r\n              var s = _ref5[0];\r\n              return s;\r\n            },\r\n            literal: true\r\n          };\r\n        },\r\n        unitate = function unitate(t) {\r\n          if (token.literal) {\r\n            return literal(t);\r\n          }\r\n          switch (t.val) {\r\n            // era\r\n            case \"G\":\r\n              return oneOf(loc.eras(\"short\"), 0);\r\n            case \"GG\":\r\n              return oneOf(loc.eras(\"long\"), 0);\r\n            // years\r\n            case \"y\":\r\n              return intUnit(oneToSix);\r\n            case \"yy\":\r\n              return intUnit(twoToFour, untruncateYear);\r\n            case \"yyyy\":\r\n              return intUnit(four);\r\n            case \"yyyyy\":\r\n              return intUnit(fourToSix);\r\n            case \"yyyyyy\":\r\n              return intUnit(six);\r\n            // months\r\n            case \"M\":\r\n              return intUnit(oneOrTwo);\r\n            case \"MM\":\r\n              return intUnit(two);\r\n            case \"MMM\":\r\n              return oneOf(loc.months(\"short\", true), 1);\r\n            case \"MMMM\":\r\n              return oneOf(loc.months(\"long\", true), 1);\r\n            case \"L\":\r\n              return intUnit(oneOrTwo);\r\n            case \"LL\":\r\n              return intUnit(two);\r\n            case \"LLL\":\r\n              return oneOf(loc.months(\"short\", false), 1);\r\n            case \"LLLL\":\r\n              return oneOf(loc.months(\"long\", false), 1);\r\n            // dates\r\n            case \"d\":\r\n              return intUnit(oneOrTwo);\r\n            case \"dd\":\r\n              return intUnit(two);\r\n            // ordinals\r\n            case \"o\":\r\n              return intUnit(oneToThree);\r\n            case \"ooo\":\r\n              return intUnit(three);\r\n            // time\r\n            case \"HH\":\r\n              return intUnit(two);\r\n            case \"H\":\r\n              return intUnit(oneOrTwo);\r\n            case \"hh\":\r\n              return intUnit(two);\r\n            case \"h\":\r\n              return intUnit(oneOrTwo);\r\n            case \"mm\":\r\n              return intUnit(two);\r\n            case \"m\":\r\n              return intUnit(oneOrTwo);\r\n            case \"q\":\r\n              return intUnit(oneOrTwo);\r\n            case \"qq\":\r\n              return intUnit(two);\r\n            case \"s\":\r\n              return intUnit(oneOrTwo);\r\n            case \"ss\":\r\n              return intUnit(two);\r\n            case \"S\":\r\n              return intUnit(oneToThree);\r\n            case \"SSS\":\r\n              return intUnit(three);\r\n            case \"u\":\r\n              return simple(oneToNine);\r\n            case \"uu\":\r\n              return simple(oneOrTwo);\r\n            case \"uuu\":\r\n              return intUnit(one);\r\n            // meridiem\r\n            case \"a\":\r\n              return oneOf(loc.meridiems(), 0);\r\n            // weekYear (k)\r\n            case \"kkkk\":\r\n              return intUnit(four);\r\n            case \"kk\":\r\n              return intUnit(twoToFour, untruncateYear);\r\n            // weekNumber (W)\r\n            case \"W\":\r\n              return intUnit(oneOrTwo);\r\n            case \"WW\":\r\n              return intUnit(two);\r\n            // weekdays\r\n            case \"E\":\r\n            case \"c\":\r\n              return intUnit(one);\r\n            case \"EEE\":\r\n              return oneOf(loc.weekdays(\"short\", false), 1);\r\n            case \"EEEE\":\r\n              return oneOf(loc.weekdays(\"long\", false), 1);\r\n            case \"ccc\":\r\n              return oneOf(loc.weekdays(\"short\", true), 1);\r\n            case \"cccc\":\r\n              return oneOf(loc.weekdays(\"long\", true), 1);\r\n            // offset/zone\r\n            case \"Z\":\r\n            case \"ZZ\":\r\n              return offset(new RegExp(\"([+-]\" + oneOrTwo.source + \")(?::(\" + two.source + \"))?\"), 2);\r\n            case \"ZZZ\":\r\n              return offset(new RegExp(\"([+-]\" + oneOrTwo.source + \")(\" + two.source + \")?\"), 2);\r\n            // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\r\n            // because we don't have any way to figure out what they are\r\n            case \"z\":\r\n              return simple(/[a-z_+-/]{1,256}?/i);\r\n            // this special-case \"token\" represents a place where a macro-token expanded into a white-space literal\r\n            // in this case we accept any non-newline white-space\r\n            case \" \":\r\n              return simple(/[^\\S\\n\\r]/);\r\n            default:\r\n              return literal(t);\r\n          }\r\n        };\r\n      var unit = unitate(token) || {\r\n        invalidReason: MISSING_FTP\r\n      };\r\n      unit.token = token;\r\n      return unit;\r\n    }\r\n    var partTypeStyleToTokenVal = {\r\n      year: {\r\n        \"2-digit\": \"yy\",\r\n        numeric: \"yyyyy\"\r\n      },\r\n      month: {\r\n        numeric: \"M\",\r\n        \"2-digit\": \"MM\",\r\n        short: \"MMM\",\r\n        long: \"MMMM\"\r\n      },\r\n      day: {\r\n        numeric: \"d\",\r\n        \"2-digit\": \"dd\"\r\n      },\r\n      weekday: {\r\n        short: \"EEE\",\r\n        long: \"EEEE\"\r\n      },\r\n      dayperiod: \"a\",\r\n      dayPeriod: \"a\",\r\n      hour12: {\r\n        numeric: \"h\",\r\n        \"2-digit\": \"hh\"\r\n      },\r\n      hour24: {\r\n        numeric: \"H\",\r\n        \"2-digit\": \"HH\"\r\n      },\r\n      minute: {\r\n        numeric: \"m\",\r\n        \"2-digit\": \"mm\"\r\n      },\r\n      second: {\r\n        numeric: \"s\",\r\n        \"2-digit\": \"ss\"\r\n      },\r\n      timeZoneName: {\r\n        long: \"ZZZZZ\",\r\n        short: \"ZZZ\"\r\n      }\r\n    };\r\n    function tokenForPart(part, formatOpts, resolvedOpts) {\r\n      var type = part.type,\r\n        value = part.value;\r\n      if (type === \"literal\") {\r\n        var isSpace = /^\\s+$/.test(value);\r\n        return {\r\n          literal: !isSpace,\r\n          val: isSpace ? \" \" : value\r\n        };\r\n      }\r\n      var style = formatOpts[type];\r\n  \r\n      // The user might have explicitly specified hour12 or hourCycle\r\n      // if so, respect their decision\r\n      // if not, refer back to the resolvedOpts, which are based on the locale\r\n      var actualType = type;\r\n      if (type === \"hour\") {\r\n        if (formatOpts.hour12 != null) {\r\n          actualType = formatOpts.hour12 ? \"hour12\" : \"hour24\";\r\n        } else if (formatOpts.hourCycle != null) {\r\n          if (formatOpts.hourCycle === \"h11\" || formatOpts.hourCycle === \"h12\") {\r\n            actualType = \"hour12\";\r\n          } else {\r\n            actualType = \"hour24\";\r\n          }\r\n        } else {\r\n          // tokens only differentiate between 24 hours or not,\r\n          // so we do not need to check hourCycle here, which is less supported anyways\r\n          actualType = resolvedOpts.hour12 ? \"hour12\" : \"hour24\";\r\n        }\r\n      }\r\n      var val = partTypeStyleToTokenVal[actualType];\r\n      if (typeof val === \"object\") {\r\n        val = val[style];\r\n      }\r\n      if (val) {\r\n        return {\r\n          literal: false,\r\n          val: val\r\n        };\r\n      }\r\n      return undefined;\r\n    }\r\n    function buildRegex(units) {\r\n      var re = units.map(function (u) {\r\n        return u.regex;\r\n      }).reduce(function (f, r) {\r\n        return f + \"(\" + r.source + \")\";\r\n      }, \"\");\r\n      return [\"^\" + re + \"$\", units];\r\n    }\r\n    function match(input, regex, handlers) {\r\n      var matches = input.match(regex);\r\n      if (matches) {\r\n        var all = {};\r\n        var matchIndex = 1;\r\n        for (var i in handlers) {\r\n          if (hasOwnProperty(handlers, i)) {\r\n            var h = handlers[i],\r\n              groups = h.groups ? h.groups + 1 : 1;\r\n            if (!h.literal && h.token) {\r\n              all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\r\n            }\r\n            matchIndex += groups;\r\n          }\r\n        }\r\n        return [matches, all];\r\n      } else {\r\n        return [matches, {}];\r\n      }\r\n    }\r\n    function dateTimeFromMatches(matches) {\r\n      var toField = function toField(token) {\r\n        switch (token) {\r\n          case \"S\":\r\n            return \"millisecond\";\r\n          case \"s\":\r\n            return \"second\";\r\n          case \"m\":\r\n            return \"minute\";\r\n          case \"h\":\r\n          case \"H\":\r\n            return \"hour\";\r\n          case \"d\":\r\n            return \"day\";\r\n          case \"o\":\r\n            return \"ordinal\";\r\n          case \"L\":\r\n          case \"M\":\r\n            return \"month\";\r\n          case \"y\":\r\n            return \"year\";\r\n          case \"E\":\r\n          case \"c\":\r\n            return \"weekday\";\r\n          case \"W\":\r\n            return \"weekNumber\";\r\n          case \"k\":\r\n            return \"weekYear\";\r\n          case \"q\":\r\n            return \"quarter\";\r\n          default:\r\n            return null;\r\n        }\r\n      };\r\n      var zone = null;\r\n      var specificOffset;\r\n      if (!isUndefined(matches.z)) {\r\n        zone = IANAZone.create(matches.z);\r\n      }\r\n      if (!isUndefined(matches.Z)) {\r\n        if (!zone) {\r\n          zone = new FixedOffsetZone(matches.Z);\r\n        }\r\n        specificOffset = matches.Z;\r\n      }\r\n      if (!isUndefined(matches.q)) {\r\n        matches.M = (matches.q - 1) * 3 + 1;\r\n      }\r\n      if (!isUndefined(matches.h)) {\r\n        if (matches.h < 12 && matches.a === 1) {\r\n          matches.h += 12;\r\n        } else if (matches.h === 12 && matches.a === 0) {\r\n          matches.h = 0;\r\n        }\r\n      }\r\n      if (matches.G === 0 && matches.y) {\r\n        matches.y = -matches.y;\r\n      }\r\n      if (!isUndefined(matches.u)) {\r\n        matches.S = parseMillis(matches.u);\r\n      }\r\n      var vals = Object.keys(matches).reduce(function (r, k) {\r\n        var f = toField(k);\r\n        if (f) {\r\n          r[f] = matches[k];\r\n        }\r\n        return r;\r\n      }, {});\r\n      return [vals, zone, specificOffset];\r\n    }\r\n    var dummyDateTimeCache = null;\r\n    function getDummyDateTime() {\r\n      if (!dummyDateTimeCache) {\r\n        dummyDateTimeCache = DateTime.fromMillis(1555555555555);\r\n      }\r\n      return dummyDateTimeCache;\r\n    }\r\n    function maybeExpandMacroToken(token, locale) {\r\n      if (token.literal) {\r\n        return token;\r\n      }\r\n      var formatOpts = Formatter.macroTokenToFormatOpts(token.val);\r\n      var tokens = formatOptsToTokens(formatOpts, locale);\r\n      if (tokens == null || tokens.includes(undefined)) {\r\n        return token;\r\n      }\r\n      return tokens;\r\n    }\r\n    function expandMacroTokens(tokens, locale) {\r\n      var _Array$prototype;\r\n      return (_Array$prototype = Array.prototype).concat.apply(_Array$prototype, tokens.map(function (t) {\r\n        return maybeExpandMacroToken(t, locale);\r\n      }));\r\n    }\r\n  \r\n    /**\r\n     * @private\r\n     */\r\n  \r\n    var TokenParser = /*#__PURE__*/function () {\r\n      function TokenParser(locale, format) {\r\n        this.locale = locale;\r\n        this.format = format;\r\n        this.tokens = expandMacroTokens(Formatter.parseFormat(format), locale);\r\n        this.units = this.tokens.map(function (t) {\r\n          return unitForToken(t, locale);\r\n        });\r\n        this.disqualifyingUnit = this.units.find(function (t) {\r\n          return t.invalidReason;\r\n        });\r\n        if (!this.disqualifyingUnit) {\r\n          var _buildRegex = buildRegex(this.units),\r\n            regexString = _buildRegex[0],\r\n            handlers = _buildRegex[1];\r\n          this.regex = RegExp(regexString, \"i\");\r\n          this.handlers = handlers;\r\n        }\r\n      }\r\n      var _proto = TokenParser.prototype;\r\n      _proto.explainFromTokens = function explainFromTokens(input) {\r\n        if (!this.isValid) {\r\n          return {\r\n            input: input,\r\n            tokens: this.tokens,\r\n            invalidReason: this.invalidReason\r\n          };\r\n        } else {\r\n          var _match = match(input, this.regex, this.handlers),\r\n            rawMatches = _match[0],\r\n            matches = _match[1],\r\n            _ref6 = matches ? dateTimeFromMatches(matches) : [null, null, undefined],\r\n            result = _ref6[0],\r\n            zone = _ref6[1],\r\n            specificOffset = _ref6[2];\r\n          if (hasOwnProperty(matches, \"a\") && hasOwnProperty(matches, \"H\")) {\r\n            throw new ConflictingSpecificationError(\"Can't include meridiem when specifying 24-hour format\");\r\n          }\r\n          return {\r\n            input: input,\r\n            tokens: this.tokens,\r\n            regex: this.regex,\r\n            rawMatches: rawMatches,\r\n            matches: matches,\r\n            result: result,\r\n            zone: zone,\r\n            specificOffset: specificOffset\r\n          };\r\n        }\r\n      };\r\n      _createClass(TokenParser, [{\r\n        key: \"isValid\",\r\n        get: function get() {\r\n          return !this.disqualifyingUnit;\r\n        }\r\n      }, {\r\n        key: \"invalidReason\",\r\n        get: function get() {\r\n          return this.disqualifyingUnit ? this.disqualifyingUnit.invalidReason : null;\r\n        }\r\n      }]);\r\n      return TokenParser;\r\n    }();\r\n    function explainFromTokens(locale, input, format) {\r\n      var parser = new TokenParser(locale, format);\r\n      return parser.explainFromTokens(input);\r\n    }\r\n    function parseFromTokens(locale, input, format) {\r\n      var _explainFromTokens = explainFromTokens(locale, input, format),\r\n        result = _explainFromTokens.result,\r\n        zone = _explainFromTokens.zone,\r\n        specificOffset = _explainFromTokens.specificOffset,\r\n        invalidReason = _explainFromTokens.invalidReason;\r\n      return [result, zone, specificOffset, invalidReason];\r\n    }\r\n    function formatOptsToTokens(formatOpts, locale) {\r\n      if (!formatOpts) {\r\n        return null;\r\n      }\r\n      var formatter = Formatter.create(locale, formatOpts);\r\n      var df = formatter.dtFormatter(getDummyDateTime());\r\n      var parts = df.formatToParts();\r\n      var resolvedOpts = df.resolvedOptions();\r\n      return parts.map(function (p) {\r\n        return tokenForPart(p, formatOpts, resolvedOpts);\r\n      });\r\n    }\r\n  \r\n    var INVALID = \"Invalid DateTime\";\r\n    var MAX_DATE = 8.64e15;\r\n    function unsupportedZone(zone) {\r\n      return new Invalid(\"unsupported zone\", \"the zone \\\"\" + zone.name + \"\\\" is not supported\");\r\n    }\r\n  \r\n    // we cache week data on the DT object and this intermediates the cache\r\n    /**\r\n     * @param {DateTime} dt\r\n     */\r\n    function possiblyCachedWeekData(dt) {\r\n      if (dt.weekData === null) {\r\n        dt.weekData = gregorianToWeek(dt.c);\r\n      }\r\n      return dt.weekData;\r\n    }\r\n  \r\n    /**\r\n     * @param {DateTime} dt\r\n     */\r\n    function possiblyCachedLocalWeekData(dt) {\r\n      if (dt.localWeekData === null) {\r\n        dt.localWeekData = gregorianToWeek(dt.c, dt.loc.getMinDaysInFirstWeek(), dt.loc.getStartOfWeek());\r\n      }\r\n      return dt.localWeekData;\r\n    }\r\n  \r\n    // clone really means, \"make a new object with these modifications\". all \"setters\" really use this\r\n    // to create a new object while only changing some of the properties\r\n    function clone(inst, alts) {\r\n      var current = {\r\n        ts: inst.ts,\r\n        zone: inst.zone,\r\n        c: inst.c,\r\n        o: inst.o,\r\n        loc: inst.loc,\r\n        invalid: inst.invalid\r\n      };\r\n      return new DateTime(_extends({}, current, alts, {\r\n        old: current\r\n      }));\r\n    }\r\n  \r\n    // find the right offset a given local time. The o input is our guess, which determines which\r\n    // offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\r\n    function fixOffset(localTS, o, tz) {\r\n      // Our UTC time is just a guess because our offset is just a guess\r\n      var utcGuess = localTS - o * 60 * 1000;\r\n  \r\n      // Test whether the zone matches the offset for this ts\r\n      var o2 = tz.offset(utcGuess);\r\n  \r\n      // If so, offset didn't change and we're done\r\n      if (o === o2) {\r\n        return [utcGuess, o];\r\n      }\r\n  \r\n      // If not, change the ts by the difference in the offset\r\n      utcGuess -= (o2 - o) * 60 * 1000;\r\n  \r\n      // If that gives us the local time we want, we're done\r\n      var o3 = tz.offset(utcGuess);\r\n      if (o2 === o3) {\r\n        return [utcGuess, o2];\r\n      }\r\n  \r\n      // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\r\n      return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\r\n    }\r\n  \r\n    // convert an epoch timestamp into a calendar object with the given offset\r\n    function tsToObj(ts, offset) {\r\n      ts += offset * 60 * 1000;\r\n      var d = new Date(ts);\r\n      return {\r\n        year: d.getUTCFullYear(),\r\n        month: d.getUTCMonth() + 1,\r\n        day: d.getUTCDate(),\r\n        hour: d.getUTCHours(),\r\n        minute: d.getUTCMinutes(),\r\n        second: d.getUTCSeconds(),\r\n        millisecond: d.getUTCMilliseconds()\r\n      };\r\n    }\r\n  \r\n    // convert a calendar object to a epoch timestamp\r\n    function objToTS(obj, offset, zone) {\r\n      return fixOffset(objToLocalTS(obj), offset, zone);\r\n    }\r\n  \r\n    // create a new DT instance by adding a duration, adjusting for DSTs\r\n    function adjustTime(inst, dur) {\r\n      var oPre = inst.o,\r\n        year = inst.c.year + Math.trunc(dur.years),\r\n        month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,\r\n        c = _extends({}, inst.c, {\r\n          year: year,\r\n          month: month,\r\n          day: Math.min(inst.c.day, daysInMonth(year, month)) + Math.trunc(dur.days) + Math.trunc(dur.weeks) * 7\r\n        }),\r\n        millisToAdd = Duration.fromObject({\r\n          years: dur.years - Math.trunc(dur.years),\r\n          quarters: dur.quarters - Math.trunc(dur.quarters),\r\n          months: dur.months - Math.trunc(dur.months),\r\n          weeks: dur.weeks - Math.trunc(dur.weeks),\r\n          days: dur.days - Math.trunc(dur.days),\r\n          hours: dur.hours,\r\n          minutes: dur.minutes,\r\n          seconds: dur.seconds,\r\n          milliseconds: dur.milliseconds\r\n        }).as(\"milliseconds\"),\r\n        localTS = objToLocalTS(c);\r\n      var _fixOffset = fixOffset(localTS, oPre, inst.zone),\r\n        ts = _fixOffset[0],\r\n        o = _fixOffset[1];\r\n      if (millisToAdd !== 0) {\r\n        ts += millisToAdd;\r\n        // that could have changed the offset by going over a DST, but we want to keep the ts the same\r\n        o = inst.zone.offset(ts);\r\n      }\r\n      return {\r\n        ts: ts,\r\n        o: o\r\n      };\r\n    }\r\n  \r\n    // helper useful in turning the results of parsing into real dates\r\n    // by handling the zone options\r\n    function parseDataToDateTime(parsed, parsedZone, opts, format, text, specificOffset) {\r\n      var setZone = opts.setZone,\r\n        zone = opts.zone;\r\n      if (parsed && Object.keys(parsed).length !== 0 || parsedZone) {\r\n        var interpretationZone = parsedZone || zone,\r\n          inst = DateTime.fromObject(parsed, _extends({}, opts, {\r\n            zone: interpretationZone,\r\n            specificOffset: specificOffset\r\n          }));\r\n        return setZone ? inst : inst.setZone(zone);\r\n      } else {\r\n        return DateTime.invalid(new Invalid(\"unparsable\", \"the input \\\"\" + text + \"\\\" can't be parsed as \" + format));\r\n      }\r\n    }\r\n  \r\n    // if you want to output a technical format (e.g. RFC 2822), this helper\r\n    // helps handle the details\r\n    function toTechFormat(dt, format, allowZ) {\r\n      if (allowZ === void 0) {\r\n        allowZ = true;\r\n      }\r\n      return dt.isValid ? Formatter.create(Locale.create(\"en-US\"), {\r\n        allowZ: allowZ,\r\n        forceSimple: true\r\n      }).formatDateTimeFromString(dt, format) : null;\r\n    }\r\n    function _toISODate(o, extended) {\r\n      var longFormat = o.c.year > 9999 || o.c.year < 0;\r\n      var c = \"\";\r\n      if (longFormat && o.c.year >= 0) c += \"+\";\r\n      c += padStart(o.c.year, longFormat ? 6 : 4);\r\n      if (extended) {\r\n        c += \"-\";\r\n        c += padStart(o.c.month);\r\n        c += \"-\";\r\n        c += padStart(o.c.day);\r\n      } else {\r\n        c += padStart(o.c.month);\r\n        c += padStart(o.c.day);\r\n      }\r\n      return c;\r\n    }\r\n    function _toISOTime(o, extended, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone) {\r\n      var c = padStart(o.c.hour);\r\n      if (extended) {\r\n        c += \":\";\r\n        c += padStart(o.c.minute);\r\n        if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) {\r\n          c += \":\";\r\n        }\r\n      } else {\r\n        c += padStart(o.c.minute);\r\n      }\r\n      if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) {\r\n        c += padStart(o.c.second);\r\n        if (o.c.millisecond !== 0 || !suppressMilliseconds) {\r\n          c += \".\";\r\n          c += padStart(o.c.millisecond, 3);\r\n        }\r\n      }\r\n      if (includeOffset) {\r\n        if (o.isOffsetFixed && o.offset === 0 && !extendedZone) {\r\n          c += \"Z\";\r\n        } else if (o.o < 0) {\r\n          c += \"-\";\r\n          c += padStart(Math.trunc(-o.o / 60));\r\n          c += \":\";\r\n          c += padStart(Math.trunc(-o.o % 60));\r\n        } else {\r\n          c += \"+\";\r\n          c += padStart(Math.trunc(o.o / 60));\r\n          c += \":\";\r\n          c += padStart(Math.trunc(o.o % 60));\r\n        }\r\n      }\r\n      if (extendedZone) {\r\n        c += \"[\" + o.zone.ianaName + \"]\";\r\n      }\r\n      return c;\r\n    }\r\n  \r\n    // defaults for unspecified units in the supported calendars\r\n    var defaultUnitValues = {\r\n        month: 1,\r\n        day: 1,\r\n        hour: 0,\r\n        minute: 0,\r\n        second: 0,\r\n        millisecond: 0\r\n      },\r\n      defaultWeekUnitValues = {\r\n        weekNumber: 1,\r\n        weekday: 1,\r\n        hour: 0,\r\n        minute: 0,\r\n        second: 0,\r\n        millisecond: 0\r\n      },\r\n      defaultOrdinalUnitValues = {\r\n        ordinal: 1,\r\n        hour: 0,\r\n        minute: 0,\r\n        second: 0,\r\n        millisecond: 0\r\n      };\r\n  \r\n    // Units in the supported calendars, sorted by bigness\r\n    var orderedUnits = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\r\n      orderedWeekUnits = [\"weekYear\", \"weekNumber\", \"weekday\", \"hour\", \"minute\", \"second\", \"millisecond\"],\r\n      orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"];\r\n  \r\n    // standardize case and plurality in units\r\n    function normalizeUnit(unit) {\r\n      var normalized = {\r\n        year: \"year\",\r\n        years: \"year\",\r\n        month: \"month\",\r\n        months: \"month\",\r\n        day: \"day\",\r\n        days: \"day\",\r\n        hour: \"hour\",\r\n        hours: \"hour\",\r\n        minute: \"minute\",\r\n        minutes: \"minute\",\r\n        quarter: \"quarter\",\r\n        quarters: \"quarter\",\r\n        second: \"second\",\r\n        seconds: \"second\",\r\n        millisecond: \"millisecond\",\r\n        milliseconds: \"millisecond\",\r\n        weekday: \"weekday\",\r\n        weekdays: \"weekday\",\r\n        weeknumber: \"weekNumber\",\r\n        weeksnumber: \"weekNumber\",\r\n        weeknumbers: \"weekNumber\",\r\n        weekyear: \"weekYear\",\r\n        weekyears: \"weekYear\",\r\n        ordinal: \"ordinal\"\r\n      }[unit.toLowerCase()];\r\n      if (!normalized) throw new InvalidUnitError(unit);\r\n      return normalized;\r\n    }\r\n    function normalizeUnitWithLocalWeeks(unit) {\r\n      switch (unit.toLowerCase()) {\r\n        case \"localweekday\":\r\n        case \"localweekdays\":\r\n          return \"localWeekday\";\r\n        case \"localweeknumber\":\r\n        case \"localweeknumbers\":\r\n          return \"localWeekNumber\";\r\n        case \"localweekyear\":\r\n        case \"localweekyears\":\r\n          return \"localWeekYear\";\r\n        default:\r\n          return normalizeUnit(unit);\r\n      }\r\n    }\r\n  \r\n    // cache offsets for zones based on the current timestamp when this function is\r\n    // first called. When we are handling a datetime from components like (year,\r\n    // month, day, hour) in a time zone, we need a guess about what the timezone\r\n    // offset is so that we can convert into a UTC timestamp. One way is to find the\r\n    // offset of now in the zone. The actual date may have a different offset (for\r\n    // example, if we handle a date in June while we're in December in a zone that\r\n    // observes DST), but we can check and adjust that.\r\n    //\r\n    // When handling many dates, calculating the offset for now every time is\r\n    // expensive. It's just a guess, so we can cache the offset to use even if we\r\n    // are right on a time change boundary (we'll just correct in the other\r\n    // direction). Using a timestamp from first read is a slight optimization for\r\n    // handling dates close to the current date, since those dates will usually be\r\n    // in the same offset (we could set the timestamp statically, instead). We use a\r\n    // single timestamp for all zones to make things a bit more predictable.\r\n    //\r\n    // This is safe for quickDT (used by local() and utc()) because we don't fill in\r\n    // higher-order units from tsNow (as we do in fromObject, this requires that\r\n    // offset is calculated from tsNow).\r\n    function guessOffsetForZone(zone) {\r\n      if (!zoneOffsetGuessCache[zone]) {\r\n        if (zoneOffsetTs === undefined) {\r\n          zoneOffsetTs = Settings.now();\r\n        }\r\n        zoneOffsetGuessCache[zone] = zone.offset(zoneOffsetTs);\r\n      }\r\n      return zoneOffsetGuessCache[zone];\r\n    }\r\n  \r\n    // this is a dumbed down version of fromObject() that runs about 60% faster\r\n    // but doesn't do any validation, makes a bunch of assumptions about what units\r\n    // are present, and so on.\r\n    function quickDT(obj, opts) {\r\n      var zone = normalizeZone(opts.zone, Settings.defaultZone);\r\n      if (!zone.isValid) {\r\n        return DateTime.invalid(unsupportedZone(zone));\r\n      }\r\n      var loc = Locale.fromObject(opts);\r\n      var ts, o;\r\n  \r\n      // assume we have the higher-order units\r\n      if (!isUndefined(obj.year)) {\r\n        for (var _i = 0, _orderedUnits = orderedUnits; _i < _orderedUnits.length; _i++) {\r\n          var u = _orderedUnits[_i];\r\n          if (isUndefined(obj[u])) {\r\n            obj[u] = defaultUnitValues[u];\r\n          }\r\n        }\r\n        var invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\r\n        if (invalid) {\r\n          return DateTime.invalid(invalid);\r\n        }\r\n        var offsetProvis = guessOffsetForZone(zone);\r\n        var _objToTS = objToTS(obj, offsetProvis, zone);\r\n        ts = _objToTS[0];\r\n        o = _objToTS[1];\r\n      } else {\r\n        ts = Settings.now();\r\n      }\r\n      return new DateTime({\r\n        ts: ts,\r\n        zone: zone,\r\n        loc: loc,\r\n        o: o\r\n      });\r\n    }\r\n    function diffRelative(start, end, opts) {\r\n      var round = isUndefined(opts.round) ? true : opts.round,\r\n        format = function format(c, unit) {\r\n          c = roundTo(c, round || opts.calendary ? 0 : 2, true);\r\n          var formatter = end.loc.clone(opts).relFormatter(opts);\r\n          return formatter.format(c, unit);\r\n        },\r\n        differ = function differ(unit) {\r\n          if (opts.calendary) {\r\n            if (!end.hasSame(start, unit)) {\r\n              return end.startOf(unit).diff(start.startOf(unit), unit).get(unit);\r\n            } else return 0;\r\n          } else {\r\n            return end.diff(start, unit).get(unit);\r\n          }\r\n        };\r\n      if (opts.unit) {\r\n        return format(differ(opts.unit), opts.unit);\r\n      }\r\n      for (var _iterator = _createForOfIteratorHelperLoose(opts.units), _step; !(_step = _iterator()).done;) {\r\n        var unit = _step.value;\r\n        var count = differ(unit);\r\n        if (Math.abs(count) >= 1) {\r\n          return format(count, unit);\r\n        }\r\n      }\r\n      return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);\r\n    }\r\n    function lastOpts(argList) {\r\n      var opts = {},\r\n        args;\r\n      if (argList.length > 0 && typeof argList[argList.length - 1] === \"object\") {\r\n        opts = argList[argList.length - 1];\r\n        args = Array.from(argList).slice(0, argList.length - 1);\r\n      } else {\r\n        args = Array.from(argList);\r\n      }\r\n      return [opts, args];\r\n    }\r\n  \r\n    /**\r\n     * Timestamp to use for cached zone offset guesses (exposed for test)\r\n     */\r\n    var zoneOffsetTs;\r\n    /**\r\n     * Cache for zone offset guesses (exposed for test).\r\n     *\r\n     * This optimizes quickDT via guessOffsetForZone to avoid repeated calls of\r\n     * zone.offset().\r\n     */\r\n    var zoneOffsetGuessCache = {};\r\n  \r\n    /**\r\n     * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\r\n     *\r\n     * A DateTime comprises of:\r\n     * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\r\n     * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\r\n     * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\r\n     *\r\n     * Here is a brief overview of the most commonly used functionality it provides:\r\n     *\r\n     * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link DateTime.local}, {@link DateTime.utc}, and (most flexibly) {@link DateTime.fromObject}. To create one from a standard string format, use {@link DateTime.fromISO}, {@link DateTime.fromHTTP}, and {@link DateTime.fromRFC2822}. To create one from a custom string format, use {@link DateTime.fromFormat}. To create one from a native JS date, use {@link DateTime.fromJSDate}.\r\n     * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link DateTime#toObject}), use the {@link DateTime#year}, {@link DateTime#month},\r\n     * {@link DateTime#day}, {@link DateTime#hour}, {@link DateTime#minute}, {@link DateTime#second}, {@link DateTime#millisecond} accessors.\r\n     * * **Week calendar**: For ISO week calendar attributes, see the {@link DateTime#weekYear}, {@link DateTime#weekNumber}, and {@link DateTime#weekday} accessors.\r\n     * * **Configuration** See the {@link DateTime#locale} and {@link DateTime#numberingSystem} accessors.\r\n     * * **Transformation**: To transform the DateTime into other DateTimes, use {@link DateTime#set}, {@link DateTime#reconfigure}, {@link DateTime#setZone}, {@link DateTime#setLocale}, {@link DateTime.plus}, {@link DateTime#minus}, {@link DateTime#endOf}, {@link DateTime#startOf}, {@link DateTime#toUTC}, and {@link DateTime#toLocal}.\r\n     * * **Output**: To convert the DateTime to other representations, use the {@link DateTime#toRelative}, {@link DateTime#toRelativeCalendar}, {@link DateTime#toJSON}, {@link DateTime#toISO}, {@link DateTime#toHTTP}, {@link DateTime#toObject}, {@link DateTime#toRFC2822}, {@link DateTime#toString}, {@link DateTime#toLocaleString}, {@link DateTime#toFormat}, {@link DateTime#toMillis} and {@link DateTime#toJSDate}.\r\n     *\r\n     * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\r\n     */\r\n    var DateTime = /*#__PURE__*/function (_Symbol$for) {\r\n      /**\r\n       * @access private\r\n       */\r\n      function DateTime(config) {\r\n        var zone = config.zone || Settings.defaultZone;\r\n        var invalid = config.invalid || (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) || (!zone.isValid ? unsupportedZone(zone) : null);\r\n        /**\r\n         * @access private\r\n         */\r\n        this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\r\n        var c = null,\r\n          o = null;\r\n        if (!invalid) {\r\n          var unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\r\n          if (unchanged) {\r\n            var _ref = [config.old.c, config.old.o];\r\n            c = _ref[0];\r\n            o = _ref[1];\r\n          } else {\r\n            // If an offset has been passed and we have not been called from\r\n            // clone(), we can trust it and avoid the offset calculation.\r\n            var ot = isNumber(config.o) && !config.old ? config.o : zone.offset(this.ts);\r\n            c = tsToObj(this.ts, ot);\r\n            invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\r\n            c = invalid ? null : c;\r\n            o = invalid ? null : ot;\r\n          }\r\n        }\r\n  \r\n        /**\r\n         * @access private\r\n         */\r\n        this._zone = zone;\r\n        /**\r\n         * @access private\r\n         */\r\n        this.loc = config.loc || Locale.create();\r\n        /**\r\n         * @access private\r\n         */\r\n        this.invalid = invalid;\r\n        /**\r\n         * @access private\r\n         */\r\n        this.weekData = null;\r\n        /**\r\n         * @access private\r\n         */\r\n        this.localWeekData = null;\r\n        /**\r\n         * @access private\r\n         */\r\n        this.c = c;\r\n        /**\r\n         * @access private\r\n         */\r\n        this.o = o;\r\n        /**\r\n         * @access private\r\n         */\r\n        this.isLuxonDateTime = true;\r\n      }\r\n  \r\n      // CONSTRUCT\r\n  \r\n      /**\r\n       * Create a DateTime for the current instant, in the system's time zone.\r\n       *\r\n       * Use Settings to override these default values if needed.\r\n       * @example DateTime.now().toISO() //~> now in the ISO format\r\n       * @return {DateTime}\r\n       */\r\n      DateTime.now = function now() {\r\n        return new DateTime({});\r\n      }\r\n  \r\n      /**\r\n       * Create a local DateTime\r\n       * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\r\n       * @param {number} [month=1] - The month, 1-indexed\r\n       * @param {number} [day=1] - The day of the month, 1-indexed\r\n       * @param {number} [hour=0] - The hour of the day, in 24-hour time\r\n       * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\r\n       * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\r\n       * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\r\n       * @example DateTime.local()                                  //~> now\r\n       * @example DateTime.local({ zone: \"America/New_York\" })      //~> now, in US east coast time\r\n       * @example DateTime.local(2017)                              //~> 2017-01-01T00:00:00\r\n       * @example DateTime.local(2017, 3)                           //~> 2017-03-01T00:00:00\r\n       * @example DateTime.local(2017, 3, 12, { locale: \"fr\" })     //~> 2017-03-12T00:00:00, with a French locale\r\n       * @example DateTime.local(2017, 3, 12, 5)                    //~> 2017-03-12T05:00:00\r\n       * @example DateTime.local(2017, 3, 12, 5, { zone: \"utc\" })   //~> 2017-03-12T05:00:00, in UTC\r\n       * @example DateTime.local(2017, 3, 12, 5, 45)                //~> 2017-03-12T05:45:00\r\n       * @example DateTime.local(2017, 3, 12, 5, 45, 10)            //~> 2017-03-12T05:45:10\r\n       * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765)       //~> 2017-03-12T05:45:10.765\r\n       * @return {DateTime}\r\n       */;\r\n      DateTime.local = function local() {\r\n        var _lastOpts = lastOpts(arguments),\r\n          opts = _lastOpts[0],\r\n          args = _lastOpts[1],\r\n          year = args[0],\r\n          month = args[1],\r\n          day = args[2],\r\n          hour = args[3],\r\n          minute = args[4],\r\n          second = args[5],\r\n          millisecond = args[6];\r\n        return quickDT({\r\n          year: year,\r\n          month: month,\r\n          day: day,\r\n          hour: hour,\r\n          minute: minute,\r\n          second: second,\r\n          millisecond: millisecond\r\n        }, opts);\r\n      }\r\n  \r\n      /**\r\n       * Create a DateTime in UTC\r\n       * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\r\n       * @param {number} [month=1] - The month, 1-indexed\r\n       * @param {number} [day=1] - The day of the month\r\n       * @param {number} [hour=0] - The hour of the day, in 24-hour time\r\n       * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\r\n       * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\r\n       * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\r\n       * @param {Object} options - configuration options for the DateTime\r\n       * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\r\n       * @param {string} [options.outputCalendar] - the output calendar to set on the resulting DateTime instance\r\n       * @param {string} [options.numberingSystem] - the numbering system to set on the resulting DateTime instance\r\n       * @param {string} [options.weekSettings] - the week settings to set on the resulting DateTime instance\r\n       * @example DateTime.utc()                                              //~> now\r\n       * @example DateTime.utc(2017)                                          //~> 2017-01-01T00:00:00Z\r\n       * @example DateTime.utc(2017, 3)                                       //~> 2017-03-01T00:00:00Z\r\n       * @example DateTime.utc(2017, 3, 12)                                   //~> 2017-03-12T00:00:00Z\r\n       * @example DateTime.utc(2017, 3, 12, 5)                                //~> 2017-03-12T05:00:00Z\r\n       * @example DateTime.utc(2017, 3, 12, 5, 45)                            //~> 2017-03-12T05:45:00Z\r\n       * @example DateTime.utc(2017, 3, 12, 5, 45, { locale: \"fr\" })          //~> 2017-03-12T05:45:00Z with a French locale\r\n       * @example DateTime.utc(2017, 3, 12, 5, 45, 10)                        //~> 2017-03-12T05:45:10Z\r\n       * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765, { locale: \"fr\" }) //~> 2017-03-12T05:45:10.765Z with a French locale\r\n       * @return {DateTime}\r\n       */;\r\n      DateTime.utc = function utc() {\r\n        var _lastOpts2 = lastOpts(arguments),\r\n          opts = _lastOpts2[0],\r\n          args = _lastOpts2[1],\r\n          year = args[0],\r\n          month = args[1],\r\n          day = args[2],\r\n          hour = args[3],\r\n          minute = args[4],\r\n          second = args[5],\r\n          millisecond = args[6];\r\n        opts.zone = FixedOffsetZone.utcInstance;\r\n        return quickDT({\r\n          year: year,\r\n          month: month,\r\n          day: day,\r\n          hour: hour,\r\n          minute: minute,\r\n          second: second,\r\n          millisecond: millisecond\r\n        }, opts);\r\n      }\r\n  \r\n      /**\r\n       * Create a DateTime from a JavaScript Date object. Uses the default zone.\r\n       * @param {Date} date - a JavaScript Date object\r\n       * @param {Object} options - configuration options for the DateTime\r\n       * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\r\n       * @return {DateTime}\r\n       */;\r\n      DateTime.fromJSDate = function fromJSDate(date, options) {\r\n        if (options === void 0) {\r\n          options = {};\r\n        }\r\n        var ts = isDate(date) ? date.valueOf() : NaN;\r\n        if (Number.isNaN(ts)) {\r\n          return DateTime.invalid(\"invalid input\");\r\n        }\r\n        var zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\r\n        if (!zoneToUse.isValid) {\r\n          return DateTime.invalid(unsupportedZone(zoneToUse));\r\n        }\r\n        return new DateTime({\r\n          ts: ts,\r\n          zone: zoneToUse,\r\n          loc: Locale.fromObject(options)\r\n        });\r\n      }\r\n  \r\n      /**\r\n       * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\r\n       * @param {number} milliseconds - a number of milliseconds since 1970 UTC\r\n       * @param {Object} options - configuration options for the DateTime\r\n       * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\r\n       * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\r\n       * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\r\n       * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\r\n       * @param {string} options.weekSettings - the week settings to set on the resulting DateTime instance\r\n       * @return {DateTime}\r\n       */;\r\n      DateTime.fromMillis = function fromMillis(milliseconds, options) {\r\n        if (options === void 0) {\r\n          options = {};\r\n        }\r\n        if (!isNumber(milliseconds)) {\r\n          throw new InvalidArgumentError(\"fromMillis requires a numerical input, but received a \" + typeof milliseconds + \" with value \" + milliseconds);\r\n        } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\r\n          // this isn't perfect because we can still end up out of range because of additional shifting, but it's a start\r\n          return DateTime.invalid(\"Timestamp out of range\");\r\n        } else {\r\n          return new DateTime({\r\n            ts: milliseconds,\r\n            zone: normalizeZone(options.zone, Settings.defaultZone),\r\n            loc: Locale.fromObject(options)\r\n          });\r\n        }\r\n      }\r\n  \r\n      /**\r\n       * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\r\n       * @param {number} seconds - a number of seconds since 1970 UTC\r\n       * @param {Object} options - configuration options for the DateTime\r\n       * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\r\n       * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\r\n       * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\r\n       * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\r\n       * @param {string} options.weekSettings - the week settings to set on the resulting DateTime instance\r\n       * @return {DateTime}\r\n       */;\r\n      DateTime.fromSeconds = function fromSeconds(seconds, options) {\r\n        if (options === void 0) {\r\n          options = {};\r\n        }\r\n        if (!isNumber(seconds)) {\r\n          throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\r\n        } else {\r\n          return new DateTime({\r\n            ts: seconds * 1000,\r\n            zone: normalizeZone(options.zone, Settings.defaultZone),\r\n            loc: Locale.fromObject(options)\r\n          });\r\n        }\r\n      }\r\n  \r\n      /**\r\n       * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.\r\n       * @param {Object} obj - the object to create the DateTime from\r\n       * @param {number} obj.year - a year, such as 1987\r\n       * @param {number} obj.month - a month, 1-12\r\n       * @param {number} obj.day - a day of the month, 1-31, depending on the month\r\n       * @param {number} obj.ordinal - day of the year, 1-365 or 366\r\n       * @param {number} obj.weekYear - an ISO week year\r\n       * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\r\n       * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\r\n       * @param {number} obj.localWeekYear - a week year, according to the locale\r\n       * @param {number} obj.localWeekNumber - a week number, between 1 and 52 or 53, depending on the year, according to the locale\r\n       * @param {number} obj.localWeekday - a weekday, 1-7, where 1 is the first and 7 is the last day of the week, according to the locale\r\n       * @param {number} obj.hour - hour of the day, 0-23\r\n       * @param {number} obj.minute - minute of the hour, 0-59\r\n       * @param {number} obj.second - second of the minute, 0-59\r\n       * @param {number} obj.millisecond - millisecond of the second, 0-999\r\n       * @param {Object} opts - options for creating this DateTime\r\n       * @param {string|Zone} [opts.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\r\n       * @param {string} [opts.locale='system\\'s locale'] - a locale to set on the resulting DateTime instance\r\n       * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\r\n       * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\r\n       * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\r\n       * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\r\n       * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\r\n       * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\r\n       * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'utc' }),\r\n       * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'local' })\r\n       * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'America/New_York' })\r\n       * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\r\n       * @example DateTime.fromObject({ localWeekYear: 2022, localWeekNumber: 1, localWeekday: 1 }, { locale: \"en-US\" }).toISODate() //=> '2021-12-26'\r\n       * @return {DateTime}\r\n       */;\r\n      DateTime.fromObject = function fromObject(obj, opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        obj = obj || {};\r\n        var zoneToUse = normalizeZone(opts.zone, Settings.defaultZone);\r\n        if (!zoneToUse.isValid) {\r\n          return DateTime.invalid(unsupportedZone(zoneToUse));\r\n        }\r\n        var loc = Locale.fromObject(opts);\r\n        var normalized = normalizeObject(obj, normalizeUnitWithLocalWeeks);\r\n        var _usesLocalWeekValues = usesLocalWeekValues(normalized, loc),\r\n          minDaysInFirstWeek = _usesLocalWeekValues.minDaysInFirstWeek,\r\n          startOfWeek = _usesLocalWeekValues.startOfWeek;\r\n        var tsNow = Settings.now(),\r\n          offsetProvis = !isUndefined(opts.specificOffset) ? opts.specificOffset : zoneToUse.offset(tsNow),\r\n          containsOrdinal = !isUndefined(normalized.ordinal),\r\n          containsGregorYear = !isUndefined(normalized.year),\r\n          containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\r\n          containsGregor = containsGregorYear || containsGregorMD,\r\n          definiteWeekDef = normalized.weekYear || normalized.weekNumber;\r\n  \r\n        // cases:\r\n        // just a weekday -> this week's instance of that weekday, no worries\r\n        // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\r\n        // (gregorian month or day) + ordinal -> error\r\n        // otherwise just use weeks or ordinals or gregorian, depending on what's specified\r\n  \r\n        if ((containsGregor || containsOrdinal) && definiteWeekDef) {\r\n          throw new ConflictingSpecificationError(\"Can't mix weekYear/weekNumber units with year/month/day or ordinals\");\r\n        }\r\n        if (containsGregorMD && containsOrdinal) {\r\n          throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\r\n        }\r\n        var useWeekData = definiteWeekDef || normalized.weekday && !containsGregor;\r\n  \r\n        // configure ourselves to deal with gregorian dates or week stuff\r\n        var units,\r\n          defaultValues,\r\n          objNow = tsToObj(tsNow, offsetProvis);\r\n        if (useWeekData) {\r\n          units = orderedWeekUnits;\r\n          defaultValues = defaultWeekUnitValues;\r\n          objNow = gregorianToWeek(objNow, minDaysInFirstWeek, startOfWeek);\r\n        } else if (containsOrdinal) {\r\n          units = orderedOrdinalUnits;\r\n          defaultValues = defaultOrdinalUnitValues;\r\n          objNow = gregorianToOrdinal(objNow);\r\n        } else {\r\n          units = orderedUnits;\r\n          defaultValues = defaultUnitValues;\r\n        }\r\n  \r\n        // set default values for missing stuff\r\n        var foundFirst = false;\r\n        for (var _iterator2 = _createForOfIteratorHelperLoose(units), _step2; !(_step2 = _iterator2()).done;) {\r\n          var u = _step2.value;\r\n          var v = normalized[u];\r\n          if (!isUndefined(v)) {\r\n            foundFirst = true;\r\n          } else if (foundFirst) {\r\n            normalized[u] = defaultValues[u];\r\n          } else {\r\n            normalized[u] = objNow[u];\r\n          }\r\n        }\r\n  \r\n        // make sure the values we have are in range\r\n        var higherOrderInvalid = useWeekData ? hasInvalidWeekData(normalized, minDaysInFirstWeek, startOfWeek) : containsOrdinal ? hasInvalidOrdinalData(normalized) : hasInvalidGregorianData(normalized),\r\n          invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\r\n        if (invalid) {\r\n          return DateTime.invalid(invalid);\r\n        }\r\n  \r\n        // compute the actual time\r\n        var gregorian = useWeekData ? weekToGregorian(normalized, minDaysInFirstWeek, startOfWeek) : containsOrdinal ? ordinalToGregorian(normalized) : normalized,\r\n          _objToTS2 = objToTS(gregorian, offsetProvis, zoneToUse),\r\n          tsFinal = _objToTS2[0],\r\n          offsetFinal = _objToTS2[1],\r\n          inst = new DateTime({\r\n            ts: tsFinal,\r\n            zone: zoneToUse,\r\n            o: offsetFinal,\r\n            loc: loc\r\n          });\r\n  \r\n        // gregorian data + weekday serves only to validate\r\n        if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\r\n          return DateTime.invalid(\"mismatched weekday\", \"you can't specify both a weekday of \" + normalized.weekday + \" and a date of \" + inst.toISO());\r\n        }\r\n        if (!inst.isValid) {\r\n          return DateTime.invalid(inst.invalid);\r\n        }\r\n        return inst;\r\n      }\r\n  \r\n      /**\r\n       * Create a DateTime from an ISO 8601 string\r\n       * @param {string} text - the ISO string\r\n       * @param {Object} opts - options to affect the creation\r\n       * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\r\n       * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\r\n       * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\r\n       * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance\r\n       * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance\r\n       * @param {string} [opts.weekSettings] - the week settings to set on the resulting DateTime instance\r\n       * @example DateTime.fromISO('2016-05-25T09:08:34.123')\r\n       * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\r\n       * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\r\n       * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\r\n       * @example DateTime.fromISO('2016-W05-4')\r\n       * @return {DateTime}\r\n       */;\r\n      DateTime.fromISO = function fromISO(text, opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        var _parseISODate = parseISODate(text),\r\n          vals = _parseISODate[0],\r\n          parsedZone = _parseISODate[1];\r\n        return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\r\n      }\r\n  \r\n      /**\r\n       * Create a DateTime from an RFC 2822 string\r\n       * @param {string} text - the RFC 2822 string\r\n       * @param {Object} opts - options to affect the creation\r\n       * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\r\n       * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\r\n       * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\r\n       * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\r\n       * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\r\n       * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\r\n       * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\r\n       * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\r\n       * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\r\n       * @return {DateTime}\r\n       */;\r\n      DateTime.fromRFC2822 = function fromRFC2822(text, opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        var _parseRFC2822Date = parseRFC2822Date(text),\r\n          vals = _parseRFC2822Date[0],\r\n          parsedZone = _parseRFC2822Date[1];\r\n        return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\r\n      }\r\n  \r\n      /**\r\n       * Create a DateTime from an HTTP header date\r\n       * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\r\n       * @param {string} text - the HTTP header date\r\n       * @param {Object} opts - options to affect the creation\r\n       * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\r\n       * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\r\n       * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\r\n       * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\r\n       * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\r\n       * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\r\n       * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\r\n       * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\r\n       * @example DateTime.fromHTTP('Sun Nov  6 08:49:37 1994')\r\n       * @return {DateTime}\r\n       */;\r\n      DateTime.fromHTTP = function fromHTTP(text, opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        var _parseHTTPDate = parseHTTPDate(text),\r\n          vals = _parseHTTPDate[0],\r\n          parsedZone = _parseHTTPDate[1];\r\n        return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\r\n      }\r\n  \r\n      /**\r\n       * Create a DateTime from an input string and format string.\r\n       * Defaults to en-US if no locale has been specified, regardless of the system's locale. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/parsing?id=table-of-tokens).\r\n       * @param {string} text - the string to parse\r\n       * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\r\n       * @param {Object} opts - options to affect the creation\r\n       * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\r\n       * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\r\n       * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\r\n       * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\r\n       * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\r\n       * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\r\n       * @return {DateTime}\r\n       */;\r\n      DateTime.fromFormat = function fromFormat(text, fmt, opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        if (isUndefined(text) || isUndefined(fmt)) {\r\n          throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\r\n        }\r\n        var _opts = opts,\r\n          _opts$locale = _opts.locale,\r\n          locale = _opts$locale === void 0 ? null : _opts$locale,\r\n          _opts$numberingSystem = _opts.numberingSystem,\r\n          numberingSystem = _opts$numberingSystem === void 0 ? null : _opts$numberingSystem,\r\n          localeToUse = Locale.fromOpts({\r\n            locale: locale,\r\n            numberingSystem: numberingSystem,\r\n            defaultToEN: true\r\n          }),\r\n          _parseFromTokens = parseFromTokens(localeToUse, text, fmt),\r\n          vals = _parseFromTokens[0],\r\n          parsedZone = _parseFromTokens[1],\r\n          specificOffset = _parseFromTokens[2],\r\n          invalid = _parseFromTokens[3];\r\n        if (invalid) {\r\n          return DateTime.invalid(invalid);\r\n        } else {\r\n          return parseDataToDateTime(vals, parsedZone, opts, \"format \" + fmt, text, specificOffset);\r\n        }\r\n      }\r\n  \r\n      /**\r\n       * @deprecated use fromFormat instead\r\n       */;\r\n      DateTime.fromString = function fromString(text, fmt, opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        return DateTime.fromFormat(text, fmt, opts);\r\n      }\r\n  \r\n      /**\r\n       * Create a DateTime from a SQL date, time, or datetime\r\n       * Defaults to en-US if no locale has been specified, regardless of the system's locale\r\n       * @param {string} text - the string to parse\r\n       * @param {Object} opts - options to affect the creation\r\n       * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\r\n       * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\r\n       * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\r\n       * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\r\n       * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\r\n       * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\r\n       * @example DateTime.fromSQL('2017-05-15')\r\n       * @example DateTime.fromSQL('2017-05-15 09:12:34')\r\n       * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\r\n       * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\r\n       * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\r\n       * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\r\n       * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\r\n       * @example DateTime.fromSQL('09:12:34.342')\r\n       * @return {DateTime}\r\n       */;\r\n      DateTime.fromSQL = function fromSQL(text, opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        var _parseSQL = parseSQL(text),\r\n          vals = _parseSQL[0],\r\n          parsedZone = _parseSQL[1];\r\n        return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\r\n      }\r\n  \r\n      /**\r\n       * Create an invalid DateTime.\r\n       * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent.\r\n       * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\r\n       * @return {DateTime}\r\n       */;\r\n      DateTime.invalid = function invalid(reason, explanation) {\r\n        if (explanation === void 0) {\r\n          explanation = null;\r\n        }\r\n        if (!reason) {\r\n          throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\r\n        }\r\n        var invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\r\n        if (Settings.throwOnInvalid) {\r\n          throw new InvalidDateTimeError(invalid);\r\n        } else {\r\n          return new DateTime({\r\n            invalid: invalid\r\n          });\r\n        }\r\n      }\r\n  \r\n      /**\r\n       * Check if an object is an instance of DateTime. Works across context boundaries\r\n       * @param {object} o\r\n       * @return {boolean}\r\n       */;\r\n      DateTime.isDateTime = function isDateTime(o) {\r\n        return o && o.isLuxonDateTime || false;\r\n      }\r\n  \r\n      /**\r\n       * Produce the format string for a set of options\r\n       * @param formatOpts\r\n       * @param localeOpts\r\n       * @returns {string}\r\n       */;\r\n      DateTime.parseFormatForOpts = function parseFormatForOpts(formatOpts, localeOpts) {\r\n        if (localeOpts === void 0) {\r\n          localeOpts = {};\r\n        }\r\n        var tokenList = formatOptsToTokens(formatOpts, Locale.fromObject(localeOpts));\r\n        return !tokenList ? null : tokenList.map(function (t) {\r\n          return t ? t.val : null;\r\n        }).join(\"\");\r\n      }\r\n  \r\n      /**\r\n       * Produce the the fully expanded format token for the locale\r\n       * Does NOT quote characters, so quoted tokens will not round trip correctly\r\n       * @param fmt\r\n       * @param localeOpts\r\n       * @returns {string}\r\n       */;\r\n      DateTime.expandFormat = function expandFormat(fmt, localeOpts) {\r\n        if (localeOpts === void 0) {\r\n          localeOpts = {};\r\n        }\r\n        var expanded = expandMacroTokens(Formatter.parseFormat(fmt), Locale.fromObject(localeOpts));\r\n        return expanded.map(function (t) {\r\n          return t.val;\r\n        }).join(\"\");\r\n      };\r\n      DateTime.resetCache = function resetCache() {\r\n        zoneOffsetTs = undefined;\r\n        zoneOffsetGuessCache = {};\r\n      }\r\n  \r\n      // INFO\r\n  \r\n      /**\r\n       * Get the value of unit.\r\n       * @param {string} unit - a unit such as 'minute' or 'day'\r\n       * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\r\n       * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\r\n       * @return {number}\r\n       */;\r\n      var _proto = DateTime.prototype;\r\n      _proto.get = function get(unit) {\r\n        return this[unit];\r\n      }\r\n  \r\n      /**\r\n       * Returns whether the DateTime is valid. Invalid DateTimes occur when:\r\n       * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\r\n       * * The DateTime was created by an operation on another invalid date\r\n       * @type {boolean}\r\n       */;\r\n      /**\r\n       * Get those DateTimes which have the same local time as this DateTime, but a different offset from UTC\r\n       * in this DateTime's zone. During DST changes local time can be ambiguous, for example\r\n       * `2023-10-29T02:30:00` in `Europe/Berlin` can have offset `+01:00` or `+02:00`.\r\n       * This method will return both possible DateTimes if this DateTime's local time is ambiguous.\r\n       * @returns {DateTime[]}\r\n       */\r\n      _proto.getPossibleOffsets = function getPossibleOffsets() {\r\n        if (!this.isValid || this.isOffsetFixed) {\r\n          return [this];\r\n        }\r\n        var dayMs = 86400000;\r\n        var minuteMs = 60000;\r\n        var localTS = objToLocalTS(this.c);\r\n        var oEarlier = this.zone.offset(localTS - dayMs);\r\n        var oLater = this.zone.offset(localTS + dayMs);\r\n        var o1 = this.zone.offset(localTS - oEarlier * minuteMs);\r\n        var o2 = this.zone.offset(localTS - oLater * minuteMs);\r\n        if (o1 === o2) {\r\n          return [this];\r\n        }\r\n        var ts1 = localTS - o1 * minuteMs;\r\n        var ts2 = localTS - o2 * minuteMs;\r\n        var c1 = tsToObj(ts1, o1);\r\n        var c2 = tsToObj(ts2, o2);\r\n        if (c1.hour === c2.hour && c1.minute === c2.minute && c1.second === c2.second && c1.millisecond === c2.millisecond) {\r\n          return [clone(this, {\r\n            ts: ts1\r\n          }), clone(this, {\r\n            ts: ts2\r\n          })];\r\n        }\r\n        return [this];\r\n      }\r\n  \r\n      /**\r\n       * Returns true if this DateTime is in a leap year, false otherwise\r\n       * @example DateTime.local(2016).isInLeapYear //=> true\r\n       * @example DateTime.local(2013).isInLeapYear //=> false\r\n       * @type {boolean}\r\n       */;\r\n      /**\r\n       * Returns the resolved Intl options for this DateTime.\r\n       * This is useful in understanding the behavior of formatting methods\r\n       * @param {Object} opts - the same options as toLocaleString\r\n       * @return {Object}\r\n       */\r\n      _proto.resolvedLocaleOptions = function resolvedLocaleOptions(opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        var _Formatter$create$res = Formatter.create(this.loc.clone(opts), opts).resolvedOptions(this),\r\n          locale = _Formatter$create$res.locale,\r\n          numberingSystem = _Formatter$create$res.numberingSystem,\r\n          calendar = _Formatter$create$res.calendar;\r\n        return {\r\n          locale: locale,\r\n          numberingSystem: numberingSystem,\r\n          outputCalendar: calendar\r\n        };\r\n      }\r\n  \r\n      // TRANSFORM\r\n  \r\n      /**\r\n       * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\r\n       *\r\n       * Equivalent to {@link DateTime#setZone}('utc')\r\n       * @param {number} [offset=0] - optionally, an offset from UTC in minutes\r\n       * @param {Object} [opts={}] - options to pass to `setZone()`\r\n       * @return {DateTime}\r\n       */;\r\n      _proto.toUTC = function toUTC(offset, opts) {\r\n        if (offset === void 0) {\r\n          offset = 0;\r\n        }\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        return this.setZone(FixedOffsetZone.instance(offset), opts);\r\n      }\r\n  \r\n      /**\r\n       * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\r\n       *\r\n       * Equivalent to `setZone('local')`\r\n       * @return {DateTime}\r\n       */;\r\n      _proto.toLocal = function toLocal() {\r\n        return this.setZone(Settings.defaultZone);\r\n      }\r\n  \r\n      /**\r\n       * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\r\n       *\r\n       * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link DateTime#plus}. You may wish to use {@link DateTime#toLocal} and {@link DateTime#toUTC} which provide simple convenience wrappers for commonly used zones.\r\n       * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link DateTime#Zone} class.\r\n       * @param {Object} opts - options\r\n       * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\r\n       * @return {DateTime}\r\n       */;\r\n      _proto.setZone = function setZone(zone, _temp) {\r\n        var _ref2 = _temp === void 0 ? {} : _temp,\r\n          _ref2$keepLocalTime = _ref2.keepLocalTime,\r\n          keepLocalTime = _ref2$keepLocalTime === void 0 ? false : _ref2$keepLocalTime,\r\n          _ref2$keepCalendarTim = _ref2.keepCalendarTime,\r\n          keepCalendarTime = _ref2$keepCalendarTim === void 0 ? false : _ref2$keepCalendarTim;\r\n        zone = normalizeZone(zone, Settings.defaultZone);\r\n        if (zone.equals(this.zone)) {\r\n          return this;\r\n        } else if (!zone.isValid) {\r\n          return DateTime.invalid(unsupportedZone(zone));\r\n        } else {\r\n          var newTS = this.ts;\r\n          if (keepLocalTime || keepCalendarTime) {\r\n            var offsetGuess = zone.offset(this.ts);\r\n            var asObj = this.toObject();\r\n            var _objToTS3 = objToTS(asObj, offsetGuess, zone);\r\n            newTS = _objToTS3[0];\r\n          }\r\n          return clone(this, {\r\n            ts: newTS,\r\n            zone: zone\r\n          });\r\n        }\r\n      }\r\n  \r\n      /**\r\n       * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\r\n       * @param {Object} properties - the properties to set\r\n       * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\r\n       * @return {DateTime}\r\n       */;\r\n      _proto.reconfigure = function reconfigure(_temp2) {\r\n        var _ref3 = _temp2 === void 0 ? {} : _temp2,\r\n          locale = _ref3.locale,\r\n          numberingSystem = _ref3.numberingSystem,\r\n          outputCalendar = _ref3.outputCalendar;\r\n        var loc = this.loc.clone({\r\n          locale: locale,\r\n          numberingSystem: numberingSystem,\r\n          outputCalendar: outputCalendar\r\n        });\r\n        return clone(this, {\r\n          loc: loc\r\n        });\r\n      }\r\n  \r\n      /**\r\n       * \"Set\" the locale. Returns a newly-constructed DateTime.\r\n       * Just a convenient alias for reconfigure({ locale })\r\n       * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\r\n       * @return {DateTime}\r\n       */;\r\n      _proto.setLocale = function setLocale(locale) {\r\n        return this.reconfigure({\r\n          locale: locale\r\n        });\r\n      }\r\n  \r\n      /**\r\n       * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\r\n       * You can only set units with this method; for \"setting\" metadata, see {@link DateTime#reconfigure} and {@link DateTime#setZone}.\r\n       *\r\n       * This method also supports setting locale-based week units, i.e. `localWeekday`, `localWeekNumber` and `localWeekYear`.\r\n       * They cannot be mixed with ISO-week units like `weekday`.\r\n       * @param {Object} values - a mapping of units to numbers\r\n       * @example dt.set({ year: 2017 })\r\n       * @example dt.set({ hour: 8, minute: 30 })\r\n       * @example dt.set({ weekday: 5 })\r\n       * @example dt.set({ year: 2005, ordinal: 234 })\r\n       * @return {DateTime}\r\n       */;\r\n      _proto.set = function set(values) {\r\n        if (!this.isValid) return this;\r\n        var normalized = normalizeObject(values, normalizeUnitWithLocalWeeks);\r\n        var _usesLocalWeekValues2 = usesLocalWeekValues(normalized, this.loc),\r\n          minDaysInFirstWeek = _usesLocalWeekValues2.minDaysInFirstWeek,\r\n          startOfWeek = _usesLocalWeekValues2.startOfWeek;\r\n        var settingWeekStuff = !isUndefined(normalized.weekYear) || !isUndefined(normalized.weekNumber) || !isUndefined(normalized.weekday),\r\n          containsOrdinal = !isUndefined(normalized.ordinal),\r\n          containsGregorYear = !isUndefined(normalized.year),\r\n          containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\r\n          containsGregor = containsGregorYear || containsGregorMD,\r\n          definiteWeekDef = normalized.weekYear || normalized.weekNumber;\r\n        if ((containsGregor || containsOrdinal) && definiteWeekDef) {\r\n          throw new ConflictingSpecificationError(\"Can't mix weekYear/weekNumber units with year/month/day or ordinals\");\r\n        }\r\n        if (containsGregorMD && containsOrdinal) {\r\n          throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\r\n        }\r\n        var mixed;\r\n        if (settingWeekStuff) {\r\n          mixed = weekToGregorian(_extends({}, gregorianToWeek(this.c, minDaysInFirstWeek, startOfWeek), normalized), minDaysInFirstWeek, startOfWeek);\r\n        } else if (!isUndefined(normalized.ordinal)) {\r\n          mixed = ordinalToGregorian(_extends({}, gregorianToOrdinal(this.c), normalized));\r\n        } else {\r\n          mixed = _extends({}, this.toObject(), normalized);\r\n  \r\n          // if we didn't set the day but we ended up on an overflow date,\r\n          // use the last day of the right month\r\n          if (isUndefined(normalized.day)) {\r\n            mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\r\n          }\r\n        }\r\n        var _objToTS4 = objToTS(mixed, this.o, this.zone),\r\n          ts = _objToTS4[0],\r\n          o = _objToTS4[1];\r\n        return clone(this, {\r\n          ts: ts,\r\n          o: o\r\n        });\r\n      }\r\n  \r\n      /**\r\n       * Add a period of time to this DateTime and return the resulting DateTime\r\n       *\r\n       * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\r\n       * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\r\n       * @example DateTime.now().plus(123) //~> in 123 milliseconds\r\n       * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes\r\n       * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow\r\n       * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday\r\n       * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\r\n       * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\r\n       * @return {DateTime}\r\n       */;\r\n      _proto.plus = function plus(duration) {\r\n        if (!this.isValid) return this;\r\n        var dur = Duration.fromDurationLike(duration);\r\n        return clone(this, adjustTime(this, dur));\r\n      }\r\n  \r\n      /**\r\n       * Subtract a period of time to this DateTime and return the resulting DateTime\r\n       * See {@link DateTime#plus}\r\n       * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\r\n       @return {DateTime}\r\n       */;\r\n      _proto.minus = function minus(duration) {\r\n        if (!this.isValid) return this;\r\n        var dur = Duration.fromDurationLike(duration).negate();\r\n        return clone(this, adjustTime(this, dur));\r\n      }\r\n  \r\n      /**\r\n       * \"Set\" this DateTime to the beginning of a unit of time.\r\n       * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\r\n       * @param {Object} opts - options\r\n       * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\r\n       * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\r\n       * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\r\n       * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays\r\n       * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\r\n       * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\r\n       * @return {DateTime}\r\n       */;\r\n      _proto.startOf = function startOf(unit, _temp3) {\r\n        var _ref4 = _temp3 === void 0 ? {} : _temp3,\r\n          _ref4$useLocaleWeeks = _ref4.useLocaleWeeks,\r\n          useLocaleWeeks = _ref4$useLocaleWeeks === void 0 ? false : _ref4$useLocaleWeeks;\r\n        if (!this.isValid) return this;\r\n        var o = {},\r\n          normalizedUnit = Duration.normalizeUnit(unit);\r\n        switch (normalizedUnit) {\r\n          case \"years\":\r\n            o.month = 1;\r\n          // falls through\r\n          case \"quarters\":\r\n          case \"months\":\r\n            o.day = 1;\r\n          // falls through\r\n          case \"weeks\":\r\n          case \"days\":\r\n            o.hour = 0;\r\n          // falls through\r\n          case \"hours\":\r\n            o.minute = 0;\r\n          // falls through\r\n          case \"minutes\":\r\n            o.second = 0;\r\n          // falls through\r\n          case \"seconds\":\r\n            o.millisecond = 0;\r\n            break;\r\n          // no default, invalid units throw in normalizeUnit()\r\n        }\r\n  \r\n        if (normalizedUnit === \"weeks\") {\r\n          if (useLocaleWeeks) {\r\n            var startOfWeek = this.loc.getStartOfWeek();\r\n            var weekday = this.weekday;\r\n            if (weekday < startOfWeek) {\r\n              o.weekNumber = this.weekNumber - 1;\r\n            }\r\n            o.weekday = startOfWeek;\r\n          } else {\r\n            o.weekday = 1;\r\n          }\r\n        }\r\n        if (normalizedUnit === \"quarters\") {\r\n          var q = Math.ceil(this.month / 3);\r\n          o.month = (q - 1) * 3 + 1;\r\n        }\r\n        return this.set(o);\r\n      }\r\n  \r\n      /**\r\n       * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\r\n       * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\r\n       * @param {Object} opts - options\r\n       * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\r\n       * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\r\n       * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\r\n       * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays\r\n       * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\r\n       * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\r\n       * @return {DateTime}\r\n       */;\r\n      _proto.endOf = function endOf(unit, opts) {\r\n        var _this$plus;\r\n        return this.isValid ? this.plus((_this$plus = {}, _this$plus[unit] = 1, _this$plus)).startOf(unit, opts).minus(1) : this;\r\n      }\r\n  \r\n      // OUTPUT\r\n  \r\n      /**\r\n       * Returns a string representation of this DateTime formatted according to the specified format string.\r\n       * **You may not want this.** See {@link DateTime#toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens).\r\n       * Defaults to en-US if no locale has been specified, regardless of the system's locale.\r\n       * @param {string} fmt - the format string\r\n       * @param {Object} opts - opts to override the configuration options on this DateTime\r\n       * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\r\n       * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\r\n       * @example DateTime.now().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\r\n       * @example DateTime.now().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\r\n       * @return {string}\r\n       */;\r\n      _proto.toFormat = function toFormat(fmt, opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        return this.isValid ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt) : INVALID;\r\n      }\r\n  \r\n      /**\r\n       * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\r\n       * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\r\n       * of the DateTime in the assigned locale.\r\n       * Defaults to the system's locale if no locale has been specified\r\n       * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\r\n       * @param formatOpts {Object} - Intl.DateTimeFormat constructor options and configuration options\r\n       * @param {Object} opts - opts to override the configuration options on this DateTime\r\n       * @example DateTime.now().toLocaleString(); //=> 4/20/2017\r\n       * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\r\n       * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\r\n       * @example DateTime.now().toLocaleString(DateTime.DATE_FULL, { locale: 'fr' }); //=> '28 août 2022'\r\n       * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\r\n       * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\r\n       * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\r\n       * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\r\n       * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hourCycle: 'h23' }); //=> '11:32'\r\n       * @return {string}\r\n       */;\r\n      _proto.toLocaleString = function toLocaleString(formatOpts, opts) {\r\n        if (formatOpts === void 0) {\r\n          formatOpts = DATE_SHORT;\r\n        }\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        return this.isValid ? Formatter.create(this.loc.clone(opts), formatOpts).formatDateTime(this) : INVALID;\r\n      }\r\n  \r\n      /**\r\n       * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\r\n       * Defaults to the system's locale if no locale has been specified\r\n       * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\r\n       * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\r\n       * @example DateTime.now().toLocaleParts(); //=> [\r\n       *                                   //=>   { type: 'day', value: '25' },\r\n       *                                   //=>   { type: 'literal', value: '/' },\r\n       *                                   //=>   { type: 'month', value: '05' },\r\n       *                                   //=>   { type: 'literal', value: '/' },\r\n       *                                   //=>   { type: 'year', value: '1982' }\r\n       *                                   //=> ]\r\n       */;\r\n      _proto.toLocaleParts = function toLocaleParts(opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        return this.isValid ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this) : [];\r\n      }\r\n  \r\n      /**\r\n       * Returns an ISO 8601-compliant string representation of this DateTime\r\n       * @param {Object} opts - options\r\n       * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\r\n       * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\r\n       * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\r\n       * @param {boolean} [opts.extendedZone=false] - add the time zone format extension\r\n       * @param {string} [opts.format='extended'] - choose between the basic and extended format\r\n       * @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\r\n       * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'\r\n       * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\r\n       * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\r\n       * @return {string}\r\n       */;\r\n      _proto.toISO = function toISO(_temp4) {\r\n        var _ref5 = _temp4 === void 0 ? {} : _temp4,\r\n          _ref5$format = _ref5.format,\r\n          format = _ref5$format === void 0 ? \"extended\" : _ref5$format,\r\n          _ref5$suppressSeconds = _ref5.suppressSeconds,\r\n          suppressSeconds = _ref5$suppressSeconds === void 0 ? false : _ref5$suppressSeconds,\r\n          _ref5$suppressMillise = _ref5.suppressMilliseconds,\r\n          suppressMilliseconds = _ref5$suppressMillise === void 0 ? false : _ref5$suppressMillise,\r\n          _ref5$includeOffset = _ref5.includeOffset,\r\n          includeOffset = _ref5$includeOffset === void 0 ? true : _ref5$includeOffset,\r\n          _ref5$extendedZone = _ref5.extendedZone,\r\n          extendedZone = _ref5$extendedZone === void 0 ? false : _ref5$extendedZone;\r\n        if (!this.isValid) {\r\n          return null;\r\n        }\r\n        var ext = format === \"extended\";\r\n        var c = _toISODate(this, ext);\r\n        c += \"T\";\r\n        c += _toISOTime(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone);\r\n        return c;\r\n      }\r\n  \r\n      /**\r\n       * Returns an ISO 8601-compliant string representation of this DateTime's date component\r\n       * @param {Object} opts - options\r\n       * @param {string} [opts.format='extended'] - choose between the basic and extended format\r\n       * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\r\n       * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\r\n       * @return {string}\r\n       */;\r\n      _proto.toISODate = function toISODate(_temp5) {\r\n        var _ref6 = _temp5 === void 0 ? {} : _temp5,\r\n          _ref6$format = _ref6.format,\r\n          format = _ref6$format === void 0 ? \"extended\" : _ref6$format;\r\n        if (!this.isValid) {\r\n          return null;\r\n        }\r\n        return _toISODate(this, format === \"extended\");\r\n      }\r\n  \r\n      /**\r\n       * Returns an ISO 8601-compliant string representation of this DateTime's week date\r\n       * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\r\n       * @return {string}\r\n       */;\r\n      _proto.toISOWeekDate = function toISOWeekDate() {\r\n        return toTechFormat(this, \"kkkk-'W'WW-c\");\r\n      }\r\n  \r\n      /**\r\n       * Returns an ISO 8601-compliant string representation of this DateTime's time component\r\n       * @param {Object} opts - options\r\n       * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\r\n       * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\r\n       * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\r\n       * @param {boolean} [opts.extendedZone=true] - add the time zone format extension\r\n       * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\r\n       * @param {string} [opts.format='extended'] - choose between the basic and extended format\r\n       * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\r\n       * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\r\n       * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\r\n       * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'\r\n       * @return {string}\r\n       */;\r\n      _proto.toISOTime = function toISOTime(_temp6) {\r\n        var _ref7 = _temp6 === void 0 ? {} : _temp6,\r\n          _ref7$suppressMillise = _ref7.suppressMilliseconds,\r\n          suppressMilliseconds = _ref7$suppressMillise === void 0 ? false : _ref7$suppressMillise,\r\n          _ref7$suppressSeconds = _ref7.suppressSeconds,\r\n          suppressSeconds = _ref7$suppressSeconds === void 0 ? false : _ref7$suppressSeconds,\r\n          _ref7$includeOffset = _ref7.includeOffset,\r\n          includeOffset = _ref7$includeOffset === void 0 ? true : _ref7$includeOffset,\r\n          _ref7$includePrefix = _ref7.includePrefix,\r\n          includePrefix = _ref7$includePrefix === void 0 ? false : _ref7$includePrefix,\r\n          _ref7$extendedZone = _ref7.extendedZone,\r\n          extendedZone = _ref7$extendedZone === void 0 ? false : _ref7$extendedZone,\r\n          _ref7$format = _ref7.format,\r\n          format = _ref7$format === void 0 ? \"extended\" : _ref7$format;\r\n        if (!this.isValid) {\r\n          return null;\r\n        }\r\n        var c = includePrefix ? \"T\" : \"\";\r\n        return c + _toISOTime(this, format === \"extended\", suppressSeconds, suppressMilliseconds, includeOffset, extendedZone);\r\n      }\r\n  \r\n      /**\r\n       * Returns an RFC 2822-compatible string representation of this DateTime\r\n       * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\r\n       * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\r\n       * @return {string}\r\n       */;\r\n      _proto.toRFC2822 = function toRFC2822() {\r\n        return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\r\n      }\r\n  \r\n      /**\r\n       * Returns a string representation of this DateTime appropriate for use in HTTP headers. The output is always expressed in GMT.\r\n       * Specifically, the string conforms to RFC 1123.\r\n       * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\r\n       * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\r\n       * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\r\n       * @return {string}\r\n       */;\r\n      _proto.toHTTP = function toHTTP() {\r\n        return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\r\n      }\r\n  \r\n      /**\r\n       * Returns a string representation of this DateTime appropriate for use in SQL Date\r\n       * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\r\n       * @return {string}\r\n       */;\r\n      _proto.toSQLDate = function toSQLDate() {\r\n        if (!this.isValid) {\r\n          return null;\r\n        }\r\n        return _toISODate(this, true);\r\n      }\r\n  \r\n      /**\r\n       * Returns a string representation of this DateTime appropriate for use in SQL Time\r\n       * @param {Object} opts - options\r\n       * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\r\n       * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\r\n       * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\r\n       * @example DateTime.utc().toSQL() //=> '05:15:16.345'\r\n       * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'\r\n       * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'\r\n       * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\r\n       * @return {string}\r\n       */;\r\n      _proto.toSQLTime = function toSQLTime(_temp7) {\r\n        var _ref8 = _temp7 === void 0 ? {} : _temp7,\r\n          _ref8$includeOffset = _ref8.includeOffset,\r\n          includeOffset = _ref8$includeOffset === void 0 ? true : _ref8$includeOffset,\r\n          _ref8$includeZone = _ref8.includeZone,\r\n          includeZone = _ref8$includeZone === void 0 ? false : _ref8$includeZone,\r\n          _ref8$includeOffsetSp = _ref8.includeOffsetSpace,\r\n          includeOffsetSpace = _ref8$includeOffsetSp === void 0 ? true : _ref8$includeOffsetSp;\r\n        var fmt = \"HH:mm:ss.SSS\";\r\n        if (includeZone || includeOffset) {\r\n          if (includeOffsetSpace) {\r\n            fmt += \" \";\r\n          }\r\n          if (includeZone) {\r\n            fmt += \"z\";\r\n          } else if (includeOffset) {\r\n            fmt += \"ZZ\";\r\n          }\r\n        }\r\n        return toTechFormat(this, fmt, true);\r\n      }\r\n  \r\n      /**\r\n       * Returns a string representation of this DateTime appropriate for use in SQL DateTime\r\n       * @param {Object} opts - options\r\n       * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\r\n       * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\r\n       * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\r\n       * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\r\n       * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\r\n       * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\r\n       * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\r\n       * @return {string}\r\n       */;\r\n      _proto.toSQL = function toSQL(opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        if (!this.isValid) {\r\n          return null;\r\n        }\r\n        return this.toSQLDate() + \" \" + this.toSQLTime(opts);\r\n      }\r\n  \r\n      /**\r\n       * Returns a string representation of this DateTime appropriate for debugging\r\n       * @return {string}\r\n       */;\r\n      _proto.toString = function toString() {\r\n        return this.isValid ? this.toISO() : INVALID;\r\n      }\r\n  \r\n      /**\r\n       * Returns a string representation of this DateTime appropriate for the REPL.\r\n       * @return {string}\r\n       */;\r\n      _proto[_Symbol$for] = function () {\r\n        if (this.isValid) {\r\n          return \"DateTime { ts: \" + this.toISO() + \", zone: \" + this.zone.name + \", locale: \" + this.locale + \" }\";\r\n        } else {\r\n          return \"DateTime { Invalid, reason: \" + this.invalidReason + \" }\";\r\n        }\r\n      }\r\n  \r\n      /**\r\n       * Returns the epoch milliseconds of this DateTime. Alias of {@link DateTime#toMillis}\r\n       * @return {number}\r\n       */;\r\n      _proto.valueOf = function valueOf() {\r\n        return this.toMillis();\r\n      }\r\n  \r\n      /**\r\n       * Returns the epoch milliseconds of this DateTime.\r\n       * @return {number}\r\n       */;\r\n      _proto.toMillis = function toMillis() {\r\n        return this.isValid ? this.ts : NaN;\r\n      }\r\n  \r\n      /**\r\n       * Returns the epoch seconds of this DateTime.\r\n       * @return {number}\r\n       */;\r\n      _proto.toSeconds = function toSeconds() {\r\n        return this.isValid ? this.ts / 1000 : NaN;\r\n      }\r\n  \r\n      /**\r\n       * Returns the epoch seconds (as a whole number) of this DateTime.\r\n       * @return {number}\r\n       */;\r\n      _proto.toUnixInteger = function toUnixInteger() {\r\n        return this.isValid ? Math.floor(this.ts / 1000) : NaN;\r\n      }\r\n  \r\n      /**\r\n       * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\r\n       * @return {string}\r\n       */;\r\n      _proto.toJSON = function toJSON() {\r\n        return this.toISO();\r\n      }\r\n  \r\n      /**\r\n       * Returns a BSON serializable equivalent to this DateTime.\r\n       * @return {Date}\r\n       */;\r\n      _proto.toBSON = function toBSON() {\r\n        return this.toJSDate();\r\n      }\r\n  \r\n      /**\r\n       * Returns a JavaScript object with this DateTime's year, month, day, and so on.\r\n       * @param opts - options for generating the object\r\n       * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\r\n       * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\r\n       * @return {Object}\r\n       */;\r\n      _proto.toObject = function toObject(opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        if (!this.isValid) return {};\r\n        var base = _extends({}, this.c);\r\n        if (opts.includeConfig) {\r\n          base.outputCalendar = this.outputCalendar;\r\n          base.numberingSystem = this.loc.numberingSystem;\r\n          base.locale = this.loc.locale;\r\n        }\r\n        return base;\r\n      }\r\n  \r\n      /**\r\n       * Returns a JavaScript Date equivalent to this DateTime.\r\n       * @return {Date}\r\n       */;\r\n      _proto.toJSDate = function toJSDate() {\r\n        return new Date(this.isValid ? this.ts : NaN);\r\n      }\r\n  \r\n      // COMPARE\r\n  \r\n      /**\r\n       * Return the difference between two DateTimes as a Duration.\r\n       * @param {DateTime} otherDateTime - the DateTime to compare this one to\r\n       * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\r\n       * @param {Object} opts - options that affect the creation of the Duration\r\n       * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\r\n       * @example\r\n       * var i1 = DateTime.fromISO('1982-05-25T09:45'),\r\n       *     i2 = DateTime.fromISO('1983-10-14T10:30');\r\n       * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\r\n       * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\r\n       * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\r\n       * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\r\n       * @return {Duration}\r\n       */;\r\n      _proto.diff = function diff(otherDateTime, unit, opts) {\r\n        if (unit === void 0) {\r\n          unit = \"milliseconds\";\r\n        }\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        if (!this.isValid || !otherDateTime.isValid) {\r\n          return Duration.invalid(\"created by diffing an invalid DateTime\");\r\n        }\r\n        var durOpts = _extends({\r\n          locale: this.locale,\r\n          numberingSystem: this.numberingSystem\r\n        }, opts);\r\n        var units = maybeArray(unit).map(Duration.normalizeUnit),\r\n          otherIsLater = otherDateTime.valueOf() > this.valueOf(),\r\n          earlier = otherIsLater ? this : otherDateTime,\r\n          later = otherIsLater ? otherDateTime : this,\r\n          diffed = _diff(earlier, later, units, durOpts);\r\n        return otherIsLater ? diffed.negate() : diffed;\r\n      }\r\n  \r\n      /**\r\n       * Return the difference between this DateTime and right now.\r\n       * See {@link DateTime#diff}\r\n       * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\r\n       * @param {Object} opts - options that affect the creation of the Duration\r\n       * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\r\n       * @return {Duration}\r\n       */;\r\n      _proto.diffNow = function diffNow(unit, opts) {\r\n        if (unit === void 0) {\r\n          unit = \"milliseconds\";\r\n        }\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        return this.diff(DateTime.now(), unit, opts);\r\n      }\r\n  \r\n      /**\r\n       * Return an Interval spanning between this DateTime and another DateTime\r\n       * @param {DateTime} otherDateTime - the other end point of the Interval\r\n       * @return {Interval}\r\n       */;\r\n      _proto.until = function until(otherDateTime) {\r\n        return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\r\n      }\r\n  \r\n      /**\r\n       * Return whether this DateTime is in the same unit of time as another DateTime.\r\n       * Higher-order units must also be identical for this function to return `true`.\r\n       * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link DateTime#setZone} to convert one of the dates if needed.\r\n       * @param {DateTime} otherDateTime - the other DateTime\r\n       * @param {string} unit - the unit of time to check sameness on\r\n       * @param {Object} opts - options\r\n       * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; only the locale of this DateTime is used\r\n       * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day\r\n       * @return {boolean}\r\n       */;\r\n      _proto.hasSame = function hasSame(otherDateTime, unit, opts) {\r\n        if (!this.isValid) return false;\r\n        var inputMs = otherDateTime.valueOf();\r\n        var adjustedToZone = this.setZone(otherDateTime.zone, {\r\n          keepLocalTime: true\r\n        });\r\n        return adjustedToZone.startOf(unit, opts) <= inputMs && inputMs <= adjustedToZone.endOf(unit, opts);\r\n      }\r\n  \r\n      /**\r\n       * Equality check\r\n       * Two DateTimes are equal if and only if they represent the same millisecond, have the same zone and location, and are both valid.\r\n       * To compare just the millisecond values, use `+dt1 === +dt2`.\r\n       * @param {DateTime} other - the other DateTime\r\n       * @return {boolean}\r\n       */;\r\n      _proto.equals = function equals(other) {\r\n        return this.isValid && other.isValid && this.valueOf() === other.valueOf() && this.zone.equals(other.zone) && this.loc.equals(other.loc);\r\n      }\r\n  \r\n      /**\r\n       * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\r\n       * platform supports Intl.RelativeTimeFormat. Rounds down by default.\r\n       * @param {Object} options - options that affect the output\r\n       * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\r\n       * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\r\n       * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\r\n       * @param {boolean} [options.round=true] - whether to round the numbers in the output.\r\n       * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\r\n       * @param {string} options.locale - override the locale of this DateTime\r\n       * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\r\n       * @example DateTime.now().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\r\n       * @example DateTime.now().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 día\"\r\n       * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\r\n       * @example DateTime.now().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\r\n       * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\r\n       * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\r\n       */;\r\n      _proto.toRelative = function toRelative(options) {\r\n        if (options === void 0) {\r\n          options = {};\r\n        }\r\n        if (!this.isValid) return null;\r\n        var base = options.base || DateTime.fromObject({}, {\r\n            zone: this.zone\r\n          }),\r\n          padding = options.padding ? this < base ? -options.padding : options.padding : 0;\r\n        var units = [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"];\r\n        var unit = options.unit;\r\n        if (Array.isArray(options.unit)) {\r\n          units = options.unit;\r\n          unit = undefined;\r\n        }\r\n        return diffRelative(base, this.plus(padding), _extends({}, options, {\r\n          numeric: \"always\",\r\n          units: units,\r\n          unit: unit\r\n        }));\r\n      }\r\n  \r\n      /**\r\n       * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\r\n       * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\r\n       * @param {Object} options - options that affect the output\r\n       * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\r\n       * @param {string} options.locale - override the locale of this DateTime\r\n       * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\r\n       * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\r\n       * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\r\n       * @example DateTime.now().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"mañana\"\r\n       * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\r\n       * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\r\n       */;\r\n      _proto.toRelativeCalendar = function toRelativeCalendar(options) {\r\n        if (options === void 0) {\r\n          options = {};\r\n        }\r\n        if (!this.isValid) return null;\r\n        return diffRelative(options.base || DateTime.fromObject({}, {\r\n          zone: this.zone\r\n        }), this, _extends({}, options, {\r\n          numeric: \"auto\",\r\n          units: [\"years\", \"months\", \"days\"],\r\n          calendary: true\r\n        }));\r\n      }\r\n  \r\n      /**\r\n       * Return the min of several date times\r\n       * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\r\n       * @return {DateTime} the min DateTime, or undefined if called with no argument\r\n       */;\r\n      DateTime.min = function min() {\r\n        for (var _len = arguments.length, dateTimes = new Array(_len), _key = 0; _key < _len; _key++) {\r\n          dateTimes[_key] = arguments[_key];\r\n        }\r\n        if (!dateTimes.every(DateTime.isDateTime)) {\r\n          throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\r\n        }\r\n        return bestBy(dateTimes, function (i) {\r\n          return i.valueOf();\r\n        }, Math.min);\r\n      }\r\n  \r\n      /**\r\n       * Return the max of several date times\r\n       * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\r\n       * @return {DateTime} the max DateTime, or undefined if called with no argument\r\n       */;\r\n      DateTime.max = function max() {\r\n        for (var _len2 = arguments.length, dateTimes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\r\n          dateTimes[_key2] = arguments[_key2];\r\n        }\r\n        if (!dateTimes.every(DateTime.isDateTime)) {\r\n          throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\r\n        }\r\n        return bestBy(dateTimes, function (i) {\r\n          return i.valueOf();\r\n        }, Math.max);\r\n      }\r\n  \r\n      // MISC\r\n  \r\n      /**\r\n       * Explain how a string would be parsed by fromFormat()\r\n       * @param {string} text - the string to parse\r\n       * @param {string} fmt - the format the string is expected to be in (see description)\r\n       * @param {Object} options - options taken by fromFormat()\r\n       * @return {Object}\r\n       */;\r\n      DateTime.fromFormatExplain = function fromFormatExplain(text, fmt, options) {\r\n        if (options === void 0) {\r\n          options = {};\r\n        }\r\n        var _options = options,\r\n          _options$locale = _options.locale,\r\n          locale = _options$locale === void 0 ? null : _options$locale,\r\n          _options$numberingSys = _options.numberingSystem,\r\n          numberingSystem = _options$numberingSys === void 0 ? null : _options$numberingSys,\r\n          localeToUse = Locale.fromOpts({\r\n            locale: locale,\r\n            numberingSystem: numberingSystem,\r\n            defaultToEN: true\r\n          });\r\n        return explainFromTokens(localeToUse, text, fmt);\r\n      }\r\n  \r\n      /**\r\n       * @deprecated use fromFormatExplain instead\r\n       */;\r\n      DateTime.fromStringExplain = function fromStringExplain(text, fmt, options) {\r\n        if (options === void 0) {\r\n          options = {};\r\n        }\r\n        return DateTime.fromFormatExplain(text, fmt, options);\r\n      }\r\n  \r\n      /**\r\n       * Build a parser for `fmt` using the given locale. This parser can be passed\r\n       * to {@link DateTime.fromFormatParser} to a parse a date in this format. This\r\n       * can be used to optimize cases where many dates need to be parsed in a\r\n       * specific format.\r\n       *\r\n       * @param {String} fmt - the format the string is expected to be in (see\r\n       * description)\r\n       * @param {Object} options - options used to set locale and numberingSystem\r\n       * for parser\r\n       * @returns {TokenParser} - opaque object to be used\r\n       */;\r\n      DateTime.buildFormatParser = function buildFormatParser(fmt, options) {\r\n        if (options === void 0) {\r\n          options = {};\r\n        }\r\n        var _options2 = options,\r\n          _options2$locale = _options2.locale,\r\n          locale = _options2$locale === void 0 ? null : _options2$locale,\r\n          _options2$numberingSy = _options2.numberingSystem,\r\n          numberingSystem = _options2$numberingSy === void 0 ? null : _options2$numberingSy,\r\n          localeToUse = Locale.fromOpts({\r\n            locale: locale,\r\n            numberingSystem: numberingSystem,\r\n            defaultToEN: true\r\n          });\r\n        return new TokenParser(localeToUse, fmt);\r\n      }\r\n  \r\n      /**\r\n       * Create a DateTime from an input string and format parser.\r\n       *\r\n       * The format parser must have been created with the same locale as this call.\r\n       *\r\n       * @param {String} text - the string to parse\r\n       * @param {TokenParser} formatParser - parser from {@link DateTime.buildFormatParser}\r\n       * @param {Object} opts - options taken by fromFormat()\r\n       * @returns {DateTime}\r\n       */;\r\n      DateTime.fromFormatParser = function fromFormatParser(text, formatParser, opts) {\r\n        if (opts === void 0) {\r\n          opts = {};\r\n        }\r\n        if (isUndefined(text) || isUndefined(formatParser)) {\r\n          throw new InvalidArgumentError(\"fromFormatParser requires an input string and a format parser\");\r\n        }\r\n        var _opts2 = opts,\r\n          _opts2$locale = _opts2.locale,\r\n          locale = _opts2$locale === void 0 ? null : _opts2$locale,\r\n          _opts2$numberingSyste = _opts2.numberingSystem,\r\n          numberingSystem = _opts2$numberingSyste === void 0 ? null : _opts2$numberingSyste,\r\n          localeToUse = Locale.fromOpts({\r\n            locale: locale,\r\n            numberingSystem: numberingSystem,\r\n            defaultToEN: true\r\n          });\r\n        if (!localeToUse.equals(formatParser.locale)) {\r\n          throw new InvalidArgumentError(\"fromFormatParser called with a locale of \" + localeToUse + \", \" + (\"but the format parser was created for \" + formatParser.locale));\r\n        }\r\n        var _formatParser$explain = formatParser.explainFromTokens(text),\r\n          result = _formatParser$explain.result,\r\n          zone = _formatParser$explain.zone,\r\n          specificOffset = _formatParser$explain.specificOffset,\r\n          invalidReason = _formatParser$explain.invalidReason;\r\n        if (invalidReason) {\r\n          return DateTime.invalid(invalidReason);\r\n        } else {\r\n          return parseDataToDateTime(result, zone, opts, \"format \" + formatParser.format, text, specificOffset);\r\n        }\r\n      }\r\n  \r\n      // FORMAT PRESETS\r\n  \r\n      /**\r\n       * {@link DateTime#toLocaleString} format like 10/14/1983\r\n       * @type {Object}\r\n       */;\r\n      _createClass(DateTime, [{\r\n        key: \"isValid\",\r\n        get: function get() {\r\n          return this.invalid === null;\r\n        }\r\n  \r\n        /**\r\n         * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"invalidReason\",\r\n        get: function get() {\r\n          return this.invalid ? this.invalid.reason : null;\r\n        }\r\n  \r\n        /**\r\n         * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"invalidExplanation\",\r\n        get: function get() {\r\n          return this.invalid ? this.invalid.explanation : null;\r\n        }\r\n  \r\n        /**\r\n         * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\r\n         *\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"locale\",\r\n        get: function get() {\r\n          return this.isValid ? this.loc.locale : null;\r\n        }\r\n  \r\n        /**\r\n         * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\r\n         *\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"numberingSystem\",\r\n        get: function get() {\r\n          return this.isValid ? this.loc.numberingSystem : null;\r\n        }\r\n  \r\n        /**\r\n         * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\r\n         *\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"outputCalendar\",\r\n        get: function get() {\r\n          return this.isValid ? this.loc.outputCalendar : null;\r\n        }\r\n  \r\n        /**\r\n         * Get the time zone associated with this DateTime.\r\n         * @type {Zone}\r\n         */\r\n      }, {\r\n        key: \"zone\",\r\n        get: function get() {\r\n          return this._zone;\r\n        }\r\n  \r\n        /**\r\n         * Get the name of the time zone.\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"zoneName\",\r\n        get: function get() {\r\n          return this.isValid ? this.zone.name : null;\r\n        }\r\n  \r\n        /**\r\n         * Get the year\r\n         * @example DateTime.local(2017, 5, 25).year //=> 2017\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"year\",\r\n        get: function get() {\r\n          return this.isValid ? this.c.year : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the quarter\r\n         * @example DateTime.local(2017, 5, 25).quarter //=> 2\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"quarter\",\r\n        get: function get() {\r\n          return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the month (1-12).\r\n         * @example DateTime.local(2017, 5, 25).month //=> 5\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"month\",\r\n        get: function get() {\r\n          return this.isValid ? this.c.month : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the day of the month (1-30ish).\r\n         * @example DateTime.local(2017, 5, 25).day //=> 25\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"day\",\r\n        get: function get() {\r\n          return this.isValid ? this.c.day : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the hour of the day (0-23).\r\n         * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"hour\",\r\n        get: function get() {\r\n          return this.isValid ? this.c.hour : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the minute of the hour (0-59).\r\n         * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"minute\",\r\n        get: function get() {\r\n          return this.isValid ? this.c.minute : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the second of the minute (0-59).\r\n         * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"second\",\r\n        get: function get() {\r\n          return this.isValid ? this.c.second : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the millisecond of the second (0-999).\r\n         * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"millisecond\",\r\n        get: function get() {\r\n          return this.isValid ? this.c.millisecond : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the week year\r\n         * @see https://en.wikipedia.org/wiki/ISO_week_date\r\n         * @example DateTime.local(2014, 12, 31).weekYear //=> 2015\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"weekYear\",\r\n        get: function get() {\r\n          return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the week number of the week year (1-52ish).\r\n         * @see https://en.wikipedia.org/wiki/ISO_week_date\r\n         * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"weekNumber\",\r\n        get: function get() {\r\n          return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the day of the week.\r\n         * 1 is Monday and 7 is Sunday\r\n         * @see https://en.wikipedia.org/wiki/ISO_week_date\r\n         * @example DateTime.local(2014, 11, 31).weekday //=> 4\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"weekday\",\r\n        get: function get() {\r\n          return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Returns true if this date is on a weekend according to the locale, false otherwise\r\n         * @returns {boolean}\r\n         */\r\n      }, {\r\n        key: \"isWeekend\",\r\n        get: function get() {\r\n          return this.isValid && this.loc.getWeekendDays().includes(this.weekday);\r\n        }\r\n  \r\n        /**\r\n         * Get the day of the week according to the locale.\r\n         * 1 is the first day of the week and 7 is the last day of the week.\r\n         * If the locale assigns Sunday as the first day of the week, then a date which is a Sunday will return 1,\r\n         * @returns {number}\r\n         */\r\n      }, {\r\n        key: \"localWeekday\",\r\n        get: function get() {\r\n          return this.isValid ? possiblyCachedLocalWeekData(this).weekday : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the week number of the week year according to the locale. Different locales assign week numbers differently,\r\n         * because the week can start on different days of the week (see localWeekday) and because a different number of days\r\n         * is required for a week to count as the first week of a year.\r\n         * @returns {number}\r\n         */\r\n      }, {\r\n        key: \"localWeekNumber\",\r\n        get: function get() {\r\n          return this.isValid ? possiblyCachedLocalWeekData(this).weekNumber : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the week year according to the locale. Different locales assign week numbers (and therefor week years)\r\n         * differently, see localWeekNumber.\r\n         * @returns {number}\r\n         */\r\n      }, {\r\n        key: \"localWeekYear\",\r\n        get: function get() {\r\n          return this.isValid ? possiblyCachedLocalWeekData(this).weekYear : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the ordinal (meaning the day of the year)\r\n         * @example DateTime.local(2017, 5, 25).ordinal //=> 145\r\n         * @type {number|DateTime}\r\n         */\r\n      }, {\r\n        key: \"ordinal\",\r\n        get: function get() {\r\n          return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the human readable short month name, such as 'Oct'.\r\n         * Defaults to the system's locale if no locale has been specified\r\n         * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"monthShort\",\r\n        get: function get() {\r\n          return this.isValid ? Info.months(\"short\", {\r\n            locObj: this.loc\r\n          })[this.month - 1] : null;\r\n        }\r\n  \r\n        /**\r\n         * Get the human readable long month name, such as 'October'.\r\n         * Defaults to the system's locale if no locale has been specified\r\n         * @example DateTime.local(2017, 10, 30).monthLong //=> October\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"monthLong\",\r\n        get: function get() {\r\n          return this.isValid ? Info.months(\"long\", {\r\n            locObj: this.loc\r\n          })[this.month - 1] : null;\r\n        }\r\n  \r\n        /**\r\n         * Get the human readable short weekday, such as 'Mon'.\r\n         * Defaults to the system's locale if no locale has been specified\r\n         * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"weekdayShort\",\r\n        get: function get() {\r\n          return this.isValid ? Info.weekdays(\"short\", {\r\n            locObj: this.loc\r\n          })[this.weekday - 1] : null;\r\n        }\r\n  \r\n        /**\r\n         * Get the human readable long weekday, such as 'Monday'.\r\n         * Defaults to the system's locale if no locale has been specified\r\n         * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"weekdayLong\",\r\n        get: function get() {\r\n          return this.isValid ? Info.weekdays(\"long\", {\r\n            locObj: this.loc\r\n          })[this.weekday - 1] : null;\r\n        }\r\n  \r\n        /**\r\n         * Get the UTC offset of this DateTime in minutes\r\n         * @example DateTime.now().offset //=> -240\r\n         * @example DateTime.utc().offset //=> 0\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"offset\",\r\n        get: function get() {\r\n          return this.isValid ? +this.o : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\r\n         * Defaults to the system's locale if no locale has been specified\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"offsetNameShort\",\r\n        get: function get() {\r\n          if (this.isValid) {\r\n            return this.zone.offsetName(this.ts, {\r\n              format: \"short\",\r\n              locale: this.locale\r\n            });\r\n          } else {\r\n            return null;\r\n          }\r\n        }\r\n  \r\n        /**\r\n         * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\r\n         * Defaults to the system's locale if no locale has been specified\r\n         * @type {string}\r\n         */\r\n      }, {\r\n        key: \"offsetNameLong\",\r\n        get: function get() {\r\n          if (this.isValid) {\r\n            return this.zone.offsetName(this.ts, {\r\n              format: \"long\",\r\n              locale: this.locale\r\n            });\r\n          } else {\r\n            return null;\r\n          }\r\n        }\r\n  \r\n        /**\r\n         * Get whether this zone's offset ever changes, as in a DST.\r\n         * @type {boolean}\r\n         */\r\n      }, {\r\n        key: \"isOffsetFixed\",\r\n        get: function get() {\r\n          return this.isValid ? this.zone.isUniversal : null;\r\n        }\r\n  \r\n        /**\r\n         * Get whether the DateTime is in a DST.\r\n         * @type {boolean}\r\n         */\r\n      }, {\r\n        key: \"isInDST\",\r\n        get: function get() {\r\n          if (this.isOffsetFixed) {\r\n            return false;\r\n          } else {\r\n            return this.offset > this.set({\r\n              month: 1,\r\n              day: 1\r\n            }).offset || this.offset > this.set({\r\n              month: 5\r\n            }).offset;\r\n          }\r\n        }\r\n      }, {\r\n        key: \"isInLeapYear\",\r\n        get: function get() {\r\n          return isLeapYear(this.year);\r\n        }\r\n  \r\n        /**\r\n         * Returns the number of days in this DateTime's month\r\n         * @example DateTime.local(2016, 2).daysInMonth //=> 29\r\n         * @example DateTime.local(2016, 3).daysInMonth //=> 31\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"daysInMonth\",\r\n        get: function get() {\r\n          return daysInMonth(this.year, this.month);\r\n        }\r\n  \r\n        /**\r\n         * Returns the number of days in this DateTime's year\r\n         * @example DateTime.local(2016).daysInYear //=> 366\r\n         * @example DateTime.local(2013).daysInYear //=> 365\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"daysInYear\",\r\n        get: function get() {\r\n          return this.isValid ? daysInYear(this.year) : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Returns the number of weeks in this DateTime's year\r\n         * @see https://en.wikipedia.org/wiki/ISO_week_date\r\n         * @example DateTime.local(2004).weeksInWeekYear //=> 53\r\n         * @example DateTime.local(2013).weeksInWeekYear //=> 52\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"weeksInWeekYear\",\r\n        get: function get() {\r\n          return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\r\n        }\r\n  \r\n        /**\r\n         * Returns the number of weeks in this DateTime's local week year\r\n         * @example DateTime.local(2020, 6, {locale: 'en-US'}).weeksInLocalWeekYear //=> 52\r\n         * @example DateTime.local(2020, 6, {locale: 'de-DE'}).weeksInLocalWeekYear //=> 53\r\n         * @type {number}\r\n         */\r\n      }, {\r\n        key: \"weeksInLocalWeekYear\",\r\n        get: function get() {\r\n          return this.isValid ? weeksInWeekYear(this.localWeekYear, this.loc.getMinDaysInFirstWeek(), this.loc.getStartOfWeek()) : NaN;\r\n        }\r\n      }], [{\r\n        key: \"DATE_SHORT\",\r\n        get: function get() {\r\n          return DATE_SHORT;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like 'Oct 14, 1983'\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"DATE_MED\",\r\n        get: function get() {\r\n          return DATE_MED;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like 'Fri, Oct 14, 1983'\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"DATE_MED_WITH_WEEKDAY\",\r\n        get: function get() {\r\n          return DATE_MED_WITH_WEEKDAY;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like 'October 14, 1983'\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"DATE_FULL\",\r\n        get: function get() {\r\n          return DATE_FULL;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like 'Tuesday, October 14, 1983'\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"DATE_HUGE\",\r\n        get: function get() {\r\n          return DATE_HUGE;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"TIME_SIMPLE\",\r\n        get: function get() {\r\n          return TIME_SIMPLE;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"TIME_WITH_SECONDS\",\r\n        get: function get() {\r\n          return TIME_WITH_SECONDS;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"TIME_WITH_SHORT_OFFSET\",\r\n        get: function get() {\r\n          return TIME_WITH_SHORT_OFFSET;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"TIME_WITH_LONG_OFFSET\",\r\n        get: function get() {\r\n          return TIME_WITH_LONG_OFFSET;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like '09:30', always 24-hour.\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"TIME_24_SIMPLE\",\r\n        get: function get() {\r\n          return TIME_24_SIMPLE;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like '09:30:23', always 24-hour.\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"TIME_24_WITH_SECONDS\",\r\n        get: function get() {\r\n          return TIME_24_WITH_SECONDS;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like '09:30:23 EDT', always 24-hour.\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"TIME_24_WITH_SHORT_OFFSET\",\r\n        get: function get() {\r\n          return TIME_24_WITH_SHORT_OFFSET;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"TIME_24_WITH_LONG_OFFSET\",\r\n        get: function get() {\r\n          return TIME_24_WITH_LONG_OFFSET;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"DATETIME_SHORT\",\r\n        get: function get() {\r\n          return DATETIME_SHORT;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"DATETIME_SHORT_WITH_SECONDS\",\r\n        get: function get() {\r\n          return DATETIME_SHORT_WITH_SECONDS;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"DATETIME_MED\",\r\n        get: function get() {\r\n          return DATETIME_MED;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"DATETIME_MED_WITH_SECONDS\",\r\n        get: function get() {\r\n          return DATETIME_MED_WITH_SECONDS;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"DATETIME_MED_WITH_WEEKDAY\",\r\n        get: function get() {\r\n          return DATETIME_MED_WITH_WEEKDAY;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"DATETIME_FULL\",\r\n        get: function get() {\r\n          return DATETIME_FULL;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"DATETIME_FULL_WITH_SECONDS\",\r\n        get: function get() {\r\n          return DATETIME_FULL_WITH_SECONDS;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"DATETIME_HUGE\",\r\n        get: function get() {\r\n          return DATETIME_HUGE;\r\n        }\r\n  \r\n        /**\r\n         * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\r\n         * @type {Object}\r\n         */\r\n      }, {\r\n        key: \"DATETIME_HUGE_WITH_SECONDS\",\r\n        get: function get() {\r\n          return DATETIME_HUGE_WITH_SECONDS;\r\n        }\r\n      }]);\r\n      return DateTime;\r\n    }(Symbol.for(\"nodejs.util.inspect.custom\"));\r\n    function friendlyDateTime(dateTimeish) {\r\n      if (DateTime.isDateTime(dateTimeish)) {\r\n        return dateTimeish;\r\n      } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\r\n        return DateTime.fromJSDate(dateTimeish);\r\n      } else if (dateTimeish && typeof dateTimeish === \"object\") {\r\n        return DateTime.fromObject(dateTimeish);\r\n      } else {\r\n        throw new InvalidArgumentError(\"Unknown datetime argument: \" + dateTimeish + \", of type \" + typeof dateTimeish);\r\n      }\r\n    }\r\n  \r\n    var VERSION = \"3.5.0\";\r\n  \r\n    exports.DateTime = DateTime;\r\n    exports.Duration = Duration;\r\n    exports.FixedOffsetZone = FixedOffsetZone;\r\n    exports.IANAZone = IANAZone;\r\n    exports.Info = Info;\r\n    exports.Interval = Interval;\r\n    exports.InvalidZone = InvalidZone;\r\n    exports.Settings = Settings;\r\n    exports.SystemZone = SystemZone;\r\n    exports.VERSION = VERSION;\r\n    exports.Zone = Zone;\r\n  \r\n    Object.defineProperty(exports, '__esModule', { value: true });\r\n  \r\n    return exports;\r\n  \r\n  })({});\r\n  //# sourceMappingURL=luxon.js.map\r\n  ;\ndefine(\"luxon\", (function (global) {\n    return function () {\n        var ret, fn;\n        return ret || global.luxon;\n    };\n}(this)));\n\n","define('drops/calendar/calendar',[\r\n    'jquery',\r\n    'luxon',\r\n    'lq/drop',\r\n    'lq/style'\r\n], function ($, luxon, Drop, Style) {\r\n    'use strict';\r\n\r\n    const { DateTime } = luxon;\r\n\r\n    function Calendar(options) {\r\n        Drop.call(this, $('<div/>'), options);\r\n\r\n        this.$element.addClass('calendar');\r\n    };\r\n\r\n    Drop.extend(Calendar, Drop);\r\n\r\n    Calendar.typeName = 'Calendar';\r\n\r\n    Calendar.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.renderStyles();\r\n        this.applyPosition();\r\n    };\r\n\r\n    Calendar.prototype.renderStyles = function () {\r\n        if (this.data.styles) {\r\n            this.$element.removeClass('default-calendar-style');\r\n            Style.renderStyles(this, 'calendarstyle-');\r\n        } else {\r\n            var defaultStyle = Style.getDefaultStyleIdByDropType(this, true);\r\n\r\n            if (defaultStyle) {\r\n                this.$element.removeClass('default-calendar-style');\r\n                Style.renderStyles(this, 'calendarstyle-', null, defaultStyle);\r\n            } else {\r\n                // .default-calendar-style is defined in the css file, and should be used as a reference for the generation\r\n                // of the user defined styles\r\n                this.$element.addClass('default-calendar-style');\r\n            }\r\n        }            \r\n    };\r\n\r\n    Calendar.prototype.render = function ($element) {\r\n        return this.createAndRenderDrops($element);\r\n    };\r\n\r\n    Calendar.prototype.postRender = function () {\r\n        this.openFirstView();\r\n    };\r\n\r\n    // This will open the view, but won't load any data.\r\n    // The calendar view will wait until the user maps a value on to the calendar or executes the query.\r\n    Calendar.prototype.openFirstView = function () {\r\n        if (!this.pool.length)\r\n            return;\r\n\r\n        this.currentView = this.pool[0];\r\n        this.currentView.$element.appendTo(this.$element);\r\n        this.currentView.init();\r\n        this.currentView.open(DateTime.now());\r\n    };\r\n\r\n    Calendar.prototype.getEnabledViews = function () {\r\n        return _.map(this.pool, function(calendarView) {\r\n            return {\r\n                type: calendarView.type,\r\n                id: calendarView.data.id\r\n            }\r\n        });\r\n    };\r\n\r\n    Calendar.prototype.openViewById = function (viewId) {\r\n        var view = _.find(this.pool, function(calendarView) {\r\n            return calendarView.data.id === viewId;\r\n        });\r\n        this.openView(view);\r\n    };\r\n\r\n    Calendar.prototype.openView = function (view) {\r\n        var openDate = this.currentView ? this.currentView.getOpenDate() : DateTime.now();\r\n        var selectedDate = this.currentView ? this.currentView.getSelectedDate() : null;\r\n\r\n        if (this.currentView)\r\n            this.currentView.$element.detach();\r\n\r\n        this.currentView = view;\r\n        this.currentView.$element.appendTo(this.$element);\r\n        this.currentView.open(openDate);\r\n\r\n        if (selectedDate)\r\n            this.currentView.setSelectedDate(selectedDate);\r\n        else\r\n            this.currentView.clearSelectedDate();\r\n\r\n        this.currentView.loadCalendarData();\r\n    };\r\n\r\n    Calendar.prototype.clearValue = function () {\r\n        if (!this.currentView)\r\n            return;\r\n        this.currentView.clearSelectedDate();\r\n    };\r\n\r\n    Calendar.prototype.setValue = function (update) {\r\n        if (!this.currentView)\r\n            return;\r\n\r\n        var date = $.type(update.value) === \"date\"\r\n            ? DateTime.fromJSDate(update.value)\r\n            : DateTime.fromISO(update.value);\r\n        this.currentView.open(date);\r\n        this.currentView.setSelectedDate(date);\r\n        this.currentView.loadCalendarData();\r\n    };\r\n\r\n    Calendar.prototype.changeView = function (viewType) {\r\n        for (var i = 0; i < this.pool.length; i++) {\r\n            if (viewType === this.pool[i].type) {\r\n                this.openView(this.pool[i]);\r\n                break;\r\n            }\r\n        }\r\n    };\r\n\r\n    Calendar.prototype.licquidMethod_previous = function () {\r\n        this.currentView.previous();\r\n    };\r\n\r\n    Calendar.prototype.licquidMethod_next = function () {\r\n        this.currentView.next();\r\n    };\r\n\r\n    Calendar.prototype.licquidMethod_today = function () {\r\n        this.currentView.open(DateTime.now());\r\n        this.currentView.setSelectedDate(DateTime.now());\r\n        this.currentView.loadCalendarData();\r\n    };\r\n\r\n    Calendar.prototype.licquidMethod_changeToDayView = function () {\r\n        this.changeView('CalendarDayView');\r\n    };\r\n\r\n    Calendar.prototype.licquidMethod_changeToWeekView = function () {\r\n        this.changeView('CalendarWeekView');\r\n    };\r\n\r\n    Calendar.prototype.licquidMethod_changeToMonthView = function () {\r\n        this.changeView('CalendarMonthView');\r\n    };\r\n\r\n    Calendar.prototype.licquidMethod_changeToYearView = function () {\r\n        this.changeView('CalendarYearView');\r\n    };\r\n\r\n    return Calendar;\r\n});\n","define('drops/calendar/calendarParameter',[],function () {\r\n    'use strict';\r\n\r\n    return {\r\n        convert: function (luxonDate) {\r\n            var d = new Date(Date.UTC(\r\n                luxonDate.get('year'),\r\n                luxonDate.get('month') - 1,\r\n                luxonDate.get('day'),\r\n                luxonDate.get('hour'),\r\n                luxonDate.get('minute'),\r\n                luxonDate.get('second')));\r\n            return d;\r\n        }\r\n    };\r\n});\r\n\n","/*! jQuery UI - v1.14.1 - 2024-10-30\r\n* https://jqueryui.com\r\n* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js\r\n* Copyright OpenJS Foundation and other contributors; Licensed MIT */\r\n\r\n( function( factory ) {\r\n\t\"use strict\";\r\n\r\n\tif ( typeof define === \"function\" && define.amd ) {\r\n\r\n\t\t// AMD. Register as an anonymous module.\r\n\t\tdefine( 'jquery-ui',[ \"jquery\" ], factory );\r\n\t} else {\r\n\r\n\t\t// Browser globals\r\n\t\tfactory( jQuery );\r\n\t}\r\n} )( function( $ ) {\r\n\"use strict\";\r\n\r\n$.ui = $.ui || {};\r\n\r\nvar version = $.ui.version = \"1.14.1\";\r\n\r\n\r\n/*!\r\n * jQuery UI Widget 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Widget\r\n//>>group: Core\r\n//>>description: Provides a factory for creating stateful widgets with a common API.\r\n//>>docs: https://api.jqueryui.com/jQuery.widget/\r\n//>>demos: https://jqueryui.com/widget/\r\n\r\n\r\nvar widgetUuid = 0;\r\nvar widgetHasOwnProperty = Array.prototype.hasOwnProperty;\r\nvar widgetSlice = Array.prototype.slice;\r\n\r\n$.cleanData = ( function( orig ) {\r\n\treturn function( elems ) {\r\n\t\tvar events, elem, i;\r\n\t\tfor ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {\r\n\r\n\t\t\t// Only trigger remove when necessary to save time\r\n\t\t\tevents = $._data( elem, \"events\" );\r\n\t\t\tif ( events && events.remove ) {\r\n\t\t\t\t$( elem ).triggerHandler( \"remove\" );\r\n\t\t\t}\r\n\t\t}\r\n\t\torig( elems );\r\n\t};\r\n} )( $.cleanData );\r\n\r\n$.widget = function( name, base, prototype ) {\r\n\tvar existingConstructor, constructor, basePrototype;\r\n\r\n\t// ProxiedPrototype allows the provided prototype to remain unmodified\r\n\t// so that it can be used as a mixin for multiple widgets (#8876)\r\n\tvar proxiedPrototype = {};\r\n\r\n\tvar namespace = name.split( \".\" )[ 0 ];\r\n\tname = name.split( \".\" )[ 1 ];\r\n\tif ( name === \"__proto__\" || name === \"constructor\" ) {\r\n\t\treturn $.error( \"Invalid widget name: \" + name );\r\n\t}\r\n\tvar fullName = namespace + \"-\" + name;\r\n\r\n\tif ( !prototype ) {\r\n\t\tprototype = base;\r\n\t\tbase = $.Widget;\r\n\t}\r\n\r\n\tif ( Array.isArray( prototype ) ) {\r\n\t\tprototype = $.extend.apply( null, [ {} ].concat( prototype ) );\r\n\t}\r\n\r\n\t// Create selector for plugin\r\n\t$.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) {\r\n\t\treturn !!$.data( elem, fullName );\r\n\t};\r\n\r\n\t$[ namespace ] = $[ namespace ] || {};\r\n\texistingConstructor = $[ namespace ][ name ];\r\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\r\n\r\n\t\t// Allow instantiation without \"new\" keyword\r\n\t\tif ( !this || !this._createWidget ) {\r\n\t\t\treturn new constructor( options, element );\r\n\t\t}\r\n\r\n\t\t// Allow instantiation without initializing for simple inheritance\r\n\t\t// must use \"new\" keyword (the code above always passes args)\r\n\t\tif ( arguments.length ) {\r\n\t\t\tthis._createWidget( options, element );\r\n\t\t}\r\n\t};\r\n\r\n\t// Extend with the existing constructor to carry over any static properties\r\n\t$.extend( constructor, existingConstructor, {\r\n\t\tversion: prototype.version,\r\n\r\n\t\t// Copy the object used to create the prototype in case we need to\r\n\t\t// redefine the widget later\r\n\t\t_proto: $.extend( {}, prototype ),\r\n\r\n\t\t// Track widgets that inherit from this widget in case this widget is\r\n\t\t// redefined after a widget inherits from it\r\n\t\t_childConstructors: []\r\n\t} );\r\n\r\n\tbasePrototype = new base();\r\n\r\n\t// We need to make the options hash a property directly on the new instance\r\n\t// otherwise we'll modify the options hash on the prototype that we're\r\n\t// inheriting from\r\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\r\n\t$.each( prototype, function( prop, value ) {\r\n\t\tif ( typeof value !== \"function\" ) {\r\n\t\t\tproxiedPrototype[ prop ] = value;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tproxiedPrototype[ prop ] = ( function() {\r\n\t\t\tfunction _super() {\r\n\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\r\n\t\t\t}\r\n\r\n\t\t\tfunction _superApply( args ) {\r\n\t\t\t\treturn base.prototype[ prop ].apply( this, args );\r\n\t\t\t}\r\n\r\n\t\t\treturn function() {\r\n\t\t\t\tvar __super = this._super;\r\n\t\t\t\tvar __superApply = this._superApply;\r\n\t\t\t\tvar returnValue;\r\n\r\n\t\t\t\tthis._super = _super;\r\n\t\t\t\tthis._superApply = _superApply;\r\n\r\n\t\t\t\treturnValue = value.apply( this, arguments );\r\n\r\n\t\t\t\tthis._super = __super;\r\n\t\t\t\tthis._superApply = __superApply;\r\n\r\n\t\t\t\treturn returnValue;\r\n\t\t\t};\r\n\t\t} )();\r\n\t} );\r\n\tconstructor.prototype = $.widget.extend( basePrototype, {\r\n\r\n\t\t// TODO: remove support for widgetEventPrefix\r\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\r\n\t\t// don't prefix for widgets that aren't DOM-based\r\n\t\twidgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name\r\n\t}, proxiedPrototype, {\r\n\t\tconstructor: constructor,\r\n\t\tnamespace: namespace,\r\n\t\twidgetName: name,\r\n\t\twidgetFullName: fullName\r\n\t} );\r\n\r\n\t// If this widget is being redefined then we need to find all widgets that\r\n\t// are inheriting from it and redefine all of them so that they inherit from\r\n\t// the new version of this widget. We're essentially trying to replace one\r\n\t// level in the prototype chain.\r\n\tif ( existingConstructor ) {\r\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\r\n\t\t\tvar childPrototype = child.prototype;\r\n\r\n\t\t\t// Redefine the child widget using the same prototype that was\r\n\t\t\t// originally used, but inherit from the new version of the base\r\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor,\r\n\t\t\t\tchild._proto );\r\n\t\t} );\r\n\r\n\t\t// Remove the list of existing child constructors from the old constructor\r\n\t\t// so the old child constructors can be garbage collected\r\n\t\tdelete existingConstructor._childConstructors;\r\n\t} else {\r\n\t\tbase._childConstructors.push( constructor );\r\n\t}\r\n\r\n\t$.widget.bridge( name, constructor );\r\n\r\n\treturn constructor;\r\n};\r\n\r\n$.widget.extend = function( target ) {\r\n\tvar input = widgetSlice.call( arguments, 1 );\r\n\tvar inputIndex = 0;\r\n\tvar inputLength = input.length;\r\n\tvar key;\r\n\tvar value;\r\n\r\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\r\n\t\tfor ( key in input[ inputIndex ] ) {\r\n\t\t\tvalue = input[ inputIndex ][ key ];\r\n\t\t\tif ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) {\r\n\r\n\t\t\t\t// Clone objects\r\n\t\t\t\tif ( $.isPlainObject( value ) ) {\r\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\r\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\r\n\r\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\r\n\t\t\t\t\t\t$.widget.extend( {}, value );\r\n\r\n\t\t\t\t// Copy everything else by reference\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttarget[ key ] = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn target;\r\n};\r\n\r\n$.widget.bridge = function( name, object ) {\r\n\tvar fullName = object.prototype.widgetFullName || name;\r\n\t$.fn[ name ] = function( options ) {\r\n\t\tvar isMethodCall = typeof options === \"string\";\r\n\t\tvar args = widgetSlice.call( arguments, 1 );\r\n\t\tvar returnValue = this;\r\n\r\n\t\tif ( isMethodCall ) {\r\n\r\n\t\t\t// If this is an empty collection, we need to have the instance method\r\n\t\t\t// return undefined instead of the jQuery instance\r\n\t\t\tif ( !this.length && options === \"instance\" ) {\r\n\t\t\t\treturnValue = undefined;\r\n\t\t\t} else {\r\n\t\t\t\tthis.each( function() {\r\n\t\t\t\t\tvar methodValue;\r\n\t\t\t\t\tvar instance = $.data( this, fullName );\r\n\r\n\t\t\t\t\tif ( options === \"instance\" ) {\r\n\t\t\t\t\t\treturnValue = instance;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( !instance ) {\r\n\t\t\t\t\t\treturn $.error( \"cannot call methods on \" + name +\r\n\t\t\t\t\t\t\t\" prior to initialization; \" +\r\n\t\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( typeof instance[ options ] !== \"function\" ||\r\n\t\t\t\t\t\toptions.charAt( 0 ) === \"_\" ) {\r\n\t\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name +\r\n\t\t\t\t\t\t\t\" widget instance\" );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\r\n\r\n\t\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\r\n\t\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\r\n\t\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\r\n\t\t\t\t\t\t\tmethodValue;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\t// Allow multiple hashes to be passed on init\r\n\t\t\tif ( args.length ) {\r\n\t\t\t\toptions = $.widget.extend.apply( null, [ options ].concat( args ) );\r\n\t\t\t}\r\n\r\n\t\t\tthis.each( function() {\r\n\t\t\t\tvar instance = $.data( this, fullName );\r\n\t\t\t\tif ( instance ) {\r\n\t\t\t\t\tinstance.option( options || {} );\r\n\t\t\t\t\tif ( instance._init ) {\r\n\t\t\t\t\t\tinstance._init();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\treturn returnValue;\r\n\t};\r\n};\r\n\r\n$.Widget = function( /* options, element */ ) {};\r\n$.Widget._childConstructors = [];\r\n\r\n$.Widget.prototype = {\r\n\twidgetName: \"widget\",\r\n\twidgetEventPrefix: \"\",\r\n\tdefaultElement: \"<div>\",\r\n\r\n\toptions: {\r\n\t\tclasses: {},\r\n\t\tdisabled: false,\r\n\r\n\t\t// Callbacks\r\n\t\tcreate: null\r\n\t},\r\n\r\n\t_createWidget: function( options, element ) {\r\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\r\n\t\tthis.element = $( element );\r\n\t\tthis.uuid = widgetUuid++;\r\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\r\n\r\n\t\tthis.bindings = $();\r\n\t\tthis.hoverable = $();\r\n\t\tthis.focusable = $();\r\n\t\tthis.classesElementLookup = {};\r\n\r\n\t\tif ( element !== this ) {\r\n\t\t\t$.data( element, this.widgetFullName, this );\r\n\t\t\tthis._on( true, this.element, {\r\n\t\t\t\tremove: function( event ) {\r\n\t\t\t\t\tif ( event.target === element ) {\r\n\t\t\t\t\t\tthis.destroy();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t\tthis.document = $( element.style ?\r\n\r\n\t\t\t\t// Element within the document\r\n\t\t\t\telement.ownerDocument :\r\n\r\n\t\t\t\t// Element is window or document\r\n\t\t\t\telement.document || element );\r\n\t\t\tthis.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );\r\n\t\t}\r\n\r\n\t\tthis.options = $.widget.extend( {},\r\n\t\t\tthis.options,\r\n\t\t\tthis._getCreateOptions(),\r\n\t\t\toptions );\r\n\r\n\t\tthis._create();\r\n\r\n\t\tif ( this.options.disabled ) {\r\n\t\t\tthis._setOptionDisabled( this.options.disabled );\r\n\t\t}\r\n\r\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\r\n\t\tthis._init();\r\n\t},\r\n\r\n\t_getCreateOptions: function() {\r\n\t\treturn {};\r\n\t},\r\n\r\n\t_getCreateEventData: $.noop,\r\n\r\n\t_create: $.noop,\r\n\r\n\t_init: $.noop,\r\n\r\n\tdestroy: function() {\r\n\t\tvar that = this;\r\n\r\n\t\tthis._destroy();\r\n\t\t$.each( this.classesElementLookup, function( key, value ) {\r\n\t\t\tthat._removeClass( value, key );\r\n\t\t} );\r\n\r\n\t\t// We can probably remove the unbind calls in 2.0\r\n\t\t// all event bindings should go through this._on()\r\n\t\tthis.element\r\n\t\t\t.off( this.eventNamespace )\r\n\t\t\t.removeData( this.widgetFullName );\r\n\t\tthis.widget()\r\n\t\t\t.off( this.eventNamespace )\r\n\t\t\t.removeAttr( \"aria-disabled\" );\r\n\r\n\t\t// Clean up events and states\r\n\t\tthis.bindings.off( this.eventNamespace );\r\n\t},\r\n\r\n\t_destroy: $.noop,\r\n\r\n\twidget: function() {\r\n\t\treturn this.element;\r\n\t},\r\n\r\n\toption: function( key, value ) {\r\n\t\tvar options = key;\r\n\t\tvar parts;\r\n\t\tvar curOption;\r\n\t\tvar i;\r\n\r\n\t\tif ( arguments.length === 0 ) {\r\n\r\n\t\t\t// Don't return a reference to the internal hash\r\n\t\t\treturn $.widget.extend( {}, this.options );\r\n\t\t}\r\n\r\n\t\tif ( typeof key === \"string\" ) {\r\n\r\n\t\t\t// Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\r\n\t\t\toptions = {};\r\n\t\t\tparts = key.split( \".\" );\r\n\t\t\tkey = parts.shift();\r\n\t\t\tif ( parts.length ) {\r\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\r\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\r\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\r\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\r\n\t\t\t\t}\r\n\t\t\t\tkey = parts.pop();\r\n\t\t\t\tif ( arguments.length === 1 ) {\r\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\r\n\t\t\t\t}\r\n\t\t\t\tcurOption[ key ] = value;\r\n\t\t\t} else {\r\n\t\t\t\tif ( arguments.length === 1 ) {\r\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\r\n\t\t\t\t}\r\n\t\t\t\toptions[ key ] = value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._setOptions( options );\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_setOptions: function( options ) {\r\n\t\tvar key;\r\n\r\n\t\tfor ( key in options ) {\r\n\t\t\tthis._setOption( key, options[ key ] );\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\t\tif ( key === \"classes\" ) {\r\n\t\t\tthis._setOptionClasses( value );\r\n\t\t}\r\n\r\n\t\tthis.options[ key ] = value;\r\n\r\n\t\tif ( key === \"disabled\" ) {\r\n\t\t\tthis._setOptionDisabled( value );\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_setOptionClasses: function( value ) {\r\n\t\tvar classKey, elements, currentElements;\r\n\r\n\t\tfor ( classKey in value ) {\r\n\t\t\tcurrentElements = this.classesElementLookup[ classKey ];\r\n\t\t\tif ( value[ classKey ] === this.options.classes[ classKey ] ||\r\n\t\t\t\t\t!currentElements ||\r\n\t\t\t\t\t!currentElements.length ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// We are doing this to create a new jQuery object because the _removeClass() call\r\n\t\t\t// on the next line is going to destroy the reference to the current elements being\r\n\t\t\t// tracked. We need to save a copy of this collection so that we can add the new classes\r\n\t\t\t// below.\r\n\t\t\telements = $( currentElements.get() );\r\n\t\t\tthis._removeClass( currentElements, classKey );\r\n\r\n\t\t\t// We don't use _addClass() here, because that uses this.options.classes\r\n\t\t\t// for generating the string of classes. We want to use the value passed in from\r\n\t\t\t// _setOption(), this is the new value of the classes option which was passed to\r\n\t\t\t// _setOption(). We pass this value directly to _classes().\r\n\t\t\telements.addClass( this._classes( {\r\n\t\t\t\telement: elements,\r\n\t\t\t\tkeys: classKey,\r\n\t\t\t\tclasses: value,\r\n\t\t\t\tadd: true\r\n\t\t\t} ) );\r\n\t\t}\r\n\t},\r\n\r\n\t_setOptionDisabled: function( value ) {\r\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null, !!value );\r\n\r\n\t\t// If the widget is becoming disabled, then nothing is interactive\r\n\t\tif ( value ) {\r\n\t\t\tthis._removeClass( this.hoverable, null, \"ui-state-hover\" );\r\n\t\t\tthis._removeClass( this.focusable, null, \"ui-state-focus\" );\r\n\t\t}\r\n\t},\r\n\r\n\tenable: function() {\r\n\t\treturn this._setOptions( { disabled: false } );\r\n\t},\r\n\r\n\tdisable: function() {\r\n\t\treturn this._setOptions( { disabled: true } );\r\n\t},\r\n\r\n\t_classes: function( options ) {\r\n\t\tvar full = [];\r\n\t\tvar that = this;\r\n\r\n\t\toptions = $.extend( {\r\n\t\t\telement: this.element,\r\n\t\t\tclasses: this.options.classes || {}\r\n\t\t}, options );\r\n\r\n\t\tfunction bindRemoveEvent() {\r\n\t\t\tvar nodesToBind = [];\r\n\r\n\t\t\toptions.element.each( function( _, element ) {\r\n\t\t\t\tvar isTracked = $.map( that.classesElementLookup, function( elements ) {\r\n\t\t\t\t\treturn elements;\r\n\t\t\t\t} )\r\n\t\t\t\t\t.some( function( elements ) {\r\n\t\t\t\t\t\treturn elements.is( element );\r\n\t\t\t\t\t} );\r\n\r\n\t\t\t\tif ( !isTracked ) {\r\n\t\t\t\t\tnodesToBind.push( element );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\r\n\t\t\tthat._on( $( nodesToBind ), {\r\n\t\t\t\tremove: \"_untrackClassesElement\"\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\tfunction processClassString( classes, checkOption ) {\r\n\t\t\tvar current, i;\r\n\t\t\tfor ( i = 0; i < classes.length; i++ ) {\r\n\t\t\t\tcurrent = that.classesElementLookup[ classes[ i ] ] || $();\r\n\t\t\t\tif ( options.add ) {\r\n\t\t\t\t\tbindRemoveEvent();\r\n\t\t\t\t\tcurrent = $( $.uniqueSort( current.get().concat( options.element.get() ) ) );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcurrent = $( current.not( options.element ).get() );\r\n\t\t\t\t}\r\n\t\t\t\tthat.classesElementLookup[ classes[ i ] ] = current;\r\n\t\t\t\tfull.push( classes[ i ] );\r\n\t\t\t\tif ( checkOption && options.classes[ classes[ i ] ] ) {\r\n\t\t\t\t\tfull.push( options.classes[ classes[ i ] ] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( options.keys ) {\r\n\t\t\tprocessClassString( options.keys.match( /\\S+/g ) || [], true );\r\n\t\t}\r\n\t\tif ( options.extra ) {\r\n\t\t\tprocessClassString( options.extra.match( /\\S+/g ) || [] );\r\n\t\t}\r\n\r\n\t\treturn full.join( \" \" );\r\n\t},\r\n\r\n\t_untrackClassesElement: function( event ) {\r\n\t\tvar that = this;\r\n\t\t$.each( that.classesElementLookup, function( key, value ) {\r\n\t\t\tif ( $.inArray( event.target, value ) !== -1 ) {\r\n\t\t\t\tthat.classesElementLookup[ key ] = $( value.not( event.target ).get() );\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\tthis._off( $( event.target ) );\r\n\t},\r\n\r\n\t_removeClass: function( element, keys, extra ) {\r\n\t\treturn this._toggleClass( element, keys, extra, false );\r\n\t},\r\n\r\n\t_addClass: function( element, keys, extra ) {\r\n\t\treturn this._toggleClass( element, keys, extra, true );\r\n\t},\r\n\r\n\t_toggleClass: function( element, keys, extra, add ) {\r\n\t\tadd = ( typeof add === \"boolean\" ) ? add : extra;\r\n\t\tvar shift = ( typeof element === \"string\" || element === null ),\r\n\t\t\toptions = {\r\n\t\t\t\textra: shift ? keys : extra,\r\n\t\t\t\tkeys: shift ? element : keys,\r\n\t\t\t\telement: shift ? this.element : element,\r\n\t\t\t\tadd: add\r\n\t\t\t};\r\n\t\toptions.element.toggleClass( this._classes( options ), add );\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_on: function( suppressDisabledCheck, element, handlers ) {\r\n\t\tvar delegateElement;\r\n\t\tvar instance = this;\r\n\r\n\t\t// No suppressDisabledCheck flag, shuffle arguments\r\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\r\n\t\t\thandlers = element;\r\n\t\t\telement = suppressDisabledCheck;\r\n\t\t\tsuppressDisabledCheck = false;\r\n\t\t}\r\n\r\n\t\t// No element argument, shuffle and use this.element\r\n\t\tif ( !handlers ) {\r\n\t\t\thandlers = element;\r\n\t\t\telement = this.element;\r\n\t\t\tdelegateElement = this.widget();\r\n\t\t} else {\r\n\t\t\telement = delegateElement = $( element );\r\n\t\t\tthis.bindings = this.bindings.add( element );\r\n\t\t}\r\n\r\n\t\t$.each( handlers, function( event, handler ) {\r\n\t\t\tfunction handlerProxy() {\r\n\r\n\t\t\t\t// Allow widgets to customize the disabled handling\r\n\t\t\t\t// - disabled as an array instead of boolean\r\n\t\t\t\t// - disabled class as method for disabling individual parts\r\n\t\t\t\tif ( !suppressDisabledCheck &&\r\n\t\t\t\t\t\t( instance.options.disabled === true ||\r\n\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\r\n\t\t\t\t\t.apply( instance, arguments );\r\n\t\t\t}\r\n\r\n\t\t\t// Copy the guid so direct unbinding works\r\n\t\t\tif ( typeof handler !== \"string\" ) {\r\n\t\t\t\thandlerProxy.guid = handler.guid =\r\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\r\n\t\t\t}\r\n\r\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ );\r\n\t\t\tvar eventName = match[ 1 ] + instance.eventNamespace;\r\n\t\t\tvar selector = match[ 2 ];\r\n\r\n\t\t\tif ( selector ) {\r\n\t\t\t\tdelegateElement.on( eventName, selector, handlerProxy );\r\n\t\t\t} else {\r\n\t\t\t\telement.on( eventName, handlerProxy );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\t_off: function( element, eventName ) {\r\n\t\teventName = ( eventName || \"\" ).split( \" \" ).join( this.eventNamespace + \" \" ) +\r\n\t\t\tthis.eventNamespace;\r\n\t\telement.off( eventName );\r\n\r\n\t\t// Clear the stack to avoid memory leaks (#10056)\r\n\t\tthis.bindings = $( this.bindings.not( element ).get() );\r\n\t\tthis.focusable = $( this.focusable.not( element ).get() );\r\n\t\tthis.hoverable = $( this.hoverable.not( element ).get() );\r\n\t},\r\n\r\n\t_delay: function( handler, delay ) {\r\n\t\tfunction handlerProxy() {\r\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\r\n\t\t\t\t.apply( instance, arguments );\r\n\t\t}\r\n\t\tvar instance = this;\r\n\t\treturn setTimeout( handlerProxy, delay || 0 );\r\n\t},\r\n\r\n\t_hoverable: function( element ) {\r\n\t\tthis.hoverable = this.hoverable.add( element );\r\n\t\tthis._on( element, {\r\n\t\t\tmouseenter: function( event ) {\r\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-hover\" );\r\n\t\t\t},\r\n\t\t\tmouseleave: function( event ) {\r\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-hover\" );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\t_focusable: function( element ) {\r\n\t\tthis.focusable = this.focusable.add( element );\r\n\t\tthis._on( element, {\r\n\t\t\tfocusin: function( event ) {\r\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-focus\" );\r\n\t\t\t},\r\n\t\t\tfocusout: function( event ) {\r\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-focus\" );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\t_trigger: function( type, event, data ) {\r\n\t\tvar prop, orig;\r\n\t\tvar callback = this.options[ type ];\r\n\r\n\t\tdata = data || {};\r\n\t\tevent = $.Event( event );\r\n\t\tevent.type = ( type === this.widgetEventPrefix ?\r\n\t\t\ttype :\r\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\r\n\r\n\t\t// The original event may come from any element\r\n\t\t// so we need to reset the target on the new event\r\n\t\tevent.target = this.element[ 0 ];\r\n\r\n\t\t// Copy original event properties over to the new event\r\n\t\torig = event.originalEvent;\r\n\t\tif ( orig ) {\r\n\t\t\tfor ( prop in orig ) {\r\n\t\t\t\tif ( !( prop in event ) ) {\r\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.element.trigger( event, data );\r\n\t\treturn !( typeof callback === \"function\" &&\r\n\t\t\tcallback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||\r\n\t\t\tevent.isDefaultPrevented() );\r\n\t}\r\n};\r\n\r\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\r\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\r\n\t\tif ( typeof options === \"string\" ) {\r\n\t\t\toptions = { effect: options };\r\n\t\t}\r\n\r\n\t\tvar hasOptions;\r\n\t\tvar effectName = !options ?\r\n\t\t\tmethod :\r\n\t\t\toptions === true || typeof options === \"number\" ?\r\n\t\t\t\tdefaultEffect :\r\n\t\t\t\toptions.effect || defaultEffect;\r\n\r\n\t\toptions = options || {};\r\n\t\tif ( typeof options === \"number\" ) {\r\n\t\t\toptions = { duration: options };\r\n\t\t} else if ( options === true ) {\r\n\t\t\toptions = {};\r\n\t\t}\r\n\r\n\t\thasOptions = !$.isEmptyObject( options );\r\n\t\toptions.complete = callback;\r\n\r\n\t\tif ( options.delay ) {\r\n\t\t\telement.delay( options.delay );\r\n\t\t}\r\n\r\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\r\n\t\t\telement[ method ]( options );\r\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\r\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\r\n\t\t} else {\r\n\t\t\telement.queue( function( next ) {\r\n\t\t\t\t$( this )[ method ]();\r\n\t\t\t\tif ( callback ) {\r\n\t\t\t\t\tcallback.call( element[ 0 ] );\r\n\t\t\t\t}\r\n\t\t\t\tnext();\r\n\t\t\t} );\r\n\t\t}\r\n\t};\r\n} );\r\n\r\nvar widget = $.widget;\r\n\r\n\r\n/*!\r\n * jQuery UI Position 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n *\r\n * https://api.jqueryui.com/position/\r\n */\r\n\r\n//>>label: Position\r\n//>>group: Core\r\n//>>description: Positions elements relative to other elements.\r\n//>>docs: https://api.jqueryui.com/position/\r\n//>>demos: https://jqueryui.com/position/\r\n\r\n\r\n( function() {\r\nvar cachedScrollbarWidth,\r\n\tmax = Math.max,\r\n\tabs = Math.abs,\r\n\trhorizontal = /left|center|right/,\r\n\trvertical = /top|center|bottom/,\r\n\troffset = /[\\+\\-]\\d+(\\.[\\d]+)?%?/,\r\n\trposition = /^\\w+/,\r\n\trpercent = /%$/,\r\n\t_position = $.fn.position;\r\n\r\nfunction getOffsets( offsets, width, height ) {\r\n\treturn [\r\n\t\tparseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\r\n\t\tparseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\r\n\t];\r\n}\r\n\r\nfunction parseCss( element, property ) {\r\n\treturn parseInt( $.css( element, property ), 10 ) || 0;\r\n}\r\n\r\nfunction isWindow( obj ) {\r\n\treturn obj != null && obj === obj.window;\r\n}\r\n\r\nfunction getDimensions( elem ) {\r\n\tvar raw = elem[ 0 ];\r\n\tif ( raw.nodeType === 9 ) {\r\n\t\treturn {\r\n\t\t\twidth: elem.width(),\r\n\t\t\theight: elem.height(),\r\n\t\t\toffset: { top: 0, left: 0 }\r\n\t\t};\r\n\t}\r\n\tif ( isWindow( raw ) ) {\r\n\t\treturn {\r\n\t\t\twidth: elem.width(),\r\n\t\t\theight: elem.height(),\r\n\t\t\toffset: { top: elem.scrollTop(), left: elem.scrollLeft() }\r\n\t\t};\r\n\t}\r\n\tif ( raw.preventDefault ) {\r\n\t\treturn {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0,\r\n\t\t\toffset: { top: raw.pageY, left: raw.pageX }\r\n\t\t};\r\n\t}\r\n\treturn {\r\n\t\twidth: elem.outerWidth(),\r\n\t\theight: elem.outerHeight(),\r\n\t\toffset: elem.offset()\r\n\t};\r\n}\r\n\r\n$.position = {\r\n\tscrollbarWidth: function() {\r\n\t\tif ( cachedScrollbarWidth !== undefined ) {\r\n\t\t\treturn cachedScrollbarWidth;\r\n\t\t}\r\n\t\tvar w1, w2,\r\n\t\t\tdiv = $( \"<div style=\" +\r\n\t\t\t\t\"'display:block;position:absolute;width:200px;height:200px;overflow:hidden;'>\" +\r\n\t\t\t\t\"<div style='height:300px;width:auto;'></div></div>\" ),\r\n\t\t\tinnerDiv = div.children()[ 0 ];\r\n\r\n\t\t$( \"body\" ).append( div );\r\n\t\tw1 = innerDiv.offsetWidth;\r\n\t\tdiv.css( \"overflow\", \"scroll\" );\r\n\r\n\t\tw2 = innerDiv.offsetWidth;\r\n\r\n\t\tif ( w1 === w2 ) {\r\n\t\t\tw2 = div[ 0 ].clientWidth;\r\n\t\t}\r\n\r\n\t\tdiv.remove();\r\n\r\n\t\treturn ( cachedScrollbarWidth = w1 - w2 );\r\n\t},\r\n\tgetScrollInfo: function( within ) {\r\n\t\tvar overflowX = within.isWindow || within.isDocument ? \"\" :\r\n\t\t\t\twithin.element.css( \"overflow-x\" ),\r\n\t\t\toverflowY = within.isWindow || within.isDocument ? \"\" :\r\n\t\t\t\twithin.element.css( \"overflow-y\" ),\r\n\t\t\thasOverflowX = overflowX === \"scroll\" ||\r\n\t\t\t\t( overflowX === \"auto\" && within.width < within.element[ 0 ].scrollWidth ),\r\n\t\t\thasOverflowY = overflowY === \"scroll\" ||\r\n\t\t\t\t( overflowY === \"auto\" && within.height < within.element[ 0 ].scrollHeight );\r\n\t\treturn {\r\n\t\t\twidth: hasOverflowY ? $.position.scrollbarWidth() : 0,\r\n\t\t\theight: hasOverflowX ? $.position.scrollbarWidth() : 0\r\n\t\t};\r\n\t},\r\n\tgetWithinInfo: function( element ) {\r\n\t\tvar withinElement = $( element || window ),\r\n\t\t\tisElemWindow = isWindow( withinElement[ 0 ] ),\r\n\t\t\tisDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,\r\n\t\t\thasOffset = !isElemWindow && !isDocument;\r\n\t\treturn {\r\n\t\t\telement: withinElement,\r\n\t\t\tisWindow: isElemWindow,\r\n\t\t\tisDocument: isDocument,\r\n\t\t\toffset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },\r\n\t\t\tscrollLeft: withinElement.scrollLeft(),\r\n\t\t\tscrollTop: withinElement.scrollTop(),\r\n\t\t\twidth: withinElement.outerWidth(),\r\n\t\t\theight: withinElement.outerHeight()\r\n\t\t};\r\n\t}\r\n};\r\n\r\n$.fn.position = function( options ) {\r\n\tif ( !options || !options.of ) {\r\n\t\treturn _position.apply( this, arguments );\r\n\t}\r\n\r\n\t// Make a copy, we don't want to modify arguments\r\n\toptions = $.extend( {}, options );\r\n\r\n\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,\r\n\r\n\t\t// Make sure string options are treated as CSS selectors\r\n\t\ttarget = typeof options.of === \"string\" ?\r\n\t\t\t$( document ).find( options.of ) :\r\n\t\t\t$( options.of ),\r\n\r\n\t\twithin = $.position.getWithinInfo( options.within ),\r\n\t\tscrollInfo = $.position.getScrollInfo( within ),\r\n\t\tcollision = ( options.collision || \"flip\" ).split( \" \" ),\r\n\t\toffsets = {};\r\n\r\n\tdimensions = getDimensions( target );\r\n\tif ( target[ 0 ].preventDefault ) {\r\n\r\n\t\t// Force left top to allow flipping\r\n\t\toptions.at = \"left top\";\r\n\t}\r\n\ttargetWidth = dimensions.width;\r\n\ttargetHeight = dimensions.height;\r\n\ttargetOffset = dimensions.offset;\r\n\r\n\t// Clone to reuse original targetOffset later\r\n\tbasePosition = $.extend( {}, targetOffset );\r\n\r\n\t// Force my and at to have valid horizontal and vertical positions\r\n\t// if a value is missing or invalid, it will be converted to center\r\n\t$.each( [ \"my\", \"at\" ], function() {\r\n\t\tvar pos = ( options[ this ] || \"\" ).split( \" \" ),\r\n\t\t\thorizontalOffset,\r\n\t\t\tverticalOffset;\r\n\r\n\t\tif ( pos.length === 1 ) {\r\n\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\r\n\t\t\t\tpos.concat( [ \"center\" ] ) :\r\n\t\t\t\trvertical.test( pos[ 0 ] ) ?\r\n\t\t\t\t\t[ \"center\" ].concat( pos ) :\r\n\t\t\t\t\t[ \"center\", \"center\" ];\r\n\t\t}\r\n\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : \"center\";\r\n\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : \"center\";\r\n\r\n\t\t// Calculate offsets\r\n\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\r\n\t\tverticalOffset = roffset.exec( pos[ 1 ] );\r\n\t\toffsets[ this ] = [\r\n\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\r\n\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\r\n\t\t];\r\n\r\n\t\t// Reduce to just the positions without the offsets\r\n\t\toptions[ this ] = [\r\n\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\r\n\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\r\n\t\t];\r\n\t} );\r\n\r\n\t// Normalize collision option\r\n\tif ( collision.length === 1 ) {\r\n\t\tcollision[ 1 ] = collision[ 0 ];\r\n\t}\r\n\r\n\tif ( options.at[ 0 ] === \"right\" ) {\r\n\t\tbasePosition.left += targetWidth;\r\n\t} else if ( options.at[ 0 ] === \"center\" ) {\r\n\t\tbasePosition.left += targetWidth / 2;\r\n\t}\r\n\r\n\tif ( options.at[ 1 ] === \"bottom\" ) {\r\n\t\tbasePosition.top += targetHeight;\r\n\t} else if ( options.at[ 1 ] === \"center\" ) {\r\n\t\tbasePosition.top += targetHeight / 2;\r\n\t}\r\n\r\n\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\r\n\tbasePosition.left += atOffset[ 0 ];\r\n\tbasePosition.top += atOffset[ 1 ];\r\n\r\n\treturn this.each( function() {\r\n\t\tvar collisionPosition, using,\r\n\t\t\telem = $( this ),\r\n\t\t\telemWidth = elem.outerWidth(),\r\n\t\t\telemHeight = elem.outerHeight(),\r\n\t\t\tmarginLeft = parseCss( this, \"marginLeft\" ),\r\n\t\t\tmarginTop = parseCss( this, \"marginTop\" ),\r\n\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, \"marginRight\" ) +\r\n\t\t\t\tscrollInfo.width,\r\n\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, \"marginBottom\" ) +\r\n\t\t\t\tscrollInfo.height,\r\n\t\t\tposition = $.extend( {}, basePosition ),\r\n\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\r\n\r\n\t\tif ( options.my[ 0 ] === \"right\" ) {\r\n\t\t\tposition.left -= elemWidth;\r\n\t\t} else if ( options.my[ 0 ] === \"center\" ) {\r\n\t\t\tposition.left -= elemWidth / 2;\r\n\t\t}\r\n\r\n\t\tif ( options.my[ 1 ] === \"bottom\" ) {\r\n\t\t\tposition.top -= elemHeight;\r\n\t\t} else if ( options.my[ 1 ] === \"center\" ) {\r\n\t\t\tposition.top -= elemHeight / 2;\r\n\t\t}\r\n\r\n\t\tposition.left += myOffset[ 0 ];\r\n\t\tposition.top += myOffset[ 1 ];\r\n\r\n\t\tcollisionPosition = {\r\n\t\t\tmarginLeft: marginLeft,\r\n\t\t\tmarginTop: marginTop\r\n\t\t};\r\n\r\n\t\t$.each( [ \"left\", \"top\" ], function( i, dir ) {\r\n\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\r\n\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\r\n\t\t\t\t\ttargetWidth: targetWidth,\r\n\t\t\t\t\ttargetHeight: targetHeight,\r\n\t\t\t\t\telemWidth: elemWidth,\r\n\t\t\t\t\telemHeight: elemHeight,\r\n\t\t\t\t\tcollisionPosition: collisionPosition,\r\n\t\t\t\t\tcollisionWidth: collisionWidth,\r\n\t\t\t\t\tcollisionHeight: collisionHeight,\r\n\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\r\n\t\t\t\t\tmy: options.my,\r\n\t\t\t\t\tat: options.at,\r\n\t\t\t\t\twithin: within,\r\n\t\t\t\t\telem: elem\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\tif ( options.using ) {\r\n\r\n\t\t\t// Adds feedback as second argument to using callback, if present\r\n\t\t\tusing = function( props ) {\r\n\t\t\t\tvar left = targetOffset.left - position.left,\r\n\t\t\t\t\tright = left + targetWidth - elemWidth,\r\n\t\t\t\t\ttop = targetOffset.top - position.top,\r\n\t\t\t\t\tbottom = top + targetHeight - elemHeight,\r\n\t\t\t\t\tfeedback = {\r\n\t\t\t\t\t\ttarget: {\r\n\t\t\t\t\t\t\telement: target,\r\n\t\t\t\t\t\t\tleft: targetOffset.left,\r\n\t\t\t\t\t\t\ttop: targetOffset.top,\r\n\t\t\t\t\t\t\twidth: targetWidth,\r\n\t\t\t\t\t\t\theight: targetHeight\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\telement: {\r\n\t\t\t\t\t\t\telement: elem,\r\n\t\t\t\t\t\t\tleft: position.left,\r\n\t\t\t\t\t\t\ttop: position.top,\r\n\t\t\t\t\t\t\twidth: elemWidth,\r\n\t\t\t\t\t\t\theight: elemHeight\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\thorizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\r\n\t\t\t\t\t\tvertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\r\n\t\t\t\t\t};\r\n\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\r\n\t\t\t\t\tfeedback.horizontal = \"center\";\r\n\t\t\t\t}\r\n\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\r\n\t\t\t\t\tfeedback.vertical = \"middle\";\r\n\t\t\t\t}\r\n\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\r\n\t\t\t\t\tfeedback.important = \"horizontal\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfeedback.important = \"vertical\";\r\n\t\t\t\t}\r\n\t\t\t\toptions.using.call( this, props, feedback );\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\telem.offset( $.extend( position, { using: using } ) );\r\n\t} );\r\n};\r\n\r\n$.ui.position = {\r\n\tfit: {\r\n\t\tleft: function( position, data ) {\r\n\t\t\tvar within = data.within,\r\n\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\r\n\t\t\t\touterWidth = within.width,\r\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\r\n\t\t\t\toverLeft = withinOffset - collisionPosLeft,\r\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\r\n\t\t\t\tnewOverRight;\r\n\r\n\t\t\t// Element is wider than within\r\n\t\t\tif ( data.collisionWidth > outerWidth ) {\r\n\r\n\t\t\t\t// Element is initially over the left side of within\r\n\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\r\n\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth -\r\n\t\t\t\t\t\twithinOffset;\r\n\t\t\t\t\tposition.left += overLeft - newOverRight;\r\n\r\n\t\t\t\t// Element is initially over right side of within\r\n\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\r\n\t\t\t\t\tposition.left = withinOffset;\r\n\r\n\t\t\t\t// Element is initially over both left and right sides of within\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif ( overLeft > overRight ) {\r\n\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tposition.left = withinOffset;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t// Too far left -> align with left edge\r\n\t\t\t} else if ( overLeft > 0 ) {\r\n\t\t\t\tposition.left += overLeft;\r\n\r\n\t\t\t// Too far right -> align with right edge\r\n\t\t\t} else if ( overRight > 0 ) {\r\n\t\t\t\tposition.left -= overRight;\r\n\r\n\t\t\t// Adjust based on position and margin\r\n\t\t\t} else {\r\n\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\r\n\t\t\t}\r\n\t\t},\r\n\t\ttop: function( position, data ) {\r\n\t\t\tvar within = data.within,\r\n\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\r\n\t\t\t\touterHeight = data.within.height,\r\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\r\n\t\t\t\toverTop = withinOffset - collisionPosTop,\r\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\r\n\t\t\t\tnewOverBottom;\r\n\r\n\t\t\t// Element is taller than within\r\n\t\t\tif ( data.collisionHeight > outerHeight ) {\r\n\r\n\t\t\t\t// Element is initially over the top of within\r\n\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\r\n\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight -\r\n\t\t\t\t\t\twithinOffset;\r\n\t\t\t\t\tposition.top += overTop - newOverBottom;\r\n\r\n\t\t\t\t// Element is initially over bottom of within\r\n\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\r\n\t\t\t\t\tposition.top = withinOffset;\r\n\r\n\t\t\t\t// Element is initially over both top and bottom of within\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif ( overTop > overBottom ) {\r\n\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tposition.top = withinOffset;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t// Too far up -> align with top\r\n\t\t\t} else if ( overTop > 0 ) {\r\n\t\t\t\tposition.top += overTop;\r\n\r\n\t\t\t// Too far down -> align with bottom edge\r\n\t\t\t} else if ( overBottom > 0 ) {\r\n\t\t\t\tposition.top -= overBottom;\r\n\r\n\t\t\t// Adjust based on position and margin\r\n\t\t\t} else {\r\n\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tflip: {\r\n\t\tleft: function( position, data ) {\r\n\t\t\tvar within = data.within,\r\n\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\r\n\t\t\t\touterWidth = within.width,\r\n\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\r\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\r\n\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\r\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\r\n\t\t\t\tmyOffset = data.my[ 0 ] === \"left\" ?\r\n\t\t\t\t\t-data.elemWidth :\r\n\t\t\t\t\tdata.my[ 0 ] === \"right\" ?\r\n\t\t\t\t\t\tdata.elemWidth :\r\n\t\t\t\t\t\t0,\r\n\t\t\t\tatOffset = data.at[ 0 ] === \"left\" ?\r\n\t\t\t\t\tdata.targetWidth :\r\n\t\t\t\t\tdata.at[ 0 ] === \"right\" ?\r\n\t\t\t\t\t\t-data.targetWidth :\r\n\t\t\t\t\t\t0,\r\n\t\t\t\toffset = -2 * data.offset[ 0 ],\r\n\t\t\t\tnewOverRight,\r\n\t\t\t\tnewOverLeft;\r\n\r\n\t\t\tif ( overLeft < 0 ) {\r\n\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -\r\n\t\t\t\t\touterWidth - withinOffset;\r\n\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\r\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\r\n\t\t\t\t}\r\n\t\t\t} else if ( overRight > 0 ) {\r\n\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +\r\n\t\t\t\t\tatOffset + offset - offsetLeft;\r\n\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\r\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\ttop: function( position, data ) {\r\n\t\t\tvar within = data.within,\r\n\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\r\n\t\t\t\touterHeight = within.height,\r\n\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\r\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\r\n\t\t\t\toverTop = collisionPosTop - offsetTop,\r\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\r\n\t\t\t\ttop = data.my[ 1 ] === \"top\",\r\n\t\t\t\tmyOffset = top ?\r\n\t\t\t\t\t-data.elemHeight :\r\n\t\t\t\t\tdata.my[ 1 ] === \"bottom\" ?\r\n\t\t\t\t\t\tdata.elemHeight :\r\n\t\t\t\t\t\t0,\r\n\t\t\t\tatOffset = data.at[ 1 ] === \"top\" ?\r\n\t\t\t\t\tdata.targetHeight :\r\n\t\t\t\t\tdata.at[ 1 ] === \"bottom\" ?\r\n\t\t\t\t\t\t-data.targetHeight :\r\n\t\t\t\t\t\t0,\r\n\t\t\t\toffset = -2 * data.offset[ 1 ],\r\n\t\t\t\tnewOverTop,\r\n\t\t\t\tnewOverBottom;\r\n\t\t\tif ( overTop < 0 ) {\r\n\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -\r\n\t\t\t\t\touterHeight - withinOffset;\r\n\t\t\t\tif ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {\r\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\r\n\t\t\t\t}\r\n\t\t\t} else if ( overBottom > 0 ) {\r\n\t\t\t\tnewOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +\r\n\t\t\t\t\toffset - offsetTop;\r\n\t\t\t\tif ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {\r\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tflipfit: {\r\n\t\tleft: function() {\r\n\t\t\t$.ui.position.flip.left.apply( this, arguments );\r\n\t\t\t$.ui.position.fit.left.apply( this, arguments );\r\n\t\t},\r\n\t\ttop: function() {\r\n\t\t\t$.ui.position.flip.top.apply( this, arguments );\r\n\t\t\t$.ui.position.fit.top.apply( this, arguments );\r\n\t\t}\r\n\t}\r\n};\r\n\r\n} )();\r\n\r\nvar position = $.ui.position;\r\n\r\n\r\n/*!\r\n * jQuery UI :data 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: :data Selector\r\n//>>group: Core\r\n//>>description: Selects elements which have data stored under the specified key.\r\n//>>docs: https://api.jqueryui.com/data-selector/\r\n\r\n\r\nvar data = $.extend( $.expr.pseudos, {\r\n\tdata: $.expr.createPseudo( function( dataName ) {\r\n\t\treturn function( elem ) {\r\n\t\t\treturn !!$.data( elem, dataName );\r\n\t\t};\r\n\t} )\r\n} );\r\n\r\n/*!\r\n * jQuery UI Disable Selection 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: disableSelection\r\n//>>group: Core\r\n//>>description: Disable selection of text content within the set of matched elements.\r\n//>>docs: https://api.jqueryui.com/disableSelection/\r\n\r\n// This file is deprecated\r\n\r\nvar disableSelection = $.fn.extend( {\r\n\tdisableSelection: ( function() {\r\n\t\tvar eventType = \"onselectstart\" in document.createElement( \"div\" ) ?\r\n\t\t\t\"selectstart\" :\r\n\t\t\t\"mousedown\";\r\n\r\n\t\treturn function() {\r\n\t\t\treturn this.on( eventType + \".ui-disableSelection\", function( event ) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t} );\r\n\t\t};\r\n\t} )(),\r\n\r\n\tenableSelection: function() {\r\n\t\treturn this.off( \".ui-disableSelection\" );\r\n\t}\r\n} );\r\n\r\n\r\n\r\n// Create a local jQuery because jQuery Color relies on it and the\r\n// global may not exist with AMD and a custom build (#10199).\r\n// This module is a noop if used as a regular AMD module.\r\n// eslint-disable-next-line no-unused-vars\r\nvar jQuery = $;\r\n\r\n\r\n/*!\r\n * jQuery Color Animations v3.0.0\r\n * https://github.com/jquery/jquery-color\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n *\r\n * Date: Wed May 15 16:49:44 2024 +0200\r\n */\r\n\r\n\r\n\tvar stepHooks = \"backgroundColor borderBottomColor borderLeftColor borderRightColor \" +\r\n\t\t\"borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\",\r\n\r\n\tclass2type = {},\r\n\ttoString = class2type.toString,\r\n\r\n\t// plusequals test for += 100 -= 100\r\n\trplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\r\n\r\n\t// a set of RE's that can match strings and generate color tuples.\r\n\tstringParsers = [ {\r\n\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\r\n\t\t\tparse: function( execResult ) {\r\n\t\t\t\treturn [\r\n\t\t\t\t\texecResult[ 1 ],\r\n\t\t\t\t\texecResult[ 2 ],\r\n\t\t\t\t\texecResult[ 3 ],\r\n\t\t\t\t\texecResult[ 4 ]\r\n\t\t\t\t];\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\r\n\t\t\tparse: function( execResult ) {\r\n\t\t\t\treturn [\r\n\t\t\t\t\texecResult[ 1 ] * 2.55,\r\n\t\t\t\t\texecResult[ 2 ] * 2.55,\r\n\t\t\t\t\texecResult[ 3 ] * 2.55,\r\n\t\t\t\t\texecResult[ 4 ]\r\n\t\t\t\t];\r\n\t\t\t}\r\n\t\t}, {\r\n\r\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\r\n\t\t\tre: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,\r\n\t\t\tparse: function( execResult ) {\r\n\t\t\t\treturn [\r\n\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\r\n\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\r\n\t\t\t\t\tparseInt( execResult[ 3 ], 16 ),\r\n\t\t\t\t\texecResult[ 4 ] ?\r\n\t\t\t\t\t\t( parseInt( execResult[ 4 ], 16 ) / 255 ).toFixed( 2 ) :\r\n\t\t\t\t\t\t1\r\n\t\t\t\t];\r\n\t\t\t}\r\n\t\t}, {\r\n\r\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\r\n\t\t\tre: /#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,\r\n\t\t\tparse: function( execResult ) {\r\n\t\t\t\treturn [\r\n\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\r\n\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\r\n\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 ),\r\n\t\t\t\t\texecResult[ 4 ] ?\r\n\t\t\t\t\t\t( parseInt( execResult[ 4 ] + execResult[ 4 ], 16 ) / 255 )\r\n\t\t\t\t\t\t\t.toFixed( 2 ) :\r\n\t\t\t\t\t\t1\r\n\t\t\t\t];\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\r\n\t\t\tspace: \"hsla\",\r\n\t\t\tparse: function( execResult ) {\r\n\t\t\t\treturn [\r\n\t\t\t\t\texecResult[ 1 ],\r\n\t\t\t\t\texecResult[ 2 ] / 100,\r\n\t\t\t\t\texecResult[ 3 ] / 100,\r\n\t\t\t\t\texecResult[ 4 ]\r\n\t\t\t\t];\r\n\t\t\t}\r\n\t\t} ],\r\n\r\n\t// jQuery.Color( )\r\n\tcolor = jQuery.Color = function( color, green, blue, alpha ) {\r\n\t\treturn new jQuery.Color.fn.parse( color, green, blue, alpha );\r\n\t},\r\n\tspaces = {\r\n\t\trgba: {\r\n\t\t\tprops: {\r\n\t\t\t\tred: {\r\n\t\t\t\t\tidx: 0,\r\n\t\t\t\t\ttype: \"byte\"\r\n\t\t\t\t},\r\n\t\t\t\tgreen: {\r\n\t\t\t\t\tidx: 1,\r\n\t\t\t\t\ttype: \"byte\"\r\n\t\t\t\t},\r\n\t\t\t\tblue: {\r\n\t\t\t\t\tidx: 2,\r\n\t\t\t\t\ttype: \"byte\"\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\thsla: {\r\n\t\t\tprops: {\r\n\t\t\t\thue: {\r\n\t\t\t\t\tidx: 0,\r\n\t\t\t\t\ttype: \"degrees\"\r\n\t\t\t\t},\r\n\t\t\t\tsaturation: {\r\n\t\t\t\t\tidx: 1,\r\n\t\t\t\t\ttype: \"percent\"\r\n\t\t\t\t},\r\n\t\t\t\tlightness: {\r\n\t\t\t\t\tidx: 2,\r\n\t\t\t\t\ttype: \"percent\"\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tpropTypes = {\r\n\t\t\"byte\": {\r\n\t\t\tfloor: true,\r\n\t\t\tmax: 255\r\n\t\t},\r\n\t\t\"percent\": {\r\n\t\t\tmax: 1\r\n\t\t},\r\n\t\t\"degrees\": {\r\n\t\t\tmod: 360,\r\n\t\t\tfloor: true\r\n\t\t}\r\n\t},\r\n\r\n\t// colors = jQuery.Color.names\r\n\tcolors,\r\n\r\n\t// local aliases of functions called often\r\n\teach = jQuery.each;\r\n\r\n// define cache name and alpha properties\r\n// for rgba and hsla spaces\r\neach( spaces, function( spaceName, space ) {\r\n\tspace.cache = \"_\" + spaceName;\r\n\tspace.props.alpha = {\r\n\t\tidx: 3,\r\n\t\ttype: \"percent\",\r\n\t\tdef: 1\r\n\t};\r\n} );\r\n\r\n// Populate the class2type map\r\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\r\n\tfunction( _i, name ) {\r\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\r\n\t} );\r\n\r\nfunction getType( obj ) {\r\n\tif ( obj == null ) {\r\n\t\treturn obj + \"\";\r\n\t}\r\n\r\n\treturn typeof obj === \"object\" ?\r\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\r\n\t\ttypeof obj;\r\n}\r\n\r\nfunction clamp( value, prop, allowEmpty ) {\r\n\tvar type = propTypes[ prop.type ] || {};\r\n\r\n\tif ( value == null ) {\r\n\t\treturn ( allowEmpty || !prop.def ) ? null : prop.def;\r\n\t}\r\n\r\n\t// ~~ is an short way of doing floor for positive numbers\r\n\tvalue = type.floor ? ~~value : parseFloat( value );\r\n\r\n\tif ( type.mod ) {\r\n\r\n\t\t// we add mod before modding to make sure that negatives values\r\n\t\t// get converted properly: -10 -> 350\r\n\t\treturn ( value + type.mod ) % type.mod;\r\n\t}\r\n\r\n\t// for now all property types without mod have min and max\r\n\treturn Math.min( type.max, Math.max( 0, value ) );\r\n}\r\n\r\nfunction stringParse( string ) {\r\n\tvar inst = color(),\r\n\t\trgba = inst._rgba = [];\r\n\r\n\tstring = string.toLowerCase();\r\n\r\n\teach( stringParsers, function( _i, parser ) {\r\n\t\tvar parsed,\r\n\t\t\tmatch = parser.re.exec( string ),\r\n\t\t\tvalues = match && parser.parse( match ),\r\n\t\t\tspaceName = parser.space || \"rgba\";\r\n\r\n\t\tif ( values ) {\r\n\t\t\tparsed = inst[ spaceName ]( values );\r\n\r\n\t\t\t// if this was an rgba parse the assignment might happen twice\r\n\t\t\t// oh well....\r\n\t\t\tinst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];\r\n\t\t\trgba = inst._rgba = parsed._rgba;\r\n\r\n\t\t\t// exit each( stringParsers ) here because we matched\r\n\t\t\treturn false;\r\n\t\t}\r\n\t} );\r\n\r\n\t// Found a stringParser that handled it\r\n\tif ( rgba.length ) {\r\n\r\n\t\t// if this came from a parsed string, force \"transparent\" when alpha is 0\r\n\t\t// chrome, (and maybe others) return \"transparent\" as rgba(0,0,0,0)\r\n\t\tif ( rgba.join() === \"0,0,0,0\" ) {\r\n\t\t\tjQuery.extend( rgba, colors.transparent );\r\n\t\t}\r\n\t\treturn inst;\r\n\t}\r\n\r\n\t// named colors\r\n\treturn colors[ string ];\r\n}\r\n\r\ncolor.fn = jQuery.extend( color.prototype, {\r\n\tparse: function( red, green, blue, alpha ) {\r\n\t\tif ( red === undefined ) {\r\n\t\t\tthis._rgba = [ null, null, null, null ];\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif ( red.jquery || red.nodeType ) {\r\n\t\t\tred = jQuery( red ).css( green );\r\n\t\t\tgreen = undefined;\r\n\t\t}\r\n\r\n\t\tvar inst = this,\r\n\t\t\ttype = getType( red ),\r\n\t\t\trgba = this._rgba = [];\r\n\r\n\t\t// more than 1 argument specified - assume ( red, green, blue, alpha )\r\n\t\tif ( green !== undefined ) {\r\n\t\t\tred = [ red, green, blue, alpha ];\r\n\t\t\ttype = \"array\";\r\n\t\t}\r\n\r\n\t\tif ( type === \"string\" ) {\r\n\t\t\treturn this.parse( stringParse( red ) || colors._default );\r\n\t\t}\r\n\r\n\t\tif ( type === \"array\" ) {\r\n\t\t\teach( spaces.rgba.props, function( _key, prop ) {\r\n\t\t\t\trgba[ prop.idx ] = clamp( red[ prop.idx ], prop );\r\n\t\t\t} );\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tif ( type === \"object\" ) {\r\n\t\t\tif ( red instanceof color ) {\r\n\t\t\t\teach( spaces, function( _spaceName, space ) {\r\n\t\t\t\t\tif ( red[ space.cache ] ) {\r\n\t\t\t\t\t\tinst[ space.cache ] = red[ space.cache ].slice();\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t} else {\r\n\t\t\t\teach( spaces, function( _spaceName, space ) {\r\n\t\t\t\t\tvar cache = space.cache;\r\n\t\t\t\t\teach( space.props, function( key, prop ) {\r\n\r\n\t\t\t\t\t\t// if the cache doesn't exist, and we know how to convert\r\n\t\t\t\t\t\tif ( !inst[ cache ] && space.to ) {\r\n\r\n\t\t\t\t\t\t\t// if the value was null, we don't need to copy it\r\n\t\t\t\t\t\t\t// if the key was alpha, we don't need to copy it either\r\n\t\t\t\t\t\t\tif ( key === \"alpha\" || red[ key ] == null ) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tinst[ cache ] = space.to( inst._rgba );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// this is the only case where we allow nulls for ALL properties.\r\n\t\t\t\t\t\t// call clamp with alwaysAllowEmpty\r\n\t\t\t\t\t\tinst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );\r\n\t\t\t\t\t} );\r\n\r\n\t\t\t\t\t// everything defined but alpha?\r\n\t\t\t\t\tif ( inst[ cache ] && jQuery.inArray(\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tinst[ cache ].slice( 0, 3 )\r\n\t\t\t\t\t) < 0 ) {\r\n\r\n\t\t\t\t\t\t// use the default of 1\r\n\t\t\t\t\t\tif ( inst[ cache ][ 3 ] == null ) {\r\n\t\t\t\t\t\t\tinst[ cache ][ 3 ] = 1;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ( space.from ) {\r\n\t\t\t\t\t\t\tinst._rgba = space.from( inst[ cache ] );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\t},\r\n\tis: function( compare ) {\r\n\t\tvar is = color( compare ),\r\n\t\t\tsame = true,\r\n\t\t\tinst = this;\r\n\r\n\t\teach( spaces, function( _, space ) {\r\n\t\t\tvar localCache,\r\n\t\t\t\tisCache = is[ space.cache ];\r\n\t\t\tif ( isCache ) {\r\n\t\t\t\tlocalCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];\r\n\t\t\t\teach( space.props, function( _, prop ) {\r\n\t\t\t\t\tif ( isCache[ prop.idx ] != null ) {\r\n\t\t\t\t\t\tsame = ( isCache[ prop.idx ] === localCache[ prop.idx ] );\r\n\t\t\t\t\t\treturn same;\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t\treturn same;\r\n\t\t} );\r\n\t\treturn same;\r\n\t},\r\n\t_space: function() {\r\n\t\tvar used = [],\r\n\t\t\tinst = this;\r\n\t\teach( spaces, function( spaceName, space ) {\r\n\t\t\tif ( inst[ space.cache ] ) {\r\n\t\t\t\tused.push( spaceName );\r\n\t\t\t}\r\n\t\t} );\r\n\t\treturn used.pop();\r\n\t},\r\n\ttransition: function( other, distance ) {\r\n\t\tvar end = color( other ),\r\n\t\t\tspaceName = end._space(),\r\n\t\t\tspace = spaces[ spaceName ],\r\n\t\t\tstartColor = this.alpha() === 0 ? color( \"transparent\" ) : this,\r\n\t\t\tstart = startColor[ space.cache ] || space.to( startColor._rgba ),\r\n\t\t\tresult = start.slice();\r\n\r\n\t\tend = end[ space.cache ];\r\n\t\teach( space.props, function( _key, prop ) {\r\n\t\t\tvar index = prop.idx,\r\n\t\t\t\tstartValue = start[ index ],\r\n\t\t\t\tendValue = end[ index ],\r\n\t\t\t\ttype = propTypes[ prop.type ] || {};\r\n\r\n\t\t\t// if null, don't override start value\r\n\t\t\tif ( endValue === null ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// if null - use end\r\n\t\t\tif ( startValue === null ) {\r\n\t\t\t\tresult[ index ] = endValue;\r\n\t\t\t} else {\r\n\t\t\t\tif ( type.mod ) {\r\n\t\t\t\t\tif ( endValue - startValue > type.mod / 2 ) {\r\n\t\t\t\t\t\tstartValue += type.mod;\r\n\t\t\t\t\t} else if ( startValue - endValue > type.mod / 2 ) {\r\n\t\t\t\t\t\tstartValue -= type.mod;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tresult[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );\r\n\t\t\t}\r\n\t\t} );\r\n\t\treturn this[ spaceName ]( result );\r\n\t},\r\n\tblend: function( opaque ) {\r\n\r\n\t\t// if we are already opaque - return ourself\r\n\t\tif ( this._rgba[ 3 ] === 1 ) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tvar rgb = this._rgba.slice(),\r\n\t\t\ta = rgb.pop(),\r\n\t\t\tblend = color( opaque )._rgba;\r\n\r\n\t\treturn color( jQuery.map( rgb, function( v, i ) {\r\n\t\t\treturn ( 1 - a ) * blend[ i ] + a * v;\r\n\t\t} ) );\r\n\t},\r\n\ttoRgbaString: function() {\r\n\t\tvar prefix = \"rgba(\",\r\n\t\t\trgba = jQuery.map( this._rgba, function( v, i ) {\r\n\t\t\t\tif ( v != null ) {\r\n\t\t\t\t\treturn v;\r\n\t\t\t\t}\r\n\t\t\t\treturn i > 2 ? 1 : 0;\r\n\t\t\t} );\r\n\r\n\t\tif ( rgba[ 3 ] === 1 ) {\r\n\t\t\trgba.pop();\r\n\t\t\tprefix = \"rgb(\";\r\n\t\t}\r\n\r\n\t\treturn prefix + rgba.join( \", \" ) + \")\";\r\n\t},\r\n\ttoHslaString: function() {\r\n\t\tvar prefix = \"hsla(\",\r\n\t\t\thsla = jQuery.map( this.hsla(), function( v, i ) {\r\n\t\t\t\tif ( v == null ) {\r\n\t\t\t\t\tv = i > 2 ? 1 : 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// catch 1 and 2\r\n\t\t\t\tif ( i && i < 3 ) {\r\n\t\t\t\t\tv = Math.round( v * 100 ) + \"%\";\r\n\t\t\t\t}\r\n\t\t\t\treturn v;\r\n\t\t\t} );\r\n\r\n\t\tif ( hsla[ 3 ] === 1 ) {\r\n\t\t\thsla.pop();\r\n\t\t\tprefix = \"hsl(\";\r\n\t\t}\r\n\t\treturn prefix + hsla.join( \", \" ) + \")\";\r\n\t},\r\n\ttoHexString: function( includeAlpha ) {\r\n\t\tvar rgba = this._rgba.slice(),\r\n\t\t\talpha = rgba.pop();\r\n\r\n\t\tif ( includeAlpha ) {\r\n\t\t\trgba.push( ~~( alpha * 255 ) );\r\n\t\t}\r\n\r\n\t\treturn \"#\" + jQuery.map( rgba, function( v ) {\r\n\r\n\t\t\t// default to 0 when nulls exist\r\n\t\t\treturn ( \"0\" + ( v || 0 ).toString( 16 ) ).substr( -2 );\r\n\t\t} ).join( \"\" );\r\n\t},\r\n\ttoString: function() {\r\n\t\treturn this.toRgbaString();\r\n\t}\r\n} );\r\ncolor.fn.parse.prototype = color.fn;\r\n\r\n// hsla conversions adapted from:\r\n// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\r\n\r\nfunction hue2rgb( p, q, h ) {\r\n\th = ( h + 1 ) % 1;\r\n\tif ( h * 6 < 1 ) {\r\n\t\treturn p + ( q - p ) * h * 6;\r\n\t}\r\n\tif ( h * 2 < 1 ) {\r\n\t\treturn q;\r\n\t}\r\n\tif ( h * 3 < 2 ) {\r\n\t\treturn p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;\r\n\t}\r\n\treturn p;\r\n}\r\n\r\nspaces.hsla.to = function( rgba ) {\r\n\tif ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {\r\n\t\treturn [ null, null, null, rgba[ 3 ] ];\r\n\t}\r\n\tvar r = rgba[ 0 ] / 255,\r\n\t\tg = rgba[ 1 ] / 255,\r\n\t\tb = rgba[ 2 ] / 255,\r\n\t\ta = rgba[ 3 ],\r\n\t\tmax = Math.max( r, g, b ),\r\n\t\tmin = Math.min( r, g, b ),\r\n\t\tdiff = max - min,\r\n\t\tadd = max + min,\r\n\t\tl = add * 0.5,\r\n\t\th, s;\r\n\r\n\tif ( min === max ) {\r\n\t\th = 0;\r\n\t} else if ( r === max ) {\r\n\t\th = ( 60 * ( g - b ) / diff ) + 360;\r\n\t} else if ( g === max ) {\r\n\t\th = ( 60 * ( b - r ) / diff ) + 120;\r\n\t} else {\r\n\t\th = ( 60 * ( r - g ) / diff ) + 240;\r\n\t}\r\n\r\n\t// chroma (diff) == 0 means greyscale which, by definition, saturation = 0%\r\n\t// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)\r\n\tif ( diff === 0 ) {\r\n\t\ts = 0;\r\n\t} else if ( l <= 0.5 ) {\r\n\t\ts = diff / add;\r\n\t} else {\r\n\t\ts = diff / ( 2 - add );\r\n\t}\r\n\treturn [ Math.round( h ) % 360, s, l, a == null ? 1 : a ];\r\n};\r\n\r\nspaces.hsla.from = function( hsla ) {\r\n\tif ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {\r\n\t\treturn [ null, null, null, hsla[ 3 ] ];\r\n\t}\r\n\tvar h = hsla[ 0 ] / 360,\r\n\t\ts = hsla[ 1 ],\r\n\t\tl = hsla[ 2 ],\r\n\t\ta = hsla[ 3 ],\r\n\t\tq = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,\r\n\t\tp = 2 * l - q;\r\n\r\n\treturn [\r\n\t\tMath.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),\r\n\t\tMath.round( hue2rgb( p, q, h ) * 255 ),\r\n\t\tMath.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),\r\n\t\ta\r\n\t];\r\n};\r\n\r\n\r\neach( spaces, function( spaceName, space ) {\r\n\tvar props = space.props,\r\n\t\tcache = space.cache,\r\n\t\tto = space.to,\r\n\t\tfrom = space.from;\r\n\r\n\t// makes rgba() and hsla()\r\n\tcolor.fn[ spaceName ] = function( value ) {\r\n\r\n\t\t// generate a cache for this space if it doesn't exist\r\n\t\tif ( to && !this[ cache ] ) {\r\n\t\t\tthis[ cache ] = to( this._rgba );\r\n\t\t}\r\n\t\tif ( value === undefined ) {\r\n\t\t\treturn this[ cache ].slice();\r\n\t\t}\r\n\r\n\t\tvar ret,\r\n\t\t\ttype = getType( value ),\r\n\t\t\tarr = ( type === \"array\" || type === \"object\" ) ? value : arguments,\r\n\t\t\tlocal = this[ cache ].slice();\r\n\r\n\t\teach( props, function( key, prop ) {\r\n\t\t\tvar val = arr[ type === \"object\" ? key : prop.idx ];\r\n\t\t\tif ( val == null ) {\r\n\t\t\t\tval = local[ prop.idx ];\r\n\t\t\t}\r\n\t\t\tlocal[ prop.idx ] = clamp( val, prop );\r\n\t\t} );\r\n\r\n\t\tif ( from ) {\r\n\t\t\tret = color( from( local ) );\r\n\t\t\tret[ cache ] = local;\r\n\t\t\treturn ret;\r\n\t\t} else {\r\n\t\t\treturn color( local );\r\n\t\t}\r\n\t};\r\n\r\n\t// makes red() green() blue() alpha() hue() saturation() lightness()\r\n\teach( props, function( key, prop ) {\r\n\r\n\t\t// alpha is included in more than one space\r\n\t\tif ( color.fn[ key ] ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcolor.fn[ key ] = function( value ) {\r\n\t\t\tvar local, cur, match, fn,\r\n\t\t\t\tvtype = getType( value );\r\n\r\n\t\t\tif ( key === \"alpha\" ) {\r\n\t\t\t\tfn = this._hsla ? \"hsla\" : \"rgba\";\r\n\t\t\t} else {\r\n\t\t\t\tfn = spaceName;\r\n\t\t\t}\r\n\t\t\tlocal = this[ fn ]();\r\n\t\t\tcur = local[ prop.idx ];\r\n\r\n\t\t\tif ( vtype === \"undefined\" ) {\r\n\t\t\t\treturn cur;\r\n\t\t\t}\r\n\r\n\t\t\tif ( vtype === \"function\" ) {\r\n\t\t\t\tvalue = value.call( this, cur );\r\n\t\t\t\tvtype = getType( value );\r\n\t\t\t}\r\n\t\t\tif ( value == null && prop.empty ) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t\tif ( vtype === \"string\" ) {\r\n\t\t\t\tmatch = rplusequals.exec( value );\r\n\t\t\t\tif ( match ) {\r\n\t\t\t\t\tvalue = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === \"+\" ? 1 : -1 );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tlocal[ prop.idx ] = value;\r\n\t\t\treturn this[ fn ]( local );\r\n\t\t};\r\n\t} );\r\n} );\r\n\r\n// add cssHook and .fx.step function for each named hook.\r\n// accept a space separated string of properties\r\ncolor.hook = function( hook ) {\r\n\tvar hooks = hook.split( \" \" );\r\n\teach( hooks, function( _i, hook ) {\r\n\t\tjQuery.cssHooks[ hook ] = {\r\n\t\t\tset: function( elem, value ) {\r\n\t\t\t\tvar parsed;\r\n\r\n\t\t\t\tif ( value !== \"transparent\" &&\r\n\t\t\t\t\t( getType( value ) !== \"string\" ||\r\n\t\t\t\t\t\t( parsed = stringParse( value ) ) ) ) {\r\n\t\t\t\t\tvalue = color( parsed || value );\r\n\t\t\t\t\tvalue = value.toRgbaString();\r\n\t\t\t\t}\r\n\t\t\t\telem.style[ hook ] = value;\r\n\t\t\t}\r\n\t\t};\r\n\t\tjQuery.fx.step[ hook ] = function( fx ) {\r\n\t\t\tif ( !fx.colorInit ) {\r\n\t\t\t\tfx.start = color( fx.elem, hook );\r\n\t\t\t\tfx.end = color( fx.end );\r\n\t\t\t\tfx.colorInit = true;\r\n\t\t\t}\r\n\t\t\tjQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );\r\n\t\t};\r\n\t} );\r\n\r\n};\r\n\r\ncolor.hook( stepHooks );\r\n\r\njQuery.cssHooks.borderColor = {\r\n\texpand: function( value ) {\r\n\t\tvar expanded = {};\r\n\r\n\t\teach( [ \"Top\", \"Right\", \"Bottom\", \"Left\" ], function( _i, part ) {\r\n\t\t\texpanded[ \"border\" + part + \"Color\" ] = value;\r\n\t\t} );\r\n\t\treturn expanded;\r\n\t}\r\n};\r\n\r\n// Basic color names only.\r\n// Usage of any of the other color names requires adding yourself or including\r\n// jquery.color.svg-names.js.\r\ncolors = jQuery.Color.names = {\r\n\r\n\t// 4.1. Basic color keywords\r\n\taqua: \"#00ffff\",\r\n\tblack: \"#000000\",\r\n\tblue: \"#0000ff\",\r\n\tfuchsia: \"#ff00ff\",\r\n\tgray: \"#808080\",\r\n\tgreen: \"#008000\",\r\n\tlime: \"#00ff00\",\r\n\tmaroon: \"#800000\",\r\n\tnavy: \"#000080\",\r\n\tolive: \"#808000\",\r\n\tpurple: \"#800080\",\r\n\tred: \"#ff0000\",\r\n\tsilver: \"#c0c0c0\",\r\n\tteal: \"#008080\",\r\n\twhite: \"#ffffff\",\r\n\tyellow: \"#ffff00\",\r\n\r\n\t// 4.2.3. \"transparent\" color keyword\r\n\ttransparent: [ null, null, null, 0 ],\r\n\r\n\t_default: \"#ffffff\"\r\n};\r\n\r\n\r\n/*!\r\n * jQuery UI Effects 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Effects Core\r\n//>>group: Effects\r\n/* eslint-disable max-len */\r\n//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.\r\n/* eslint-enable max-len */\r\n//>>docs: https://api.jqueryui.com/category/effects-core/\r\n//>>demos: https://jqueryui.com/effect/\r\n\r\n\r\nvar dataSpace = \"ui-effects-\",\r\n\tdataSpaceStyle = \"ui-effects-style\",\r\n\tdataSpaceAnimated = \"ui-effects-animated\";\r\n\r\n$.effects = {\r\n\teffect: {}\r\n};\r\n\r\n/******************************************************************************/\r\n/****************************** CLASS ANIMATIONS ******************************/\r\n/******************************************************************************/\r\n( function() {\r\n\r\nvar classAnimationActions = [ \"add\", \"remove\", \"toggle\" ],\r\n\tshorthandStyles = {\r\n\t\tborder: 1,\r\n\t\tborderBottom: 1,\r\n\t\tborderColor: 1,\r\n\t\tborderLeft: 1,\r\n\t\tborderRight: 1,\r\n\t\tborderTop: 1,\r\n\t\tborderWidth: 1,\r\n\t\tmargin: 1,\r\n\t\tpadding: 1\r\n\t};\r\n\r\n$.each(\r\n\t[ \"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\" ],\r\n\tfunction( _, prop ) {\r\n\t\t$.fx.step[ prop ] = function( fx ) {\r\n\t\t\tif ( fx.end !== \"none\" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {\r\n\t\t\t\tjQuery.style( fx.elem, prop, fx.end );\r\n\t\t\t\tfx.setAttr = true;\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n);\r\n\r\nfunction camelCase( string ) {\r\n\treturn string.replace( /-([\\da-z])/gi, function( all, letter ) {\r\n\t\treturn letter.toUpperCase();\r\n\t} );\r\n}\r\n\r\nfunction getElementStyles( elem ) {\r\n\tvar key, len,\r\n\t\tstyle = elem.ownerDocument.defaultView.getComputedStyle( elem ),\r\n\t\tstyles = {};\r\n\r\n\tlen = style.length;\r\n\twhile ( len-- ) {\r\n\t\tkey = style[ len ];\r\n\t\tif ( typeof style[ key ] === \"string\" ) {\r\n\t\t\tstyles[ camelCase( key ) ] = style[ key ];\r\n\t\t}\r\n\t}\r\n\r\n\treturn styles;\r\n}\r\n\r\nfunction styleDifference( oldStyle, newStyle ) {\r\n\tvar diff = {},\r\n\t\tname, value;\r\n\r\n\tfor ( name in newStyle ) {\r\n\t\tvalue = newStyle[ name ];\r\n\t\tif ( oldStyle[ name ] !== value ) {\r\n\t\t\tif ( !shorthandStyles[ name ] ) {\r\n\t\t\t\tif ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {\r\n\t\t\t\t\tdiff[ name ] = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn diff;\r\n}\r\n\r\n$.effects.animateClass = function( value, duration, easing, callback ) {\r\n\tvar o = $.speed( duration, easing, callback );\r\n\r\n\treturn this.queue( function() {\r\n\t\tvar animated = $( this ),\r\n\t\t\tbaseClass = animated.attr( \"class\" ) || \"\",\r\n\t\t\tapplyClassChange,\r\n\t\t\tallAnimations = o.children ? animated.find( \"*\" ).addBack() : animated;\r\n\r\n\t\t// Map the animated objects to store the original styles.\r\n\t\tallAnimations = allAnimations.map( function() {\r\n\t\t\tvar el = $( this );\r\n\t\t\treturn {\r\n\t\t\t\tel: el,\r\n\t\t\t\tstart: getElementStyles( this )\r\n\t\t\t};\r\n\t\t} );\r\n\r\n\t\t// Apply class change\r\n\t\tapplyClassChange = function() {\r\n\t\t\t$.each( classAnimationActions, function( i, action ) {\r\n\t\t\t\tif ( value[ action ] ) {\r\n\t\t\t\t\tanimated[ action + \"Class\" ]( value[ action ] );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t};\r\n\t\tapplyClassChange();\r\n\r\n\t\t// Map all animated objects again - calculate new styles and diff\r\n\t\tallAnimations = allAnimations.map( function() {\r\n\t\t\tthis.end = getElementStyles( this.el[ 0 ] );\r\n\t\t\tthis.diff = styleDifference( this.start, this.end );\r\n\t\t\treturn this;\r\n\t\t} );\r\n\r\n\t\t// Apply original class\r\n\t\tanimated.attr( \"class\", baseClass );\r\n\r\n\t\t// Map all animated objects again - this time collecting a promise\r\n\t\tallAnimations = allAnimations.map( function() {\r\n\t\t\tvar styleInfo = this,\r\n\t\t\t\tdfd = $.Deferred(),\r\n\t\t\t\topts = $.extend( {}, o, {\r\n\t\t\t\t\tqueue: false,\r\n\t\t\t\t\tcomplete: function() {\r\n\t\t\t\t\t\tdfd.resolve( styleInfo );\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\r\n\t\t\tthis.el.animate( this.diff, opts );\r\n\t\t\treturn dfd.promise();\r\n\t\t} );\r\n\r\n\t\t// Once all animations have completed:\r\n\t\t$.when.apply( $, allAnimations.get() ).done( function() {\r\n\r\n\t\t\t// Set the final class\r\n\t\t\tapplyClassChange();\r\n\r\n\t\t\t// For each animated element,\r\n\t\t\t// clear all css properties that were animated\r\n\t\t\t$.each( arguments, function() {\r\n\t\t\t\tvar el = this.el;\r\n\t\t\t\t$.each( this.diff, function( key ) {\r\n\t\t\t\t\tel.css( key, \"\" );\r\n\t\t\t\t} );\r\n\t\t\t} );\r\n\r\n\t\t\t// This is guarnteed to be there if you use jQuery.speed()\r\n\t\t\t// it also handles dequeuing the next anim...\r\n\t\t\to.complete.call( animated[ 0 ] );\r\n\t\t} );\r\n\t} );\r\n};\r\n\r\n$.fn.extend( {\r\n\taddClass: ( function( orig ) {\r\n\t\treturn function( classNames, speed, easing, callback ) {\r\n\t\t\treturn speed ?\r\n\t\t\t\t$.effects.animateClass.call( this,\r\n\t\t\t\t\t{ add: classNames }, speed, easing, callback ) :\r\n\t\t\t\torig.apply( this, arguments );\r\n\t\t};\r\n\t} )( $.fn.addClass ),\r\n\r\n\tremoveClass: ( function( orig ) {\r\n\t\treturn function( classNames, speed, easing, callback ) {\r\n\t\t\treturn arguments.length > 1 ?\r\n\t\t\t\t$.effects.animateClass.call( this,\r\n\t\t\t\t\t{ remove: classNames }, speed, easing, callback ) :\r\n\t\t\t\torig.apply( this, arguments );\r\n\t\t};\r\n\t} )( $.fn.removeClass ),\r\n\r\n\ttoggleClass: ( function( orig ) {\r\n\t\treturn function( classNames, force, speed, easing, callback ) {\r\n\t\t\tif ( typeof force === \"boolean\" || force === undefined ) {\r\n\t\t\t\tif ( !speed ) {\r\n\r\n\t\t\t\t\t// Without speed parameter\r\n\t\t\t\t\treturn orig.apply( this, arguments );\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn $.effects.animateClass.call( this,\r\n\t\t\t\t\t\t( force ? { add: classNames } : { remove: classNames } ),\r\n\t\t\t\t\t\tspeed, easing, callback );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// Without force parameter\r\n\t\t\t\treturn $.effects.animateClass.call( this,\r\n\t\t\t\t\t{ toggle: classNames }, force, speed, easing );\r\n\t\t\t}\r\n\t\t};\r\n\t} )( $.fn.toggleClass ),\r\n\r\n\tswitchClass: function( remove, add, speed, easing, callback ) {\r\n\t\treturn $.effects.animateClass.call( this, {\r\n\t\t\tadd: add,\r\n\t\t\tremove: remove\r\n\t\t}, speed, easing, callback );\r\n\t}\r\n} );\r\n\r\n} )();\r\n\r\n/******************************************************************************/\r\n/*********************************** EFFECTS **********************************/\r\n/******************************************************************************/\r\n\r\n( function() {\r\n\r\nif ( $.expr && $.expr.pseudos && $.expr.pseudos.animated ) {\r\n\t$.expr.pseudos.animated = ( function( orig ) {\r\n\t\treturn function( elem ) {\r\n\t\t\treturn !!$( elem ).data( dataSpaceAnimated ) || orig( elem );\r\n\t\t};\r\n\t} )( $.expr.pseudos.animated );\r\n}\r\n\r\nif ( $.uiBackCompat === true ) {\r\n\t$.extend( $.effects, {\r\n\r\n\t\t// Saves a set of properties in a data storage\r\n\t\tsave: function( element, set ) {\r\n\t\t\tvar i = 0, length = set.length;\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tif ( set[ i ] !== null ) {\r\n\t\t\t\t\telement.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Restores a set of previously saved properties from a data storage\r\n\t\trestore: function( element, set ) {\r\n\t\t\tvar val, i = 0, length = set.length;\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tif ( set[ i ] !== null ) {\r\n\t\t\t\t\tval = element.data( dataSpace + set[ i ] );\r\n\t\t\t\t\telement.css( set[ i ], val );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tsetMode: function( el, mode ) {\r\n\t\t\tif ( mode === \"toggle\" ) {\r\n\t\t\t\tmode = el.is( \":hidden\" ) ? \"show\" : \"hide\";\r\n\t\t\t}\r\n\t\t\treturn mode;\r\n\t\t},\r\n\r\n\t\t// Wraps the element around a wrapper that copies position properties\r\n\t\tcreateWrapper: function( element ) {\r\n\r\n\t\t\t// If the element is already wrapped, return it\r\n\t\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\r\n\t\t\t\treturn element.parent();\r\n\t\t\t}\r\n\r\n\t\t\t// Wrap the element\r\n\t\t\tvar props = {\r\n\t\t\t\t\twidth: element.outerWidth( true ),\r\n\t\t\t\t\theight: element.outerHeight( true ),\r\n\t\t\t\t\t\"float\": element.css( \"float\" )\r\n\t\t\t\t},\r\n\t\t\t\twrapper = $( \"<div></div>\" )\r\n\t\t\t\t\t.addClass( \"ui-effects-wrapper\" )\r\n\t\t\t\t\t.css( {\r\n\t\t\t\t\t\tfontSize: \"100%\",\r\n\t\t\t\t\t\tbackground: \"transparent\",\r\n\t\t\t\t\t\tborder: \"none\",\r\n\t\t\t\t\t\tmargin: 0,\r\n\t\t\t\t\t\tpadding: 0\r\n\t\t\t\t\t} ),\r\n\r\n\t\t\t\t// Store the size in case width/height are defined in % - Fixes #5245\r\n\t\t\t\tsize = {\r\n\t\t\t\t\twidth: element.width(),\r\n\t\t\t\t\theight: element.height()\r\n\t\t\t\t},\r\n\t\t\t\tactive = document.activeElement;\r\n\r\n\t\t\t// Support: Firefox\r\n\t\t\t// Firefox incorrectly exposes anonymous content\r\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=561664\r\n\t\t\ttry {\r\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\r\n\t\t\t\tactive.id;\r\n\t\t\t} catch ( e ) {\r\n\t\t\t\tactive = document.body;\r\n\t\t\t}\r\n\r\n\t\t\telement.wrap( wrapper );\r\n\r\n\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\r\n\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\r\n\t\t\t\t$( active ).trigger( \"focus\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Hotfix for jQuery 1.4 since some change in wrap() seems to actually\r\n\t\t\t// lose the reference to the wrapped element\r\n\t\t\twrapper = element.parent();\r\n\r\n\t\t\t// Transfer positioning properties to the wrapper\r\n\t\t\tif ( element.css( \"position\" ) === \"static\" ) {\r\n\t\t\t\twrapper.css( { position: \"relative\" } );\r\n\t\t\t\telement.css( { position: \"relative\" } );\r\n\t\t\t} else {\r\n\t\t\t\t$.extend( props, {\r\n\t\t\t\t\tposition: element.css( \"position\" ),\r\n\t\t\t\t\tzIndex: element.css( \"z-index\" )\r\n\t\t\t\t} );\r\n\t\t\t\t$.each( [ \"top\", \"left\", \"bottom\", \"right\" ], function( i, pos ) {\r\n\t\t\t\t\tprops[ pos ] = element.css( pos );\r\n\t\t\t\t\tif ( isNaN( parseInt( props[ pos ], 10 ) ) ) {\r\n\t\t\t\t\t\tprops[ pos ] = \"auto\";\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t\telement.css( {\r\n\t\t\t\t\tposition: \"relative\",\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\tleft: 0,\r\n\t\t\t\t\tright: \"auto\",\r\n\t\t\t\t\tbottom: \"auto\"\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t\telement.css( size );\r\n\r\n\t\t\treturn wrapper.css( props ).show();\r\n\t\t},\r\n\r\n\t\tremoveWrapper: function( element ) {\r\n\t\t\tvar active = document.activeElement;\r\n\r\n\t\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\r\n\t\t\t\telement.parent().replaceWith( element );\r\n\r\n\t\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\r\n\t\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\r\n\t\t\t\t\t$( active ).trigger( \"focus\" );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn element;\r\n\t\t}\r\n\t} );\r\n}\r\n\r\n$.extend( $.effects, {\r\n\tversion: \"1.14.1\",\r\n\r\n\tdefine: function( name, mode, effect ) {\r\n\t\tif ( !effect ) {\r\n\t\t\teffect = mode;\r\n\t\t\tmode = \"effect\";\r\n\t\t}\r\n\r\n\t\t$.effects.effect[ name ] = effect;\r\n\t\t$.effects.effect[ name ].mode = mode;\r\n\r\n\t\treturn effect;\r\n\t},\r\n\r\n\tscaledDimensions: function( element, percent, direction ) {\r\n\t\tif ( percent === 0 ) {\r\n\t\t\treturn {\r\n\t\t\t\theight: 0,\r\n\t\t\t\twidth: 0,\r\n\t\t\t\touterHeight: 0,\r\n\t\t\t\touterWidth: 0\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tvar x = direction !== \"horizontal\" ? ( ( percent || 100 ) / 100 ) : 1,\r\n\t\t\ty = direction !== \"vertical\" ? ( ( percent || 100 ) / 100 ) : 1;\r\n\r\n\t\treturn {\r\n\t\t\theight: element.height() * y,\r\n\t\t\twidth: element.width() * x,\r\n\t\t\touterHeight: element.outerHeight() * y,\r\n\t\t\touterWidth: element.outerWidth() * x\r\n\t\t};\r\n\r\n\t},\r\n\r\n\tclipToBox: function( animation ) {\r\n\t\treturn {\r\n\t\t\twidth: animation.clip.right - animation.clip.left,\r\n\t\t\theight: animation.clip.bottom - animation.clip.top,\r\n\t\t\tleft: animation.clip.left,\r\n\t\t\ttop: animation.clip.top\r\n\t\t};\r\n\t},\r\n\r\n\t// Injects recently queued functions to be first in line (after \"inprogress\")\r\n\tunshift: function( element, queueLength, count ) {\r\n\t\tvar queue = element.queue();\r\n\r\n\t\tif ( queueLength > 1 ) {\r\n\t\t\tqueue.splice.apply( queue,\r\n\t\t\t\t[ 1, 0 ].concat( queue.splice( queueLength, count ) ) );\r\n\t\t}\r\n\t\telement.dequeue();\r\n\t},\r\n\r\n\tsaveStyle: function( element ) {\r\n\t\telement.data( dataSpaceStyle, element[ 0 ].style.cssText );\r\n\t},\r\n\r\n\trestoreStyle: function( element ) {\r\n\t\telement[ 0 ].style.cssText = element.data( dataSpaceStyle ) || \"\";\r\n\t\telement.removeData( dataSpaceStyle );\r\n\t},\r\n\r\n\tmode: function( element, mode ) {\r\n\t\tvar hidden = element.is( \":hidden\" );\r\n\r\n\t\tif ( mode === \"toggle\" ) {\r\n\t\t\tmode = hidden ? \"show\" : \"hide\";\r\n\t\t}\r\n\t\tif ( hidden ? mode === \"hide\" : mode === \"show\" ) {\r\n\t\t\tmode = \"none\";\r\n\t\t}\r\n\t\treturn mode;\r\n\t},\r\n\r\n\t// Translates a [top,left] array into a baseline value\r\n\tgetBaseline: function( origin, original ) {\r\n\t\tvar y, x;\r\n\r\n\t\tswitch ( origin[ 0 ] ) {\r\n\t\tcase \"top\":\r\n\t\t\ty = 0;\r\n\t\t\tbreak;\r\n\t\tcase \"middle\":\r\n\t\t\ty = 0.5;\r\n\t\t\tbreak;\r\n\t\tcase \"bottom\":\r\n\t\t\ty = 1;\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\ty = origin[ 0 ] / original.height;\r\n\t\t}\r\n\r\n\t\tswitch ( origin[ 1 ] ) {\r\n\t\tcase \"left\":\r\n\t\t\tx = 0;\r\n\t\t\tbreak;\r\n\t\tcase \"center\":\r\n\t\t\tx = 0.5;\r\n\t\t\tbreak;\r\n\t\tcase \"right\":\r\n\t\t\tx = 1;\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tx = origin[ 1 ] / original.width;\r\n\t\t}\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// Creates a placeholder element so that the original element can be made absolute\r\n\tcreatePlaceholder: function( element ) {\r\n\t\tvar placeholder,\r\n\t\t\tcssPosition = element.css( \"position\" ),\r\n\t\t\tposition = element.position();\r\n\r\n\t\t// Lock in margins first to account for form elements, which\r\n\t\t// will change margin if you explicitly set height\r\n\t\t// see: https://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380\r\n\t\t// Support: Safari\r\n\t\telement.css( {\r\n\t\t\tmarginTop: element.css( \"marginTop\" ),\r\n\t\t\tmarginBottom: element.css( \"marginBottom\" ),\r\n\t\t\tmarginLeft: element.css( \"marginLeft\" ),\r\n\t\t\tmarginRight: element.css( \"marginRight\" )\r\n\t\t} )\r\n\t\t.outerWidth( element.outerWidth() )\r\n\t\t.outerHeight( element.outerHeight() );\r\n\r\n\t\tif ( /^(static|relative)/.test( cssPosition ) ) {\r\n\t\t\tcssPosition = \"absolute\";\r\n\r\n\t\t\tplaceholder = $( \"<\" + element[ 0 ].nodeName + \">\" ).insertAfter( element ).css( {\r\n\r\n\t\t\t\t// Convert inline to inline block to account for inline elements\r\n\t\t\t\t// that turn to inline block based on content (like img)\r\n\t\t\t\tdisplay: /^(inline|ruby)/.test( element.css( \"display\" ) ) ?\r\n\t\t\t\t\t\"inline-block\" :\r\n\t\t\t\t\t\"block\",\r\n\t\t\t\tvisibility: \"hidden\",\r\n\r\n\t\t\t\t// Margins need to be set to account for margin collapse\r\n\t\t\t\tmarginTop: element.css( \"marginTop\" ),\r\n\t\t\t\tmarginBottom: element.css( \"marginBottom\" ),\r\n\t\t\t\tmarginLeft: element.css( \"marginLeft\" ),\r\n\t\t\t\tmarginRight: element.css( \"marginRight\" ),\r\n\t\t\t\t\"float\": element.css( \"float\" )\r\n\t\t\t} )\r\n\t\t\t.outerWidth( element.outerWidth() )\r\n\t\t\t.outerHeight( element.outerHeight() )\r\n\t\t\t.addClass( \"ui-effects-placeholder\" );\r\n\r\n\t\t\telement.data( dataSpace + \"placeholder\", placeholder );\r\n\t\t}\r\n\r\n\t\telement.css( {\r\n\t\t\tposition: cssPosition,\r\n\t\t\tleft: position.left,\r\n\t\t\ttop: position.top\r\n\t\t} );\r\n\r\n\t\treturn placeholder;\r\n\t},\r\n\r\n\tremovePlaceholder: function( element ) {\r\n\t\tvar dataKey = dataSpace + \"placeholder\",\r\n\t\t\t\tplaceholder = element.data( dataKey );\r\n\r\n\t\tif ( placeholder ) {\r\n\t\t\tplaceholder.remove();\r\n\t\t\telement.removeData( dataKey );\r\n\t\t}\r\n\t},\r\n\r\n\t// Removes a placeholder if it exists and restores\r\n\t// properties that were modified during placeholder creation\r\n\tcleanUp: function( element ) {\r\n\t\t$.effects.restoreStyle( element );\r\n\t\t$.effects.removePlaceholder( element );\r\n\t},\r\n\r\n\tsetTransition: function( element, list, factor, value ) {\r\n\t\tvalue = value || {};\r\n\t\t$.each( list, function( i, x ) {\r\n\t\t\tvar unit = element.cssUnit( x );\r\n\t\t\tif ( unit[ 0 ] > 0 ) {\r\n\t\t\t\tvalue[ x ] = unit[ 0 ] * factor + unit[ 1 ];\r\n\t\t\t}\r\n\t\t} );\r\n\t\treturn value;\r\n\t}\r\n} );\r\n\r\n// Return an effect options object for the given parameters:\r\nfunction _normalizeArguments( effect, options, speed, callback ) {\r\n\r\n\t// Allow passing all options as the first parameter\r\n\tif ( $.isPlainObject( effect ) ) {\r\n\t\toptions = effect;\r\n\t\teffect = effect.effect;\r\n\t}\r\n\r\n\t// Convert to an object\r\n\teffect = { effect: effect };\r\n\r\n\t// Catch (effect, null, ...)\r\n\tif ( options == null ) {\r\n\t\toptions = {};\r\n\t}\r\n\r\n\t// Catch (effect, callback)\r\n\tif ( typeof options === \"function\" ) {\r\n\t\tcallback = options;\r\n\t\tspeed = null;\r\n\t\toptions = {};\r\n\t}\r\n\r\n\t// Catch (effect, speed, ?)\r\n\tif ( typeof options === \"number\" || $.fx.speeds[ options ] ) {\r\n\t\tcallback = speed;\r\n\t\tspeed = options;\r\n\t\toptions = {};\r\n\t}\r\n\r\n\t// Catch (effect, options, callback)\r\n\tif ( typeof speed === \"function\" ) {\r\n\t\tcallback = speed;\r\n\t\tspeed = null;\r\n\t}\r\n\r\n\t// Add options to effect\r\n\tif ( options ) {\r\n\t\t$.extend( effect, options );\r\n\t}\r\n\r\n\tspeed = speed || options.duration;\r\n\teffect.duration = $.fx.off ? 0 :\r\n\t\ttypeof speed === \"number\" ? speed :\r\n\t\tspeed in $.fx.speeds ? $.fx.speeds[ speed ] :\r\n\t\t$.fx.speeds._default;\r\n\r\n\teffect.complete = callback || options.complete;\r\n\r\n\treturn effect;\r\n}\r\n\r\nfunction standardAnimationOption( option ) {\r\n\r\n\t// Valid standard speeds (nothing, number, named speed)\r\n\tif ( !option || typeof option === \"number\" || $.fx.speeds[ option ] ) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t// Invalid strings - treat as \"normal\" speed\r\n\tif ( typeof option === \"string\" && !$.effects.effect[ option ] ) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t// Complete callback\r\n\tif ( typeof option === \"function\" ) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t// Options hash (but not naming an effect)\r\n\tif ( typeof option === \"object\" && !option.effect ) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t// Didn't match any standard API\r\n\treturn false;\r\n}\r\n\r\n$.fn.extend( {\r\n\teffect: function( /* effect, options, speed, callback */ ) {\r\n\t\tvar args = _normalizeArguments.apply( this, arguments ),\r\n\t\t\teffectMethod = $.effects.effect[ args.effect ],\r\n\t\t\tdefaultMode = effectMethod.mode,\r\n\t\t\tqueue = args.queue,\r\n\t\t\tqueueName = queue || \"fx\",\r\n\t\t\tcomplete = args.complete,\r\n\t\t\tmode = args.mode,\r\n\t\t\tmodes = [],\r\n\t\t\tprefilter = function( next ) {\r\n\t\t\t\tvar el = $( this ),\r\n\t\t\t\t\tnormalizedMode = $.effects.mode( el, mode ) || defaultMode;\r\n\r\n\t\t\t\t// Sentinel for duck-punching the :animated pseudo-selector\r\n\t\t\t\tel.data( dataSpaceAnimated, true );\r\n\r\n\t\t\t\t// Save effect mode for later use,\r\n\t\t\t\t// we can't just call $.effects.mode again later,\r\n\t\t\t\t// as the .show() below destroys the initial state\r\n\t\t\t\tmodes.push( normalizedMode );\r\n\r\n\t\t\t\t// See $.uiBackCompat inside of run() for removal of defaultMode in 1.14\r\n\t\t\t\tif ( defaultMode && ( normalizedMode === \"show\" ||\r\n\t\t\t\t\t\t( normalizedMode === defaultMode && normalizedMode === \"hide\" ) ) ) {\r\n\t\t\t\t\tel.show();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( !defaultMode || normalizedMode !== \"none\" ) {\r\n\t\t\t\t\t$.effects.saveStyle( el );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( typeof next === \"function\" ) {\r\n\t\t\t\t\tnext();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tif ( $.fx.off || !effectMethod ) {\r\n\r\n\t\t\t// Delegate to the original method (e.g., .show()) if possible\r\n\t\t\tif ( mode ) {\r\n\t\t\t\treturn this[ mode ]( args.duration, complete );\r\n\t\t\t} else {\r\n\t\t\t\treturn this.each( function() {\r\n\t\t\t\t\tif ( complete ) {\r\n\t\t\t\t\t\tcomplete.call( this );\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction run( next ) {\r\n\t\t\tvar elem = $( this );\r\n\r\n\t\t\tfunction cleanup() {\r\n\t\t\t\telem.removeData( dataSpaceAnimated );\r\n\r\n\t\t\t\t$.effects.cleanUp( elem );\r\n\r\n\t\t\t\tif ( args.mode === \"hide\" ) {\r\n\t\t\t\t\telem.hide();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\r\n\t\t\tfunction done() {\r\n\t\t\t\tif ( typeof complete === \"function\" ) {\r\n\t\t\t\t\tcomplete.call( elem[ 0 ] );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( typeof next === \"function\" ) {\r\n\t\t\t\t\tnext();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Override mode option on a per element basis,\r\n\t\t\t// as toggle can be either show or hide depending on element state\r\n\t\t\targs.mode = modes.shift();\r\n\r\n\t\t\tif ( $.uiBackCompat === true && !defaultMode ) {\r\n\t\t\t\tif ( elem.is( \":hidden\" ) ? mode === \"hide\" : mode === \"show\" ) {\r\n\r\n\t\t\t\t\t// Call the core method to track \"olddisplay\" properly\r\n\t\t\t\t\telem[ mode ]();\r\n\t\t\t\t\tdone();\r\n\t\t\t\t} else {\r\n\t\t\t\t\teffectMethod.call( elem[ 0 ], args, done );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif ( args.mode === \"none\" ) {\r\n\r\n\t\t\t\t\t// Call the core method to track \"olddisplay\" properly\r\n\t\t\t\t\telem[ mode ]();\r\n\t\t\t\t\tdone();\r\n\t\t\t\t} else {\r\n\t\t\t\t\teffectMethod.call( elem[ 0 ], args, cleanup );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Run prefilter on all elements first to ensure that\r\n\t\t// any showing or hiding happens before placeholder creation,\r\n\t\t// which ensures that any layout changes are correctly captured.\r\n\t\treturn queue === false ?\r\n\t\t\tthis.each( prefilter ).each( run ) :\r\n\t\t\tthis.queue( queueName, prefilter ).queue( queueName, run );\r\n\t},\r\n\r\n\tshow: ( function( orig ) {\r\n\t\treturn function( option ) {\r\n\t\t\tif ( standardAnimationOption( option ) ) {\r\n\t\t\t\treturn orig.apply( this, arguments );\r\n\t\t\t} else {\r\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\r\n\t\t\t\targs.mode = \"show\";\r\n\t\t\t\treturn this.effect.call( this, args );\r\n\t\t\t}\r\n\t\t};\r\n\t} )( $.fn.show ),\r\n\r\n\thide: ( function( orig ) {\r\n\t\treturn function( option ) {\r\n\t\t\tif ( standardAnimationOption( option ) ) {\r\n\t\t\t\treturn orig.apply( this, arguments );\r\n\t\t\t} else {\r\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\r\n\t\t\t\targs.mode = \"hide\";\r\n\t\t\t\treturn this.effect.call( this, args );\r\n\t\t\t}\r\n\t\t};\r\n\t} )( $.fn.hide ),\r\n\r\n\ttoggle: ( function( orig ) {\r\n\t\treturn function( option ) {\r\n\t\t\tif ( standardAnimationOption( option ) || typeof option === \"boolean\" ) {\r\n\t\t\t\treturn orig.apply( this, arguments );\r\n\t\t\t} else {\r\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\r\n\t\t\t\targs.mode = \"toggle\";\r\n\t\t\t\treturn this.effect.call( this, args );\r\n\t\t\t}\r\n\t\t};\r\n\t} )( $.fn.toggle ),\r\n\r\n\tcssUnit: function( key ) {\r\n\t\tvar style = this.css( key ),\r\n\t\t\tval = [];\r\n\r\n\t\t$.each( [ \"em\", \"px\", \"%\", \"pt\" ], function( i, unit ) {\r\n\t\t\tif ( style.indexOf( unit ) > 0 ) {\r\n\t\t\t\tval = [ parseFloat( style ), unit ];\r\n\t\t\t}\r\n\t\t} );\r\n\t\treturn val;\r\n\t},\r\n\r\n\tcssClip: function( clipObj ) {\r\n\t\tif ( clipObj ) {\r\n\t\t\treturn this.css( \"clip\", \"rect(\" + clipObj.top + \"px \" + clipObj.right + \"px \" +\r\n\t\t\t\tclipObj.bottom + \"px \" + clipObj.left + \"px)\" );\r\n\t\t}\r\n\t\treturn parseClip( this.css( \"clip\" ), this );\r\n\t},\r\n\r\n\ttransfer: function( options, done ) {\r\n\t\tvar element = $( this ),\r\n\t\t\ttarget = $( options.to ),\r\n\t\t\ttargetFixed = target.css( \"position\" ) === \"fixed\",\r\n\t\t\tbody = $( \"body\" ),\r\n\t\t\tfixTop = targetFixed ? body.scrollTop() : 0,\r\n\t\t\tfixLeft = targetFixed ? body.scrollLeft() : 0,\r\n\t\t\tendPosition = target.offset(),\r\n\t\t\tanimation = {\r\n\t\t\t\ttop: endPosition.top - fixTop,\r\n\t\t\t\tleft: endPosition.left - fixLeft,\r\n\t\t\t\theight: target.innerHeight(),\r\n\t\t\t\twidth: target.innerWidth()\r\n\t\t\t},\r\n\t\t\tstartPosition = element.offset(),\r\n\t\t\ttransfer = $( \"<div class='ui-effects-transfer'></div>\" );\r\n\r\n\t\ttransfer\r\n\t\t\t.appendTo( \"body\" )\r\n\t\t\t.addClass( options.className )\r\n\t\t\t.css( {\r\n\t\t\t\ttop: startPosition.top - fixTop,\r\n\t\t\t\tleft: startPosition.left - fixLeft,\r\n\t\t\t\theight: element.innerHeight(),\r\n\t\t\t\twidth: element.innerWidth(),\r\n\t\t\t\tposition: targetFixed ? \"fixed\" : \"absolute\"\r\n\t\t\t} )\r\n\t\t\t.animate( animation, options.duration, options.easing, function() {\r\n\t\t\t\ttransfer.remove();\r\n\t\t\t\tif ( typeof done === \"function\" ) {\r\n\t\t\t\t\tdone();\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t}\r\n} );\r\n\r\nfunction parseClip( str, element ) {\r\n\t\tvar outerWidth = element.outerWidth(),\r\n\t\t\touterHeight = element.outerHeight(),\r\n\t\t\tclipRegex = /^rect\\((-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto)\\)$/,\r\n\t\t\tvalues = clipRegex.exec( str ) || [ \"\", 0, outerWidth, outerHeight, 0 ];\r\n\r\n\t\treturn {\r\n\t\t\ttop: parseFloat( values[ 1 ] ) || 0,\r\n\t\t\tright: values[ 2 ] === \"auto\" ? outerWidth : parseFloat( values[ 2 ] ),\r\n\t\t\tbottom: values[ 3 ] === \"auto\" ? outerHeight : parseFloat( values[ 3 ] ),\r\n\t\t\tleft: parseFloat( values[ 4 ] ) || 0\r\n\t\t};\r\n}\r\n\r\n$.fx.step.clip = function( fx ) {\r\n\tif ( !fx.clipInit ) {\r\n\t\tfx.start = $( fx.elem ).cssClip();\r\n\t\tif ( typeof fx.end === \"string\" ) {\r\n\t\t\tfx.end = parseClip( fx.end, fx.elem );\r\n\t\t}\r\n\t\tfx.clipInit = true;\r\n\t}\r\n\r\n\t$( fx.elem ).cssClip( {\r\n\t\ttop: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top,\r\n\t\tright: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right,\r\n\t\tbottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom,\r\n\t\tleft: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left\r\n\t} );\r\n};\r\n\r\n} )();\r\n\r\n/******************************************************************************/\r\n/*********************************** EASING ***********************************/\r\n/******************************************************************************/\r\n\r\n( function() {\r\n\r\n// Based on easing equations from Robert Penner (http://robertpenner.com/easing)\r\n\r\nvar baseEasings = {};\r\n\r\n$.each( [ \"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\" ], function( i, name ) {\r\n\tbaseEasings[ name ] = function( p ) {\r\n\t\treturn Math.pow( p, i + 2 );\r\n\t};\r\n} );\r\n\r\n$.extend( baseEasings, {\r\n\tSine: function( p ) {\r\n\t\treturn 1 - Math.cos( p * Math.PI / 2 );\r\n\t},\r\n\tCirc: function( p ) {\r\n\t\treturn 1 - Math.sqrt( 1 - p * p );\r\n\t},\r\n\tElastic: function( p ) {\r\n\t\treturn p === 0 || p === 1 ? p :\r\n\t\t\t-Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 );\r\n\t},\r\n\tBack: function( p ) {\r\n\t\treturn p * p * ( 3 * p - 2 );\r\n\t},\r\n\tBounce: function( p ) {\r\n\t\tvar pow2,\r\n\t\t\tbounce = 4;\r\n\r\n\t\twhile ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}\r\n\t\treturn 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );\r\n\t}\r\n} );\r\n\r\n$.each( baseEasings, function( name, easeIn ) {\r\n\t$.easing[ \"easeIn\" + name ] = easeIn;\r\n\t$.easing[ \"easeOut\" + name ] = function( p ) {\r\n\t\treturn 1 - easeIn( 1 - p );\r\n\t};\r\n\t$.easing[ \"easeInOut\" + name ] = function( p ) {\r\n\t\treturn p < 0.5 ?\r\n\t\t\teaseIn( p * 2 ) / 2 :\r\n\t\t\t1 - easeIn( p * -2 + 2 ) / 2;\r\n\t};\r\n} );\r\n\r\n} )();\r\n\r\nvar effect = $.effects;\r\n\r\n\r\n/*!\r\n * jQuery UI Effects Blind 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Blind Effect\r\n//>>group: Effects\r\n//>>description: Blinds the element.\r\n//>>docs: https://api.jqueryui.com/blind-effect/\r\n//>>demos: https://jqueryui.com/effect/\r\n\r\n\r\nvar effectsEffectBlind = $.effects.define( \"blind\", \"hide\", function( options, done ) {\r\n\tvar map = {\r\n\t\t\tup: [ \"bottom\", \"top\" ],\r\n\t\t\tvertical: [ \"bottom\", \"top\" ],\r\n\t\t\tdown: [ \"top\", \"bottom\" ],\r\n\t\t\tleft: [ \"right\", \"left\" ],\r\n\t\t\thorizontal: [ \"right\", \"left\" ],\r\n\t\t\tright: [ \"left\", \"right\" ]\r\n\t\t},\r\n\t\telement = $( this ),\r\n\t\tdirection = options.direction || \"up\",\r\n\t\tstart = element.cssClip(),\r\n\t\tanimate = { clip: $.extend( {}, start ) },\r\n\t\tplaceholder = $.effects.createPlaceholder( element );\r\n\r\n\tanimate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ];\r\n\r\n\tif ( options.mode === \"show\" ) {\r\n\t\telement.cssClip( animate.clip );\r\n\t\tif ( placeholder ) {\r\n\t\t\tplaceholder.css( $.effects.clipToBox( animate ) );\r\n\t\t}\r\n\r\n\t\tanimate.clip = start;\r\n\t}\r\n\r\n\tif ( placeholder ) {\r\n\t\tplaceholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing );\r\n\t}\r\n\r\n\telement.animate( animate, {\r\n\t\tqueue: false,\r\n\t\tduration: options.duration,\r\n\t\teasing: options.easing,\r\n\t\tcomplete: done\r\n\t} );\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Effects Bounce 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Bounce Effect\r\n//>>group: Effects\r\n//>>description: Bounces an element horizontally or vertically n times.\r\n//>>docs: https://api.jqueryui.com/bounce-effect/\r\n//>>demos: https://jqueryui.com/effect/\r\n\r\n\r\nvar effectsEffectBounce = $.effects.define( \"bounce\", function( options, done ) {\r\n\tvar upAnim, downAnim, refValue,\r\n\t\telement = $( this ),\r\n\r\n\t\t// Defaults:\r\n\t\tmode = options.mode,\r\n\t\thide = mode === \"hide\",\r\n\t\tshow = mode === \"show\",\r\n\t\tdirection = options.direction || \"up\",\r\n\t\tdistance = options.distance,\r\n\t\ttimes = options.times || 5,\r\n\r\n\t\t// Number of internal animations\r\n\t\tanims = times * 2 + ( show || hide ? 1 : 0 ),\r\n\t\tspeed = options.duration / anims,\r\n\t\teasing = options.easing,\r\n\r\n\t\t// Utility:\r\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\r\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ),\r\n\t\ti = 0,\r\n\r\n\t\tqueuelen = element.queue().length;\r\n\r\n\t$.effects.createPlaceholder( element );\r\n\r\n\trefValue = element.css( ref );\r\n\r\n\t// Default distance for the BIGGEST bounce is the outer Distance / 3\r\n\tif ( !distance ) {\r\n\t\tdistance = element[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]() / 3;\r\n\t}\r\n\r\n\tif ( show ) {\r\n\t\tdownAnim = { opacity: 1 };\r\n\t\tdownAnim[ ref ] = refValue;\r\n\r\n\t\t// If we are showing, force opacity 0 and set the initial position\r\n\t\t// then do the \"first\" animation\r\n\t\telement\r\n\t\t\t.css( \"opacity\", 0 )\r\n\t\t\t.css( ref, motion ? -distance * 2 : distance * 2 )\r\n\t\t\t.animate( downAnim, speed, easing );\r\n\t}\r\n\r\n\t// Start at the smallest distance if we are hiding\r\n\tif ( hide ) {\r\n\t\tdistance = distance / Math.pow( 2, times - 1 );\r\n\t}\r\n\r\n\tdownAnim = {};\r\n\tdownAnim[ ref ] = refValue;\r\n\r\n\t// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here\r\n\tfor ( ; i < times; i++ ) {\r\n\t\tupAnim = {};\r\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\r\n\r\n\t\telement\r\n\t\t\t.animate( upAnim, speed, easing )\r\n\t\t\t.animate( downAnim, speed, easing );\r\n\r\n\t\tdistance = hide ? distance * 2 : distance / 2;\r\n\t}\r\n\r\n\t// Last Bounce when Hiding\r\n\tif ( hide ) {\r\n\t\tupAnim = { opacity: 0 };\r\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\r\n\r\n\t\telement.animate( upAnim, speed, easing );\r\n\t}\r\n\r\n\telement.queue( done );\r\n\r\n\t$.effects.unshift( element, queuelen, anims + 1 );\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Effects Clip 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Clip Effect\r\n//>>group: Effects\r\n//>>description: Clips the element on and off like an old TV.\r\n//>>docs: https://api.jqueryui.com/clip-effect/\r\n//>>demos: https://jqueryui.com/effect/\r\n\r\n\r\nvar effectsEffectClip = $.effects.define( \"clip\", \"hide\", function( options, done ) {\r\n\tvar start,\r\n\t\tanimate = {},\r\n\t\telement = $( this ),\r\n\t\tdirection = options.direction || \"vertical\",\r\n\t\tboth = direction === \"both\",\r\n\t\thorizontal = both || direction === \"horizontal\",\r\n\t\tvertical = both || direction === \"vertical\";\r\n\r\n\tstart = element.cssClip();\r\n\tanimate.clip = {\r\n\t\ttop: vertical ? ( start.bottom - start.top ) / 2 : start.top,\r\n\t\tright: horizontal ? ( start.right - start.left ) / 2 : start.right,\r\n\t\tbottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom,\r\n\t\tleft: horizontal ? ( start.right - start.left ) / 2 : start.left\r\n\t};\r\n\r\n\t$.effects.createPlaceholder( element );\r\n\r\n\tif ( options.mode === \"show\" ) {\r\n\t\telement.cssClip( animate.clip );\r\n\t\tanimate.clip = start;\r\n\t}\r\n\r\n\telement.animate( animate, {\r\n\t\tqueue: false,\r\n\t\tduration: options.duration,\r\n\t\teasing: options.easing,\r\n\t\tcomplete: done\r\n\t} );\r\n\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Effects Drop 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Drop Effect\r\n//>>group: Effects\r\n//>>description: Moves an element in one direction and hides it at the same time.\r\n//>>docs: https://api.jqueryui.com/drop-effect/\r\n//>>demos: https://jqueryui.com/effect/\r\n\r\n\r\nvar effectsEffectDrop = $.effects.define( \"drop\", \"hide\", function( options, done ) {\r\n\r\n\tvar distance,\r\n\t\telement = $( this ),\r\n\t\tmode = options.mode,\r\n\t\tshow = mode === \"show\",\r\n\t\tdirection = options.direction || \"left\",\r\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\r\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ) ? \"-=\" : \"+=\",\r\n\t\toppositeMotion = ( motion === \"+=\" ) ? \"-=\" : \"+=\",\r\n\t\tanimation = {\r\n\t\t\topacity: 0\r\n\t\t};\r\n\r\n\t$.effects.createPlaceholder( element );\r\n\r\n\tdistance = options.distance ||\r\n\t\telement[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true ) / 2;\r\n\r\n\tanimation[ ref ] = motion + distance;\r\n\r\n\tif ( show ) {\r\n\t\telement.css( animation );\r\n\r\n\t\tanimation[ ref ] = oppositeMotion + distance;\r\n\t\tanimation.opacity = 1;\r\n\t}\r\n\r\n\t// Animate\r\n\telement.animate( animation, {\r\n\t\tqueue: false,\r\n\t\tduration: options.duration,\r\n\t\teasing: options.easing,\r\n\t\tcomplete: done\r\n\t} );\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Effects Explode 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Explode Effect\r\n//>>group: Effects\r\n/* eslint-disable max-len */\r\n//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.\r\n/* eslint-enable max-len */\r\n//>>docs: https://api.jqueryui.com/explode-effect/\r\n//>>demos: https://jqueryui.com/effect/\r\n\r\n\r\nvar effectsEffectExplode = $.effects.define( \"explode\", \"hide\", function( options, done ) {\r\n\r\n\tvar i, j, left, top, mx, my,\r\n\t\trows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3,\r\n\t\tcells = rows,\r\n\t\telement = $( this ),\r\n\t\tmode = options.mode,\r\n\t\tshow = mode === \"show\",\r\n\r\n\t\t// Show and then visibility:hidden the element before calculating offset\r\n\t\toffset = element.show().css( \"visibility\", \"hidden\" ).offset(),\r\n\r\n\t\t// Width and height of a piece\r\n\t\twidth = Math.ceil( element.outerWidth() / cells ),\r\n\t\theight = Math.ceil( element.outerHeight() / rows ),\r\n\t\tpieces = [];\r\n\r\n\t// Children animate complete:\r\n\tfunction childComplete() {\r\n\t\tpieces.push( this );\r\n\t\tif ( pieces.length === rows * cells ) {\r\n\t\t\tanimComplete();\r\n\t\t}\r\n\t}\r\n\r\n\t// Clone the element for each row and cell.\r\n\tfor ( i = 0; i < rows; i++ ) { // ===>\r\n\t\ttop = offset.top + i * height;\r\n\t\tmy = i - ( rows - 1 ) / 2;\r\n\r\n\t\tfor ( j = 0; j < cells; j++ ) { // |||\r\n\t\t\tleft = offset.left + j * width;\r\n\t\t\tmx = j - ( cells - 1 ) / 2;\r\n\r\n\t\t\t// Create a clone of the now hidden main element that will be absolute positioned\r\n\t\t\t// within a wrapper div off the -left and -top equal to size of our pieces\r\n\t\t\telement\r\n\t\t\t\t.clone()\r\n\t\t\t\t.appendTo( \"body\" )\r\n\t\t\t\t.wrap( \"<div></div>\" )\r\n\t\t\t\t.css( {\r\n\t\t\t\t\tposition: \"absolute\",\r\n\t\t\t\t\tvisibility: \"visible\",\r\n\t\t\t\t\tleft: -j * width,\r\n\t\t\t\t\ttop: -i * height\r\n\t\t\t\t} )\r\n\r\n\t\t\t\t// Select the wrapper - make it overflow: hidden and absolute positioned based on\r\n\t\t\t\t// where the original was located +left and +top equal to the size of pieces\r\n\t\t\t\t.parent()\r\n\t\t\t\t\t.addClass( \"ui-effects-explode\" )\r\n\t\t\t\t\t.css( {\r\n\t\t\t\t\t\tposition: \"absolute\",\r\n\t\t\t\t\t\toverflow: \"hidden\",\r\n\t\t\t\t\t\twidth: width,\r\n\t\t\t\t\t\theight: height,\r\n\t\t\t\t\t\tleft: left + ( show ? mx * width : 0 ),\r\n\t\t\t\t\t\ttop: top + ( show ? my * height : 0 ),\r\n\t\t\t\t\t\topacity: show ? 0 : 1\r\n\t\t\t\t\t} )\r\n\t\t\t\t\t.animate( {\r\n\t\t\t\t\t\tleft: left + ( show ? 0 : mx * width ),\r\n\t\t\t\t\t\ttop: top + ( show ? 0 : my * height ),\r\n\t\t\t\t\t\topacity: show ? 1 : 0\r\n\t\t\t\t\t}, options.duration || 500, options.easing, childComplete );\r\n\t\t}\r\n\t}\r\n\r\n\tfunction animComplete() {\r\n\t\telement.css( {\r\n\t\t\tvisibility: \"visible\"\r\n\t\t} );\r\n\t\t$( pieces ).remove();\r\n\t\tdone();\r\n\t}\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Effects Fade 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Fade Effect\r\n//>>group: Effects\r\n//>>description: Fades the element.\r\n//>>docs: https://api.jqueryui.com/fade-effect/\r\n//>>demos: https://jqueryui.com/effect/\r\n\r\n\r\nvar effectsEffectFade = $.effects.define( \"fade\", \"toggle\", function( options, done ) {\r\n\tvar show = options.mode === \"show\";\r\n\r\n\t$( this )\r\n\t\t.css( \"opacity\", show ? 0 : 1 )\r\n\t\t.animate( {\r\n\t\t\topacity: show ? 1 : 0\r\n\t\t}, {\r\n\t\t\tqueue: false,\r\n\t\t\tduration: options.duration,\r\n\t\t\teasing: options.easing,\r\n\t\t\tcomplete: done\r\n\t\t} );\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Effects Fold 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Fold Effect\r\n//>>group: Effects\r\n//>>description: Folds an element first horizontally and then vertically.\r\n//>>docs: https://api.jqueryui.com/fold-effect/\r\n//>>demos: https://jqueryui.com/effect/\r\n\r\n\r\nvar effectsEffectFold = $.effects.define( \"fold\", \"hide\", function( options, done ) {\r\n\r\n\t// Create element\r\n\tvar element = $( this ),\r\n\t\tmode = options.mode,\r\n\t\tshow = mode === \"show\",\r\n\t\thide = mode === \"hide\",\r\n\t\tsize = options.size || 15,\r\n\t\tpercent = /([0-9]+)%/.exec( size ),\r\n\t\thorizFirst = !!options.horizFirst,\r\n\t\tref = horizFirst ? [ \"right\", \"bottom\" ] : [ \"bottom\", \"right\" ],\r\n\t\tduration = options.duration / 2,\r\n\r\n\t\tplaceholder = $.effects.createPlaceholder( element ),\r\n\r\n\t\tstart = element.cssClip(),\r\n\t\tanimation1 = { clip: $.extend( {}, start ) },\r\n\t\tanimation2 = { clip: $.extend( {}, start ) },\r\n\r\n\t\tdistance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ],\r\n\r\n\t\tqueuelen = element.queue().length;\r\n\r\n\tif ( percent ) {\r\n\t\tsize = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];\r\n\t}\r\n\tanimation1.clip[ ref[ 0 ] ] = size;\r\n\tanimation2.clip[ ref[ 0 ] ] = size;\r\n\tanimation2.clip[ ref[ 1 ] ] = 0;\r\n\r\n\tif ( show ) {\r\n\t\telement.cssClip( animation2.clip );\r\n\t\tif ( placeholder ) {\r\n\t\t\tplaceholder.css( $.effects.clipToBox( animation2 ) );\r\n\t\t}\r\n\r\n\t\tanimation2.clip = start;\r\n\t}\r\n\r\n\t// Animate\r\n\telement\r\n\t\t.queue( function( next ) {\r\n\t\t\tif ( placeholder ) {\r\n\t\t\t\tplaceholder\r\n\t\t\t\t\t.animate( $.effects.clipToBox( animation1 ), duration, options.easing )\r\n\t\t\t\t\t.animate( $.effects.clipToBox( animation2 ), duration, options.easing );\r\n\t\t\t}\r\n\r\n\t\t\tnext();\r\n\t\t} )\r\n\t\t.animate( animation1, duration, options.easing )\r\n\t\t.animate( animation2, duration, options.easing )\r\n\t\t.queue( done );\r\n\r\n\t$.effects.unshift( element, queuelen, 4 );\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Effects Highlight 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Highlight Effect\r\n//>>group: Effects\r\n//>>description: Highlights the background of an element in a defined color for a custom duration.\r\n//>>docs: https://api.jqueryui.com/highlight-effect/\r\n//>>demos: https://jqueryui.com/effect/\r\n\r\n\r\nvar effectsEffectHighlight = $.effects.define( \"highlight\", \"show\", function( options, done ) {\r\n\tvar element = $( this ),\r\n\t\tanimation = {\r\n\t\t\tbackgroundColor: element.css( \"backgroundColor\" )\r\n\t\t};\r\n\r\n\tif ( options.mode === \"hide\" ) {\r\n\t\tanimation.opacity = 0;\r\n\t}\r\n\r\n\t$.effects.saveStyle( element );\r\n\r\n\telement\r\n\t\t.css( {\r\n\t\t\tbackgroundImage: \"none\",\r\n\t\t\tbackgroundColor: options.color || \"#ffff99\"\r\n\t\t} )\r\n\t\t.animate( animation, {\r\n\t\t\tqueue: false,\r\n\t\t\tduration: options.duration,\r\n\t\t\teasing: options.easing,\r\n\t\t\tcomplete: done\r\n\t\t} );\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Effects Size 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Size Effect\r\n//>>group: Effects\r\n//>>description: Resize an element to a specified width and height.\r\n//>>docs: https://api.jqueryui.com/size-effect/\r\n//>>demos: https://jqueryui.com/effect/\r\n\r\n\r\nvar effectsEffectSize = $.effects.define( \"size\", function( options, done ) {\r\n\r\n\t// Create element\r\n\tvar baseline, factor, temp,\r\n\t\telement = $( this ),\r\n\r\n\t\t// Copy for children\r\n\t\tcProps = [ \"fontSize\" ],\r\n\t\tvProps = [ \"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\" ],\r\n\t\thProps = [ \"borderLeftWidth\", \"borderRightWidth\", \"paddingLeft\", \"paddingRight\" ],\r\n\r\n\t\t// Set options\r\n\t\tmode = options.mode,\r\n\t\trestore = mode !== \"effect\",\r\n\t\tscale = options.scale || \"both\",\r\n\t\torigin = options.origin || [ \"middle\", \"center\" ],\r\n\t\tposition = element.css( \"position\" ),\r\n\t\tpos = element.position(),\r\n\t\toriginal = $.effects.scaledDimensions( element ),\r\n\t\tfrom = options.from || original,\r\n\t\tto = options.to || $.effects.scaledDimensions( element, 0 );\r\n\r\n\t$.effects.createPlaceholder( element );\r\n\r\n\tif ( mode === \"show\" ) {\r\n\t\ttemp = from;\r\n\t\tfrom = to;\r\n\t\tto = temp;\r\n\t}\r\n\r\n\t// Set scaling factor\r\n\tfactor = {\r\n\t\tfrom: {\r\n\t\t\ty: from.height / original.height,\r\n\t\t\tx: from.width / original.width\r\n\t\t},\r\n\t\tto: {\r\n\t\t\ty: to.height / original.height,\r\n\t\t\tx: to.width / original.width\r\n\t\t}\r\n\t};\r\n\r\n\t// Scale the css box\r\n\tif ( scale === \"box\" || scale === \"both\" ) {\r\n\r\n\t\t// Vertical props scaling\r\n\t\tif ( factor.from.y !== factor.to.y ) {\r\n\t\t\tfrom = $.effects.setTransition( element, vProps, factor.from.y, from );\r\n\t\t\tto = $.effects.setTransition( element, vProps, factor.to.y, to );\r\n\t\t}\r\n\r\n\t\t// Horizontal props scaling\r\n\t\tif ( factor.from.x !== factor.to.x ) {\r\n\t\t\tfrom = $.effects.setTransition( element, hProps, factor.from.x, from );\r\n\t\t\tto = $.effects.setTransition( element, hProps, factor.to.x, to );\r\n\t\t}\r\n\t}\r\n\r\n\t// Scale the content\r\n\tif ( scale === \"content\" || scale === \"both\" ) {\r\n\r\n\t\t// Vertical props scaling\r\n\t\tif ( factor.from.y !== factor.to.y ) {\r\n\t\t\tfrom = $.effects.setTransition( element, cProps, factor.from.y, from );\r\n\t\t\tto = $.effects.setTransition( element, cProps, factor.to.y, to );\r\n\t\t}\r\n\t}\r\n\r\n\t// Adjust the position properties based on the provided origin points\r\n\tif ( origin ) {\r\n\t\tbaseline = $.effects.getBaseline( origin, original );\r\n\t\tfrom.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top;\r\n\t\tfrom.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left;\r\n\t\tto.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top;\r\n\t\tto.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left;\r\n\t}\r\n\tdelete from.outerHeight;\r\n\tdelete from.outerWidth;\r\n\telement.css( from );\r\n\r\n\t// Animate the children if desired\r\n\tif ( scale === \"content\" || scale === \"both\" ) {\r\n\r\n\t\tvProps = vProps.concat( [ \"marginTop\", \"marginBottom\" ] ).concat( cProps );\r\n\t\thProps = hProps.concat( [ \"marginLeft\", \"marginRight\" ] );\r\n\r\n\t\t// Only animate children with width attributes specified\r\n\t\t// TODO: is this right? should we include anything with css width specified as well\r\n\t\telement.find( \"*[width]\" ).each( function() {\r\n\t\t\tvar child = $( this ),\r\n\t\t\t\tchildOriginal = $.effects.scaledDimensions( child ),\r\n\t\t\t\tchildFrom = {\r\n\t\t\t\t\theight: childOriginal.height * factor.from.y,\r\n\t\t\t\t\twidth: childOriginal.width * factor.from.x,\r\n\t\t\t\t\touterHeight: childOriginal.outerHeight * factor.from.y,\r\n\t\t\t\t\touterWidth: childOriginal.outerWidth * factor.from.x\r\n\t\t\t\t},\r\n\t\t\t\tchildTo = {\r\n\t\t\t\t\theight: childOriginal.height * factor.to.y,\r\n\t\t\t\t\twidth: childOriginal.width * factor.to.x,\r\n\t\t\t\t\touterHeight: childOriginal.height * factor.to.y,\r\n\t\t\t\t\touterWidth: childOriginal.width * factor.to.x\r\n\t\t\t\t};\r\n\r\n\t\t\t// Vertical props scaling\r\n\t\t\tif ( factor.from.y !== factor.to.y ) {\r\n\t\t\t\tchildFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom );\r\n\t\t\t\tchildTo = $.effects.setTransition( child, vProps, factor.to.y, childTo );\r\n\t\t\t}\r\n\r\n\t\t\t// Horizontal props scaling\r\n\t\t\tif ( factor.from.x !== factor.to.x ) {\r\n\t\t\t\tchildFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom );\r\n\t\t\t\tchildTo = $.effects.setTransition( child, hProps, factor.to.x, childTo );\r\n\t\t\t}\r\n\r\n\t\t\tif ( restore ) {\r\n\t\t\t\t$.effects.saveStyle( child );\r\n\t\t\t}\r\n\r\n\t\t\t// Animate children\r\n\t\t\tchild.css( childFrom );\r\n\t\t\tchild.animate( childTo, options.duration, options.easing, function() {\r\n\r\n\t\t\t\t// Restore children\r\n\t\t\t\tif ( restore ) {\r\n\t\t\t\t\t$.effects.restoreStyle( child );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t} );\r\n\t}\r\n\r\n\t// Animate\r\n\telement.animate( to, {\r\n\t\tqueue: false,\r\n\t\tduration: options.duration,\r\n\t\teasing: options.easing,\r\n\t\tcomplete: function() {\r\n\r\n\t\t\tvar offset = element.offset();\r\n\r\n\t\t\tif ( to.opacity === 0 ) {\r\n\t\t\t\telement.css( \"opacity\", from.opacity );\r\n\t\t\t}\r\n\r\n\t\t\tif ( !restore ) {\r\n\t\t\t\telement\r\n\t\t\t\t\t.css( \"position\", position === \"static\" ? \"relative\" : position )\r\n\t\t\t\t\t.offset( offset );\r\n\r\n\t\t\t\t// Need to save style here so that automatic style restoration\r\n\t\t\t\t// doesn't restore to the original styles from before the animation.\r\n\t\t\t\t$.effects.saveStyle( element );\r\n\t\t\t}\r\n\r\n\t\t\tdone();\r\n\t\t}\r\n\t} );\r\n\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Effects Scale 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Scale Effect\r\n//>>group: Effects\r\n//>>description: Grows or shrinks an element and its content.\r\n//>>docs: https://api.jqueryui.com/scale-effect/\r\n//>>demos: https://jqueryui.com/effect/\r\n\r\n\r\nvar effectsEffectScale = $.effects.define( \"scale\", function( options, done ) {\r\n\r\n\t// Create element\r\n\tvar el = $( this ),\r\n\t\tmode = options.mode,\r\n\t\tpercent = parseInt( options.percent, 10 ) ||\r\n\t\t\t( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== \"effect\" ? 0 : 100 ) ),\r\n\r\n\t\tnewOptions = $.extend( true, {\r\n\t\t\tfrom: $.effects.scaledDimensions( el ),\r\n\t\t\tto: $.effects.scaledDimensions( el, percent, options.direction || \"both\" ),\r\n\t\t\torigin: options.origin || [ \"middle\", \"center\" ]\r\n\t\t}, options );\r\n\r\n\t// Fade option to support puff\r\n\tif ( options.fade ) {\r\n\t\tnewOptions.from.opacity = 1;\r\n\t\tnewOptions.to.opacity = 0;\r\n\t}\r\n\r\n\t$.effects.effect.size.call( this, newOptions, done );\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Effects Puff 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Puff Effect\r\n//>>group: Effects\r\n//>>description: Creates a puff effect by scaling the element up and hiding it at the same time.\r\n//>>docs: https://api.jqueryui.com/puff-effect/\r\n//>>demos: https://jqueryui.com/effect/\r\n\r\n\r\nvar effectsEffectPuff = $.effects.define( \"puff\", \"hide\", function( options, done ) {\r\n\tvar newOptions = $.extend( true, {}, options, {\r\n\t\tfade: true,\r\n\t\tpercent: parseInt( options.percent, 10 ) || 150\r\n\t} );\r\n\r\n\t$.effects.effect.scale.call( this, newOptions, done );\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Effects Pulsate 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Pulsate Effect\r\n//>>group: Effects\r\n//>>description: Pulsates an element n times by changing the opacity to zero and back.\r\n//>>docs: https://api.jqueryui.com/pulsate-effect/\r\n//>>demos: https://jqueryui.com/effect/\r\n\r\n\r\nvar effectsEffectPulsate = $.effects.define( \"pulsate\", \"show\", function( options, done ) {\r\n\tvar element = $( this ),\r\n\t\tmode = options.mode,\r\n\t\tshow = mode === \"show\",\r\n\t\thide = mode === \"hide\",\r\n\t\tshowhide = show || hide,\r\n\r\n\t\t// Showing or hiding leaves off the \"last\" animation\r\n\t\tanims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),\r\n\t\tduration = options.duration / anims,\r\n\t\tanimateTo = 0,\r\n\t\ti = 1,\r\n\t\tqueuelen = element.queue().length;\r\n\r\n\tif ( show || !element.is( \":visible\" ) ) {\r\n\t\telement.css( \"opacity\", 0 ).show();\r\n\t\tanimateTo = 1;\r\n\t}\r\n\r\n\t// Anims - 1 opacity \"toggles\"\r\n\tfor ( ; i < anims; i++ ) {\r\n\t\telement.animate( { opacity: animateTo }, duration, options.easing );\r\n\t\tanimateTo = 1 - animateTo;\r\n\t}\r\n\r\n\telement.animate( { opacity: animateTo }, duration, options.easing );\r\n\r\n\telement.queue( done );\r\n\r\n\t$.effects.unshift( element, queuelen, anims + 1 );\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Effects Shake 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Shake Effect\r\n//>>group: Effects\r\n//>>description: Shakes an element horizontally or vertically n times.\r\n//>>docs: https://api.jqueryui.com/shake-effect/\r\n//>>demos: https://jqueryui.com/effect/\r\n\r\n\r\nvar effectsEffectShake = $.effects.define( \"shake\", function( options, done ) {\r\n\r\n\tvar i = 1,\r\n\t\telement = $( this ),\r\n\t\tdirection = options.direction || \"left\",\r\n\t\tdistance = options.distance || 20,\r\n\t\ttimes = options.times || 3,\r\n\t\tanims = times * 2 + 1,\r\n\t\tspeed = Math.round( options.duration / anims ),\r\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\r\n\t\tpositiveMotion = ( direction === \"up\" || direction === \"left\" ),\r\n\t\tanimation = {},\r\n\t\tanimation1 = {},\r\n\t\tanimation2 = {},\r\n\r\n\t\tqueuelen = element.queue().length;\r\n\r\n\t$.effects.createPlaceholder( element );\r\n\r\n\t// Animation\r\n\tanimation[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance;\r\n\tanimation1[ ref ] = ( positiveMotion ? \"+=\" : \"-=\" ) + distance * 2;\r\n\tanimation2[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance * 2;\r\n\r\n\t// Animate\r\n\telement.animate( animation, speed, options.easing );\r\n\r\n\t// Shakes\r\n\tfor ( ; i < times; i++ ) {\r\n\t\telement\r\n\t\t\t.animate( animation1, speed, options.easing )\r\n\t\t\t.animate( animation2, speed, options.easing );\r\n\t}\r\n\r\n\telement\r\n\t\t.animate( animation1, speed, options.easing )\r\n\t\t.animate( animation, speed / 2, options.easing )\r\n\t\t.queue( done );\r\n\r\n\t$.effects.unshift( element, queuelen, anims + 1 );\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Effects Slide 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Slide Effect\r\n//>>group: Effects\r\n//>>description: Slides an element in and out of the viewport.\r\n//>>docs: https://api.jqueryui.com/slide-effect/\r\n//>>demos: https://jqueryui.com/effect/\r\n\r\n\r\nvar effectsEffectSlide = $.effects.define( \"slide\", \"show\", function( options, done ) {\r\n\tvar startClip, startRef,\r\n\t\telement = $( this ),\r\n\t\tmap = {\r\n\t\t\tup: [ \"bottom\", \"top\" ],\r\n\t\t\tdown: [ \"top\", \"bottom\" ],\r\n\t\t\tleft: [ \"right\", \"left\" ],\r\n\t\t\tright: [ \"left\", \"right\" ]\r\n\t\t},\r\n\t\tmode = options.mode,\r\n\t\tdirection = options.direction || \"left\",\r\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\r\n\t\tpositiveMotion = ( direction === \"up\" || direction === \"left\" ),\r\n\t\tdistance = options.distance ||\r\n\t\t\telement[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true ),\r\n\t\tanimation = {};\r\n\r\n\t$.effects.createPlaceholder( element );\r\n\r\n\tstartClip = element.cssClip();\r\n\tstartRef = element.position()[ ref ];\r\n\r\n\t// Define hide animation\r\n\tanimation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef;\r\n\tanimation.clip = element.cssClip();\r\n\tanimation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ];\r\n\r\n\t// Reverse the animation if we're showing\r\n\tif ( mode === \"show\" ) {\r\n\t\telement.cssClip( animation.clip );\r\n\t\telement.css( ref, animation[ ref ] );\r\n\t\tanimation.clip = startClip;\r\n\t\tanimation[ ref ] = startRef;\r\n\t}\r\n\r\n\t// Actually animate\r\n\telement.animate( animation, {\r\n\t\tqueue: false,\r\n\t\tduration: options.duration,\r\n\t\teasing: options.easing,\r\n\t\tcomplete: done\r\n\t} );\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Effects Transfer 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Transfer Effect\r\n//>>group: Effects\r\n//>>description: Displays a transfer effect from one element to another.\r\n//>>docs: https://api.jqueryui.com/transfer-effect/\r\n//>>demos: https://jqueryui.com/effect/\r\n\r\n\r\nvar effect;\r\nif ( $.uiBackCompat === true ) {\r\n\teffect = $.effects.define( \"transfer\", function( options, done ) {\r\n\t\t$( this ).transfer( options, done );\r\n\t} );\r\n}\r\nvar effectsEffectTransfer = effect;\r\n\r\n\r\n/*!\r\n * jQuery UI Focusable 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: :focusable Selector\r\n//>>group: Core\r\n//>>description: Selects elements which can be focused.\r\n//>>docs: https://api.jqueryui.com/focusable-selector/\r\n\r\n\r\n// Selectors\r\n$.ui.focusable = function( element, hasTabindex ) {\r\n\tvar map, mapName, img, focusableIfVisible, fieldset,\r\n\t\tnodeName = element.nodeName.toLowerCase();\r\n\r\n\tif ( \"area\" === nodeName ) {\r\n\t\tmap = element.parentNode;\r\n\t\tmapName = map.name;\r\n\t\tif ( !element.href || !mapName || map.nodeName.toLowerCase() !== \"map\" ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\timg = $( \"img[usemap='#\" + mapName + \"']\" );\r\n\t\treturn img.length > 0 && img.is( \":visible\" );\r\n\t}\r\n\r\n\tif ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) {\r\n\t\tfocusableIfVisible = !element.disabled;\r\n\r\n\t\tif ( focusableIfVisible ) {\r\n\r\n\t\t\t// Form controls within a disabled fieldset are disabled.\r\n\t\t\t// However, controls within the fieldset's legend do not get disabled.\r\n\t\t\t// Since controls generally aren't placed inside legends, we skip\r\n\t\t\t// this portion of the check.\r\n\t\t\tfieldset = $( element ).closest( \"fieldset\" )[ 0 ];\r\n\t\t\tif ( fieldset ) {\r\n\t\t\t\tfocusableIfVisible = !fieldset.disabled;\r\n\t\t\t}\r\n\t\t}\r\n\t} else if ( \"a\" === nodeName ) {\r\n\t\tfocusableIfVisible = element.href || hasTabindex;\r\n\t} else {\r\n\t\tfocusableIfVisible = hasTabindex;\r\n\t}\r\n\r\n\treturn focusableIfVisible && $( element ).is( \":visible\" ) &&\r\n\t\t$( element ).css( \"visibility\" ) === \"visible\";\r\n};\r\n\r\n$.extend( $.expr.pseudos, {\r\n\tfocusable: function( element ) {\r\n\t\treturn $.ui.focusable( element, $.attr( element, \"tabindex\" ) != null );\r\n\t}\r\n} );\r\n\r\nvar focusable = $.ui.focusable;\r\n\r\n\r\n/*!\r\n * jQuery UI Form Reset Mixin 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Form Reset Mixin\r\n//>>group: Core\r\n//>>description: Refresh input widgets when their form is reset\r\n//>>docs: https://api.jqueryui.com/form-reset-mixin/\r\n\r\n\r\nvar formResetMixin = $.ui.formResetMixin = {\r\n\t_formResetHandler: function() {\r\n\t\tvar form = $( this );\r\n\r\n\t\t// Wait for the form reset to actually happen before refreshing\r\n\t\tsetTimeout( function() {\r\n\t\t\tvar instances = form.data( \"ui-form-reset-instances\" );\r\n\t\t\t$.each( instances, function() {\r\n\t\t\t\tthis.refresh();\r\n\t\t\t} );\r\n\t\t} );\r\n\t},\r\n\r\n\t_bindFormResetHandler: function() {\r\n\t\tthis.form = $( this.element.prop( \"form\" ) );\r\n\t\tif ( !this.form.length ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar instances = this.form.data( \"ui-form-reset-instances\" ) || [];\r\n\t\tif ( !instances.length ) {\r\n\r\n\t\t\t// We don't use _on() here because we use a single event handler per form\r\n\t\t\tthis.form.on( \"reset.ui-form-reset\", this._formResetHandler );\r\n\t\t}\r\n\t\tinstances.push( this );\r\n\t\tthis.form.data( \"ui-form-reset-instances\", instances );\r\n\t},\r\n\r\n\t_unbindFormResetHandler: function() {\r\n\t\tif ( !this.form.length ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar instances = this.form.data( \"ui-form-reset-instances\" );\r\n\t\tinstances.splice( $.inArray( this, instances ), 1 );\r\n\t\tif ( instances.length ) {\r\n\t\t\tthis.form.data( \"ui-form-reset-instances\", instances );\r\n\t\t} else {\r\n\t\t\tthis.form\r\n\t\t\t\t.removeData( \"ui-form-reset-instances\" )\r\n\t\t\t\t.off( \"reset.ui-form-reset\" );\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\n/*!\r\n * jQuery UI Legacy jQuery Core patches 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n *\r\n */\r\n\r\n//>>label: Legacy jQuery Core patches\r\n//>>group: Core\r\n//>>description: Backport `.even()`, `.odd()` and `$.escapeSelector` to older jQuery Core versions (deprecated)\r\n\r\n\r\n// Support: jQuery 2.2.x or older.\r\n// This method has been defined in jQuery 3.0.0.\r\n// Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js\r\nif ( !$.escapeSelector ) {\r\n\t$.escapeSelector = function( id ) {\r\n\t\treturn CSS.escape( id + \"\" );\r\n\t};\r\n}\r\n\r\n// Support: jQuery 3.4.x or older\r\n// These methods have been defined in jQuery 3.5.0.\r\nif ( !$.fn.even || !$.fn.odd ) {\r\n\t$.fn.extend( {\r\n\t\teven: function() {\r\n\t\t\treturn this.filter( function( i ) {\r\n\t\t\t\treturn i % 2 === 0;\r\n\t\t\t} );\r\n\t\t},\r\n\t\todd: function() {\r\n\t\t\treturn this.filter( function( i ) {\r\n\t\t\t\treturn i % 2 === 1;\r\n\t\t\t} );\r\n\t\t}\r\n\t} );\r\n}\r\n\r\n;\r\n/*!\r\n * jQuery UI Keycode 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Keycode\r\n//>>group: Core\r\n//>>description: Provide keycodes as keynames\r\n//>>docs: https://api.jqueryui.com/jQuery.ui.keyCode/\r\n\r\n\r\nvar keycode = $.ui.keyCode = {\r\n\tBACKSPACE: 8,\r\n\tCOMMA: 188,\r\n\tDELETE: 46,\r\n\tDOWN: 40,\r\n\tEND: 35,\r\n\tENTER: 13,\r\n\tESCAPE: 27,\r\n\tHOME: 36,\r\n\tLEFT: 37,\r\n\tPAGE_DOWN: 34,\r\n\tPAGE_UP: 33,\r\n\tPERIOD: 190,\r\n\tRIGHT: 39,\r\n\tSPACE: 32,\r\n\tTAB: 9,\r\n\tUP: 38\r\n};\r\n\r\n\r\n/*!\r\n * jQuery UI Labels 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: labels\r\n//>>group: Core\r\n//>>description: Find all the labels associated with a given input\r\n//>>docs: https://api.jqueryui.com/labels/\r\n\r\n\r\nvar labels = $.fn.labels = function() {\r\n\tvar ancestor, selector, id, labels, ancestors;\r\n\r\n\tif ( !this.length ) {\r\n\t\treturn this.pushStack( [] );\r\n\t}\r\n\r\n\t// Check control.labels first\r\n\tif ( this[ 0 ].labels && this[ 0 ].labels.length ) {\r\n\t\treturn this.pushStack( this[ 0 ].labels );\r\n\t}\r\n\r\n\t// If `control.labels` is empty - e.g. inside of document fragments - find\r\n\t// the labels manually\r\n\tlabels = this.eq( 0 ).parents( \"label\" );\r\n\r\n\t// Look for the label based on the id\r\n\tid = this.attr( \"id\" );\r\n\tif ( id ) {\r\n\r\n\t\t// We don't search against the document in case the element\r\n\t\t// is disconnected from the DOM\r\n\t\tancestor = this.eq( 0 ).parents().last();\r\n\r\n\t\t// Get a full set of top level ancestors\r\n\t\tancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );\r\n\r\n\t\t// Create a selector for the label based on the id\r\n\t\tselector = \"label[for='\" + CSS.escape( id ) + \"']\";\r\n\r\n\t\tlabels = labels.add( ancestors.find( selector ).addBack( selector ) );\r\n\r\n\t}\r\n\r\n\t// Return whatever we have found for labels\r\n\treturn this.pushStack( labels );\r\n};\r\n\r\n\r\n/*!\r\n * jQuery UI Scroll Parent 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: scrollParent\r\n//>>group: Core\r\n//>>description: Get the closest ancestor element that is scrollable.\r\n//>>docs: https://api.jqueryui.com/scrollParent/\r\n\r\n\r\nvar scrollParent = $.fn.scrollParent = function( includeHidden ) {\r\n\tvar position = this.css( \"position\" ),\r\n\t\texcludeStaticParent = position === \"absolute\",\r\n\t\toverflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\r\n\t\tscrollParent = this.parents().filter( function() {\r\n\t\t\tvar parent = $( this );\r\n\t\t\tif ( excludeStaticParent && parent.css( \"position\" ) === \"static\" ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn overflowRegex.test( parent.css( \"overflow\" ) + parent.css( \"overflow-y\" ) +\r\n\t\t\t\tparent.css( \"overflow-x\" ) );\r\n\t\t} ).eq( 0 );\r\n\r\n\treturn position === \"fixed\" || !scrollParent.length ?\r\n\t\t$( this[ 0 ].ownerDocument || document ) :\r\n\t\tscrollParent;\r\n};\r\n\r\n\r\n/*!\r\n * jQuery UI Tabbable 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: :tabbable Selector\r\n//>>group: Core\r\n//>>description: Selects elements which can be tabbed to.\r\n//>>docs: https://api.jqueryui.com/tabbable-selector/\r\n\r\n\r\nvar tabbable = $.extend( $.expr.pseudos, {\r\n\ttabbable: function( element ) {\r\n\t\tvar tabIndex = $.attr( element, \"tabindex\" ),\r\n\t\t\thasTabindex = tabIndex != null;\r\n\t\treturn ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex );\r\n\t}\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Unique ID 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: uniqueId\r\n//>>group: Core\r\n//>>description: Functions to generate and remove uniqueId's\r\n//>>docs: https://api.jqueryui.com/uniqueId/\r\n\r\n\r\nvar uniqueId = $.fn.extend( {\r\n\tuniqueId: ( function() {\r\n\t\tvar uuid = 0;\r\n\r\n\t\treturn function() {\r\n\t\t\treturn this.each( function() {\r\n\t\t\t\tif ( !this.id ) {\r\n\t\t\t\t\tthis.id = \"ui-id-\" + ( ++uuid );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t};\r\n\t} )(),\r\n\r\n\tremoveUniqueId: function() {\r\n\t\treturn this.each( function() {\r\n\t\t\tif ( /^ui-id-\\d+$/.test( this.id ) ) {\r\n\t\t\t\t$( this ).removeAttr( \"id\" );\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Accordion 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Accordion\r\n//>>group: Widgets\r\n/* eslint-disable max-len */\r\n//>>description: Displays collapsible content panels for presenting information in a limited amount of space.\r\n/* eslint-enable max-len */\r\n//>>docs: https://api.jqueryui.com/accordion/\r\n//>>demos: https://jqueryui.com/accordion/\r\n//>>css.structure: ../../themes/base/core.css\r\n//>>css.structure: ../../themes/base/accordion.css\r\n//>>css.theme: ../../themes/base/theme.css\r\n\r\n\r\nvar widgetsAccordion = $.widget( \"ui.accordion\", {\r\n\tversion: \"1.14.1\",\r\n\toptions: {\r\n\t\tactive: 0,\r\n\t\tanimate: {},\r\n\t\tclasses: {\r\n\t\t\t\"ui-accordion-header\": \"ui-corner-top\",\r\n\t\t\t\"ui-accordion-header-collapsed\": \"ui-corner-all\",\r\n\t\t\t\"ui-accordion-content\": \"ui-corner-bottom\"\r\n\t\t},\r\n\t\tcollapsible: false,\r\n\t\tevent: \"click\",\r\n\t\theader: function( elem ) {\r\n\t\t\treturn elem\r\n\t\t\t\t.find( \"> li > :first-child\" )\r\n\t\t\t\t.add(\r\n\t\t\t\t\telem.find( \"> :not(li)\" )\r\n\r\n\t\t\t\t\t\t// Support: jQuery <3.5 only\r\n\t\t\t\t\t\t// We could use `.even()` but that's unavailable in older jQuery.\r\n\t\t\t\t\t\t.filter( function( i ) {\r\n\t\t\t\t\t\t\treturn i % 2 === 0;\r\n\t\t\t\t\t\t} )\r\n\t\t\t\t);\r\n\t\t},\r\n\t\theightStyle: \"auto\",\r\n\t\ticons: {\r\n\t\t\tactiveHeader: \"ui-icon-triangle-1-s\",\r\n\t\t\theader: \"ui-icon-triangle-1-e\"\r\n\t\t},\r\n\r\n\t\t// Callbacks\r\n\t\tactivate: null,\r\n\t\tbeforeActivate: null\r\n\t},\r\n\r\n\thideProps: {\r\n\t\tborderTopWidth: \"hide\",\r\n\t\tborderBottomWidth: \"hide\",\r\n\t\tpaddingTop: \"hide\",\r\n\t\tpaddingBottom: \"hide\",\r\n\t\theight: \"hide\"\r\n\t},\r\n\r\n\tshowProps: {\r\n\t\tborderTopWidth: \"show\",\r\n\t\tborderBottomWidth: \"show\",\r\n\t\tpaddingTop: \"show\",\r\n\t\tpaddingBottom: \"show\",\r\n\t\theight: \"show\"\r\n\t},\r\n\r\n\t_create: function() {\r\n\t\tvar options = this.options;\r\n\r\n\t\tthis.prevShow = this.prevHide = $();\r\n\t\tthis._addClass( \"ui-accordion\", \"ui-widget ui-helper-reset\" );\r\n\t\tthis.element.attr( \"role\", \"tablist\" );\r\n\r\n\t\t// Don't allow collapsible: false and active: false / null\r\n\t\tif ( !options.collapsible && ( options.active === false || options.active == null ) ) {\r\n\t\t\toptions.active = 0;\r\n\t\t}\r\n\r\n\t\tthis._processPanels();\r\n\r\n\t\t// handle negative values\r\n\t\tif ( options.active < 0 ) {\r\n\t\t\toptions.active += this.headers.length;\r\n\t\t}\r\n\t\tthis._refresh();\r\n\t},\r\n\r\n\t_getCreateEventData: function() {\r\n\t\treturn {\r\n\t\t\theader: this.active,\r\n\t\t\tpanel: !this.active.length ? $() : this.active.next()\r\n\t\t};\r\n\t},\r\n\r\n\t_createIcons: function() {\r\n\t\tvar icon, children,\r\n\t\t\ticons = this.options.icons;\r\n\r\n\t\tif ( icons ) {\r\n\t\t\ticon = $( \"<span>\" );\r\n\t\t\tthis._addClass( icon, \"ui-accordion-header-icon\", \"ui-icon \" + icons.header );\r\n\t\t\ticon.prependTo( this.headers );\r\n\t\t\tchildren = this.active.children( \".ui-accordion-header-icon\" );\r\n\t\t\tthis._removeClass( children, icons.header )\r\n\t\t\t\t._addClass( children, null, icons.activeHeader )\r\n\t\t\t\t._addClass( this.headers, \"ui-accordion-icons\" );\r\n\t\t}\r\n\t},\r\n\r\n\t_destroyIcons: function() {\r\n\t\tthis._removeClass( this.headers, \"ui-accordion-icons\" );\r\n\t\tthis.headers.children( \".ui-accordion-header-icon\" ).remove();\r\n\t},\r\n\r\n\t_destroy: function() {\r\n\t\tvar contents;\r\n\r\n\t\t// Clean up main element\r\n\t\tthis.element.removeAttr( \"role\" );\r\n\r\n\t\t// Clean up headers\r\n\t\tthis.headers\r\n\t\t\t.removeAttr( \"role aria-expanded aria-selected aria-controls tabIndex\" )\r\n\t\t\t.removeUniqueId();\r\n\r\n\t\tthis._destroyIcons();\r\n\r\n\t\t// Clean up content panels\r\n\t\tcontents = this.headers.next()\r\n\t\t\t.css( \"display\", \"\" )\r\n\t\t\t.removeAttr( \"role aria-hidden aria-labelledby\" )\r\n\t\t\t.removeUniqueId();\r\n\r\n\t\tif ( this.options.heightStyle !== \"content\" ) {\r\n\t\t\tcontents.css( \"height\", \"\" );\r\n\t\t}\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\t\tif ( key === \"active\" ) {\r\n\r\n\t\t\t// _activate() will handle invalid values and update this.options\r\n\t\t\tthis._activate( value );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( key === \"event\" ) {\r\n\t\t\tif ( this.options.event ) {\r\n\t\t\t\tthis._off( this.headers, this.options.event );\r\n\t\t\t}\r\n\t\t\tthis._setupEvents( value );\r\n\t\t}\r\n\r\n\t\tthis._super( key, value );\r\n\r\n\t\t// Setting collapsible: false while collapsed; open first panel\r\n\t\tif ( key === \"collapsible\" && !value && this.options.active === false ) {\r\n\t\t\tthis._activate( 0 );\r\n\t\t}\r\n\r\n\t\tif ( key === \"icons\" ) {\r\n\t\t\tthis._destroyIcons();\r\n\t\t\tif ( value ) {\r\n\t\t\t\tthis._createIcons();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_setOptionDisabled: function( value ) {\r\n\t\tthis._super( value );\r\n\r\n\t\tthis.element.attr( \"aria-disabled\", value );\r\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\r\n\t},\r\n\r\n\t_keydown: function( event ) {\r\n\t\tif ( event.altKey || event.ctrlKey ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar keyCode = $.ui.keyCode,\r\n\t\t\tlength = this.headers.length,\r\n\t\t\tcurrentIndex = this.headers.index( event.target ),\r\n\t\t\ttoFocus = false;\r\n\r\n\t\tswitch ( event.keyCode ) {\r\n\t\tcase keyCode.RIGHT:\r\n\t\tcase keyCode.DOWN:\r\n\t\t\ttoFocus = this.headers[ ( currentIndex + 1 ) % length ];\r\n\t\t\tbreak;\r\n\t\tcase keyCode.LEFT:\r\n\t\tcase keyCode.UP:\r\n\t\t\ttoFocus = this.headers[ ( currentIndex - 1 + length ) % length ];\r\n\t\t\tbreak;\r\n\t\tcase keyCode.SPACE:\r\n\t\tcase keyCode.ENTER:\r\n\t\t\tthis._eventHandler( event );\r\n\t\t\tbreak;\r\n\t\tcase keyCode.HOME:\r\n\t\t\ttoFocus = this.headers[ 0 ];\r\n\t\t\tbreak;\r\n\t\tcase keyCode.END:\r\n\t\t\ttoFocus = this.headers[ length - 1 ];\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif ( toFocus ) {\r\n\t\t\t$( event.target ).attr( \"tabIndex\", -1 );\r\n\t\t\t$( toFocus ).attr( \"tabIndex\", 0 );\r\n\t\t\t$( toFocus ).trigger( \"focus\" );\r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\t},\r\n\r\n\t_panelKeyDown: function( event ) {\r\n\t\tif ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {\r\n\t\t\t$( event.currentTarget ).prev().trigger( \"focus\" );\r\n\t\t}\r\n\t},\r\n\r\n\trefresh: function() {\r\n\t\tvar options = this.options;\r\n\t\tthis._processPanels();\r\n\r\n\t\t// Was collapsed or no panel\r\n\t\tif ( ( options.active === false && options.collapsible === true ) ||\r\n\t\t\t\t!this.headers.length ) {\r\n\t\t\toptions.active = false;\r\n\t\t\tthis.active = $();\r\n\r\n\t\t// active false only when collapsible is true\r\n\t\t} else if ( options.active === false ) {\r\n\t\t\tthis._activate( 0 );\r\n\r\n\t\t// was active, but active panel is gone\r\n\t\t} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\r\n\r\n\t\t\t// all remaining panel are disabled\r\n\t\t\tif ( this.headers.length === this.headers.find( \".ui-state-disabled\" ).length ) {\r\n\t\t\t\toptions.active = false;\r\n\t\t\t\tthis.active = $();\r\n\r\n\t\t\t// activate previous panel\r\n\t\t\t} else {\r\n\t\t\t\tthis._activate( Math.max( 0, options.active - 1 ) );\r\n\t\t\t}\r\n\r\n\t\t// was active, active panel still exists\r\n\t\t} else {\r\n\r\n\t\t\t// make sure active index is correct\r\n\t\t\toptions.active = this.headers.index( this.active );\r\n\t\t}\r\n\r\n\t\tthis._destroyIcons();\r\n\r\n\t\tthis._refresh();\r\n\t},\r\n\r\n\t_processPanels: function() {\r\n\t\tvar prevHeaders = this.headers,\r\n\t\t\tprevPanels = this.panels;\r\n\r\n\t\tif ( typeof this.options.header === \"function\" ) {\r\n\t\t\tthis.headers = this.options.header( this.element );\r\n\t\t} else {\r\n\t\t\tthis.headers = this.element.find( this.options.header );\r\n\t\t}\r\n\t\tthis._addClass( this.headers, \"ui-accordion-header ui-accordion-header-collapsed\",\r\n\t\t\t\"ui-state-default\" );\r\n\r\n\t\tthis.panels = this.headers.next().filter( \":not(.ui-accordion-content-active)\" ).hide();\r\n\t\tthis._addClass( this.panels, \"ui-accordion-content\", \"ui-helper-reset ui-widget-content\" );\r\n\r\n\t\t// Avoid memory leaks (#10056)\r\n\t\tif ( prevPanels ) {\r\n\t\t\tthis._off( prevHeaders.not( this.headers ) );\r\n\t\t\tthis._off( prevPanels.not( this.panels ) );\r\n\t\t}\r\n\t},\r\n\r\n\t_refresh: function() {\r\n\t\tvar maxHeight,\r\n\t\t\toptions = this.options,\r\n\t\t\theightStyle = options.heightStyle,\r\n\t\t\tparent = this.element.parent();\r\n\r\n\t\tthis.active = this._findActive( options.active );\r\n\t\tthis._addClass( this.active, \"ui-accordion-header-active\", \"ui-state-active\" )\r\n\t\t\t._removeClass( this.active, \"ui-accordion-header-collapsed\" );\r\n\t\tthis._addClass( this.active.next(), \"ui-accordion-content-active\" );\r\n\t\tthis.active.next().show();\r\n\r\n\t\tthis.headers\r\n\t\t\t.attr( \"role\", \"tab\" )\r\n\t\t\t.each( function() {\r\n\t\t\t\tvar header = $( this ),\r\n\t\t\t\t\theaderId = header.uniqueId().attr( \"id\" ),\r\n\t\t\t\t\tpanel = header.next(),\r\n\t\t\t\t\tpanelId = panel.uniqueId().attr( \"id\" );\r\n\t\t\t\theader.attr( \"aria-controls\", panelId );\r\n\t\t\t\tpanel.attr( \"aria-labelledby\", headerId );\r\n\t\t\t} )\r\n\t\t\t.next()\r\n\t\t\t\t.attr( \"role\", \"tabpanel\" );\r\n\r\n\t\tthis.headers\r\n\t\t\t.not( this.active )\r\n\t\t\t\t.attr( {\r\n\t\t\t\t\t\"aria-selected\": \"false\",\r\n\t\t\t\t\t\"aria-expanded\": \"false\",\r\n\t\t\t\t\ttabIndex: -1\r\n\t\t\t\t} )\r\n\t\t\t\t.next()\r\n\t\t\t\t\t.attr( {\r\n\t\t\t\t\t\t\"aria-hidden\": \"true\"\r\n\t\t\t\t\t} )\r\n\t\t\t\t\t.hide();\r\n\r\n\t\t// Make sure at least one header is in the tab order\r\n\t\tif ( !this.active.length ) {\r\n\t\t\tthis.headers.eq( 0 ).attr( \"tabIndex\", 0 );\r\n\t\t} else {\r\n\t\t\tthis.active.attr( {\r\n\t\t\t\t\"aria-selected\": \"true\",\r\n\t\t\t\t\"aria-expanded\": \"true\",\r\n\t\t\t\ttabIndex: 0\r\n\t\t\t} )\r\n\t\t\t\t.next()\r\n\t\t\t\t\t.attr( {\r\n\t\t\t\t\t\t\"aria-hidden\": \"false\"\r\n\t\t\t\t\t} );\r\n\t\t}\r\n\r\n\t\tthis._createIcons();\r\n\r\n\t\tthis._setupEvents( options.event );\r\n\r\n\t\tif ( heightStyle === \"fill\" ) {\r\n\t\t\tmaxHeight = parent.height();\r\n\t\t\tthis.element.siblings( \":visible\" ).each( function() {\r\n\t\t\t\tvar elem = $( this ),\r\n\t\t\t\t\tposition = elem.css( \"position\" );\r\n\r\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\r\n\t\t\t} );\r\n\r\n\t\t\tthis.headers.each( function() {\r\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\r\n\t\t\t} );\r\n\r\n\t\t\tthis.headers.next()\r\n\t\t\t\t.each( function() {\r\n\t\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\r\n\t\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\r\n\t\t\t\t} )\r\n\t\t\t\t.css( \"overflow\", \"auto\" );\r\n\t\t} else if ( heightStyle === \"auto\" ) {\r\n\t\t\tmaxHeight = 0;\r\n\t\t\tthis.headers.next()\r\n\t\t\t\t.each( function() {\r\n\t\t\t\t\tvar isVisible = $( this ).is( \":visible\" );\r\n\t\t\t\t\tif ( !isVisible ) {\r\n\t\t\t\t\t\t$( this ).show();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).css( \"height\", \"\" ).height() );\r\n\t\t\t\t\tif ( !isVisible ) {\r\n\t\t\t\t\t\t$( this ).hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t} )\r\n\t\t\t\t.height( maxHeight );\r\n\t\t}\r\n\t},\r\n\r\n\t_activate: function( index ) {\r\n\t\tvar active = this._findActive( index )[ 0 ];\r\n\r\n\t\t// Trying to activate the already active panel\r\n\t\tif ( active === this.active[ 0 ] ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Trying to collapse, simulate a click on the currently active header\r\n\t\tactive = active || this.active[ 0 ];\r\n\r\n\t\tthis._eventHandler( {\r\n\t\t\ttarget: active,\r\n\t\t\tcurrentTarget: active,\r\n\t\t\tpreventDefault: $.noop\r\n\t\t} );\r\n\t},\r\n\r\n\t_findActive: function( selector ) {\r\n\t\treturn typeof selector === \"number\" ? this.headers.eq( selector ) : $();\r\n\t},\r\n\r\n\t_setupEvents: function( event ) {\r\n\t\tvar events = {\r\n\t\t\tkeydown: \"_keydown\"\r\n\t\t};\r\n\t\tif ( event ) {\r\n\t\t\t$.each( event.split( \" \" ), function( index, eventName ) {\r\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\tthis._off( this.headers.add( this.headers.next() ) );\r\n\t\tthis._on( this.headers, events );\r\n\t\tthis._on( this.headers.next(), { keydown: \"_panelKeyDown\" } );\r\n\t\tthis._hoverable( this.headers );\r\n\t\tthis._focusable( this.headers );\r\n\t},\r\n\r\n\t_eventHandler: function( event ) {\r\n\t\tvar activeChildren, clickedChildren,\r\n\t\t\toptions = this.options,\r\n\t\t\tactive = this.active,\r\n\t\t\tclicked = $( event.currentTarget ),\r\n\t\t\tclickedIsActive = clicked[ 0 ] === active[ 0 ],\r\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\r\n\t\t\ttoShow = collapsing ? $() : clicked.next(),\r\n\t\t\ttoHide = active.next(),\r\n\t\t\teventData = {\r\n\t\t\t\toldHeader: active,\r\n\t\t\t\toldPanel: toHide,\r\n\t\t\t\tnewHeader: collapsing ? $() : clicked,\r\n\t\t\t\tnewPanel: toShow\r\n\t\t\t};\r\n\r\n\t\tevent.preventDefault();\r\n\r\n\t\tif (\r\n\r\n\t\t\t\t// click on active header, but not collapsible\r\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\r\n\r\n\t\t\t\t// allow canceling activation\r\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\toptions.active = collapsing ? false : this.headers.index( clicked );\r\n\r\n\t\t// When the call to ._toggle() comes after the class changes\r\n\t\t// it causes a very odd bug in IE 8 (see #6720)\r\n\t\tthis.active = clickedIsActive ? $() : clicked;\r\n\t\tthis._toggle( eventData );\r\n\r\n\t\t// Switch classes\r\n\t\t// corner classes on the previously active header stay after the animation\r\n\t\tthis._removeClass( active, \"ui-accordion-header-active\", \"ui-state-active\" );\r\n\t\tif ( options.icons ) {\r\n\t\t\tactiveChildren = active.children( \".ui-accordion-header-icon\" );\r\n\t\t\tthis._removeClass( activeChildren, null, options.icons.activeHeader )\r\n\t\t\t\t._addClass( activeChildren, null, options.icons.header );\r\n\t\t}\r\n\r\n\t\tif ( !clickedIsActive ) {\r\n\t\t\tthis._removeClass( clicked, \"ui-accordion-header-collapsed\" )\r\n\t\t\t\t._addClass( clicked, \"ui-accordion-header-active\", \"ui-state-active\" );\r\n\t\t\tif ( options.icons ) {\r\n\t\t\t\tclickedChildren = clicked.children( \".ui-accordion-header-icon\" );\r\n\t\t\t\tthis._removeClass( clickedChildren, null, options.icons.header )\r\n\t\t\t\t\t._addClass( clickedChildren, null, options.icons.activeHeader );\r\n\t\t\t}\r\n\r\n\t\t\tthis._addClass( clicked.next(), \"ui-accordion-content-active\" );\r\n\t\t}\r\n\t},\r\n\r\n\t_toggle: function( data ) {\r\n\t\tvar toShow = data.newPanel,\r\n\t\t\ttoHide = this.prevShow.length ? this.prevShow : data.oldPanel;\r\n\r\n\t\t// Handle activating a panel during the animation for another activation\r\n\t\tthis.prevShow.add( this.prevHide ).stop( true, true );\r\n\t\tthis.prevShow = toShow;\r\n\t\tthis.prevHide = toHide;\r\n\r\n\t\tif ( this.options.animate ) {\r\n\t\t\tthis._animate( toShow, toHide, data );\r\n\t\t} else {\r\n\t\t\ttoHide.hide();\r\n\t\t\ttoShow.show();\r\n\t\t\tthis._toggleComplete( data );\r\n\t\t}\r\n\r\n\t\ttoHide.attr( {\r\n\t\t\t\"aria-hidden\": \"true\"\r\n\t\t} );\r\n\t\ttoHide.prev().attr( {\r\n\t\t\t\"aria-selected\": \"false\",\r\n\t\t\t\"aria-expanded\": \"false\"\r\n\t\t} );\r\n\r\n\t\t// if we're switching panels, remove the old header from the tab order\r\n\t\t// if we're opening from collapsed state, remove the previous header from the tab order\r\n\t\t// if we're collapsing, then keep the collapsing header in the tab order\r\n\t\tif ( toShow.length && toHide.length ) {\r\n\t\t\ttoHide.prev().attr( {\r\n\t\t\t\t\"tabIndex\": -1,\r\n\t\t\t\t\"aria-expanded\": \"false\"\r\n\t\t\t} );\r\n\t\t} else if ( toShow.length ) {\r\n\t\t\tthis.headers.filter( function() {\r\n\t\t\t\treturn parseInt( $( this ).attr( \"tabIndex\" ), 10 ) === 0;\r\n\t\t\t} )\r\n\t\t\t\t.attr( \"tabIndex\", -1 );\r\n\t\t}\r\n\r\n\t\ttoShow\r\n\t\t\t.attr( \"aria-hidden\", \"false\" )\r\n\t\t\t.prev()\r\n\t\t\t\t.attr( {\r\n\t\t\t\t\t\"aria-selected\": \"true\",\r\n\t\t\t\t\t\"aria-expanded\": \"true\",\r\n\t\t\t\t\ttabIndex: 0\r\n\t\t\t\t} );\r\n\t},\r\n\r\n\t_animate: function( toShow, toHide, data ) {\r\n\t\tvar total, easing, duration,\r\n\t\t\tthat = this,\r\n\t\t\tadjust = 0,\r\n\t\t\tboxSizing = toShow.css( \"box-sizing\" ),\r\n\t\t\tdown = toShow.length &&\r\n\t\t\t\t( !toHide.length || ( toShow.index() < toHide.index() ) ),\r\n\t\t\tanimate = this.options.animate || {},\r\n\t\t\toptions = down && animate.down || animate,\r\n\t\t\tcomplete = function() {\r\n\t\t\t\tthat._toggleComplete( data );\r\n\t\t\t};\r\n\r\n\t\tif ( typeof options === \"number\" ) {\r\n\t\t\tduration = options;\r\n\t\t}\r\n\t\tif ( typeof options === \"string\" ) {\r\n\t\t\teasing = options;\r\n\t\t}\r\n\r\n\t\t// fall back from options to animation in case of partial down settings\r\n\t\teasing = easing || options.easing || animate.easing;\r\n\t\tduration = duration || options.duration || animate.duration;\r\n\r\n\t\tif ( !toHide.length ) {\r\n\t\t\treturn toShow.animate( this.showProps, duration, easing, complete );\r\n\t\t}\r\n\t\tif ( !toShow.length ) {\r\n\t\t\treturn toHide.animate( this.hideProps, duration, easing, complete );\r\n\t\t}\r\n\r\n\t\ttotal = toShow.show().outerHeight();\r\n\t\ttoHide.animate( this.hideProps, {\r\n\t\t\tduration: duration,\r\n\t\t\teasing: easing,\r\n\t\t\tstep: function( now, fx ) {\r\n\t\t\t\tfx.now = Math.round( now );\r\n\t\t\t}\r\n\t\t} );\r\n\t\ttoShow\r\n\t\t\t.hide()\r\n\t\t\t.animate( this.showProps, {\r\n\t\t\t\tduration: duration,\r\n\t\t\t\teasing: easing,\r\n\t\t\t\tcomplete: complete,\r\n\t\t\t\tstep: function( now, fx ) {\r\n\t\t\t\t\tfx.now = Math.round( now );\r\n\t\t\t\t\tif ( fx.prop !== \"height\" ) {\r\n\t\t\t\t\t\tif ( boxSizing === \"content-box\" ) {\r\n\t\t\t\t\t\t\tadjust += fx.now;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if ( that.options.heightStyle !== \"content\" ) {\r\n\t\t\t\t\t\tfx.now = Math.round( total - toHide.outerHeight() - adjust );\r\n\t\t\t\t\t\tadjust = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t},\r\n\r\n\t_toggleComplete: function( data ) {\r\n\t\tvar toHide = data.oldPanel,\r\n\t\t\tprev = toHide.prev();\r\n\r\n\t\tthis._removeClass( toHide, \"ui-accordion-content-active\" );\r\n\t\tthis._removeClass( prev, \"ui-accordion-header-active\" )\r\n\t\t\t._addClass( prev, \"ui-accordion-header-collapsed\" );\r\n\r\n\t\tthis._trigger( \"activate\", null, data );\r\n\t}\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Menu 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Menu\r\n//>>group: Widgets\r\n//>>description: Creates nestable menus.\r\n//>>docs: https://api.jqueryui.com/menu/\r\n//>>demos: https://jqueryui.com/menu/\r\n//>>css.structure: ../../themes/base/core.css\r\n//>>css.structure: ../../themes/base/menu.css\r\n//>>css.theme: ../../themes/base/theme.css\r\n\r\n\r\nvar widgetsMenu = $.widget( \"ui.menu\", {\r\n\tversion: \"1.14.1\",\r\n\tdefaultElement: \"<ul>\",\r\n\tdelay: 300,\r\n\toptions: {\r\n\t\ticons: {\r\n\t\t\tsubmenu: \"ui-icon-caret-1-e\"\r\n\t\t},\r\n\t\titems: \"> *\",\r\n\t\tmenus: \"ul\",\r\n\t\tposition: {\r\n\t\t\tmy: \"left top\",\r\n\t\t\tat: \"right top\"\r\n\t\t},\r\n\t\trole: \"menu\",\r\n\r\n\t\t// Callbacks\r\n\t\tblur: null,\r\n\t\tfocus: null,\r\n\t\tselect: null\r\n\t},\r\n\r\n\t_create: function() {\r\n\t\tthis.activeMenu = this.element;\r\n\r\n\t\t// Flag used to prevent firing of the click handler\r\n\t\t// as the event bubbles up through nested menus\r\n\t\tthis.mouseHandled = false;\r\n\t\tthis.lastMousePosition = { x: null, y: null };\r\n\t\tthis.element\r\n\t\t\t.uniqueId()\r\n\t\t\t.attr( {\r\n\t\t\t\trole: this.options.role,\r\n\t\t\t\ttabIndex: 0\r\n\t\t\t} );\r\n\r\n\t\tthis._addClass( \"ui-menu\", \"ui-widget ui-widget-content\" );\r\n\t\tthis._on( {\r\n\r\n\t\t\t// Prevent focus from sticking to links inside menu after clicking\r\n\t\t\t// them (focus should always stay on UL during navigation).\r\n\t\t\t\"mousedown .ui-menu-item\": function( event ) {\r\n\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\tthis._activateItem( event );\r\n\t\t\t},\r\n\t\t\t\"click .ui-menu-item\": function( event ) {\r\n\t\t\t\tvar target = $( event.target );\r\n\t\t\t\tvar active = $( this.document[ 0 ].activeElement );\r\n\t\t\t\tif ( !this.mouseHandled && target.not( \".ui-state-disabled\" ).length ) {\r\n\t\t\t\t\tthis.select( event );\r\n\r\n\t\t\t\t\t// Only set the mouseHandled flag if the event will bubble, see #9469.\r\n\t\t\t\t\tif ( !event.isPropagationStopped() ) {\r\n\t\t\t\t\t\tthis.mouseHandled = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Open submenu on click\r\n\t\t\t\t\tif ( target.has( \".ui-menu\" ).length ) {\r\n\t\t\t\t\t\tthis.expand( event );\r\n\t\t\t\t\t} else if ( !this.element.is( \":focus\" ) &&\r\n\t\t\t\t\t\t\tactive.closest( \".ui-menu\" ).length ) {\r\n\r\n\t\t\t\t\t\t// Redirect focus to the menu\r\n\t\t\t\t\t\tthis.element.trigger( \"focus\", [ true ] );\r\n\r\n\t\t\t\t\t\t// If the active item is on the top level, let it stay active.\r\n\t\t\t\t\t\t// Otherwise, blur the active item since it is no longer visible.\r\n\t\t\t\t\t\tif ( this.active && this.active.parents( \".ui-menu\" ).length === 1 ) {\r\n\t\t\t\t\t\t\tclearTimeout( this.timer );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\"mouseenter .ui-menu-item\": \"_activateItem\",\r\n\t\t\t\"mousemove .ui-menu-item\": \"_activateItem\",\r\n\t\t\tmouseleave: \"collapseAll\",\r\n\t\t\t\"mouseleave .ui-menu\": \"collapseAll\",\r\n\t\t\tfocus: function( event, keepActiveItem ) {\r\n\r\n\t\t\t\t// If there's already an active item, keep it active\r\n\t\t\t\t// If not, activate the first item\r\n\t\t\t\tvar item = this.active || this._menuItems().first();\r\n\r\n\t\t\t\tif ( !keepActiveItem ) {\r\n\t\t\t\t\tthis.focus( event, item );\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tblur: function( event ) {\r\n\t\t\t\tthis._delay( function() {\r\n\t\t\t\t\tvar notContained = !$.contains(\r\n\t\t\t\t\t\tthis.element[ 0 ],\r\n\t\t\t\t\t\tthis.document[ 0 ].activeElement\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif ( notContained ) {\r\n\t\t\t\t\t\tthis.collapseAll( event );\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t},\r\n\t\t\tkeydown: \"_keydown\"\r\n\t\t} );\r\n\r\n\t\tthis.refresh();\r\n\r\n\t\t// Clicks outside of a menu collapse any open menus\r\n\t\tthis._on( this.document, {\r\n\t\t\tclick: function( event ) {\r\n\t\t\t\tif ( this._closeOnDocumentClick( event ) ) {\r\n\t\t\t\t\tthis.collapseAll( event, true );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Reset the mouseHandled flag\r\n\t\t\t\tthis.mouseHandled = false;\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\t_activateItem: function( event ) {\r\n\r\n\t\t// Ignore mouse events while typeahead is active, see #10458.\r\n\t\t// Prevents focusing the wrong item when typeahead causes a scroll while the mouse\r\n\t\t// is over an item in the menu\r\n\t\tif ( this.previousFilter ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If the mouse didn't actually move, but the page was scrolled, ignore the event (#9356)\r\n\t\tif ( event.clientX === this.lastMousePosition.x &&\r\n\t\t\t\tevent.clientY === this.lastMousePosition.y ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.lastMousePosition = {\r\n\t\t\tx: event.clientX,\r\n\t\t\ty: event.clientY\r\n\t\t};\r\n\r\n\t\tvar actualTarget = $( event.target ).closest( \".ui-menu-item\" ),\r\n\t\t\ttarget = $( event.currentTarget );\r\n\r\n\t\t// Ignore bubbled events on parent items, see #11641\r\n\t\tif ( actualTarget[ 0 ] !== target[ 0 ] ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If the item is already active, there's nothing to do\r\n\t\tif ( target.is( \".ui-state-active\" ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Remove ui-state-active class from siblings of the newly focused menu item\r\n\t\t// to avoid a jump caused by adjacent elements both having a class with a border\r\n\t\tthis._removeClass( target.siblings().children( \".ui-state-active\" ),\r\n\t\t\tnull, \"ui-state-active\" );\r\n\t\tthis.focus( event, target );\r\n\t},\r\n\r\n\t_destroy: function() {\r\n\t\tvar items = this.element.find( \".ui-menu-item\" )\r\n\t\t\t\t.removeAttr( \"role aria-disabled\" ),\r\n\t\t\tsubmenus = items.children( \".ui-menu-item-wrapper\" )\r\n\t\t\t\t.removeUniqueId()\r\n\t\t\t\t.removeAttr( \"tabIndex role aria-haspopup\" );\r\n\r\n\t\t// Destroy (sub)menus\r\n\t\tthis.element\r\n\t\t\t.removeAttr( \"aria-activedescendant\" )\r\n\t\t\t.find( \".ui-menu\" ).addBack()\r\n\t\t\t\t.removeAttr( \"role aria-labelledby aria-expanded aria-hidden aria-disabled \" +\r\n\t\t\t\t\t\"tabIndex\" )\r\n\t\t\t\t.removeUniqueId()\r\n\t\t\t\t.show();\r\n\r\n\t\tsubmenus.children().each( function() {\r\n\t\t\tvar elem = $( this );\r\n\t\t\tif ( elem.data( \"ui-menu-submenu-caret\" ) ) {\r\n\t\t\t\telem.remove();\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\t_keydown: function( event ) {\r\n\t\tvar match, prev, character, skip,\r\n\t\t\tpreventDefault = true;\r\n\r\n\t\tswitch ( event.keyCode ) {\r\n\t\tcase $.ui.keyCode.PAGE_UP:\r\n\t\t\tthis.previousPage( event );\r\n\t\t\tbreak;\r\n\t\tcase $.ui.keyCode.PAGE_DOWN:\r\n\t\t\tthis.nextPage( event );\r\n\t\t\tbreak;\r\n\t\tcase $.ui.keyCode.HOME:\r\n\t\t\tthis._move( \"first\", \"first\", event );\r\n\t\t\tbreak;\r\n\t\tcase $.ui.keyCode.END:\r\n\t\t\tthis._move( \"last\", \"last\", event );\r\n\t\t\tbreak;\r\n\t\tcase $.ui.keyCode.UP:\r\n\t\t\tthis.previous( event );\r\n\t\t\tbreak;\r\n\t\tcase $.ui.keyCode.DOWN:\r\n\t\t\tthis.next( event );\r\n\t\t\tbreak;\r\n\t\tcase $.ui.keyCode.LEFT:\r\n\t\t\tthis.collapse( event );\r\n\t\t\tbreak;\r\n\t\tcase $.ui.keyCode.RIGHT:\r\n\t\t\tif ( this.active && !this.active.is( \".ui-state-disabled\" ) ) {\r\n\t\t\t\tthis.expand( event );\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase $.ui.keyCode.ENTER:\r\n\t\tcase $.ui.keyCode.SPACE:\r\n\t\t\tthis._activate( event );\r\n\t\t\tbreak;\r\n\t\tcase $.ui.keyCode.ESCAPE:\r\n\t\t\tthis.collapse( event );\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tpreventDefault = false;\r\n\t\t\tprev = this.previousFilter || \"\";\r\n\t\t\tskip = false;\r\n\r\n\t\t\t// Support number pad values\r\n\t\t\tcharacter = event.keyCode >= 96 && event.keyCode <= 105 ?\r\n\t\t\t\t( event.keyCode - 96 ).toString() : String.fromCharCode( event.keyCode );\r\n\r\n\t\t\tclearTimeout( this.filterTimer );\r\n\r\n\t\t\tif ( character === prev ) {\r\n\t\t\t\tskip = true;\r\n\t\t\t} else {\r\n\t\t\t\tcharacter = prev + character;\r\n\t\t\t}\r\n\r\n\t\t\tmatch = this._filterMenuItems( character );\r\n\t\t\tmatch = skip && match.index( this.active.next() ) !== -1 ?\r\n\t\t\t\tthis.active.nextAll( \".ui-menu-item\" ) :\r\n\t\t\t\tmatch;\r\n\r\n\t\t\t// If no matches on the current filter, reset to the last character pressed\r\n\t\t\t// to move down the menu to the first item that starts with that character\r\n\t\t\tif ( !match.length ) {\r\n\t\t\t\tcharacter = String.fromCharCode( event.keyCode );\r\n\t\t\t\tmatch = this._filterMenuItems( character );\r\n\t\t\t}\r\n\r\n\t\t\tif ( match.length ) {\r\n\t\t\t\tthis.focus( event, match );\r\n\t\t\t\tthis.previousFilter = character;\r\n\t\t\t\tthis.filterTimer = this._delay( function() {\r\n\t\t\t\t\tdelete this.previousFilter;\r\n\t\t\t\t}, 1000 );\r\n\t\t\t} else {\r\n\t\t\t\tdelete this.previousFilter;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( preventDefault ) {\r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\t},\r\n\r\n\t_activate: function( event ) {\r\n\t\tif ( this.active && !this.active.is( \".ui-state-disabled\" ) ) {\r\n\t\t\tif ( this.active.children( \"[aria-haspopup='true']\" ).length ) {\r\n\t\t\t\tthis.expand( event );\r\n\t\t\t} else {\r\n\t\t\t\tthis.select( event );\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\trefresh: function() {\r\n\t\tvar menus, items, newSubmenus, newItems, newWrappers,\r\n\t\t\tthat = this,\r\n\t\t\ticon = this.options.icons.submenu,\r\n\t\t\tsubmenus = this.element.find( this.options.menus );\r\n\r\n\t\tthis._toggleClass( \"ui-menu-icons\", null, !!this.element.find( \".ui-icon\" ).length );\r\n\r\n\t\t// Initialize nested menus\r\n\t\tnewSubmenus = submenus.filter( \":not(.ui-menu)\" )\r\n\t\t\t.hide()\r\n\t\t\t.attr( {\r\n\t\t\t\trole: this.options.role,\r\n\t\t\t\t\"aria-hidden\": \"true\",\r\n\t\t\t\t\"aria-expanded\": \"false\"\r\n\t\t\t} )\r\n\t\t\t.each( function() {\r\n\t\t\t\tvar menu = $( this ),\r\n\t\t\t\t\titem = menu.prev(),\r\n\t\t\t\t\tsubmenuCaret = $( \"<span>\" ).data( \"ui-menu-submenu-caret\", true );\r\n\r\n\t\t\t\tthat._addClass( submenuCaret, \"ui-menu-icon\", \"ui-icon \" + icon );\r\n\t\t\t\titem\r\n\t\t\t\t\t.attr( \"aria-haspopup\", \"true\" )\r\n\t\t\t\t\t.prepend( submenuCaret );\r\n\t\t\t\tmenu.attr( \"aria-labelledby\", item.attr( \"id\" ) );\r\n\t\t\t} );\r\n\r\n\t\tthis._addClass( newSubmenus, \"ui-menu\", \"ui-widget ui-widget-content ui-front\" );\r\n\r\n\t\tmenus = submenus.add( this.element );\r\n\t\titems = menus.find( this.options.items );\r\n\r\n\t\t// Initialize menu-items containing spaces and/or dashes only as dividers\r\n\t\titems.not( \".ui-menu-item\" ).each( function() {\r\n\t\t\tvar item = $( this );\r\n\t\t\tif ( that._isDivider( item ) ) {\r\n\t\t\t\tthat._addClass( item, \"ui-menu-divider\", \"ui-widget-content\" );\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\t// Don't refresh list items that are already adapted\r\n\t\tnewItems = items.not( \".ui-menu-item, .ui-menu-divider\" );\r\n\t\tnewWrappers = newItems.children()\r\n\t\t\t.not( \".ui-menu\" )\r\n\t\t\t\t.uniqueId()\r\n\t\t\t\t.attr( {\r\n\t\t\t\t\ttabIndex: -1,\r\n\t\t\t\t\trole: this._itemRole()\r\n\t\t\t\t} );\r\n\t\tthis._addClass( newItems, \"ui-menu-item\" )\r\n\t\t\t._addClass( newWrappers, \"ui-menu-item-wrapper\" );\r\n\r\n\t\t// Add aria-disabled attribute to any disabled menu item\r\n\t\titems.filter( \".ui-state-disabled\" ).attr( \"aria-disabled\", \"true\" );\r\n\r\n\t\t// If the active item has been removed, blur the menu\r\n\t\tif ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\r\n\t\t\tthis.blur();\r\n\t\t}\r\n\t},\r\n\r\n\t_itemRole: function() {\r\n\t\treturn {\r\n\t\t\tmenu: \"menuitem\",\r\n\t\t\tlistbox: \"option\"\r\n\t\t}[ this.options.role ];\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\t\tif ( key === \"icons\" ) {\r\n\t\t\tvar icons = this.element.find( \".ui-menu-icon\" );\r\n\t\t\tthis._removeClass( icons, null, this.options.icons.submenu )\r\n\t\t\t\t._addClass( icons, null, value.submenu );\r\n\t\t}\r\n\t\tthis._super( key, value );\r\n\t},\r\n\r\n\t_setOptionDisabled: function( value ) {\r\n\t\tthis._super( value );\r\n\r\n\t\tthis.element.attr( \"aria-disabled\", String( value ) );\r\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\r\n\t},\r\n\r\n\tfocus: function( event, item ) {\r\n\t\tvar nested, focused, activeParent;\r\n\t\tthis.blur( event, event && event.type === \"focus\" );\r\n\r\n\t\tthis._scrollIntoView( item );\r\n\r\n\t\tthis.active = item.first();\r\n\r\n\t\tfocused = this.active.children( \".ui-menu-item-wrapper\" );\r\n\t\tthis._addClass( focused, null, \"ui-state-active\" );\r\n\r\n\t\t// Only update aria-activedescendant if there's a role\r\n\t\t// otherwise we assume focus is managed elsewhere\r\n\t\tif ( this.options.role ) {\r\n\t\t\tthis.element.attr( \"aria-activedescendant\", focused.attr( \"id\" ) );\r\n\t\t}\r\n\r\n\t\t// Highlight active parent menu item, if any\r\n\t\tactiveParent = this.active\r\n\t\t\t.parent()\r\n\t\t\t\t.closest( \".ui-menu-item\" )\r\n\t\t\t\t\t.children( \".ui-menu-item-wrapper\" );\r\n\t\tthis._addClass( activeParent, null, \"ui-state-active\" );\r\n\r\n\t\tif ( event && event.type === \"keydown\" ) {\r\n\t\t\tthis._close();\r\n\t\t} else {\r\n\t\t\tthis.timer = this._delay( function() {\r\n\t\t\t\tthis._close();\r\n\t\t\t}, this.delay );\r\n\t\t}\r\n\r\n\t\tnested = item.children( \".ui-menu\" );\r\n\t\tif ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {\r\n\t\t\tthis._startOpening( nested );\r\n\t\t}\r\n\t\tthis.activeMenu = item.parent();\r\n\r\n\t\tthis._trigger( \"focus\", event, { item: item } );\r\n\t},\r\n\r\n\t_scrollIntoView: function( item ) {\r\n\t\tvar borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\r\n\t\tif ( this._hasScroll() ) {\r\n\t\t\tborderTop = parseFloat( $.css( this.activeMenu[ 0 ], \"borderTopWidth\" ) ) || 0;\r\n\t\t\tpaddingTop = parseFloat( $.css( this.activeMenu[ 0 ], \"paddingTop\" ) ) || 0;\r\n\t\t\toffset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\r\n\t\t\tscroll = this.activeMenu.scrollTop();\r\n\t\t\telementHeight = this.activeMenu.height();\r\n\t\t\titemHeight = item.outerHeight();\r\n\r\n\t\t\tif ( offset < 0 ) {\r\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset );\r\n\t\t\t} else if ( offset + itemHeight > elementHeight ) {\r\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tblur: function( event, fromFocus ) {\r\n\t\tif ( !fromFocus ) {\r\n\t\t\tclearTimeout( this.timer );\r\n\t\t}\r\n\r\n\t\tif ( !this.active ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._removeClass( this.active.children( \".ui-menu-item-wrapper\" ),\r\n\t\t\tnull, \"ui-state-active\" );\r\n\r\n\t\tthis._trigger( \"blur\", event, { item: this.active } );\r\n\t\tthis.active = null;\r\n\t},\r\n\r\n\t_startOpening: function( submenu ) {\r\n\t\tclearTimeout( this.timer );\r\n\r\n\t\t// Don't open if already open fixes a Firefox bug that caused a .5 pixel\r\n\t\t// shift in the submenu position when mousing over the caret icon\r\n\t\tif ( submenu.attr( \"aria-hidden\" ) !== \"true\" ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.timer = this._delay( function() {\r\n\t\t\tthis._close();\r\n\t\t\tthis._open( submenu );\r\n\t\t}, this.delay );\r\n\t},\r\n\r\n\t_open: function( submenu ) {\r\n\t\tvar position = $.extend( {\r\n\t\t\tof: this.active\r\n\t\t}, this.options.position );\r\n\r\n\t\tclearTimeout( this.timer );\r\n\t\tthis.element.find( \".ui-menu\" ).not( submenu.parents( \".ui-menu\" ) )\r\n\t\t\t.hide()\r\n\t\t\t.attr( \"aria-hidden\", \"true\" );\r\n\r\n\t\tsubmenu\r\n\t\t\t.show()\r\n\t\t\t.removeAttr( \"aria-hidden\" )\r\n\t\t\t.attr( \"aria-expanded\", \"true\" )\r\n\t\t\t.position( position );\r\n\t},\r\n\r\n\tcollapseAll: function( event, all ) {\r\n\t\tclearTimeout( this.timer );\r\n\t\tthis.timer = this._delay( function() {\r\n\r\n\t\t\t// If we were passed an event, look for the submenu that contains the event\r\n\t\t\tvar currentMenu = all ? this.element :\r\n\t\t\t\t$( event && event.target ).closest( this.element.find( \".ui-menu\" ) );\r\n\r\n\t\t\t// If we found no valid submenu ancestor, use the main menu to close all\r\n\t\t\t// sub menus anyway\r\n\t\t\tif ( !currentMenu.length ) {\r\n\t\t\t\tcurrentMenu = this.element;\r\n\t\t\t}\r\n\r\n\t\t\tthis._close( currentMenu );\r\n\r\n\t\t\tthis.blur( event );\r\n\r\n\t\t\t// Work around active item staying active after menu is blurred\r\n\t\t\tthis._removeClass( currentMenu.find( \".ui-state-active\" ), null, \"ui-state-active\" );\r\n\r\n\t\t\tthis.activeMenu = currentMenu;\r\n\t\t}, all ? 0 : this.delay );\r\n\t},\r\n\r\n\t// With no arguments, closes the currently active menu - if nothing is active\r\n\t// it closes all menus.  If passed an argument, it will search for menus BELOW\r\n\t_close: function( startMenu ) {\r\n\t\tif ( !startMenu ) {\r\n\t\t\tstartMenu = this.active ? this.active.parent() : this.element;\r\n\t\t}\r\n\r\n\t\tstartMenu.find( \".ui-menu\" )\r\n\t\t\t.hide()\r\n\t\t\t.attr( \"aria-hidden\", \"true\" )\r\n\t\t\t.attr( \"aria-expanded\", \"false\" );\r\n\t},\r\n\r\n\t_closeOnDocumentClick: function( event ) {\r\n\t\treturn !$( event.target ).closest( \".ui-menu\" ).length;\r\n\t},\r\n\r\n\t_isDivider: function( item ) {\r\n\r\n\t\t// Match hyphen, em dash, en dash\r\n\t\treturn !/[^\\-\\u2014\\u2013\\s]/.test( item.text() );\r\n\t},\r\n\r\n\tcollapse: function( event ) {\r\n\t\tvar newItem = this.active &&\r\n\t\t\tthis.active.parent().closest( \".ui-menu-item\", this.element );\r\n\t\tif ( newItem && newItem.length ) {\r\n\t\t\tthis._close();\r\n\t\t\tthis.focus( event, newItem );\r\n\t\t}\r\n\t},\r\n\r\n\texpand: function( event ) {\r\n\t\tvar newItem = this.active && this._menuItems( this.active.children( \".ui-menu\" ) ).first();\r\n\r\n\t\tif ( newItem && newItem.length ) {\r\n\t\t\tthis._open( newItem.parent() );\r\n\r\n\t\t\t// Delay so Firefox will not hide activedescendant change in expanding submenu from AT\r\n\t\t\tthis._delay( function() {\r\n\t\t\t\tthis.focus( event, newItem );\r\n\t\t\t} );\r\n\t\t}\r\n\t},\r\n\r\n\tnext: function( event ) {\r\n\t\tthis._move( \"next\", \"first\", event );\r\n\t},\r\n\r\n\tprevious: function( event ) {\r\n\t\tthis._move( \"prev\", \"last\", event );\r\n\t},\r\n\r\n\tisFirstItem: function() {\r\n\t\treturn this.active && !this.active.prevAll( \".ui-menu-item\" ).length;\r\n\t},\r\n\r\n\tisLastItem: function() {\r\n\t\treturn this.active && !this.active.nextAll( \".ui-menu-item\" ).length;\r\n\t},\r\n\r\n\t_menuItems: function( menu ) {\r\n\t\treturn ( menu || this.element )\r\n\t\t\t.find( this.options.items )\r\n\t\t\t.filter( \".ui-menu-item\" );\r\n\t},\r\n\r\n\t_move: function( direction, filter, event ) {\r\n\t\tvar next;\r\n\t\tif ( this.active ) {\r\n\t\t\tif ( direction === \"first\" || direction === \"last\" ) {\r\n\t\t\t\tnext = this.active\r\n\t\t\t\t\t[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( \".ui-menu-item\" )\r\n\t\t\t\t\t.last();\r\n\t\t\t} else {\r\n\t\t\t\tnext = this.active\r\n\t\t\t\t\t[ direction + \"All\" ]( \".ui-menu-item\" )\r\n\t\t\t\t\t.first();\r\n\t\t\t}\r\n\t\t}\r\n\t\tif ( !next || !next.length || !this.active ) {\r\n\t\t\tnext = this._menuItems( this.activeMenu )[ filter ]();\r\n\t\t}\r\n\r\n\t\tthis.focus( event, next );\r\n\t},\r\n\r\n\tnextPage: function( event ) {\r\n\t\tvar item, base, height;\r\n\r\n\t\tif ( !this.active ) {\r\n\t\t\tthis.next( event );\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif ( this.isLastItem() ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif ( this._hasScroll() ) {\r\n\t\t\tbase = this.active.offset().top;\r\n\t\t\theight = this.element.innerHeight();\r\n\r\n\t\t\t// jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.\r\n\t\t\tif ( $.fn.jquery.indexOf( \"3.2.\" ) === 0 ) {\r\n\t\t\t\theight += this.element[ 0 ].offsetHeight - this.element.outerHeight();\r\n\t\t\t}\r\n\r\n\t\t\tthis.active.nextAll( \".ui-menu-item\" ).each( function() {\r\n\t\t\t\titem = $( this );\r\n\t\t\t\treturn item.offset().top - base - height < 0;\r\n\t\t\t} );\r\n\r\n\t\t\tthis.focus( event, item );\r\n\t\t} else {\r\n\t\t\tthis.focus( event, this._menuItems( this.activeMenu )\r\n\t\t\t\t[ !this.active ? \"first\" : \"last\" ]() );\r\n\t\t}\r\n\t},\r\n\r\n\tpreviousPage: function( event ) {\r\n\t\tvar item, base, height;\r\n\t\tif ( !this.active ) {\r\n\t\t\tthis.next( event );\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif ( this.isFirstItem() ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif ( this._hasScroll() ) {\r\n\t\t\tbase = this.active.offset().top;\r\n\t\t\theight = this.element.innerHeight();\r\n\r\n\t\t\t// jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.\r\n\t\t\tif ( $.fn.jquery.indexOf( \"3.2.\" ) === 0 ) {\r\n\t\t\t\theight += this.element[ 0 ].offsetHeight - this.element.outerHeight();\r\n\t\t\t}\r\n\r\n\t\t\tthis.active.prevAll( \".ui-menu-item\" ).each( function() {\r\n\t\t\t\titem = $( this );\r\n\t\t\t\treturn item.offset().top - base + height > 0;\r\n\t\t\t} );\r\n\r\n\t\t\tthis.focus( event, item );\r\n\t\t} else {\r\n\t\t\tthis.focus( event, this._menuItems( this.activeMenu ).first() );\r\n\t\t}\r\n\t},\r\n\r\n\t_hasScroll: function() {\r\n\t\treturn this.element.outerHeight() < this.element.prop( \"scrollHeight\" );\r\n\t},\r\n\r\n\tselect: function( event ) {\r\n\r\n\t\t// TODO: It should never be possible to not have an active item at this\r\n\t\t// point, but the tests don't trigger mouseenter before click.\r\n\t\tthis.active = this.active || $( event.target ).closest( \".ui-menu-item\" );\r\n\t\tvar ui = { item: this.active };\r\n\t\tif ( !this.active.has( \".ui-menu\" ).length ) {\r\n\t\t\tthis.collapseAll( event, true );\r\n\t\t}\r\n\t\tthis._trigger( \"select\", event, ui );\r\n\t},\r\n\r\n\t_filterMenuItems: function( character ) {\r\n\t\tvar escapedCharacter = character.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" ),\r\n\t\t\tregex = new RegExp( \"^\" + escapedCharacter, \"i\" );\r\n\r\n\t\treturn this.activeMenu\r\n\t\t\t.find( this.options.items )\r\n\r\n\t\t\t\t// Only match on items, not dividers or other content (#10571)\r\n\t\t\t\t.filter( \".ui-menu-item\" )\r\n\t\t\t\t\t.filter( function() {\r\n\t\t\t\t\t\treturn regex.test(\r\n\t\t\t\t\t\t\tString.prototype.trim.call(\r\n\t\t\t\t\t\t\t\t$( this ).children( \".ui-menu-item-wrapper\" ).text() ) );\r\n\t\t\t\t\t} );\r\n\t}\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Autocomplete 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Autocomplete\r\n//>>group: Widgets\r\n//>>description: Lists suggested words as the user is typing.\r\n//>>docs: https://api.jqueryui.com/autocomplete/\r\n//>>demos: https://jqueryui.com/autocomplete/\r\n//>>css.structure: ../../themes/base/core.css\r\n//>>css.structure: ../../themes/base/autocomplete.css\r\n//>>css.theme: ../../themes/base/theme.css\r\n\r\n\r\n$.widget( \"ui.autocomplete\", {\r\n\tversion: \"1.14.1\",\r\n\tdefaultElement: \"<input>\",\r\n\toptions: {\r\n\t\tappendTo: null,\r\n\t\tautoFocus: false,\r\n\t\tdelay: 300,\r\n\t\tminLength: 1,\r\n\t\tposition: {\r\n\t\t\tmy: \"left top\",\r\n\t\t\tat: \"left bottom\",\r\n\t\t\tcollision: \"none\"\r\n\t\t},\r\n\t\tsource: null,\r\n\r\n\t\t// Callbacks\r\n\t\tchange: null,\r\n\t\tclose: null,\r\n\t\tfocus: null,\r\n\t\topen: null,\r\n\t\tresponse: null,\r\n\t\tsearch: null,\r\n\t\tselect: null\r\n\t},\r\n\r\n\trequestIndex: 0,\r\n\tpending: 0,\r\n\tliveRegionTimer: null,\r\n\r\n\t_create: function() {\r\n\r\n\t\t// Some browsers only repeat keydown events, not keypress events,\r\n\t\t// so we use the suppressKeyPress flag to determine if we've already\r\n\t\t// handled the keydown event. #7269\r\n\t\t// Unfortunately the code for & in keypress is the same as the up arrow,\r\n\t\t// so we use the suppressKeyPressRepeat flag to avoid handling keypress\r\n\t\t// events when we know the keydown event was used to modify the\r\n\t\t// search term. #7799\r\n\t\tvar suppressKeyPress, suppressKeyPressRepeat, suppressInput,\r\n\t\t\tnodeName = this.element[ 0 ].nodeName.toLowerCase(),\r\n\t\t\tisTextarea = nodeName === \"textarea\",\r\n\t\t\tisInput = nodeName === \"input\";\r\n\r\n\t\t// Textareas are always multi-line\r\n\t\t// Inputs are always single-line, even if inside a contentEditable element\r\n\t\t// All other element types are determined by whether they're contentEditable\r\n\t\tthis.isMultiLine = isTextarea ||\r\n\t\t\t!isInput && this.element.prop( \"contentEditable\" ) === \"true\";\r\n\r\n\t\tthis.valueMethod = this.element[ isTextarea || isInput ? \"val\" : \"text\" ];\r\n\t\tthis.isNewMenu = true;\r\n\r\n\t\tthis._addClass( \"ui-autocomplete-input\" );\r\n\t\tthis.element.attr( \"autocomplete\", \"off\" );\r\n\r\n\t\tthis._on( this.element, {\r\n\t\t\tkeydown: function( event ) {\r\n\t\t\t\tif ( this.element.prop( \"readOnly\" ) ) {\r\n\t\t\t\t\tsuppressKeyPress = true;\r\n\t\t\t\t\tsuppressInput = true;\r\n\t\t\t\t\tsuppressKeyPressRepeat = true;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsuppressKeyPress = false;\r\n\t\t\t\tsuppressInput = false;\r\n\t\t\t\tsuppressKeyPressRepeat = false;\r\n\t\t\t\tvar keyCode = $.ui.keyCode;\r\n\t\t\t\tswitch ( event.keyCode ) {\r\n\t\t\t\tcase keyCode.PAGE_UP:\r\n\t\t\t\t\tsuppressKeyPress = true;\r\n\t\t\t\t\tthis._move( \"previousPage\", event );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase keyCode.PAGE_DOWN:\r\n\t\t\t\t\tsuppressKeyPress = true;\r\n\t\t\t\t\tthis._move( \"nextPage\", event );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase keyCode.UP:\r\n\t\t\t\t\tsuppressKeyPress = true;\r\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase keyCode.DOWN:\r\n\t\t\t\t\tsuppressKeyPress = true;\r\n\t\t\t\t\tthis._keyEvent( \"next\", event );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase keyCode.ENTER:\r\n\r\n\t\t\t\t\t// when menu is open and has focus\r\n\t\t\t\t\tif ( this.menu.active ) {\r\n\r\n\t\t\t\t\t\t// #6055 - Opera still allows the keypress to occur\r\n\t\t\t\t\t\t// which causes forms to submit\r\n\t\t\t\t\t\tsuppressKeyPress = true;\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\tthis.menu.select( event );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase keyCode.TAB:\r\n\t\t\t\t\tif ( this.menu.active ) {\r\n\t\t\t\t\t\tthis.menu.select( event );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase keyCode.ESCAPE:\r\n\t\t\t\t\tif ( this.menu.element.is( \":visible\" ) ) {\r\n\t\t\t\t\t\tif ( !this.isMultiLine ) {\r\n\t\t\t\t\t\t\tthis._value( this.term );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.close( event );\r\n\r\n\t\t\t\t\t\t// Different browsers have different default behavior for escape\r\n\t\t\t\t\t\t// Single press can mean undo or clear\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tsuppressKeyPressRepeat = true;\r\n\r\n\t\t\t\t\t// search timeout should be triggered before the input value is changed\r\n\t\t\t\t\tthis._searchTimeout( event );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tkeypress: function( event ) {\r\n\t\t\t\tif ( suppressKeyPress ) {\r\n\t\t\t\t\tsuppressKeyPress = false;\r\n\t\t\t\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif ( suppressKeyPressRepeat ) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Replicate some key handlers to allow them to repeat in Firefox and Opera\r\n\t\t\t\tvar keyCode = $.ui.keyCode;\r\n\t\t\t\tswitch ( event.keyCode ) {\r\n\t\t\t\tcase keyCode.PAGE_UP:\r\n\t\t\t\t\tthis._move( \"previousPage\", event );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase keyCode.PAGE_DOWN:\r\n\t\t\t\t\tthis._move( \"nextPage\", event );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase keyCode.UP:\r\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase keyCode.DOWN:\r\n\t\t\t\t\tthis._keyEvent( \"next\", event );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tinput: function( event ) {\r\n\t\t\t\tif ( suppressInput ) {\r\n\t\t\t\t\tsuppressInput = false;\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis._searchTimeout( event );\r\n\t\t\t},\r\n\t\t\tfocus: function() {\r\n\t\t\t\tthis.selectedItem = null;\r\n\t\t\t\tthis.previous = this._value();\r\n\t\t\t},\r\n\t\t\tblur: function( event ) {\r\n\t\t\t\tclearTimeout( this.searching );\r\n\t\t\t\tthis.close( event );\r\n\t\t\t\tthis._change( event );\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\tthis._initSource();\r\n\t\tthis.menu = $( \"<ul>\" )\r\n\t\t\t.appendTo( this._appendTo() )\r\n\t\t\t.menu( {\r\n\r\n\t\t\t\t// disable ARIA support, the live region takes care of that\r\n\t\t\t\trole: null\r\n\t\t\t} )\r\n\t\t\t.hide()\r\n\t\t\t.menu( \"instance\" );\r\n\r\n\t\tthis._addClass( this.menu.element, \"ui-autocomplete\", \"ui-front\" );\r\n\t\tthis._on( this.menu.element, {\r\n\t\t\tmousedown: function( event ) {\r\n\r\n\t\t\t\t// Prevent moving focus out of the text field\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t},\r\n\t\t\tmenufocus: function( event, ui ) {\r\n\t\t\t\tvar label, item;\r\n\r\n\t\t\t\t// Support: Firefox\r\n\t\t\t\t// Prevent accidental activation of menu items in Firefox (#7024 #9118)\r\n\t\t\t\tif ( this.isNewMenu ) {\r\n\t\t\t\t\tthis.isNewMenu = false;\r\n\t\t\t\t\tif ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {\r\n\t\t\t\t\t\tthis.menu.blur();\r\n\r\n\t\t\t\t\t\tthis.document.one( \"mousemove\", function() {\r\n\t\t\t\t\t\t\t$( event.target ).trigger( event.originalEvent );\r\n\t\t\t\t\t\t} );\r\n\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\titem = ui.item.data( \"ui-autocomplete-item\" );\r\n\t\t\t\tif ( false !== this._trigger( \"focus\", event, { item: item } ) ) {\r\n\r\n\t\t\t\t\t// use value to match what will end up in the input, if it was a key event\r\n\t\t\t\t\tif ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {\r\n\t\t\t\t\t\tthis._value( item.value );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Announce the value in the liveRegion\r\n\t\t\t\tlabel = ui.item.attr( \"aria-label\" ) || item.value;\r\n\t\t\t\tif ( label && String.prototype.trim.call( label ).length ) {\r\n\t\t\t\t\tclearTimeout( this.liveRegionTimer );\r\n\t\t\t\t\tthis.liveRegionTimer = this._delay( function() {\r\n\t\t\t\t\t\tthis.liveRegion.html( $( \"<div>\" ).text( label ) );\r\n\t\t\t\t\t}, 100 );\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tmenuselect: function( event, ui ) {\r\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ),\r\n\t\t\t\t\tprevious = this.previous;\r\n\r\n\t\t\t\t// Only trigger when focus was lost (click on menu)\r\n\t\t\t\tif ( this.element[ 0 ] !== this.document[ 0 ].activeElement ) {\r\n\t\t\t\t\tthis.element.trigger( \"focus\" );\r\n\t\t\t\t\tthis.previous = previous;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( false !== this._trigger( \"select\", event, { item: item } ) ) {\r\n\t\t\t\t\tthis._value( item.value );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// reset the term after the select event\r\n\t\t\t\t// this allows custom select handling to work properly\r\n\t\t\t\tthis.term = this._value();\r\n\r\n\t\t\t\tthis.close( event );\r\n\t\t\t\tthis.selectedItem = item;\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\tthis.liveRegion = $( \"<div>\", {\r\n\t\t\trole: \"status\",\r\n\t\t\t\"aria-live\": \"assertive\",\r\n\t\t\t\"aria-relevant\": \"additions\"\r\n\t\t} )\r\n\t\t\t.appendTo( this.document[ 0 ].body );\r\n\r\n\t\tthis._addClass( this.liveRegion, null, \"ui-helper-hidden-accessible\" );\r\n\r\n\t\t// Turning off autocomplete prevents the browser from remembering the\r\n\t\t// value when navigating through history, so we re-enable autocomplete\r\n\t\t// if the page is unloaded before the widget is destroyed. #7790\r\n\t\tthis._on( this.window, {\r\n\t\t\tbeforeunload: function() {\r\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\t_destroy: function() {\r\n\t\tclearTimeout( this.searching );\r\n\t\tthis.element.removeAttr( \"autocomplete\" );\r\n\t\tthis.menu.element.remove();\r\n\t\tthis.liveRegion.remove();\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\t\tthis._super( key, value );\r\n\t\tif ( key === \"source\" ) {\r\n\t\t\tthis._initSource();\r\n\t\t}\r\n\t\tif ( key === \"appendTo\" ) {\r\n\t\t\tthis.menu.element.appendTo( this._appendTo() );\r\n\t\t}\r\n\t\tif ( key === \"disabled\" && value && this.xhr ) {\r\n\t\t\tthis.xhr.abort();\r\n\t\t}\r\n\t},\r\n\r\n\t_isEventTargetInWidget: function( event ) {\r\n\t\tvar menuElement = this.menu.element[ 0 ];\r\n\r\n\t\treturn event.target === this.element[ 0 ] ||\r\n\t\t\tevent.target === menuElement ||\r\n\t\t\t$.contains( menuElement, event.target );\r\n\t},\r\n\r\n\t_closeOnClickOutside: function( event ) {\r\n\t\tif ( !this._isEventTargetInWidget( event ) ) {\r\n\t\t\tthis.close();\r\n\t\t}\r\n\t},\r\n\r\n\t_appendTo: function() {\r\n\t\tvar element = this.options.appendTo;\r\n\r\n\t\tif ( element ) {\r\n\t\t\telement = element.jquery || element.nodeType ?\r\n\t\t\t\t$( element ) :\r\n\t\t\t\tthis.document.find( element ).eq( 0 );\r\n\t\t}\r\n\r\n\t\tif ( !element || !element[ 0 ] ) {\r\n\t\t\telement = this.element.closest( \".ui-front, dialog\" );\r\n\t\t}\r\n\r\n\t\tif ( !element.length ) {\r\n\t\t\telement = this.document[ 0 ].body;\r\n\t\t}\r\n\r\n\t\treturn element;\r\n\t},\r\n\r\n\t_initSource: function() {\r\n\t\tvar array, url,\r\n\t\t\tthat = this;\r\n\t\tif ( Array.isArray( this.options.source ) ) {\r\n\t\t\tarray = this.options.source;\r\n\t\t\tthis.source = function( request, response ) {\r\n\t\t\t\tresponse( $.ui.autocomplete.filter( array, request.term ) );\r\n\t\t\t};\r\n\t\t} else if ( typeof this.options.source === \"string\" ) {\r\n\t\t\turl = this.options.source;\r\n\t\t\tthis.source = function( request, response ) {\r\n\t\t\t\tif ( that.xhr ) {\r\n\t\t\t\t\tthat.xhr.abort();\r\n\t\t\t\t}\r\n\t\t\t\tthat.xhr = $.ajax( {\r\n\t\t\t\t\turl: url,\r\n\t\t\t\t\tdata: request,\r\n\t\t\t\t\tdataType: \"json\",\r\n\t\t\t\t\tsuccess: function( data ) {\r\n\t\t\t\t\t\tresponse( data );\r\n\t\t\t\t\t},\r\n\t\t\t\t\terror: function() {\r\n\t\t\t\t\t\tresponse( [] );\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tthis.source = this.options.source;\r\n\t\t}\r\n\t},\r\n\r\n\t_searchTimeout: function( event ) {\r\n\t\tclearTimeout( this.searching );\r\n\t\tthis.searching = this._delay( function() {\r\n\r\n\t\t\t// Search if the value has changed, or if the user retypes the same value (see #7434)\r\n\t\t\tvar equalValues = this.term === this._value(),\r\n\t\t\t\tmenuVisible = this.menu.element.is( \":visible\" ),\r\n\t\t\t\tmodifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\r\n\r\n\t\t\tif ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) {\r\n\t\t\t\tthis.selectedItem = null;\r\n\t\t\t\tthis.search( null, event );\r\n\t\t\t}\r\n\t\t}, this.options.delay );\r\n\t},\r\n\r\n\tsearch: function( value, event ) {\r\n\t\tvalue = value != null ? value : this._value();\r\n\r\n\t\t// Always save the actual value, not the one passed as an argument\r\n\t\tthis.term = this._value();\r\n\r\n\t\tif ( value.length < this.options.minLength ) {\r\n\t\t\treturn this.close( event );\r\n\t\t}\r\n\r\n\t\tif ( this._trigger( \"search\", event ) === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\treturn this._search( value );\r\n\t},\r\n\r\n\t_search: function( value ) {\r\n\t\tthis.pending++;\r\n\t\tthis._addClass( \"ui-autocomplete-loading\" );\r\n\t\tthis.cancelSearch = false;\r\n\r\n\t\tthis.source( { term: value }, this._response() );\r\n\t},\r\n\r\n\t_response: function() {\r\n\t\tvar index = ++this.requestIndex;\r\n\r\n\t\treturn function( content ) {\r\n\t\t\tif ( index === this.requestIndex ) {\r\n\t\t\t\tthis.__response( content );\r\n\t\t\t}\r\n\r\n\t\t\tthis.pending--;\r\n\t\t\tif ( !this.pending ) {\r\n\t\t\t\tthis._removeClass( \"ui-autocomplete-loading\" );\r\n\t\t\t}\r\n\t\t}.bind( this );\r\n\t},\r\n\r\n\t__response: function( content ) {\r\n\t\tif ( content ) {\r\n\t\t\tcontent = this._normalize( content );\r\n\t\t}\r\n\t\tthis._trigger( \"response\", null, { content: content } );\r\n\t\tif ( !this.options.disabled && content && content.length && !this.cancelSearch ) {\r\n\t\t\tthis._suggest( content );\r\n\t\t\tthis._trigger( \"open\" );\r\n\t\t} else {\r\n\r\n\t\t\t// use ._close() instead of .close() so we don't cancel future searches\r\n\t\t\tthis._close();\r\n\t\t}\r\n\t},\r\n\r\n\tclose: function( event ) {\r\n\t\tthis.cancelSearch = true;\r\n\t\tthis._close( event );\r\n\t},\r\n\r\n\t_close: function( event ) {\r\n\r\n\t\t// Remove the handler that closes the menu on outside clicks\r\n\t\tthis._off( this.document, \"mousedown\" );\r\n\r\n\t\tif ( this.menu.element.is( \":visible\" ) ) {\r\n\t\t\tthis.menu.element.hide();\r\n\t\t\tthis.menu.blur();\r\n\t\t\tthis.isNewMenu = true;\r\n\t\t\tthis._trigger( \"close\", event );\r\n\t\t}\r\n\t},\r\n\r\n\t_change: function( event ) {\r\n\t\tif ( this.previous !== this._value() ) {\r\n\t\t\tthis._trigger( \"change\", event, { item: this.selectedItem } );\r\n\t\t}\r\n\t},\r\n\r\n\t_normalize: function( items ) {\r\n\r\n\t\t// assume all items have the right format when the first item is complete\r\n\t\tif ( items.length && items[ 0 ].label && items[ 0 ].value ) {\r\n\t\t\treturn items;\r\n\t\t}\r\n\t\treturn $.map( items, function( item ) {\r\n\t\t\tif ( typeof item === \"string\" ) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tlabel: item,\r\n\t\t\t\t\tvalue: item\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\treturn $.extend( {}, item, {\r\n\t\t\t\tlabel: item.label || item.value,\r\n\t\t\t\tvalue: item.value || item.label\r\n\t\t\t} );\r\n\t\t} );\r\n\t},\r\n\r\n\t_suggest: function( items ) {\r\n\t\tvar ul = this.menu.element.empty();\r\n\t\tthis._renderMenu( ul, items );\r\n\t\tthis.isNewMenu = true;\r\n\t\tthis.menu.refresh();\r\n\r\n\t\t// Size and position menu\r\n\t\tul.show();\r\n\t\tthis._resizeMenu();\r\n\t\tul.position( $.extend( {\r\n\t\t\tof: this.element\r\n\t\t}, this.options.position ) );\r\n\r\n\t\tif ( this.options.autoFocus ) {\r\n\t\t\tthis.menu.next();\r\n\t\t}\r\n\r\n\t\t// Listen for interactions outside of the widget (#6642)\r\n\t\tthis._on( this.document, {\r\n\t\t\tmousedown: \"_closeOnClickOutside\"\r\n\t\t} );\r\n\t},\r\n\r\n\t_resizeMenu: function() {\r\n\t\tvar ul = this.menu.element;\r\n\t\tul.outerWidth( Math.max(\r\n\r\n\t\t\t// Firefox wraps long text (possibly a rounding bug)\r\n\t\t\t// so we add 1px to avoid the wrapping (#7513)\r\n\t\t\tul.width( \"\" ).outerWidth() + 1,\r\n\t\t\tthis.element.outerWidth()\r\n\t\t) );\r\n\t},\r\n\r\n\t_renderMenu: function( ul, items ) {\r\n\t\tvar that = this;\r\n\t\t$.each( items, function( index, item ) {\r\n\t\t\tthat._renderItemData( ul, item );\r\n\t\t} );\r\n\t},\r\n\r\n\t_renderItemData: function( ul, item ) {\r\n\t\treturn this._renderItem( ul, item ).data( \"ui-autocomplete-item\", item );\r\n\t},\r\n\r\n\t_renderItem: function( ul, item ) {\r\n\t\treturn $( \"<li>\" )\r\n\t\t\t.append( $( \"<div>\" ).text( item.label ) )\r\n\t\t\t.appendTo( ul );\r\n\t},\r\n\r\n\t_move: function( direction, event ) {\r\n\t\tif ( !this.menu.element.is( \":visible\" ) ) {\r\n\t\t\tthis.search( null, event );\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif ( this.menu.isFirstItem() && /^previous/.test( direction ) ||\r\n\t\t\t\tthis.menu.isLastItem() && /^next/.test( direction ) ) {\r\n\r\n\t\t\tif ( !this.isMultiLine ) {\r\n\t\t\t\tthis._value( this.term );\r\n\t\t\t}\r\n\r\n\t\t\tthis.menu.blur();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.menu[ direction ]( event );\r\n\t},\r\n\r\n\twidget: function() {\r\n\t\treturn this.menu.element;\r\n\t},\r\n\r\n\t_value: function() {\r\n\t\treturn this.valueMethod.apply( this.element, arguments );\r\n\t},\r\n\r\n\t_keyEvent: function( keyEvent, event ) {\r\n\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\r\n\t\t\tthis._move( keyEvent, event );\r\n\r\n\t\t\t// Prevents moving cursor to beginning/end of the text field in some browsers\r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n$.extend( $.ui.autocomplete, {\r\n\tescapeRegex: function( value ) {\r\n\t\treturn value.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" );\r\n\t},\r\n\tfilter: function( array, term ) {\r\n\t\tvar matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), \"i\" );\r\n\t\treturn $.grep( array, function( value ) {\r\n\t\t\treturn matcher.test( value.label || value.value || value );\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\n// Live region extension, adding a `messages` option\r\n// NOTE: This is an experimental API. We are still investigating\r\n// a full solution for string manipulation and internationalization.\r\n$.widget( \"ui.autocomplete\", $.ui.autocomplete, {\r\n\toptions: {\r\n\t\tmessages: {\r\n\t\t\tnoResults: \"No search results.\",\r\n\t\t\tresults: function( amount ) {\r\n\t\t\t\treturn amount + ( amount > 1 ? \" results are\" : \" result is\" ) +\r\n\t\t\t\t\t\" available, use up and down arrow keys to navigate.\";\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t__response: function( content ) {\r\n\t\tvar message;\r\n\t\tthis._superApply( arguments );\r\n\t\tif ( this.options.disabled || this.cancelSearch ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif ( content && content.length ) {\r\n\t\t\tmessage = this.options.messages.results( content.length );\r\n\t\t} else {\r\n\t\t\tmessage = this.options.messages.noResults;\r\n\t\t}\r\n\t\tclearTimeout( this.liveRegionTimer );\r\n\t\tthis.liveRegionTimer = this._delay( function() {\r\n\t\t\tthis.liveRegion.html( $( \"<div>\" ).text( message ) );\r\n\t\t}, 100 );\r\n\t}\r\n} );\r\n\r\nvar widgetsAutocomplete = $.ui.autocomplete;\r\n\r\n\r\n/*!\r\n * jQuery UI Controlgroup 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Controlgroup\r\n//>>group: Widgets\r\n//>>description: Visually groups form control widgets\r\n//>>docs: https://api.jqueryui.com/controlgroup/\r\n//>>demos: https://jqueryui.com/controlgroup/\r\n//>>css.structure: ../../themes/base/core.css\r\n//>>css.structure: ../../themes/base/controlgroup.css\r\n//>>css.theme: ../../themes/base/theme.css\r\n\r\n\r\nvar controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;\r\n\r\nvar widgetsControlgroup = $.widget( \"ui.controlgroup\", {\r\n\tversion: \"1.14.1\",\r\n\tdefaultElement: \"<div>\",\r\n\toptions: {\r\n\t\tdirection: \"horizontal\",\r\n\t\tdisabled: null,\r\n\t\tonlyVisible: true,\r\n\t\titems: {\r\n\t\t\t\"button\": \"input[type=button], input[type=submit], input[type=reset], button, a\",\r\n\t\t\t\"controlgroupLabel\": \".ui-controlgroup-label\",\r\n\t\t\t\"checkboxradio\": \"input[type='checkbox'], input[type='radio']\",\r\n\t\t\t\"selectmenu\": \"select\",\r\n\t\t\t\"spinner\": \".ui-spinner-input\"\r\n\t\t}\r\n\t},\r\n\r\n\t_create: function() {\r\n\t\tthis._enhance();\r\n\t},\r\n\r\n\t// To support the enhanced option in jQuery Mobile, we isolate DOM manipulation\r\n\t_enhance: function() {\r\n\t\tthis.element.attr( \"role\", \"toolbar\" );\r\n\t\tthis.refresh();\r\n\t},\r\n\r\n\t_destroy: function() {\r\n\t\tthis._callChildMethod( \"destroy\" );\r\n\t\tthis.childWidgets.removeData( \"ui-controlgroup-data\" );\r\n\t\tthis.element.removeAttr( \"role\" );\r\n\t\tif ( this.options.items.controlgroupLabel ) {\r\n\t\t\tthis.element\r\n\t\t\t\t.find( this.options.items.controlgroupLabel )\r\n\t\t\t\t.find( \".ui-controlgroup-label-contents\" )\r\n\t\t\t\t.contents().unwrap();\r\n\t\t}\r\n\t},\r\n\r\n\t_initWidgets: function() {\r\n\t\tvar that = this,\r\n\t\t\tchildWidgets = [];\r\n\r\n\t\t// First we iterate over each of the items options\r\n\t\t$.each( this.options.items, function( widget, selector ) {\r\n\t\t\tvar labels;\r\n\t\t\tvar options = {};\r\n\r\n\t\t\t// Make sure the widget has a selector set\r\n\t\t\tif ( !selector ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif ( widget === \"controlgroupLabel\" ) {\r\n\t\t\t\tlabels = that.element.find( selector );\r\n\t\t\t\tlabels.each( function() {\r\n\t\t\t\t\tvar element = $( this );\r\n\r\n\t\t\t\t\tif ( element.children( \".ui-controlgroup-label-contents\" ).length ) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telement.contents()\r\n\t\t\t\t\t\t.wrapAll( \"<span class='ui-controlgroup-label-contents'></span>\" );\r\n\t\t\t\t} );\r\n\t\t\t\tthat._addClass( labels, null, \"ui-widget ui-widget-content ui-state-default\" );\r\n\t\t\t\tchildWidgets = childWidgets.concat( labels.get() );\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Make sure the widget actually exists\r\n\t\t\tif ( !$.fn[ widget ] ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// We assume everything is in the middle to start because we can't determine\r\n\t\t\t// first / last elements until all enhancments are done.\r\n\t\t\tif ( that[ \"_\" + widget + \"Options\" ] ) {\r\n\t\t\t\toptions = that[ \"_\" + widget + \"Options\" ]( \"middle\" );\r\n\t\t\t} else {\r\n\t\t\t\toptions = { classes: {} };\r\n\t\t\t}\r\n\r\n\t\t\t// Find instances of this widget inside controlgroup and init them\r\n\t\t\tthat.element\r\n\t\t\t\t.find( selector )\r\n\t\t\t\t.each( function() {\r\n\t\t\t\t\tvar element = $( this );\r\n\t\t\t\t\tvar instance = element[ widget ]( \"instance\" );\r\n\r\n\t\t\t\t\t// We need to clone the default options for this type of widget to avoid\r\n\t\t\t\t\t// polluting the variable options which has a wider scope than a single widget.\r\n\t\t\t\t\tvar instanceOptions = $.widget.extend( {}, options );\r\n\r\n\t\t\t\t\t// If the button is the child of a spinner ignore it\r\n\t\t\t\t\t// TODO: Find a more generic solution\r\n\t\t\t\t\tif ( widget === \"button\" && element.parent( \".ui-spinner\" ).length ) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Create the widget if it doesn't exist\r\n\t\t\t\t\tif ( !instance ) {\r\n\t\t\t\t\t\tinstance = element[ widget ]()[ widget ]( \"instance\" );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( instance ) {\r\n\t\t\t\t\t\tinstanceOptions.classes =\r\n\t\t\t\t\t\t\tthat._resolveClassesValues( instanceOptions.classes, instance );\r\n\t\t\t\t\t}\r\n\t\t\t\t\telement[ widget ]( instanceOptions );\r\n\r\n\t\t\t\t\t// Store an instance of the controlgroup to be able to reference\r\n\t\t\t\t\t// from the outermost element for changing options and refresh\r\n\t\t\t\t\tvar widgetElement = element[ widget ]( \"widget\" );\r\n\t\t\t\t\t$.data( widgetElement[ 0 ], \"ui-controlgroup-data\",\r\n\t\t\t\t\t\tinstance ? instance : element[ widget ]( \"instance\" ) );\r\n\r\n\t\t\t\t\tchildWidgets.push( widgetElement[ 0 ] );\r\n\t\t\t\t} );\r\n\t\t} );\r\n\r\n\t\tthis.childWidgets = $( $.uniqueSort( childWidgets ) );\r\n\t\tthis._addClass( this.childWidgets, \"ui-controlgroup-item\" );\r\n\t},\r\n\r\n\t_callChildMethod: function( method ) {\r\n\t\tthis.childWidgets.each( function() {\r\n\t\t\tvar element = $( this ),\r\n\t\t\t\tdata = element.data( \"ui-controlgroup-data\" );\r\n\t\t\tif ( data && data[ method ] ) {\r\n\t\t\t\tdata[ method ]();\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\t_updateCornerClass: function( element, position ) {\r\n\t\tvar remove = \"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all\";\r\n\t\tvar add = this._buildSimpleOptions( position, \"label\" ).classes.label;\r\n\r\n\t\tthis._removeClass( element, null, remove );\r\n\t\tthis._addClass( element, null, add );\r\n\t},\r\n\r\n\t_buildSimpleOptions: function( position, key ) {\r\n\t\tvar direction = this.options.direction === \"vertical\";\r\n\t\tvar result = {\r\n\t\t\tclasses: {}\r\n\t\t};\r\n\t\tresult.classes[ key ] = {\r\n\t\t\t\"middle\": \"\",\r\n\t\t\t\"first\": \"ui-corner-\" + ( direction ? \"top\" : \"left\" ),\r\n\t\t\t\"last\": \"ui-corner-\" + ( direction ? \"bottom\" : \"right\" ),\r\n\t\t\t\"only\": \"ui-corner-all\"\r\n\t\t}[ position ];\r\n\r\n\t\treturn result;\r\n\t},\r\n\r\n\t_spinnerOptions: function( position ) {\r\n\t\tvar options = this._buildSimpleOptions( position, \"ui-spinner\" );\r\n\r\n\t\toptions.classes[ \"ui-spinner-up\" ] = \"\";\r\n\t\toptions.classes[ \"ui-spinner-down\" ] = \"\";\r\n\r\n\t\treturn options;\r\n\t},\r\n\r\n\t_buttonOptions: function( position ) {\r\n\t\treturn this._buildSimpleOptions( position, \"ui-button\" );\r\n\t},\r\n\r\n\t_checkboxradioOptions: function( position ) {\r\n\t\treturn this._buildSimpleOptions( position, \"ui-checkboxradio-label\" );\r\n\t},\r\n\r\n\t_selectmenuOptions: function( position ) {\r\n\t\tvar direction = this.options.direction === \"vertical\";\r\n\t\treturn {\r\n\t\t\twidth: direction ? \"auto\" : false,\r\n\t\t\tclasses: {\r\n\t\t\t\tmiddle: {\r\n\t\t\t\t\t\"ui-selectmenu-button-open\": \"\",\r\n\t\t\t\t\t\"ui-selectmenu-button-closed\": \"\"\r\n\t\t\t\t},\r\n\t\t\t\tfirst: {\r\n\t\t\t\t\t\"ui-selectmenu-button-open\": \"ui-corner-\" + ( direction ? \"top\" : \"tl\" ),\r\n\t\t\t\t\t\"ui-selectmenu-button-closed\": \"ui-corner-\" + ( direction ? \"top\" : \"left\" )\r\n\t\t\t\t},\r\n\t\t\t\tlast: {\r\n\t\t\t\t\t\"ui-selectmenu-button-open\": direction ? \"\" : \"ui-corner-tr\",\r\n\t\t\t\t\t\"ui-selectmenu-button-closed\": \"ui-corner-\" + ( direction ? \"bottom\" : \"right\" )\r\n\t\t\t\t},\r\n\t\t\t\tonly: {\r\n\t\t\t\t\t\"ui-selectmenu-button-open\": \"ui-corner-top\",\r\n\t\t\t\t\t\"ui-selectmenu-button-closed\": \"ui-corner-all\"\r\n\t\t\t\t}\r\n\r\n\t\t\t}[ position ]\r\n\t\t};\r\n\t},\r\n\r\n\t_resolveClassesValues: function( classes, instance ) {\r\n\t\tvar result = {};\r\n\t\t$.each( classes, function( key ) {\r\n\t\t\tvar current = instance.options.classes[ key ] || \"\";\r\n\t\t\tcurrent = String.prototype.trim.call( current.replace( controlgroupCornerRegex, \"\" ) );\r\n\t\t\tresult[ key ] = ( current + \" \" + classes[ key ] ).replace( /\\s+/g, \" \" );\r\n\t\t} );\r\n\t\treturn result;\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\t\tif ( key === \"direction\" ) {\r\n\t\t\tthis._removeClass( \"ui-controlgroup-\" + this.options.direction );\r\n\t\t}\r\n\r\n\t\tthis._super( key, value );\r\n\t\tif ( key === \"disabled\" ) {\r\n\t\t\tthis._callChildMethod( value ? \"disable\" : \"enable\" );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.refresh();\r\n\t},\r\n\r\n\trefresh: function() {\r\n\t\tvar children,\r\n\t\t\tthat = this;\r\n\r\n\t\tthis._addClass( \"ui-controlgroup ui-controlgroup-\" + this.options.direction );\r\n\r\n\t\tif ( this.options.direction === \"horizontal\" ) {\r\n\t\t\tthis._addClass( null, \"ui-helper-clearfix\" );\r\n\t\t}\r\n\t\tthis._initWidgets();\r\n\r\n\t\tchildren = this.childWidgets;\r\n\r\n\t\t// We filter here because we need to track all childWidgets not just the visible ones\r\n\t\tif ( this.options.onlyVisible ) {\r\n\t\t\tchildren = children.filter( \":visible\" );\r\n\t\t}\r\n\r\n\t\tif ( children.length ) {\r\n\r\n\t\t\t// We do this last because we need to make sure all enhancment is done\r\n\t\t\t// before determining first and last\r\n\t\t\t$.each( [ \"first\", \"last\" ], function( index, value ) {\r\n\t\t\t\tvar instance = children[ value ]().data( \"ui-controlgroup-data\" );\r\n\r\n\t\t\t\tif ( instance && that[ \"_\" + instance.widgetName + \"Options\" ] ) {\r\n\t\t\t\t\tvar options = that[ \"_\" + instance.widgetName + \"Options\" ](\r\n\t\t\t\t\t\tchildren.length === 1 ? \"only\" : value\r\n\t\t\t\t\t);\r\n\t\t\t\t\toptions.classes = that._resolveClassesValues( options.classes, instance );\r\n\t\t\t\t\tinstance.element[ instance.widgetName ]( options );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthat._updateCornerClass( children[ value ](), value );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\r\n\t\t\t// Finally call the refresh method on each of the child widgets.\r\n\t\t\tthis._callChildMethod( \"refresh\" );\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n/*!\r\n * jQuery UI Checkboxradio 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Checkboxradio\r\n//>>group: Widgets\r\n//>>description: Enhances a form with multiple themeable checkboxes or radio buttons.\r\n//>>docs: https://api.jqueryui.com/checkboxradio/\r\n//>>demos: https://jqueryui.com/checkboxradio/\r\n//>>css.structure: ../../themes/base/core.css\r\n//>>css.structure: ../../themes/base/button.css\r\n//>>css.structure: ../../themes/base/checkboxradio.css\r\n//>>css.theme: ../../themes/base/theme.css\r\n\r\n\r\n$.widget( \"ui.checkboxradio\", [ $.ui.formResetMixin, {\r\n\tversion: \"1.14.1\",\r\n\toptions: {\r\n\t\tdisabled: null,\r\n\t\tlabel: null,\r\n\t\ticon: true,\r\n\t\tclasses: {\r\n\t\t\t\"ui-checkboxradio-label\": \"ui-corner-all\",\r\n\t\t\t\"ui-checkboxradio-icon\": \"ui-corner-all\"\r\n\t\t}\r\n\t},\r\n\r\n\t_getCreateOptions: function() {\r\n\t\tvar disabled, labels, labelContents;\r\n\t\tvar options = this._super() || {};\r\n\r\n\t\t// We read the type here, because it makes more sense to throw a element type error first,\r\n\t\t// rather then the error for lack of a label. Often if its the wrong type, it\r\n\t\t// won't have a label (e.g. calling on a div, btn, etc)\r\n\t\tthis._readType();\r\n\r\n\t\tlabels = this.element.labels();\r\n\r\n\t\t// If there are multiple labels, use the last one\r\n\t\tthis.label = $( labels[ labels.length - 1 ] );\r\n\t\tif ( !this.label.length ) {\r\n\t\t\t$.error( \"No label found for checkboxradio widget\" );\r\n\t\t}\r\n\r\n\t\tthis.originalLabel = \"\";\r\n\r\n\t\t// We need to get the label text but this may also need to make sure it does not contain the\r\n\t\t// input itself.\r\n\t\t// The label contents could be text, html, or a mix. We wrap all elements\r\n\t\t// and read the wrapper's `innerHTML` to get a string representation of\r\n\t\t// the label, without the input as part of it.\r\n\t\tlabelContents = this.label.contents().not( this.element[ 0 ] );\r\n\r\n\t\tif ( labelContents.length ) {\r\n\t\t\tthis.originalLabel += labelContents\r\n\t\t\t\t.clone()\r\n\t\t\t\t.wrapAll( \"<div></div>\" )\r\n\t\t\t\t.parent()\r\n\t\t\t\t.html();\r\n\t\t}\r\n\r\n\t\t// Set the label option if we found label text\r\n\t\tif ( this.originalLabel ) {\r\n\t\t\toptions.label = this.originalLabel;\r\n\t\t}\r\n\r\n\t\tdisabled = this.element[ 0 ].disabled;\r\n\t\tif ( disabled != null ) {\r\n\t\t\toptions.disabled = disabled;\r\n\t\t}\r\n\t\treturn options;\r\n\t},\r\n\r\n\t_create: function() {\r\n\t\tvar checked = this.element[ 0 ].checked;\r\n\r\n\t\tthis._bindFormResetHandler();\r\n\r\n\t\tif ( this.options.disabled == null ) {\r\n\t\t\tthis.options.disabled = this.element[ 0 ].disabled;\r\n\t\t}\r\n\r\n\t\tthis._setOption( \"disabled\", this.options.disabled );\r\n\t\tthis._addClass( \"ui-checkboxradio\", \"ui-helper-hidden-accessible\" );\r\n\t\tthis._addClass( this.label, \"ui-checkboxradio-label\", \"ui-button ui-widget\" );\r\n\r\n\t\tif ( this.type === \"radio\" ) {\r\n\t\t\tthis._addClass( this.label, \"ui-checkboxradio-radio-label\" );\r\n\t\t}\r\n\r\n\t\tif ( this.options.label && this.options.label !== this.originalLabel ) {\r\n\t\t\tthis._updateLabel();\r\n\t\t} else if ( this.originalLabel ) {\r\n\t\t\tthis.options.label = this.originalLabel;\r\n\t\t}\r\n\r\n\t\tthis._enhance();\r\n\r\n\t\tif ( checked ) {\r\n\t\t\tthis._addClass( this.label, \"ui-checkboxradio-checked\", \"ui-state-active\" );\r\n\t\t}\r\n\r\n\t\tthis._on( {\r\n\t\t\tchange: \"_toggleClasses\",\r\n\t\t\tfocus: function() {\r\n\t\t\t\tthis._addClass( this.label, null, \"ui-state-focus ui-visual-focus\" );\r\n\t\t\t},\r\n\t\t\tblur: function() {\r\n\t\t\t\tthis._removeClass( this.label, null, \"ui-state-focus ui-visual-focus\" );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\t_readType: function() {\r\n\t\tvar nodeName = this.element[ 0 ].nodeName.toLowerCase();\r\n\t\tthis.type = this.element[ 0 ].type;\r\n\t\tif ( nodeName !== \"input\" || !/radio|checkbox/.test( this.type ) ) {\r\n\t\t\t$.error( \"Can't create checkboxradio on element.nodeName=\" + nodeName +\r\n\t\t\t\t\" and element.type=\" + this.type );\r\n\t\t}\r\n\t},\r\n\r\n\t// Support jQuery Mobile enhanced option\r\n\t_enhance: function() {\r\n\t\tthis._updateIcon( this.element[ 0 ].checked );\r\n\t},\r\n\r\n\twidget: function() {\r\n\t\treturn this.label;\r\n\t},\r\n\r\n\t_getRadioGroup: function() {\r\n\t\tvar group;\r\n\t\tvar name = this.element[ 0 ].name;\r\n\t\tvar nameSelector = \"input[name='\" + CSS.escape( name ) + \"']\";\r\n\r\n\t\tif ( !name ) {\r\n\t\t\treturn $( [] );\r\n\t\t}\r\n\r\n\t\tif ( this.form.length ) {\r\n\t\t\tgroup = $( this.form[ 0 ].elements ).filter( nameSelector );\r\n\t\t} else {\r\n\r\n\t\t\t// Not inside a form, check all inputs that also are not inside a form\r\n\t\t\tgroup = $( nameSelector ).filter( function() {\r\n\t\t\t\treturn $( $( this ).prop( \"form\" ) ).length === 0;\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\treturn group.not( this.element );\r\n\t},\r\n\r\n\t_toggleClasses: function() {\r\n\t\tvar checked = this.element[ 0 ].checked;\r\n\t\tthis._toggleClass( this.label, \"ui-checkboxradio-checked\", \"ui-state-active\", checked );\r\n\r\n\t\tif ( this.options.icon && this.type === \"checkbox\" ) {\r\n\t\t\tthis._toggleClass( this.icon, null, \"ui-icon-check ui-state-checked\", checked )\r\n\t\t\t\t._toggleClass( this.icon, null, \"ui-icon-blank\", !checked );\r\n\t\t}\r\n\r\n\t\tif ( this.type === \"radio\" ) {\r\n\t\t\tthis._getRadioGroup()\r\n\t\t\t\t.each( function() {\r\n\t\t\t\t\tvar instance = $( this ).checkboxradio( \"instance\" );\r\n\r\n\t\t\t\t\tif ( instance ) {\r\n\t\t\t\t\t\tinstance._removeClass( instance.label,\r\n\t\t\t\t\t\t\t\"ui-checkboxradio-checked\", \"ui-state-active\" );\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t}\r\n\t},\r\n\r\n\t_destroy: function() {\r\n\t\tthis._unbindFormResetHandler();\r\n\r\n\t\tif ( this.icon ) {\r\n\t\t\tthis.icon.remove();\r\n\t\t\tthis.iconSpace.remove();\r\n\t\t}\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\r\n\t\t// We don't allow the value to be set to nothing\r\n\t\tif ( key === \"label\" && !value ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._super( key, value );\r\n\r\n\t\tif ( key === \"disabled\" ) {\r\n\t\t\tthis._toggleClass( this.label, null, \"ui-state-disabled\", value );\r\n\t\t\tthis.element[ 0 ].disabled = value;\r\n\r\n\t\t\t// Don't refresh when setting disabled\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.refresh();\r\n\t},\r\n\r\n\t_updateIcon: function( checked ) {\r\n\t\tvar toAdd = \"ui-icon ui-icon-background \";\r\n\r\n\t\tif ( this.options.icon ) {\r\n\t\t\tif ( !this.icon ) {\r\n\t\t\t\tthis.icon = $( \"<span>\" );\r\n\t\t\t\tthis.iconSpace = $( \"<span> </span>\" );\r\n\t\t\t\tthis._addClass( this.iconSpace, \"ui-checkboxradio-icon-space\" );\r\n\t\t\t}\r\n\r\n\t\t\tif ( this.type === \"checkbox\" ) {\r\n\t\t\t\ttoAdd += checked ? \"ui-icon-check ui-state-checked\" : \"ui-icon-blank\";\r\n\t\t\t\tthis._removeClass( this.icon, null, checked ? \"ui-icon-blank\" : \"ui-icon-check\" );\r\n\t\t\t} else {\r\n\t\t\t\ttoAdd += \"ui-icon-blank\";\r\n\t\t\t}\r\n\t\t\tthis._addClass( this.icon, \"ui-checkboxradio-icon\", toAdd );\r\n\t\t\tif ( !checked ) {\r\n\t\t\t\tthis._removeClass( this.icon, null, \"ui-icon-check ui-state-checked\" );\r\n\t\t\t}\r\n\t\t\tthis.icon.prependTo( this.label ).after( this.iconSpace );\r\n\t\t} else if ( this.icon !== undefined ) {\r\n\t\t\tthis.icon.remove();\r\n\t\t\tthis.iconSpace.remove();\r\n\t\t\tdelete this.icon;\r\n\t\t}\r\n\t},\r\n\r\n\t_updateLabel: function() {\r\n\r\n\t\t// Remove the contents of the label ( minus the icon, icon space, and input )\r\n\t\tvar contents = this.label.contents().not( this.element[ 0 ] );\r\n\t\tif ( this.icon ) {\r\n\t\t\tcontents = contents.not( this.icon[ 0 ] );\r\n\t\t}\r\n\t\tif ( this.iconSpace ) {\r\n\t\t\tcontents = contents.not( this.iconSpace[ 0 ] );\r\n\t\t}\r\n\t\tcontents.remove();\r\n\r\n\t\tthis.label.append( this.options.label );\r\n\t},\r\n\r\n\trefresh: function() {\r\n\t\tvar checked = this.element[ 0 ].checked,\r\n\t\t\tisDisabled = this.element[ 0 ].disabled;\r\n\r\n\t\tthis._updateIcon( checked );\r\n\t\tthis._toggleClass( this.label, \"ui-checkboxradio-checked\", \"ui-state-active\", checked );\r\n\t\tif ( this.options.label !== null ) {\r\n\t\t\tthis._updateLabel();\r\n\t\t}\r\n\r\n\t\tif ( isDisabled !== this.options.disabled ) {\r\n\t\t\tthis._setOptions( { \"disabled\": isDisabled } );\r\n\t\t}\r\n\t}\r\n\r\n} ] );\r\n\r\nvar widgetsCheckboxradio = $.ui.checkboxradio;\r\n\r\n\r\n/*!\r\n * jQuery UI Button 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Button\r\n//>>group: Widgets\r\n//>>description: Enhances a form with themeable buttons.\r\n//>>docs: https://api.jqueryui.com/button/\r\n//>>demos: https://jqueryui.com/button/\r\n//>>css.structure: ../../themes/base/core.css\r\n//>>css.structure: ../../themes/base/button.css\r\n//>>css.theme: ../../themes/base/theme.css\r\n\r\n\r\n$.widget( \"ui.button\", {\r\n\tversion: \"1.14.1\",\r\n\tdefaultElement: \"<button>\",\r\n\toptions: {\r\n\t\tclasses: {\r\n\t\t\t\"ui-button\": \"ui-corner-all\"\r\n\t\t},\r\n\t\tdisabled: null,\r\n\t\ticon: null,\r\n\t\ticonPosition: \"beginning\",\r\n\t\tlabel: null,\r\n\t\tshowLabel: true\r\n\t},\r\n\r\n\t_getCreateOptions: function() {\r\n\t\tvar disabled,\r\n\r\n\t\t\t// This is to support cases like in jQuery Mobile where the base widget does have\r\n\t\t\t// an implementation of _getCreateOptions\r\n\t\t\toptions = this._super() || {};\r\n\r\n\t\tthis.isInput = this.element.is( \"input\" );\r\n\r\n\t\tdisabled = this.element[ 0 ].disabled;\r\n\t\tif ( disabled != null ) {\r\n\t\t\toptions.disabled = disabled;\r\n\t\t}\r\n\r\n\t\tthis.originalLabel = this.isInput ? this.element.val() : this.element.html();\r\n\t\tif ( this.originalLabel ) {\r\n\t\t\toptions.label = this.originalLabel;\r\n\t\t}\r\n\r\n\t\treturn options;\r\n\t},\r\n\r\n\t_create: function() {\r\n\t\tif ( !this.option.showLabel & !this.options.icon ) {\r\n\t\t\tthis.options.showLabel = true;\r\n\t\t}\r\n\r\n\t\t// We have to check the option again here even though we did in _getCreateOptions,\r\n\t\t// because null may have been passed on init which would override what was set in\r\n\t\t// _getCreateOptions\r\n\t\tif ( this.options.disabled == null ) {\r\n\t\t\tthis.options.disabled = this.element[ 0 ].disabled || false;\r\n\t\t}\r\n\r\n\t\tthis.hasTitle = !!this.element.attr( \"title\" );\r\n\r\n\t\t// Check to see if the label needs to be set or if its already correct\r\n\t\tif ( this.options.label && this.options.label !== this.originalLabel ) {\r\n\t\t\tif ( this.isInput ) {\r\n\t\t\t\tthis.element.val( this.options.label );\r\n\t\t\t} else {\r\n\t\t\t\tthis.element.html( this.options.label );\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._addClass( \"ui-button\", \"ui-widget\" );\r\n\t\tthis._setOption( \"disabled\", this.options.disabled );\r\n\t\tthis._enhance();\r\n\r\n\t\tif ( this.element.is( \"a\" ) ) {\r\n\t\t\tthis._on( {\r\n\t\t\t\t\"keyup\": function( event ) {\r\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE ) {\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\t\t\t// If a native click is available use it, so we\r\n\t\t\t\t\t\t// actually cause navigation. Otherwise, just trigger\r\n\t\t\t\t\t\t// a click event.\r\n\t\t\t\t\t\tif ( this.element[ 0 ].click ) {\r\n\t\t\t\t\t\t\tthis.element[ 0 ].click();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.element.trigger( \"click\" );\r\n\t\t\t\t\t\t}\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_enhance: function() {\r\n\t\tif ( !this.element.is( \"button\" ) ) {\r\n\t\t\tthis.element.attr( \"role\", \"button\" );\r\n\t\t}\r\n\r\n\t\tif ( this.options.icon ) {\r\n\t\t\tthis._updateIcon( \"icon\", this.options.icon );\r\n\t\t\tthis._updateTooltip();\r\n\t\t}\r\n\t},\r\n\r\n\t_updateTooltip: function() {\r\n\t\tthis.title = this.element.attr( \"title\" );\r\n\r\n\t\tif ( !this.options.showLabel && !this.title ) {\r\n\t\t\tthis.element.attr( \"title\", this.options.label );\r\n\t\t}\r\n\t},\r\n\r\n\t_updateIcon: function( option, value ) {\r\n\t\tvar icon = option !== \"iconPosition\",\r\n\t\t\tposition = icon ? this.options.iconPosition : value,\r\n\t\t\tdisplayBlock = position === \"top\" || position === \"bottom\";\r\n\r\n\t\t// Create icon\r\n\t\tif ( !this.icon ) {\r\n\t\t\tthis.icon = $( \"<span>\" );\r\n\r\n\t\t\tthis._addClass( this.icon, \"ui-button-icon\", \"ui-icon\" );\r\n\r\n\t\t\tif ( !this.options.showLabel ) {\r\n\t\t\t\tthis._addClass( \"ui-button-icon-only\" );\r\n\t\t\t}\r\n\t\t} else if ( icon ) {\r\n\r\n\t\t\t// If we are updating the icon remove the old icon class\r\n\t\t\tthis._removeClass( this.icon, null, this.options.icon );\r\n\t\t}\r\n\r\n\t\t// If we are updating the icon add the new icon class\r\n\t\tif ( icon ) {\r\n\t\t\tthis._addClass( this.icon, null, value );\r\n\t\t}\r\n\r\n\t\tthis._attachIcon( position );\r\n\r\n\t\t// If the icon is on top or bottom we need to add the ui-widget-icon-block class and remove\r\n\t\t// the iconSpace if there is one.\r\n\t\tif ( displayBlock ) {\r\n\t\t\tthis._addClass( this.icon, null, \"ui-widget-icon-block\" );\r\n\t\t\tif ( this.iconSpace ) {\r\n\t\t\t\tthis.iconSpace.remove();\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\t// Position is beginning or end so remove the ui-widget-icon-block class and add the\r\n\t\t\t// space if it does not exist\r\n\t\t\tif ( !this.iconSpace ) {\r\n\t\t\t\tthis.iconSpace = $( \"<span> </span>\" );\r\n\t\t\t\tthis._addClass( this.iconSpace, \"ui-button-icon-space\" );\r\n\t\t\t}\r\n\t\t\tthis._removeClass( this.icon, null, \"ui-wiget-icon-block\" );\r\n\t\t\tthis._attachIconSpace( position );\r\n\t\t}\r\n\t},\r\n\r\n\t_destroy: function() {\r\n\t\tthis.element.removeAttr( \"role\" );\r\n\r\n\t\tif ( this.icon ) {\r\n\t\t\tthis.icon.remove();\r\n\t\t}\r\n\t\tif ( this.iconSpace ) {\r\n\t\t\tthis.iconSpace.remove();\r\n\t\t}\r\n\t\tif ( !this.hasTitle ) {\r\n\t\t\tthis.element.removeAttr( \"title\" );\r\n\t\t}\r\n\t},\r\n\r\n\t_attachIconSpace: function( iconPosition ) {\r\n\t\tthis.icon[ /^(?:end|bottom)/.test( iconPosition ) ? \"before\" : \"after\" ]( this.iconSpace );\r\n\t},\r\n\r\n\t_attachIcon: function( iconPosition ) {\r\n\t\tthis.element[ /^(?:end|bottom)/.test( iconPosition ) ? \"append\" : \"prepend\" ]( this.icon );\r\n\t},\r\n\r\n\t_setOptions: function( options ) {\r\n\t\tvar newShowLabel = options.showLabel === undefined ?\r\n\t\t\t\tthis.options.showLabel :\r\n\t\t\t\toptions.showLabel,\r\n\t\t\tnewIcon = options.icon === undefined ? this.options.icon : options.icon;\r\n\r\n\t\tif ( !newShowLabel && !newIcon ) {\r\n\t\t\toptions.showLabel = true;\r\n\t\t}\r\n\t\tthis._super( options );\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\t\tif ( key === \"icon\" ) {\r\n\t\t\tif ( value ) {\r\n\t\t\t\tthis._updateIcon( key, value );\r\n\t\t\t} else if ( this.icon ) {\r\n\t\t\t\tthis.icon.remove();\r\n\t\t\t\tif ( this.iconSpace ) {\r\n\t\t\t\t\tthis.iconSpace.remove();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( key === \"iconPosition\" ) {\r\n\t\t\tthis._updateIcon( key, value );\r\n\t\t}\r\n\r\n\t\t// Make sure we can't end up with a button that has neither text nor icon\r\n\t\tif ( key === \"showLabel\" ) {\r\n\t\t\t\tthis._toggleClass( \"ui-button-icon-only\", null, !value );\r\n\t\t\t\tthis._updateTooltip();\r\n\t\t}\r\n\r\n\t\tif ( key === \"label\" ) {\r\n\t\t\tif ( this.isInput ) {\r\n\t\t\t\tthis.element.val( value );\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// If there is an icon, append it, else nothing then append the value\r\n\t\t\t\t// this avoids removal of the icon when setting label text\r\n\t\t\t\tthis.element.html( value );\r\n\t\t\t\tif ( this.icon ) {\r\n\t\t\t\t\tthis._attachIcon( this.options.iconPosition );\r\n\t\t\t\t\tthis._attachIconSpace( this.options.iconPosition );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._super( key, value );\r\n\r\n\t\tif ( key === \"disabled\" ) {\r\n\t\t\tthis._toggleClass( null, \"ui-state-disabled\", value );\r\n\t\t\tthis.element[ 0 ].disabled = value;\r\n\t\t\tif ( value ) {\r\n\t\t\t\tthis.element.trigger( \"blur\" );\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\trefresh: function() {\r\n\r\n\t\t// Make sure to only check disabled if its an element that supports this otherwise\r\n\t\t// check for the disabled class to determine state\r\n\t\tvar isDisabled = this.element.is( \"input, button\" ) ?\r\n\t\t\tthis.element[ 0 ].disabled : this.element.hasClass( \"ui-button-disabled\" );\r\n\r\n\t\tif ( isDisabled !== this.options.disabled ) {\r\n\t\t\tthis._setOptions( { disabled: isDisabled } );\r\n\t\t}\r\n\r\n\t\tthis._updateTooltip();\r\n\t}\r\n} );\r\n\r\n// DEPRECATED\r\nif ( $.uiBackCompat === true ) {\r\n\r\n\t// Text and Icons options\r\n\t$.widget( \"ui.button\", $.ui.button, {\r\n\t\toptions: {\r\n\t\t\ttext: true,\r\n\t\t\ticons: {\r\n\t\t\t\tprimary: null,\r\n\t\t\t\tsecondary: null\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_create: function() {\r\n\t\t\tif ( this.options.showLabel && !this.options.text ) {\r\n\t\t\t\tthis.options.showLabel = this.options.text;\r\n\t\t\t}\r\n\t\t\tif ( !this.options.showLabel && this.options.text ) {\r\n\t\t\t\tthis.options.text = this.options.showLabel;\r\n\t\t\t}\r\n\t\t\tif ( !this.options.icon && ( this.options.icons.primary ||\r\n\t\t\t\t\tthis.options.icons.secondary ) ) {\r\n\t\t\t\tif ( this.options.icons.primary ) {\r\n\t\t\t\t\tthis.options.icon = this.options.icons.primary;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.options.icon = this.options.icons.secondary;\r\n\t\t\t\t\tthis.options.iconPosition = \"end\";\r\n\t\t\t\t}\r\n\t\t\t} else if ( this.options.icon ) {\r\n\t\t\t\tthis.options.icons.primary = this.options.icon;\r\n\t\t\t}\r\n\t\t\tthis._super();\r\n\t\t},\r\n\r\n\t\t_setOption: function( key, value ) {\r\n\t\t\tif ( key === \"text\" ) {\r\n\t\t\t\tthis._super( \"showLabel\", value );\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif ( key === \"showLabel\" ) {\r\n\t\t\t\tthis.options.text = value;\r\n\t\t\t}\r\n\t\t\tif ( key === \"icon\" ) {\r\n\t\t\t\tthis.options.icons.primary = value;\r\n\t\t\t}\r\n\t\t\tif ( key === \"icons\" ) {\r\n\t\t\t\tif ( value.primary ) {\r\n\t\t\t\t\tthis._super( \"icon\", value.primary );\r\n\t\t\t\t\tthis._super( \"iconPosition\", \"beginning\" );\r\n\t\t\t\t} else if ( value.secondary ) {\r\n\t\t\t\t\tthis._super( \"icon\", value.secondary );\r\n\t\t\t\t\tthis._super( \"iconPosition\", \"end\" );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis._superApply( arguments );\r\n\t\t}\r\n\t} );\r\n\r\n\t$.fn.button = ( function( orig ) {\r\n\t\treturn function( options ) {\r\n\t\t\tvar isMethodCall = typeof options === \"string\";\r\n\t\t\tvar args = Array.prototype.slice.call( arguments, 1 );\r\n\t\t\tvar returnValue = this;\r\n\r\n\t\t\tif ( isMethodCall ) {\r\n\r\n\t\t\t\t// If this is an empty collection, we need to have the instance method\r\n\t\t\t\t// return undefined instead of the jQuery instance\r\n\t\t\t\tif ( !this.length && options === \"instance\" ) {\r\n\t\t\t\t\treturnValue = undefined;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.each( function() {\r\n\t\t\t\t\t\tvar methodValue;\r\n\t\t\t\t\t\tvar type = $( this ).attr( \"type\" );\r\n\t\t\t\t\t\tvar name = type !== \"checkbox\" && type !== \"radio\" ?\r\n\t\t\t\t\t\t\t\"button\" :\r\n\t\t\t\t\t\t\t\"checkboxradio\";\r\n\t\t\t\t\t\tvar instance = $.data( this, \"ui-\" + name );\r\n\r\n\t\t\t\t\t\tif ( options === \"instance\" ) {\r\n\t\t\t\t\t\t\treturnValue = instance;\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ( !instance ) {\r\n\t\t\t\t\t\t\treturn $.error( \"cannot call methods on button\" +\r\n\t\t\t\t\t\t\t\t\" prior to initialization; \" +\r\n\t\t\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ( typeof instance[ options ] !== \"function\" ||\r\n\t\t\t\t\t\t\toptions.charAt( 0 ) === \"_\" ) {\r\n\t\t\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for button\" +\r\n\t\t\t\t\t\t\t\t\" widget instance\" );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\r\n\r\n\t\t\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\r\n\t\t\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\r\n\t\t\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\r\n\t\t\t\t\t\t\t\tmethodValue;\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// Allow multiple hashes to be passed on init\r\n\t\t\t\tif ( args.length ) {\r\n\t\t\t\t\toptions = $.widget.extend.apply( null, [ options ].concat( args ) );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.each( function() {\r\n\t\t\t\t\tvar type = $( this ).attr( \"type\" );\r\n\t\t\t\t\tvar name = type !== \"checkbox\" && type !== \"radio\" ? \"button\" : \"checkboxradio\";\r\n\t\t\t\t\tvar instance = $.data( this, \"ui-\" + name );\r\n\r\n\t\t\t\t\tif ( instance ) {\r\n\t\t\t\t\t\tinstance.option( options || {} );\r\n\t\t\t\t\t\tif ( instance._init ) {\r\n\t\t\t\t\t\t\tinstance._init();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif ( name === \"button\" ) {\r\n\t\t\t\t\t\t\torig.call( $( this ), options );\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t$( this ).checkboxradio( $.extend( { icon: false }, options ) );\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\r\n\t\t\treturn returnValue;\r\n\t\t};\r\n\t} )( $.fn.button );\r\n\r\n\t$.fn.buttonset = function() {\r\n\t\tif ( !$.ui.controlgroup ) {\r\n\t\t\t$.error( \"Controlgroup widget missing\" );\r\n\t\t}\r\n\t\tif ( arguments[ 0 ] === \"option\" && arguments[ 1 ] === \"items\" && arguments[ 2 ] ) {\r\n\t\t\treturn this.controlgroup.apply( this,\r\n\t\t\t\t[ arguments[ 0 ], \"items.button\", arguments[ 2 ] ] );\r\n\t\t}\r\n\t\tif ( arguments[ 0 ] === \"option\" && arguments[ 1 ] === \"items\" ) {\r\n\t\t\treturn this.controlgroup.apply( this, [ arguments[ 0 ], \"items.button\" ] );\r\n\t\t}\r\n\t\tif ( typeof arguments[ 0 ] === \"object\" && arguments[ 0 ].items ) {\r\n\t\t\targuments[ 0 ].items = {\r\n\t\t\t\tbutton: arguments[ 0 ].items\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn this.controlgroup.apply( this, arguments );\r\n\t};\r\n}\r\n\r\nvar widgetsButton = $.ui.button;\r\n\r\n\r\n/* eslint-disable max-len, camelcase */\r\n/*!\r\n * jQuery UI Datepicker 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Datepicker\r\n//>>group: Widgets\r\n//>>description: Displays a calendar from an input or inline for selecting dates.\r\n//>>docs: https://api.jqueryui.com/datepicker/\r\n//>>demos: https://jqueryui.com/datepicker/\r\n//>>css.structure: ../../themes/base/core.css\r\n//>>css.structure: ../../themes/base/datepicker.css\r\n//>>css.theme: ../../themes/base/theme.css\r\n\r\n\r\n$.extend( $.ui, { datepicker: { version: \"1.14.1\" } } );\r\n\r\nvar datepicker_instActive;\r\n\r\nfunction datepicker_getZindex( elem ) {\r\n\tvar position, value;\r\n\twhile ( elem.length && elem[ 0 ] !== document ) {\r\n\r\n\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\r\n\t\t// This makes behavior of this function consistent across browsers\r\n\t\t// WebKit always returns auto if the element is positioned\r\n\t\tposition = elem.css( \"position\" );\r\n\t\tif ( position === \"absolute\" || position === \"relative\" || position === \"fixed\" ) {\r\n\r\n\t\t\t// IE returns 0 when zIndex is not specified\r\n\t\t\t// other browsers return a string\r\n\t\t\t// we ignore the case of nested elements with an explicit value of 0\r\n\t\t\t// <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\r\n\t\t\tvalue = parseInt( elem.css( \"zIndex\" ), 10 );\r\n\t\t\tif ( !isNaN( value ) && value !== 0 ) {\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t\telem = elem.parent();\r\n\t}\r\n\r\n\treturn 0;\r\n}\r\n\r\n/* Date picker manager.\r\n   Use the singleton instance of this class, $.datepicker, to interact with the date picker.\r\n   Settings for (groups of) date pickers are maintained in an instance object,\r\n   allowing multiple different settings on the same page. */\r\n\r\nfunction Datepicker() {\r\n\tthis._curInst = null; // The current instance in use\r\n\tthis._keyEvent = false; // If the last event was a key event\r\n\tthis._disabledInputs = []; // List of date picker inputs that have been disabled\r\n\tthis._datepickerShowing = false; // True if the popup picker is showing , false if not\r\n\tthis._inDialog = false; // True if showing within a \"dialog\", false if not\r\n\tthis._mainDivId = \"ui-datepicker-div\"; // The ID of the main datepicker division\r\n\tthis._inlineClass = \"ui-datepicker-inline\"; // The name of the inline marker class\r\n\tthis._appendClass = \"ui-datepicker-append\"; // The name of the append marker class\r\n\tthis._triggerClass = \"ui-datepicker-trigger\"; // The name of the trigger marker class\r\n\tthis._dialogClass = \"ui-datepicker-dialog\"; // The name of the dialog marker class\r\n\tthis._disableClass = \"ui-datepicker-disabled\"; // The name of the disabled covering marker class\r\n\tthis._unselectableClass = \"ui-datepicker-unselectable\"; // The name of the unselectable cell marker class\r\n\tthis._currentClass = \"ui-datepicker-current-day\"; // The name of the current day marker class\r\n\tthis._dayOverClass = \"ui-datepicker-days-cell-over\"; // The name of the day hover marker class\r\n\tthis.regional = []; // Available regional settings, indexed by language code\r\n\tthis.regional[ \"\" ] = { // Default regional settings\r\n\t\tcloseText: \"Done\", // Display text for close link\r\n\t\tprevText: \"Prev\", // Display text for previous month link\r\n\t\tnextText: \"Next\", // Display text for next month link\r\n\t\tcurrentText: \"Today\", // Display text for current month link\r\n\t\tmonthNames: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\r\n\t\t\t\"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ], // Names of months for drop-down and formatting\r\n\t\tmonthNamesShort: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ], // For formatting\r\n\t\tdayNames: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ], // For formatting\r\n\t\tdayNamesShort: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ], // For formatting\r\n\t\tdayNamesMin: [ \"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\" ], // Column headings for days starting at Sunday\r\n\t\tweekHeader: \"Wk\", // Column header for week of the year\r\n\t\tdateFormat: \"mm/dd/yy\", // See format options on parseDate\r\n\t\tfirstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...\r\n\t\tisRTL: false, // True if right-to-left language, false if left-to-right\r\n\t\tshowMonthAfterYear: false, // True if the year select precedes month, false for month then year\r\n\t\tyearSuffix: \"\", // Additional text to append to the year in the month headers,\r\n\t\tselectMonthLabel: \"Select month\", // Invisible label for month selector\r\n\t\tselectYearLabel: \"Select year\" // Invisible label for year selector\r\n\t};\r\n\tthis._defaults = { // Global defaults for all the date picker instances\r\n\t\tshowOn: \"focus\", // \"focus\" for popup on focus,\r\n\t\t\t// \"button\" for trigger button, or \"both\" for either\r\n\t\tshowAnim: \"fadeIn\", // Name of jQuery animation for popup\r\n\t\tshowOptions: {}, // Options for enhanced animations\r\n\t\tdefaultDate: null, // Used when field is blank: actual date,\r\n\t\t\t// +/-number for offset from today, null for today\r\n\t\tappendText: \"\", // Display text following the input box, e.g. showing the format\r\n\t\tbuttonText: \"...\", // Text for trigger button\r\n\t\tbuttonImage: \"\", // URL for trigger button image\r\n\t\tbuttonImageOnly: false, // True if the image appears alone, false if it appears on a button\r\n\t\thideIfNoPrevNext: false, // True to hide next/previous month links\r\n\t\t\t// if not applicable, false to just disable them\r\n\t\tnavigationAsDateFormat: false, // True if date formatting applied to prev/today/next links\r\n\t\tgotoCurrent: false, // True if today link goes back to current selection instead\r\n\t\tchangeMonth: false, // True if month can be selected directly, false if only prev/next\r\n\t\tchangeYear: false, // True if year can be selected directly, false if only prev/next\r\n\t\tyearRange: \"c-10:c+10\", // Range of years to display in drop-down,\r\n\t\t\t// either relative to today's year (-nn:+nn), relative to currently displayed year\r\n\t\t\t// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)\r\n\t\tshowOtherMonths: false, // True to show dates in other months, false to leave blank\r\n\t\tselectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable\r\n\t\tshowWeek: false, // True to show week of the year, false to not show it\r\n\t\tcalculateWeek: this.iso8601Week, // How to calculate the week of the year,\r\n\t\t\t// takes a Date and returns the number of the week for it\r\n\t\tshortYearCutoff: \"+10\", // Short year values < this are in the current century,\r\n\t\t\t// > this are in the previous century,\r\n\t\t\t// string value starting with \"+\" for current year + value\r\n\t\tminDate: null, // The earliest selectable date, or null for no limit\r\n\t\tmaxDate: null, // The latest selectable date, or null for no limit\r\n\t\tduration: \"fast\", // Duration of display/closure\r\n\t\tbeforeShowDay: null, // Function that takes a date and returns an array with\r\n\t\t\t// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or \"\",\r\n\t\t\t// [2] = cell title (optional), e.g. $.datepicker.noWeekends\r\n\t\tbeforeShow: null, // Function that takes an input field and\r\n\t\t\t// returns a set of custom settings for the date picker\r\n\t\tonSelect: null, // Define a callback function when a date is selected\r\n\t\tonChangeMonthYear: null, // Define a callback function when the month or year is changed\r\n\t\tonClose: null, // Define a callback function when the datepicker is closed\r\n\t\tonUpdateDatepicker: null, // Define a callback function when the datepicker is updated\r\n\t\tnumberOfMonths: 1, // Number of months to show at a time\r\n\t\tshowCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)\r\n\t\tstepMonths: 1, // Number of months to step back/forward\r\n\t\tstepBigMonths: 12, // Number of months to step back/forward for the big links\r\n\t\taltField: \"\", // Selector for an alternate field to store selected dates into\r\n\t\taltFormat: \"\", // The date format to use for the alternate field\r\n\t\tconstrainInput: true, // The input is constrained by the current date format\r\n\t\tshowButtonPanel: false, // True to show button panel, false to not show it\r\n\t\tautoSize: false, // True to size the input for the date format, false to leave as is\r\n\t\tdisabled: false // The initial disabled state\r\n\t};\r\n\t$.extend( this._defaults, this.regional[ \"\" ] );\r\n\tthis.regional.en = $.extend( true, {}, this.regional[ \"\" ] );\r\n\tthis.regional[ \"en-US\" ] = $.extend( true, {}, this.regional.en );\r\n\tthis.dpDiv = datepicker_bindHover( $( \"<div id='\" + this._mainDivId + \"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\" ) );\r\n}\r\n\r\n$.extend( Datepicker.prototype, {\r\n\r\n\t/* Class name added to elements to indicate already configured with a date picker. */\r\n\tmarkerClassName: \"hasDatepicker\",\r\n\r\n\t//Keep track of the maximum number of rows displayed (see #7043)\r\n\tmaxRows: 4,\r\n\r\n\t// TODO rename to \"widget\" when switching to widget factory\r\n\t_widgetDatepicker: function() {\r\n\t\treturn this.dpDiv;\r\n\t},\r\n\r\n\t/* Override the default settings for all instances of the date picker.\r\n\t * @param  settings  object - the new settings to use as defaults (anonymous object)\r\n\t * @return the manager object\r\n\t */\r\n\tsetDefaults: function( settings ) {\r\n\t\tdatepicker_extendRemove( this._defaults, settings || {} );\r\n\t\treturn this;\r\n\t},\r\n\r\n\t/* Attach the date picker to a jQuery selection.\r\n\t * @param  target\telement - the target input field or division or span\r\n\t * @param  settings  object - the new settings to use for this date picker instance (anonymous)\r\n\t */\r\n\t_attachDatepicker: function( target, settings ) {\r\n\t\tvar nodeName, inline, inst;\r\n\t\tnodeName = target.nodeName.toLowerCase();\r\n\t\tinline = ( nodeName === \"div\" || nodeName === \"span\" );\r\n\t\tif ( !target.id ) {\r\n\t\t\tthis.uuid += 1;\r\n\t\t\ttarget.id = \"dp\" + this.uuid;\r\n\t\t}\r\n\t\tinst = this._newInst( $( target ), inline );\r\n\t\tinst.settings = $.extend( {}, settings || {} );\r\n\t\tif ( nodeName === \"input\" ) {\r\n\t\t\tthis._connectDatepicker( target, inst );\r\n\t\t} else if ( inline ) {\r\n\t\t\tthis._inlineDatepicker( target, inst );\r\n\t\t}\r\n\t},\r\n\r\n\t/* Create a new instance object. */\r\n\t_newInst: function( target, inline ) {\r\n\t\tvar id = target[ 0 ].id.replace( /([^A-Za-z0-9_\\-])/g, \"\\\\\\\\$1\" ); // escape jQuery meta chars\r\n\t\treturn { id: id, input: target, // associated target\r\n\t\t\tselectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection\r\n\t\t\tdrawMonth: 0, drawYear: 0, // month being drawn\r\n\t\t\tinline: inline, // is datepicker inline or not\r\n\t\t\tdpDiv: ( !inline ? this.dpDiv : // presentation div\r\n\t\t\tdatepicker_bindHover( $( \"<div class='\" + this._inlineClass + \" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\" ) ) ) };\r\n\t},\r\n\r\n\t/* Attach the date picker to an input field. */\r\n\t_connectDatepicker: function( target, inst ) {\r\n\t\tvar input = $( target );\r\n\t\tinst.append = $( [] );\r\n\t\tinst.trigger = $( [] );\r\n\t\tif ( input.hasClass( this.markerClassName ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._attachments( input, inst );\r\n\t\tinput.addClass( this.markerClassName ).on( \"keydown\", this._doKeyDown ).\r\n\t\t\ton( \"keypress\", this._doKeyPress ).on( \"keyup\", this._doKeyUp );\r\n\t\tthis._autoSize( inst );\r\n\t\t$.data( target, \"datepicker\", inst );\r\n\r\n\t\t//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)\r\n\t\tif ( inst.settings.disabled ) {\r\n\t\t\tthis._disableDatepicker( target );\r\n\t\t}\r\n\t},\r\n\r\n\t/* Make attachments based on settings. */\r\n\t_attachments: function( input, inst ) {\r\n\t\tvar showOn, buttonText, buttonImage,\r\n\t\t\tappendText = this._get( inst, \"appendText\" ),\r\n\t\t\tisRTL = this._get( inst, \"isRTL\" );\r\n\r\n\t\tif ( inst.append ) {\r\n\t\t\tinst.append.remove();\r\n\t\t}\r\n\t\tif ( appendText ) {\r\n\t\t\tinst.append = $( \"<span>\" )\r\n\t\t\t\t.addClass( this._appendClass )\r\n\t\t\t\t.text( appendText );\r\n\t\t\tinput[ isRTL ? \"before\" : \"after\" ]( inst.append );\r\n\t\t}\r\n\r\n\t\tinput.off( \"focus\", this._showDatepicker );\r\n\r\n\t\tif ( inst.trigger ) {\r\n\t\t\tinst.trigger.remove();\r\n\t\t}\r\n\r\n\t\tshowOn = this._get( inst, \"showOn\" );\r\n\t\tif ( showOn === \"focus\" || showOn === \"both\" ) { // pop-up date picker when in the marked field\r\n\t\t\tinput.on( \"focus\", this._showDatepicker );\r\n\t\t}\r\n\t\tif ( showOn === \"button\" || showOn === \"both\" ) { // pop-up date picker when button clicked\r\n\t\t\tbuttonText = this._get( inst, \"buttonText\" );\r\n\t\t\tbuttonImage = this._get( inst, \"buttonImage\" );\r\n\r\n\t\t\tif ( this._get( inst, \"buttonImageOnly\" ) ) {\r\n\t\t\t\tinst.trigger = $( \"<img>\" )\r\n\t\t\t\t\t.addClass( this._triggerClass )\r\n\t\t\t\t\t.attr( {\r\n\t\t\t\t\t\tsrc: buttonImage,\r\n\t\t\t\t\t\talt: buttonText,\r\n\t\t\t\t\t\ttitle: buttonText\r\n\t\t\t\t\t} );\r\n\t\t\t} else {\r\n\t\t\t\tinst.trigger = $( \"<button type='button'>\" )\r\n\t\t\t\t\t.addClass( this._triggerClass );\r\n\t\t\t\tif ( buttonImage ) {\r\n\t\t\t\t\tinst.trigger.html(\r\n\t\t\t\t\t\t$( \"<img>\" )\r\n\t\t\t\t\t\t\t.attr( {\r\n\t\t\t\t\t\t\t\tsrc: buttonImage,\r\n\t\t\t\t\t\t\t\talt: buttonText,\r\n\t\t\t\t\t\t\t\ttitle: buttonText\r\n\t\t\t\t\t\t\t} )\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tinst.trigger.text( buttonText );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tinput[ isRTL ? \"before\" : \"after\" ]( inst.trigger );\r\n\t\t\tinst.trigger.on( \"click\", function() {\r\n\t\t\t\tif ( $.datepicker._datepickerShowing && $.datepicker._lastInput === input[ 0 ] ) {\r\n\t\t\t\t\t$.datepicker._hideDatepicker();\r\n\t\t\t\t} else if ( $.datepicker._datepickerShowing && $.datepicker._lastInput !== input[ 0 ] ) {\r\n\t\t\t\t\t$.datepicker._hideDatepicker();\r\n\t\t\t\t\t$.datepicker._showDatepicker( input[ 0 ] );\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$.datepicker._showDatepicker( input[ 0 ] );\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t} );\r\n\t\t}\r\n\t},\r\n\r\n\t/* Apply the maximum length for the date format. */\r\n\t_autoSize: function( inst ) {\r\n\t\tif ( this._get( inst, \"autoSize\" ) && !inst.inline ) {\r\n\t\t\tvar findMax, max, maxI, i,\r\n\t\t\t\tdate = new Date( 2009, 12 - 1, 20 ), // Ensure double digits\r\n\t\t\t\tdateFormat = this._get( inst, \"dateFormat\" );\r\n\r\n\t\t\tif ( dateFormat.match( /[DM]/ ) ) {\r\n\t\t\t\tfindMax = function( names ) {\r\n\t\t\t\t\tmax = 0;\r\n\t\t\t\t\tmaxI = 0;\r\n\t\t\t\t\tfor ( i = 0; i < names.length; i++ ) {\r\n\t\t\t\t\t\tif ( names[ i ].length > max ) {\r\n\t\t\t\t\t\t\tmax = names[ i ].length;\r\n\t\t\t\t\t\t\tmaxI = i;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn maxI;\r\n\t\t\t\t};\r\n\t\t\t\tdate.setMonth( findMax( this._get( inst, ( dateFormat.match( /MM/ ) ?\r\n\t\t\t\t\t\"monthNames\" : \"monthNamesShort\" ) ) ) );\r\n\t\t\t\tdate.setDate( findMax( this._get( inst, ( dateFormat.match( /DD/ ) ?\r\n\t\t\t\t\t\"dayNames\" : \"dayNamesShort\" ) ) ) + 20 - date.getDay() );\r\n\t\t\t}\r\n\t\t\tinst.input.attr( \"size\", this._formatDate( inst, date ).length );\r\n\t\t}\r\n\t},\r\n\r\n\t/* Attach an inline date picker to a div. */\r\n\t_inlineDatepicker: function( target, inst ) {\r\n\t\tvar divSpan = $( target );\r\n\t\tif ( divSpan.hasClass( this.markerClassName ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tdivSpan.addClass( this.markerClassName ).append( inst.dpDiv );\r\n\t\t$.data( target, \"datepicker\", inst );\r\n\t\tthis._setDate( inst, this._getDefaultDate( inst ), true );\r\n\t\tthis._updateDatepicker( inst );\r\n\t\tthis._updateAlternate( inst );\r\n\r\n\t\t//If disabled option is true, disable the datepicker before showing it (see ticket #5665)\r\n\t\tif ( inst.settings.disabled ) {\r\n\t\t\tthis._disableDatepicker( target );\r\n\t\t}\r\n\r\n\t\t// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements\r\n\t\t// https://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height\r\n\t\tinst.dpDiv.css( \"display\", \"block\" );\r\n\t},\r\n\r\n\t/* Pop-up the date picker in a \"dialog\" box.\r\n\t * @param  input element - ignored\r\n\t * @param  date\tstring or Date - the initial date to display\r\n\t * @param  onSelect  function - the function to call when a date is selected\r\n\t * @param  settings  object - update the dialog date picker instance's settings (anonymous object)\r\n\t * @param  pos int[2] - coordinates for the dialog's position within the screen or\r\n\t *\t\t\t\t\tevent - with x/y coordinates or\r\n\t *\t\t\t\t\tleave empty for default (screen centre)\r\n\t * @return the manager object\r\n\t */\r\n\t_dialogDatepicker: function( input, date, onSelect, settings, pos ) {\r\n\t\tvar id, browserWidth, browserHeight, scrollX, scrollY,\r\n\t\t\tinst = this._dialogInst; // internal instance\r\n\r\n\t\tif ( !inst ) {\r\n\t\t\tthis.uuid += 1;\r\n\t\t\tid = \"dp\" + this.uuid;\r\n\t\t\tthis._dialogInput = $( \"<input type='text' id='\" + id +\r\n\t\t\t\t\"' style='position: absolute; top: -100px; width: 0px;'/>\" );\r\n\t\t\tthis._dialogInput.on( \"keydown\", this._doKeyDown );\r\n\t\t\t$( \"body\" ).append( this._dialogInput );\r\n\t\t\tinst = this._dialogInst = this._newInst( this._dialogInput, false );\r\n\t\t\tinst.settings = {};\r\n\t\t\t$.data( this._dialogInput[ 0 ], \"datepicker\", inst );\r\n\t\t}\r\n\t\tdatepicker_extendRemove( inst.settings, settings || {} );\r\n\t\tdate = ( date && date.constructor === Date ? this._formatDate( inst, date ) : date );\r\n\t\tthis._dialogInput.val( date );\r\n\r\n\t\tthis._pos = ( pos ? ( pos.length ? pos : [ pos.pageX, pos.pageY ] ) : null );\r\n\t\tif ( !this._pos ) {\r\n\t\t\tbrowserWidth = document.documentElement.clientWidth;\r\n\t\t\tbrowserHeight = document.documentElement.clientHeight;\r\n\t\t\tscrollX = document.documentElement.scrollLeft || document.body.scrollLeft;\r\n\t\t\tscrollY = document.documentElement.scrollTop || document.body.scrollTop;\r\n\t\t\tthis._pos = // should use actual width/height below\r\n\t\t\t\t[ ( browserWidth / 2 ) - 100 + scrollX, ( browserHeight / 2 ) - 150 + scrollY ];\r\n\t\t}\r\n\r\n\t\t// Move input on screen for focus, but hidden behind dialog\r\n\t\tthis._dialogInput.css( \"left\", ( this._pos[ 0 ] + 20 ) + \"px\" ).css( \"top\", this._pos[ 1 ] + \"px\" );\r\n\t\tinst.settings.onSelect = onSelect;\r\n\t\tthis._inDialog = true;\r\n\t\tthis.dpDiv.addClass( this._dialogClass );\r\n\t\tthis._showDatepicker( this._dialogInput[ 0 ] );\r\n\t\tif ( $.blockUI ) {\r\n\t\t\t$.blockUI( this.dpDiv );\r\n\t\t}\r\n\t\t$.data( this._dialogInput[ 0 ], \"datepicker\", inst );\r\n\t\treturn this;\r\n\t},\r\n\r\n\t/* Detach a datepicker from its control.\r\n\t * @param  target\telement - the target input field or division or span\r\n\t */\r\n\t_destroyDatepicker: function( target ) {\r\n\t\tvar nodeName,\r\n\t\t\t$target = $( target ),\r\n\t\t\tinst = $.data( target, \"datepicker\" );\r\n\r\n\t\tif ( !$target.hasClass( this.markerClassName ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tnodeName = target.nodeName.toLowerCase();\r\n\t\t$.removeData( target, \"datepicker\" );\r\n\t\tif ( nodeName === \"input\" ) {\r\n\t\t\tinst.append.remove();\r\n\t\t\tinst.trigger.remove();\r\n\t\t\t$target.removeClass( this.markerClassName ).\r\n\t\t\t\toff( \"focus\", this._showDatepicker ).\r\n\t\t\t\toff( \"keydown\", this._doKeyDown ).\r\n\t\t\t\toff( \"keypress\", this._doKeyPress ).\r\n\t\t\t\toff( \"keyup\", this._doKeyUp );\r\n\t\t} else if ( nodeName === \"div\" || nodeName === \"span\" ) {\r\n\t\t\t$target.removeClass( this.markerClassName ).empty();\r\n\t\t}\r\n\r\n\t\t$.datepicker._hideDatepicker();\r\n\t\tif ( datepicker_instActive === inst ) {\r\n\t\t\tdatepicker_instActive = null;\r\n\t\t\tthis._curInst = null;\r\n\t\t}\r\n\t},\r\n\r\n\t/* Enable the date picker to a jQuery selection.\r\n\t * @param  target\telement - the target input field or division or span\r\n\t */\r\n\t_enableDatepicker: function( target ) {\r\n\t\tvar nodeName, inline,\r\n\t\t\t$target = $( target ),\r\n\t\t\tinst = $.data( target, \"datepicker\" );\r\n\r\n\t\tif ( !$target.hasClass( this.markerClassName ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tnodeName = target.nodeName.toLowerCase();\r\n\t\tif ( nodeName === \"input\" ) {\r\n\t\t\ttarget.disabled = false;\r\n\t\t\tinst.trigger.filter( \"button\" ).\r\n\t\t\t\teach( function() {\r\n\t\t\t\t\tthis.disabled = false;\r\n\t\t\t\t} ).end().\r\n\t\t\t\tfilter( \"img\" ).css( { opacity: \"1.0\", cursor: \"\" } );\r\n\t\t} else if ( nodeName === \"div\" || nodeName === \"span\" ) {\r\n\t\t\tinline = $target.children( \".\" + this._inlineClass );\r\n\t\t\tinline.children().removeClass( \"ui-state-disabled\" );\r\n\t\t\tinline.find( \"select.ui-datepicker-month, select.ui-datepicker-year\" ).\r\n\t\t\t\tprop( \"disabled\", false );\r\n\t\t}\r\n\t\tthis._disabledInputs = $.map( this._disabledInputs,\r\n\r\n\t\t\t// Delete entry\r\n\t\t\tfunction( value ) {\r\n\t\t\t\treturn ( value === target ? null : value );\r\n\t\t\t} );\r\n\t},\r\n\r\n\t/* Disable the date picker to a jQuery selection.\r\n\t * @param  target\telement - the target input field or division or span\r\n\t */\r\n\t_disableDatepicker: function( target ) {\r\n\t\tvar nodeName, inline,\r\n\t\t\t$target = $( target ),\r\n\t\t\tinst = $.data( target, \"datepicker\" );\r\n\r\n\t\tif ( !$target.hasClass( this.markerClassName ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tnodeName = target.nodeName.toLowerCase();\r\n\t\tif ( nodeName === \"input\" ) {\r\n\t\t\ttarget.disabled = true;\r\n\t\t\tinst.trigger.filter( \"button\" ).\r\n\t\t\t\teach( function() {\r\n\t\t\t\t\tthis.disabled = true;\r\n\t\t\t\t} ).end().\r\n\t\t\t\tfilter( \"img\" ).css( { opacity: \"0.5\", cursor: \"default\" } );\r\n\t\t} else if ( nodeName === \"div\" || nodeName === \"span\" ) {\r\n\t\t\tinline = $target.children( \".\" + this._inlineClass );\r\n\t\t\tinline.children().addClass( \"ui-state-disabled\" );\r\n\t\t\tinline.find( \"select.ui-datepicker-month, select.ui-datepicker-year\" ).\r\n\t\t\t\tprop( \"disabled\", true );\r\n\t\t}\r\n\t\tthis._disabledInputs = $.map( this._disabledInputs,\r\n\r\n\t\t\t// Delete entry\r\n\t\t\tfunction( value ) {\r\n\t\t\t\treturn ( value === target ? null : value );\r\n\t\t\t} );\r\n\t\tthis._disabledInputs[ this._disabledInputs.length ] = target;\r\n\t},\r\n\r\n\t/* Is the first field in a jQuery collection disabled as a datepicker?\r\n\t * @param  target\telement - the target input field or division or span\r\n\t * @return boolean - true if disabled, false if enabled\r\n\t */\r\n\t_isDisabledDatepicker: function( target ) {\r\n\t\tif ( !target ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfor ( var i = 0; i < this._disabledInputs.length; i++ ) {\r\n\t\t\tif ( this._disabledInputs[ i ] === target ) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\t/* Retrieve the instance data for the target control.\r\n\t * @param  target  element - the target input field or division or span\r\n\t * @return  object - the associated instance data\r\n\t * @throws  error if a jQuery problem getting data\r\n\t */\r\n\t_getInst: function( target ) {\r\n\t\ttry {\r\n\t\t\treturn $.data( target, \"datepicker\" );\r\n\t\t} catch ( err ) {\r\n\t\t\tthrow \"Missing instance data for this datepicker\";\r\n\t\t}\r\n\t},\r\n\r\n\t/* Update or retrieve the settings for a date picker attached to an input field or division.\r\n\t * @param  target  element - the target input field or division or span\r\n\t * @param  name\tobject - the new settings to update or\r\n\t *\t\t\t\tstring - the name of the setting to change or retrieve,\r\n\t *\t\t\t\twhen retrieving also \"all\" for all instance settings or\r\n\t *\t\t\t\t\"defaults\" for all global defaults\r\n\t * @param  value   any - the new value for the setting\r\n\t *\t\t\t\t(omit if above is an object or to retrieve a value)\r\n\t */\r\n\t_optionDatepicker: function( target, name, value ) {\r\n\t\tvar settings, date, minDate, maxDate,\r\n\t\t\tinst = this._getInst( target );\r\n\r\n\t\tif ( arguments.length === 2 && typeof name === \"string\" ) {\r\n\t\t\treturn ( name === \"defaults\" ? $.extend( {}, $.datepicker._defaults ) :\r\n\t\t\t\t( inst ? ( name === \"all\" ? $.extend( {}, inst.settings ) :\r\n\t\t\t\tthis._get( inst, name ) ) : null ) );\r\n\t\t}\r\n\r\n\t\tsettings = name || {};\r\n\t\tif ( typeof name === \"string\" ) {\r\n\t\t\tsettings = {};\r\n\t\t\tsettings[ name ] = value;\r\n\t\t}\r\n\r\n\t\tif ( inst ) {\r\n\t\t\tif ( this._curInst === inst ) {\r\n\t\t\t\tthis._hideDatepicker();\r\n\t\t\t}\r\n\r\n\t\t\tdate = this._getDateDatepicker( target, true );\r\n\t\t\tminDate = this._getMinMaxDate( inst, \"min\" );\r\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" );\r\n\t\t\tdatepicker_extendRemove( inst.settings, settings );\r\n\r\n\t\t\t// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided\r\n\t\t\tif ( minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined ) {\r\n\t\t\t\tinst.settings.minDate = this._formatDate( inst, minDate );\r\n\t\t\t}\r\n\t\t\tif ( maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined ) {\r\n\t\t\t\tinst.settings.maxDate = this._formatDate( inst, maxDate );\r\n\t\t\t}\r\n\t\t\tif ( \"disabled\" in settings ) {\r\n\t\t\t\tif ( settings.disabled ) {\r\n\t\t\t\t\tthis._disableDatepicker( target );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._enableDatepicker( target );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis._attachments( $( target ), inst );\r\n\t\t\tthis._autoSize( inst );\r\n\t\t\tthis._setDate( inst, date );\r\n\t\t\tthis._updateAlternate( inst );\r\n\t\t\tthis._updateDatepicker( inst );\r\n\t\t}\r\n\t},\r\n\r\n\t// Change method deprecated\r\n\t_changeDatepicker: function( target, name, value ) {\r\n\t\tthis._optionDatepicker( target, name, value );\r\n\t},\r\n\r\n\t/* Redraw the date picker attached to an input field or division.\r\n\t * @param  target  element - the target input field or division or span\r\n\t */\r\n\t_refreshDatepicker: function( target ) {\r\n\t\tvar inst = this._getInst( target );\r\n\t\tif ( inst ) {\r\n\t\t\tthis._updateDatepicker( inst );\r\n\t\t}\r\n\t},\r\n\r\n\t/* Set the dates for a jQuery selection.\r\n\t * @param  target element - the target input field or division or span\r\n\t * @param  date\tDate - the new date\r\n\t */\r\n\t_setDateDatepicker: function( target, date ) {\r\n\t\tvar inst = this._getInst( target );\r\n\t\tif ( inst ) {\r\n\t\t\tthis._setDate( inst, date );\r\n\t\t\tthis._updateDatepicker( inst );\r\n\t\t\tthis._updateAlternate( inst );\r\n\t\t}\r\n\t},\r\n\r\n\t/* Get the date(s) for the first entry in a jQuery selection.\r\n\t * @param  target element - the target input field or division or span\r\n\t * @param  noDefault boolean - true if no default date is to be used\r\n\t * @return Date - the current date\r\n\t */\r\n\t_getDateDatepicker: function( target, noDefault ) {\r\n\t\tvar inst = this._getInst( target );\r\n\t\tif ( inst && !inst.inline ) {\r\n\t\t\tthis._setDateFromField( inst, noDefault );\r\n\t\t}\r\n\t\treturn ( inst ? this._getDate( inst ) : null );\r\n\t},\r\n\r\n\t/* Handle keystrokes. */\r\n\t_doKeyDown: function( event ) {\r\n\t\tvar onSelect, dateStr, sel,\r\n\t\t\tinst = $.datepicker._getInst( event.target ),\r\n\t\t\thandled = true,\r\n\t\t\tisRTL = inst.dpDiv.is( \".ui-datepicker-rtl\" );\r\n\r\n\t\tinst._keyEvent = true;\r\n\t\tif ( $.datepicker._datepickerShowing ) {\r\n\t\t\tswitch ( event.keyCode ) {\r\n\t\t\t\tcase 9: $.datepicker._hideDatepicker();\r\n\t\t\t\t\t\thandled = false;\r\n\t\t\t\t\t\tbreak; // hide on tab out\r\n\t\t\t\tcase 13: sel = $( \"td.\" + $.datepicker._dayOverClass + \":not(.\" +\r\n\t\t\t\t\t\t\t\t\t$.datepicker._currentClass + \")\", inst.dpDiv );\r\n\t\t\t\t\t\tif ( sel[ 0 ] ) {\r\n\t\t\t\t\t\t\t$.datepicker._selectDay( event.target, inst.selectedMonth, inst.selectedYear, sel[ 0 ] );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tonSelect = $.datepicker._get( inst, \"onSelect\" );\r\n\t\t\t\t\t\tif ( onSelect ) {\r\n\t\t\t\t\t\t\tdateStr = $.datepicker._formatDate( inst );\r\n\r\n\t\t\t\t\t\t\t// Trigger custom callback\r\n\t\t\t\t\t\t\tonSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t$.datepicker._hideDatepicker();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn false; // don't submit the form\r\n\t\t\t\tcase 27: $.datepicker._hideDatepicker();\r\n\t\t\t\t\t\tbreak; // hide on escape\r\n\t\t\t\tcase 33: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?\r\n\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepBigMonths\" ) :\r\n\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\r\n\t\t\t\t\t\tbreak; // previous month/year on page up/+ ctrl\r\n\t\t\t\tcase 34: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?\r\n\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepBigMonths\" ) :\r\n\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\r\n\t\t\t\t\t\tbreak; // next month/year on page down/+ ctrl\r\n\t\t\t\tcase 35: if ( event.ctrlKey || event.metaKey ) {\r\n\t\t\t\t\t\t\t$.datepicker._clearDate( event.target );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\r\n\t\t\t\t\t\tbreak; // clear on ctrl or command +end\r\n\t\t\t\tcase 36: if ( event.ctrlKey || event.metaKey ) {\r\n\t\t\t\t\t\t\t$.datepicker._gotoToday( event.target );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\r\n\t\t\t\t\t\tbreak; // current on ctrl or command +home\r\n\t\t\t\tcase 37: if ( event.ctrlKey || event.metaKey ) {\r\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( isRTL ? +1 : -1 ), \"D\" );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\r\n\r\n\t\t\t\t\t\t// -1 day on ctrl or command +left\r\n\t\t\t\t\t\tif ( event.originalEvent.altKey ) {\r\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( event.ctrlKey ?\r\n\t\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepBigMonths\" ) :\r\n\t\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// next month/year on alt +left on Mac\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\tcase 38: if ( event.ctrlKey || event.metaKey ) {\r\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, -7, \"D\" );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\r\n\t\t\t\t\t\tbreak; // -1 week on ctrl or command +up\r\n\t\t\t\tcase 39: if ( event.ctrlKey || event.metaKey ) {\r\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( isRTL ? -1 : +1 ), \"D\" );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\r\n\r\n\t\t\t\t\t\t// +1 day on ctrl or command +right\r\n\t\t\t\t\t\tif ( event.originalEvent.altKey ) {\r\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( event.ctrlKey ?\r\n\t\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepBigMonths\" ) :\r\n\t\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// next month/year on alt +right\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\tcase 40: if ( event.ctrlKey || event.metaKey ) {\r\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, +7, \"D\" );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\r\n\t\t\t\t\t\tbreak; // +1 week on ctrl or command +down\r\n\t\t\t\tdefault: handled = false;\r\n\t\t\t}\r\n\t\t} else if ( event.keyCode === 36 && event.ctrlKey ) { // display the date picker on ctrl+home\r\n\t\t\t$.datepicker._showDatepicker( this );\r\n\t\t} else {\r\n\t\t\thandled = false;\r\n\t\t}\r\n\r\n\t\tif ( handled ) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tevent.stopPropagation();\r\n\t\t}\r\n\t},\r\n\r\n\t/* Filter entered characters - based on date format. */\r\n\t_doKeyPress: function( event ) {\r\n\t\tvar chars, chr,\r\n\t\t\tinst = $.datepicker._getInst( event.target );\r\n\r\n\t\tif ( $.datepicker._get( inst, \"constrainInput\" ) ) {\r\n\t\t\tchars = $.datepicker._possibleChars( $.datepicker._get( inst, \"dateFormat\" ) );\r\n\t\t\tchr = String.fromCharCode( event.charCode == null ? event.keyCode : event.charCode );\r\n\t\t\treturn event.ctrlKey || event.metaKey || ( chr < \" \" || !chars || chars.indexOf( chr ) > -1 );\r\n\t\t}\r\n\t},\r\n\r\n\t/* Synchronise manual entry and field/alternate field. */\r\n\t_doKeyUp: function( event ) {\r\n\t\tvar date,\r\n\t\t\tinst = $.datepicker._getInst( event.target );\r\n\r\n\t\tif ( inst.input.val() !== inst.lastVal ) {\r\n\t\t\ttry {\r\n\t\t\t\tdate = $.datepicker.parseDate( $.datepicker._get( inst, \"dateFormat\" ),\r\n\t\t\t\t\t( inst.input ? inst.input.val() : null ),\r\n\t\t\t\t\t$.datepicker._getFormatConfig( inst ) );\r\n\r\n\t\t\t\tif ( date ) { // only if valid\r\n\t\t\t\t\t$.datepicker._setDateFromField( inst );\r\n\t\t\t\t\t$.datepicker._updateAlternate( inst );\r\n\t\t\t\t\t$.datepicker._updateDatepicker( inst );\r\n\t\t\t\t}\r\n\t\t\t} catch ( err ) {\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/* Pop-up the date picker for a given input field.\r\n\t * If false returned from beforeShow event handler do not show.\r\n\t * @param  input  element - the input field attached to the date picker or\r\n\t *\t\t\t\t\tevent - if triggered by focus\r\n\t */\r\n\t_showDatepicker: function( input ) {\r\n\t\tinput = input.target || input;\r\n\t\tif ( input.nodeName.toLowerCase() !== \"input\" ) { // find from button/image trigger\r\n\t\t\tinput = $( \"input\", input.parentNode )[ 0 ];\r\n\t\t}\r\n\r\n\t\tif ( $.datepicker._isDisabledDatepicker( input ) || $.datepicker._lastInput === input ) { // already here\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar inst, beforeShow, beforeShowSettings, isFixed,\r\n\t\t\toffset, showAnim, duration;\r\n\r\n\t\tinst = $.datepicker._getInst( input );\r\n\t\tif ( $.datepicker._curInst && $.datepicker._curInst !== inst ) {\r\n\t\t\t$.datepicker._curInst.dpDiv.stop( true, true );\r\n\t\t\tif ( inst && $.datepicker._datepickerShowing ) {\r\n\t\t\t\t$.datepicker._hideDatepicker( $.datepicker._curInst.input[ 0 ] );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tbeforeShow = $.datepicker._get( inst, \"beforeShow\" );\r\n\t\tbeforeShowSettings = beforeShow ? beforeShow.apply( input, [ input, inst ] ) : {};\r\n\t\tif ( beforeShowSettings === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tdatepicker_extendRemove( inst.settings, beforeShowSettings );\r\n\r\n\t\tinst.lastVal = null;\r\n\t\t$.datepicker._lastInput = input;\r\n\t\t$.datepicker._setDateFromField( inst );\r\n\r\n\t\tif ( $.datepicker._inDialog ) { // hide cursor\r\n\t\t\tinput.value = \"\";\r\n\t\t}\r\n\t\tif ( !$.datepicker._pos ) { // position below input\r\n\t\t\t$.datepicker._pos = $.datepicker._findPos( input );\r\n\t\t\t$.datepicker._pos[ 1 ] += input.offsetHeight; // add the height\r\n\t\t}\r\n\r\n\t\tisFixed = false;\r\n\t\t$( input ).parents().each( function() {\r\n\t\t\tisFixed |= $( this ).css( \"position\" ) === \"fixed\";\r\n\t\t\treturn !isFixed;\r\n\t\t} );\r\n\r\n\t\toffset = { left: $.datepicker._pos[ 0 ], top: $.datepicker._pos[ 1 ] };\r\n\t\t$.datepicker._pos = null;\r\n\r\n\t\t//to avoid flashes on Firefox\r\n\t\tinst.dpDiv.empty();\r\n\r\n\t\t// determine sizing offscreen\r\n\t\tinst.dpDiv.css( { position: \"absolute\", display: \"block\", top: \"-1000px\" } );\r\n\t\t$.datepicker._updateDatepicker( inst );\r\n\r\n\t\t// fix width for dynamic number of date pickers\r\n\t\t// and adjust position before showing\r\n\t\toffset = $.datepicker._checkOffset( inst, offset, isFixed );\r\n\t\tinst.dpDiv.css( { position: ( $.datepicker._inDialog && $.blockUI ?\r\n\t\t\t\"static\" : ( isFixed ? \"fixed\" : \"absolute\" ) ), display: \"none\",\r\n\t\t\tleft: offset.left + \"px\", top: offset.top + \"px\" } );\r\n\r\n\t\tif ( !inst.inline ) {\r\n\t\t\tshowAnim = $.datepicker._get( inst, \"showAnim\" );\r\n\t\t\tduration = $.datepicker._get( inst, \"duration\" );\r\n\t\t\tinst.dpDiv.css( \"z-index\", datepicker_getZindex( $( input ) ) + 1 );\r\n\t\t\t$.datepicker._datepickerShowing = true;\r\n\r\n\t\t\tif ( $.effects && $.effects.effect[ showAnim ] ) {\r\n\t\t\t\tinst.dpDiv.show( showAnim, $.datepicker._get( inst, \"showOptions\" ), duration );\r\n\t\t\t} else {\r\n\t\t\t\tinst.dpDiv[ showAnim || \"show\" ]( showAnim ? duration : null );\r\n\t\t\t}\r\n\r\n\t\t\tif ( $.datepicker._shouldFocusInput( inst ) ) {\r\n\t\t\t\tinst.input.trigger( \"focus\" );\r\n\t\t\t}\r\n\r\n\t\t\t$.datepicker._curInst = inst;\r\n\t\t}\r\n\t},\r\n\r\n\t/* Generate the date picker content. */\r\n\t_updateDatepicker: function( inst ) {\r\n\t\tthis.maxRows = 4; //Reset the max number of rows being displayed (see #7043)\r\n\t\tdatepicker_instActive = inst; // for delegate hover events\r\n\t\tinst.dpDiv.empty().append( this._generateHTML( inst ) );\r\n\t\tthis._attachHandlers( inst );\r\n\r\n\t\tvar origyearshtml,\r\n\t\t\tnumMonths = this._getNumberOfMonths( inst ),\r\n\t\t\tcols = numMonths[ 1 ],\r\n\t\t\twidth = 17,\r\n\t\t\tactiveCell = inst.dpDiv.find( \".\" + this._dayOverClass + \" a\" ),\r\n\t\t\tonUpdateDatepicker = $.datepicker._get( inst, \"onUpdateDatepicker\" );\r\n\r\n\t\tif ( activeCell.length > 0 ) {\r\n\t\t\tdatepicker_handleMouseover.apply( activeCell.get( 0 ) );\r\n\t\t}\r\n\r\n\t\tinst.dpDiv.removeClass( \"ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4\" ).width( \"\" );\r\n\t\tif ( cols > 1 ) {\r\n\t\t\tinst.dpDiv.addClass( \"ui-datepicker-multi-\" + cols ).css( \"width\", ( width * cols ) + \"em\" );\r\n\t\t}\r\n\t\tinst.dpDiv[ ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ? \"add\" : \"remove\" ) +\r\n\t\t\t\"Class\" ]( \"ui-datepicker-multi\" );\r\n\t\tinst.dpDiv[ ( this._get( inst, \"isRTL\" ) ? \"add\" : \"remove\" ) +\r\n\t\t\t\"Class\" ]( \"ui-datepicker-rtl\" );\r\n\r\n\t\tif ( inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {\r\n\t\t\tinst.input.trigger( \"focus\" );\r\n\t\t}\r\n\r\n\t\t// Deffered render of the years select (to avoid flashes on Firefox)\r\n\t\tif ( inst.yearshtml ) {\r\n\t\t\torigyearshtml = inst.yearshtml;\r\n\t\t\tsetTimeout( function() {\r\n\r\n\t\t\t\t//assure that inst.yearshtml didn't change.\r\n\t\t\t\tif ( origyearshtml === inst.yearshtml && inst.yearshtml ) {\r\n\t\t\t\t\tinst.dpDiv.find( \"select.ui-datepicker-year\" ).first().replaceWith( inst.yearshtml );\r\n\t\t\t\t}\r\n\t\t\t\torigyearshtml = inst.yearshtml = null;\r\n\t\t\t}, 0 );\r\n\t\t}\r\n\r\n\t\tif ( onUpdateDatepicker ) {\r\n\t\t\tonUpdateDatepicker.apply( ( inst.input ? inst.input[ 0 ] : null ), [ inst ] );\r\n\t\t}\r\n\t},\r\n\r\n\t_shouldFocusInput: function( inst ) {\r\n\t\treturn inst.input && inst.input.is( \":visible\" ) && !inst.input.is( \":disabled\" );\r\n\t},\r\n\r\n\t/* Check positioning to remain on screen. */\r\n\t_checkOffset: function( inst, offset, isFixed ) {\r\n\t\tvar dpWidth = inst.dpDiv.outerWidth(),\r\n\t\t\tdpHeight = inst.dpDiv.outerHeight(),\r\n\t\t\tinputWidth = inst.input ? inst.input.outerWidth() : 0,\r\n\t\t\tinputHeight = inst.input ? inst.input.outerHeight() : 0,\r\n\t\t\tviewWidth = document.documentElement.clientWidth + ( isFixed ? 0 : $( document ).scrollLeft() ),\r\n\t\t\tviewHeight = document.documentElement.clientHeight + ( isFixed ? 0 : $( document ).scrollTop() );\r\n\r\n\t\toffset.left -= ( this._get( inst, \"isRTL\" ) ? ( dpWidth - inputWidth ) : 0 );\r\n\t\toffset.left -= ( isFixed && offset.left === inst.input.offset().left ) ? $( document ).scrollLeft() : 0;\r\n\t\toffset.top -= ( isFixed && offset.top === ( inst.input.offset().top + inputHeight ) ) ? $( document ).scrollTop() : 0;\r\n\r\n\t\t// Now check if datepicker is showing outside window viewport - move to a better place if so.\r\n\t\toffset.left -= Math.min( offset.left, ( offset.left + dpWidth > viewWidth && viewWidth > dpWidth ) ?\r\n\t\t\tMath.abs( offset.left + dpWidth - viewWidth ) : 0 );\r\n\t\toffset.top -= Math.min( offset.top, ( offset.top + dpHeight > viewHeight && viewHeight > dpHeight ) ?\r\n\t\t\tMath.abs( dpHeight + inputHeight ) : 0 );\r\n\r\n\t\treturn offset;\r\n\t},\r\n\r\n\t/* Find an object's position on the screen. */\r\n\t_findPos: function( obj ) {\r\n\t\tvar position,\r\n\t\t\tinst = this._getInst( obj ),\r\n\t\t\tisRTL = this._get( inst, \"isRTL\" );\r\n\r\n\t\twhile ( obj && ( obj.type === \"hidden\" || obj.nodeType !== 1 || $.expr.pseudos.hidden( obj ) ) ) {\r\n\t\t\tobj = obj[ isRTL ? \"previousSibling\" : \"nextSibling\" ];\r\n\t\t}\r\n\r\n\t\tposition = $( obj ).offset();\r\n\t\treturn [ position.left, position.top ];\r\n\t},\r\n\r\n\t/* Hide the date picker from view.\r\n\t * @param  input  element - the input field attached to the date picker\r\n\t */\r\n\t_hideDatepicker: function( input ) {\r\n\t\tvar showAnim, duration, postProcess, onClose,\r\n\t\t\tinst = this._curInst;\r\n\r\n\t\tif ( !inst || ( input && inst !== $.data( input, \"datepicker\" ) ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( this._datepickerShowing ) {\r\n\t\t\tshowAnim = this._get( inst, \"showAnim\" );\r\n\t\t\tduration = this._get( inst, \"duration\" );\r\n\t\t\tpostProcess = function() {\r\n\t\t\t\t$.datepicker._tidyDialog( inst );\r\n\t\t\t};\r\n\r\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] ) ) {\r\n\t\t\t\tinst.dpDiv.hide( showAnim, $.datepicker._get( inst, \"showOptions\" ), duration, postProcess );\r\n\t\t\t} else {\r\n\t\t\t\tinst.dpDiv[ ( showAnim === \"slideDown\" ? \"slideUp\" :\r\n\t\t\t\t\t( showAnim === \"fadeIn\" ? \"fadeOut\" : \"hide\" ) ) ]( ( showAnim ? duration : null ), postProcess );\r\n\t\t\t}\r\n\r\n\t\t\tif ( !showAnim ) {\r\n\t\t\t\tpostProcess();\r\n\t\t\t}\r\n\t\t\tthis._datepickerShowing = false;\r\n\r\n\t\t\tonClose = this._get( inst, \"onClose\" );\r\n\t\t\tif ( onClose ) {\r\n\t\t\t\tonClose.apply( ( inst.input ? inst.input[ 0 ] : null ), [ ( inst.input ? inst.input.val() : \"\" ), inst ] );\r\n\t\t\t}\r\n\r\n\t\t\tthis._lastInput = null;\r\n\t\t\tif ( this._inDialog ) {\r\n\t\t\t\tthis._dialogInput.css( { position: \"absolute\", left: \"0\", top: \"-100px\" } );\r\n\t\t\t\tif ( $.blockUI ) {\r\n\t\t\t\t\t$.unblockUI();\r\n\t\t\t\t\t$( \"body\" ).append( this.dpDiv );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis._inDialog = false;\r\n\t\t}\r\n\t},\r\n\r\n\t/* Tidy up after a dialog display. */\r\n\t_tidyDialog: function( inst ) {\r\n\t\tinst.dpDiv.removeClass( this._dialogClass ).off( \".ui-datepicker-calendar\" );\r\n\t},\r\n\r\n\t/* Close date picker if clicked elsewhere. */\r\n\t_checkExternalClick: function( event ) {\r\n\t\tif ( !$.datepicker._curInst ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar $target = $( event.target ),\r\n\t\t\tinst = $.datepicker._getInst( $target[ 0 ] );\r\n\r\n\t\tif ( ( ( $target[ 0 ].id !== $.datepicker._mainDivId &&\r\n\t\t\t\t$target.parents( \"#\" + $.datepicker._mainDivId ).length === 0 &&\r\n\t\t\t\t!$target.hasClass( $.datepicker.markerClassName ) &&\r\n\t\t\t\t!$target.closest( \".\" + $.datepicker._triggerClass ).length &&\r\n\t\t\t\t$.datepicker._datepickerShowing && !( $.datepicker._inDialog && $.blockUI ) ) ) ||\r\n\t\t\t( $target.hasClass( $.datepicker.markerClassName ) && $.datepicker._curInst !== inst ) ) {\r\n\t\t\t\t$.datepicker._hideDatepicker();\r\n\t\t}\r\n\t},\r\n\r\n\t/* Adjust one of the date sub-fields. */\r\n\t_adjustDate: function( id, offset, period ) {\r\n\t\tvar target = $( id ),\r\n\t\t\tinst = this._getInst( target[ 0 ] );\r\n\r\n\t\tif ( this._isDisabledDatepicker( target[ 0 ] ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._adjustInstDate( inst, offset, period );\r\n\t\tthis._updateDatepicker( inst );\r\n\t},\r\n\r\n\t/* Action for current link. */\r\n\t_gotoToday: function( id ) {\r\n\t\tvar date,\r\n\t\t\ttarget = $( id ),\r\n\t\t\tinst = this._getInst( target[ 0 ] );\r\n\r\n\t\tif ( this._get( inst, \"gotoCurrent\" ) && inst.currentDay ) {\r\n\t\t\tinst.selectedDay = inst.currentDay;\r\n\t\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth;\r\n\t\t\tinst.drawYear = inst.selectedYear = inst.currentYear;\r\n\t\t} else {\r\n\t\t\tdate = new Date();\r\n\t\t\tinst.selectedDay = date.getDate();\r\n\t\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\r\n\t\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\r\n\t\t}\r\n\t\tthis._notifyChange( inst );\r\n\t\tthis._adjustDate( target );\r\n\t},\r\n\r\n\t/* Action for selecting a new month/year. */\r\n\t_selectMonthYear: function( id, select, period ) {\r\n\t\tvar target = $( id ),\r\n\t\t\tinst = this._getInst( target[ 0 ] );\r\n\r\n\t\tinst[ \"selected\" + ( period === \"M\" ? \"Month\" : \"Year\" ) ] =\r\n\t\tinst[ \"draw\" + ( period === \"M\" ? \"Month\" : \"Year\" ) ] =\r\n\t\t\tparseInt( select.options[ select.selectedIndex ].value, 10 );\r\n\r\n\t\tthis._notifyChange( inst );\r\n\t\tthis._adjustDate( target );\r\n\t},\r\n\r\n\t/* Action for selecting a day. */\r\n\t_selectDay: function( id, month, year, td ) {\r\n\t\tvar inst,\r\n\t\t\ttarget = $( id );\r\n\r\n\t\tif ( $( td ).hasClass( this._unselectableClass ) || this._isDisabledDatepicker( target[ 0 ] ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tinst = this._getInst( target[ 0 ] );\r\n\t\tinst.selectedDay = inst.currentDay = parseInt( $( \"a\", td ).attr( \"data-date\" ) );\r\n\t\tinst.selectedMonth = inst.currentMonth = month;\r\n\t\tinst.selectedYear = inst.currentYear = year;\r\n\t\tthis._selectDate( id, this._formatDate( inst,\r\n\t\t\tinst.currentDay, inst.currentMonth, inst.currentYear ) );\r\n\t},\r\n\r\n\t/* Erase the input field and hide the date picker. */\r\n\t_clearDate: function( id ) {\r\n\t\tvar target = $( id );\r\n\t\tthis._selectDate( target, \"\" );\r\n\t},\r\n\r\n\t/* Update the input field with the selected date. */\r\n\t_selectDate: function( id, dateStr ) {\r\n\t\tvar onSelect,\r\n\t\t\ttarget = $( id ),\r\n\t\t\tinst = this._getInst( target[ 0 ] );\r\n\r\n\t\tdateStr = ( dateStr != null ? dateStr : this._formatDate( inst ) );\r\n\t\tif ( inst.input ) {\r\n\t\t\tinst.input.val( dateStr );\r\n\t\t}\r\n\t\tthis._updateAlternate( inst );\r\n\r\n\t\tonSelect = this._get( inst, \"onSelect\" );\r\n\t\tif ( onSelect ) {\r\n\t\t\tonSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );  // trigger custom callback\r\n\t\t} else if ( inst.input ) {\r\n\t\t\tinst.input.trigger( \"change\" ); // fire the change event\r\n\t\t}\r\n\r\n\t\tif ( inst.inline ) {\r\n\t\t\tthis._updateDatepicker( inst );\r\n\t\t} else {\r\n\t\t\tthis._hideDatepicker();\r\n\t\t\tthis._lastInput = inst.input[ 0 ];\r\n\t\t\tif ( typeof( inst.input[ 0 ] ) !== \"object\" ) {\r\n\t\t\t\tinst.input.trigger( \"focus\" ); // restore focus\r\n\t\t\t}\r\n\t\t\tthis._lastInput = null;\r\n\t\t}\r\n\t},\r\n\r\n\t/* Update any alternate field to synchronise with the main field. */\r\n\t_updateAlternate: function( inst ) {\r\n\t\tvar altFormat, date, dateStr,\r\n\t\t\taltField = this._get( inst, \"altField\" );\r\n\r\n\t\tif ( altField ) { // update alternate field too\r\n\t\t\taltFormat = this._get( inst, \"altFormat\" ) || this._get( inst, \"dateFormat\" );\r\n\t\t\tdate = this._getDate( inst );\r\n\t\t\tdateStr = this.formatDate( altFormat, date, this._getFormatConfig( inst ) );\r\n\t\t\t$( document ).find( altField ).val( dateStr );\r\n\t\t}\r\n\t},\r\n\r\n\t/* Set as beforeShowDay function to prevent selection of weekends.\r\n\t * @param  date  Date - the date to customise\r\n\t * @return [boolean, string] - is this date selectable?, what is its CSS class?\r\n\t */\r\n\tnoWeekends: function( date ) {\r\n\t\tvar day = date.getDay();\r\n\t\treturn [ ( day > 0 && day < 6 ), \"\" ];\r\n\t},\r\n\r\n\t/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.\r\n\t * @param  date  Date - the date to get the week for\r\n\t * @return  number - the number of the week within the year that contains this date\r\n\t */\r\n\tiso8601Week: function( date ) {\r\n\t\tvar time,\r\n\t\t\tcheckDate = new Date( date.getTime() );\r\n\r\n\t\t// Find Thursday of this week starting on Monday\r\n\t\tcheckDate.setDate( checkDate.getDate() + 4 - ( checkDate.getDay() || 7 ) );\r\n\r\n\t\ttime = checkDate.getTime();\r\n\t\tcheckDate.setMonth( 0 ); // Compare with Jan 1\r\n\t\tcheckDate.setDate( 1 );\r\n\t\treturn Math.floor( Math.round( ( time - checkDate ) / 86400000 ) / 7 ) + 1;\r\n\t},\r\n\r\n\t/* Parse a string value into a date object.\r\n\t * See formatDate below for the possible formats.\r\n\t *\r\n\t * @param  format string - the expected format of the date\r\n\t * @param  value string - the date in the above format\r\n\t * @param  settings Object - attributes include:\r\n\t *\t\t\t\t\tshortYearCutoff  number - the cutoff year for determining the century (optional)\r\n\t *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\r\n\t *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\r\n\t *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\r\n\t *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\r\n\t * @return  Date - the extracted date value or null if value is blank\r\n\t */\r\n\tparseDate: function( format, value, settings ) {\r\n\t\tif ( format == null || value == null ) {\r\n\t\t\tthrow \"Invalid arguments\";\r\n\t\t}\r\n\r\n\t\tvalue = ( typeof value === \"object\" ? value.toString() : value + \"\" );\r\n\t\tif ( value === \"\" ) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tvar iFormat, dim, extra,\r\n\t\t\tiValue = 0,\r\n\t\t\tshortYearCutoffTemp = ( settings ? settings.shortYearCutoff : null ) || this._defaults.shortYearCutoff,\r\n\t\t\tshortYearCutoff = ( typeof shortYearCutoffTemp !== \"string\" ? shortYearCutoffTemp :\r\n\t\t\t\tnew Date().getFullYear() % 100 + parseInt( shortYearCutoffTemp, 10 ) ),\r\n\t\t\tdayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,\r\n\t\t\tdayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,\r\n\t\t\tmonthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,\r\n\t\t\tmonthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,\r\n\t\t\tyear = -1,\r\n\t\t\tmonth = -1,\r\n\t\t\tday = -1,\r\n\t\t\tdoy = -1,\r\n\t\t\tliteral = false,\r\n\t\t\tdate,\r\n\r\n\t\t\t// Check whether a format character is doubled\r\n\t\t\tlookAhead = function( match ) {\r\n\t\t\t\tvar matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );\r\n\t\t\t\tif ( matches ) {\r\n\t\t\t\t\tiFormat++;\r\n\t\t\t\t}\r\n\t\t\t\treturn matches;\r\n\t\t\t},\r\n\r\n\t\t\t// Extract a number from the string value\r\n\t\t\tgetNumber = function( match ) {\r\n\t\t\t\tvar isDoubled = lookAhead( match ),\r\n\t\t\t\t\tsize = ( match === \"@\" ? 14 : ( match === \"!\" ? 20 :\r\n\t\t\t\t\t( match === \"y\" && isDoubled ? 4 : ( match === \"o\" ? 3 : 2 ) ) ) ),\r\n\t\t\t\t\tminSize = ( match === \"y\" ? size : 1 ),\r\n\t\t\t\t\tdigits = new RegExp( \"^\\\\d{\" + minSize + \",\" + size + \"}\" ),\r\n\t\t\t\t\tnum = value.substring( iValue ).match( digits );\r\n\t\t\t\tif ( !num ) {\r\n\t\t\t\t\tthrow \"Missing number at position \" + iValue;\r\n\t\t\t\t}\r\n\t\t\t\tiValue += num[ 0 ].length;\r\n\t\t\t\treturn parseInt( num[ 0 ], 10 );\r\n\t\t\t},\r\n\r\n\t\t\t// Extract a name from the string value and convert to an index\r\n\t\t\tgetName = function( match, shortNames, longNames ) {\r\n\t\t\t\tvar index = -1,\r\n\t\t\t\t\tnames = $.map( lookAhead( match ) ? longNames : shortNames, function( v, k ) {\r\n\t\t\t\t\t\treturn [ [ k, v ] ];\r\n\t\t\t\t\t} ).sort( function( a, b ) {\r\n\t\t\t\t\t\treturn -( a[ 1 ].length - b[ 1 ].length );\r\n\t\t\t\t\t} );\r\n\r\n\t\t\t\t$.each( names, function( i, pair ) {\r\n\t\t\t\t\tvar name = pair[ 1 ];\r\n\t\t\t\t\tif ( value.substr( iValue, name.length ).toLowerCase() === name.toLowerCase() ) {\r\n\t\t\t\t\t\tindex = pair[ 0 ];\r\n\t\t\t\t\t\tiValue += name.length;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t\tif ( index !== -1 ) {\r\n\t\t\t\t\treturn index + 1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow \"Unknown name at position \" + iValue;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t// Confirm that a literal character matches the string value\r\n\t\t\tcheckLiteral = function() {\r\n\t\t\t\tif ( value.charAt( iValue ) !== format.charAt( iFormat ) ) {\r\n\t\t\t\t\tthrow \"Unexpected literal at position \" + iValue;\r\n\t\t\t\t}\r\n\t\t\t\tiValue++;\r\n\t\t\t};\r\n\r\n\t\tfor ( iFormat = 0; iFormat < format.length; iFormat++ ) {\r\n\t\t\tif ( literal ) {\r\n\t\t\t\tif ( format.charAt( iFormat ) === \"'\" && !lookAhead( \"'\" ) ) {\r\n\t\t\t\t\tliteral = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcheckLiteral();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tswitch ( format.charAt( iFormat ) ) {\r\n\t\t\t\t\tcase \"d\":\r\n\t\t\t\t\t\tday = getNumber( \"d\" );\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"D\":\r\n\t\t\t\t\t\tgetName( \"D\", dayNamesShort, dayNames );\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"o\":\r\n\t\t\t\t\t\tdoy = getNumber( \"o\" );\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"m\":\r\n\t\t\t\t\t\tmonth = getNumber( \"m\" );\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"M\":\r\n\t\t\t\t\t\tmonth = getName( \"M\", monthNamesShort, monthNames );\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"y\":\r\n\t\t\t\t\t\tyear = getNumber( \"y\" );\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"@\":\r\n\t\t\t\t\t\tdate = new Date( getNumber( \"@\" ) );\r\n\t\t\t\t\t\tyear = date.getFullYear();\r\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\r\n\t\t\t\t\t\tday = date.getDate();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"!\":\r\n\t\t\t\t\t\tdate = new Date( ( getNumber( \"!\" ) - this._ticksTo1970 ) / 10000 );\r\n\t\t\t\t\t\tyear = date.getFullYear();\r\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\r\n\t\t\t\t\t\tday = date.getDate();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"'\":\r\n\t\t\t\t\t\tif ( lookAhead( \"'\" ) ) {\r\n\t\t\t\t\t\t\tcheckLiteral();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tliteral = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tcheckLiteral();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( iValue < value.length ) {\r\n\t\t\textra = value.substr( iValue );\r\n\t\t\tif ( !/^\\s+/.test( extra ) ) {\r\n\t\t\t\tthrow \"Extra/unparsed characters found in date: \" + extra;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( year === -1 ) {\r\n\t\t\tyear = new Date().getFullYear();\r\n\t\t} else if ( year < 100 ) {\r\n\t\t\tyear += new Date().getFullYear() - new Date().getFullYear() % 100 +\r\n\t\t\t\t( year <= shortYearCutoff ? 0 : -100 );\r\n\t\t}\r\n\r\n\t\tif ( doy > -1 ) {\r\n\t\t\tmonth = 1;\r\n\t\t\tday = doy;\r\n\t\t\tdo {\r\n\t\t\t\tdim = this._getDaysInMonth( year, month - 1 );\r\n\t\t\t\tif ( day <= dim ) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tmonth++;\r\n\t\t\t\tday -= dim;\r\n\t\t\t} while ( true );\r\n\t\t}\r\n\r\n\t\tdate = this._daylightSavingAdjust( new Date( year, month - 1, day ) );\r\n\t\tif ( date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day ) {\r\n\t\t\tthrow \"Invalid date\"; // E.g. 31/02/00\r\n\t\t}\r\n\t\treturn date;\r\n\t},\r\n\r\n\t/* Standard date formats. */\r\n\tATOM: \"yy-mm-dd\", // RFC 3339 (ISO 8601)\r\n\tCOOKIE: \"D, dd M yy\",\r\n\tISO_8601: \"yy-mm-dd\",\r\n\tRFC_822: \"D, d M y\",\r\n\tRFC_850: \"DD, dd-M-y\",\r\n\tRFC_1036: \"D, d M y\",\r\n\tRFC_1123: \"D, d M yy\",\r\n\tRFC_2822: \"D, d M yy\",\r\n\tRSS: \"D, d M y\", // RFC 822\r\n\tTICKS: \"!\",\r\n\tTIMESTAMP: \"@\",\r\n\tW3C: \"yy-mm-dd\", // ISO 8601\r\n\r\n\t_ticksTo1970: ( ( ( 1970 - 1 ) * 365 + Math.floor( 1970 / 4 ) - Math.floor( 1970 / 100 ) +\r\n\t\tMath.floor( 1970 / 400 ) ) * 24 * 60 * 60 * 10000000 ),\r\n\r\n\t/* Format a date object into a string value.\r\n\t * The format can be combinations of the following:\r\n\t * d  - day of month (no leading zero)\r\n\t * dd - day of month (two digit)\r\n\t * o  - day of year (no leading zeros)\r\n\t * oo - day of year (three digit)\r\n\t * D  - day name short\r\n\t * DD - day name long\r\n\t * m  - month of year (no leading zero)\r\n\t * mm - month of year (two digit)\r\n\t * M  - month name short\r\n\t * MM - month name long\r\n\t * y  - year (two digit)\r\n\t * yy - year (four digit)\r\n\t * @ - Unix timestamp (ms since 01/01/1970)\r\n\t * ! - Windows ticks (100ns since 01/01/0001)\r\n\t * \"...\" - literal text\r\n\t * '' - single quote\r\n\t *\r\n\t * @param  format string - the desired format of the date\r\n\t * @param  date Date - the date value to format\r\n\t * @param  settings Object - attributes include:\r\n\t *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\r\n\t *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\r\n\t *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\r\n\t *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\r\n\t * @return  string - the date in the above format\r\n\t */\r\n\tformatDate: function( format, date, settings ) {\r\n\t\tif ( !date ) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tvar iFormat,\r\n\t\t\tdayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,\r\n\t\t\tdayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,\r\n\t\t\tmonthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,\r\n\t\t\tmonthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,\r\n\r\n\t\t\t// Check whether a format character is doubled\r\n\t\t\tlookAhead = function( match ) {\r\n\t\t\t\tvar matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );\r\n\t\t\t\tif ( matches ) {\r\n\t\t\t\t\tiFormat++;\r\n\t\t\t\t}\r\n\t\t\t\treturn matches;\r\n\t\t\t},\r\n\r\n\t\t\t// Format a number, with leading zero if necessary\r\n\t\t\tformatNumber = function( match, value, len ) {\r\n\t\t\t\tvar num = \"\" + value;\r\n\t\t\t\tif ( lookAhead( match ) ) {\r\n\t\t\t\t\twhile ( num.length < len ) {\r\n\t\t\t\t\t\tnum = \"0\" + num;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn num;\r\n\t\t\t},\r\n\r\n\t\t\t// Format a name, short or long as requested\r\n\t\t\tformatName = function( match, value, shortNames, longNames ) {\r\n\t\t\t\treturn ( lookAhead( match ) ? longNames[ value ] : shortNames[ value ] );\r\n\t\t\t},\r\n\t\t\toutput = \"\",\r\n\t\t\tliteral = false;\r\n\r\n\t\tif ( date ) {\r\n\t\t\tfor ( iFormat = 0; iFormat < format.length; iFormat++ ) {\r\n\t\t\t\tif ( literal ) {\r\n\t\t\t\t\tif ( format.charAt( iFormat ) === \"'\" && !lookAhead( \"'\" ) ) {\r\n\t\t\t\t\t\tliteral = false;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\toutput += format.charAt( iFormat );\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tswitch ( format.charAt( iFormat ) ) {\r\n\t\t\t\t\t\tcase \"d\":\r\n\t\t\t\t\t\t\toutput += formatNumber( \"d\", date.getDate(), 2 );\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"D\":\r\n\t\t\t\t\t\t\toutput += formatName( \"D\", date.getDay(), dayNamesShort, dayNames );\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"o\":\r\n\t\t\t\t\t\t\toutput += formatNumber( \"o\",\r\n\t\t\t\t\t\t\t\tMath.round( ( new Date( date.getFullYear(), date.getMonth(), date.getDate() ).getTime() - new Date( date.getFullYear(), 0, 0 ).getTime() ) / 86400000 ), 3 );\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"m\":\r\n\t\t\t\t\t\t\toutput += formatNumber( \"m\", date.getMonth() + 1, 2 );\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"M\":\r\n\t\t\t\t\t\t\toutput += formatName( \"M\", date.getMonth(), monthNamesShort, monthNames );\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"y\":\r\n\t\t\t\t\t\t\toutput += ( lookAhead( \"y\" ) ? date.getFullYear() :\r\n\t\t\t\t\t\t\t\t( date.getFullYear() % 100 < 10 ? \"0\" : \"\" ) + date.getFullYear() % 100 );\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"@\":\r\n\t\t\t\t\t\t\toutput += date.getTime();\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"!\":\r\n\t\t\t\t\t\t\toutput += date.getTime() * 10000 + this._ticksTo1970;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"'\":\r\n\t\t\t\t\t\t\tif ( lookAhead( \"'\" ) ) {\r\n\t\t\t\t\t\t\t\toutput += \"'\";\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tliteral = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\toutput += format.charAt( iFormat );\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\treturn output;\r\n\t},\r\n\r\n\t/* Extract all possible characters from the date format. */\r\n\t_possibleChars: function( format ) {\r\n\t\tvar iFormat,\r\n\t\t\tchars = \"\",\r\n\t\t\tliteral = false,\r\n\r\n\t\t\t// Check whether a format character is doubled\r\n\t\t\tlookAhead = function( match ) {\r\n\t\t\t\tvar matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );\r\n\t\t\t\tif ( matches ) {\r\n\t\t\t\t\tiFormat++;\r\n\t\t\t\t}\r\n\t\t\t\treturn matches;\r\n\t\t\t};\r\n\r\n\t\tfor ( iFormat = 0; iFormat < format.length; iFormat++ ) {\r\n\t\t\tif ( literal ) {\r\n\t\t\t\tif ( format.charAt( iFormat ) === \"'\" && !lookAhead( \"'\" ) ) {\r\n\t\t\t\t\tliteral = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tchars += format.charAt( iFormat );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tswitch ( format.charAt( iFormat ) ) {\r\n\t\t\t\t\tcase \"d\": case \"m\": case \"y\": case \"@\":\r\n\t\t\t\t\t\tchars += \"0123456789\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"D\": case \"M\":\r\n\t\t\t\t\t\treturn null; // Accept anything\r\n\t\t\t\t\tcase \"'\":\r\n\t\t\t\t\t\tif ( lookAhead( \"'\" ) ) {\r\n\t\t\t\t\t\t\tchars += \"'\";\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tliteral = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tchars += format.charAt( iFormat );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn chars;\r\n\t},\r\n\r\n\t/* Get a setting value, defaulting if necessary. */\r\n\t_get: function( inst, name ) {\r\n\t\treturn inst.settings[ name ] !== undefined ?\r\n\t\t\tinst.settings[ name ] : this._defaults[ name ];\r\n\t},\r\n\r\n\t/* Parse existing date and initialise date picker. */\r\n\t_setDateFromField: function( inst, noDefault ) {\r\n\t\tif ( inst.input.val() === inst.lastVal ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar dateFormat = this._get( inst, \"dateFormat\" ),\r\n\t\t\tdates = inst.lastVal = inst.input ? inst.input.val() : null,\r\n\t\t\tdefaultDate = this._getDefaultDate( inst ),\r\n\t\t\tdate = defaultDate,\r\n\t\t\tsettings = this._getFormatConfig( inst );\r\n\r\n\t\ttry {\r\n\t\t\tdate = this.parseDate( dateFormat, dates, settings ) || defaultDate;\r\n\t\t} catch ( event ) {\r\n\t\t\tdates = ( noDefault ? \"\" : dates );\r\n\t\t}\r\n\t\tinst.selectedDay = date.getDate();\r\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\r\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\r\n\t\tinst.currentDay = ( dates ? date.getDate() : 0 );\r\n\t\tinst.currentMonth = ( dates ? date.getMonth() : 0 );\r\n\t\tinst.currentYear = ( dates ? date.getFullYear() : 0 );\r\n\t\tthis._adjustInstDate( inst );\r\n\t},\r\n\r\n\t/* Retrieve the default date shown on opening. */\r\n\t_getDefaultDate: function( inst ) {\r\n\t\treturn this._restrictMinMax( inst,\r\n\t\t\tthis._determineDate( inst, this._get( inst, \"defaultDate\" ), new Date() ) );\r\n\t},\r\n\r\n\t/* A date may be specified as an exact value or a relative one. */\r\n\t_determineDate: function( inst, date, defaultDate ) {\r\n\t\tvar offsetNumeric = function( offset ) {\r\n\t\t\t\tvar date = new Date();\r\n\t\t\t\tdate.setDate( date.getDate() + offset );\r\n\t\t\t\treturn date;\r\n\t\t\t},\r\n\t\t\toffsetString = function( offset ) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\treturn $.datepicker.parseDate( $.datepicker._get( inst, \"dateFormat\" ),\r\n\t\t\t\t\t\toffset, $.datepicker._getFormatConfig( inst ) );\r\n\t\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\t\t// Ignore\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar date = ( offset.toLowerCase().match( /^c/ ) ?\r\n\t\t\t\t\t$.datepicker._getDate( inst ) : null ) || new Date(),\r\n\t\t\t\t\tyear = date.getFullYear(),\r\n\t\t\t\t\tmonth = date.getMonth(),\r\n\t\t\t\t\tday = date.getDate(),\r\n\t\t\t\t\tpattern = /([+\\-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g,\r\n\t\t\t\t\tmatches = pattern.exec( offset );\r\n\r\n\t\t\t\twhile ( matches ) {\r\n\t\t\t\t\tswitch ( matches[ 2 ] || \"d\" ) {\r\n\t\t\t\t\t\tcase \"d\" : case \"D\" :\r\n\t\t\t\t\t\t\tday += parseInt( matches[ 1 ], 10 ); break;\r\n\t\t\t\t\t\tcase \"w\" : case \"W\" :\r\n\t\t\t\t\t\t\tday += parseInt( matches[ 1 ], 10 ) * 7; break;\r\n\t\t\t\t\t\tcase \"m\" : case \"M\" :\r\n\t\t\t\t\t\t\tmonth += parseInt( matches[ 1 ], 10 );\r\n\t\t\t\t\t\t\tday = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"y\": case \"Y\" :\r\n\t\t\t\t\t\t\tyear += parseInt( matches[ 1 ], 10 );\r\n\t\t\t\t\t\t\tday = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmatches = pattern.exec( offset );\r\n\t\t\t\t}\r\n\t\t\t\treturn new Date( year, month, day );\r\n\t\t\t},\r\n\t\t\tnewDate = ( date == null || date === \"\" ? defaultDate : ( typeof date === \"string\" ? offsetString( date ) :\r\n\t\t\t\t( typeof date === \"number\" ? ( isNaN( date ) ? defaultDate : offsetNumeric( date ) ) : new Date( date.getTime() ) ) ) );\r\n\r\n\t\tnewDate = ( newDate && newDate.toString() === \"Invalid Date\" ? defaultDate : newDate );\r\n\t\tif ( newDate ) {\r\n\t\t\tnewDate.setHours( 0 );\r\n\t\t\tnewDate.setMinutes( 0 );\r\n\t\t\tnewDate.setSeconds( 0 );\r\n\t\t\tnewDate.setMilliseconds( 0 );\r\n\t\t}\r\n\t\treturn this._daylightSavingAdjust( newDate );\r\n\t},\r\n\r\n\t/* Handle switch to/from daylight saving.\r\n\t * Hours may be non-zero on daylight saving cut-over:\r\n\t * > 12 when midnight changeover, but then cannot generate\r\n\t * midnight datetime, so jump to 1AM, otherwise reset.\r\n\t * @param  date  (Date) the date to check\r\n\t * @return  (Date) the corrected date\r\n\t */\r\n\t_daylightSavingAdjust: function( date ) {\r\n\t\tif ( !date ) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tdate.setHours( date.getHours() > 12 ? date.getHours() + 2 : 0 );\r\n\t\treturn date;\r\n\t},\r\n\r\n\t/* Set the date(s) directly. */\r\n\t_setDate: function( inst, date, noChange ) {\r\n\t\tvar clear = !date,\r\n\t\t\torigMonth = inst.selectedMonth,\r\n\t\t\torigYear = inst.selectedYear,\r\n\t\t\tnewDate = this._restrictMinMax( inst, this._determineDate( inst, date, new Date() ) );\r\n\r\n\t\tinst.selectedDay = inst.currentDay = newDate.getDate();\r\n\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();\r\n\t\tinst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();\r\n\t\tif ( ( origMonth !== inst.selectedMonth || origYear !== inst.selectedYear ) && !noChange ) {\r\n\t\t\tthis._notifyChange( inst );\r\n\t\t}\r\n\t\tthis._adjustInstDate( inst );\r\n\t\tif ( inst.input ) {\r\n\t\t\tinst.input.val( clear ? \"\" : this._formatDate( inst ) );\r\n\t\t}\r\n\t},\r\n\r\n\t/* Retrieve the date(s) directly. */\r\n\t_getDate: function( inst ) {\r\n\t\tvar startDate = ( !inst.currentYear || ( inst.input && inst.input.val() === \"\" ) ? null :\r\n\t\t\tthis._daylightSavingAdjust( new Date(\r\n\t\t\tinst.currentYear, inst.currentMonth, inst.currentDay ) ) );\r\n\t\t\treturn startDate;\r\n\t},\r\n\r\n\t/* Attach the onxxx handlers.  These are declared statically so\r\n\t * they work with static code transformers like Caja.\r\n\t */\r\n\t_attachHandlers: function( inst ) {\r\n\t\tvar stepMonths = this._get( inst, \"stepMonths\" ),\r\n\t\t\tid = \"#\" + inst.id.replace( /\\\\\\\\/g, \"\\\\\" );\r\n\t\tinst.dpDiv.find( \"[data-handler]\" ).map( function() {\r\n\t\t\tvar handler = {\r\n\t\t\t\tprev: function() {\r\n\t\t\t\t\t$.datepicker._adjustDate( id, -stepMonths, \"M\" );\r\n\t\t\t\t},\r\n\t\t\t\tnext: function() {\r\n\t\t\t\t\t$.datepicker._adjustDate( id, +stepMonths, \"M\" );\r\n\t\t\t\t},\r\n\t\t\t\thide: function() {\r\n\t\t\t\t\t$.datepicker._hideDatepicker();\r\n\t\t\t\t},\r\n\t\t\t\ttoday: function() {\r\n\t\t\t\t\t$.datepicker._gotoToday( id );\r\n\t\t\t\t},\r\n\t\t\t\tselectDay: function() {\r\n\t\t\t\t\t$.datepicker._selectDay( id, +this.getAttribute( \"data-month\" ), +this.getAttribute( \"data-year\" ), this );\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t},\r\n\t\t\t\tselectMonth: function() {\r\n\t\t\t\t\t$.datepicker._selectMonthYear( id, this, \"M\" );\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t},\r\n\t\t\t\tselectYear: function() {\r\n\t\t\t\t\t$.datepicker._selectMonthYear( id, this, \"Y\" );\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t$( this ).on( this.getAttribute( \"data-event\" ), handler[ this.getAttribute( \"data-handler\" ) ] );\r\n\t\t} );\r\n\t},\r\n\r\n\t/* Generate the HTML for the current state of the date picker. */\r\n\t_generateHTML: function( inst ) {\r\n\t\tvar maxDraw, prevText, prev, nextText, next, currentText, gotoDate,\r\n\t\t\tcontrols, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,\r\n\t\t\tmonthNames, monthNamesShort, beforeShowDay, showOtherMonths,\r\n\t\t\tselectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,\r\n\t\t\tcornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,\r\n\t\t\tprintDate, dRow, tbody, daySettings, otherMonth, unselectable,\r\n\t\t\ttempDate = new Date(),\r\n\t\t\ttoday = this._daylightSavingAdjust(\r\n\t\t\t\tnew Date( tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate() ) ), // clear time\r\n\t\t\tisRTL = this._get( inst, \"isRTL\" ),\r\n\t\t\tshowButtonPanel = this._get( inst, \"showButtonPanel\" ),\r\n\t\t\thideIfNoPrevNext = this._get( inst, \"hideIfNoPrevNext\" ),\r\n\t\t\tnavigationAsDateFormat = this._get( inst, \"navigationAsDateFormat\" ),\r\n\t\t\tnumMonths = this._getNumberOfMonths( inst ),\r\n\t\t\tshowCurrentAtPos = this._get( inst, \"showCurrentAtPos\" ),\r\n\t\t\tstepMonths = this._get( inst, \"stepMonths\" ),\r\n\t\t\tisMultiMonth = ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ),\r\n\t\t\tcurrentDate = this._daylightSavingAdjust( ( !inst.currentDay ? new Date( 9999, 9, 9 ) :\r\n\t\t\t\tnew Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) ),\r\n\t\t\tminDate = this._getMinMaxDate( inst, \"min\" ),\r\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" ),\r\n\t\t\tdrawMonth = inst.drawMonth - showCurrentAtPos,\r\n\t\t\tdrawYear = inst.drawYear;\r\n\r\n\t\tif ( drawMonth < 0 ) {\r\n\t\t\tdrawMonth += 12;\r\n\t\t\tdrawYear--;\r\n\t\t}\r\n\t\tif ( maxDate ) {\r\n\t\t\tmaxDraw = this._daylightSavingAdjust( new Date( maxDate.getFullYear(),\r\n\t\t\t\tmaxDate.getMonth() - ( numMonths[ 0 ] * numMonths[ 1 ] ) + 1, maxDate.getDate() ) );\r\n\t\t\tmaxDraw = ( minDate && maxDraw < minDate ? minDate : maxDraw );\r\n\t\t\twhile ( this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 ) ) > maxDraw ) {\r\n\t\t\t\tdrawMonth--;\r\n\t\t\t\tif ( drawMonth < 0 ) {\r\n\t\t\t\t\tdrawMonth = 11;\r\n\t\t\t\t\tdrawYear--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tinst.drawMonth = drawMonth;\r\n\t\tinst.drawYear = drawYear;\r\n\r\n\t\tprevText = this._get( inst, \"prevText\" );\r\n\t\tprevText = ( !navigationAsDateFormat ? prevText : this.formatDate( prevText,\r\n\t\t\tthis._daylightSavingAdjust( new Date( drawYear, drawMonth - stepMonths, 1 ) ),\r\n\t\t\tthis._getFormatConfig( inst ) ) );\r\n\r\n\t\tif ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ) {\r\n\t\t\tprev = $( \"<a>\" )\r\n\t\t\t\t.attr( {\r\n\t\t\t\t\t\"class\": \"ui-datepicker-prev ui-corner-all\",\r\n\t\t\t\t\t\"data-handler\": \"prev\",\r\n\t\t\t\t\t\"data-event\": \"click\",\r\n\t\t\t\t\ttitle: prevText\r\n\t\t\t\t} )\r\n\t\t\t\t.append(\r\n\t\t\t\t\t$( \"<span>\" )\r\n\t\t\t\t\t\t.addClass( \"ui-icon ui-icon-circle-triangle-\" +\r\n\t\t\t\t\t\t\t( isRTL ? \"e\" : \"w\" ) )\r\n\t\t\t\t\t\t.text( prevText )\r\n\t\t\t\t)[ 0 ].outerHTML;\r\n\t\t} else if ( hideIfNoPrevNext ) {\r\n\t\t\tprev = \"\";\r\n\t\t} else {\r\n\t\t\tprev = $( \"<a>\" )\r\n\t\t\t\t.attr( {\r\n\t\t\t\t\t\"class\": \"ui-datepicker-prev ui-corner-all ui-state-disabled\",\r\n\t\t\t\t\ttitle: prevText\r\n\t\t\t\t} )\r\n\t\t\t\t.append(\r\n\t\t\t\t\t$( \"<span>\" )\r\n\t\t\t\t\t\t.addClass( \"ui-icon ui-icon-circle-triangle-\" +\r\n\t\t\t\t\t\t\t( isRTL ? \"e\" : \"w\" ) )\r\n\t\t\t\t\t\t.text( prevText )\r\n\t\t\t\t)[ 0 ].outerHTML;\r\n\t\t}\r\n\r\n\t\tnextText = this._get( inst, \"nextText\" );\r\n\t\tnextText = ( !navigationAsDateFormat ? nextText : this.formatDate( nextText,\r\n\t\t\tthis._daylightSavingAdjust( new Date( drawYear, drawMonth + stepMonths, 1 ) ),\r\n\t\t\tthis._getFormatConfig( inst ) ) );\r\n\r\n\t\tif ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ) {\r\n\t\t\tnext = $( \"<a>\" )\r\n\t\t\t\t.attr( {\r\n\t\t\t\t\t\"class\": \"ui-datepicker-next ui-corner-all\",\r\n\t\t\t\t\t\"data-handler\": \"next\",\r\n\t\t\t\t\t\"data-event\": \"click\",\r\n\t\t\t\t\ttitle: nextText\r\n\t\t\t\t} )\r\n\t\t\t\t.append(\r\n\t\t\t\t\t$( \"<span>\" )\r\n\t\t\t\t\t\t.addClass( \"ui-icon ui-icon-circle-triangle-\" +\r\n\t\t\t\t\t\t\t( isRTL ? \"w\" : \"e\" ) )\r\n\t\t\t\t\t\t.text( nextText )\r\n\t\t\t\t)[ 0 ].outerHTML;\r\n\t\t} else if ( hideIfNoPrevNext ) {\r\n\t\t\tnext = \"\";\r\n\t\t} else {\r\n\t\t\tnext = $( \"<a>\" )\r\n\t\t\t\t.attr( {\r\n\t\t\t\t\t\"class\": \"ui-datepicker-next ui-corner-all ui-state-disabled\",\r\n\t\t\t\t\ttitle: nextText\r\n\t\t\t\t} )\r\n\t\t\t\t.append(\r\n\t\t\t\t\t$( \"<span>\" )\r\n\t\t\t\t\t\t.attr( \"class\", \"ui-icon ui-icon-circle-triangle-\" +\r\n\t\t\t\t\t\t\t( isRTL ? \"w\" : \"e\" ) )\r\n\t\t\t\t\t\t.text( nextText )\r\n\t\t\t\t)[ 0 ].outerHTML;\r\n\t\t}\r\n\r\n\t\tcurrentText = this._get( inst, \"currentText\" );\r\n\t\tgotoDate = ( this._get( inst, \"gotoCurrent\" ) && inst.currentDay ? currentDate : today );\r\n\t\tcurrentText = ( !navigationAsDateFormat ? currentText :\r\n\t\t\tthis.formatDate( currentText, gotoDate, this._getFormatConfig( inst ) ) );\r\n\r\n\t\tcontrols = \"\";\r\n\t\tif ( !inst.inline ) {\r\n\t\t\tcontrols = $( \"<button>\" )\r\n\t\t\t\t.attr( {\r\n\t\t\t\t\ttype: \"button\",\r\n\t\t\t\t\t\"class\": \"ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all\",\r\n\t\t\t\t\t\"data-handler\": \"hide\",\r\n\t\t\t\t\t\"data-event\": \"click\"\r\n\t\t\t\t} )\r\n\t\t\t\t.text( this._get( inst, \"closeText\" ) )[ 0 ].outerHTML;\r\n\t\t}\r\n\r\n\t\tbuttonPanel = \"\";\r\n\t\tif ( showButtonPanel ) {\r\n\t\t\tbuttonPanel = $( \"<div class='ui-datepicker-buttonpane ui-widget-content'>\" )\r\n\t\t\t\t.append( isRTL ? controls : \"\" )\r\n\t\t\t\t.append( this._isInRange( inst, gotoDate ) ?\r\n\t\t\t\t\t$( \"<button>\" )\r\n\t\t\t\t\t\t.attr( {\r\n\t\t\t\t\t\t\ttype: \"button\",\r\n\t\t\t\t\t\t\t\"class\": \"ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all\",\r\n\t\t\t\t\t\t\t\"data-handler\": \"today\",\r\n\t\t\t\t\t\t\t\"data-event\": \"click\"\r\n\t\t\t\t\t\t} )\r\n\t\t\t\t\t\t.text( currentText ) :\r\n\t\t\t\t\t\"\" )\r\n\t\t\t\t.append( isRTL ? \"\" : controls )[ 0 ].outerHTML;\r\n\t\t}\r\n\r\n\t\tfirstDay = parseInt( this._get( inst, \"firstDay\" ), 10 );\r\n\t\tfirstDay = ( isNaN( firstDay ) ? 0 : firstDay );\r\n\r\n\t\tshowWeek = this._get( inst, \"showWeek\" );\r\n\t\tdayNames = this._get( inst, \"dayNames\" );\r\n\t\tdayNamesMin = this._get( inst, \"dayNamesMin\" );\r\n\t\tmonthNames = this._get( inst, \"monthNames\" );\r\n\t\tmonthNamesShort = this._get( inst, \"monthNamesShort\" );\r\n\t\tbeforeShowDay = this._get( inst, \"beforeShowDay\" );\r\n\t\tshowOtherMonths = this._get( inst, \"showOtherMonths\" );\r\n\t\tselectOtherMonths = this._get( inst, \"selectOtherMonths\" );\r\n\t\tdefaultDate = this._getDefaultDate( inst );\r\n\t\thtml = \"\";\r\n\r\n\t\tfor ( row = 0; row < numMonths[ 0 ]; row++ ) {\r\n\t\t\tgroup = \"\";\r\n\t\t\tthis.maxRows = 4;\r\n\t\t\tfor ( col = 0; col < numMonths[ 1 ]; col++ ) {\r\n\t\t\t\tselectedDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, inst.selectedDay ) );\r\n\t\t\t\tcornerClass = \" ui-corner-all\";\r\n\t\t\t\tcalender = \"\";\r\n\t\t\t\tif ( isMultiMonth ) {\r\n\t\t\t\t\tcalender += \"<div class='ui-datepicker-group\";\r\n\t\t\t\t\tif ( numMonths[ 1 ] > 1 ) {\r\n\t\t\t\t\t\tswitch ( col ) {\r\n\t\t\t\t\t\t\tcase 0: calender += \" ui-datepicker-group-first\";\r\n\t\t\t\t\t\t\t\tcornerClass = \" ui-corner-\" + ( isRTL ? \"right\" : \"left\" ); break;\r\n\t\t\t\t\t\t\tcase numMonths[ 1 ] - 1: calender += \" ui-datepicker-group-last\";\r\n\t\t\t\t\t\t\t\tcornerClass = \" ui-corner-\" + ( isRTL ? \"left\" : \"right\" ); break;\r\n\t\t\t\t\t\t\tdefault: calender += \" ui-datepicker-group-middle\"; cornerClass = \"\"; break;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcalender += \"'>\";\r\n\t\t\t\t}\r\n\t\t\t\tcalender += \"<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix\" + cornerClass + \"'>\" +\r\n\t\t\t\t\t( /all|left/.test( cornerClass ) && row === 0 ? ( isRTL ? next : prev ) : \"\" ) +\r\n\t\t\t\t\t( /all|right/.test( cornerClass ) && row === 0 ? ( isRTL ? prev : next ) : \"\" ) +\r\n\t\t\t\t\tthis._generateMonthYearHeader( inst, drawMonth, drawYear, minDate, maxDate,\r\n\t\t\t\t\trow > 0 || col > 0, monthNames, monthNamesShort ) + // draw month headers\r\n\t\t\t\t\t\"</div><table class='ui-datepicker-calendar'><thead>\" +\r\n\t\t\t\t\t\"<tr>\";\r\n\t\t\t\tthead = ( showWeek ? \"<th class='ui-datepicker-week-col'>\" + this._get( inst, \"weekHeader\" ) + \"</th>\" : \"\" );\r\n\t\t\t\tfor ( dow = 0; dow < 7; dow++ ) { // days of the week\r\n\t\t\t\t\tday = ( dow + firstDay ) % 7;\r\n\t\t\t\t\tthead += \"<th scope='col'\" + ( ( dow + firstDay + 6 ) % 7 >= 5 ? \" class='ui-datepicker-week-end'\" : \"\" ) + \">\" +\r\n\t\t\t\t\t\t\"<span title='\" + dayNames[ day ] + \"'>\" + dayNamesMin[ day ] + \"</span></th>\";\r\n\t\t\t\t}\r\n\t\t\t\tcalender += thead + \"</tr></thead><tbody>\";\r\n\t\t\t\tdaysInMonth = this._getDaysInMonth( drawYear, drawMonth );\r\n\t\t\t\tif ( drawYear === inst.selectedYear && drawMonth === inst.selectedMonth ) {\r\n\t\t\t\t\tinst.selectedDay = Math.min( inst.selectedDay, daysInMonth );\r\n\t\t\t\t}\r\n\t\t\t\tleadDays = ( this._getFirstDayOfMonth( drawYear, drawMonth ) - firstDay + 7 ) % 7;\r\n\t\t\t\tcurRows = Math.ceil( ( leadDays + daysInMonth ) / 7 ); // calculate the number of rows to generate\r\n\t\t\t\tnumRows = ( isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows ); //If multiple months, use the higher number of rows (see #7043)\r\n\t\t\t\tthis.maxRows = numRows;\r\n\t\t\t\tprintDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 - leadDays ) );\r\n\t\t\t\tfor ( dRow = 0; dRow < numRows; dRow++ ) { // create date picker rows\r\n\t\t\t\t\tcalender += \"<tr>\";\r\n\t\t\t\t\ttbody = ( !showWeek ? \"\" : \"<td class='ui-datepicker-week-col'>\" +\r\n\t\t\t\t\t\tthis._get( inst, \"calculateWeek\" )( printDate ) + \"</td>\" );\r\n\t\t\t\t\tfor ( dow = 0; dow < 7; dow++ ) { // create date picker days\r\n\t\t\t\t\t\tdaySettings = ( beforeShowDay ?\r\n\t\t\t\t\t\t\tbeforeShowDay.apply( ( inst.input ? inst.input[ 0 ] : null ), [ printDate ] ) : [ true, \"\" ] );\r\n\t\t\t\t\t\totherMonth = ( printDate.getMonth() !== drawMonth );\r\n\t\t\t\t\t\tunselectable = ( otherMonth && !selectOtherMonths ) || !daySettings[ 0 ] ||\r\n\t\t\t\t\t\t\t( minDate && printDate < minDate ) || ( maxDate && printDate > maxDate );\r\n\t\t\t\t\t\ttbody += \"<td class='\" +\r\n\t\t\t\t\t\t\t( ( dow + firstDay + 6 ) % 7 >= 5 ? \" ui-datepicker-week-end\" : \"\" ) + // highlight weekends\r\n\t\t\t\t\t\t\t( otherMonth ? \" ui-datepicker-other-month\" : \"\" ) + // highlight days from other months\r\n\t\t\t\t\t\t\t( ( printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent ) || // user pressed key\r\n\t\t\t\t\t\t\t( defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime() ) ?\r\n\r\n\t\t\t\t\t\t\t// or defaultDate is current printedDate and defaultDate is selectedDate\r\n\t\t\t\t\t\t\t\" \" + this._dayOverClass : \"\" ) + // highlight selected day\r\n\t\t\t\t\t\t\t( unselectable ? \" \" + this._unselectableClass + \" ui-state-disabled\" : \"\" ) +  // highlight unselectable days\r\n\t\t\t\t\t\t\t( otherMonth && !showOtherMonths ? \"\" : \" \" + daySettings[ 1 ] + // highlight custom dates\r\n\t\t\t\t\t\t\t( printDate.getTime() === currentDate.getTime() ? \" \" + this._currentClass : \"\" ) + // highlight selected day\r\n\t\t\t\t\t\t\t( printDate.getTime() === today.getTime() ? \" ui-datepicker-today\" : \"\" ) ) + \"'\" + // highlight today (if different)\r\n\t\t\t\t\t\t\t( ( !otherMonth || showOtherMonths ) && daySettings[ 2 ] ? \" title='\" + daySettings[ 2 ].replace( /'/g, \"&#39;\" ) + \"'\" : \"\" ) + // cell title\r\n\t\t\t\t\t\t\t( unselectable ? \"\" : \" data-handler='selectDay' data-event='click' data-month='\" + printDate.getMonth() + \"' data-year='\" + printDate.getFullYear() + \"'\" ) + \">\" + // actions\r\n\t\t\t\t\t\t\t( otherMonth && !showOtherMonths ? \"&#xa0;\" : // display for other months\r\n\t\t\t\t\t\t\t( unselectable ? \"<span class='ui-state-default'>\" + printDate.getDate() + \"</span>\" : \"<a class='ui-state-default\" +\r\n\t\t\t\t\t\t\t( printDate.getTime() === today.getTime() ? \" ui-state-highlight\" : \"\" ) +\r\n\t\t\t\t\t\t\t( printDate.getTime() === currentDate.getTime() ? \" ui-state-active\" : \"\" ) + // highlight selected day\r\n\t\t\t\t\t\t\t( otherMonth ? \" ui-priority-secondary\" : \"\" ) + // distinguish dates from other months\r\n\t\t\t\t\t\t\t\"' href='#' aria-current='\" + ( printDate.getTime() === currentDate.getTime() ? \"true\" : \"false\" ) + // mark date as selected for screen reader\r\n\t\t\t\t\t\t\t\"' data-date='\" + printDate.getDate() + // store date as data\r\n\t\t\t\t\t\t\t\"'>\" + printDate.getDate() + \"</a>\" ) ) + \"</td>\"; // display selectable date\r\n\t\t\t\t\t\tprintDate.setDate( printDate.getDate() + 1 );\r\n\t\t\t\t\t\tprintDate = this._daylightSavingAdjust( printDate );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcalender += tbody + \"</tr>\";\r\n\t\t\t\t}\r\n\t\t\t\tdrawMonth++;\r\n\t\t\t\tif ( drawMonth > 11 ) {\r\n\t\t\t\t\tdrawMonth = 0;\r\n\t\t\t\t\tdrawYear++;\r\n\t\t\t\t}\r\n\t\t\t\tcalender += \"</tbody></table>\" + ( isMultiMonth ? \"</div>\" +\r\n\t\t\t\t\t\t\t( ( numMonths[ 0 ] > 0 && col === numMonths[ 1 ] - 1 ) ? \"<div class='ui-datepicker-row-break'></div>\" : \"\" ) : \"\" );\r\n\t\t\t\tgroup += calender;\r\n\t\t\t}\r\n\t\t\thtml += group;\r\n\t\t}\r\n\t\thtml += buttonPanel;\r\n\t\tinst._keyEvent = false;\r\n\t\treturn html;\r\n\t},\r\n\r\n\t/* Generate the month and year header. */\r\n\t_generateMonthYearHeader: function( inst, drawMonth, drawYear, minDate, maxDate,\r\n\t\t\tsecondary, monthNames, monthNamesShort ) {\r\n\r\n\t\tvar inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,\r\n\t\t\tchangeMonth = this._get( inst, \"changeMonth\" ),\r\n\t\t\tchangeYear = this._get( inst, \"changeYear\" ),\r\n\t\t\tshowMonthAfterYear = this._get( inst, \"showMonthAfterYear\" ),\r\n\t\t\tselectMonthLabel = this._get( inst, \"selectMonthLabel\" ),\r\n\t\t\tselectYearLabel = this._get( inst, \"selectYearLabel\" ),\r\n\t\t\thtml = \"<div class='ui-datepicker-title'>\",\r\n\t\t\tmonthHtml = \"\";\r\n\r\n\t\t// Month selection\r\n\t\tif ( secondary || !changeMonth ) {\r\n\t\t\tmonthHtml += \"<span class='ui-datepicker-month'>\" + monthNames[ drawMonth ] + \"</span>\";\r\n\t\t} else {\r\n\t\t\tinMinYear = ( minDate && minDate.getFullYear() === drawYear );\r\n\t\t\tinMaxYear = ( maxDate && maxDate.getFullYear() === drawYear );\r\n\t\t\tmonthHtml += \"<select class='ui-datepicker-month' aria-label='\" + selectMonthLabel + \"' data-handler='selectMonth' data-event='change'>\";\r\n\t\t\tfor ( month = 0; month < 12; month++ ) {\r\n\t\t\t\tif ( ( !inMinYear || month >= minDate.getMonth() ) && ( !inMaxYear || month <= maxDate.getMonth() ) ) {\r\n\t\t\t\t\tmonthHtml += \"<option value='\" + month + \"'\" +\r\n\t\t\t\t\t\t( month === drawMonth ? \" selected='selected'\" : \"\" ) +\r\n\t\t\t\t\t\t\">\" + monthNamesShort[ month ] + \"</option>\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tmonthHtml += \"</select>\";\r\n\t\t}\r\n\r\n\t\tif ( !showMonthAfterYear ) {\r\n\t\t\thtml += monthHtml + ( secondary || !( changeMonth && changeYear ) ? \"&#xa0;\" : \"\" );\r\n\t\t}\r\n\r\n\t\t// Year selection\r\n\t\tif ( !inst.yearshtml ) {\r\n\t\t\tinst.yearshtml = \"\";\r\n\t\t\tif ( secondary || !changeYear ) {\r\n\t\t\t\thtml += \"<span class='ui-datepicker-year'>\" + drawYear + \"</span>\";\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// determine range of years to display\r\n\t\t\t\tyears = this._get( inst, \"yearRange\" ).split( \":\" );\r\n\t\t\t\tthisYear = new Date().getFullYear();\r\n\t\t\t\tdetermineYear = function( value ) {\r\n\t\t\t\t\tvar year = ( value.match( /c[+\\-].*/ ) ? drawYear + parseInt( value.substring( 1 ), 10 ) :\r\n\t\t\t\t\t\t( value.match( /[+\\-].*/ ) ? thisYear + parseInt( value, 10 ) :\r\n\t\t\t\t\t\tparseInt( value, 10 ) ) );\r\n\t\t\t\t\treturn ( isNaN( year ) ? thisYear : year );\r\n\t\t\t\t};\r\n\t\t\t\tyear = determineYear( years[ 0 ] );\r\n\t\t\t\tendYear = Math.max( year, determineYear( years[ 1 ] || \"\" ) );\r\n\t\t\t\tyear = ( minDate ? Math.max( year, minDate.getFullYear() ) : year );\r\n\t\t\t\tendYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear );\r\n\t\t\t\tinst.yearshtml += \"<select class='ui-datepicker-year' aria-label='\" + selectYearLabel + \"' data-handler='selectYear' data-event='change'>\";\r\n\t\t\t\tfor ( ; year <= endYear; year++ ) {\r\n\t\t\t\t\tinst.yearshtml += \"<option value='\" + year + \"'\" +\r\n\t\t\t\t\t\t( year === drawYear ? \" selected='selected'\" : \"\" ) +\r\n\t\t\t\t\t\t\">\" + year + \"</option>\";\r\n\t\t\t\t}\r\n\t\t\t\tinst.yearshtml += \"</select>\";\r\n\r\n\t\t\t\thtml += inst.yearshtml;\r\n\t\t\t\tinst.yearshtml = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thtml += this._get( inst, \"yearSuffix\" );\r\n\t\tif ( showMonthAfterYear ) {\r\n\t\t\thtml += ( secondary || !( changeMonth && changeYear ) ? \"&#xa0;\" : \"\" ) + monthHtml;\r\n\t\t}\r\n\t\thtml += \"</div>\"; // Close datepicker_header\r\n\t\treturn html;\r\n\t},\r\n\r\n\t/* Adjust one of the date sub-fields. */\r\n\t_adjustInstDate: function( inst, offset, period ) {\r\n\t\tvar year = inst.selectedYear + ( period === \"Y\" ? offset : 0 ),\r\n\t\t\tmonth = inst.selectedMonth + ( period === \"M\" ? offset : 0 ),\r\n\t\t\tday = Math.min( inst.selectedDay, this._getDaysInMonth( year, month ) ) + ( period === \"D\" ? offset : 0 ),\r\n\t\t\tdate = this._restrictMinMax( inst, this._daylightSavingAdjust( new Date( year, month, day ) ) );\r\n\r\n\t\tinst.selectedDay = date.getDate();\r\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\r\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\r\n\t\tif ( period === \"M\" || period === \"Y\" ) {\r\n\t\t\tthis._notifyChange( inst );\r\n\t\t}\r\n\t},\r\n\r\n\t/* Ensure a date is within any min/max bounds. */\r\n\t_restrictMinMax: function( inst, date ) {\r\n\t\tvar minDate = this._getMinMaxDate( inst, \"min\" ),\r\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" ),\r\n\t\t\tnewDate = ( minDate && date < minDate ? minDate : date );\r\n\t\treturn ( maxDate && newDate > maxDate ? maxDate : newDate );\r\n\t},\r\n\r\n\t/* Notify change of month/year. */\r\n\t_notifyChange: function( inst ) {\r\n\t\tvar onChange = this._get( inst, \"onChangeMonthYear\" );\r\n\t\tif ( onChange ) {\r\n\t\t\tonChange.apply( ( inst.input ? inst.input[ 0 ] : null ),\r\n\t\t\t\t[ inst.selectedYear, inst.selectedMonth + 1, inst ] );\r\n\t\t}\r\n\t},\r\n\r\n\t/* Determine the number of months to show. */\r\n\t_getNumberOfMonths: function( inst ) {\r\n\t\tvar numMonths = this._get( inst, \"numberOfMonths\" );\r\n\t\treturn ( numMonths == null ? [ 1, 1 ] : ( typeof numMonths === \"number\" ? [ 1, numMonths ] : numMonths ) );\r\n\t},\r\n\r\n\t/* Determine the current maximum date - ensure no time components are set. */\r\n\t_getMinMaxDate: function( inst, minMax ) {\r\n\t\treturn this._determineDate( inst, this._get( inst, minMax + \"Date\" ), null );\r\n\t},\r\n\r\n\t/* Find the number of days in a given month. */\r\n\t_getDaysInMonth: function( year, month ) {\r\n\t\treturn 32 - this._daylightSavingAdjust( new Date( year, month, 32 ) ).getDate();\r\n\t},\r\n\r\n\t/* Find the day of the week of the first of a month. */\r\n\t_getFirstDayOfMonth: function( year, month ) {\r\n\t\treturn new Date( year, month, 1 ).getDay();\r\n\t},\r\n\r\n\t/* Determines if we should allow a \"next/prev\" month display change. */\r\n\t_canAdjustMonth: function( inst, offset, curYear, curMonth ) {\r\n\t\tvar numMonths = this._getNumberOfMonths( inst ),\r\n\t\t\tdate = this._daylightSavingAdjust( new Date( curYear,\r\n\t\t\tcurMonth + ( offset < 0 ? offset : numMonths[ 0 ] * numMonths[ 1 ] ), 1 ) );\r\n\r\n\t\tif ( offset < 0 ) {\r\n\t\t\tdate.setDate( this._getDaysInMonth( date.getFullYear(), date.getMonth() ) );\r\n\t\t}\r\n\t\treturn this._isInRange( inst, date );\r\n\t},\r\n\r\n\t/* Is the given date in the accepted range? */\r\n\t_isInRange: function( inst, date ) {\r\n\t\tvar yearSplit, currentYear,\r\n\t\t\tminDate = this._getMinMaxDate( inst, \"min\" ),\r\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" ),\r\n\t\t\tminYear = null,\r\n\t\t\tmaxYear = null,\r\n\t\t\tyears = this._get( inst, \"yearRange\" );\r\n\t\t\tif ( years ) {\r\n\t\t\t\tyearSplit = years.split( \":\" );\r\n\t\t\t\tcurrentYear = new Date().getFullYear();\r\n\t\t\t\tminYear = parseInt( yearSplit[ 0 ], 10 );\r\n\t\t\t\tmaxYear = parseInt( yearSplit[ 1 ], 10 );\r\n\t\t\t\tif ( yearSplit[ 0 ].match( /[+\\-].*/ ) ) {\r\n\t\t\t\t\tminYear += currentYear;\r\n\t\t\t\t}\r\n\t\t\t\tif ( yearSplit[ 1 ].match( /[+\\-].*/ ) ) {\r\n\t\t\t\t\tmaxYear += currentYear;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\treturn ( ( !minDate || date.getTime() >= minDate.getTime() ) &&\r\n\t\t\t( !maxDate || date.getTime() <= maxDate.getTime() ) &&\r\n\t\t\t( !minYear || date.getFullYear() >= minYear ) &&\r\n\t\t\t( !maxYear || date.getFullYear() <= maxYear ) );\r\n\t},\r\n\r\n\t/* Provide the configuration settings for formatting/parsing. */\r\n\t_getFormatConfig: function( inst ) {\r\n\t\tvar shortYearCutoff = this._get( inst, \"shortYearCutoff\" );\r\n\t\tshortYearCutoff = ( typeof shortYearCutoff !== \"string\" ? shortYearCutoff :\r\n\t\t\tnew Date().getFullYear() % 100 + parseInt( shortYearCutoff, 10 ) );\r\n\t\treturn { shortYearCutoff: shortYearCutoff,\r\n\t\t\tdayNamesShort: this._get( inst, \"dayNamesShort\" ), dayNames: this._get( inst, \"dayNames\" ),\r\n\t\t\tmonthNamesShort: this._get( inst, \"monthNamesShort\" ), monthNames: this._get( inst, \"monthNames\" ) };\r\n\t},\r\n\r\n\t/* Format the given date for display. */\r\n\t_formatDate: function( inst, day, month, year ) {\r\n\t\tif ( !day ) {\r\n\t\t\tinst.currentDay = inst.selectedDay;\r\n\t\t\tinst.currentMonth = inst.selectedMonth;\r\n\t\t\tinst.currentYear = inst.selectedYear;\r\n\t\t}\r\n\t\tvar date = ( day ? ( typeof day === \"object\" ? day :\r\n\t\t\tthis._daylightSavingAdjust( new Date( year, month, day ) ) ) :\r\n\t\t\tthis._daylightSavingAdjust( new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) );\r\n\t\treturn this.formatDate( this._get( inst, \"dateFormat\" ), date, this._getFormatConfig( inst ) );\r\n\t}\r\n} );\r\n\r\n/*\r\n * Bind hover events for datepicker elements.\r\n * Done via delegate so the binding only occurs once in the lifetime of the parent div.\r\n * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.\r\n */\r\nfunction datepicker_bindHover( dpDiv ) {\r\n\tvar selector = \"button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a\";\r\n\treturn dpDiv.on( \"mouseout\", selector, function() {\r\n\t\t\t$( this ).removeClass( \"ui-state-hover\" );\r\n\t\t\tif ( this.className.indexOf( \"ui-datepicker-prev\" ) !== -1 ) {\r\n\t\t\t\t$( this ).removeClass( \"ui-datepicker-prev-hover\" );\r\n\t\t\t}\r\n\t\t\tif ( this.className.indexOf( \"ui-datepicker-next\" ) !== -1 ) {\r\n\t\t\t\t$( this ).removeClass( \"ui-datepicker-next-hover\" );\r\n\t\t\t}\r\n\t\t} )\r\n\t\t.on( \"mouseover\", selector, datepicker_handleMouseover );\r\n}\r\n\r\nfunction datepicker_handleMouseover() {\r\n\tif ( !$.datepicker._isDisabledDatepicker( datepicker_instActive.inline ? datepicker_instActive.dpDiv.parent()[ 0 ] : datepicker_instActive.input[ 0 ] ) ) {\r\n\t\t$( this ).parents( \".ui-datepicker-calendar\" ).find( \"a\" ).removeClass( \"ui-state-hover\" );\r\n\t\t$( this ).addClass( \"ui-state-hover\" );\r\n\t\tif ( this.className.indexOf( \"ui-datepicker-prev\" ) !== -1 ) {\r\n\t\t\t$( this ).addClass( \"ui-datepicker-prev-hover\" );\r\n\t\t}\r\n\t\tif ( this.className.indexOf( \"ui-datepicker-next\" ) !== -1 ) {\r\n\t\t\t$( this ).addClass( \"ui-datepicker-next-hover\" );\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/* jQuery extend now ignores nulls! */\r\nfunction datepicker_extendRemove( target, props ) {\r\n\t$.extend( target, props );\r\n\tfor ( var name in props ) {\r\n\t\tif ( props[ name ] == null ) {\r\n\t\t\ttarget[ name ] = props[ name ];\r\n\t\t}\r\n\t}\r\n\treturn target;\r\n}\r\n\r\n/* Invoke the datepicker functionality.\r\n   @param  options  string - a command, optionally followed by additional parameters or\r\n\t\t\t\t\tObject - settings for attaching new datepicker functionality\r\n   @return  jQuery object */\r\n$.fn.datepicker = function( options ) {\r\n\r\n\t/* Verify an empty collection wasn't passed - Fixes #6976 */\r\n\tif ( !this.length ) {\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/* Initialise the date picker. */\r\n\tif ( !$.datepicker.initialized ) {\r\n\t\t$( document ).on( \"mousedown\", $.datepicker._checkExternalClick );\r\n\t\t$.datepicker.initialized = true;\r\n\t}\r\n\r\n\t/* Append datepicker main container to body if not exist. */\r\n\tif ( $( \"#\" + $.datepicker._mainDivId ).length === 0 ) {\r\n\t\t$( \"body\" ).append( $.datepicker.dpDiv );\r\n\t}\r\n\r\n\tvar otherArgs = Array.prototype.slice.call( arguments, 1 );\r\n\tif ( typeof options === \"string\" && ( options === \"isDisabled\" || options === \"getDate\" || options === \"widget\" ) ) {\r\n\t\treturn $.datepicker[ \"_\" + options + \"Datepicker\" ].\r\n\t\t\tapply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );\r\n\t}\r\n\tif ( options === \"option\" && arguments.length === 2 && typeof arguments[ 1 ] === \"string\" ) {\r\n\t\treturn $.datepicker[ \"_\" + options + \"Datepicker\" ].\r\n\t\t\tapply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );\r\n\t}\r\n\treturn this.each( function() {\r\n\t\tif ( typeof options === \"string\" ) {\r\n\t\t\t$.datepicker[ \"_\" + options + \"Datepicker\" ]\r\n\t\t\t\t.apply( $.datepicker, [ this ].concat( otherArgs ) );\r\n\t\t} else {\r\n\t\t\t$.datepicker._attachDatepicker( this, options );\r\n\t\t}\r\n\t} );\r\n};\r\n\r\n$.datepicker = new Datepicker(); // singleton instance\r\n$.datepicker.initialized = false;\r\n$.datepicker.uuid = new Date().getTime();\r\n$.datepicker.version = \"1.14.1\";\r\n\r\nvar widgetsDatepicker = $.datepicker;\r\n\r\n\r\n/*!\r\n * jQuery UI Mouse 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Mouse\r\n//>>group: Widgets\r\n//>>description: Abstracts mouse-based interactions to assist in creating certain widgets.\r\n//>>docs: https://api.jqueryui.com/mouse/\r\n\r\n\r\nvar mouseHandled = false;\r\n$( document ).on( \"mouseup\", function() {\r\n\tmouseHandled = false;\r\n} );\r\n\r\nvar widgetsMouse = $.widget( \"ui.mouse\", {\r\n\tversion: \"1.14.1\",\r\n\toptions: {\r\n\t\tcancel: \"input, textarea, button, select, option\",\r\n\t\tdistance: 1,\r\n\t\tdelay: 0\r\n\t},\r\n\t_mouseInit: function() {\r\n\t\tvar that = this;\r\n\r\n\t\tthis.element\r\n\t\t\t.on( \"mousedown.\" + this.widgetName, function( event ) {\r\n\t\t\t\treturn that._mouseDown( event );\r\n\t\t\t} )\r\n\t\t\t.on( \"click.\" + this.widgetName, function( event ) {\r\n\t\t\t\tif ( true === $.data( event.target, that.widgetName + \".preventClickEvent\" ) ) {\r\n\t\t\t\t\t$.removeData( event.target, that.widgetName + \".preventClickEvent\" );\r\n\t\t\t\t\tevent.stopImmediatePropagation();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\r\n\t\tthis.started = false;\r\n\t},\r\n\r\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\r\n\t// other instances of mouse\r\n\t_mouseDestroy: function() {\r\n\t\tthis.element.off( \".\" + this.widgetName );\r\n\t\tif ( this._mouseMoveDelegate ) {\r\n\t\t\tthis.document\r\n\t\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\r\n\t\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\r\n\t\t}\r\n\t},\r\n\r\n\t_mouseDown: function( event ) {\r\n\r\n\t\t// don't let more than one widget handle mouseStart\r\n\t\tif ( mouseHandled ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._mouseMoved = false;\r\n\r\n\t\t// We may have missed mouseup (out of window)\r\n\t\tif ( this._mouseStarted ) {\r\n\t\t\tthis._mouseUp( event );\r\n\t\t}\r\n\r\n\t\tthis._mouseDownEvent = event;\r\n\r\n\t\tvar that = this,\r\n\t\t\tbtnIsLeft = event.which === 1,\r\n\t\t\telIsCancel = typeof this.options.cancel === \"string\" ?\r\n\t\t\t\t$( event.target ).closest( this.options.cancel ).length :\r\n\t\t\t\tfalse;\r\n\t\tif ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tthis.mouseDelayMet = !this.options.delay;\r\n\t\tif ( !this.mouseDelayMet ) {\r\n\t\t\tthis._mouseDelayTimer = setTimeout( function() {\r\n\t\t\t\tthat.mouseDelayMet = true;\r\n\t\t\t}, this.options.delay );\r\n\t\t}\r\n\r\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\r\n\t\t\tthis._mouseStarted = ( this._mouseStart( event ) !== false );\r\n\t\t\tif ( !this._mouseStarted ) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Click event may never have fired (Gecko & Opera)\r\n\t\tif ( true === $.data( event.target, this.widgetName + \".preventClickEvent\" ) ) {\r\n\t\t\t$.removeData( event.target, this.widgetName + \".preventClickEvent\" );\r\n\t\t}\r\n\r\n\t\t// These delegates are required to keep context\r\n\t\tthis._mouseMoveDelegate = function( event ) {\r\n\t\t\treturn that._mouseMove( event );\r\n\t\t};\r\n\t\tthis._mouseUpDelegate = function( event ) {\r\n\t\t\treturn that._mouseUp( event );\r\n\t\t};\r\n\r\n\t\tthis.document\r\n\t\t\t.on( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\r\n\t\t\t.on( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\r\n\r\n\t\tevent.preventDefault();\r\n\r\n\t\tmouseHandled = true;\r\n\t\treturn true;\r\n\t},\r\n\r\n\t_mouseMove: function( event ) {\r\n\r\n\t\t// Only check for mouseups outside the document if you've moved inside the document\r\n\t\t// at least once.\r\n\t\tif ( this._mouseMoved && !event.which ) {\r\n\r\n\t\t\t// Support: Safari <=8 - 9\r\n\t\t\t// Safari sets which to 0 if you press any of the following keys\r\n\t\t\t// during a drag (#14461)\r\n\t\t\tif ( event.originalEvent.altKey || event.originalEvent.ctrlKey ||\r\n\t\t\t\t\tevent.originalEvent.metaKey || event.originalEvent.shiftKey ) {\r\n\t\t\t\tthis.ignoreMissingWhich = true;\r\n\t\t\t} else if ( !this.ignoreMissingWhich ) {\r\n\t\t\t\treturn this._mouseUp( event );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( event.which || event.button ) {\r\n\t\t\tthis._mouseMoved = true;\r\n\t\t}\r\n\r\n\t\tif ( this._mouseStarted ) {\r\n\t\t\tthis._mouseDrag( event );\r\n\t\t\treturn event.preventDefault();\r\n\t\t}\r\n\r\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\r\n\t\t\tthis._mouseStarted =\r\n\t\t\t\t( this._mouseStart( this._mouseDownEvent, event ) !== false );\r\n\t\t\tif ( this._mouseStarted ) {\r\n\t\t\t\tthis._mouseDrag( event );\r\n\t\t\t} else {\r\n\t\t\t\tthis._mouseUp( event );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn !this._mouseStarted;\r\n\t},\r\n\r\n\t_mouseUp: function( event ) {\r\n\t\tthis.document\r\n\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\r\n\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\r\n\r\n\t\tif ( this._mouseStarted ) {\r\n\t\t\tthis._mouseStarted = false;\r\n\r\n\t\t\tif ( event.target === this._mouseDownEvent.target ) {\r\n\t\t\t\t$.data( event.target, this.widgetName + \".preventClickEvent\", true );\r\n\t\t\t}\r\n\r\n\t\t\tthis._mouseStop( event );\r\n\t\t}\r\n\r\n\t\tif ( this._mouseDelayTimer ) {\r\n\t\t\tclearTimeout( this._mouseDelayTimer );\r\n\t\t\tdelete this._mouseDelayTimer;\r\n\t\t}\r\n\r\n\t\tthis.ignoreMissingWhich = false;\r\n\t\tmouseHandled = false;\r\n\t\tevent.preventDefault();\r\n\t},\r\n\r\n\t_mouseDistanceMet: function( event ) {\r\n\t\treturn ( Math.max(\r\n\t\t\t\tMath.abs( this._mouseDownEvent.pageX - event.pageX ),\r\n\t\t\t\tMath.abs( this._mouseDownEvent.pageY - event.pageY )\r\n\t\t\t) >= this.options.distance\r\n\t\t);\r\n\t},\r\n\r\n\t_mouseDelayMet: function( /* event */ ) {\r\n\t\treturn this.mouseDelayMet;\r\n\t},\r\n\r\n\t// These are placeholder methods, to be overriden by extending plugin\r\n\t_mouseStart: function( /* event */ ) {},\r\n\t_mouseDrag: function( /* event */ ) {},\r\n\t_mouseStop: function( /* event */ ) {},\r\n\t_mouseCapture: function( /* event */ ) {\r\n\t\treturn true;\r\n\t}\r\n} );\r\n\r\n\r\n\r\n// $.ui.plugin is deprecated. Use $.widget() extensions instead.\r\nvar plugin = $.ui.plugin = {\r\n\tadd: function( module, option, set ) {\r\n\t\tvar i,\r\n\t\t\tproto = $.ui[ module ].prototype;\r\n\t\tfor ( i in set ) {\r\n\t\t\tproto.plugins[ i ] = proto.plugins[ i ] || [];\r\n\t\t\tproto.plugins[ i ].push( [ option, set[ i ] ] );\r\n\t\t}\r\n\t},\r\n\tcall: function( instance, name, args, allowDisconnected ) {\r\n\t\tvar i,\r\n\t\t\tset = instance.plugins[ name ];\r\n\r\n\t\tif ( !set ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( !allowDisconnected && ( !instance.element[ 0 ].parentNode ||\r\n\t\t\t\tinstance.element[ 0 ].parentNode.nodeType === 11 ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor ( i = 0; i < set.length; i++ ) {\r\n\t\t\tif ( instance.options[ set[ i ][ 0 ] ] ) {\r\n\t\t\t\tset[ i ][ 1 ].apply( instance.element, args );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\n/*!\r\n * jQuery UI Draggable 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Draggable\r\n//>>group: Interactions\r\n//>>description: Enables dragging functionality for any element.\r\n//>>docs: https://api.jqueryui.com/draggable/\r\n//>>demos: https://jqueryui.com/draggable/\r\n//>>css.structure: ../../themes/base/draggable.css\r\n\r\n\r\n$.widget( \"ui.draggable\", $.ui.mouse, {\r\n\tversion: \"1.14.1\",\r\n\twidgetEventPrefix: \"drag\",\r\n\toptions: {\r\n\t\taddClasses: true,\r\n\t\tappendTo: \"parent\",\r\n\t\taxis: false,\r\n\t\tconnectToSortable: false,\r\n\t\tcontainment: false,\r\n\t\tcursor: \"auto\",\r\n\t\tcursorAt: false,\r\n\t\tgrid: false,\r\n\t\thandle: false,\r\n\t\thelper: \"original\",\r\n\t\tiframeFix: false,\r\n\t\topacity: false,\r\n\t\trefreshPositions: false,\r\n\t\trevert: false,\r\n\t\trevertDuration: 500,\r\n\t\tscope: \"default\",\r\n\t\tscroll: true,\r\n\t\tscrollSensitivity: 20,\r\n\t\tscrollSpeed: 20,\r\n\t\tsnap: false,\r\n\t\tsnapMode: \"both\",\r\n\t\tsnapTolerance: 20,\r\n\t\tstack: false,\r\n\t\tzIndex: false,\r\n\r\n\t\t// Callbacks\r\n\t\tdrag: null,\r\n\t\tstart: null,\r\n\t\tstop: null\r\n\t},\r\n\t_create: function() {\r\n\r\n\t\tif ( this.options.helper === \"original\" ) {\r\n\t\t\tthis._setPositionRelative();\r\n\t\t}\r\n\t\tif ( this.options.addClasses ) {\r\n\t\t\tthis._addClass( \"ui-draggable\" );\r\n\t\t}\r\n\t\tthis._setHandleClassName();\r\n\r\n\t\tthis._mouseInit();\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\t\tthis._super( key, value );\r\n\t\tif ( key === \"handle\" ) {\r\n\t\t\tthis._removeHandleClassName();\r\n\t\t\tthis._setHandleClassName();\r\n\t\t}\r\n\t},\r\n\r\n\t_destroy: function() {\r\n\t\tif ( ( this.helper || this.element ).is( \".ui-draggable-dragging\" ) ) {\r\n\t\t\tthis.destroyOnClear = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._removeHandleClassName();\r\n\t\tthis._mouseDestroy();\r\n\t},\r\n\r\n\t_mouseCapture: function( event ) {\r\n\t\tvar o = this.options;\r\n\r\n\t\t// Among others, prevent a drag on a resizable-handle\r\n\t\tif ( this.helper || o.disabled ||\r\n\t\t\t\t$( event.target ).closest( \".ui-resizable-handle\" ).length > 0 ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t//Quit if we're not on a valid handle\r\n\t\tthis.handle = this._getHandle( event );\r\n\t\tif ( !this.handle ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis._blurActiveElement( event );\r\n\r\n\t\tthis._blockFrames( o.iframeFix === true ? \"iframe\" : o.iframeFix );\r\n\r\n\t\treturn true;\r\n\r\n\t},\r\n\r\n\t_blockFrames: function( selector ) {\r\n\t\tthis.iframeBlocks = this.document.find( selector ).map( function() {\r\n\t\t\tvar iframe = $( this );\r\n\r\n\t\t\treturn $( \"<div>\" )\r\n\t\t\t\t.css( \"position\", \"absolute\" )\r\n\t\t\t\t.appendTo( iframe.parent() )\r\n\t\t\t\t.outerWidth( iframe.outerWidth() )\r\n\t\t\t\t.outerHeight( iframe.outerHeight() )\r\n\t\t\t\t.offset( iframe.offset() )[ 0 ];\r\n\t\t} );\r\n\t},\r\n\r\n\t_unblockFrames: function() {\r\n\t\tif ( this.iframeBlocks ) {\r\n\t\t\tthis.iframeBlocks.remove();\r\n\t\t\tdelete this.iframeBlocks;\r\n\t\t}\r\n\t},\r\n\r\n\t_blurActiveElement: function( event ) {\r\n\t\tvar activeElement = this.document[ 0 ].activeElement,\r\n\t\t\ttarget = $( event.target );\r\n\r\n\t\t// Don't blur if the event occurred on an element that is within\r\n\t\t// the currently focused element\r\n\t\t// See #10527, #12472\r\n\t\tif ( target.closest( activeElement ).length ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Blur any element that currently has focus, see #4261\r\n\t\t$( activeElement ).trigger( \"blur\" );\r\n\t},\r\n\r\n\t_mouseStart: function( event ) {\r\n\r\n\t\tvar o = this.options;\r\n\r\n\t\t//Create and append the visible helper\r\n\t\tthis.helper = this._createHelper( event );\r\n\r\n\t\tthis._addClass( this.helper, \"ui-draggable-dragging\" );\r\n\r\n\t\t//Cache the helper size\r\n\t\tthis._cacheHelperProportions();\r\n\r\n\t\t//If ddmanager is used for droppables, set the global draggable\r\n\t\tif ( $.ui.ddmanager ) {\r\n\t\t\t$.ui.ddmanager.current = this;\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\t * - Position generation -\r\n\t\t * This block generates everything position related - it's the core of draggables.\r\n\t\t */\r\n\r\n\t\t//Cache the margins of the original element\r\n\t\tthis._cacheMargins();\r\n\r\n\t\t//Store the helper's css position\r\n\t\tthis.cssPosition = this.helper.css( \"position\" );\r\n\t\tthis.scrollParent = this.helper.scrollParent( true );\r\n\t\tthis.offsetParent = this.helper.offsetParent();\r\n\t\tthis.hasFixedAncestor = this.helper.parents().filter( function() {\r\n\t\t\t\treturn $( this ).css( \"position\" ) === \"fixed\";\r\n\t\t\t} ).length > 0;\r\n\r\n\t\t//The element's absolute position on the page minus margins\r\n\t\tthis.positionAbs = this.element.offset();\r\n\t\tthis._refreshOffsets( event );\r\n\r\n\t\t//Generate the original position\r\n\t\tthis.originalPosition = this.position = this._generatePosition( event, false );\r\n\t\tthis.originalPageX = event.pageX;\r\n\t\tthis.originalPageY = event.pageY;\r\n\r\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\r\n\t\tif ( o.cursorAt ) {\r\n\t\t\tthis._adjustOffsetFromHelper( o.cursorAt );\r\n\t\t}\r\n\r\n\t\t//Set a containment if given in the options\r\n\t\tthis._setContainment();\r\n\r\n\t\t//Trigger event + callbacks\r\n\t\tif ( this._trigger( \"start\", event ) === false ) {\r\n\t\t\tthis._clear();\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t//Recache the helper size\r\n\t\tthis._cacheHelperProportions();\r\n\r\n\t\t//Prepare the droppable offsets\r\n\t\tif ( $.ui.ddmanager && !o.dropBehaviour ) {\r\n\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\r\n\t\t}\r\n\r\n\t\t// Execute the drag once - this causes the helper not to be visible before getting its\r\n\t\t// correct position\r\n\t\tthis._mouseDrag( event, true );\r\n\r\n\t\t// If the ddmanager is used for droppables, inform the manager that dragging has started\r\n\t\t// (see #5003)\r\n\t\tif ( $.ui.ddmanager ) {\r\n\t\t\t$.ui.ddmanager.dragStart( this, event );\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t_refreshOffsets: function( event ) {\r\n\t\tthis.offset = {\r\n\t\t\ttop: this.positionAbs.top - this.margins.top,\r\n\t\t\tleft: this.positionAbs.left - this.margins.left,\r\n\t\t\tscroll: false,\r\n\t\t\tparent: this._getParentOffset(),\r\n\t\t\trelative: this._getRelativeOffset()\r\n\t\t};\r\n\r\n\t\tthis.offset.click = {\r\n\t\t\tleft: event.pageX - this.offset.left,\r\n\t\t\ttop: event.pageY - this.offset.top\r\n\t\t};\r\n\t},\r\n\r\n\t_mouseDrag: function( event, noPropagation ) {\r\n\r\n\t\t// reset any necessary cached properties (see #5009)\r\n\t\tif ( this.hasFixedAncestor ) {\r\n\t\t\tthis.offset.parent = this._getParentOffset();\r\n\t\t}\r\n\r\n\t\t//Compute the helpers position\r\n\t\tthis.position = this._generatePosition( event, true );\r\n\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\r\n\r\n\t\t//Call plugins and callbacks and use the resulting position if something is returned\r\n\t\tif ( !noPropagation ) {\r\n\t\t\tvar ui = this._uiHash();\r\n\t\t\tif ( this._trigger( \"drag\", event, ui ) === false ) {\r\n\t\t\t\tthis._mouseUp( new $.Event( \"mouseup\", event ) );\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tthis.position = ui.position;\r\n\t\t}\r\n\r\n\t\tthis.helper[ 0 ].style.left = this.position.left + \"px\";\r\n\t\tthis.helper[ 0 ].style.top = this.position.top + \"px\";\r\n\r\n\t\tif ( $.ui.ddmanager ) {\r\n\t\t\t$.ui.ddmanager.drag( this, event );\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\t_mouseStop: function( event ) {\r\n\r\n\t\t//If we are using droppables, inform the manager about the drop\r\n\t\tvar that = this,\r\n\t\t\tdropped = false;\r\n\t\tif ( $.ui.ddmanager && !this.options.dropBehaviour ) {\r\n\t\t\tdropped = $.ui.ddmanager.drop( this, event );\r\n\t\t}\r\n\r\n\t\t//if a drop comes from outside (a sortable)\r\n\t\tif ( this.dropped ) {\r\n\t\t\tdropped = this.dropped;\r\n\t\t\tthis.dropped = false;\r\n\t\t}\r\n\r\n\t\tif ( ( this.options.revert === \"invalid\" && !dropped ) ||\r\n\t\t\t\t( this.options.revert === \"valid\" && dropped ) ||\r\n\t\t\t\tthis.options.revert === true || ( typeof this.options.revert === \"function\" &&\r\n\t\t\t\tthis.options.revert.call( this.element, dropped ) )\r\n\t\t) {\r\n\t\t\t$( this.helper ).animate(\r\n\t\t\t\tthis.originalPosition,\r\n\t\t\t\tparseInt( this.options.revertDuration, 10 ),\r\n\t\t\t\tfunction() {\r\n\t\t\t\t\tif ( that._trigger( \"stop\", event ) !== false ) {\r\n\t\t\t\t\t\tthat._clear();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tif ( this._trigger( \"stop\", event ) !== false ) {\r\n\t\t\t\tthis._clear();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\t_mouseUp: function( event ) {\r\n\t\tthis._unblockFrames();\r\n\r\n\t\t// If the ddmanager is used for droppables, inform the manager that dragging has stopped\r\n\t\t// (see #5003)\r\n\t\tif ( $.ui.ddmanager ) {\r\n\t\t\t$.ui.ddmanager.dragStop( this, event );\r\n\t\t}\r\n\r\n\t\t// Only need to focus if the event occurred on the draggable itself, see #10527\r\n\t\tif ( this.handleElement.is( event.target ) ) {\r\n\r\n\t\t\t// The interaction is over; whether or not the click resulted in a drag,\r\n\t\t\t// focus the element\r\n\t\t\tthis.element.trigger( \"focus\" );\r\n\t\t}\r\n\r\n\t\treturn $.ui.mouse.prototype._mouseUp.call( this, event );\r\n\t},\r\n\r\n\tcancel: function() {\r\n\r\n\t\tif ( this.helper.is( \".ui-draggable-dragging\" ) ) {\r\n\t\t\tthis._mouseUp( new $.Event( \"mouseup\", { target: this.element[ 0 ] } ) );\r\n\t\t} else {\r\n\t\t\tthis._clear();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\t_getHandle: function( event ) {\r\n\t\treturn this.options.handle ?\r\n\t\t\t!!$( event.target ).closest( this.element.find( this.options.handle ) ).length :\r\n\t\t\ttrue;\r\n\t},\r\n\r\n\t_setHandleClassName: function() {\r\n\t\tthis.handleElement = this.options.handle ?\r\n\t\t\tthis.element.find( this.options.handle ) : this.element;\r\n\t\tthis._addClass( this.handleElement, \"ui-draggable-handle\" );\r\n\t},\r\n\r\n\t_removeHandleClassName: function() {\r\n\t\tthis._removeClass( this.handleElement, \"ui-draggable-handle\" );\r\n\t},\r\n\r\n\t_createHelper: function( event ) {\r\n\r\n\t\tvar o = this.options,\r\n\t\t\thelperIsFunction = typeof o.helper === \"function\",\r\n\t\t\thelper = helperIsFunction ?\r\n\t\t\t\t$( o.helper.apply( this.element[ 0 ], [ event ] ) ) :\r\n\t\t\t\t( o.helper === \"clone\" ?\r\n\t\t\t\t\tthis.element.clone().removeAttr( \"id\" ) :\r\n\t\t\t\t\tthis.element );\r\n\r\n\t\tif ( !helper.parents( \"body\" ).length ) {\r\n\t\t\thelper.appendTo( ( o.appendTo === \"parent\" ?\r\n\t\t\t\tthis.element[ 0 ].parentNode :\r\n\t\t\t\to.appendTo ) );\r\n\t\t}\r\n\r\n\t\t// https://bugs.jqueryui.com/ticket/9446\r\n\t\t// a helper function can return the original element\r\n\t\t// which wouldn't have been set to relative in _create\r\n\t\tif ( helperIsFunction && helper[ 0 ] === this.element[ 0 ] ) {\r\n\t\t\tthis._setPositionRelative();\r\n\t\t}\r\n\r\n\t\tif ( helper[ 0 ] !== this.element[ 0 ] &&\r\n\t\t\t\t!( /(fixed|absolute)/ ).test( helper.css( \"position\" ) ) ) {\r\n\t\t\thelper.css( \"position\", \"absolute\" );\r\n\t\t}\r\n\r\n\t\treturn helper;\r\n\r\n\t},\r\n\r\n\t_setPositionRelative: function() {\r\n\t\tif ( !( /^(?:r|a|f)/ ).test( this.element.css( \"position\" ) ) ) {\r\n\t\t\tthis.element[ 0 ].style.position = \"relative\";\r\n\t\t}\r\n\t},\r\n\r\n\t_adjustOffsetFromHelper: function( obj ) {\r\n\t\tif ( typeof obj === \"string\" ) {\r\n\t\t\tobj = obj.split( \" \" );\r\n\t\t}\r\n\t\tif ( Array.isArray( obj ) ) {\r\n\t\t\tobj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };\r\n\t\t}\r\n\t\tif ( \"left\" in obj ) {\r\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\r\n\t\t}\r\n\t\tif ( \"right\" in obj ) {\r\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\r\n\t\t}\r\n\t\tif ( \"top\" in obj ) {\r\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\r\n\t\t}\r\n\t\tif ( \"bottom\" in obj ) {\r\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\r\n\t\t}\r\n\t},\r\n\r\n\t_isRootNode: function( element ) {\r\n\t\treturn ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ];\r\n\t},\r\n\r\n\t_getParentOffset: function() {\r\n\r\n\t\t//Get the offsetParent and cache its position\r\n\t\tvar po = this.offsetParent.offset(),\r\n\t\t\tdocument = this.document[ 0 ];\r\n\r\n\t\t// This is a special case where we need to modify a offset calculated on start, since the\r\n\t\t// following happened:\r\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the\r\n\t\t// next positioned parent\r\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't\r\n\t\t// the document, which means that the scroll is included in the initial calculation of the\r\n\t\t// offset of the parent, and never recalculated upon drag\r\n\t\tif ( this.cssPosition === \"absolute\" && this.scrollParent[ 0 ] !== document &&\r\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {\r\n\t\t\tpo.left += this.scrollParent.scrollLeft();\r\n\t\t\tpo.top += this.scrollParent.scrollTop();\r\n\t\t}\r\n\r\n\t\tif ( this._isRootNode( this.offsetParent[ 0 ] ) ) {\r\n\t\t\tpo = { top: 0, left: 0 };\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop: po.top + ( parseInt( this.offsetParent.css( \"borderTopWidth\" ), 10 ) || 0 ),\r\n\t\t\tleft: po.left + ( parseInt( this.offsetParent.css( \"borderLeftWidth\" ), 10 ) || 0 )\r\n\t\t};\r\n\r\n\t},\r\n\r\n\t_getRelativeOffset: function() {\r\n\t\tif ( this.cssPosition !== \"relative\" ) {\r\n\t\t\treturn { top: 0, left: 0 };\r\n\t\t}\r\n\r\n\t\tvar p = this.element.position(),\r\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );\r\n\r\n\t\treturn {\r\n\t\t\ttop: p.top - ( parseInt( this.helper.css( \"top\" ), 10 ) || 0 ) +\r\n\t\t\t\t( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ),\r\n\t\t\tleft: p.left - ( parseInt( this.helper.css( \"left\" ), 10 ) || 0 ) +\r\n\t\t\t\t( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 )\r\n\t\t};\r\n\r\n\t},\r\n\r\n\t_cacheMargins: function() {\r\n\t\tthis.margins = {\r\n\t\t\tleft: ( parseInt( this.element.css( \"marginLeft\" ), 10 ) || 0 ),\r\n\t\t\ttop: ( parseInt( this.element.css( \"marginTop\" ), 10 ) || 0 ),\r\n\t\t\tright: ( parseInt( this.element.css( \"marginRight\" ), 10 ) || 0 ),\r\n\t\t\tbottom: ( parseInt( this.element.css( \"marginBottom\" ), 10 ) || 0 )\r\n\t\t};\r\n\t},\r\n\r\n\t_cacheHelperProportions: function() {\r\n\t\tthis.helperProportions = {\r\n\t\t\twidth: this.helper.outerWidth(),\r\n\t\t\theight: this.helper.outerHeight()\r\n\t\t};\r\n\t},\r\n\r\n\t_setContainment: function() {\r\n\r\n\t\tvar isUserScrollable, c, ce,\r\n\t\t\to = this.options,\r\n\t\t\tdocument = this.document[ 0 ];\r\n\r\n\t\tthis.relativeContainer = null;\r\n\r\n\t\tif ( !o.containment ) {\r\n\t\t\tthis.containment = null;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( o.containment === \"window\" ) {\r\n\t\t\tthis.containment = [\r\n\t\t\t\t$( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,\r\n\t\t\t\t$( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,\r\n\t\t\t\t$( window ).scrollLeft() + $( window ).width() -\r\n\t\t\t\t\tthis.helperProportions.width - this.margins.left,\r\n\t\t\t\t$( window ).scrollTop() +\r\n\t\t\t\t\t( $( window ).height() || document.body.parentNode.scrollHeight ) -\r\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\r\n\t\t\t];\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( o.containment === \"document\" ) {\r\n\t\t\tthis.containment = [\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t$( document ).width() - this.helperProportions.width - this.margins.left,\r\n\t\t\t\t( $( document ).height() || document.body.parentNode.scrollHeight ) -\r\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\r\n\t\t\t];\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( o.containment.constructor === Array ) {\r\n\t\t\tthis.containment = o.containment;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( o.containment === \"parent\" ) {\r\n\t\t\to.containment = this.helper[ 0 ].parentNode;\r\n\t\t}\r\n\r\n\t\tc = $( o.containment );\r\n\t\tce = c[ 0 ];\r\n\r\n\t\tif ( !ce ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tisUserScrollable = /(scroll|auto)/.test( c.css( \"overflow\" ) );\r\n\r\n\t\tthis.containment = [\r\n\t\t\t( parseInt( c.css( \"borderLeftWidth\" ), 10 ) || 0 ) +\r\n\t\t\t\t( parseInt( c.css( \"paddingLeft\" ), 10 ) || 0 ),\r\n\t\t\t( parseInt( c.css( \"borderTopWidth\" ), 10 ) || 0 ) +\r\n\t\t\t\t( parseInt( c.css( \"paddingTop\" ), 10 ) || 0 ),\r\n\t\t\t( isUserScrollable ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -\r\n\t\t\t\t( parseInt( c.css( \"borderRightWidth\" ), 10 ) || 0 ) -\r\n\t\t\t\t( parseInt( c.css( \"paddingRight\" ), 10 ) || 0 ) -\r\n\t\t\t\tthis.helperProportions.width -\r\n\t\t\t\tthis.margins.left -\r\n\t\t\t\tthis.margins.right,\r\n\t\t\t( isUserScrollable ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -\r\n\t\t\t\t( parseInt( c.css( \"borderBottomWidth\" ), 10 ) || 0 ) -\r\n\t\t\t\t( parseInt( c.css( \"paddingBottom\" ), 10 ) || 0 ) -\r\n\t\t\t\tthis.helperProportions.height -\r\n\t\t\t\tthis.margins.top -\r\n\t\t\t\tthis.margins.bottom\r\n\t\t];\r\n\t\tthis.relativeContainer = c;\r\n\t},\r\n\r\n\t_convertPositionTo: function( d, pos ) {\r\n\r\n\t\tif ( !pos ) {\r\n\t\t\tpos = this.position;\r\n\t\t}\r\n\r\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\r\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );\r\n\r\n\t\treturn {\r\n\t\t\ttop: (\r\n\r\n\t\t\t\t// The absolute mouse position\r\n\t\t\t\tpos.top\t+\r\n\r\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\r\n\t\t\t\tthis.offset.relative.top * mod +\r\n\r\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\r\n\t\t\t\tthis.offset.parent.top * mod -\r\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\r\n\t\t\t\t\t-this.offset.scroll.top :\r\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod )\r\n\t\t\t),\r\n\t\t\tleft: (\r\n\r\n\t\t\t\t// The absolute mouse position\r\n\t\t\t\tpos.left +\r\n\r\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\r\n\t\t\t\tthis.offset.relative.left * mod +\r\n\r\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\r\n\t\t\t\tthis.offset.parent.left * mod\t-\r\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\r\n\t\t\t\t\t-this.offset.scroll.left :\r\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod )\r\n\t\t\t)\r\n\t\t};\r\n\r\n\t},\r\n\r\n\t_generatePosition: function( event, constrainPosition ) {\r\n\r\n\t\tvar containment, co, top, left,\r\n\t\t\to = this.options,\r\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ),\r\n\t\t\tpageX = event.pageX,\r\n\t\t\tpageY = event.pageY;\r\n\r\n\t\t// Cache the scroll\r\n\t\tif ( !scrollIsRootNode || !this.offset.scroll ) {\r\n\t\t\tthis.offset.scroll = {\r\n\t\t\t\ttop: this.scrollParent.scrollTop(),\r\n\t\t\t\tleft: this.scrollParent.scrollLeft()\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\t * - Position constraining -\r\n\t\t * Constrain the position to a mix of grid, containment.\r\n\t\t */\r\n\r\n\t\t// If we are not dragging yet, we won't check for options\r\n\t\tif ( constrainPosition ) {\r\n\t\t\tif ( this.containment ) {\r\n\t\t\t\tif ( this.relativeContainer ) {\r\n\t\t\t\t\tco = this.relativeContainer.offset();\r\n\t\t\t\t\tcontainment = [\r\n\t\t\t\t\t\tthis.containment[ 0 ] + co.left,\r\n\t\t\t\t\t\tthis.containment[ 1 ] + co.top,\r\n\t\t\t\t\t\tthis.containment[ 2 ] + co.left,\r\n\t\t\t\t\t\tthis.containment[ 3 ] + co.top\r\n\t\t\t\t\t];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontainment = this.containment;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( event.pageX - this.offset.click.left < containment[ 0 ] ) {\r\n\t\t\t\t\tpageX = containment[ 0 ] + this.offset.click.left;\r\n\t\t\t\t}\r\n\t\t\t\tif ( event.pageY - this.offset.click.top < containment[ 1 ] ) {\r\n\t\t\t\t\tpageY = containment[ 1 ] + this.offset.click.top;\r\n\t\t\t\t}\r\n\t\t\t\tif ( event.pageX - this.offset.click.left > containment[ 2 ] ) {\r\n\t\t\t\t\tpageX = containment[ 2 ] + this.offset.click.left;\r\n\t\t\t\t}\r\n\t\t\t\tif ( event.pageY - this.offset.click.top > containment[ 3 ] ) {\r\n\t\t\t\t\tpageY = containment[ 3 ] + this.offset.click.top;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( o.grid ) {\r\n\r\n\t\t\t\t//Check for grid elements set to 0 to prevent divide by 0 error causing invalid\r\n\t\t\t\t// argument errors in IE (see ticket #6950)\r\n\t\t\t\ttop = o.grid[ 1 ] ? this.originalPageY + Math.round( ( pageY -\r\n\t\t\t\t\tthis.originalPageY ) / o.grid[ 1 ] ) * o.grid[ 1 ] : this.originalPageY;\r\n\t\t\t\tpageY = containment ? ( ( top - this.offset.click.top >= containment[ 1 ] ||\r\n\t\t\t\t\ttop - this.offset.click.top > containment[ 3 ] ) ?\r\n\t\t\t\t\t\ttop :\r\n\t\t\t\t\t\t( ( top - this.offset.click.top >= containment[ 1 ] ) ?\r\n\t\t\t\t\t\t\ttop - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) : top;\r\n\r\n\t\t\t\tleft = o.grid[ 0 ] ? this.originalPageX +\r\n\t\t\t\t\tMath.round( ( pageX - this.originalPageX ) / o.grid[ 0 ] ) * o.grid[ 0 ] :\r\n\t\t\t\t\tthis.originalPageX;\r\n\t\t\t\tpageX = containment ? ( ( left - this.offset.click.left >= containment[ 0 ] ||\r\n\t\t\t\t\tleft - this.offset.click.left > containment[ 2 ] ) ?\r\n\t\t\t\t\t\tleft :\r\n\t\t\t\t\t\t( ( left - this.offset.click.left >= containment[ 0 ] ) ?\r\n\t\t\t\t\t\t\tleft - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) : left;\r\n\t\t\t}\r\n\r\n\t\t\tif ( o.axis === \"y\" ) {\r\n\t\t\t\tpageX = this.originalPageX;\r\n\t\t\t}\r\n\r\n\t\t\tif ( o.axis === \"x\" ) {\r\n\t\t\t\tpageY = this.originalPageY;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop: (\r\n\r\n\t\t\t\t// The absolute mouse position\r\n\t\t\t\tpageY -\r\n\r\n\t\t\t\t// Click offset (relative to the element)\r\n\t\t\t\tthis.offset.click.top -\r\n\r\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\r\n\t\t\t\tthis.offset.relative.top -\r\n\r\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\r\n\t\t\t\tthis.offset.parent.top +\r\n\t\t\t\t( this.cssPosition === \"fixed\" ?\r\n\t\t\t\t\t-this.offset.scroll.top :\r\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.top ) )\r\n\t\t\t),\r\n\t\t\tleft: (\r\n\r\n\t\t\t\t// The absolute mouse position\r\n\t\t\t\tpageX -\r\n\r\n\t\t\t\t// Click offset (relative to the element)\r\n\t\t\t\tthis.offset.click.left -\r\n\r\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\r\n\t\t\t\tthis.offset.relative.left -\r\n\r\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\r\n\t\t\t\tthis.offset.parent.left +\r\n\t\t\t\t( this.cssPosition === \"fixed\" ?\r\n\t\t\t\t\t-this.offset.scroll.left :\r\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.left ) )\r\n\t\t\t)\r\n\t\t};\r\n\r\n\t},\r\n\r\n\t_clear: function() {\r\n\t\tthis._removeClass( this.helper, \"ui-draggable-dragging\" );\r\n\t\tif ( this.helper[ 0 ] !== this.element[ 0 ] && !this.cancelHelperRemoval ) {\r\n\t\t\tthis.helper.remove();\r\n\t\t}\r\n\t\tthis.helper = null;\r\n\t\tthis.cancelHelperRemoval = false;\r\n\t\tif ( this.destroyOnClear ) {\r\n\t\t\tthis.destroy();\r\n\t\t}\r\n\t},\r\n\r\n\t// From now on bulk stuff - mainly helpers\r\n\r\n\t_trigger: function( type, event, ui ) {\r\n\t\tui = ui || this._uiHash();\r\n\t\t$.ui.plugin.call( this, type, [ event, ui, this ], true );\r\n\r\n\t\t// Absolute position and offset (see #6884 ) have to be recalculated after plugins\r\n\t\tif ( /^(drag|start|stop)/.test( type ) ) {\r\n\t\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\r\n\t\t\tui.offset = this.positionAbs;\r\n\t\t}\r\n\t\treturn $.Widget.prototype._trigger.call( this, type, event, ui );\r\n\t},\r\n\r\n\tplugins: {},\r\n\r\n\t_uiHash: function() {\r\n\t\treturn {\r\n\t\t\thelper: this.helper,\r\n\t\t\tposition: this.position,\r\n\t\t\toriginalPosition: this.originalPosition,\r\n\t\t\toffset: this.positionAbs\r\n\t\t};\r\n\t}\r\n\r\n} );\r\n\r\n$.ui.plugin.add( \"draggable\", \"connectToSortable\", {\r\n\tstart: function( event, ui, draggable ) {\r\n\t\tvar uiSortable = $.extend( {}, ui, {\r\n\t\t\titem: draggable.element\r\n\t\t} );\r\n\r\n\t\tdraggable.sortables = [];\r\n\t\t$( draggable.options.connectToSortable ).each( function() {\r\n\t\t\tvar sortable = $( this ).sortable( \"instance\" );\r\n\r\n\t\t\tif ( sortable && !sortable.options.disabled ) {\r\n\t\t\t\tdraggable.sortables.push( sortable );\r\n\r\n\t\t\t\t// RefreshPositions is called at drag start to refresh the containerCache\r\n\t\t\t\t// which is used in drag. This ensures it's initialized and synchronized\r\n\t\t\t\t// with any changes that might have happened on the page since initialization.\r\n\t\t\t\tsortable.refreshPositions();\r\n\t\t\t\tsortable._trigger( \"activate\", event, uiSortable );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\tstop: function( event, ui, draggable ) {\r\n\t\tvar uiSortable = $.extend( {}, ui, {\r\n\t\t\titem: draggable.element\r\n\t\t} );\r\n\r\n\t\tdraggable.cancelHelperRemoval = false;\r\n\r\n\t\t$.each( draggable.sortables, function() {\r\n\t\t\tvar sortable = this;\r\n\r\n\t\t\tif ( sortable.isOver ) {\r\n\t\t\t\tsortable.isOver = 0;\r\n\r\n\t\t\t\t// Allow this sortable to handle removing the helper\r\n\t\t\t\tdraggable.cancelHelperRemoval = true;\r\n\t\t\t\tsortable.cancelHelperRemoval = false;\r\n\r\n\t\t\t\t// Use _storedCSS To restore properties in the sortable,\r\n\t\t\t\t// as this also handles revert (#9675) since the draggable\r\n\t\t\t\t// may have modified them in unexpected ways (#8809)\r\n\t\t\t\tsortable._storedCSS = {\r\n\t\t\t\t\tposition: sortable.placeholder.css( \"position\" ),\r\n\t\t\t\t\ttop: sortable.placeholder.css( \"top\" ),\r\n\t\t\t\t\tleft: sortable.placeholder.css( \"left\" )\r\n\t\t\t\t};\r\n\r\n\t\t\t\tsortable._mouseStop( event );\r\n\r\n\t\t\t\t// Once drag has ended, the sortable should return to using\r\n\t\t\t\t// its original helper, not the shared helper from draggable\r\n\t\t\t\tsortable.options.helper = sortable.options._helper;\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// Prevent this Sortable from removing the helper.\r\n\t\t\t\t// However, don't set the draggable to remove the helper\r\n\t\t\t\t// either as another connected Sortable may yet handle the removal.\r\n\t\t\t\tsortable.cancelHelperRemoval = true;\r\n\r\n\t\t\t\tsortable._trigger( \"deactivate\", event, uiSortable );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\tdrag: function( event, ui, draggable ) {\r\n\t\t$.each( draggable.sortables, function() {\r\n\t\t\tvar innermostIntersecting = false,\r\n\t\t\t\tsortable = this;\r\n\r\n\t\t\t// Copy over variables that sortable's _intersectsWith uses\r\n\t\t\tsortable.positionAbs = draggable.positionAbs;\r\n\t\t\tsortable.helperProportions = draggable.helperProportions;\r\n\t\t\tsortable.offset.click = draggable.offset.click;\r\n\r\n\t\t\tif ( sortable._intersectsWith( sortable.containerCache ) ) {\r\n\t\t\t\tinnermostIntersecting = true;\r\n\r\n\t\t\t\t$.each( draggable.sortables, function() {\r\n\r\n\t\t\t\t\t// Copy over variables that sortable's _intersectsWith uses\r\n\t\t\t\t\tthis.positionAbs = draggable.positionAbs;\r\n\t\t\t\t\tthis.helperProportions = draggable.helperProportions;\r\n\t\t\t\t\tthis.offset.click = draggable.offset.click;\r\n\r\n\t\t\t\t\tif ( this !== sortable &&\r\n\t\t\t\t\t\t\tthis._intersectsWith( this.containerCache ) &&\r\n\t\t\t\t\t\t\t$.contains( sortable.element[ 0 ], this.element[ 0 ] ) ) {\r\n\t\t\t\t\t\tinnermostIntersecting = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn innermostIntersecting;\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\r\n\t\t\tif ( innermostIntersecting ) {\r\n\r\n\t\t\t\t// If it intersects, we use a little isOver variable and set it once,\r\n\t\t\t\t// so that the move-in stuff gets fired only once.\r\n\t\t\t\tif ( !sortable.isOver ) {\r\n\t\t\t\t\tsortable.isOver = 1;\r\n\r\n\t\t\t\t\t// Store draggable's parent in case we need to reappend to it later.\r\n\t\t\t\t\tdraggable._parent = ui.helper.parent();\r\n\r\n\t\t\t\t\tsortable.currentItem = ui.helper\r\n\t\t\t\t\t\t.appendTo( sortable.element )\r\n\t\t\t\t\t\t.data( \"ui-sortable-item\", true );\r\n\r\n\t\t\t\t\t// Store helper option to later restore it\r\n\t\t\t\t\tsortable.options._helper = sortable.options.helper;\r\n\r\n\t\t\t\t\tsortable.options.helper = function() {\r\n\t\t\t\t\t\treturn ui.helper[ 0 ];\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// Fire the start events of the sortable with our passed browser event,\r\n\t\t\t\t\t// and our own helper (so it doesn't create a new one)\r\n\t\t\t\t\tevent.target = sortable.currentItem[ 0 ];\r\n\t\t\t\t\tsortable._mouseCapture( event, true );\r\n\t\t\t\t\tsortable._mouseStart( event, true, true );\r\n\r\n\t\t\t\t\t// Because the browser event is way off the new appended portlet,\r\n\t\t\t\t\t// modify necessary variables to reflect the changes\r\n\t\t\t\t\tsortable.offset.click.top = draggable.offset.click.top;\r\n\t\t\t\t\tsortable.offset.click.left = draggable.offset.click.left;\r\n\t\t\t\t\tsortable.offset.parent.left -= draggable.offset.parent.left -\r\n\t\t\t\t\t\tsortable.offset.parent.left;\r\n\t\t\t\t\tsortable.offset.parent.top -= draggable.offset.parent.top -\r\n\t\t\t\t\t\tsortable.offset.parent.top;\r\n\r\n\t\t\t\t\tdraggable._trigger( \"toSortable\", event );\r\n\r\n\t\t\t\t\t// Inform draggable that the helper is in a valid drop zone,\r\n\t\t\t\t\t// used solely in the revert option to handle \"valid/invalid\".\r\n\t\t\t\t\tdraggable.dropped = sortable.element;\r\n\r\n\t\t\t\t\t// Need to refreshPositions of all sortables in the case that\r\n\t\t\t\t\t// adding to one sortable changes the location of the other sortables (#9675)\r\n\t\t\t\t\t$.each( draggable.sortables, function() {\r\n\t\t\t\t\t\tthis.refreshPositions();\r\n\t\t\t\t\t} );\r\n\r\n\t\t\t\t\t// Hack so receive/update callbacks work (mostly)\r\n\t\t\t\t\tdraggable.currentItem = draggable.element;\r\n\t\t\t\t\tsortable.fromOutside = draggable;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( sortable.currentItem ) {\r\n\t\t\t\t\tsortable._mouseDrag( event );\r\n\r\n\t\t\t\t\t// Copy the sortable's position because the draggable's can potentially reflect\r\n\t\t\t\t\t// a relative position, while sortable is always absolute, which the dragged\r\n\t\t\t\t\t// element has now become. (#8809)\r\n\t\t\t\t\tui.position = sortable.position;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// If it doesn't intersect with the sortable, and it intersected before,\r\n\t\t\t\t// we fake the drag stop of the sortable, but make sure it doesn't remove\r\n\t\t\t\t// the helper by using cancelHelperRemoval.\r\n\t\t\t\tif ( sortable.isOver ) {\r\n\r\n\t\t\t\t\tsortable.isOver = 0;\r\n\t\t\t\t\tsortable.cancelHelperRemoval = true;\r\n\r\n\t\t\t\t\t// Calling sortable's mouseStop would trigger a revert,\r\n\t\t\t\t\t// so revert must be temporarily false until after mouseStop is called.\r\n\t\t\t\t\tsortable.options._revert = sortable.options.revert;\r\n\t\t\t\t\tsortable.options.revert = false;\r\n\r\n\t\t\t\t\tsortable._trigger( \"out\", event, sortable._uiHash( sortable ) );\r\n\t\t\t\t\tsortable._mouseStop( event, true );\r\n\r\n\t\t\t\t\t// Restore sortable behaviors that were modfied\r\n\t\t\t\t\t// when the draggable entered the sortable area (#9481)\r\n\t\t\t\t\tsortable.options.revert = sortable.options._revert;\r\n\t\t\t\t\tsortable.options.helper = sortable.options._helper;\r\n\r\n\t\t\t\t\tif ( sortable.placeholder ) {\r\n\t\t\t\t\t\tsortable.placeholder.remove();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Restore and recalculate the draggable's offset considering the sortable\r\n\t\t\t\t\t// may have modified them in unexpected ways. (#8809, #10669)\r\n\t\t\t\t\tui.helper.appendTo( draggable._parent );\r\n\t\t\t\t\tdraggable._refreshOffsets( event );\r\n\t\t\t\t\tui.position = draggable._generatePosition( event, true );\r\n\r\n\t\t\t\t\tdraggable._trigger( \"fromSortable\", event );\r\n\r\n\t\t\t\t\t// Inform draggable that the helper is no longer in a valid drop zone\r\n\t\t\t\t\tdraggable.dropped = false;\r\n\r\n\t\t\t\t\t// Need to refreshPositions of all sortables just in case removing\r\n\t\t\t\t\t// from one sortable changes the location of other sortables (#9675)\r\n\t\t\t\t\t$.each( draggable.sortables, function() {\r\n\t\t\t\t\t\tthis.refreshPositions();\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\r\n$.ui.plugin.add( \"draggable\", \"cursor\", {\r\n\tstart: function( event, ui, instance ) {\r\n\t\tvar t = $( \"body\" ),\r\n\t\t\to = instance.options;\r\n\r\n\t\tif ( t.css( \"cursor\" ) ) {\r\n\t\t\to._cursor = t.css( \"cursor\" );\r\n\t\t}\r\n\t\tt.css( \"cursor\", o.cursor );\r\n\t},\r\n\tstop: function( event, ui, instance ) {\r\n\t\tvar o = instance.options;\r\n\t\tif ( o._cursor ) {\r\n\t\t\t$( \"body\" ).css( \"cursor\", o._cursor );\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n$.ui.plugin.add( \"draggable\", \"opacity\", {\r\n\tstart: function( event, ui, instance ) {\r\n\t\tvar t = $( ui.helper ),\r\n\t\t\to = instance.options;\r\n\t\tif ( t.css( \"opacity\" ) ) {\r\n\t\t\to._opacity = t.css( \"opacity\" );\r\n\t\t}\r\n\t\tt.css( \"opacity\", o.opacity );\r\n\t},\r\n\tstop: function( event, ui, instance ) {\r\n\t\tvar o = instance.options;\r\n\t\tif ( o._opacity ) {\r\n\t\t\t$( ui.helper ).css( \"opacity\", o._opacity );\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n$.ui.plugin.add( \"draggable\", \"scroll\", {\r\n\tstart: function( event, ui, i ) {\r\n\t\tif ( !i.scrollParentNotHidden ) {\r\n\t\t\ti.scrollParentNotHidden = i.helper.scrollParent( false );\r\n\t\t}\r\n\r\n\t\tif ( i.scrollParentNotHidden[ 0 ] !== i.document[ 0 ] &&\r\n\t\t\t\ti.scrollParentNotHidden[ 0 ].tagName !== \"HTML\" ) {\r\n\t\t\ti.overflowOffset = i.scrollParentNotHidden.offset();\r\n\t\t}\r\n\t},\r\n\tdrag: function( event, ui, i  ) {\r\n\r\n\t\tvar o = i.options,\r\n\t\t\tscrolled = false,\r\n\t\t\tscrollParent = i.scrollParentNotHidden[ 0 ],\r\n\t\t\tdocument = i.document[ 0 ];\r\n\r\n\t\tif ( scrollParent !== document && scrollParent.tagName !== \"HTML\" ) {\r\n\t\t\tif ( !o.axis || o.axis !== \"x\" ) {\r\n\t\t\t\tif ( ( i.overflowOffset.top + scrollParent.offsetHeight ) - event.pageY <\r\n\t\t\t\t\t\to.scrollSensitivity ) {\r\n\t\t\t\t\tscrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;\r\n\t\t\t\t} else if ( event.pageY - i.overflowOffset.top < o.scrollSensitivity ) {\r\n\t\t\t\t\tscrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( !o.axis || o.axis !== \"y\" ) {\r\n\t\t\t\tif ( ( i.overflowOffset.left + scrollParent.offsetWidth ) - event.pageX <\r\n\t\t\t\t\t\to.scrollSensitivity ) {\r\n\t\t\t\t\tscrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;\r\n\t\t\t\t} else if ( event.pageX - i.overflowOffset.left < o.scrollSensitivity ) {\r\n\t\t\t\t\tscrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tif ( !o.axis || o.axis !== \"x\" ) {\r\n\t\t\t\tif ( event.pageY - $( document ).scrollTop() < o.scrollSensitivity ) {\r\n\t\t\t\t\tscrolled = $( document ).scrollTop( $( document ).scrollTop() - o.scrollSpeed );\r\n\t\t\t\t} else if ( $( window ).height() - ( event.pageY - $( document ).scrollTop() ) <\r\n\t\t\t\t\t\to.scrollSensitivity ) {\r\n\t\t\t\t\tscrolled = $( document ).scrollTop( $( document ).scrollTop() + o.scrollSpeed );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( !o.axis || o.axis !== \"y\" ) {\r\n\t\t\t\tif ( event.pageX - $( document ).scrollLeft() < o.scrollSensitivity ) {\r\n\t\t\t\t\tscrolled = $( document ).scrollLeft(\r\n\t\t\t\t\t\t$( document ).scrollLeft() - o.scrollSpeed\r\n\t\t\t\t\t);\r\n\t\t\t\t} else if ( $( window ).width() - ( event.pageX - $( document ).scrollLeft() ) <\r\n\t\t\t\t\t\to.scrollSensitivity ) {\r\n\t\t\t\t\tscrolled = $( document ).scrollLeft(\r\n\t\t\t\t\t\t$( document ).scrollLeft() + o.scrollSpeed\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {\r\n\t\t\t$.ui.ddmanager.prepareOffsets( i, event );\r\n\t\t}\r\n\r\n\t}\r\n} );\r\n\r\n$.ui.plugin.add( \"draggable\", \"snap\", {\r\n\tstart: function( event, ui, i ) {\r\n\r\n\t\tvar o = i.options;\r\n\r\n\t\ti.snapElements = [];\r\n\r\n\t\t$( o.snap.constructor !== String ? ( o.snap.items || \":data(ui-draggable)\" ) : o.snap )\r\n\t\t\t.each( function() {\r\n\t\t\t\tvar $t = $( this ),\r\n\t\t\t\t\t$o = $t.offset();\r\n\t\t\t\tif ( this !== i.element[ 0 ] ) {\r\n\t\t\t\t\ti.snapElements.push( {\r\n\t\t\t\t\t\titem: this,\r\n\t\t\t\t\t\twidth: $t.outerWidth(), height: $t.outerHeight(),\r\n\t\t\t\t\t\ttop: $o.top, left: $o.left\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\r\n\t},\r\n\tdrag: function( event, ui, inst ) {\r\n\r\n\t\tvar ts, bs, ls, rs, l, r, t, b, i, first,\r\n\t\t\to = inst.options,\r\n\t\t\td = o.snapTolerance,\r\n\t\t\tx1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,\r\n\t\t\ty1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;\r\n\r\n\t\tfor ( i = inst.snapElements.length - 1; i >= 0; i-- ) {\r\n\r\n\t\t\tl = inst.snapElements[ i ].left - inst.margins.left;\r\n\t\t\tr = l + inst.snapElements[ i ].width;\r\n\t\t\tt = inst.snapElements[ i ].top - inst.margins.top;\r\n\t\t\tb = t + inst.snapElements[ i ].height;\r\n\r\n\t\t\tif ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d ||\r\n\t\t\t\t\t!$.contains( inst.snapElements[ i ].item.ownerDocument,\r\n\t\t\t\t\tinst.snapElements[ i ].item ) ) {\r\n\t\t\t\tif ( inst.snapElements[ i ].snapping ) {\r\n\t\t\t\t\tif ( inst.options.snap.release ) {\r\n\t\t\t\t\t\tinst.options.snap.release.call(\r\n\t\t\t\t\t\t\tinst.element,\r\n\t\t\t\t\t\t\tevent,\r\n\t\t\t\t\t\t\t$.extend( inst._uiHash(), { snapItem: inst.snapElements[ i ].item } )\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tinst.snapElements[ i ].snapping = false;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif ( o.snapMode !== \"inner\" ) {\r\n\t\t\t\tts = Math.abs( t - y2 ) <= d;\r\n\t\t\t\tbs = Math.abs( b - y1 ) <= d;\r\n\t\t\t\tls = Math.abs( l - x2 ) <= d;\r\n\t\t\t\trs = Math.abs( r - x1 ) <= d;\r\n\t\t\t\tif ( ts ) {\r\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\r\n\t\t\t\t\t\ttop: t - inst.helperProportions.height,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t} ).top;\r\n\t\t\t\t}\r\n\t\t\t\tif ( bs ) {\r\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\r\n\t\t\t\t\t\ttop: b,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t} ).top;\r\n\t\t\t\t}\r\n\t\t\t\tif ( ls ) {\r\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: l - inst.helperProportions.width\r\n\t\t\t\t\t} ).left;\r\n\t\t\t\t}\r\n\t\t\t\tif ( rs ) {\r\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: r\r\n\t\t\t\t\t} ).left;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfirst = ( ts || bs || ls || rs );\r\n\r\n\t\t\tif ( o.snapMode !== \"outer\" ) {\r\n\t\t\t\tts = Math.abs( t - y1 ) <= d;\r\n\t\t\t\tbs = Math.abs( b - y2 ) <= d;\r\n\t\t\t\tls = Math.abs( l - x1 ) <= d;\r\n\t\t\t\trs = Math.abs( r - x2 ) <= d;\r\n\t\t\t\tif ( ts ) {\r\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\r\n\t\t\t\t\t\ttop: t,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t} ).top;\r\n\t\t\t\t}\r\n\t\t\t\tif ( bs ) {\r\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\r\n\t\t\t\t\t\ttop: b - inst.helperProportions.height,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t} ).top;\r\n\t\t\t\t}\r\n\t\t\t\tif ( ls ) {\r\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: l\r\n\t\t\t\t\t} ).left;\r\n\t\t\t\t}\r\n\t\t\t\tif ( rs ) {\r\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: r - inst.helperProportions.width\r\n\t\t\t\t\t} ).left;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( !inst.snapElements[ i ].snapping && ( ts || bs || ls || rs || first ) ) {\r\n\t\t\t\tif ( inst.options.snap.snap ) {\r\n\t\t\t\t\tinst.options.snap.snap.call(\r\n\t\t\t\t\t\tinst.element,\r\n\t\t\t\t\t\tevent,\r\n\t\t\t\t\t\t$.extend( inst._uiHash(), {\r\n\t\t\t\t\t\t\tsnapItem: inst.snapElements[ i ].item\r\n\t\t\t\t\t\t} ) );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tinst.snapElements[ i ].snapping = ( ts || bs || ls || rs || first );\r\n\r\n\t\t}\r\n\r\n\t}\r\n} );\r\n\r\n$.ui.plugin.add( \"draggable\", \"stack\", {\r\n\tstart: function( event, ui, instance ) {\r\n\t\tvar min,\r\n\t\t\to = instance.options,\r\n\t\t\tgroup = $.makeArray( $( o.stack ) ).sort( function( a, b ) {\r\n\t\t\t\treturn ( parseInt( $( a ).css( \"zIndex\" ), 10 ) || 0 ) -\r\n\t\t\t\t\t( parseInt( $( b ).css( \"zIndex\" ), 10 ) || 0 );\r\n\t\t\t} );\r\n\r\n\t\tif ( !group.length ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmin = parseInt( $( group[ 0 ] ).css( \"zIndex\" ), 10 ) || 0;\r\n\t\t$( group ).each( function( i ) {\r\n\t\t\t$( this ).css( \"zIndex\", min + i );\r\n\t\t} );\r\n\t\tthis.css( \"zIndex\", ( min + group.length ) );\r\n\t}\r\n} );\r\n\r\n$.ui.plugin.add( \"draggable\", \"zIndex\", {\r\n\tstart: function( event, ui, instance ) {\r\n\t\tvar t = $( ui.helper ),\r\n\t\t\to = instance.options;\r\n\r\n\t\tif ( t.css( \"zIndex\" ) ) {\r\n\t\t\to._zIndex = t.css( \"zIndex\" );\r\n\t\t}\r\n\t\tt.css( \"zIndex\", o.zIndex );\r\n\t},\r\n\tstop: function( event, ui, instance ) {\r\n\t\tvar o = instance.options;\r\n\r\n\t\tif ( o._zIndex ) {\r\n\t\t\t$( ui.helper ).css( \"zIndex\", o._zIndex );\r\n\t\t}\r\n\t}\r\n} );\r\n\r\nvar widgetsDraggable = $.ui.draggable;\r\n\r\n\r\n/*!\r\n * jQuery UI Resizable 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Resizable\r\n//>>group: Interactions\r\n//>>description: Enables resize functionality for any element.\r\n//>>docs: https://api.jqueryui.com/resizable/\r\n//>>demos: https://jqueryui.com/resizable/\r\n//>>css.structure: ../../themes/base/core.css\r\n//>>css.structure: ../../themes/base/resizable.css\r\n//>>css.theme: ../../themes/base/theme.css\r\n\r\n\r\n$.widget( \"ui.resizable\", $.ui.mouse, {\r\n\tversion: \"1.14.1\",\r\n\twidgetEventPrefix: \"resize\",\r\n\toptions: {\r\n\t\talsoResize: false,\r\n\t\tanimate: false,\r\n\t\tanimateDuration: \"slow\",\r\n\t\tanimateEasing: \"swing\",\r\n\t\taspectRatio: false,\r\n\t\tautoHide: false,\r\n\t\tclasses: {\r\n\t\t\t\"ui-resizable-se\": \"ui-icon ui-icon-gripsmall-diagonal-se\"\r\n\t\t},\r\n\t\tcontainment: false,\r\n\t\tghost: false,\r\n\t\tgrid: false,\r\n\t\thandles: \"e,s,se\",\r\n\t\thelper: false,\r\n\t\tmaxHeight: null,\r\n\t\tmaxWidth: null,\r\n\t\tminHeight: 10,\r\n\t\tminWidth: 10,\r\n\r\n\t\t// See #7960\r\n\t\tzIndex: 90,\r\n\r\n\t\t// Callbacks\r\n\t\tresize: null,\r\n\t\tstart: null,\r\n\t\tstop: null\r\n\t},\r\n\r\n\t_num: function( value ) {\r\n\t\treturn parseFloat( value ) || 0;\r\n\t},\r\n\r\n\t_isNumber: function( value ) {\r\n\t\treturn !isNaN( parseFloat( value ) );\r\n\t},\r\n\r\n\t_hasScroll: function( el, a ) {\r\n\r\n\t\tvar scroll,\r\n\t\t\thas = false,\r\n\t\t\toverflow = $( el ).css( \"overflow\" );\r\n\r\n\t\tif ( overflow === \"hidden\" ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif ( overflow === \"scroll\" ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tscroll = ( a && a === \"left\" ) ? \"scrollLeft\" : \"scrollTop\";\r\n\r\n\t\tif ( el[ scroll ] > 0 ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// TODO: determine which cases actually cause this to happen\r\n\t\t// if the element doesn't have the scroll set, see if it's possible to\r\n\t\t// set the scroll\r\n\t\ttry {\r\n\t\t\tel[ scroll ] = 1;\r\n\t\t\thas = ( el[ scroll ] > 0 );\r\n\t\t\tel[ scroll ] = 0;\r\n\t\t} catch ( e ) {\r\n\r\n\t\t\t// `el` might be a string, then setting `scroll` will throw\r\n\t\t\t// an error in strict mode; ignore it.\r\n\t\t}\r\n\t\treturn has;\r\n\t},\r\n\r\n\t_create: function() {\r\n\r\n\t\tvar margins,\r\n\t\t\to = this.options,\r\n\t\t\tthat = this;\r\n\t\tthis._addClass( \"ui-resizable\" );\r\n\r\n\t\t$.extend( this, {\r\n\t\t\t_aspectRatio: !!( o.aspectRatio ),\r\n\t\t\taspectRatio: o.aspectRatio,\r\n\t\t\toriginalElement: this.element,\r\n\t\t\t_proportionallyResizeElements: [],\r\n\t\t\t_helper: o.helper || o.ghost || o.animate ? o.helper || \"ui-resizable-helper\" : null\r\n\t\t} );\r\n\r\n\t\t// Wrap the element if it cannot hold child nodes\r\n\t\tif ( this.element[ 0 ].nodeName.match( /^(canvas|textarea|input|select|button|img)$/i ) ) {\r\n\r\n\t\t\tthis.element.wrap(\r\n\t\t\t\t$( \"<div class='ui-wrapper'></div>\" ).css( {\r\n\t\t\t\t\toverflow: \"hidden\",\r\n\t\t\t\t\tposition: this.element.css( \"position\" ),\r\n\t\t\t\t\twidth: this.element.outerWidth(),\r\n\t\t\t\t\theight: this.element.outerHeight(),\r\n\t\t\t\t\ttop: this.element.css( \"top\" ),\r\n\t\t\t\t\tleft: this.element.css( \"left\" )\r\n\t\t\t\t} )\r\n\t\t\t);\r\n\r\n\t\t\tthis.element = this.element.parent().data(\r\n\t\t\t\t\"ui-resizable\", this.element.resizable( \"instance\" )\r\n\t\t\t);\r\n\r\n\t\t\tthis.elementIsWrapper = true;\r\n\r\n\t\t\tmargins = {\r\n\t\t\t\tmarginTop: this.originalElement.css( \"marginTop\" ),\r\n\t\t\t\tmarginRight: this.originalElement.css( \"marginRight\" ),\r\n\t\t\t\tmarginBottom: this.originalElement.css( \"marginBottom\" ),\r\n\t\t\t\tmarginLeft: this.originalElement.css( \"marginLeft\" )\r\n\t\t\t};\r\n\r\n\t\t\tthis.element.css( margins );\r\n\r\n\t\t\t// Support: Safari\r\n\t\t\t// Prevent Safari textarea resize\r\n\t\t\tthis.originalResizeStyle = this.originalElement.css( \"resize\" );\r\n\t\t\tthis.originalElement.css( \"resize\", \"none\" );\r\n\r\n\t\t\tthis._proportionallyResizeElements.push( this.originalElement.css( {\r\n\t\t\t\tposition: \"static\",\r\n\t\t\t\tzoom: 1,\r\n\t\t\t\tdisplay: \"block\"\r\n\t\t\t} ) );\r\n\r\n\t\t\tthis._proportionallyResize();\r\n\t\t}\r\n\r\n\t\tthis._setupHandles();\r\n\r\n\t\tif ( o.autoHide ) {\r\n\t\t\t$( this.element )\r\n\t\t\t\t.on( \"mouseenter\", function() {\r\n\t\t\t\t\tif ( o.disabled ) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthat._removeClass( \"ui-resizable-autohide\" );\r\n\t\t\t\t\tthat._handles.show();\r\n\t\t\t\t} )\r\n\t\t\t\t.on( \"mouseleave\", function() {\r\n\t\t\t\t\tif ( o.disabled ) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( !that.resizing ) {\r\n\t\t\t\t\t\tthat._addClass( \"ui-resizable-autohide\" );\r\n\t\t\t\t\t\tthat._handles.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t}\r\n\r\n\t\tthis._mouseInit();\r\n\t},\r\n\r\n\t_destroy: function() {\r\n\r\n\t\tthis._mouseDestroy();\r\n\t\tthis._addedHandles.remove();\r\n\r\n\t\tvar wrapper,\r\n\t\t\t_destroy = function( exp ) {\r\n\t\t\t\t$( exp )\r\n\t\t\t\t\t.removeData( \"resizable\" )\r\n\t\t\t\t\t.removeData( \"ui-resizable\" )\r\n\t\t\t\t\t.off( \".resizable\" );\r\n\t\t\t};\r\n\r\n\t\t// TODO: Unwrap at same DOM position\r\n\t\tif ( this.elementIsWrapper ) {\r\n\t\t\t_destroy( this.element );\r\n\t\t\twrapper = this.element;\r\n\t\t\tthis.originalElement.css( {\r\n\t\t\t\tposition: wrapper.css( \"position\" ),\r\n\t\t\t\twidth: wrapper.outerWidth(),\r\n\t\t\t\theight: wrapper.outerHeight(),\r\n\t\t\t\ttop: wrapper.css( \"top\" ),\r\n\t\t\t\tleft: wrapper.css( \"left\" )\r\n\t\t\t} ).insertAfter( wrapper );\r\n\t\t\twrapper.remove();\r\n\t\t}\r\n\r\n\t\tthis.originalElement.css( \"resize\", this.originalResizeStyle );\r\n\t\t_destroy( this.originalElement );\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\t\tthis._super( key, value );\r\n\r\n\t\tswitch ( key ) {\r\n\t\tcase \"handles\":\r\n\t\t\tthis._removeHandles();\r\n\t\t\tthis._setupHandles();\r\n\t\t\tbreak;\r\n\t\tcase \"aspectRatio\":\r\n\t\t\tthis._aspectRatio = !!value;\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tbreak;\r\n\t\t}\r\n\t},\r\n\r\n\t_setupHandles: function() {\r\n\t\tvar o = this.options, handle, i, n, hname, axis, that = this;\r\n\t\tthis.handles = o.handles ||\r\n\t\t\t( !$( \".ui-resizable-handle\", this.element ).length ?\r\n\t\t\t\t\"e,s,se\" : {\r\n\t\t\t\t\tn: \".ui-resizable-n\",\r\n\t\t\t\t\te: \".ui-resizable-e\",\r\n\t\t\t\t\ts: \".ui-resizable-s\",\r\n\t\t\t\t\tw: \".ui-resizable-w\",\r\n\t\t\t\t\tse: \".ui-resizable-se\",\r\n\t\t\t\t\tsw: \".ui-resizable-sw\",\r\n\t\t\t\t\tne: \".ui-resizable-ne\",\r\n\t\t\t\t\tnw: \".ui-resizable-nw\"\r\n\t\t\t\t} );\r\n\r\n\t\tthis._handles = $();\r\n\t\tthis._addedHandles = $();\r\n\t\tif ( this.handles.constructor === String ) {\r\n\r\n\t\t\tif ( this.handles === \"all\" ) {\r\n\t\t\t\tthis.handles = \"n,e,s,w,se,sw,ne,nw\";\r\n\t\t\t}\r\n\r\n\t\t\tn = this.handles.split( \",\" );\r\n\t\t\tthis.handles = {};\r\n\r\n\t\t\tfor ( i = 0; i < n.length; i++ ) {\r\n\r\n\t\t\t\thandle = String.prototype.trim.call( n[ i ] );\r\n\t\t\t\thname = \"ui-resizable-\" + handle;\r\n\t\t\t\taxis = $( \"<div>\" );\r\n\t\t\t\tthis._addClass( axis, \"ui-resizable-handle \" + hname );\r\n\r\n\t\t\t\taxis.css( { zIndex: o.zIndex } );\r\n\r\n\t\t\t\tthis.handles[ handle ] = \".ui-resizable-\" + handle;\r\n\t\t\t\tif ( !this.element.children( this.handles[ handle ] ).length ) {\r\n\t\t\t\t\tthis.element.append( axis );\r\n\t\t\t\t\tthis._addedHandles = this._addedHandles.add( axis );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tthis._renderAxis = function( target ) {\r\n\r\n\t\t\tvar i, axis, padPos, padWrapper;\r\n\r\n\t\t\ttarget = target || this.element;\r\n\r\n\t\t\tfor ( i in this.handles ) {\r\n\r\n\t\t\t\tif ( this.handles[ i ].constructor === String ) {\r\n\t\t\t\t\tthis.handles[ i ] = this.element.children( this.handles[ i ] ).first().show();\r\n\t\t\t\t} else if ( this.handles[ i ].jquery || this.handles[ i ].nodeType ) {\r\n\t\t\t\t\tthis.handles[ i ] = $( this.handles[ i ] );\r\n\t\t\t\t\tthis._on( this.handles[ i ], { \"mousedown\": that._mouseDown } );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( this.elementIsWrapper &&\r\n\t\t\t\t\t\tthis.originalElement[ 0 ]\r\n\t\t\t\t\t\t\t.nodeName\r\n\t\t\t\t\t\t\t.match( /^(textarea|input|select|button)$/i ) ) {\r\n\t\t\t\t\taxis = $( this.handles[ i ], this.element );\r\n\r\n\t\t\t\t\tpadWrapper = /sw|ne|nw|se|n|s/.test( i ) ?\r\n\t\t\t\t\t\taxis.outerHeight() :\r\n\t\t\t\t\t\taxis.outerWidth();\r\n\r\n\t\t\t\t\tpadPos = [ \"padding\",\r\n\t\t\t\t\t\t/ne|nw|n/.test( i ) ? \"Top\" :\r\n\t\t\t\t\t\t/se|sw|s/.test( i ) ? \"Bottom\" :\r\n\t\t\t\t\t\t/^e$/.test( i ) ? \"Right\" : \"Left\" ].join( \"\" );\r\n\r\n\t\t\t\t\ttarget.css( padPos, padWrapper );\r\n\r\n\t\t\t\t\tthis._proportionallyResize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._handles = this._handles.add( this.handles[ i ] );\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// TODO: make renderAxis a prototype function\r\n\t\tthis._renderAxis( this.element );\r\n\r\n\t\tthis._handles = this._handles.add( this.element.find( \".ui-resizable-handle\" ) );\r\n\t\tthis._handles.disableSelection();\r\n\r\n\t\tthis._handles.on( \"mouseover\", function() {\r\n\t\t\tif ( !that.resizing ) {\r\n\t\t\t\tif ( this.className ) {\r\n\t\t\t\t\taxis = this.className.match( /ui-resizable-(se|sw|ne|nw|n|e|s|w)/i );\r\n\t\t\t\t}\r\n\t\t\t\tthat.axis = axis && axis[ 1 ] ? axis[ 1 ] : \"se\";\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\tif ( o.autoHide ) {\r\n\t\t\tthis._handles.hide();\r\n\t\t\tthis._addClass( \"ui-resizable-autohide\" );\r\n\t\t}\r\n\t},\r\n\r\n\t_removeHandles: function() {\r\n\t\tthis._addedHandles.remove();\r\n\t},\r\n\r\n\t_mouseCapture: function( event ) {\r\n\t\tvar i, handle,\r\n\t\t\tcapture = false;\r\n\r\n\t\tfor ( i in this.handles ) {\r\n\t\t\thandle = $( this.handles[ i ] )[ 0 ];\r\n\t\t\tif ( handle === event.target || $.contains( handle, event.target ) ) {\r\n\t\t\t\tcapture = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn !this.options.disabled && capture;\r\n\t},\r\n\r\n\t_mouseStart: function( event ) {\r\n\r\n\t\tvar curleft, curtop, cursor, calculatedSize,\r\n\t\t\to = this.options,\r\n\t\t\tel = this.element;\r\n\r\n\t\tthis.resizing = true;\r\n\r\n\t\tthis._renderProxy();\r\n\r\n\t\tcurleft = this._num( this.helper.css( \"left\" ) );\r\n\t\tcurtop = this._num( this.helper.css( \"top\" ) );\r\n\r\n\t\tif ( o.containment ) {\r\n\t\t\tcurleft += $( o.containment ).scrollLeft() || 0;\r\n\t\t\tcurtop += $( o.containment ).scrollTop() || 0;\r\n\t\t}\r\n\r\n\t\tthis.offset = this.helper.offset();\r\n\t\tthis.position = { left: curleft, top: curtop };\r\n\r\n\t\tif ( !this._helper ) {\r\n\t\t\tcalculatedSize = this._calculateAdjustedElementDimensions( el );\r\n\t\t}\r\n\r\n\t\tthis.size = this._helper ? {\r\n\t\t\t\twidth: this.helper.width(),\r\n\t\t\t\theight: this.helper.height()\r\n\t\t\t} : {\r\n\t\t\t\twidth: calculatedSize.width,\r\n\t\t\t\theight: calculatedSize.height\r\n\t\t\t};\r\n\r\n\t\tthis.originalSize = this._helper ? {\r\n\t\t\t\twidth: el.outerWidth(),\r\n\t\t\t\theight: el.outerHeight()\r\n\t\t\t} : {\r\n\t\t\t\twidth: calculatedSize.width,\r\n\t\t\t\theight: calculatedSize.height\r\n\t\t\t};\r\n\r\n\t\tthis.sizeDiff = {\r\n\t\t\twidth: el.outerWidth() - el.width(),\r\n\t\t\theight: el.outerHeight() - el.height()\r\n\t\t};\r\n\r\n\t\tthis.originalPosition = { left: curleft, top: curtop };\r\n\t\tthis.originalMousePosition = { left: event.pageX, top: event.pageY };\r\n\r\n\t\tthis.aspectRatio = ( typeof o.aspectRatio === \"number\" ) ?\r\n\t\t\to.aspectRatio :\r\n\t\t\t( ( this.originalSize.width / this.originalSize.height ) || 1 );\r\n\r\n\t\tcursor = $( \".ui-resizable-\" + this.axis ).css( \"cursor\" );\r\n\t\t$( \"body\" ).css( \"cursor\", cursor === \"auto\" ? this.axis + \"-resize\" : cursor );\r\n\r\n\t\tthis._addClass( \"ui-resizable-resizing\" );\r\n\t\tthis._propagate( \"start\", event );\r\n\t\treturn true;\r\n\t},\r\n\r\n\t_mouseDrag: function( event ) {\r\n\r\n\t\tvar data, props,\r\n\t\t\tsmp = this.originalMousePosition,\r\n\t\t\ta = this.axis,\r\n\t\t\tdx = ( event.pageX - smp.left ) || 0,\r\n\t\t\tdy = ( event.pageY - smp.top ) || 0,\r\n\t\t\ttrigger = this._change[ a ];\r\n\r\n\t\tthis._updatePrevProperties();\r\n\r\n\t\tif ( !trigger ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tdata = trigger.apply( this, [ event, dx, dy ] );\r\n\r\n\t\tthis._updateVirtualBoundaries( event.shiftKey );\r\n\t\tif ( this._aspectRatio || event.shiftKey ) {\r\n\t\t\tdata = this._updateRatio( data, event );\r\n\t\t}\r\n\r\n\t\tdata = this._respectSize( data, event );\r\n\r\n\t\tthis._updateCache( data );\r\n\r\n\t\tthis._propagate( \"resize\", event );\r\n\r\n\t\tprops = this._applyChanges();\r\n\r\n\t\tif ( !this._helper && this._proportionallyResizeElements.length ) {\r\n\t\t\tthis._proportionallyResize();\r\n\t\t}\r\n\r\n\t\tif ( !$.isEmptyObject( props ) ) {\r\n\t\t\tthis._updatePrevProperties();\r\n\t\t\tthis._trigger( \"resize\", event, this.ui() );\r\n\t\t\tthis._applyChanges();\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\t_mouseStop: function( event ) {\r\n\r\n\t\tthis.resizing = false;\r\n\t\tvar pr, ista, soffseth, soffsetw, s, left, top,\r\n\t\t\to = this.options, that = this;\r\n\r\n\t\tif ( this._helper ) {\r\n\r\n\t\t\tpr = this._proportionallyResizeElements;\r\n\t\t\tista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName );\r\n\t\t\tsoffseth = ista && this._hasScroll( pr[ 0 ], \"left\" ) ? 0 : that.sizeDiff.height;\r\n\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\r\n\r\n\t\t\ts = {\r\n\t\t\t\twidth: ( that.helper.width()  - soffsetw ),\r\n\t\t\t\theight: ( that.helper.height() - soffseth )\r\n\t\t\t};\r\n\t\t\tleft = ( parseFloat( that.element.css( \"left\" ) ) +\r\n\t\t\t\t( that.position.left - that.originalPosition.left ) ) || null;\r\n\t\t\ttop = ( parseFloat( that.element.css( \"top\" ) ) +\r\n\t\t\t\t( that.position.top - that.originalPosition.top ) ) || null;\r\n\r\n\t\t\tif ( !o.animate ) {\r\n\t\t\t\tthis.element.css( $.extend( s, { top: top, left: left } ) );\r\n\t\t\t}\r\n\r\n\t\t\tthat.helper.height( that.size.height );\r\n\t\t\tthat.helper.width( that.size.width );\r\n\r\n\t\t\tif ( this._helper && !o.animate ) {\r\n\t\t\t\tthis._proportionallyResize();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t$( \"body\" ).css( \"cursor\", \"auto\" );\r\n\r\n\t\tthis._removeClass( \"ui-resizable-resizing\" );\r\n\r\n\t\tthis._propagate( \"stop\", event );\r\n\r\n\t\tif ( this._helper ) {\r\n\t\t\tthis.helper.remove();\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\r\n\t},\r\n\r\n\t_updatePrevProperties: function() {\r\n\t\tthis.prevPosition = {\r\n\t\t\ttop: this.position.top,\r\n\t\t\tleft: this.position.left\r\n\t\t};\r\n\t\tthis.prevSize = {\r\n\t\t\twidth: this.size.width,\r\n\t\t\theight: this.size.height\r\n\t\t};\r\n\t},\r\n\r\n\t_applyChanges: function() {\r\n\t\tvar props = {};\r\n\r\n\t\tif ( this.position.top !== this.prevPosition.top ) {\r\n\t\t\tprops.top = this.position.top + \"px\";\r\n\t\t}\r\n\t\tif ( this.position.left !== this.prevPosition.left ) {\r\n\t\t\tprops.left = this.position.left + \"px\";\r\n\t\t}\r\n\r\n\t\tthis.helper.css( props );\r\n\r\n\t\tif ( this.size.width !== this.prevSize.width ) {\r\n\t\t\tprops.width = this.size.width + \"px\";\r\n\t\t\tthis.helper.width( props.width );\r\n\t\t}\r\n\t\tif ( this.size.height !== this.prevSize.height ) {\r\n\t\t\tprops.height = this.size.height + \"px\";\r\n\t\t\tthis.helper.height( props.height );\r\n\t\t}\r\n\r\n\t\treturn props;\r\n\t},\r\n\r\n\t_updateVirtualBoundaries: function( forceAspectRatio ) {\r\n\t\tvar pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,\r\n\t\t\to = this.options;\r\n\r\n\t\tb = {\r\n\t\t\tminWidth: this._isNumber( o.minWidth ) ? o.minWidth : 0,\r\n\t\t\tmaxWidth: this._isNumber( o.maxWidth ) ? o.maxWidth : Infinity,\r\n\t\t\tminHeight: this._isNumber( o.minHeight ) ? o.minHeight : 0,\r\n\t\t\tmaxHeight: this._isNumber( o.maxHeight ) ? o.maxHeight : Infinity\r\n\t\t};\r\n\r\n\t\tif ( this._aspectRatio || forceAspectRatio ) {\r\n\t\t\tpMinWidth = b.minHeight * this.aspectRatio;\r\n\t\t\tpMinHeight = b.minWidth / this.aspectRatio;\r\n\t\t\tpMaxWidth = b.maxHeight * this.aspectRatio;\r\n\t\t\tpMaxHeight = b.maxWidth / this.aspectRatio;\r\n\r\n\t\t\tif ( pMinWidth > b.minWidth ) {\r\n\t\t\t\tb.minWidth = pMinWidth;\r\n\t\t\t}\r\n\t\t\tif ( pMinHeight > b.minHeight ) {\r\n\t\t\t\tb.minHeight = pMinHeight;\r\n\t\t\t}\r\n\t\t\tif ( pMaxWidth < b.maxWidth ) {\r\n\t\t\t\tb.maxWidth = pMaxWidth;\r\n\t\t\t}\r\n\t\t\tif ( pMaxHeight < b.maxHeight ) {\r\n\t\t\t\tb.maxHeight = pMaxHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._vBoundaries = b;\r\n\t},\r\n\r\n\t_updateCache: function( data ) {\r\n\t\tthis.offset = this.helper.offset();\r\n\t\tif ( this._isNumber( data.left ) ) {\r\n\t\t\tthis.position.left = data.left;\r\n\t\t}\r\n\t\tif ( this._isNumber( data.top ) ) {\r\n\t\t\tthis.position.top = data.top;\r\n\t\t}\r\n\t\tif ( this._isNumber( data.height ) ) {\r\n\t\t\tthis.size.height = data.height;\r\n\t\t}\r\n\t\tif ( this._isNumber( data.width ) ) {\r\n\t\t\tthis.size.width = data.width;\r\n\t\t}\r\n\t},\r\n\r\n\t_updateRatio: function( data ) {\r\n\r\n\t\tvar cpos = this.position,\r\n\t\t\tcsize = this.size,\r\n\t\t\ta = this.axis;\r\n\r\n\t\tif ( this._isNumber( data.height ) ) {\r\n\t\t\tdata.width = ( data.height * this.aspectRatio );\r\n\t\t} else if ( this._isNumber( data.width ) ) {\r\n\t\t\tdata.height = ( data.width / this.aspectRatio );\r\n\t\t}\r\n\r\n\t\tif ( a === \"sw\" ) {\r\n\t\t\tdata.left = cpos.left + ( csize.width - data.width );\r\n\t\t\tdata.top = null;\r\n\t\t}\r\n\t\tif ( a === \"nw\" ) {\r\n\t\t\tdata.top = cpos.top + ( csize.height - data.height );\r\n\t\t\tdata.left = cpos.left + ( csize.width - data.width );\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t},\r\n\r\n\t_respectSize: function( data ) {\r\n\r\n\t\tvar o = this._vBoundaries,\r\n\t\t\ta = this.axis,\r\n\t\t\tismaxw = this._isNumber( data.width ) && o.maxWidth && ( o.maxWidth < data.width ),\r\n\t\t\tismaxh = this._isNumber( data.height ) && o.maxHeight && ( o.maxHeight < data.height ),\r\n\t\t\tisminw = this._isNumber( data.width ) && o.minWidth && ( o.minWidth > data.width ),\r\n\t\t\tisminh = this._isNumber( data.height ) && o.minHeight && ( o.minHeight > data.height ),\r\n\t\t\tdw = this.originalPosition.left + this.originalSize.width,\r\n\t\t\tdh = this.originalPosition.top + this.originalSize.height,\r\n\t\t\tcw = /sw|nw|w/.test( a ), ch = /nw|ne|n/.test( a );\r\n\t\tif ( isminw ) {\r\n\t\t\tdata.width = o.minWidth;\r\n\t\t}\r\n\t\tif ( isminh ) {\r\n\t\t\tdata.height = o.minHeight;\r\n\t\t}\r\n\t\tif ( ismaxw ) {\r\n\t\t\tdata.width = o.maxWidth;\r\n\t\t}\r\n\t\tif ( ismaxh ) {\r\n\t\t\tdata.height = o.maxHeight;\r\n\t\t}\r\n\r\n\t\tif ( isminw && cw ) {\r\n\t\t\tdata.left = dw - o.minWidth;\r\n\t\t}\r\n\t\tif ( ismaxw && cw ) {\r\n\t\t\tdata.left = dw - o.maxWidth;\r\n\t\t}\r\n\t\tif ( isminh && ch ) {\r\n\t\t\tdata.top = dh - o.minHeight;\r\n\t\t}\r\n\t\tif ( ismaxh && ch ) {\r\n\t\t\tdata.top = dh - o.maxHeight;\r\n\t\t}\r\n\r\n\t\t// Fixing jump error on top/left - bug #2330\r\n\t\tif ( !data.width && !data.height && !data.left && data.top ) {\r\n\t\t\tdata.top = null;\r\n\t\t} else if ( !data.width && !data.height && !data.top && data.left ) {\r\n\t\t\tdata.left = null;\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t},\r\n\r\n\t_getPaddingPlusBorderDimensions: function( element ) {\r\n\t\tvar i = 0,\r\n\t\t\twidths = [],\r\n\t\t\tborders = [\r\n\t\t\t\telement.css( \"borderTopWidth\" ),\r\n\t\t\t\telement.css( \"borderRightWidth\" ),\r\n\t\t\t\telement.css( \"borderBottomWidth\" ),\r\n\t\t\t\telement.css( \"borderLeftWidth\" )\r\n\t\t\t],\r\n\t\t\tpaddings = [\r\n\t\t\t\telement.css( \"paddingTop\" ),\r\n\t\t\t\telement.css( \"paddingRight\" ),\r\n\t\t\t\telement.css( \"paddingBottom\" ),\r\n\t\t\t\telement.css( \"paddingLeft\" )\r\n\t\t\t];\r\n\r\n\t\tfor ( ; i < 4; i++ ) {\r\n\t\t\twidths[ i ] = ( parseFloat( borders[ i ] ) || 0 );\r\n\t\t\twidths[ i ] += ( parseFloat( paddings[ i ] ) || 0 );\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\theight: widths[ 0 ] + widths[ 2 ],\r\n\t\t\twidth: widths[ 1 ] + widths[ 3 ]\r\n\t\t};\r\n\t},\r\n\r\n\t_calculateAdjustedElementDimensions: function( element ) {\r\n\t\tvar elWidth, elHeight, paddingBorder,\r\n\t\t\tce = element.get( 0 );\r\n\r\n\t\tif ( element.css( \"box-sizing\" ) !== \"content-box\" ||\r\n\t\t\t( !this._hasScroll( ce ) && !this._hasScroll( ce, \"left\" ) ) ) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\theight: parseFloat( element.css( \"height\" ) ),\r\n\t\t\t\t\twidth: parseFloat( element.css( \"width\" ) )\r\n\t\t\t\t};\r\n\t\t}\r\n\r\n\t\t// Check if CSS inline styles are set and use those (usually from previous resizes)\r\n\t\telWidth = parseFloat( ce.style.width );\r\n\t\telHeight = parseFloat( ce.style.height );\r\n\r\n\t\tpaddingBorder = this._getPaddingPlusBorderDimensions( element );\r\n\t\telWidth = isNaN( elWidth ) ?\r\n\t\t\tthis._getElementTheoreticalSize( element, paddingBorder, \"width\" ) :\r\n\t\t\telWidth;\r\n\t\telHeight = isNaN( elHeight ) ?\r\n\t\t\tthis._getElementTheoreticalSize( element, paddingBorder, \"height\" ) :\r\n\t\t\telHeight;\r\n\r\n\t\treturn {\r\n\t\t\theight: elHeight,\r\n\t\t\twidth: elWidth\r\n\t\t};\r\n\t},\r\n\r\n\t_getElementTheoreticalSize: function( element, extraSize, dimension ) {\r\n\r\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\r\n\t\tvar size = Math.max( 0, Math.ceil(\r\n\t\t\telement.get( 0 )[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\r\n\t\t\textraSize[ dimension ] -\r\n\t\t\t0.5\r\n\r\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine theoretical size.\r\n\t\t// Use an explicit zero to avoid NaN.\r\n\t\t// See https://github.com/jquery/jquery/issues/3964\r\n\t\t) ) || 0;\r\n\r\n\t\treturn size;\r\n\t},\r\n\r\n\t_proportionallyResize: function() {\r\n\r\n\t\tif ( !this._proportionallyResizeElements.length ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar prel,\r\n\t\t\ti = 0,\r\n\t\t\telement = this.helper || this.element;\r\n\r\n\t\tfor ( ; i < this._proportionallyResizeElements.length; i++ ) {\r\n\r\n\t\t\tprel = this._proportionallyResizeElements[ i ];\r\n\r\n\t\t\t// TODO: Seems like a bug to cache this.outerDimensions\r\n\t\t\t// considering that we are in a loop.\r\n\t\t\tif ( !this.outerDimensions ) {\r\n\t\t\t\tthis.outerDimensions = this._getPaddingPlusBorderDimensions( prel );\r\n\t\t\t}\r\n\r\n\t\t\tprel.css( {\r\n\t\t\t\theight: ( element.height() - this.outerDimensions.height ) || 0,\r\n\t\t\t\twidth: ( element.width() - this.outerDimensions.width ) || 0\r\n\t\t\t} );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_renderProxy: function() {\r\n\r\n\t\tvar el = this.element, o = this.options;\r\n\t\tthis.elementOffset = el.offset();\r\n\r\n\t\tif ( this._helper ) {\r\n\r\n\t\t\tthis.helper = this.helper || $( \"<div></div>\" ).css( { overflow: \"hidden\" } );\r\n\r\n\t\t\tthis._addClass( this.helper, this._helper );\r\n\t\t\tthis.helper.css( {\r\n\t\t\t\twidth: this.element.outerWidth(),\r\n\t\t\t\theight: this.element.outerHeight(),\r\n\t\t\t\tposition: \"absolute\",\r\n\t\t\t\tleft: this.elementOffset.left + \"px\",\r\n\t\t\t\ttop: this.elementOffset.top + \"px\",\r\n\t\t\t\tzIndex: ++o.zIndex //TODO: Don't modify option\r\n\t\t\t} );\r\n\r\n\t\t\tthis.helper\r\n\t\t\t\t.appendTo( \"body\" )\r\n\t\t\t\t.disableSelection();\r\n\r\n\t\t} else {\r\n\t\t\tthis.helper = this.element;\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_change: {\r\n\t\te: function( event, dx ) {\r\n\t\t\treturn { width: this.originalSize.width + dx };\r\n\t\t},\r\n\t\tw: function( event, dx ) {\r\n\t\t\tvar cs = this.originalSize, sp = this.originalPosition;\r\n\t\t\treturn { left: sp.left + dx, width: cs.width - dx };\r\n\t\t},\r\n\t\tn: function( event, dx, dy ) {\r\n\t\t\tvar cs = this.originalSize, sp = this.originalPosition;\r\n\t\t\treturn { top: sp.top + dy, height: cs.height - dy };\r\n\t\t},\r\n\t\ts: function( event, dx, dy ) {\r\n\t\t\treturn { height: this.originalSize.height + dy };\r\n\t\t},\r\n\t\tse: function( event, dx, dy ) {\r\n\t\t\treturn $.extend( this._change.s.apply( this, arguments ),\r\n\t\t\t\tthis._change.e.apply( this, [ event, dx, dy ] ) );\r\n\t\t},\r\n\t\tsw: function( event, dx, dy ) {\r\n\t\t\treturn $.extend( this._change.s.apply( this, arguments ),\r\n\t\t\t\tthis._change.w.apply( this, [ event, dx, dy ] ) );\r\n\t\t},\r\n\t\tne: function( event, dx, dy ) {\r\n\t\t\treturn $.extend( this._change.n.apply( this, arguments ),\r\n\t\t\t\tthis._change.e.apply( this, [ event, dx, dy ] ) );\r\n\t\t},\r\n\t\tnw: function( event, dx, dy ) {\r\n\t\t\treturn $.extend( this._change.n.apply( this, arguments ),\r\n\t\t\t\tthis._change.w.apply( this, [ event, dx, dy ] ) );\r\n\t\t}\r\n\t},\r\n\r\n\t_propagate: function( n, event ) {\r\n\t\t$.ui.plugin.call( this, n, [ event, this.ui() ] );\r\n\t\tif ( n !== \"resize\" ) {\r\n\t\t\tthis._trigger( n, event, this.ui() );\r\n\t\t}\r\n\t},\r\n\r\n\tplugins: {},\r\n\r\n\tui: function() {\r\n\t\treturn {\r\n\t\t\toriginalElement: this.originalElement,\r\n\t\t\telement: this.element,\r\n\t\t\thelper: this.helper,\r\n\t\t\tposition: this.position,\r\n\t\t\tsize: this.size,\r\n\t\t\toriginalSize: this.originalSize,\r\n\t\t\toriginalPosition: this.originalPosition\r\n\t\t};\r\n\t}\r\n\r\n} );\r\n\r\n/*\r\n * Resizable Extensions\r\n */\r\n\r\n$.ui.plugin.add( \"resizable\", \"animate\", {\r\n\r\n\tstop: function( event ) {\r\n\t\tvar that = $( this ).resizable( \"instance\" ),\r\n\t\t\to = that.options,\r\n\t\t\tpr = that._proportionallyResizeElements,\r\n\t\t\tista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName ),\r\n\t\t\tsoffseth = ista && that._hasScroll( pr[ 0 ], \"left\" ) ? 0 : that.sizeDiff.height,\r\n\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width,\r\n\t\t\tstyle = {\r\n\t\t\t\twidth: ( that.size.width - soffsetw ),\r\n\t\t\t\theight: ( that.size.height - soffseth )\r\n\t\t\t},\r\n\t\t\tleft = ( parseFloat( that.element.css( \"left\" ) ) +\r\n\t\t\t\t( that.position.left - that.originalPosition.left ) ) || null,\r\n\t\t\ttop = ( parseFloat( that.element.css( \"top\" ) ) +\r\n\t\t\t\t( that.position.top - that.originalPosition.top ) ) || null;\r\n\r\n\t\tthat.element.animate(\r\n\t\t\t$.extend( style, top && left ? { top: top, left: left } : {} ), {\r\n\t\t\t\tduration: o.animateDuration,\r\n\t\t\t\teasing: o.animateEasing,\r\n\t\t\t\tstep: function() {\r\n\r\n\t\t\t\t\tvar data = {\r\n\t\t\t\t\t\twidth: parseFloat( that.element.css( \"width\" ) ),\r\n\t\t\t\t\t\theight: parseFloat( that.element.css( \"height\" ) ),\r\n\t\t\t\t\t\ttop: parseFloat( that.element.css( \"top\" ) ),\r\n\t\t\t\t\t\tleft: parseFloat( that.element.css( \"left\" ) )\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tif ( pr && pr.length ) {\r\n\t\t\t\t\t\t$( pr[ 0 ] ).css( { width: data.width, height: data.height } );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Propagating resize, and updating values for each animation step\r\n\t\t\t\t\tthat._updateCache( data );\r\n\t\t\t\t\tthat._propagate( \"resize\", event );\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n} );\r\n\r\n$.ui.plugin.add( \"resizable\", \"containment\", {\r\n\r\n\tstart: function() {\r\n\t\tvar element, p, co, ch, cw, width, height,\r\n\t\t\tthat = $( this ).resizable( \"instance\" ),\r\n\t\t\to = that.options,\r\n\t\t\tel = that.element,\r\n\t\t\toc = o.containment,\r\n\t\t\tce = ( oc instanceof $ ) ?\r\n\t\t\t\toc.get( 0 ) :\r\n\t\t\t\t( /parent/.test( oc ) ) ? el.parent().get( 0 ) : oc;\r\n\r\n\t\tif ( !ce ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthat.containerElement = $( ce );\r\n\r\n\t\tif ( /document/.test( oc ) || oc === document ) {\r\n\t\t\tthat.containerOffset = {\r\n\t\t\t\tleft: 0,\r\n\t\t\t\ttop: 0\r\n\t\t\t};\r\n\t\t\tthat.containerPosition = {\r\n\t\t\t\tleft: 0,\r\n\t\t\t\ttop: 0\r\n\t\t\t};\r\n\r\n\t\t\tthat.parentData = {\r\n\t\t\t\telement: $( document ),\r\n\t\t\t\tleft: 0,\r\n\t\t\t\ttop: 0,\r\n\t\t\t\twidth: $( document ).width(),\r\n\t\t\t\theight: $( document ).height() || document.body.parentNode.scrollHeight\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\telement = $( ce );\r\n\t\t\tp = [];\r\n\t\t\t$( [ \"Top\", \"Right\", \"Left\", \"Bottom\" ] ).each( function( i, name ) {\r\n\t\t\t\tp[ i ] = that._num( element.css( \"padding\" + name ) );\r\n\t\t\t} );\r\n\r\n\t\t\tthat.containerOffset = element.offset();\r\n\t\t\tthat.containerPosition = element.position();\r\n\t\t\tthat.containerSize = {\r\n\t\t\t\theight: ( element.innerHeight() - p[ 3 ] ),\r\n\t\t\t\twidth: ( element.innerWidth() - p[ 1 ] )\r\n\t\t\t};\r\n\r\n\t\t\tco = that.containerOffset;\r\n\t\t\tch = that.containerSize.height;\r\n\t\t\tcw = that.containerSize.width;\r\n\t\t\twidth = ( that._hasScroll( ce, \"left\" ) ? ce.scrollWidth : cw );\r\n\t\t\theight = ( that._hasScroll( ce ) ? ce.scrollHeight : ch );\r\n\r\n\t\t\tthat.parentData = {\r\n\t\t\t\telement: ce,\r\n\t\t\t\tleft: co.left,\r\n\t\t\t\ttop: co.top,\r\n\t\t\t\twidth: width,\r\n\t\t\t\theight: height\r\n\t\t\t};\r\n\t\t}\r\n\t},\r\n\r\n\tresize: function( event ) {\r\n\t\tvar woset, hoset, isParent, isOffsetRelative,\r\n\t\t\tthat = $( this ).resizable( \"instance\" ),\r\n\t\t\to = that.options,\r\n\t\t\tco = that.containerOffset,\r\n\t\t\tcp = that.position,\r\n\t\t\tpRatio = that._aspectRatio || event.shiftKey,\r\n\t\t\tcop = {\r\n\t\t\t\ttop: 0,\r\n\t\t\t\tleft: 0\r\n\t\t\t},\r\n\t\t\tce = that.containerElement,\r\n\t\t\tcontinueResize = true;\r\n\r\n\t\tif ( ce[ 0 ] !== document && ( /static/ ).test( ce.css( \"position\" ) ) ) {\r\n\t\t\tcop = co;\r\n\t\t}\r\n\r\n\t\tif ( cp.left < ( that._helper ? co.left : 0 ) ) {\r\n\t\t\tthat.size.width = that.size.width +\r\n\t\t\t\t( that._helper ?\r\n\t\t\t\t\t( that.position.left - co.left ) :\r\n\t\t\t\t\t( that.position.left - cop.left ) );\r\n\r\n\t\t\tif ( pRatio ) {\r\n\t\t\t\tthat.size.height = that.size.width / that.aspectRatio;\r\n\t\t\t\tcontinueResize = false;\r\n\t\t\t}\r\n\t\t\tthat.position.left = o.helper ? co.left : 0;\r\n\t\t}\r\n\r\n\t\tif ( cp.top < ( that._helper ? co.top : 0 ) ) {\r\n\t\t\tthat.size.height = that.size.height +\r\n\t\t\t\t( that._helper ?\r\n\t\t\t\t\t( that.position.top - co.top ) :\r\n\t\t\t\t\tthat.position.top );\r\n\r\n\t\t\tif ( pRatio ) {\r\n\t\t\t\tthat.size.width = that.size.height * that.aspectRatio;\r\n\t\t\t\tcontinueResize = false;\r\n\t\t\t}\r\n\t\t\tthat.position.top = that._helper ? co.top : 0;\r\n\t\t}\r\n\r\n\t\tisParent = that.containerElement.get( 0 ) === that.element.parent().get( 0 );\r\n\t\tisOffsetRelative = /relative|absolute/.test( that.containerElement.css( \"position\" ) );\r\n\r\n\t\tif ( isParent && isOffsetRelative ) {\r\n\t\t\tthat.offset.left = that.parentData.left + that.position.left;\r\n\t\t\tthat.offset.top = that.parentData.top + that.position.top;\r\n\t\t} else {\r\n\t\t\tthat.offset.left = that.element.offset().left;\r\n\t\t\tthat.offset.top = that.element.offset().top;\r\n\t\t}\r\n\r\n\t\twoset = Math.abs( that.sizeDiff.width +\r\n\t\t\t( that._helper ?\r\n\t\t\t\tthat.offset.left - cop.left :\r\n\t\t\t\t( that.offset.left - co.left ) ) );\r\n\r\n\t\thoset = Math.abs( that.sizeDiff.height +\r\n\t\t\t( that._helper ?\r\n\t\t\t\tthat.offset.top - cop.top :\r\n\t\t\t\t( that.offset.top - co.top ) ) );\r\n\r\n\t\tif ( woset + that.size.width >= that.parentData.width ) {\r\n\t\t\tthat.size.width = that.parentData.width - woset;\r\n\t\t\tif ( pRatio ) {\r\n\t\t\t\tthat.size.height = that.size.width / that.aspectRatio;\r\n\t\t\t\tcontinueResize = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( hoset + that.size.height >= that.parentData.height ) {\r\n\t\t\tthat.size.height = that.parentData.height - hoset;\r\n\t\t\tif ( pRatio ) {\r\n\t\t\t\tthat.size.width = that.size.height * that.aspectRatio;\r\n\t\t\t\tcontinueResize = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( !continueResize ) {\r\n\t\t\tthat.position.left = that.prevPosition.left;\r\n\t\t\tthat.position.top = that.prevPosition.top;\r\n\t\t\tthat.size.width = that.prevSize.width;\r\n\t\t\tthat.size.height = that.prevSize.height;\r\n\t\t}\r\n\t},\r\n\r\n\tstop: function() {\r\n\t\tvar that = $( this ).resizable( \"instance\" ),\r\n\t\t\to = that.options,\r\n\t\t\tco = that.containerOffset,\r\n\t\t\tcop = that.containerPosition,\r\n\t\t\tce = that.containerElement,\r\n\t\t\thelper = $( that.helper ),\r\n\t\t\tho = helper.offset(),\r\n\t\t\tw = helper.outerWidth() - that.sizeDiff.width,\r\n\t\t\th = helper.outerHeight() - that.sizeDiff.height;\r\n\r\n\t\tif ( that._helper && !o.animate && ( /relative/ ).test( ce.css( \"position\" ) ) ) {\r\n\t\t\t$( this ).css( {\r\n\t\t\t\tleft: ho.left - cop.left - co.left,\r\n\t\t\t\twidth: w,\r\n\t\t\t\theight: h\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\tif ( that._helper && !o.animate && ( /static/ ).test( ce.css( \"position\" ) ) ) {\r\n\t\t\t$( this ).css( {\r\n\t\t\t\tleft: ho.left - cop.left - co.left,\r\n\t\t\t\twidth: w,\r\n\t\t\t\theight: h\r\n\t\t\t} );\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n$.ui.plugin.add( \"resizable\", \"alsoResize\", {\r\n\r\n\tstart: function() {\r\n\t\tvar that = $( this ).resizable( \"instance\" ),\r\n\t\t\to = that.options;\r\n\r\n\t\t$( o.alsoResize ).each( function() {\r\n\t\t\tvar el = $( this ),\r\n\t\t\t\telSize = that._calculateAdjustedElementDimensions( el );\r\n\r\n\t\t\tel.data( \"ui-resizable-alsoresize\", {\r\n\t\t\t\twidth: elSize.width, height: elSize.height,\r\n\t\t\t\tleft: parseFloat( el.css( \"left\" ) ), top: parseFloat( el.css( \"top\" ) )\r\n\t\t\t} );\r\n\t\t} );\r\n\t},\r\n\r\n\tresize: function( event, ui ) {\r\n\t\tvar that = $( this ).resizable( \"instance\" ),\r\n\t\t\to = that.options,\r\n\t\t\tos = that.originalSize,\r\n\t\t\top = that.originalPosition,\r\n\t\t\tdelta = {\r\n\t\t\t\theight: ( that.size.height - os.height ) || 0,\r\n\t\t\t\twidth: ( that.size.width - os.width ) || 0,\r\n\t\t\t\ttop: ( that.position.top - op.top ) || 0,\r\n\t\t\t\tleft: ( that.position.left - op.left ) || 0\r\n\t\t\t};\r\n\r\n\t\t\t$( o.alsoResize ).each( function() {\r\n\t\t\t\tvar el = $( this ), start = $( this ).data( \"ui-resizable-alsoresize\" ), style = {},\r\n\t\t\t\t\tcss = el.parents( ui.originalElement[ 0 ] ).length ?\r\n\t\t\t\t\t\t\t[ \"width\", \"height\" ] :\r\n\t\t\t\t\t\t\t[ \"width\", \"height\", \"top\", \"left\" ];\r\n\r\n\t\t\t\t$.each( css, function( i, prop ) {\r\n\t\t\t\t\tvar sum = ( start[ prop ] || 0 ) + ( delta[ prop ] || 0 );\r\n\t\t\t\t\tif ( sum && sum >= 0 ) {\r\n\t\t\t\t\t\tstyle[ prop ] = sum || null;\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\r\n\t\t\t\tel.css( style );\r\n\t\t\t} );\r\n\t},\r\n\r\n\tstop: function() {\r\n\t\t$( this ).removeData( \"ui-resizable-alsoresize\" );\r\n\t}\r\n} );\r\n\r\n$.ui.plugin.add( \"resizable\", \"ghost\", {\r\n\r\n\tstart: function() {\r\n\r\n\t\tvar that = $( this ).resizable( \"instance\" ), cs = that.size;\r\n\r\n\t\tthat.ghost = that.originalElement.clone();\r\n\t\tthat.ghost.css( {\r\n\t\t\topacity: 0.25,\r\n\t\t\tdisplay: \"block\",\r\n\t\t\tposition: \"relative\",\r\n\t\t\theight: cs.height,\r\n\t\t\twidth: cs.width,\r\n\t\t\tmargin: 0,\r\n\t\t\tleft: 0,\r\n\t\t\ttop: 0\r\n\t\t} );\r\n\r\n\t\tthat._addClass( that.ghost, \"ui-resizable-ghost\" );\r\n\r\n\t\t// DEPRECATED\r\n\t\t// TODO: remove after 1.12\r\n\t\tif ( $.uiBackCompat === true && typeof that.options.ghost === \"string\" ) {\r\n\r\n\t\t\t// Ghost option\r\n\t\t\tthat.ghost.addClass( this.options.ghost );\r\n\t\t}\r\n\r\n\t\tthat.ghost.appendTo( that.helper );\r\n\r\n\t},\r\n\r\n\tresize: function() {\r\n\t\tvar that = $( this ).resizable( \"instance\" );\r\n\t\tif ( that.ghost ) {\r\n\t\t\tthat.ghost.css( {\r\n\t\t\t\tposition: \"relative\",\r\n\t\t\t\theight: that.size.height,\r\n\t\t\t\twidth: that.size.width\r\n\t\t\t} );\r\n\t\t}\r\n\t},\r\n\r\n\tstop: function() {\r\n\t\tvar that = $( this ).resizable( \"instance\" );\r\n\t\tif ( that.ghost && that.helper ) {\r\n\t\t\tthat.helper.get( 0 ).removeChild( that.ghost.get( 0 ) );\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\n$.ui.plugin.add( \"resizable\", \"grid\", {\r\n\r\n\tresize: function() {\r\n\t\tvar outerDimensions,\r\n\t\t\tthat = $( this ).resizable( \"instance\" ),\r\n\t\t\to = that.options,\r\n\t\t\tcs = that.size,\r\n\t\t\tos = that.originalSize,\r\n\t\t\top = that.originalPosition,\r\n\t\t\ta = that.axis,\r\n\t\t\tgrid = typeof o.grid === \"number\" ? [ o.grid, o.grid ] : o.grid,\r\n\t\t\tgridX = ( grid[ 0 ] || 1 ),\r\n\t\t\tgridY = ( grid[ 1 ] || 1 ),\r\n\t\t\tox = Math.round( ( cs.width - os.width ) / gridX ) * gridX,\r\n\t\t\toy = Math.round( ( cs.height - os.height ) / gridY ) * gridY,\r\n\t\t\tnewWidth = os.width + ox,\r\n\t\t\tnewHeight = os.height + oy,\r\n\t\t\tisMaxWidth = o.maxWidth && ( o.maxWidth < newWidth ),\r\n\t\t\tisMaxHeight = o.maxHeight && ( o.maxHeight < newHeight ),\r\n\t\t\tisMinWidth = o.minWidth && ( o.minWidth > newWidth ),\r\n\t\t\tisMinHeight = o.minHeight && ( o.minHeight > newHeight );\r\n\r\n\t\to.grid = grid;\r\n\r\n\t\tif ( isMinWidth ) {\r\n\t\t\tnewWidth += gridX;\r\n\t\t}\r\n\t\tif ( isMinHeight ) {\r\n\t\t\tnewHeight += gridY;\r\n\t\t}\r\n\t\tif ( isMaxWidth ) {\r\n\t\t\tnewWidth -= gridX;\r\n\t\t}\r\n\t\tif ( isMaxHeight ) {\r\n\t\t\tnewHeight -= gridY;\r\n\t\t}\r\n\r\n\t\tif ( /^(se|s|e)$/.test( a ) ) {\r\n\t\t\tthat.size.width = newWidth;\r\n\t\t\tthat.size.height = newHeight;\r\n\t\t} else if ( /^(ne)$/.test( a ) ) {\r\n\t\t\tthat.size.width = newWidth;\r\n\t\t\tthat.size.height = newHeight;\r\n\t\t\tthat.position.top = op.top - oy;\r\n\t\t} else if ( /^(sw)$/.test( a ) ) {\r\n\t\t\tthat.size.width = newWidth;\r\n\t\t\tthat.size.height = newHeight;\r\n\t\t\tthat.position.left = op.left - ox;\r\n\t\t} else {\r\n\t\t\tif ( newHeight - gridY <= 0 || newWidth - gridX <= 0 ) {\r\n\t\t\t\touterDimensions = that._getPaddingPlusBorderDimensions( this );\r\n\t\t\t}\r\n\r\n\t\t\tif ( newHeight - gridY > 0 ) {\r\n\t\t\t\tthat.size.height = newHeight;\r\n\t\t\t\tthat.position.top = op.top - oy;\r\n\t\t\t} else {\r\n\t\t\t\tnewHeight = gridY - outerDimensions.height;\r\n\t\t\t\tthat.size.height = newHeight;\r\n\t\t\t\tthat.position.top = op.top + os.height - newHeight;\r\n\t\t\t}\r\n\t\t\tif ( newWidth - gridX > 0 ) {\r\n\t\t\t\tthat.size.width = newWidth;\r\n\t\t\t\tthat.position.left = op.left - ox;\r\n\t\t\t} else {\r\n\t\t\t\tnewWidth = gridX - outerDimensions.width;\r\n\t\t\t\tthat.size.width = newWidth;\r\n\t\t\t\tthat.position.left = op.left + os.width - newWidth;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\nvar widgetsResizable = $.ui.resizable;\r\n\r\n\r\n/*!\r\n * jQuery UI Dialog 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Dialog\r\n//>>group: Widgets\r\n//>>description: Displays customizable dialog windows.\r\n//>>docs: https://api.jqueryui.com/dialog/\r\n//>>demos: https://jqueryui.com/dialog/\r\n//>>css.structure: ../../themes/base/core.css\r\n//>>css.structure: ../../themes/base/dialog.css\r\n//>>css.theme: ../../themes/base/theme.css\r\n\r\n\r\n$.widget( \"ui.dialog\", {\r\n\tversion: \"1.14.1\",\r\n\toptions: {\r\n\t\tappendTo: \"body\",\r\n\t\tautoOpen: true,\r\n\t\tbuttons: [],\r\n\t\tclasses: {\r\n\t\t\t\"ui-dialog\": \"ui-corner-all\",\r\n\t\t\t\"ui-dialog-titlebar\": \"ui-corner-all\"\r\n\t\t},\r\n\t\tcloseOnEscape: true,\r\n\t\tcloseText: \"Close\",\r\n\t\tdraggable: true,\r\n\t\thide: null,\r\n\t\theight: \"auto\",\r\n\t\tmaxHeight: null,\r\n\t\tmaxWidth: null,\r\n\t\tminHeight: 150,\r\n\t\tminWidth: 150,\r\n\t\tmodal: false,\r\n\t\tposition: {\r\n\t\t\tmy: \"center\",\r\n\t\t\tat: \"center\",\r\n\t\t\tof: window,\r\n\t\t\tcollision: \"fit\",\r\n\r\n\t\t\t// Ensure the titlebar is always visible\r\n\t\t\tusing: function( pos ) {\r\n\t\t\t\tvar topOffset = $( this ).css( pos ).offset().top;\r\n\t\t\t\tif ( topOffset < 0 ) {\r\n\t\t\t\t\t$( this ).css( \"top\", pos.top - topOffset );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tresizable: true,\r\n\t\tshow: null,\r\n\t\ttitle: null,\r\n\t\tuiDialogTitleHeadingLevel: 0,\r\n\t\twidth: 300,\r\n\r\n\t\t// Callbacks\r\n\t\tbeforeClose: null,\r\n\t\tclose: null,\r\n\t\tdrag: null,\r\n\t\tdragStart: null,\r\n\t\tdragStop: null,\r\n\t\tfocus: null,\r\n\t\topen: null,\r\n\t\tresize: null,\r\n\t\tresizeStart: null,\r\n\t\tresizeStop: null\r\n\t},\r\n\r\n\tsizeRelatedOptions: {\r\n\t\tbuttons: true,\r\n\t\theight: true,\r\n\t\tmaxHeight: true,\r\n\t\tmaxWidth: true,\r\n\t\tminHeight: true,\r\n\t\tminWidth: true,\r\n\t\twidth: true\r\n\t},\r\n\r\n\tresizableRelatedOptions: {\r\n\t\tmaxHeight: true,\r\n\t\tmaxWidth: true,\r\n\t\tminHeight: true,\r\n\t\tminWidth: true\r\n\t},\r\n\r\n\t_create: function() {\r\n\t\tthis.originalCss = {\r\n\t\t\tdisplay: this.element[ 0 ].style.display,\r\n\t\t\twidth: this.element[ 0 ].style.width,\r\n\t\t\tminHeight: this.element[ 0 ].style.minHeight,\r\n\t\t\tmaxHeight: this.element[ 0 ].style.maxHeight,\r\n\t\t\theight: this.element[ 0 ].style.height\r\n\t\t};\r\n\t\tthis.originalPosition = {\r\n\t\t\tparent: this.element.parent(),\r\n\t\t\tindex: this.element.parent().children().index( this.element )\r\n\t\t};\r\n\t\tthis.originalTitle = this.element.attr( \"title\" );\r\n\t\tif ( this.options.title == null && this.originalTitle != null ) {\r\n\t\t\tthis.options.title = this.originalTitle;\r\n\t\t}\r\n\r\n\t\t// Dialogs can't be disabled\r\n\t\tif ( this.options.disabled ) {\r\n\t\t\tthis.options.disabled = false;\r\n\t\t}\r\n\r\n\t\tthis._createWrapper();\r\n\r\n\t\tthis.element\r\n\t\t\t.show()\r\n\t\t\t.removeAttr( \"title\" )\r\n\t\t\t.appendTo( this.uiDialog );\r\n\r\n\t\tthis._addClass( \"ui-dialog-content\", \"ui-widget-content\" );\r\n\r\n\t\tthis._createTitlebar();\r\n\t\tthis._createButtonPane();\r\n\r\n\t\tif ( this.options.draggable && $.fn.draggable ) {\r\n\t\t\tthis._makeDraggable();\r\n\t\t}\r\n\t\tif ( this.options.resizable && $.fn.resizable ) {\r\n\t\t\tthis._makeResizable();\r\n\t\t}\r\n\r\n\t\tthis._isOpen = false;\r\n\r\n\t\tthis._trackFocus();\r\n\t},\r\n\r\n\t_init: function() {\r\n\t\tif ( this.options.autoOpen ) {\r\n\t\t\tthis.open();\r\n\t\t}\r\n\t},\r\n\r\n\t_appendTo: function() {\r\n\t\tvar element = this.options.appendTo;\r\n\t\tif ( element && ( element.jquery || element.nodeType ) ) {\r\n\t\t\treturn $( element );\r\n\t\t}\r\n\t\treturn this.document.find( element || \"body\" ).eq( 0 );\r\n\t},\r\n\r\n\t_destroy: function() {\r\n\t\tvar next,\r\n\t\t\toriginalPosition = this.originalPosition;\r\n\r\n\t\tthis._untrackInstance();\r\n\t\tthis._destroyOverlay();\r\n\r\n\t\tthis.element\r\n\t\t\t.removeUniqueId()\r\n\t\t\t.css( this.originalCss )\r\n\r\n\t\t\t// Without detaching first, the following becomes really slow\r\n\t\t\t.detach();\r\n\r\n\t\tthis.uiDialog.remove();\r\n\r\n\t\tif ( this.originalTitle ) {\r\n\t\t\tthis.element.attr( \"title\", this.originalTitle );\r\n\t\t}\r\n\r\n\t\tnext = originalPosition.parent.children().eq( originalPosition.index );\r\n\r\n\t\t// Don't try to place the dialog next to itself (#8613)\r\n\t\tif ( next.length && next[ 0 ] !== this.element[ 0 ] ) {\r\n\t\t\tnext.before( this.element );\r\n\t\t} else {\r\n\t\t\toriginalPosition.parent.append( this.element );\r\n\t\t}\r\n\t},\r\n\r\n\twidget: function() {\r\n\t\treturn this.uiDialog;\r\n\t},\r\n\r\n\tdisable: $.noop,\r\n\tenable: $.noop,\r\n\r\n\tclose: function( event ) {\r\n\t\tvar that = this;\r\n\r\n\t\tif ( !this._isOpen || this._trigger( \"beforeClose\", event ) === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._isOpen = false;\r\n\t\tthis._focusedElement = null;\r\n\t\tthis._destroyOverlay();\r\n\t\tthis._untrackInstance();\r\n\r\n\t\tif ( !this.opener.filter( \":focusable\" ).trigger( \"focus\" ).length ) {\r\n\r\n\t\t\t// Hiding a focused element doesn't trigger blur in WebKit\r\n\t\t\t// so in case we have nothing to focus on, explicitly blur the active element\r\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=47182\r\n\t\t\t$( this.document[ 0 ].activeElement ).trigger( \"blur\" );\r\n\t\t}\r\n\r\n\t\tthis._hide( this.uiDialog, this.options.hide, function() {\r\n\t\t\tthat._trigger( \"close\", event );\r\n\t\t} );\r\n\t},\r\n\r\n\tisOpen: function() {\r\n\t\treturn this._isOpen;\r\n\t},\r\n\r\n\tmoveToTop: function() {\r\n\t\tthis._moveToTop();\r\n\t},\r\n\r\n\t_moveToTop: function( event, silent ) {\r\n\t\tvar moved = false,\r\n\t\t\tzIndices = this.uiDialog.siblings( \".ui-front:visible\" ).map( function() {\r\n\t\t\t\treturn +$( this ).css( \"z-index\" );\r\n\t\t\t} ).get(),\r\n\t\t\tzIndexMax = Math.max.apply( null, zIndices );\r\n\r\n\t\tif ( zIndexMax >= +this.uiDialog.css( \"z-index\" ) ) {\r\n\t\t\tthis.uiDialog.css( \"z-index\", zIndexMax + 1 );\r\n\t\t\tmoved = true;\r\n\t\t}\r\n\r\n\t\tif ( moved && !silent ) {\r\n\t\t\tthis._trigger( \"focus\", event );\r\n\t\t}\r\n\t\treturn moved;\r\n\t},\r\n\r\n\topen: function() {\r\n\t\tvar that = this;\r\n\t\tif ( this._isOpen ) {\r\n\t\t\tif ( this._moveToTop() ) {\r\n\t\t\t\tthis._focusTabbable();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._isOpen = true;\r\n\t\tthis.opener = $( this.document[ 0 ].activeElement );\r\n\r\n\t\tthis._size();\r\n\t\tthis._position();\r\n\t\tthis._createOverlay();\r\n\t\tthis._moveToTop( null, true );\r\n\r\n\t\t// Ensure the overlay is moved to the top with the dialog, but only when\r\n\t\t// opening. The overlay shouldn't move after the dialog is open so that\r\n\t\t// modeless dialogs opened after the modal dialog stack properly.\r\n\t\tif ( this.overlay ) {\r\n\t\t\tthis.overlay.css( \"z-index\", this.uiDialog.css( \"z-index\" ) - 1 );\r\n\t\t}\r\n\r\n\t\tthis._show( this.uiDialog, this.options.show, function() {\r\n\t\t\tthat._focusTabbable();\r\n\t\t\tthat._trigger( \"focus\" );\r\n\t\t} );\r\n\r\n\t\t// Track the dialog immediately upon opening in case a focus event\r\n\t\t// somehow occurs outside of the dialog before an element inside the\r\n\t\t// dialog is focused (#10152)\r\n\t\tthis._makeFocusTarget();\r\n\r\n\t\tthis._trigger( \"open\" );\r\n\t},\r\n\r\n\t_focusTabbable: function() {\r\n\r\n\t\t// Set focus to the first match:\r\n\t\t// 1. An element that was focused previously\r\n\t\t// 2. First element inside the dialog matching [autofocus]\r\n\t\t// 3. Tabbable element inside the content element\r\n\t\t// 4. Tabbable element inside the buttonpane\r\n\t\t// 5. The close button\r\n\t\t// 6. The dialog itself\r\n\t\tvar hasFocus = this._focusedElement;\r\n\t\tif ( !hasFocus ) {\r\n\t\t\thasFocus = this.element.find( \"[autofocus]\" );\r\n\t\t}\r\n\t\tif ( !hasFocus.length ) {\r\n\t\t\thasFocus = this.element.find( \":tabbable\" );\r\n\t\t}\r\n\t\tif ( !hasFocus.length ) {\r\n\t\t\thasFocus = this.uiDialogButtonPane.find( \":tabbable\" );\r\n\t\t}\r\n\t\tif ( !hasFocus.length ) {\r\n\t\t\thasFocus = this.uiDialogTitlebarClose.filter( \":tabbable\" );\r\n\t\t}\r\n\t\tif ( !hasFocus.length ) {\r\n\t\t\thasFocus = this.uiDialog;\r\n\t\t}\r\n\t\thasFocus.eq( 0 ).trigger( \"focus\" );\r\n\t},\r\n\r\n\t_restoreTabbableFocus: function() {\r\n\t\tvar activeElement = this.document[ 0 ].activeElement,\r\n\t\t\tisActive = this.uiDialog[ 0 ] === activeElement ||\r\n\t\t\t\t$.contains( this.uiDialog[ 0 ], activeElement );\r\n\t\tif ( !isActive ) {\r\n\t\t\tthis._focusTabbable();\r\n\t\t}\r\n\t},\r\n\r\n\t_keepFocus: function( event ) {\r\n\t\tevent.preventDefault();\r\n\t\tthis._restoreTabbableFocus();\r\n\t},\r\n\r\n\t_createWrapper: function() {\r\n\t\tthis.uiDialog = $( \"<div>\" )\r\n\t\t\t.hide()\r\n\t\t\t.attr( {\r\n\r\n\t\t\t\t// Setting tabIndex makes the div focusable\r\n\t\t\t\ttabIndex: -1,\r\n\t\t\t\trole: \"dialog\",\r\n\t\t\t\t\"aria-modal\": this.options.modal ? \"true\" : null\r\n\t\t\t} )\r\n\t\t\t.appendTo( this._appendTo() );\r\n\r\n\t\tthis._addClass( this.uiDialog, \"ui-dialog\", \"ui-widget ui-widget-content ui-front\" );\r\n\t\tthis._on( this.uiDialog, {\r\n\t\t\tkeydown: function( event ) {\r\n\t\t\t\tif ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\r\n\t\t\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\tthis.close( event );\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Prevent tabbing out of dialogs\r\n\t\t\t\tif ( event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented() ) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar tabbables = this.uiDialog.find( \":tabbable\" ),\r\n\t\t\t\t\tfirst = tabbables.first(),\r\n\t\t\t\t\tlast = tabbables.last();\r\n\r\n\t\t\t\tif ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) &&\r\n\t\t\t\t\t\t!event.shiftKey ) {\r\n\t\t\t\t\tthis._delay( function() {\r\n\t\t\t\t\t\tfirst.trigger( \"focus\" );\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t} else if ( ( event.target === first[ 0 ] ||\r\n\t\t\t\t\t\tevent.target === this.uiDialog[ 0 ] ) && event.shiftKey ) {\r\n\t\t\t\t\tthis._delay( function() {\r\n\t\t\t\t\t\tlast.trigger( \"focus\" );\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tmousedown: function( event ) {\r\n\t\t\t\tif ( this._moveToTop( event ) ) {\r\n\t\t\t\t\tthis._focusTabbable();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\t// We assume that any existing aria-describedby attribute means\r\n\t\t// that the dialog content is marked up properly\r\n\t\t// otherwise we brute force the content as the description\r\n\t\tif ( !this.element.find( \"[aria-describedby]\" ).length ) {\r\n\t\t\tthis.uiDialog.attr( {\r\n\t\t\t\t\"aria-describedby\": this.element.uniqueId().attr( \"id\" )\r\n\t\t\t} );\r\n\t\t}\r\n\t},\r\n\r\n\t_createTitlebar: function() {\r\n\t\tvar uiDialogTitle;\r\n\r\n\t\tthis.uiDialogTitlebar = $( \"<div>\" );\r\n\t\tthis._addClass( this.uiDialogTitlebar,\r\n\t\t\t\"ui-dialog-titlebar\", \"ui-widget-header ui-helper-clearfix\" );\r\n\t\tthis._on( this.uiDialogTitlebar, {\r\n\t\t\tmousedown: function( event ) {\r\n\r\n\t\t\t\t// Don't prevent click on close button (#8838)\r\n\t\t\t\t// Focusing a dialog that is partially scrolled out of view\r\n\t\t\t\t// causes the browser to scroll it into view, preventing the click event\r\n\t\t\t\tif ( !$( event.target ).closest( \".ui-dialog-titlebar-close\" ) ) {\r\n\r\n\t\t\t\t\t// Dialog isn't getting focus when dragging (#8063)\r\n\t\t\t\t\tthis.uiDialog.trigger( \"focus\" );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\tthis.uiDialogTitlebarClose = $( \"<button type='button'></button>\" )\r\n\t\t\t.button( {\r\n\t\t\t\tlabel: $( \"<a>\" ).text( this.options.closeText ).html(),\r\n\t\t\t\ticon: \"ui-icon-closethick\",\r\n\t\t\t\tshowLabel: false\r\n\t\t\t} )\r\n\t\t\t.appendTo( this.uiDialogTitlebar );\r\n\r\n\t\tthis._addClass( this.uiDialogTitlebarClose, \"ui-dialog-titlebar-close\" );\r\n\t\tthis._on( this.uiDialogTitlebarClose, {\r\n\t\t\tclick: function( event ) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tthis.close( event );\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\tvar uiDialogHeadingLevel = Number.isInteger( this.options.uiDialogTitleHeadingLevel ) &&\r\n\t\t\tthis.options.uiDialogTitleHeadingLevel > 0 &&\r\n\t\t\tthis.options.uiDialogTitleHeadingLevel <= 6 ?\r\n\t\t\t\"h\" + this.options.uiDialogTitleHeadingLevel : \"span\";\r\n\r\n\t\tuiDialogTitle = $( \"<\" + uiDialogHeadingLevel + \">\" )\r\n\t\t\t.uniqueId().prependTo( this.uiDialogTitlebar );\r\n\t\tthis._addClass( uiDialogTitle, \"ui-dialog-title\" );\r\n\t\tthis._title( uiDialogTitle );\r\n\r\n\t\tthis.uiDialogTitlebar.prependTo( this.uiDialog );\r\n\r\n\t\tthis.uiDialog.attr( {\r\n\t\t\t\"aria-labelledby\": uiDialogTitle.attr( \"id\" )\r\n\t\t} );\r\n\t},\r\n\r\n\t_title: function( title ) {\r\n\t\tif ( this.options.title ) {\r\n\t\t\ttitle.text( this.options.title );\r\n\t\t} else {\r\n\t\t\ttitle.html( \"&#160;\" );\r\n\t\t}\r\n\t},\r\n\r\n\t_createButtonPane: function() {\r\n\t\tthis.uiDialogButtonPane = $( \"<div>\" );\r\n\t\tthis._addClass( this.uiDialogButtonPane, \"ui-dialog-buttonpane\",\r\n\t\t\t\"ui-widget-content ui-helper-clearfix\" );\r\n\r\n\t\tthis.uiButtonSet = $( \"<div>\" )\r\n\t\t\t.appendTo( this.uiDialogButtonPane );\r\n\t\tthis._addClass( this.uiButtonSet, \"ui-dialog-buttonset\" );\r\n\r\n\t\tthis._createButtons();\r\n\t},\r\n\r\n\t_createButtons: function() {\r\n\t\tvar that = this,\r\n\t\t\tbuttons = this.options.buttons;\r\n\r\n\t\t// If we already have a button pane, remove it\r\n\t\tthis.uiDialogButtonPane.remove();\r\n\t\tthis.uiButtonSet.empty();\r\n\r\n\t\tif ( $.isEmptyObject( buttons ) || ( Array.isArray( buttons ) && !buttons.length ) ) {\r\n\t\t\tthis._removeClass( this.uiDialog, \"ui-dialog-buttons\" );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t$.each( buttons, function( name, props ) {\r\n\t\t\tvar click, buttonOptions;\r\n\t\t\tprops = typeof props === \"function\" ?\r\n\t\t\t\t{ click: props, text: name } :\r\n\t\t\t\tprops;\r\n\r\n\t\t\t// Default to a non-submitting button\r\n\t\t\tprops = $.extend( { type: \"button\" }, props );\r\n\r\n\t\t\t// Change the context for the click callback to be the main element\r\n\t\t\tclick = props.click;\r\n\t\t\tbuttonOptions = {\r\n\t\t\t\ticon: props.icon,\r\n\t\t\t\ticonPosition: props.iconPosition,\r\n\t\t\t\tshowLabel: props.showLabel,\r\n\r\n\t\t\t\t// Deprecated options\r\n\t\t\t\ticons: props.icons,\r\n\t\t\t\ttext: props.text\r\n\t\t\t};\r\n\r\n\t\t\tdelete props.click;\r\n\t\t\tdelete props.icon;\r\n\t\t\tdelete props.iconPosition;\r\n\t\t\tdelete props.showLabel;\r\n\r\n\t\t\t// Deprecated options\r\n\t\t\tdelete props.icons;\r\n\t\t\tif ( typeof props.text === \"boolean\" ) {\r\n\t\t\t\tdelete props.text;\r\n\t\t\t}\r\n\r\n\t\t\t$( \"<button></button>\", props )\r\n\t\t\t\t.button( buttonOptions )\r\n\t\t\t\t.appendTo( that.uiButtonSet )\r\n\t\t\t\t.on( \"click\", function() {\r\n\t\t\t\t\tclick.apply( that.element[ 0 ], arguments );\r\n\t\t\t\t} );\r\n\t\t} );\r\n\t\tthis._addClass( this.uiDialog, \"ui-dialog-buttons\" );\r\n\t\tthis.uiDialogButtonPane.appendTo( this.uiDialog );\r\n\t},\r\n\r\n\t_makeDraggable: function() {\r\n\t\tvar that = this,\r\n\t\t\toptions = this.options;\r\n\r\n\t\tfunction filteredUi( ui ) {\r\n\t\t\treturn {\r\n\t\t\t\tposition: ui.position,\r\n\t\t\t\toffset: ui.offset\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tthis.uiDialog.draggable( {\r\n\t\t\tcancel: \".ui-dialog-content, .ui-dialog-titlebar-close\",\r\n\t\t\thandle: \".ui-dialog-titlebar\",\r\n\t\t\tcontainment: \"document\",\r\n\t\t\tstart: function( event, ui ) {\r\n\t\t\t\tthat._addClass( $( this ), \"ui-dialog-dragging\" );\r\n\t\t\t\tthat._blockFrames();\r\n\t\t\t\tthat._trigger( \"dragStart\", event, filteredUi( ui ) );\r\n\t\t\t},\r\n\t\t\tdrag: function( event, ui ) {\r\n\t\t\t\tthat._trigger( \"drag\", event, filteredUi( ui ) );\r\n\t\t\t},\r\n\t\t\tstop: function( event, ui ) {\r\n\t\t\t\tvar left = ui.offset.left - that.document.scrollLeft(),\r\n\t\t\t\t\ttop = ui.offset.top - that.document.scrollTop();\r\n\r\n\t\t\t\toptions.position = {\r\n\t\t\t\t\tmy: \"left top\",\r\n\t\t\t\t\tat: \"left\" + ( left >= 0 ? \"+\" : \"\" ) + left + \" \" +\r\n\t\t\t\t\t\t\"top\" + ( top >= 0 ? \"+\" : \"\" ) + top,\r\n\t\t\t\t\tof: that.window\r\n\t\t\t\t};\r\n\t\t\t\tthat._removeClass( $( this ), \"ui-dialog-dragging\" );\r\n\t\t\t\tthat._unblockFrames();\r\n\t\t\t\tthat._trigger( \"dragStop\", event, filteredUi( ui ) );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\t_makeResizable: function() {\r\n\t\tvar that = this,\r\n\t\t\toptions = this.options,\r\n\t\t\thandles = options.resizable,\r\n\r\n\t\t\t// .ui-resizable has position: relative defined in the stylesheet\r\n\t\t\t// but dialogs have to use absolute or fixed positioning\r\n\t\t\tposition = this.uiDialog.css( \"position\" ),\r\n\t\t\tresizeHandles = typeof handles === \"string\" ?\r\n\t\t\t\thandles :\r\n\t\t\t\t\"n,e,s,w,se,sw,ne,nw\";\r\n\r\n\t\tfunction filteredUi( ui ) {\r\n\t\t\treturn {\r\n\t\t\t\toriginalPosition: ui.originalPosition,\r\n\t\t\t\toriginalSize: ui.originalSize,\r\n\t\t\t\tposition: ui.position,\r\n\t\t\t\tsize: ui.size\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tthis.uiDialog.resizable( {\r\n\t\t\tcancel: \".ui-dialog-content\",\r\n\t\t\tcontainment: \"document\",\r\n\t\t\talsoResize: this.element,\r\n\t\t\tmaxWidth: options.maxWidth,\r\n\t\t\tmaxHeight: options.maxHeight,\r\n\t\t\tminWidth: options.minWidth,\r\n\t\t\tminHeight: this._minHeight(),\r\n\t\t\thandles: resizeHandles,\r\n\t\t\tstart: function( event, ui ) {\r\n\t\t\t\tthat._addClass( $( this ), \"ui-dialog-resizing\" );\r\n\t\t\t\tthat._blockFrames();\r\n\t\t\t\tthat._trigger( \"resizeStart\", event, filteredUi( ui ) );\r\n\t\t\t},\r\n\t\t\tresize: function( event, ui ) {\r\n\t\t\t\tthat._trigger( \"resize\", event, filteredUi( ui ) );\r\n\t\t\t},\r\n\t\t\tstop: function( event, ui ) {\r\n\t\t\t\tvar offset = that.uiDialog.offset(),\r\n\t\t\t\t\tleft = offset.left - that.document.scrollLeft(),\r\n\t\t\t\t\ttop = offset.top - that.document.scrollTop();\r\n\r\n\t\t\t\toptions.height = that.uiDialog.height();\r\n\t\t\t\toptions.width = that.uiDialog.width();\r\n\t\t\t\toptions.position = {\r\n\t\t\t\t\tmy: \"left top\",\r\n\t\t\t\t\tat: \"left\" + ( left >= 0 ? \"+\" : \"\" ) + left + \" \" +\r\n\t\t\t\t\t\t\"top\" + ( top >= 0 ? \"+\" : \"\" ) + top,\r\n\t\t\t\t\tof: that.window\r\n\t\t\t\t};\r\n\t\t\t\tthat._removeClass( $( this ), \"ui-dialog-resizing\" );\r\n\t\t\t\tthat._unblockFrames();\r\n\t\t\t\tthat._trigger( \"resizeStop\", event, filteredUi( ui ) );\r\n\t\t\t}\r\n\t\t} )\r\n\t\t\t.css( \"position\", position );\r\n\t},\r\n\r\n\t_trackFocus: function() {\r\n\t\tthis._on( this.widget(), {\r\n\t\t\tfocusin: function( event ) {\r\n\t\t\t\tthis._makeFocusTarget();\r\n\t\t\t\tthis._focusedElement = $( event.target );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\t_makeFocusTarget: function() {\r\n\t\tthis._untrackInstance();\r\n\t\tthis._trackingInstances().unshift( this );\r\n\t},\r\n\r\n\t_untrackInstance: function() {\r\n\t\tvar instances = this._trackingInstances(),\r\n\t\t\texists = $.inArray( this, instances );\r\n\t\tif ( exists !== -1 ) {\r\n\t\t\tinstances.splice( exists, 1 );\r\n\t\t}\r\n\t},\r\n\r\n\t_trackingInstances: function() {\r\n\t\tvar instances = this.document.data( \"ui-dialog-instances\" );\r\n\t\tif ( !instances ) {\r\n\t\t\tinstances = [];\r\n\t\t\tthis.document.data( \"ui-dialog-instances\", instances );\r\n\t\t}\r\n\t\treturn instances;\r\n\t},\r\n\r\n\t_minHeight: function() {\r\n\t\tvar options = this.options;\r\n\r\n\t\treturn options.height === \"auto\" ?\r\n\t\t\toptions.minHeight :\r\n\t\t\tMath.min( options.minHeight, options.height );\r\n\t},\r\n\r\n\t_position: function() {\r\n\r\n\t\t// Need to show the dialog to get the actual offset in the position plugin\r\n\t\tvar isVisible = this.uiDialog.is( \":visible\" );\r\n\t\tif ( !isVisible ) {\r\n\t\t\tthis.uiDialog.show();\r\n\t\t}\r\n\t\tthis.uiDialog.position( this.options.position );\r\n\t\tif ( !isVisible ) {\r\n\t\t\tthis.uiDialog.hide();\r\n\t\t}\r\n\t},\r\n\r\n\t_setOptions: function( options ) {\r\n\t\tvar that = this,\r\n\t\t\tresize = false,\r\n\t\t\tresizableOptions = {};\r\n\r\n\t\t$.each( options, function( key, value ) {\r\n\t\t\tthat._setOption( key, value );\r\n\r\n\t\t\tif ( key in that.sizeRelatedOptions ) {\r\n\t\t\t\tresize = true;\r\n\t\t\t}\r\n\t\t\tif ( key in that.resizableRelatedOptions ) {\r\n\t\t\t\tresizableOptions[ key ] = value;\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\tif ( resize ) {\r\n\t\t\tthis._size();\r\n\t\t\tthis._position();\r\n\t\t}\r\n\t\tif ( this.uiDialog.is( \":data(ui-resizable)\" ) ) {\r\n\t\t\tthis.uiDialog.resizable( \"option\", resizableOptions );\r\n\t\t}\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\t\tvar isDraggable, isResizable,\r\n\t\t\tuiDialog = this.uiDialog;\r\n\r\n\t\tif ( key === \"disabled\" ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._super( key, value );\r\n\r\n\t\tif ( key === \"appendTo\" ) {\r\n\t\t\tthis.uiDialog.appendTo( this._appendTo() );\r\n\t\t}\r\n\r\n\t\tif ( key === \"buttons\" ) {\r\n\t\t\tthis._createButtons();\r\n\t\t}\r\n\r\n\t\tif ( key === \"closeText\" ) {\r\n\t\t\tthis.uiDialogTitlebarClose.button( {\r\n\r\n\t\t\t\t// Ensure that we always pass a string\r\n\t\t\t\tlabel: $( \"<a>\" ).text( \"\" + this.options.closeText ).html()\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\tif ( key === \"draggable\" ) {\r\n\t\t\tisDraggable = uiDialog.is( \":data(ui-draggable)\" );\r\n\t\t\tif ( isDraggable && !value ) {\r\n\t\t\t\tuiDialog.draggable( \"destroy\" );\r\n\t\t\t}\r\n\r\n\t\t\tif ( !isDraggable && value ) {\r\n\t\t\t\tthis._makeDraggable();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( key === \"position\" ) {\r\n\t\t\tthis._position();\r\n\t\t}\r\n\r\n\t\tif ( key === \"resizable\" ) {\r\n\r\n\t\t\t// currently resizable, becoming non-resizable\r\n\t\t\tisResizable = uiDialog.is( \":data(ui-resizable)\" );\r\n\t\t\tif ( isResizable && !value ) {\r\n\t\t\t\tuiDialog.resizable( \"destroy\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Currently resizable, changing handles\r\n\t\t\tif ( isResizable && typeof value === \"string\" ) {\r\n\t\t\t\tuiDialog.resizable( \"option\", \"handles\", value );\r\n\t\t\t}\r\n\r\n\t\t\t// Currently non-resizable, becoming resizable\r\n\t\t\tif ( !isResizable && value !== false ) {\r\n\t\t\t\tthis._makeResizable();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( key === \"title\" ) {\r\n\t\t\tthis._title( this.uiDialogTitlebar.find( \".ui-dialog-title\" ) );\r\n\t\t}\r\n\r\n\t\tif ( key === \"modal\" ) {\r\n\t\t\tuiDialog.attr( \"aria-modal\", value ? \"true\" : null );\r\n\t\t}\r\n\t},\r\n\r\n\t_size: function() {\r\n\r\n\t\t// If the user has resized the dialog, the .ui-dialog and .ui-dialog-content\r\n\t\t// divs will both have width and height set, so we need to reset them\r\n\t\tvar nonContentHeight, minContentHeight, maxContentHeight,\r\n\t\t\toptions = this.options;\r\n\r\n\t\t// Reset content sizing\r\n\t\tthis.element.show().css( {\r\n\t\t\twidth: \"auto\",\r\n\t\t\tminHeight: 0,\r\n\t\t\tmaxHeight: \"none\",\r\n\t\t\theight: 0\r\n\t\t} );\r\n\r\n\t\tif ( options.minWidth > options.width ) {\r\n\t\t\toptions.width = options.minWidth;\r\n\t\t}\r\n\r\n\t\t// Reset wrapper sizing\r\n\t\t// determine the height of all the non-content elements\r\n\t\tnonContentHeight = this.uiDialog.css( {\r\n\t\t\theight: \"auto\",\r\n\t\t\twidth: options.width\r\n\t\t} )\r\n\t\t\t.outerHeight();\r\n\t\tminContentHeight = Math.max( 0, options.minHeight - nonContentHeight );\r\n\t\tmaxContentHeight = typeof options.maxHeight === \"number\" ?\r\n\t\t\tMath.max( 0, options.maxHeight - nonContentHeight ) :\r\n\t\t\t\"none\";\r\n\r\n\t\tif ( options.height === \"auto\" ) {\r\n\t\t\tthis.element.css( {\r\n\t\t\t\tminHeight: minContentHeight,\r\n\t\t\t\tmaxHeight: maxContentHeight,\r\n\t\t\t\theight: \"auto\"\r\n\t\t\t} );\r\n\t\t} else {\r\n\t\t\tthis.element.height( Math.max( 0, options.height - nonContentHeight ) );\r\n\t\t}\r\n\r\n\t\tif ( this.uiDialog.is( \":data(ui-resizable)\" ) ) {\r\n\t\t\tthis.uiDialog.resizable( \"option\", \"minHeight\", this._minHeight() );\r\n\t\t}\r\n\t},\r\n\r\n\t_blockFrames: function() {\r\n\t\tthis.iframeBlocks = this.document.find( \"iframe\" ).map( function() {\r\n\t\t\tvar iframe = $( this );\r\n\r\n\t\t\treturn $( \"<div>\" )\r\n\t\t\t\t.css( {\r\n\t\t\t\t\tposition: \"absolute\",\r\n\t\t\t\t\twidth: iframe.outerWidth(),\r\n\t\t\t\t\theight: iframe.outerHeight()\r\n\t\t\t\t} )\r\n\t\t\t\t.appendTo( iframe.parent() )\r\n\t\t\t\t.offset( iframe.offset() )[ 0 ];\r\n\t\t} );\r\n\t},\r\n\r\n\t_unblockFrames: function() {\r\n\t\tif ( this.iframeBlocks ) {\r\n\t\t\tthis.iframeBlocks.remove();\r\n\t\t\tdelete this.iframeBlocks;\r\n\t\t}\r\n\t},\r\n\r\n\t_allowInteraction: function( event ) {\r\n\t\tif ( $( event.target ).closest( \".ui-dialog\" ).length ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// TODO: Remove hack when datepicker implements\r\n\t\t// the .ui-front logic (#8989)\r\n\t\treturn !!$( event.target ).closest( \".ui-datepicker\" ).length;\r\n\t},\r\n\r\n\t_createOverlay: function() {\r\n\t\tif ( !this.options.modal ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// We use a delay in case the overlay is created from an\r\n\t\t// event that we're going to be cancelling (#2804)\r\n\t\tvar isOpening = true;\r\n\t\tthis._delay( function() {\r\n\t\t\tisOpening = false;\r\n\t\t} );\r\n\r\n\t\tif ( !this.document.data( \"ui-dialog-overlays\" ) ) {\r\n\r\n\t\t\t// Prevent use of anchors and inputs\r\n\t\t\t// This doesn't use `_on()` because it is a shared event handler\r\n\t\t\t// across all open modal dialogs.\r\n\t\t\tthis.document.on( \"focusin.ui-dialog\", function( event ) {\r\n\t\t\t\tif ( isOpening ) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar instance = this._trackingInstances()[ 0 ];\r\n\t\t\t\tif ( !instance._allowInteraction( event ) ) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\tinstance._focusTabbable();\r\n\t\t\t\t}\r\n\t\t\t}.bind( this ) );\r\n\t\t}\r\n\r\n\t\tthis.overlay = $( \"<div>\" )\r\n\t\t\t.appendTo( this._appendTo() );\r\n\r\n\t\tthis._addClass( this.overlay, null, \"ui-widget-overlay ui-front\" );\r\n\t\tthis._on( this.overlay, {\r\n\t\t\tmousedown: \"_keepFocus\"\r\n\t\t} );\r\n\t\tthis.document.data( \"ui-dialog-overlays\",\r\n\t\t\t( this.document.data( \"ui-dialog-overlays\" ) || 0 ) + 1 );\r\n\t},\r\n\r\n\t_destroyOverlay: function() {\r\n\t\tif ( !this.options.modal ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( this.overlay ) {\r\n\t\t\tvar overlays = this.document.data( \"ui-dialog-overlays\" ) - 1;\r\n\r\n\t\t\tif ( !overlays ) {\r\n\t\t\t\tthis.document.off( \"focusin.ui-dialog\" );\r\n\t\t\t\tthis.document.removeData( \"ui-dialog-overlays\" );\r\n\t\t\t} else {\r\n\t\t\t\tthis.document.data( \"ui-dialog-overlays\", overlays );\r\n\t\t\t}\r\n\r\n\t\t\tthis.overlay.remove();\r\n\t\t\tthis.overlay = null;\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n// DEPRECATED\r\n// TODO: switch return back to widget declaration at top of file when this is removed\r\nif ( $.uiBackCompat === true ) {\r\n\r\n\t// Backcompat for dialogClass option\r\n\t$.widget( \"ui.dialog\", $.ui.dialog, {\r\n\t\toptions: {\r\n\t\t\tdialogClass: \"\"\r\n\t\t},\r\n\t\t_createWrapper: function() {\r\n\t\t\tthis._super();\r\n\t\t\tthis.uiDialog.addClass( this.options.dialogClass );\r\n\t\t},\r\n\t\t_setOption: function( key, value ) {\r\n\t\t\tif ( key === \"dialogClass\" ) {\r\n\t\t\t\tthis.uiDialog\r\n\t\t\t\t\t.removeClass( this.options.dialogClass )\r\n\t\t\t\t\t.addClass( value );\r\n\t\t\t}\r\n\t\t\tthis._superApply( arguments );\r\n\t\t}\r\n\t} );\r\n}\r\n\r\nvar widgetsDialog = $.ui.dialog;\r\n\r\n\r\n/*!\r\n * jQuery UI Droppable 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Droppable\r\n//>>group: Interactions\r\n//>>description: Enables drop targets for draggable elements.\r\n//>>docs: https://api.jqueryui.com/droppable/\r\n//>>demos: https://jqueryui.com/droppable/\r\n\r\n\r\n$.widget( \"ui.droppable\", {\r\n\tversion: \"1.14.1\",\r\n\twidgetEventPrefix: \"drop\",\r\n\toptions: {\r\n\t\taccept: \"*\",\r\n\t\taddClasses: true,\r\n\t\tgreedy: false,\r\n\t\tscope: \"default\",\r\n\t\ttolerance: \"intersect\",\r\n\r\n\t\t// Callbacks\r\n\t\tactivate: null,\r\n\t\tdeactivate: null,\r\n\t\tdrop: null,\r\n\t\tout: null,\r\n\t\tover: null\r\n\t},\r\n\t_create: function() {\r\n\r\n\t\tvar proportions,\r\n\t\t\to = this.options,\r\n\t\t\taccept = o.accept;\r\n\r\n\t\tthis.isover = false;\r\n\t\tthis.isout = true;\r\n\r\n\t\tthis.accept = typeof accept === \"function\" ? accept : function( d ) {\r\n\t\t\treturn d.is( accept );\r\n\t\t};\r\n\r\n\t\tthis.proportions = function( /* valueToWrite */ ) {\r\n\t\t\tif ( arguments.length ) {\r\n\r\n\t\t\t\t// Store the droppable's proportions\r\n\t\t\t\tproportions = arguments[ 0 ];\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// Retrieve or derive the droppable's proportions\r\n\t\t\t\treturn proportions ?\r\n\t\t\t\t\tproportions :\r\n\t\t\t\t\tproportions = {\r\n\t\t\t\t\t\twidth: this.element[ 0 ].offsetWidth,\r\n\t\t\t\t\t\theight: this.element[ 0 ].offsetHeight\r\n\t\t\t\t\t};\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis._addToManager( o.scope );\r\n\r\n\t\tif ( o.addClasses ) {\r\n\t\t\tthis._addClass( \"ui-droppable\" );\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_addToManager: function( scope ) {\r\n\r\n\t\t// Add the reference and positions to the manager\r\n\t\t$.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || [];\r\n\t\t$.ui.ddmanager.droppables[ scope ].push( this );\r\n\t},\r\n\r\n\t_splice: function( drop ) {\r\n\t\tvar i = 0;\r\n\t\tfor ( ; i < drop.length; i++ ) {\r\n\t\t\tif ( drop[ i ] === this ) {\r\n\t\t\t\tdrop.splice( i, 1 );\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_destroy: function() {\r\n\t\tvar drop = $.ui.ddmanager.droppables[ this.options.scope ];\r\n\r\n\t\tthis._splice( drop );\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\r\n\t\tif ( key === \"accept\" ) {\r\n\t\t\tthis.accept = typeof value === \"function\" ? value : function( d ) {\r\n\t\t\t\treturn d.is( value );\r\n\t\t\t};\r\n\t\t} else if ( key === \"scope\" ) {\r\n\t\t\tvar drop = $.ui.ddmanager.droppables[ this.options.scope ];\r\n\r\n\t\t\tthis._splice( drop );\r\n\t\t\tthis._addToManager( value );\r\n\t\t}\r\n\r\n\t\tthis._super( key, value );\r\n\t},\r\n\r\n\t_activate: function( event ) {\r\n\t\tvar draggable = $.ui.ddmanager.current;\r\n\r\n\t\tthis._addActiveClass();\r\n\t\tif ( draggable ) {\r\n\t\t\tthis._trigger( \"activate\", event, this.ui( draggable ) );\r\n\t\t}\r\n\t},\r\n\r\n\t_deactivate: function( event ) {\r\n\t\tvar draggable = $.ui.ddmanager.current;\r\n\r\n\t\tthis._removeActiveClass();\r\n\t\tif ( draggable ) {\r\n\t\t\tthis._trigger( \"deactivate\", event, this.ui( draggable ) );\r\n\t\t}\r\n\t},\r\n\r\n\t_over: function( event ) {\r\n\r\n\t\tvar draggable = $.ui.ddmanager.current;\r\n\r\n\t\t// Bail if draggable and droppable are same element\r\n\t\tif ( !draggable || ( draggable.currentItem ||\r\n\t\t\t\tdraggable.element )[ 0 ] === this.element[ 0 ] ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||\r\n\t\t\t\tdraggable.element ) ) ) {\r\n\t\t\tthis._addHoverClass();\r\n\t\t\tthis._trigger( \"over\", event, this.ui( draggable ) );\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_out: function( event ) {\r\n\r\n\t\tvar draggable = $.ui.ddmanager.current;\r\n\r\n\t\t// Bail if draggable and droppable are same element\r\n\t\tif ( !draggable || ( draggable.currentItem ||\r\n\t\t\t\tdraggable.element )[ 0 ] === this.element[ 0 ] ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||\r\n\t\t\t\tdraggable.element ) ) ) {\r\n\t\t\tthis._removeHoverClass();\r\n\t\t\tthis._trigger( \"out\", event, this.ui( draggable ) );\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_drop: function( event, custom ) {\r\n\r\n\t\tvar draggable = custom || $.ui.ddmanager.current,\r\n\t\t\tchildrenIntersection = false;\r\n\r\n\t\t// Bail if draggable and droppable are same element\r\n\t\tif ( !draggable || ( draggable.currentItem ||\r\n\t\t\t\tdraggable.element )[ 0 ] === this.element[ 0 ] ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.element\r\n\t\t\t.find( \":data(ui-droppable)\" )\r\n\t\t\t.not( \".ui-draggable-dragging\" )\r\n\t\t\t.each( function() {\r\n\t\t\t\tvar inst = $( this ).droppable( \"instance\" );\r\n\t\t\t\tif (\r\n\t\t\t\t\tinst.options.greedy &&\r\n\t\t\t\t\t!inst.options.disabled &&\r\n\t\t\t\t\tinst.options.scope === draggable.options.scope &&\r\n\t\t\t\t\tinst.accept.call(\r\n\t\t\t\t\t\tinst.element[ 0 ], ( draggable.currentItem || draggable.element )\r\n\t\t\t\t\t) &&\r\n\t\t\t\t\t$.ui.intersect(\r\n\t\t\t\t\t\tdraggable,\r\n\t\t\t\t\t\t$.extend( inst, { offset: inst.element.offset() } ),\r\n\t\t\t\t\t\tinst.options.tolerance, event\r\n\t\t\t\t\t)\r\n\t\t\t\t) {\r\n\t\t\t\t\tchildrenIntersection = true;\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\tif ( childrenIntersection ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif ( this.accept.call( this.element[ 0 ],\r\n\t\t\t\t( draggable.currentItem || draggable.element ) ) ) {\r\n\t\t\tthis._removeActiveClass();\r\n\t\t\tthis._removeHoverClass();\r\n\r\n\t\t\tthis._trigger( \"drop\", event, this.ui( draggable ) );\r\n\t\t\treturn this.element;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\r\n\t},\r\n\r\n\tui: function( c ) {\r\n\t\treturn {\r\n\t\t\tdraggable: ( c.currentItem || c.element ),\r\n\t\t\thelper: c.helper,\r\n\t\t\tposition: c.position,\r\n\t\t\toffset: c.positionAbs\r\n\t\t};\r\n\t},\r\n\r\n\t// Extension points just to make backcompat sane and avoid duplicating logic\r\n\t// TODO: Remove in 1.14 along with call to it below\r\n\t_addHoverClass: function() {\r\n\t\tthis._addClass( \"ui-droppable-hover\" );\r\n\t},\r\n\r\n\t_removeHoverClass: function() {\r\n\t\tthis._removeClass( \"ui-droppable-hover\" );\r\n\t},\r\n\r\n\t_addActiveClass: function() {\r\n\t\tthis._addClass( \"ui-droppable-active\" );\r\n\t},\r\n\r\n\t_removeActiveClass: function() {\r\n\t\tthis._removeClass( \"ui-droppable-active\" );\r\n\t}\r\n} );\r\n\r\n$.ui.intersect = ( function() {\r\n\tfunction isOverAxis( x, reference, size ) {\r\n\t\treturn ( x >= reference ) && ( x < ( reference + size ) );\r\n\t}\r\n\r\n\treturn function( draggable, droppable, toleranceMode, event ) {\r\n\r\n\t\tif ( !droppable.offset ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar x1 = ( draggable.positionAbs ||\r\n\t\t\t\tdraggable.position.absolute ).left + draggable.margins.left,\r\n\t\t\ty1 = ( draggable.positionAbs ||\r\n\t\t\t\tdraggable.position.absolute ).top + draggable.margins.top,\r\n\t\t\tx2 = x1 + draggable.helperProportions.width,\r\n\t\t\ty2 = y1 + draggable.helperProportions.height,\r\n\t\t\tl = droppable.offset.left,\r\n\t\t\tt = droppable.offset.top,\r\n\t\t\tr = l + droppable.proportions().width,\r\n\t\t\tb = t + droppable.proportions().height;\r\n\r\n\t\tswitch ( toleranceMode ) {\r\n\t\tcase \"fit\":\r\n\t\t\treturn ( l <= x1 && x2 <= r && t <= y1 && y2 <= b );\r\n\t\tcase \"intersect\":\r\n\t\t\treturn ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half\r\n\t\t\t\tx2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half\r\n\t\t\t\tt < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half\r\n\t\t\t\ty2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half\r\n\t\tcase \"pointer\":\r\n\t\t\treturn isOverAxis( event.pageY, t, droppable.proportions().height ) &&\r\n\t\t\t\tisOverAxis( event.pageX, l, droppable.proportions().width );\r\n\t\tcase \"touch\":\r\n\t\t\treturn (\r\n\t\t\t\t( y1 >= t && y1 <= b ) || // Top edge touching\r\n\t\t\t\t( y2 >= t && y2 <= b ) || // Bottom edge touching\r\n\t\t\t\t( y1 < t && y2 > b ) // Surrounded vertically\r\n\t\t\t) && (\r\n\t\t\t\t( x1 >= l && x1 <= r ) || // Left edge touching\r\n\t\t\t\t( x2 >= l && x2 <= r ) || // Right edge touching\r\n\t\t\t\t( x1 < l && x2 > r ) // Surrounded horizontally\r\n\t\t\t);\r\n\t\tdefault:\r\n\t\t\treturn false;\r\n\t\t}\r\n\t};\r\n} )();\r\n\r\n/*\r\n\tThis manager tracks offsets of draggables and droppables\r\n*/\r\n$.ui.ddmanager = {\r\n\tcurrent: null,\r\n\tdroppables: { \"default\": [] },\r\n\tprepareOffsets: function( t, event ) {\r\n\r\n\t\tvar i, j,\r\n\t\t\tm = $.ui.ddmanager.droppables[ t.options.scope ] || [],\r\n\t\t\ttype = event ? event.type : null, // workaround for #2317\r\n\t\t\tlist = ( t.currentItem || t.element ).find( \":data(ui-droppable)\" ).addBack();\r\n\r\n\t\tdroppablesLoop: for ( i = 0; i < m.length; i++ ) {\r\n\r\n\t\t\t// No disabled and non-accepted\r\n\t\t\tif ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ],\r\n\t\t\t\t\t( t.currentItem || t.element ) ) ) ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// Filter out elements in the current dragged item\r\n\t\t\tfor ( j = 0; j < list.length; j++ ) {\r\n\t\t\t\tif ( list[ j ] === m[ i ].element[ 0 ] ) {\r\n\t\t\t\t\tm[ i ].proportions().height = 0;\r\n\t\t\t\t\tcontinue droppablesLoop;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tm[ i ].visible = m[ i ].element.css( \"display\" ) !== \"none\";\r\n\t\t\tif ( !m[ i ].visible ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// Activate the droppable if used directly from draggables\r\n\t\t\tif ( type === \"mousedown\" ) {\r\n\t\t\t\tm[ i ]._activate.call( m[ i ], event );\r\n\t\t\t}\r\n\r\n\t\t\tm[ i ].offset = m[ i ].element.offset();\r\n\t\t\tm[ i ].proportions( {\r\n\t\t\t\twidth: m[ i ].element[ 0 ].offsetWidth,\r\n\t\t\t\theight: m[ i ].element[ 0 ].offsetHeight\r\n\t\t\t} );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\tdrop: function( draggable, event ) {\r\n\r\n\t\tvar dropped = false;\r\n\r\n\t\t// Create a copy of the droppables in case the list changes during the drop (#9116)\r\n\t\t$.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() {\r\n\r\n\t\t\tif ( !this.options ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif ( !this.options.disabled && this.visible &&\r\n\t\t\t\t\t$.ui.intersect( draggable, this, this.options.tolerance, event ) ) {\r\n\t\t\t\tdropped = this._drop.call( this, event ) || dropped;\r\n\t\t\t}\r\n\r\n\t\t\tif ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ],\r\n\t\t\t\t\t( draggable.currentItem || draggable.element ) ) ) {\r\n\t\t\t\tthis.isout = true;\r\n\t\t\t\tthis.isover = false;\r\n\t\t\t\tthis._deactivate.call( this, event );\r\n\t\t\t}\r\n\r\n\t\t} );\r\n\t\treturn dropped;\r\n\r\n\t},\r\n\tdragStart: function( draggable, event ) {\r\n\r\n\t\t// Listen for scrolling so that if the dragging causes scrolling the position of the\r\n\t\t// droppables can be recalculated (see #5003)\r\n\t\tdraggable.element.parentsUntil( \"body\" ).on( \"scroll.droppable\", function() {\r\n\t\t\tif ( !draggable.options.refreshPositions ) {\r\n\t\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\tdrag: function( draggable, event ) {\r\n\r\n\t\t// If you have a highly dynamic page, you might try this option. It renders positions\r\n\t\t// every time you move the mouse.\r\n\t\tif ( draggable.options.refreshPositions ) {\r\n\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\r\n\t\t}\r\n\r\n\t\t// Run through all droppables and check their positions based on specific tolerance options\r\n\t\t$.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() {\r\n\r\n\t\t\tif ( this.options.disabled || this.greedyChild || !this.visible ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar parentInstance, scope, parent,\r\n\t\t\t\tintersects = $.ui.intersect( draggable, this, this.options.tolerance, event ),\r\n\t\t\t\tc = !intersects && this.isover ?\r\n\t\t\t\t\t\"isout\" :\r\n\t\t\t\t\t( intersects && !this.isover ? \"isover\" : null );\r\n\t\t\tif ( !c ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif ( this.options.greedy ) {\r\n\r\n\t\t\t\t// find droppable parents with same scope\r\n\t\t\t\tscope = this.options.scope;\r\n\t\t\t\tparent = this.element.parents( \":data(ui-droppable)\" ).filter( function() {\r\n\t\t\t\t\treturn $( this ).droppable( \"instance\" ).options.scope === scope;\r\n\t\t\t\t} );\r\n\r\n\t\t\t\tif ( parent.length ) {\r\n\t\t\t\t\tparentInstance = $( parent[ 0 ] ).droppable( \"instance\" );\r\n\t\t\t\t\tparentInstance.greedyChild = ( c === \"isover\" );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// We just moved into a greedy child\r\n\t\t\tif ( parentInstance && c === \"isover\" ) {\r\n\t\t\t\tparentInstance.isover = false;\r\n\t\t\t\tparentInstance.isout = true;\r\n\t\t\t\tparentInstance._out.call( parentInstance, event );\r\n\t\t\t}\r\n\r\n\t\t\tthis[ c ] = true;\r\n\t\t\tthis[ c === \"isout\" ? \"isover\" : \"isout\" ] = false;\r\n\t\t\tthis[ c === \"isover\" ? \"_over\" : \"_out\" ].call( this, event );\r\n\r\n\t\t\t// We just moved out of a greedy child\r\n\t\t\tif ( parentInstance && c === \"isout\" ) {\r\n\t\t\t\tparentInstance.isout = false;\r\n\t\t\t\tparentInstance.isover = true;\r\n\t\t\t\tparentInstance._over.call( parentInstance, event );\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t},\r\n\tdragStop: function( draggable, event ) {\r\n\t\tdraggable.element.parentsUntil( \"body\" ).off( \"scroll.droppable\" );\r\n\r\n\t\t// Call prepareOffsets one final time since IE does not fire return scroll events when\r\n\t\t// overflow was caused by drag (see #5003)\r\n\t\tif ( !draggable.options.refreshPositions ) {\r\n\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\r\n\t\t}\r\n\t}\r\n};\r\n\r\n// DEPRECATED\r\n// TODO: switch return back to widget declaration at top of file when this is removed\r\nif ( $.uiBackCompat === true ) {\r\n\r\n\t// Backcompat for activeClass and hoverClass options\r\n\t$.widget( \"ui.droppable\", $.ui.droppable, {\r\n\t\toptions: {\r\n\t\t\thoverClass: false,\r\n\t\t\tactiveClass: false\r\n\t\t},\r\n\t\t_addActiveClass: function() {\r\n\t\t\tthis._super();\r\n\t\t\tif ( this.options.activeClass ) {\r\n\t\t\t\tthis.element.addClass( this.options.activeClass );\r\n\t\t\t}\r\n\t\t},\r\n\t\t_removeActiveClass: function() {\r\n\t\t\tthis._super();\r\n\t\t\tif ( this.options.activeClass ) {\r\n\t\t\t\tthis.element.removeClass( this.options.activeClass );\r\n\t\t\t}\r\n\t\t},\r\n\t\t_addHoverClass: function() {\r\n\t\t\tthis._super();\r\n\t\t\tif ( this.options.hoverClass ) {\r\n\t\t\t\tthis.element.addClass( this.options.hoverClass );\r\n\t\t\t}\r\n\t\t},\r\n\t\t_removeHoverClass: function() {\r\n\t\t\tthis._super();\r\n\t\t\tif ( this.options.hoverClass ) {\r\n\t\t\t\tthis.element.removeClass( this.options.hoverClass );\r\n\t\t\t}\r\n\t\t}\r\n\t} );\r\n}\r\n\r\nvar widgetsDroppable = $.ui.droppable;\r\n\r\n\r\n/*!\r\n * jQuery UI Progressbar 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Progressbar\r\n//>>group: Widgets\r\n/* eslint-disable max-len */\r\n//>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators.\r\n/* eslint-enable max-len */\r\n//>>docs: https://api.jqueryui.com/progressbar/\r\n//>>demos: https://jqueryui.com/progressbar/\r\n//>>css.structure: ../../themes/base/core.css\r\n//>>css.structure: ../../themes/base/progressbar.css\r\n//>>css.theme: ../../themes/base/theme.css\r\n\r\n\r\nvar widgetsProgressbar = $.widget( \"ui.progressbar\", {\r\n\tversion: \"1.14.1\",\r\n\toptions: {\r\n\t\tclasses: {\r\n\t\t\t\"ui-progressbar\": \"ui-corner-all\",\r\n\t\t\t\"ui-progressbar-value\": \"ui-corner-left\",\r\n\t\t\t\"ui-progressbar-complete\": \"ui-corner-right\"\r\n\t\t},\r\n\t\tmax: 100,\r\n\t\tvalue: 0,\r\n\r\n\t\tchange: null,\r\n\t\tcomplete: null\r\n\t},\r\n\r\n\tmin: 0,\r\n\r\n\t_create: function() {\r\n\r\n\t\t// Constrain initial value\r\n\t\tthis.oldValue = this.options.value = this._constrainedValue();\r\n\r\n\t\tthis.element.attr( {\r\n\r\n\t\t\t// Only set static values; aria-valuenow and aria-valuemax are\r\n\t\t\t// set inside _refreshValue()\r\n\t\t\trole: \"progressbar\",\r\n\t\t\t\"aria-valuemin\": this.min\r\n\t\t} );\r\n\t\tthis._addClass( \"ui-progressbar\", \"ui-widget ui-widget-content\" );\r\n\r\n\t\tthis.valueDiv = $( \"<div>\" ).appendTo( this.element );\r\n\t\tthis._addClass( this.valueDiv, \"ui-progressbar-value\", \"ui-widget-header\" );\r\n\t\tthis._refreshValue();\r\n\t},\r\n\r\n\t_destroy: function() {\r\n\t\tthis.element.removeAttr( \"role aria-valuemin aria-valuemax aria-valuenow\" );\r\n\r\n\t\tthis.valueDiv.remove();\r\n\t},\r\n\r\n\tvalue: function( newValue ) {\r\n\t\tif ( newValue === undefined ) {\r\n\t\t\treturn this.options.value;\r\n\t\t}\r\n\r\n\t\tthis.options.value = this._constrainedValue( newValue );\r\n\t\tthis._refreshValue();\r\n\t},\r\n\r\n\t_constrainedValue: function( newValue ) {\r\n\t\tif ( newValue === undefined ) {\r\n\t\t\tnewValue = this.options.value;\r\n\t\t}\r\n\r\n\t\tthis.indeterminate = newValue === false;\r\n\r\n\t\t// Sanitize value\r\n\t\tif ( typeof newValue !== \"number\" ) {\r\n\t\t\tnewValue = 0;\r\n\t\t}\r\n\r\n\t\treturn this.indeterminate ? false :\r\n\t\t\tMath.min( this.options.max, Math.max( this.min, newValue ) );\r\n\t},\r\n\r\n\t_setOptions: function( options ) {\r\n\r\n\t\t// Ensure \"value\" option is set after other values (like max)\r\n\t\tvar value = options.value;\r\n\t\tdelete options.value;\r\n\r\n\t\tthis._super( options );\r\n\r\n\t\tthis.options.value = this._constrainedValue( value );\r\n\t\tthis._refreshValue();\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\t\tif ( key === \"max\" ) {\r\n\r\n\t\t\t// Don't allow a max less than min\r\n\t\t\tvalue = Math.max( this.min, value );\r\n\t\t}\r\n\t\tthis._super( key, value );\r\n\t},\r\n\r\n\t_setOptionDisabled: function( value ) {\r\n\t\tthis._super( value );\r\n\r\n\t\tthis.element.attr( \"aria-disabled\", value );\r\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\r\n\t},\r\n\r\n\t_percentage: function() {\r\n\t\treturn this.indeterminate ?\r\n\t\t\t100 :\r\n\t\t\t100 * ( this.options.value - this.min ) / ( this.options.max - this.min );\r\n\t},\r\n\r\n\t_refreshValue: function() {\r\n\t\tvar value = this.options.value,\r\n\t\t\tpercentage = this._percentage();\r\n\r\n\t\tthis.valueDiv\r\n\t\t\t.toggle( this.indeterminate || value > this.min )\r\n\t\t\t.width( percentage.toFixed( 0 ) + \"%\" );\r\n\r\n\t\tthis\r\n\t\t\t._toggleClass( this.valueDiv, \"ui-progressbar-complete\", null,\r\n\t\t\t\tvalue === this.options.max )\r\n\t\t\t._toggleClass( \"ui-progressbar-indeterminate\", null, this.indeterminate );\r\n\r\n\t\tif ( this.indeterminate ) {\r\n\t\t\tthis.element.removeAttr( \"aria-valuenow\" );\r\n\t\t\tif ( !this.overlayDiv ) {\r\n\t\t\t\tthis.overlayDiv = $( \"<div>\" ).appendTo( this.valueDiv );\r\n\t\t\t\tthis._addClass( this.overlayDiv, \"ui-progressbar-overlay\" );\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.element.attr( {\r\n\t\t\t\t\"aria-valuemax\": this.options.max,\r\n\t\t\t\t\"aria-valuenow\": value\r\n\t\t\t} );\r\n\t\t\tif ( this.overlayDiv ) {\r\n\t\t\t\tthis.overlayDiv.remove();\r\n\t\t\t\tthis.overlayDiv = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( this.oldValue !== value ) {\r\n\t\t\tthis.oldValue = value;\r\n\t\t\tthis._trigger( \"change\" );\r\n\t\t}\r\n\t\tif ( value === this.options.max ) {\r\n\t\t\tthis._trigger( \"complete\" );\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Selectable 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Selectable\r\n//>>group: Interactions\r\n//>>description: Allows groups of elements to be selected with the mouse.\r\n//>>docs: https://api.jqueryui.com/selectable/\r\n//>>demos: https://jqueryui.com/selectable/\r\n//>>css.structure: ../../themes/base/selectable.css\r\n\r\n\r\nvar widgetsSelectable = $.widget( \"ui.selectable\", $.ui.mouse, {\r\n\tversion: \"1.14.1\",\r\n\toptions: {\r\n\t\tappendTo: \"body\",\r\n\t\tautoRefresh: true,\r\n\t\tdistance: 0,\r\n\t\tfilter: \"*\",\r\n\t\ttolerance: \"touch\",\r\n\r\n\t\t// Callbacks\r\n\t\tselected: null,\r\n\t\tselecting: null,\r\n\t\tstart: null,\r\n\t\tstop: null,\r\n\t\tunselected: null,\r\n\t\tunselecting: null\r\n\t},\r\n\t_create: function() {\r\n\t\tvar that = this;\r\n\r\n\t\tthis._addClass( \"ui-selectable\" );\r\n\r\n\t\tthis.dragged = false;\r\n\r\n\t\t// Cache selectee children based on filter\r\n\t\tthis.refresh = function() {\r\n\t\t\tthat.elementPos = $( that.element[ 0 ] ).offset();\r\n\t\t\tthat.selectees = $( that.options.filter, that.element[ 0 ] );\r\n\t\t\tthat._addClass( that.selectees, \"ui-selectee\" );\r\n\t\t\tthat.selectees.each( function() {\r\n\t\t\t\tvar $this = $( this ),\r\n\t\t\t\t\tselecteeOffset = $this.offset(),\r\n\t\t\t\t\tpos = {\r\n\t\t\t\t\t\tleft: selecteeOffset.left - that.elementPos.left,\r\n\t\t\t\t\t\ttop: selecteeOffset.top - that.elementPos.top\r\n\t\t\t\t\t};\r\n\t\t\t\t$.data( this, \"selectable-item\", {\r\n\t\t\t\t\telement: this,\r\n\t\t\t\t\t$element: $this,\r\n\t\t\t\t\tleft: pos.left,\r\n\t\t\t\t\ttop: pos.top,\r\n\t\t\t\t\tright: pos.left + $this.outerWidth(),\r\n\t\t\t\t\tbottom: pos.top + $this.outerHeight(),\r\n\t\t\t\t\tstartselected: false,\r\n\t\t\t\t\tselected: $this.hasClass( \"ui-selected\" ),\r\n\t\t\t\t\tselecting: $this.hasClass( \"ui-selecting\" ),\r\n\t\t\t\t\tunselecting: $this.hasClass( \"ui-unselecting\" )\r\n\t\t\t\t} );\r\n\t\t\t} );\r\n\t\t};\r\n\t\tthis.refresh();\r\n\r\n\t\tthis._mouseInit();\r\n\r\n\t\tthis.helper = $( \"<div>\" );\r\n\t\tthis._addClass( this.helper, \"ui-selectable-helper\" );\r\n\t},\r\n\r\n\t_destroy: function() {\r\n\t\tthis.selectees.removeData( \"selectable-item\" );\r\n\t\tthis._mouseDestroy();\r\n\t},\r\n\r\n\t_mouseStart: function( event ) {\r\n\t\tvar that = this,\r\n\t\t\toptions = this.options;\r\n\r\n\t\tthis.opos = [ event.pageX, event.pageY ];\r\n\t\tthis.elementPos = $( this.element[ 0 ] ).offset();\r\n\r\n\t\tif ( this.options.disabled ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.selectees = $( options.filter, this.element[ 0 ] );\r\n\r\n\t\tthis._trigger( \"start\", event );\r\n\r\n\t\t$( options.appendTo ).append( this.helper );\r\n\r\n\t\t// position helper (lasso)\r\n\t\tthis.helper.css( {\r\n\t\t\t\"left\": event.pageX,\r\n\t\t\t\"top\": event.pageY,\r\n\t\t\t\"width\": 0,\r\n\t\t\t\"height\": 0\r\n\t\t} );\r\n\r\n\t\tif ( options.autoRefresh ) {\r\n\t\t\tthis.refresh();\r\n\t\t}\r\n\r\n\t\tthis.selectees.filter( \".ui-selected\" ).each( function() {\r\n\t\t\tvar selectee = $.data( this, \"selectable-item\" );\r\n\t\t\tselectee.startselected = true;\r\n\t\t\tif ( !event.metaKey && !event.ctrlKey ) {\r\n\t\t\t\tthat._removeClass( selectee.$element, \"ui-selected\" );\r\n\t\t\t\tselectee.selected = false;\r\n\t\t\t\tthat._addClass( selectee.$element, \"ui-unselecting\" );\r\n\t\t\t\tselectee.unselecting = true;\r\n\r\n\t\t\t\t// selectable UNSELECTING callback\r\n\t\t\t\tthat._trigger( \"unselecting\", event, {\r\n\t\t\t\t\tunselecting: selectee.element\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\t$( event.target ).parents().addBack().each( function() {\r\n\t\t\tvar doSelect,\r\n\t\t\t\tselectee = $.data( this, \"selectable-item\" );\r\n\t\t\tif ( selectee ) {\r\n\t\t\t\tdoSelect = ( !event.metaKey && !event.ctrlKey ) ||\r\n\t\t\t\t\t!selectee.$element.hasClass( \"ui-selected\" );\r\n\t\t\t\tthat._removeClass( selectee.$element, doSelect ? \"ui-unselecting\" : \"ui-selected\" )\r\n\t\t\t\t\t._addClass( selectee.$element, doSelect ? \"ui-selecting\" : \"ui-unselecting\" );\r\n\t\t\t\tselectee.unselecting = !doSelect;\r\n\t\t\t\tselectee.selecting = doSelect;\r\n\t\t\t\tselectee.selected = doSelect;\r\n\r\n\t\t\t\t// selectable (UN)SELECTING callback\r\n\t\t\t\tif ( doSelect ) {\r\n\t\t\t\t\tthat._trigger( \"selecting\", event, {\r\n\t\t\t\t\t\tselecting: selectee.element\r\n\t\t\t\t\t} );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthat._trigger( \"unselecting\", event, {\r\n\t\t\t\t\t\tunselecting: selectee.element\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t},\r\n\r\n\t_mouseDrag: function( event ) {\r\n\r\n\t\tthis.dragged = true;\r\n\r\n\t\tif ( this.options.disabled ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tmp,\r\n\t\t\tthat = this,\r\n\t\t\toptions = this.options,\r\n\t\t\tx1 = this.opos[ 0 ],\r\n\t\t\ty1 = this.opos[ 1 ],\r\n\t\t\tx2 = event.pageX,\r\n\t\t\ty2 = event.pageY;\r\n\r\n\t\tif ( x1 > x2 ) {\r\n\t\t\ttmp = x2; x2 = x1; x1 = tmp;\r\n\t\t}\r\n\t\tif ( y1 > y2 ) {\r\n\t\t\ttmp = y2; y2 = y1; y1 = tmp;\r\n\t\t}\r\n\t\tthis.helper.css( { left: x1, top: y1, width: x2 - x1, height: y2 - y1 } );\r\n\r\n\t\tthis.selectees.each( function() {\r\n\t\t\tvar selectee = $.data( this, \"selectable-item\" ),\r\n\t\t\t\thit = false,\r\n\t\t\t\toffset = {};\r\n\r\n\t\t\t//prevent helper from being selected if appendTo: selectable\r\n\t\t\tif ( !selectee || selectee.element === that.element[ 0 ] ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\toffset.left   = selectee.left   + that.elementPos.left;\r\n\t\t\toffset.right  = selectee.right  + that.elementPos.left;\r\n\t\t\toffset.top    = selectee.top    + that.elementPos.top;\r\n\t\t\toffset.bottom = selectee.bottom + that.elementPos.top;\r\n\r\n\t\t\tif ( options.tolerance === \"touch\" ) {\r\n\t\t\t\thit = ( !( offset.left > x2 || offset.right < x1 || offset.top > y2 ||\r\n                    offset.bottom < y1 ) );\r\n\t\t\t} else if ( options.tolerance === \"fit\" ) {\r\n\t\t\t\thit = ( offset.left > x1 && offset.right < x2 && offset.top > y1 &&\r\n                    offset.bottom < y2 );\r\n\t\t\t}\r\n\r\n\t\t\tif ( hit ) {\r\n\r\n\t\t\t\t// SELECT\r\n\t\t\t\tif ( selectee.selected ) {\r\n\t\t\t\t\tthat._removeClass( selectee.$element, \"ui-selected\" );\r\n\t\t\t\t\tselectee.selected = false;\r\n\t\t\t\t}\r\n\t\t\t\tif ( selectee.unselecting ) {\r\n\t\t\t\t\tthat._removeClass( selectee.$element, \"ui-unselecting\" );\r\n\t\t\t\t\tselectee.unselecting = false;\r\n\t\t\t\t}\r\n\t\t\t\tif ( !selectee.selecting ) {\r\n\t\t\t\t\tthat._addClass( selectee.$element, \"ui-selecting\" );\r\n\t\t\t\t\tselectee.selecting = true;\r\n\r\n\t\t\t\t\t// selectable SELECTING callback\r\n\t\t\t\t\tthat._trigger( \"selecting\", event, {\r\n\t\t\t\t\t\tselecting: selectee.element\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// UNSELECT\r\n\t\t\t\tif ( selectee.selecting ) {\r\n\t\t\t\t\tif ( ( event.metaKey || event.ctrlKey ) && selectee.startselected ) {\r\n\t\t\t\t\t\tthat._removeClass( selectee.$element, \"ui-selecting\" );\r\n\t\t\t\t\t\tselectee.selecting = false;\r\n\t\t\t\t\t\tthat._addClass( selectee.$element, \"ui-selected\" );\r\n\t\t\t\t\t\tselectee.selected = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthat._removeClass( selectee.$element, \"ui-selecting\" );\r\n\t\t\t\t\t\tselectee.selecting = false;\r\n\t\t\t\t\t\tif ( selectee.startselected ) {\r\n\t\t\t\t\t\t\tthat._addClass( selectee.$element, \"ui-unselecting\" );\r\n\t\t\t\t\t\t\tselectee.unselecting = true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// selectable UNSELECTING callback\r\n\t\t\t\t\t\tthat._trigger( \"unselecting\", event, {\r\n\t\t\t\t\t\t\tunselecting: selectee.element\r\n\t\t\t\t\t\t} );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif ( selectee.selected ) {\r\n\t\t\t\t\tif ( !event.metaKey && !event.ctrlKey && !selectee.startselected ) {\r\n\t\t\t\t\t\tthat._removeClass( selectee.$element, \"ui-selected\" );\r\n\t\t\t\t\t\tselectee.selected = false;\r\n\r\n\t\t\t\t\t\tthat._addClass( selectee.$element, \"ui-unselecting\" );\r\n\t\t\t\t\t\tselectee.unselecting = true;\r\n\r\n\t\t\t\t\t\t// selectable UNSELECTING callback\r\n\t\t\t\t\t\tthat._trigger( \"unselecting\", event, {\r\n\t\t\t\t\t\t\tunselecting: selectee.element\r\n\t\t\t\t\t\t} );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\t_mouseStop: function( event ) {\r\n\t\tvar that = this;\r\n\r\n\t\tthis.dragged = false;\r\n\r\n\t\t$( \".ui-unselecting\", this.element[ 0 ] ).each( function() {\r\n\t\t\tvar selectee = $.data( this, \"selectable-item\" );\r\n\t\t\tthat._removeClass( selectee.$element, \"ui-unselecting\" );\r\n\t\t\tselectee.unselecting = false;\r\n\t\t\tselectee.startselected = false;\r\n\t\t\tthat._trigger( \"unselected\", event, {\r\n\t\t\t\tunselected: selectee.element\r\n\t\t\t} );\r\n\t\t} );\r\n\t\t$( \".ui-selecting\", this.element[ 0 ] ).each( function() {\r\n\t\t\tvar selectee = $.data( this, \"selectable-item\" );\r\n\t\t\tthat._removeClass( selectee.$element, \"ui-selecting\" )\r\n\t\t\t\t._addClass( selectee.$element, \"ui-selected\" );\r\n\t\t\tselectee.selecting = false;\r\n\t\t\tselectee.selected = true;\r\n\t\t\tselectee.startselected = true;\r\n\t\t\tthat._trigger( \"selected\", event, {\r\n\t\t\t\tselected: selectee.element\r\n\t\t\t} );\r\n\t\t} );\r\n\t\tthis._trigger( \"stop\", event );\r\n\r\n\t\tthis.helper.remove();\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Selectmenu 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Selectmenu\r\n//>>group: Widgets\r\n/* eslint-disable max-len */\r\n//>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select.\r\n/* eslint-enable max-len */\r\n//>>docs: https://api.jqueryui.com/selectmenu/\r\n//>>demos: https://jqueryui.com/selectmenu/\r\n//>>css.structure: ../../themes/base/core.css\r\n//>>css.structure: ../../themes/base/selectmenu.css, ../../themes/base/button.css\r\n//>>css.theme: ../../themes/base/theme.css\r\n\r\n\r\nvar widgetsSelectmenu = $.widget( \"ui.selectmenu\", [ $.ui.formResetMixin, {\r\n\tversion: \"1.14.1\",\r\n\tdefaultElement: \"<select>\",\r\n\toptions: {\r\n\t\tappendTo: null,\r\n\t\tclasses: {\r\n\t\t\t\"ui-selectmenu-button-open\": \"ui-corner-top\",\r\n\t\t\t\"ui-selectmenu-button-closed\": \"ui-corner-all\"\r\n\t\t},\r\n\t\tdisabled: null,\r\n\t\ticons: {\r\n\t\t\tbutton: \"ui-icon-triangle-1-s\"\r\n\t\t},\r\n\t\tposition: {\r\n\t\t\tmy: \"left top\",\r\n\t\t\tat: \"left bottom\",\r\n\t\t\tcollision: \"none\"\r\n\t\t},\r\n\t\twidth: false,\r\n\r\n\t\t// Callbacks\r\n\t\tchange: null,\r\n\t\tclose: null,\r\n\t\tfocus: null,\r\n\t\topen: null,\r\n\t\tselect: null\r\n\t},\r\n\r\n\t_create: function() {\r\n\t\tvar selectmenuId = this.element.uniqueId().attr( \"id\" );\r\n\t\tthis.ids = {\r\n\t\t\telement: selectmenuId,\r\n\t\t\tbutton: selectmenuId + \"-button\",\r\n\t\t\tmenu: selectmenuId + \"-menu\"\r\n\t\t};\r\n\r\n\t\tthis._drawButton();\r\n\t\tthis._drawMenu();\r\n\t\tthis._bindFormResetHandler();\r\n\r\n\t\tthis._rendered = false;\r\n\t\tthis.menuItems = $();\r\n\t},\r\n\r\n\t_drawButton: function() {\r\n\t\tvar icon,\r\n\t\t\tthat = this,\r\n\t\t\titem = this._parseOption(\r\n\t\t\t\tthis.element.find( \"option:selected\" ),\r\n\t\t\t\tthis.element[ 0 ].selectedIndex\r\n\t\t\t);\r\n\r\n\t\t// Associate existing label with the new button\r\n\t\tthis.labels = this.element.labels().attr( \"for\", this.ids.button );\r\n\t\tthis._on( this.labels, {\r\n\t\t\tclick: function( event ) {\r\n\t\t\t\tthis.button.trigger( \"focus\" );\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\t// Hide original select element\r\n\t\tthis.element.hide();\r\n\r\n\t\t// Create button\r\n\t\tthis.button = $( \"<span>\", {\r\n\t\t\ttabindex: this.options.disabled ? -1 : 0,\r\n\t\t\tid: this.ids.button,\r\n\t\t\trole: \"combobox\",\r\n\t\t\t\"aria-expanded\": \"false\",\r\n\t\t\t\"aria-autocomplete\": \"list\",\r\n\t\t\t\"aria-owns\": this.ids.menu,\r\n\t\t\t\"aria-haspopup\": \"true\",\r\n\t\t\ttitle: this.element.attr( \"title\" )\r\n\t\t} )\r\n\t\t\t.insertAfter( this.element );\r\n\r\n\t\tthis._addClass( this.button, \"ui-selectmenu-button ui-selectmenu-button-closed\",\r\n\t\t\t\"ui-button ui-widget\" );\r\n\r\n\t\ticon = $( \"<span>\" ).appendTo( this.button );\r\n\t\tthis._addClass( icon, \"ui-selectmenu-icon\", \"ui-icon \" + this.options.icons.button );\r\n\t\tthis.buttonItem = this._renderButtonItem( item )\r\n\t\t\t.appendTo( this.button );\r\n\r\n\t\tif ( this.options.width !== false ) {\r\n\t\t\tthis._resizeButton();\r\n\t\t}\r\n\r\n\t\tthis._on( this.button, this._buttonEvents );\r\n\t\tthis.button.one( \"focusin\", function() {\r\n\r\n\t\t\t// Delay rendering the menu items until the button receives focus.\r\n\t\t\t// The menu may have already been rendered via a programmatic open.\r\n\t\t\tif ( !that._rendered ) {\r\n\t\t\t\tthat._refreshMenu();\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\t_drawMenu: function() {\r\n\t\tvar that = this;\r\n\r\n\t\t// Create menu\r\n\t\tthis.menu = $( \"<ul>\", {\r\n\t\t\t\"aria-hidden\": \"true\",\r\n\t\t\t\"aria-labelledby\": this.ids.button,\r\n\t\t\tid: this.ids.menu\r\n\t\t} );\r\n\r\n\t\t// Wrap menu\r\n\t\tthis.menuWrap = $( \"<div>\" ).append( this.menu );\r\n\t\tthis._addClass( this.menuWrap, \"ui-selectmenu-menu\", \"ui-front\" );\r\n\t\tthis.menuWrap.appendTo( this._appendTo() );\r\n\r\n\t\t// Initialize menu widget\r\n\t\tthis.menuInstance = this.menu\r\n\t\t\t.menu( {\r\n\t\t\t\tclasses: {\r\n\t\t\t\t\t\"ui-menu\": \"ui-corner-bottom\"\r\n\t\t\t\t},\r\n\t\t\t\trole: \"listbox\",\r\n\t\t\t\tselect: function( event, ui ) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\tthat._select( ui.item.data( \"ui-selectmenu-item\" ), event );\r\n\t\t\t\t},\r\n\t\t\t\tfocus: function( event, ui ) {\r\n\t\t\t\t\tvar item = ui.item.data( \"ui-selectmenu-item\" );\r\n\r\n\t\t\t\t\t// Prevent inital focus from firing and check if its a newly focused item\r\n\t\t\t\t\tif ( that.focusIndex != null && item.index !== that.focusIndex ) {\r\n\t\t\t\t\t\tthat._trigger( \"focus\", event, { item: item } );\r\n\t\t\t\t\t\tif ( !that.isOpen ) {\r\n\t\t\t\t\t\t\tthat._select( item, event );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthat.focusIndex = item.index;\r\n\r\n\t\t\t\t\tthat.button.attr( \"aria-activedescendant\",\r\n\t\t\t\t\t\tthat.menuItems.eq( item.index ).attr( \"id\" ) );\r\n\t\t\t\t}\r\n\t\t\t} )\r\n\t\t\t.menu( \"instance\" );\r\n\r\n\t\t// Don't close the menu on mouseleave\r\n\t\tthis.menuInstance._off( this.menu, \"mouseleave\" );\r\n\r\n\t\t// Cancel the menu's collapseAll on document click\r\n\t\tthis.menuInstance._closeOnDocumentClick = function() {\r\n\t\t\treturn false;\r\n\t\t};\r\n\r\n\t\t// Selects often contain empty items, but never contain dividers\r\n\t\tthis.menuInstance._isDivider = function() {\r\n\t\t\treturn false;\r\n\t\t};\r\n\t},\r\n\r\n\trefresh: function() {\r\n\t\tthis._refreshMenu();\r\n\t\tthis.buttonItem.replaceWith(\r\n\t\t\tthis.buttonItem = this._renderButtonItem(\r\n\r\n\t\t\t\t// Fall back to an empty object in case there are no options\r\n\t\t\t\tthis._getSelectedItem().data( \"ui-selectmenu-item\" ) || {}\r\n\t\t\t)\r\n\t\t);\r\n\t\tif ( this.options.width === null ) {\r\n\t\t\tthis._resizeButton();\r\n\t\t}\r\n\t},\r\n\r\n\t_refreshMenu: function() {\r\n\t\tvar item,\r\n\t\t\toptions = this.element.find( \"option\" );\r\n\r\n\t\tthis.menu.empty();\r\n\r\n\t\tthis._parseOptions( options );\r\n\t\tthis._renderMenu( this.menu, this.items );\r\n\r\n\t\tthis.menuInstance.refresh();\r\n\t\tthis.menuItems = this.menu.find( \"li\" )\r\n\t\t\t.not( \".ui-selectmenu-optgroup\" )\r\n\t\t\t\t.find( \".ui-menu-item-wrapper\" );\r\n\r\n\t\tthis._rendered = true;\r\n\r\n\t\tif ( !options.length ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\titem = this._getSelectedItem();\r\n\r\n\t\t// Update the menu to have the correct item focused\r\n\t\tthis.menuInstance.focus( null, item );\r\n\t\tthis._setAria( item.data( \"ui-selectmenu-item\" ) );\r\n\r\n\t\t// Set disabled state\r\n\t\tthis._setOption( \"disabled\", this.element.prop( \"disabled\" ) );\r\n\t},\r\n\r\n\topen: function( event ) {\r\n\t\tif ( this.options.disabled ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If this is the first time the menu is being opened, render the items\r\n\t\tif ( !this._rendered ) {\r\n\t\t\tthis._refreshMenu();\r\n\t\t} else {\r\n\r\n\t\t\t// Menu clears focus on close, reset focus to selected item\r\n\t\t\tthis._removeClass( this.menu.find( \".ui-state-active\" ), null, \"ui-state-active\" );\r\n\t\t\tthis.menuInstance.focus( null, this._getSelectedItem() );\r\n\t\t}\r\n\r\n\t\t// If there are no options, don't open the menu\r\n\t\tif ( !this.menuItems.length ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isOpen = true;\r\n\t\tthis._toggleAttr();\r\n\t\tthis._resizeMenu();\r\n\t\tthis._position();\r\n\r\n\t\tthis._on( this.document, this._documentClick );\r\n\r\n\t\tthis._trigger( \"open\", event );\r\n\t},\r\n\r\n\t_position: function() {\r\n\t\tthis.menuWrap.position( $.extend( { of: this.button }, this.options.position ) );\r\n\t},\r\n\r\n\tclose: function( event ) {\r\n\t\tif ( !this.isOpen ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isOpen = false;\r\n\t\tthis._toggleAttr();\r\n\r\n\t\tthis.range = null;\r\n\t\tthis._off( this.document );\r\n\r\n\t\tthis._trigger( \"close\", event );\r\n\t},\r\n\r\n\twidget: function() {\r\n\t\treturn this.button;\r\n\t},\r\n\r\n\tmenuWidget: function() {\r\n\t\treturn this.menu;\r\n\t},\r\n\r\n\t_renderButtonItem: function( item ) {\r\n\t\tvar buttonItem = $( \"<span>\" );\r\n\r\n\t\tthis._setText( buttonItem, item.label );\r\n\t\tthis._addClass( buttonItem, \"ui-selectmenu-text\" );\r\n\r\n\t\treturn buttonItem;\r\n\t},\r\n\r\n\t_renderMenu: function( ul, items ) {\r\n\t\tvar that = this,\r\n\t\t\tcurrentOptgroup = \"\";\r\n\r\n\t\t$.each( items, function( index, item ) {\r\n\t\t\tvar li;\r\n\r\n\t\t\tif ( item.optgroup !== currentOptgroup ) {\r\n\t\t\t\tli = $( \"<li>\", {\r\n\t\t\t\t\ttext: item.optgroup\r\n\t\t\t\t} );\r\n\t\t\t\tthat._addClass( li, \"ui-selectmenu-optgroup\", \"ui-menu-divider\" +\r\n\t\t\t\t\t( item.element.parent( \"optgroup\" ).prop( \"disabled\" ) ?\r\n\t\t\t\t\t\t\" ui-state-disabled\" :\r\n\t\t\t\t\t\t\"\" ) );\r\n\r\n\t\t\t\tli.appendTo( ul );\r\n\r\n\t\t\t\tcurrentOptgroup = item.optgroup;\r\n\t\t\t}\r\n\r\n\t\t\tthat._renderItemData( ul, item );\r\n\t\t} );\r\n\t},\r\n\r\n\t_renderItemData: function( ul, item ) {\r\n\t\treturn this._renderItem( ul, item ).data( \"ui-selectmenu-item\", item );\r\n\t},\r\n\r\n\t_renderItem: function( ul, item ) {\r\n\t\tvar li = $( \"<li>\" ),\r\n\t\t\twrapper = $( \"<div>\", {\r\n\t\t\t\ttitle: item.element.attr( \"title\" )\r\n\t\t\t} );\r\n\r\n\t\tif ( item.disabled ) {\r\n\t\t\tthis._addClass( li, null, \"ui-state-disabled\" );\r\n\t\t}\r\n\r\n\t\tif ( item.hidden ) {\r\n\t\t\tli.prop( \"hidden\", true );\r\n\t\t} else {\r\n\t\t\tthis._setText( wrapper, item.label );\r\n\t\t}\r\n\r\n\t\treturn li.append( wrapper ).appendTo( ul );\r\n\t},\r\n\r\n\t_setText: function( element, value ) {\r\n\t\tif ( value ) {\r\n\t\t\telement.text( value );\r\n\t\t} else {\r\n\t\t\telement.html( \"&#160;\" );\r\n\t\t}\r\n\t},\r\n\r\n\t_move: function( direction, event ) {\r\n\t\tvar item, next,\r\n\t\t\tfilter = \".ui-menu-item\";\r\n\r\n\t\tif ( this.isOpen ) {\r\n\t\t\titem = this.menuItems.eq( this.focusIndex ).parent( \"li\" );\r\n\t\t} else {\r\n\t\t\titem = this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( \"li\" );\r\n\t\t\tfilter += \":not(.ui-state-disabled)\";\r\n\t\t}\r\n\r\n\t\tif ( direction === \"first\" || direction === \"last\" ) {\r\n\t\t\tnext = item[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( filter ).eq( -1 );\r\n\t\t} else {\r\n\t\t\tnext = item[ direction + \"All\" ]( filter ).eq( 0 );\r\n\t\t}\r\n\r\n\t\tif ( next.length ) {\r\n\t\t\tthis.menuInstance.focus( event, next );\r\n\t\t}\r\n\t},\r\n\r\n\t_getSelectedItem: function() {\r\n\t\treturn this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( \"li\" );\r\n\t},\r\n\r\n\t_toggle: function( event ) {\r\n\t\tthis[ this.isOpen ? \"close\" : \"open\" ]( event );\r\n\t},\r\n\r\n\t_setSelection: function() {\r\n\t\tvar selection;\r\n\r\n\t\tif ( !this.range ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tselection = window.getSelection();\r\n\t\tselection.removeAllRanges();\r\n\t\tselection.addRange( this.range );\r\n\t},\r\n\r\n\t_documentClick: {\r\n\t\tmousedown: function( event ) {\r\n\t\t\tif ( !this.isOpen ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif ( !$( event.target ).closest( \".ui-selectmenu-menu, #\" +\r\n\t\t\t\tCSS.escape( this.ids.button ) ).length ) {\r\n\t\t\t\tthis.close( event );\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_buttonEvents: {\r\n\r\n\t\t// Prevent text selection from being reset when interacting with the selectmenu (#10144)\r\n\t\tmousedown: function() {\r\n\t\t\tvar selection = window.getSelection();\r\n\t\t\tif ( selection.rangeCount ) {\r\n\t\t\t\tthis.range = selection.getRangeAt( 0 );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tclick: function( event ) {\r\n\t\t\tthis._setSelection();\r\n\t\t\tthis._toggle( event );\r\n\t\t},\r\n\r\n\t\tkeydown: function( event ) {\r\n\t\t\tvar preventDefault = true;\r\n\t\t\tswitch ( event.keyCode ) {\r\n\t\t\tcase $.ui.keyCode.TAB:\r\n\t\t\tcase $.ui.keyCode.ESCAPE:\r\n\t\t\t\tthis.close( event );\r\n\t\t\t\tpreventDefault = false;\r\n\t\t\t\tbreak;\r\n\t\t\tcase $.ui.keyCode.ENTER:\r\n\t\t\t\tif ( this.isOpen ) {\r\n\t\t\t\t\tthis._selectFocusedItem( event );\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase $.ui.keyCode.UP:\r\n\t\t\t\tif ( event.altKey ) {\r\n\t\t\t\t\tthis._toggle( event );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._move( \"prev\", event );\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase $.ui.keyCode.DOWN:\r\n\t\t\t\tif ( event.altKey ) {\r\n\t\t\t\t\tthis._toggle( event );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._move( \"next\", event );\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase $.ui.keyCode.SPACE:\r\n\t\t\t\tif ( this.isOpen ) {\r\n\t\t\t\t\tthis._selectFocusedItem( event );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._toggle( event );\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase $.ui.keyCode.LEFT:\r\n\t\t\t\tthis._move( \"prev\", event );\r\n\t\t\t\tbreak;\r\n\t\t\tcase $.ui.keyCode.RIGHT:\r\n\t\t\t\tthis._move( \"next\", event );\r\n\t\t\t\tbreak;\r\n\t\t\tcase $.ui.keyCode.HOME:\r\n\t\t\tcase $.ui.keyCode.PAGE_UP:\r\n\t\t\t\tthis._move( \"first\", event );\r\n\t\t\t\tbreak;\r\n\t\t\tcase $.ui.keyCode.END:\r\n\t\t\tcase $.ui.keyCode.PAGE_DOWN:\r\n\t\t\t\tthis._move( \"last\", event );\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.menu.trigger( event );\r\n\t\t\t\tpreventDefault = false;\r\n\t\t\t}\r\n\r\n\t\t\tif ( preventDefault ) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_selectFocusedItem: function( event ) {\r\n\t\tvar item = this.menuItems.eq( this.focusIndex ).parent( \"li\" );\r\n\t\tif ( !item.hasClass( \"ui-state-disabled\" ) ) {\r\n\t\t\tthis._select( item.data( \"ui-selectmenu-item\" ), event );\r\n\t\t}\r\n\t},\r\n\r\n\t_select: function( item, event ) {\r\n\t\tvar oldIndex = this.element[ 0 ].selectedIndex;\r\n\r\n\t\t// Change native select element\r\n\t\tthis.element[ 0 ].selectedIndex = item.index;\r\n\t\tthis.buttonItem.replaceWith( this.buttonItem = this._renderButtonItem( item ) );\r\n\t\tthis._setAria( item );\r\n\t\tthis._trigger( \"select\", event, { item: item } );\r\n\r\n\t\tif ( item.index !== oldIndex ) {\r\n\t\t\tthis._trigger( \"change\", event, { item: item } );\r\n\t\t}\r\n\r\n\t\tthis.close( event );\r\n\t},\r\n\r\n\t_setAria: function( item ) {\r\n\t\tvar id = this.menuItems.eq( item.index ).attr( \"id\" );\r\n\r\n\t\tthis.button.attr( {\r\n\t\t\t\"aria-labelledby\": id,\r\n\t\t\t\"aria-activedescendant\": id\r\n\t\t} );\r\n\t\tthis.menu.attr( \"aria-activedescendant\", id );\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\t\tif ( key === \"icons\" ) {\r\n\t\t\tvar icon = this.button.find( \"span.ui-icon\" );\r\n\t\t\tthis._removeClass( icon, null, this.options.icons.button )\r\n\t\t\t\t._addClass( icon, null, value.button );\r\n\t\t}\r\n\r\n\t\tthis._super( key, value );\r\n\r\n\t\tif ( key === \"appendTo\" ) {\r\n\t\t\tthis.menuWrap.appendTo( this._appendTo() );\r\n\t\t}\r\n\r\n\t\tif ( key === \"width\" ) {\r\n\t\t\tthis._resizeButton();\r\n\t\t}\r\n\t},\r\n\r\n\t_setOptionDisabled: function( value ) {\r\n\t\tthis._super( value );\r\n\r\n\t\tthis.menuInstance.option( \"disabled\", value );\r\n\t\tthis.button.attr( \"aria-disabled\", value );\r\n\t\tthis._toggleClass( this.button, null, \"ui-state-disabled\", value );\r\n\r\n\t\tthis.element.prop( \"disabled\", value );\r\n\t\tif ( value ) {\r\n\t\t\tthis.button.attr( \"tabindex\", -1 );\r\n\t\t\tthis.close();\r\n\t\t} else {\r\n\t\t\tthis.button.attr( \"tabindex\", 0 );\r\n\t\t}\r\n\t},\r\n\r\n\t_appendTo: function() {\r\n\t\tvar element = this.options.appendTo;\r\n\r\n\t\tif ( element ) {\r\n\t\t\telement = element.jquery || element.nodeType ?\r\n\t\t\t\t$( element ) :\r\n\t\t\t\tthis.document.find( element ).eq( 0 );\r\n\t\t}\r\n\r\n\t\tif ( !element || !element[ 0 ] ) {\r\n\t\t\telement = this.element.closest( \".ui-front, dialog\" );\r\n\t\t}\r\n\r\n\t\tif ( !element.length ) {\r\n\t\t\telement = this.document[ 0 ].body;\r\n\t\t}\r\n\r\n\t\treturn element;\r\n\t},\r\n\r\n\t_toggleAttr: function() {\r\n\t\tthis.button.attr( \"aria-expanded\", this.isOpen );\r\n\r\n\t\t// We can't use two _toggleClass() calls here, because we need to make sure\r\n\t\t// we always remove classes first and add them second, otherwise if both classes have the\r\n\t\t// same theme class, it will be removed after we add it.\r\n\t\tthis._removeClass( this.button, \"ui-selectmenu-button-\" +\r\n\t\t\t( this.isOpen ? \"closed\" : \"open\" ) )\r\n\t\t\t._addClass( this.button, \"ui-selectmenu-button-\" +\r\n\t\t\t\t( this.isOpen ? \"open\" : \"closed\" ) )\r\n\t\t\t._toggleClass( this.menuWrap, \"ui-selectmenu-open\", null, this.isOpen );\r\n\r\n\t\tthis.menu.attr( \"aria-hidden\", !this.isOpen );\r\n\t},\r\n\r\n\t_resizeButton: function() {\r\n\t\tvar width = this.options.width;\r\n\r\n\t\t// For `width: false`, just remove inline style and stop\r\n\t\tif ( width === false ) {\r\n\t\t\tthis.button.css( \"width\", \"\" );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// For `width: null`, match the width of the original element\r\n\t\tif ( width === null ) {\r\n\t\t\twidth = this.element.show().outerWidth();\r\n\t\t\tthis.element.hide();\r\n\t\t}\r\n\r\n\t\tthis.button.outerWidth( width );\r\n\t},\r\n\r\n\t_resizeMenu: function() {\r\n\t\tthis.menu.outerWidth( Math.max(\r\n\t\t\tthis.button.outerWidth(),\r\n\t\t\tthis.menu.width( \"\" ).outerWidth()\r\n\t\t) );\r\n\t},\r\n\r\n\t_getCreateOptions: function() {\r\n\t\tvar options = this._super();\r\n\r\n\t\toptions.disabled = this.element.prop( \"disabled\" );\r\n\r\n\t\treturn options;\r\n\t},\r\n\r\n\t_parseOptions: function( options ) {\r\n\t\tvar that = this,\r\n\t\t\tdata = [];\r\n\t\toptions.each( function( index, item ) {\r\n\t\t\tdata.push( that._parseOption( $( item ), index ) );\r\n\t\t} );\r\n\t\tthis.items = data;\r\n\t},\r\n\r\n\t_parseOption: function( option, index ) {\r\n\t\tvar optgroup = option.parent( \"optgroup\" );\r\n\r\n\t\treturn {\r\n\t\t\telement: option,\r\n\t\t\tindex: index,\r\n\t\t\tvalue: option.val(),\r\n\t\t\tlabel: option.text(),\r\n\t\t\thidden: optgroup.prop( \"hidden\" ) || option.prop( \"hidden\" ),\r\n\t\t\toptgroup: optgroup.attr( \"label\" ) || \"\",\r\n\t\t\tdisabled: optgroup.prop( \"disabled\" ) || option.prop( \"disabled\" )\r\n\t\t};\r\n\t},\r\n\r\n\t_destroy: function() {\r\n\t\tthis._unbindFormResetHandler();\r\n\t\tthis.menuWrap.remove();\r\n\t\tthis.button.remove();\r\n\t\tthis.element.show();\r\n\t\tthis.element.removeUniqueId();\r\n\t\tthis.labels.attr( \"for\", this.ids.element );\r\n\t}\r\n} ] );\r\n\r\n\r\n/*!\r\n * jQuery UI Slider 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Slider\r\n//>>group: Widgets\r\n//>>description: Displays a flexible slider with ranges and accessibility via keyboard.\r\n//>>docs: https://api.jqueryui.com/slider/\r\n//>>demos: https://jqueryui.com/slider/\r\n//>>css.structure: ../../themes/base/core.css\r\n//>>css.structure: ../../themes/base/slider.css\r\n//>>css.theme: ../../themes/base/theme.css\r\n\r\n\r\nvar widgetsSlider = $.widget( \"ui.slider\", $.ui.mouse, {\r\n\tversion: \"1.14.1\",\r\n\twidgetEventPrefix: \"slide\",\r\n\r\n\toptions: {\r\n\t\tanimate: false,\r\n\t\tclasses: {\r\n\t\t\t\"ui-slider\": \"ui-corner-all\",\r\n\t\t\t\"ui-slider-handle\": \"ui-corner-all\",\r\n\r\n\t\t\t// Note: ui-widget-header isn't the most fittingly semantic framework class for this\r\n\t\t\t// element, but worked best visually with a variety of themes\r\n\t\t\t\"ui-slider-range\": \"ui-corner-all ui-widget-header\"\r\n\t\t},\r\n\t\tdistance: 0,\r\n\t\tmax: 100,\r\n\t\tmin: 0,\r\n\t\torientation: \"horizontal\",\r\n\t\trange: false,\r\n\t\tstep: 1,\r\n\t\tvalue: 0,\r\n\t\tvalues: null,\r\n\r\n\t\t// Callbacks\r\n\t\tchange: null,\r\n\t\tslide: null,\r\n\t\tstart: null,\r\n\t\tstop: null\r\n\t},\r\n\r\n\t// Number of pages in a slider\r\n\t// (how many times can you page up/down to go through the whole range)\r\n\tnumPages: 5,\r\n\r\n\t_create: function() {\r\n\t\tthis._keySliding = false;\r\n\t\tthis._mouseSliding = false;\r\n\t\tthis._animateOff = true;\r\n\t\tthis._handleIndex = null;\r\n\t\tthis._detectOrientation();\r\n\t\tthis._mouseInit();\r\n\t\tthis._calculateNewMax();\r\n\r\n\t\tthis._addClass( \"ui-slider ui-slider-\" + this.orientation,\r\n\t\t\t\"ui-widget ui-widget-content\" );\r\n\r\n\t\tthis._refresh();\r\n\r\n\t\tthis._animateOff = false;\r\n\t},\r\n\r\n\t_refresh: function() {\r\n\t\tthis._createRange();\r\n\t\tthis._createHandles();\r\n\t\tthis._setupEvents();\r\n\t\tthis._refreshValue();\r\n\t},\r\n\r\n\t_createHandles: function() {\r\n\t\tvar i, handleCount,\r\n\t\t\toptions = this.options,\r\n\t\t\texistingHandles = this.element.find( \".ui-slider-handle\" ),\r\n\t\t\thandle = \"<span tabindex='0'></span>\",\r\n\t\t\thandles = [];\r\n\r\n\t\thandleCount = ( options.values && options.values.length ) || 1;\r\n\r\n\t\tif ( existingHandles.length > handleCount ) {\r\n\t\t\texistingHandles.slice( handleCount ).remove();\r\n\t\t\texistingHandles = existingHandles.slice( 0, handleCount );\r\n\t\t}\r\n\r\n\t\tfor ( i = existingHandles.length; i < handleCount; i++ ) {\r\n\t\t\thandles.push( handle );\r\n\t\t}\r\n\r\n\t\tthis.handles = existingHandles.add( $( handles.join( \"\" ) ).appendTo( this.element ) );\r\n\r\n\t\tthis._addClass( this.handles, \"ui-slider-handle\", \"ui-state-default\" );\r\n\r\n\t\tthis.handle = this.handles.eq( 0 );\r\n\r\n\t\tthis.handles.each( function( i ) {\r\n\t\t\t$( this )\r\n\t\t\t\t.data( \"ui-slider-handle-index\", i )\r\n\t\t\t\t.attr( \"tabIndex\", 0 );\r\n\t\t} );\r\n\t},\r\n\r\n\t_createRange: function() {\r\n\t\tvar options = this.options;\r\n\r\n\t\tif ( options.range ) {\r\n\t\t\tif ( options.range === true ) {\r\n\t\t\t\tif ( !options.values ) {\r\n\t\t\t\t\toptions.values = [ this._valueMin(), this._valueMin() ];\r\n\t\t\t\t} else if ( options.values.length && options.values.length !== 2 ) {\r\n\t\t\t\t\toptions.values = [ options.values[ 0 ], options.values[ 0 ] ];\r\n\t\t\t\t} else if ( Array.isArray( options.values ) ) {\r\n\t\t\t\t\toptions.values = options.values.slice( 0 );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( !this.range || !this.range.length ) {\r\n\t\t\t\tthis.range = $( \"<div>\" )\r\n\t\t\t\t\t.appendTo( this.element );\r\n\r\n\t\t\t\tthis._addClass( this.range, \"ui-slider-range\" );\r\n\t\t\t} else {\r\n\t\t\t\tthis._removeClass( this.range, \"ui-slider-range-min ui-slider-range-max\" );\r\n\r\n\t\t\t\t// Handle range switching from true to min/max\r\n\t\t\t\tthis.range.css( {\r\n\t\t\t\t\t\"left\": \"\",\r\n\t\t\t\t\t\"bottom\": \"\"\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t\tif ( options.range === \"min\" || options.range === \"max\" ) {\r\n\t\t\t\tthis._addClass( this.range, \"ui-slider-range-\" + options.range );\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif ( this.range ) {\r\n\t\t\t\tthis.range.remove();\r\n\t\t\t}\r\n\t\t\tthis.range = null;\r\n\t\t}\r\n\t},\r\n\r\n\t_setupEvents: function() {\r\n\t\tthis._off( this.handles );\r\n\t\tthis._on( this.handles, this._handleEvents );\r\n\t\tthis._hoverable( this.handles );\r\n\t\tthis._focusable( this.handles );\r\n\t},\r\n\r\n\t_destroy: function() {\r\n\t\tthis.handles.remove();\r\n\t\tif ( this.range ) {\r\n\t\t\tthis.range.remove();\r\n\t\t}\r\n\r\n\t\tthis._mouseDestroy();\r\n\t},\r\n\r\n\t_mouseCapture: function( event ) {\r\n\t\tvar position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,\r\n\t\t\tthat = this,\r\n\t\t\to = this.options;\r\n\r\n\t\tif ( o.disabled ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.elementSize = {\r\n\t\t\twidth: this.element.outerWidth(),\r\n\t\t\theight: this.element.outerHeight()\r\n\t\t};\r\n\t\tthis.elementOffset = this.element.offset();\r\n\r\n\t\tposition = { x: event.pageX, y: event.pageY };\r\n\t\tnormValue = this._normValueFromMouse( position );\r\n\t\tdistance = this._valueMax() - this._valueMin() + 1;\r\n\t\tthis.handles.each( function( i ) {\r\n\t\t\tvar thisDistance = Math.abs( normValue - that.values( i ) );\r\n\t\t\tif ( ( distance > thisDistance ) ||\r\n\t\t\t\t( distance === thisDistance &&\r\n\t\t\t\t\t( i === that._lastChangedValue || that.values( i ) === o.min ) ) ) {\r\n\t\t\t\tdistance = thisDistance;\r\n\t\t\t\tclosestHandle = $( this );\r\n\t\t\t\tindex = i;\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\tallowed = this._start( event, index );\r\n\t\tif ( allowed === false ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tthis._mouseSliding = true;\r\n\r\n\t\tthis._handleIndex = index;\r\n\r\n\t\tthis._addClass( closestHandle, null, \"ui-state-active\" );\r\n\t\tclosestHandle.trigger( \"focus\" );\r\n\r\n\t\toffset = closestHandle.offset();\r\n\t\tmouseOverHandle = !$( event.target ).parents().addBack().is( \".ui-slider-handle\" );\r\n\t\tthis._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {\r\n\t\t\tleft: event.pageX - offset.left - ( closestHandle.width() / 2 ),\r\n\t\t\ttop: event.pageY - offset.top -\r\n\t\t\t\t( closestHandle.height() / 2 ) -\r\n\t\t\t\t( parseInt( closestHandle.css( \"borderTopWidth\" ), 10 ) || 0 ) -\r\n\t\t\t\t( parseInt( closestHandle.css( \"borderBottomWidth\" ), 10 ) || 0 ) +\r\n\t\t\t\t( parseInt( closestHandle.css( \"marginTop\" ), 10 ) || 0 )\r\n\t\t};\r\n\r\n\t\tif ( !this.handles.hasClass( \"ui-state-hover\" ) ) {\r\n\t\t\tthis._slide( event, index, normValue );\r\n\t\t}\r\n\t\tthis._animateOff = true;\r\n\t\treturn true;\r\n\t},\r\n\r\n\t_mouseStart: function() {\r\n\t\treturn true;\r\n\t},\r\n\r\n\t_mouseDrag: function( event ) {\r\n\t\tvar position = { x: event.pageX, y: event.pageY },\r\n\t\t\tnormValue = this._normValueFromMouse( position );\r\n\r\n\t\tthis._slide( event, this._handleIndex, normValue );\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\t_mouseStop: function( event ) {\r\n\t\tthis._removeClass( this.handles, null, \"ui-state-active\" );\r\n\t\tthis._mouseSliding = false;\r\n\r\n\t\tthis._stop( event, this._handleIndex );\r\n\t\tthis._change( event, this._handleIndex );\r\n\r\n\t\tthis._handleIndex = null;\r\n\t\tthis._clickOffset = null;\r\n\t\tthis._animateOff = false;\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\t_detectOrientation: function() {\r\n\t\tthis.orientation = ( this.options.orientation === \"vertical\" ) ? \"vertical\" : \"horizontal\";\r\n\t},\r\n\r\n\t_normValueFromMouse: function( position ) {\r\n\t\tvar pixelTotal,\r\n\t\t\tpixelMouse,\r\n\t\t\tpercentMouse,\r\n\t\t\tvalueTotal,\r\n\t\t\tvalueMouse;\r\n\r\n\t\tif ( this.orientation === \"horizontal\" ) {\r\n\t\t\tpixelTotal = this.elementSize.width;\r\n\t\t\tpixelMouse = position.x - this.elementOffset.left -\r\n\t\t\t\t( this._clickOffset ? this._clickOffset.left : 0 );\r\n\t\t} else {\r\n\t\t\tpixelTotal = this.elementSize.height;\r\n\t\t\tpixelMouse = position.y - this.elementOffset.top -\r\n\t\t\t\t( this._clickOffset ? this._clickOffset.top : 0 );\r\n\t\t}\r\n\r\n\t\tpercentMouse = ( pixelMouse / pixelTotal );\r\n\t\tif ( percentMouse > 1 ) {\r\n\t\t\tpercentMouse = 1;\r\n\t\t}\r\n\t\tif ( percentMouse < 0 ) {\r\n\t\t\tpercentMouse = 0;\r\n\t\t}\r\n\t\tif ( this.orientation === \"vertical\" ) {\r\n\t\t\tpercentMouse = 1 - percentMouse;\r\n\t\t}\r\n\r\n\t\tvalueTotal = this._valueMax() - this._valueMin();\r\n\t\tvalueMouse = this._valueMin() + percentMouse * valueTotal;\r\n\r\n\t\treturn this._trimAlignValue( valueMouse );\r\n\t},\r\n\r\n\t_uiHash: function( index, value, values ) {\r\n\t\tvar uiHash = {\r\n\t\t\thandle: this.handles[ index ],\r\n\t\t\thandleIndex: index,\r\n\t\t\tvalue: value !== undefined ? value : this.value()\r\n\t\t};\r\n\r\n\t\tif ( this._hasMultipleValues() ) {\r\n\t\t\tuiHash.value = value !== undefined ? value : this.values( index );\r\n\t\t\tuiHash.values = values || this.values();\r\n\t\t}\r\n\r\n\t\treturn uiHash;\r\n\t},\r\n\r\n\t_hasMultipleValues: function() {\r\n\t\treturn this.options.values && this.options.values.length;\r\n\t},\r\n\r\n\t_start: function( event, index ) {\r\n\t\treturn this._trigger( \"start\", event, this._uiHash( index ) );\r\n\t},\r\n\r\n\t_slide: function( event, index, newVal ) {\r\n\t\tvar allowed, otherVal,\r\n\t\t\tcurrentValue = this.value(),\r\n\t\t\tnewValues = this.values();\r\n\r\n\t\tif ( this._hasMultipleValues() ) {\r\n\t\t\totherVal = this.values( index ? 0 : 1 );\r\n\t\t\tcurrentValue = this.values( index );\r\n\r\n\t\t\tif ( this.options.values.length === 2 && this.options.range === true ) {\r\n\t\t\t\tnewVal =  index === 0 ? Math.min( otherVal, newVal ) : Math.max( otherVal, newVal );\r\n\t\t\t}\r\n\r\n\t\t\tnewValues[ index ] = newVal;\r\n\t\t}\r\n\r\n\t\tif ( newVal === currentValue ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tallowed = this._trigger( \"slide\", event, this._uiHash( index, newVal, newValues ) );\r\n\r\n\t\t// A slide can be canceled by returning false from the slide callback\r\n\t\tif ( allowed === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( this._hasMultipleValues() ) {\r\n\t\t\tthis.values( index, newVal );\r\n\t\t} else {\r\n\t\t\tthis.value( newVal );\r\n\t\t}\r\n\t},\r\n\r\n\t_stop: function( event, index ) {\r\n\t\tthis._trigger( \"stop\", event, this._uiHash( index ) );\r\n\t},\r\n\r\n\t_change: function( event, index ) {\r\n\t\tif ( !this._keySliding && !this._mouseSliding ) {\r\n\r\n\t\t\t//store the last changed value index for reference when handles overlap\r\n\t\t\tthis._lastChangedValue = index;\r\n\t\t\tthis._trigger( \"change\", event, this._uiHash( index ) );\r\n\t\t}\r\n\t},\r\n\r\n\tvalue: function( newValue ) {\r\n\t\tif ( arguments.length ) {\r\n\t\t\tthis.options.value = this._trimAlignValue( newValue );\r\n\t\t\tthis._refreshValue();\r\n\t\t\tthis._change( null, 0 );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\treturn this._value();\r\n\t},\r\n\r\n\tvalues: function( index, newValue ) {\r\n\t\tvar vals,\r\n\t\t\tnewValues,\r\n\t\t\ti;\r\n\r\n\t\tif ( arguments.length > 1 ) {\r\n\t\t\tthis.options.values[ index ] = this._trimAlignValue( newValue );\r\n\t\t\tthis._refreshValue();\r\n\t\t\tthis._change( null, index );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( arguments.length ) {\r\n\t\t\tif ( Array.isArray( arguments[ 0 ] ) ) {\r\n\t\t\t\tvals = this.options.values;\r\n\t\t\t\tnewValues = arguments[ 0 ];\r\n\t\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\r\n\t\t\t\t\tvals[ i ] = this._trimAlignValue( newValues[ i ] );\r\n\t\t\t\t\tthis._change( null, i );\r\n\t\t\t\t}\r\n\t\t\t\tthis._refreshValue();\r\n\t\t\t} else {\r\n\t\t\t\tif ( this._hasMultipleValues() ) {\r\n\t\t\t\t\treturn this._values( index );\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn this.value();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn this._values();\r\n\t\t}\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\t\tvar i,\r\n\t\t\tvalsLength = 0;\r\n\r\n\t\tif ( key === \"range\" && this.options.range === true ) {\r\n\t\t\tif ( value === \"min\" ) {\r\n\t\t\t\tthis.options.value = this._values( 0 );\r\n\t\t\t\tthis.options.values = null;\r\n\t\t\t} else if ( value === \"max\" ) {\r\n\t\t\t\tthis.options.value = this._values( this.options.values.length - 1 );\r\n\t\t\t\tthis.options.values = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( Array.isArray( this.options.values ) ) {\r\n\t\t\tvalsLength = this.options.values.length;\r\n\t\t}\r\n\r\n\t\tthis._super( key, value );\r\n\r\n\t\tswitch ( key ) {\r\n\t\t\tcase \"orientation\":\r\n\t\t\t\tthis._detectOrientation();\r\n\t\t\t\tthis._removeClass( \"ui-slider-horizontal ui-slider-vertical\" )\r\n\t\t\t\t\t._addClass( \"ui-slider-\" + this.orientation );\r\n\t\t\t\tthis._refreshValue();\r\n\t\t\t\tif ( this.options.range ) {\r\n\t\t\t\t\tthis._refreshRange( value );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Reset positioning from previous orientation\r\n\t\t\t\tthis.handles.css( value === \"horizontal\" ? \"bottom\" : \"left\", \"\" );\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"value\":\r\n\t\t\t\tthis._animateOff = true;\r\n\t\t\t\tthis._refreshValue();\r\n\t\t\t\tthis._change( null, 0 );\r\n\t\t\t\tthis._animateOff = false;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"values\":\r\n\t\t\t\tthis._animateOff = true;\r\n\t\t\t\tthis._refreshValue();\r\n\r\n\t\t\t\t// Start from the last handle to prevent unreachable handles (#9046)\r\n\t\t\t\tfor ( i = valsLength - 1; i >= 0; i-- ) {\r\n\t\t\t\t\tthis._change( null, i );\r\n\t\t\t\t}\r\n\t\t\t\tthis._animateOff = false;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"step\":\r\n\t\t\tcase \"min\":\r\n\t\t\tcase \"max\":\r\n\t\t\t\tthis._animateOff = true;\r\n\t\t\t\tthis._calculateNewMax();\r\n\t\t\t\tthis._refreshValue();\r\n\t\t\t\tthis._animateOff = false;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"range\":\r\n\t\t\t\tthis._animateOff = true;\r\n\t\t\t\tthis._refresh();\r\n\t\t\t\tthis._animateOff = false;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t},\r\n\r\n\t_setOptionDisabled: function( value ) {\r\n\t\tthis._super( value );\r\n\r\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\r\n\t},\r\n\r\n\t//internal value getter\r\n\t// _value() returns value trimmed by min and max, aligned by step\r\n\t_value: function() {\r\n\t\tvar val = this.options.value;\r\n\t\tval = this._trimAlignValue( val );\r\n\r\n\t\treturn val;\r\n\t},\r\n\r\n\t//internal values getter\r\n\t// _values() returns array of values trimmed by min and max, aligned by step\r\n\t// _values( index ) returns single value trimmed by min and max, aligned by step\r\n\t_values: function( index ) {\r\n\t\tvar val,\r\n\t\t\tvals,\r\n\t\t\ti;\r\n\r\n\t\tif ( arguments.length ) {\r\n\t\t\tval = this.options.values[ index ];\r\n\t\t\tval = this._trimAlignValue( val );\r\n\r\n\t\t\treturn val;\r\n\t\t} else if ( this._hasMultipleValues() ) {\r\n\r\n\t\t\t// .slice() creates a copy of the array\r\n\t\t\t// this copy gets trimmed by min and max and then returned\r\n\t\t\tvals = this.options.values.slice();\r\n\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\r\n\t\t\t\tvals[ i ] = this._trimAlignValue( vals[ i ] );\r\n\t\t\t}\r\n\r\n\t\t\treturn vals;\r\n\t\t} else {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t},\r\n\r\n\t// Returns the step-aligned value that val is closest to, between (inclusive) min and max\r\n\t_trimAlignValue: function( val ) {\r\n\t\tif ( val <= this._valueMin() ) {\r\n\t\t\treturn this._valueMin();\r\n\t\t}\r\n\t\tif ( val >= this._valueMax() ) {\r\n\t\t\treturn this._valueMax();\r\n\t\t}\r\n\t\tvar step = ( this.options.step > 0 ) ? this.options.step : 1,\r\n\t\t\tvalModStep = ( val - this._valueMin() ) % step,\r\n\t\t\talignValue = val - valModStep;\r\n\r\n\t\tif ( Math.abs( valModStep ) * 2 >= step ) {\r\n\t\t\talignValue += ( valModStep > 0 ) ? step : ( -step );\r\n\t\t}\r\n\r\n\t\t// Since JavaScript has problems with large floats, round\r\n\t\t// the final value to 5 digits after the decimal point (see #4124)\r\n\t\treturn parseFloat( alignValue.toFixed( 5 ) );\r\n\t},\r\n\r\n\t_calculateNewMax: function() {\r\n\t\tvar max = this.options.max,\r\n\t\t\tmin = this._valueMin(),\r\n\t\t\tstep = this.options.step,\r\n\t\t\taboveMin = Math.round( ( max - min ) / step ) * step;\r\n\t\tmax = aboveMin + min;\r\n\t\tif ( max > this.options.max ) {\r\n\r\n\t\t\t//If max is not divisible by step, rounding off may increase its value\r\n\t\t\tmax -= step;\r\n\t\t}\r\n\t\tthis.max = parseFloat( max.toFixed( this._precision() ) );\r\n\t},\r\n\r\n\t_precision: function() {\r\n\t\tvar precision = this._precisionOf( this.options.step );\r\n\t\tif ( this.options.min !== null ) {\r\n\t\t\tprecision = Math.max( precision, this._precisionOf( this.options.min ) );\r\n\t\t}\r\n\t\treturn precision;\r\n\t},\r\n\r\n\t_precisionOf: function( num ) {\r\n\t\tvar str = num.toString(),\r\n\t\t\tdecimal = str.indexOf( \".\" );\r\n\t\treturn decimal === -1 ? 0 : str.length - decimal - 1;\r\n\t},\r\n\r\n\t_valueMin: function() {\r\n\t\treturn this.options.min;\r\n\t},\r\n\r\n\t_valueMax: function() {\r\n\t\treturn this.max;\r\n\t},\r\n\r\n\t_refreshRange: function( orientation ) {\r\n\t\tif ( orientation === \"vertical\" ) {\r\n\t\t\tthis.range.css( { \"width\": \"\", \"left\": \"\" } );\r\n\t\t}\r\n\t\tif ( orientation === \"horizontal\" ) {\r\n\t\t\tthis.range.css( { \"height\": \"\", \"bottom\": \"\" } );\r\n\t\t}\r\n\t},\r\n\r\n\t_refreshValue: function() {\r\n\t\tvar lastValPercent, valPercent, value, valueMin, valueMax,\r\n\t\t\toRange = this.options.range,\r\n\t\t\to = this.options,\r\n\t\t\tthat = this,\r\n\t\t\tanimate = ( !this._animateOff ) ? o.animate : false,\r\n\t\t\t_set = {};\r\n\r\n\t\tif ( this._hasMultipleValues() ) {\r\n\t\t\tthis.handles.each( function( i ) {\r\n\t\t\t\tvalPercent = ( that.values( i ) - that._valueMin() ) / ( that._valueMax() -\r\n\t\t\t\t\tthat._valueMin() ) * 100;\r\n\t\t\t\t_set[ that.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\r\n\t\t\t\t$( this ).stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\r\n\t\t\t\tif ( that.options.range === true ) {\r\n\t\t\t\t\tif ( that.orientation === \"horizontal\" ) {\r\n\t\t\t\t\t\tif ( i === 0 ) {\r\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\r\n\t\t\t\t\t\t\t\tleft: valPercent + \"%\"\r\n\t\t\t\t\t\t\t}, o.animate );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( i === 1 ) {\r\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( {\r\n\t\t\t\t\t\t\t\twidth: ( valPercent - lastValPercent ) + \"%\"\r\n\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\tqueue: false,\r\n\t\t\t\t\t\t\t\tduration: o.animate\r\n\t\t\t\t\t\t\t} );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif ( i === 0 ) {\r\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\r\n\t\t\t\t\t\t\t\tbottom: ( valPercent ) + \"%\"\r\n\t\t\t\t\t\t\t}, o.animate );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( i === 1 ) {\r\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( {\r\n\t\t\t\t\t\t\t\theight: ( valPercent - lastValPercent ) + \"%\"\r\n\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\tqueue: false,\r\n\t\t\t\t\t\t\t\tduration: o.animate\r\n\t\t\t\t\t\t\t} );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tlastValPercent = valPercent;\r\n\t\t\t} );\r\n\t\t} else {\r\n\t\t\tvalue = this.value();\r\n\t\t\tvalueMin = this._valueMin();\r\n\t\t\tvalueMax = this._valueMax();\r\n\t\t\tvalPercent = ( valueMax !== valueMin ) ?\r\n\t\t\t\t\t( value - valueMin ) / ( valueMax - valueMin ) * 100 :\r\n\t\t\t\t\t0;\r\n\t\t\t_set[ this.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\r\n\t\t\tthis.handle.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\r\n\r\n\t\t\tif ( oRange === \"min\" && this.orientation === \"horizontal\" ) {\r\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\r\n\t\t\t\t\twidth: valPercent + \"%\"\r\n\t\t\t\t}, o.animate );\r\n\t\t\t}\r\n\t\t\tif ( oRange === \"max\" && this.orientation === \"horizontal\" ) {\r\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\r\n\t\t\t\t\twidth: ( 100 - valPercent ) + \"%\"\r\n\t\t\t\t}, o.animate );\r\n\t\t\t}\r\n\t\t\tif ( oRange === \"min\" && this.orientation === \"vertical\" ) {\r\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\r\n\t\t\t\t\theight: valPercent + \"%\"\r\n\t\t\t\t}, o.animate );\r\n\t\t\t}\r\n\t\t\tif ( oRange === \"max\" && this.orientation === \"vertical\" ) {\r\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\r\n\t\t\t\t\theight: ( 100 - valPercent ) + \"%\"\r\n\t\t\t\t}, o.animate );\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_handleEvents: {\r\n\t\tkeydown: function( event ) {\r\n\t\t\tvar allowed, curVal, newVal, step,\r\n\t\t\t\tindex = $( event.target ).data( \"ui-slider-handle-index\" );\r\n\r\n\t\t\tswitch ( event.keyCode ) {\r\n\t\t\t\tcase $.ui.keyCode.HOME:\r\n\t\t\t\tcase $.ui.keyCode.END:\r\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\r\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\r\n\t\t\t\tcase $.ui.keyCode.UP:\r\n\t\t\t\tcase $.ui.keyCode.RIGHT:\r\n\t\t\t\tcase $.ui.keyCode.DOWN:\r\n\t\t\t\tcase $.ui.keyCode.LEFT:\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\tif ( !this._keySliding ) {\r\n\t\t\t\t\t\tthis._keySliding = true;\r\n\t\t\t\t\t\tthis._addClass( $( event.target ), null, \"ui-state-active\" );\r\n\t\t\t\t\t\tallowed = this._start( event, index );\r\n\t\t\t\t\t\tif ( allowed === false ) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tstep = this.options.step;\r\n\t\t\tif ( this._hasMultipleValues() ) {\r\n\t\t\t\tcurVal = newVal = this.values( index );\r\n\t\t\t} else {\r\n\t\t\t\tcurVal = newVal = this.value();\r\n\t\t\t}\r\n\r\n\t\t\tswitch ( event.keyCode ) {\r\n\t\t\t\tcase $.ui.keyCode.HOME:\r\n\t\t\t\t\tnewVal = this._valueMin();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase $.ui.keyCode.END:\r\n\t\t\t\t\tnewVal = this._valueMax();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\r\n\t\t\t\t\tnewVal = this._trimAlignValue(\r\n\t\t\t\t\t\tcurVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages )\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\r\n\t\t\t\t\tnewVal = this._trimAlignValue(\r\n\t\t\t\t\t\tcurVal - ( ( this._valueMax() - this._valueMin() ) / this.numPages ) );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase $.ui.keyCode.UP:\r\n\t\t\t\tcase $.ui.keyCode.RIGHT:\r\n\t\t\t\t\tif ( curVal === this._valueMax() ) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnewVal = this._trimAlignValue( curVal + step );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase $.ui.keyCode.DOWN:\r\n\t\t\t\tcase $.ui.keyCode.LEFT:\r\n\t\t\t\t\tif ( curVal === this._valueMin() ) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnewVal = this._trimAlignValue( curVal - step );\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis._slide( event, index, newVal );\r\n\t\t},\r\n\t\tkeyup: function( event ) {\r\n\t\t\tvar index = $( event.target ).data( \"ui-slider-handle-index\" );\r\n\r\n\t\t\tif ( this._keySliding ) {\r\n\t\t\t\tthis._keySliding = false;\r\n\t\t\t\tthis._stop( event, index );\r\n\t\t\t\tthis._change( event, index );\r\n\t\t\t\tthis._removeClass( $( event.target ), null, \"ui-state-active\" );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Sortable 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Sortable\r\n//>>group: Interactions\r\n//>>description: Enables items in a list to be sorted using the mouse.\r\n//>>docs: https://api.jqueryui.com/sortable/\r\n//>>demos: https://jqueryui.com/sortable/\r\n//>>css.structure: ../../themes/base/sortable.css\r\n\r\n\r\nvar widgetsSortable = $.widget( \"ui.sortable\", $.ui.mouse, {\r\n\tversion: \"1.14.1\",\r\n\twidgetEventPrefix: \"sort\",\r\n\tready: false,\r\n\toptions: {\r\n\t\tappendTo: \"parent\",\r\n\t\taxis: false,\r\n\t\tconnectWith: false,\r\n\t\tcontainment: false,\r\n\t\tcursor: \"auto\",\r\n\t\tcursorAt: false,\r\n\t\tdropOnEmpty: true,\r\n\t\tforcePlaceholderSize: false,\r\n\t\tforceHelperSize: false,\r\n\t\tgrid: false,\r\n\t\thandle: false,\r\n\t\thelper: \"original\",\r\n\t\titems: \"> *\",\r\n\t\topacity: false,\r\n\t\tplaceholder: false,\r\n\t\trevert: false,\r\n\t\tscroll: true,\r\n\t\tscrollSensitivity: 20,\r\n\t\tscrollSpeed: 20,\r\n\t\tscope: \"default\",\r\n\t\ttolerance: \"intersect\",\r\n\t\tzIndex: 1000,\r\n\r\n\t\t// Callbacks\r\n\t\tactivate: null,\r\n\t\tbeforeStop: null,\r\n\t\tchange: null,\r\n\t\tdeactivate: null,\r\n\t\tout: null,\r\n\t\tover: null,\r\n\t\treceive: null,\r\n\t\tremove: null,\r\n\t\tsort: null,\r\n\t\tstart: null,\r\n\t\tstop: null,\r\n\t\tupdate: null\r\n\t},\r\n\r\n\t_isOverAxis: function( x, reference, size ) {\r\n\t\treturn ( x >= reference ) && ( x < ( reference + size ) );\r\n\t},\r\n\r\n\t_isFloating: function( item ) {\r\n\t\treturn ( /left|right/ ).test( item.css( \"float\" ) ) ||\r\n\t\t\t( /inline|table-cell/ ).test( item.css( \"display\" ) );\r\n\t},\r\n\r\n\t_create: function() {\r\n\t\tthis.containerCache = {};\r\n\t\tthis._addClass( \"ui-sortable\" );\r\n\r\n\t\t//Get the items\r\n\t\tthis.refresh();\r\n\r\n\t\t//Let's determine the parent's offset\r\n\t\tthis.offset = this.element.offset();\r\n\r\n\t\t//Initialize mouse events for interaction\r\n\t\tthis._mouseInit();\r\n\r\n\t\tthis._setHandleClassName();\r\n\r\n\t\t//We're ready to go\r\n\t\tthis.ready = true;\r\n\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\t\tthis._super( key, value );\r\n\r\n\t\tif ( key === \"handle\" ) {\r\n\t\t\tthis._setHandleClassName();\r\n\t\t}\r\n\t},\r\n\r\n\t_setHandleClassName: function() {\r\n\t\tvar that = this;\r\n\t\tthis._removeClass( this.element.find( \".ui-sortable-handle\" ), \"ui-sortable-handle\" );\r\n\t\t$.each( this.items, function() {\r\n\t\t\tthat._addClass(\r\n\t\t\t\tthis.instance.options.handle ?\r\n\t\t\t\t\tthis.item.find( this.instance.options.handle ) :\r\n\t\t\t\t\tthis.item,\r\n\t\t\t\t\"ui-sortable-handle\"\r\n\t\t\t);\r\n\t\t} );\r\n\t},\r\n\r\n\t_destroy: function() {\r\n\t\tthis._mouseDestroy();\r\n\r\n\t\tfor ( var i = this.items.length - 1; i >= 0; i-- ) {\r\n\t\t\tthis.items[ i ].item.removeData( this.widgetName + \"-item\" );\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_mouseCapture: function( event, overrideHandle ) {\r\n\t\tvar currentItem = null,\r\n\t\t\tvalidHandle = false,\r\n\t\t\tthat = this;\r\n\r\n\t\tif ( this.reverting ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif ( this.options.disabled || this.options.type === \"static\" ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t//We have to refresh the items data once first\r\n\t\tthis._refreshItems( event );\r\n\r\n\t\t//Find out if the clicked node (or one of its parents) is a actual item in this.items\r\n\t\t$( event.target ).parents().each( function() {\r\n\t\t\tif ( $.data( this, that.widgetName + \"-item\" ) === that ) {\r\n\t\t\t\tcurrentItem = $( this );\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t} );\r\n\t\tif ( $.data( event.target, that.widgetName + \"-item\" ) === that ) {\r\n\t\t\tcurrentItem = $( event.target );\r\n\t\t}\r\n\r\n\t\tif ( !currentItem ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif ( this.options.handle && !overrideHandle ) {\r\n\t\t\t$( this.options.handle, currentItem ).find( \"*\" ).addBack().each( function() {\r\n\t\t\t\tif ( this === event.target ) {\r\n\t\t\t\t\tvalidHandle = true;\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t\tif ( !validHandle ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.currentItem = currentItem;\r\n\t\tthis._removeCurrentsFromItems();\r\n\t\treturn true;\r\n\r\n\t},\r\n\r\n\t_mouseStart: function( event, overrideHandle, noActivation ) {\r\n\r\n\t\tvar i, body,\r\n\t\t\to = this.options;\r\n\r\n\t\tthis.currentContainer = this;\r\n\r\n\t\t//We only need to call refreshPositions, because the refreshItems call has been moved to\r\n\t\t// mouseCapture\r\n\t\tthis.refreshPositions();\r\n\r\n\t\t//Prepare the dragged items parent\r\n\t\tthis.appendTo = $( o.appendTo !== \"parent\" ?\r\n\t\t\t\to.appendTo :\r\n\t\t\t\tthis.currentItem.parent() );\r\n\r\n\t\t//Create and append the visible helper\r\n\t\tthis.helper = this._createHelper( event );\r\n\r\n\t\t//Cache the helper size\r\n\t\tthis._cacheHelperProportions();\r\n\r\n\t\t/*\r\n\t\t * - Position generation -\r\n\t\t * This block generates everything position related - it's the core of draggables.\r\n\t\t */\r\n\r\n\t\t//Cache the margins of the original element\r\n\t\tthis._cacheMargins();\r\n\r\n\t\t//The element's absolute position on the page minus margins\r\n\t\tthis.offset = this.currentItem.offset();\r\n\t\tthis.offset = {\r\n\t\t\ttop: this.offset.top - this.margins.top,\r\n\t\t\tleft: this.offset.left - this.margins.left\r\n\t\t};\r\n\r\n\t\t$.extend( this.offset, {\r\n\t\t\tclick: { //Where the click happened, relative to the element\r\n\t\t\t\tleft: event.pageX - this.offset.left,\r\n\t\t\t\ttop: event.pageY - this.offset.top\r\n\t\t\t},\r\n\r\n\t\t\t// This is a relative to absolute position minus the actual position calculation -\r\n\t\t\t// only used for relative positioned helper\r\n\t\t\trelative: this._getRelativeOffset()\r\n\t\t} );\r\n\r\n\t\t// After we get the helper offset, but before we get the parent offset we can\r\n\t\t// change the helper's position to absolute\r\n\t\t// TODO: Still need to figure out a way to make relative sorting possible\r\n\t\tthis.helper.css( \"position\", \"absolute\" );\r\n\t\tthis.cssPosition = this.helper.css( \"position\" );\r\n\r\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\r\n\t\tif ( o.cursorAt ) {\r\n\t\t\tthis._adjustOffsetFromHelper( o.cursorAt );\r\n\t\t}\r\n\r\n\t\t//Cache the former DOM position\r\n\t\tthis.domPosition = {\r\n\t\t\tprev: this.currentItem.prev()[ 0 ],\r\n\t\t\tparent: this.currentItem.parent()[ 0 ]\r\n\t\t};\r\n\r\n\t\t// If the helper is not the original, hide the original so it's not playing any role during\r\n\t\t// the drag, won't cause anything bad this way\r\n\t\tif ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {\r\n\t\t\tthis.currentItem.hide();\r\n\t\t}\r\n\r\n\t\t//Create the placeholder\r\n\t\tthis._createPlaceholder();\r\n\r\n\t\t//Get the next scrolling parent\r\n\t\tthis.scrollParent = this.placeholder.scrollParent();\r\n\r\n\t\t$.extend( this.offset, {\r\n\t\t\tparent: this._getParentOffset()\r\n\t\t} );\r\n\r\n\t\t//Set a containment if given in the options\r\n\t\tif ( o.containment ) {\r\n\t\t\tthis._setContainment();\r\n\t\t}\r\n\r\n\t\tif ( o.cursor && o.cursor !== \"auto\" ) { // cursor option\r\n\t\t\tbody = this.document.find( \"body\" );\r\n\r\n\t\t\tthis._storedStylesheet =\r\n\t\t\t\t$( \"<style>*{ cursor: \" + o.cursor + \" !important; }</style>\" ).appendTo( body );\r\n\t\t}\r\n\r\n\t\t// We need to make sure to grab the zIndex before setting the\r\n\t\t// opacity, because setting the opacity to anything lower than 1\r\n\t\t// causes the zIndex to change from \"auto\" to 0.\r\n\t\tif ( o.zIndex ) { // zIndex option\r\n\t\t\tif ( this.helper.css( \"zIndex\" ) ) {\r\n\t\t\t\tthis._storedZIndex = this.helper.css( \"zIndex\" );\r\n\t\t\t}\r\n\t\t\tthis.helper.css( \"zIndex\", o.zIndex );\r\n\t\t}\r\n\r\n\t\tif ( o.opacity ) { // opacity option\r\n\t\t\tif ( this.helper.css( \"opacity\" ) ) {\r\n\t\t\t\tthis._storedOpacity = this.helper.css( \"opacity\" );\r\n\t\t\t}\r\n\t\t\tthis.helper.css( \"opacity\", o.opacity );\r\n\t\t}\r\n\r\n\t\t//Prepare scrolling\r\n\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\r\n\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\r\n\t\t\tthis.overflowOffset = this.scrollParent.offset();\r\n\t\t}\r\n\r\n\t\t//Call callbacks\r\n\t\tthis._trigger( \"start\", event, this._uiHash() );\r\n\r\n\t\t//Recache the helper size\r\n\t\tif ( !this._preserveHelperProportions ) {\r\n\t\t\tthis._cacheHelperProportions();\r\n\t\t}\r\n\r\n\t\t//Post \"activate\" events to possible containers\r\n\t\tif ( !noActivation ) {\r\n\t\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\r\n\t\t\t\tthis.containers[ i ]._trigger( \"activate\", event, this._uiHash( this ) );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//Prepare possible droppables\r\n\t\tif ( $.ui.ddmanager ) {\r\n\t\t\t$.ui.ddmanager.current = this;\r\n\t\t}\r\n\r\n\t\tif ( $.ui.ddmanager && !o.dropBehaviour ) {\r\n\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\r\n\t\t}\r\n\r\n\t\tthis.dragging = true;\r\n\r\n\t\tthis._addClass( this.helper, \"ui-sortable-helper\" );\r\n\r\n\t\t//Move the helper, if needed\r\n\t\tif ( !this.helper.parent().is( this.appendTo ) ) {\r\n\t\t\tthis.helper.detach().appendTo( this.appendTo );\r\n\r\n\t\t\t//Update position\r\n\t\t\tthis.offset.parent = this._getParentOffset();\r\n\t\t}\r\n\r\n\t\t//Generate the original position\r\n\t\tthis.position = this.originalPosition = this._generatePosition( event );\r\n\t\tthis.originalPageX = event.pageX;\r\n\t\tthis.originalPageY = event.pageY;\r\n\t\tthis.lastPositionAbs = this.positionAbs = this._convertPositionTo( \"absolute\" );\r\n\r\n\t\tthis._mouseDrag( event );\r\n\r\n\t\treturn true;\r\n\r\n\t},\r\n\r\n\t_scroll: function( event ) {\r\n\t\tvar o = this.options,\r\n\t\t\tscrolled = false;\r\n\r\n\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\r\n\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\r\n\r\n\t\t\tif ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -\r\n\t\t\t\t\tevent.pageY < o.scrollSensitivity ) {\r\n\t\t\t\tthis.scrollParent[ 0 ].scrollTop =\r\n\t\t\t\t\tscrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;\r\n\t\t\t} else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {\r\n\t\t\t\tthis.scrollParent[ 0 ].scrollTop =\r\n\t\t\t\t\tscrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;\r\n\t\t\t}\r\n\r\n\t\t\tif ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -\r\n\t\t\t\t\tevent.pageX < o.scrollSensitivity ) {\r\n\t\t\t\tthis.scrollParent[ 0 ].scrollLeft = scrolled =\r\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;\r\n\t\t\t} else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {\r\n\t\t\t\tthis.scrollParent[ 0 ].scrollLeft = scrolled =\r\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tif ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {\r\n\t\t\t\tscrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );\r\n\t\t\t} else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <\r\n\t\t\t\t\to.scrollSensitivity ) {\r\n\t\t\t\tscrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );\r\n\t\t\t}\r\n\r\n\t\t\tif ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {\r\n\t\t\t\tscrolled = this.document.scrollLeft(\r\n\t\t\t\t\tthis.document.scrollLeft() - o.scrollSpeed\r\n\t\t\t\t);\r\n\t\t\t} else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <\r\n\t\t\t\t\to.scrollSensitivity ) {\r\n\t\t\t\tscrolled = this.document.scrollLeft(\r\n\t\t\t\t\tthis.document.scrollLeft() + o.scrollSpeed\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn scrolled;\r\n\t},\r\n\r\n\t_mouseDrag: function( event ) {\r\n\t\tvar i, item, itemElement, intersection,\r\n\t\t\to = this.options;\r\n\r\n\t\t//Compute the helpers position\r\n\t\tthis.position = this._generatePosition( event );\r\n\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\r\n\r\n\t\t//Set the helper position\r\n\t\tif ( !this.options.axis || this.options.axis !== \"y\" ) {\r\n\t\t\tthis.helper[ 0 ].style.left = this.position.left + \"px\";\r\n\t\t}\r\n\t\tif ( !this.options.axis || this.options.axis !== \"x\" ) {\r\n\t\t\tthis.helper[ 0 ].style.top = this.position.top + \"px\";\r\n\t\t}\r\n\r\n\t\t//Do scrolling\r\n\t\tif ( o.scroll ) {\r\n\t\t\tif ( this._scroll( event ) !== false ) {\r\n\r\n\t\t\t\t//Update item positions used in position checks\r\n\t\t\t\tthis._refreshItemPositions( true );\r\n\r\n\t\t\t\tif ( $.ui.ddmanager && !o.dropBehaviour ) {\r\n\t\t\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dragDirection = {\r\n\t\t\tvertical: this._getDragVerticalDirection(),\r\n\t\t\thorizontal: this._getDragHorizontalDirection()\r\n\t\t};\r\n\r\n\t\t//Rearrange\r\n\t\tfor ( i = this.items.length - 1; i >= 0; i-- ) {\r\n\r\n\t\t\t//Cache variables and intersection, continue if no intersection\r\n\t\t\titem = this.items[ i ];\r\n\t\t\titemElement = item.item[ 0 ];\r\n\t\t\tintersection = this._intersectsWithPointer( item );\r\n\t\t\tif ( !intersection ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// Only put the placeholder inside the current Container, skip all\r\n\t\t\t// items from other containers. This works because when moving\r\n\t\t\t// an item from one container to another the\r\n\t\t\t// currentContainer is switched before the placeholder is moved.\r\n\t\t\t//\r\n\t\t\t// Without this, moving items in \"sub-sortables\" can cause\r\n\t\t\t// the placeholder to jitter between the outer and inner container.\r\n\t\t\tif ( item.instance !== this.currentContainer ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// Cannot intersect with itself\r\n\t\t\t// no useless actions that have been done before\r\n\t\t\t// no action if the item moved is the parent of the item checked\r\n\t\t\tif ( itemElement !== this.currentItem[ 0 ] &&\r\n\t\t\t\tthis.placeholder[ intersection === 1 ?\r\n\t\t\t\t\"next\" : \"prev\" ]()[ 0 ] !== itemElement &&\r\n\t\t\t\t!$.contains( this.placeholder[ 0 ], itemElement ) &&\r\n\t\t\t\t( this.options.type === \"semi-dynamic\" ?\r\n\t\t\t\t\t!$.contains( this.element[ 0 ], itemElement ) :\r\n\t\t\t\t\ttrue\r\n\t\t\t\t)\r\n\t\t\t) {\r\n\r\n\t\t\t\tthis.direction = intersection === 1 ? \"down\" : \"up\";\r\n\r\n\t\t\t\tif ( this.options.tolerance === \"pointer\" ||\r\n\t\t\t\t\t\tthis._intersectsWithSides( item ) ) {\r\n\t\t\t\t\tthis._rearrange( event, item );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._trigger( \"change\", event, this._uiHash() );\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//Post events to containers\r\n\t\tthis._contactContainers( event );\r\n\r\n\t\t//Interconnect with droppables\r\n\t\tif ( $.ui.ddmanager ) {\r\n\t\t\t$.ui.ddmanager.drag( this, event );\r\n\t\t}\r\n\r\n\t\t//Call callbacks\r\n\t\tthis._trigger( \"sort\", event, this._uiHash() );\r\n\r\n\t\tthis.lastPositionAbs = this.positionAbs;\r\n\t\treturn false;\r\n\r\n\t},\r\n\r\n\t_mouseStop: function( event, noPropagation ) {\r\n\r\n\t\tif ( !event ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//If we are using droppables, inform the manager about the drop\r\n\t\tif ( $.ui.ddmanager && !this.options.dropBehaviour ) {\r\n\t\t\t$.ui.ddmanager.drop( this, event );\r\n\t\t}\r\n\r\n\t\tif ( this.options.revert ) {\r\n\t\t\tvar that = this,\r\n\t\t\t\tcur = this.placeholder.offset(),\r\n\t\t\t\taxis = this.options.axis,\r\n\t\t\t\tanimation = {};\r\n\r\n\t\t\tif ( !axis || axis === \"x\" ) {\r\n\t\t\t\tanimation.left = cur.left - this.offset.parent.left - this.margins.left +\r\n\t\t\t\t\t( this.offsetParent[ 0 ] === this.document[ 0 ].body ?\r\n\t\t\t\t\t\t0 :\r\n\t\t\t\t\t\tthis.offsetParent[ 0 ].scrollLeft\r\n\t\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif ( !axis || axis === \"y\" ) {\r\n\t\t\t\tanimation.top = cur.top - this.offset.parent.top - this.margins.top +\r\n\t\t\t\t\t( this.offsetParent[ 0 ] === this.document[ 0 ].body ?\r\n\t\t\t\t\t\t0 :\r\n\t\t\t\t\t\tthis.offsetParent[ 0 ].scrollTop\r\n\t\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tthis.reverting = true;\r\n\t\t\t$( this.helper ).animate(\r\n\t\t\t\tanimation,\r\n\t\t\t\tparseInt( this.options.revert, 10 ) || 500,\r\n\t\t\t\tfunction() {\r\n\t\t\t\t\tthat._clear( event );\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tthis._clear( event, noPropagation );\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\r\n\t},\r\n\r\n\tcancel: function() {\r\n\r\n\t\tif ( this.dragging ) {\r\n\r\n\t\t\tthis._mouseUp( new $.Event( \"mouseup\", { target: null } ) );\r\n\r\n\t\t\tif ( this.options.helper === \"original\" ) {\r\n\t\t\t\tthis.currentItem.css( this._storedCSS );\r\n\t\t\t\tthis._removeClass( this.currentItem, \"ui-sortable-helper\" );\r\n\t\t\t} else {\r\n\t\t\t\tthis.currentItem.show();\r\n\t\t\t}\r\n\r\n\t\t\t//Post deactivating events to containers\r\n\t\t\tfor ( var i = this.containers.length - 1; i >= 0; i-- ) {\r\n\t\t\t\tthis.containers[ i ]._trigger( \"deactivate\", null, this._uiHash( this ) );\r\n\t\t\t\tif ( this.containers[ i ].containerCache.over ) {\r\n\t\t\t\t\tthis.containers[ i ]._trigger( \"out\", null, this._uiHash( this ) );\r\n\t\t\t\t\tthis.containers[ i ].containerCache.over = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.placeholder ) {\r\n\r\n\t\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\r\n\t\t\t// it unbinds ALL events from the original node!\r\n\t\t\tif ( this.placeholder[ 0 ].parentNode ) {\r\n\t\t\t\tthis.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );\r\n\t\t\t}\r\n\t\t\tif ( this.options.helper !== \"original\" && this.helper &&\r\n\t\t\t\t\tthis.helper[ 0 ].parentNode ) {\r\n\t\t\t\tthis.helper.remove();\r\n\t\t\t}\r\n\r\n\t\t\t$.extend( this, {\r\n\t\t\t\thelper: null,\r\n\t\t\t\tdragging: false,\r\n\t\t\t\treverting: false,\r\n\t\t\t\t_noFinalSort: null\r\n\t\t\t} );\r\n\r\n\t\t\tif ( this.domPosition.prev ) {\r\n\t\t\t\t$( this.domPosition.prev ).after( this.currentItem );\r\n\t\t\t} else {\r\n\t\t\t\t$( this.domPosition.parent ).prepend( this.currentItem );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tserialize: function( o ) {\r\n\r\n\t\tvar items = this._getItemsAsjQuery( o && o.connected ),\r\n\t\t\tstr = [];\r\n\t\to = o || {};\r\n\r\n\t\t$( items ).each( function() {\r\n\t\t\tvar res = ( $( o.item || this ).attr( o.attribute || \"id\" ) || \"\" )\r\n\t\t\t\t.match( o.expression || ( /(.+)[\\-=_](.+)/ ) );\r\n\t\t\tif ( res ) {\r\n\t\t\t\tstr.push(\r\n\t\t\t\t\t( o.key || res[ 1 ] + \"[]\" ) +\r\n\t\t\t\t\t\"=\" + ( o.key && o.expression ? res[ 1 ] : res[ 2 ] ) );\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\tif ( !str.length && o.key ) {\r\n\t\t\tstr.push( o.key + \"=\" );\r\n\t\t}\r\n\r\n\t\treturn str.join( \"&\" );\r\n\r\n\t},\r\n\r\n\ttoArray: function( o ) {\r\n\r\n\t\tvar items = this._getItemsAsjQuery( o && o.connected ),\r\n\t\t\tret = [];\r\n\r\n\t\to = o || {};\r\n\r\n\t\titems.each( function() {\r\n\t\t\tret.push( $( o.item || this ).attr( o.attribute || \"id\" ) || \"\" );\r\n\t\t} );\r\n\t\treturn ret;\r\n\r\n\t},\r\n\r\n\t/* Be careful with the following core functions */\r\n\t_intersectsWith: function( item ) {\r\n\r\n\t\tvar x1 = this.positionAbs.left,\r\n\t\t\tx2 = x1 + this.helperProportions.width,\r\n\t\t\ty1 = this.positionAbs.top,\r\n\t\t\ty2 = y1 + this.helperProportions.height,\r\n\t\t\tl = item.left,\r\n\t\t\tr = l + item.width,\r\n\t\t\tt = item.top,\r\n\t\t\tb = t + item.height,\r\n\t\t\tdyClick = this.offset.click.top,\r\n\t\t\tdxClick = this.offset.click.left,\r\n\t\t\tisOverElementHeight = ( this.options.axis === \"x\" ) || ( ( y1 + dyClick ) > t &&\r\n\t\t\t\t( y1 + dyClick ) < b ),\r\n\t\t\tisOverElementWidth = ( this.options.axis === \"y\" ) || ( ( x1 + dxClick ) > l &&\r\n\t\t\t\t( x1 + dxClick ) < r ),\r\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth;\r\n\r\n\t\tif ( this.options.tolerance === \"pointer\" ||\r\n\t\t\tthis.options.forcePointerForContainers ||\r\n\t\t\t( this.options.tolerance !== \"pointer\" &&\r\n\t\t\t\tthis.helperProportions[ this.floating ? \"width\" : \"height\" ] >\r\n\t\t\t\titem[ this.floating ? \"width\" : \"height\" ] )\r\n\t\t) {\r\n\t\t\treturn isOverElement;\r\n\t\t} else {\r\n\r\n\t\t\treturn ( l < x1 + ( this.helperProportions.width / 2 ) && // Right Half\r\n\t\t\t\tx2 - ( this.helperProportions.width / 2 ) < r && // Left Half\r\n\t\t\t\tt < y1 + ( this.helperProportions.height / 2 ) && // Bottom Half\r\n\t\t\t\ty2 - ( this.helperProportions.height / 2 ) < b ); // Top Half\r\n\r\n\t\t}\r\n\t},\r\n\r\n\t_intersectsWithPointer: function( item ) {\r\n\t\tvar verticalDirection, horizontalDirection,\r\n\t\t\tisOverElementHeight = ( this.options.axis === \"x\" ) ||\r\n\t\t\t\tthis._isOverAxis(\r\n\t\t\t\t\tthis.positionAbs.top + this.offset.click.top, item.top, item.height ),\r\n\t\t\tisOverElementWidth = ( this.options.axis === \"y\" ) ||\r\n\t\t\t\tthis._isOverAxis(\r\n\t\t\t\t\tthis.positionAbs.left + this.offset.click.left, item.left, item.width ),\r\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth;\r\n\r\n\t\tif ( !isOverElement ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tverticalDirection = this.dragDirection.vertical;\r\n\t\thorizontalDirection = this.dragDirection.horizontal;\r\n\r\n\t\treturn this.floating ?\r\n\t\t\t( ( horizontalDirection === \"right\" || verticalDirection === \"down\" ) ? 2 : 1 ) :\r\n\t\t\t( verticalDirection && ( verticalDirection === \"down\" ? 2 : 1 ) );\r\n\r\n\t},\r\n\r\n\t_intersectsWithSides: function( item ) {\r\n\r\n\t\tvar isOverBottomHalf = this._isOverAxis( this.positionAbs.top +\r\n\t\t\t\tthis.offset.click.top, item.top + ( item.height / 2 ), item.height ),\r\n\t\t\tisOverRightHalf = this._isOverAxis( this.positionAbs.left +\r\n\t\t\t\tthis.offset.click.left, item.left + ( item.width / 2 ), item.width ),\r\n\t\t\tverticalDirection = this.dragDirection.vertical,\r\n\t\t\thorizontalDirection = this.dragDirection.horizontal;\r\n\r\n\t\tif ( this.floating && horizontalDirection ) {\r\n\t\t\treturn ( ( horizontalDirection === \"right\" && isOverRightHalf ) ||\r\n\t\t\t\t( horizontalDirection === \"left\" && !isOverRightHalf ) );\r\n\t\t} else {\r\n\t\t\treturn verticalDirection && ( ( verticalDirection === \"down\" && isOverBottomHalf ) ||\r\n\t\t\t\t( verticalDirection === \"up\" && !isOverBottomHalf ) );\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_getDragVerticalDirection: function() {\r\n\t\tvar delta = this.positionAbs.top - this.lastPositionAbs.top;\r\n\t\treturn delta !== 0 && ( delta > 0 ? \"down\" : \"up\" );\r\n\t},\r\n\r\n\t_getDragHorizontalDirection: function() {\r\n\t\tvar delta = this.positionAbs.left - this.lastPositionAbs.left;\r\n\t\treturn delta !== 0 && ( delta > 0 ? \"right\" : \"left\" );\r\n\t},\r\n\r\n\trefresh: function( event ) {\r\n\t\tthis._refreshItems( event );\r\n\t\tthis._setHandleClassName();\r\n\t\tthis.refreshPositions();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_connectWith: function() {\r\n\t\tvar options = this.options;\r\n\t\treturn options.connectWith.constructor === String ?\r\n\t\t\t[ options.connectWith ] :\r\n\t\t\toptions.connectWith;\r\n\t},\r\n\r\n\t_getItemsAsjQuery: function( connected ) {\r\n\r\n\t\tvar i, j, cur, inst,\r\n\t\t\titems = [],\r\n\t\t\tqueries = [],\r\n\t\t\tconnectWith = this._connectWith();\r\n\r\n\t\tif ( connectWith && connected ) {\r\n\t\t\tfor ( i = connectWith.length - 1; i >= 0; i-- ) {\r\n\t\t\t\tcur = $( connectWith[ i ], this.document[ 0 ] );\r\n\t\t\t\tfor ( j = cur.length - 1; j >= 0; j-- ) {\r\n\t\t\t\t\tinst = $.data( cur[ j ], this.widgetFullName );\r\n\t\t\t\t\tif ( inst && inst !== this && !inst.options.disabled ) {\r\n\t\t\t\t\t\tqueries.push( [ typeof inst.options.items === \"function\" ?\r\n\t\t\t\t\t\t\tinst.options.items.call( inst.element ) :\r\n\t\t\t\t\t\t\t$( inst.options.items, inst.element )\r\n\t\t\t\t\t\t\t\t.not( \".ui-sortable-helper\" )\r\n\t\t\t\t\t\t\t\t.not( \".ui-sortable-placeholder\" ), inst ] );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tqueries.push( [ typeof this.options.items === \"function\" ?\r\n\t\t\tthis.options.items\r\n\t\t\t\t.call( this.element, null, { options: this.options, item: this.currentItem } ) :\r\n\t\t\t$( this.options.items, this.element )\r\n\t\t\t\t.not( \".ui-sortable-helper\" )\r\n\t\t\t\t.not( \".ui-sortable-placeholder\" ), this ] );\r\n\r\n\t\tfunction addItems() {\r\n\t\t\titems.push( this );\r\n\t\t}\r\n\t\tfor ( i = queries.length - 1; i >= 0; i-- ) {\r\n\t\t\tqueries[ i ][ 0 ].each( addItems );\r\n\t\t}\r\n\r\n\t\treturn $( items );\r\n\r\n\t},\r\n\r\n\t_removeCurrentsFromItems: function() {\r\n\r\n\t\tvar list = this.currentItem.find( \":data(\" + this.widgetName + \"-item)\" );\r\n\r\n\t\tthis.items = $.grep( this.items, function( item ) {\r\n\t\t\tfor ( var j = 0; j < list.length; j++ ) {\r\n\t\t\t\tif ( list[ j ] === item.item[ 0 ] ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t} );\r\n\r\n\t},\r\n\r\n\t_refreshItems: function( event ) {\r\n\r\n\t\tthis.items = [];\r\n\t\tthis.containers = [ this ];\r\n\r\n\t\tvar i, j, cur, inst, targetData, _queries, item, queriesLength,\r\n\t\t\titems = this.items,\r\n\t\t\tqueries = [ [ typeof this.options.items === \"function\" ?\r\n\t\t\t\tthis.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) :\r\n\t\t\t\t$( this.options.items, this.element ), this ] ],\r\n\t\t\tconnectWith = this._connectWith();\r\n\r\n\t\t//Shouldn't be run the first time through due to massive slow-down\r\n\t\tif ( connectWith && this.ready ) {\r\n\t\t\tfor ( i = connectWith.length - 1; i >= 0; i-- ) {\r\n\t\t\t\tcur = $( connectWith[ i ], this.document[ 0 ] );\r\n\t\t\t\tfor ( j = cur.length - 1; j >= 0; j-- ) {\r\n\t\t\t\t\tinst = $.data( cur[ j ], this.widgetFullName );\r\n\t\t\t\t\tif ( inst && inst !== this && !inst.options.disabled ) {\r\n\t\t\t\t\t\tqueries.push( [ typeof inst.options.items === \"function\" ?\r\n\t\t\t\t\t\t\tinst.options.items\r\n\t\t\t\t\t\t\t\t.call( inst.element[ 0 ], event, { item: this.currentItem } ) :\r\n\t\t\t\t\t\t\t$( inst.options.items, inst.element ), inst ] );\r\n\t\t\t\t\t\tthis.containers.push( inst );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor ( i = queries.length - 1; i >= 0; i-- ) {\r\n\t\t\ttargetData = queries[ i ][ 1 ];\r\n\t\t\t_queries = queries[ i ][ 0 ];\r\n\r\n\t\t\tfor ( j = 0, queriesLength = _queries.length; j < queriesLength; j++ ) {\r\n\t\t\t\titem = $( _queries[ j ] );\r\n\r\n\t\t\t\t// Data for target checking (mouse manager)\r\n\t\t\t\titem.data( this.widgetName + \"-item\", targetData );\r\n\r\n\t\t\t\titems.push( {\r\n\t\t\t\t\titem: item,\r\n\t\t\t\t\tinstance: targetData,\r\n\t\t\t\t\twidth: 0, height: 0,\r\n\t\t\t\t\tleft: 0, top: 0\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_refreshItemPositions: function( fast ) {\r\n\t\tvar i, item, t, p;\r\n\r\n\t\tfor ( i = this.items.length - 1; i >= 0; i-- ) {\r\n\t\t\titem = this.items[ i ];\r\n\r\n\t\t\t//We ignore calculating positions of all connected containers when we're not over them\r\n\t\t\tif ( this.currentContainer && item.instance !== this.currentContainer &&\r\n\t\t\t\t\titem.item[ 0 ] !== this.currentItem[ 0 ] ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tt = this.options.toleranceElement ?\r\n\t\t\t\t$( this.options.toleranceElement, item.item ) :\r\n\t\t\t\titem.item;\r\n\r\n\t\t\tif ( !fast ) {\r\n\t\t\t\titem.width = t.outerWidth();\r\n\t\t\t\titem.height = t.outerHeight();\r\n\t\t\t}\r\n\r\n\t\t\tp = t.offset();\r\n\t\t\titem.left = p.left;\r\n\t\t\titem.top = p.top;\r\n\t\t}\r\n\t},\r\n\r\n\trefreshPositions: function( fast ) {\r\n\r\n\t\t// Determine whether items are being displayed horizontally\r\n\t\tthis.floating = this.items.length ?\r\n\t\t\tthis.options.axis === \"x\" || this._isFloating( this.items[ 0 ].item ) :\r\n\t\t\tfalse;\r\n\r\n\t\t// This has to be redone because due to the item being moved out/into the offsetParent,\r\n\t\t// the offsetParent's position will change\r\n\t\tif ( this.offsetParent && this.helper ) {\r\n\t\t\tthis.offset.parent = this._getParentOffset();\r\n\t\t}\r\n\r\n\t\tthis._refreshItemPositions( fast );\r\n\r\n\t\tvar i, p;\r\n\r\n\t\tif ( this.options.custom && this.options.custom.refreshContainers ) {\r\n\t\t\tthis.options.custom.refreshContainers.call( this );\r\n\t\t} else {\r\n\t\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\r\n\t\t\t\tp = this.containers[ i ].element.offset();\r\n\t\t\t\tthis.containers[ i ].containerCache.left = p.left;\r\n\t\t\t\tthis.containers[ i ].containerCache.top = p.top;\r\n\t\t\t\tthis.containers[ i ].containerCache.width =\r\n\t\t\t\t\tthis.containers[ i ].element.outerWidth();\r\n\t\t\t\tthis.containers[ i ].containerCache.height =\r\n\t\t\t\t\tthis.containers[ i ].element.outerHeight();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_createPlaceholder: function( that ) {\r\n\t\tthat = that || this;\r\n\t\tvar className, nodeName,\r\n\t\t\to = that.options;\r\n\r\n\t\tif ( !o.placeholder || o.placeholder.constructor === String ) {\r\n\t\t\tclassName = o.placeholder;\r\n\t\t\tnodeName = that.currentItem[ 0 ].nodeName.toLowerCase();\r\n\t\t\to.placeholder = {\r\n\t\t\t\telement: function() {\r\n\r\n\t\t\t\t\tvar element = $( \"<\" + nodeName + \">\", that.document[ 0 ] );\r\n\r\n\t\t\t\t\tthat._addClass( element, \"ui-sortable-placeholder\",\r\n\t\t\t\t\t\t\tclassName || that.currentItem[ 0 ].className )\r\n\t\t\t\t\t\t._removeClass( element, \"ui-sortable-helper\" );\r\n\r\n\t\t\t\t\tif ( nodeName === \"tbody\" ) {\r\n\t\t\t\t\t\tthat._createTrPlaceholder(\r\n\t\t\t\t\t\t\tthat.currentItem.find( \"tr\" ).eq( 0 ),\r\n\t\t\t\t\t\t\t$( \"<tr>\", that.document[ 0 ] ).appendTo( element )\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t} else if ( nodeName === \"tr\" ) {\r\n\t\t\t\t\t\tthat._createTrPlaceholder( that.currentItem, element );\r\n\t\t\t\t\t} else if ( nodeName === \"img\" ) {\r\n\t\t\t\t\t\telement.attr( \"src\", that.currentItem.attr( \"src\" ) );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( !className ) {\r\n\t\t\t\t\t\telement.css( \"visibility\", \"hidden\" );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn element;\r\n\t\t\t\t},\r\n\t\t\t\tupdate: function( container, p ) {\r\n\r\n\t\t\t\t\t// 1. If a className is set as 'placeholder option, we don't force sizes -\r\n\t\t\t\t\t// the class is responsible for that\r\n\t\t\t\t\t// 2. The option 'forcePlaceholderSize can be enabled to force it even if a\r\n\t\t\t\t\t// class name is specified\r\n\t\t\t\t\tif ( className && !o.forcePlaceholderSize ) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// If the element doesn't have a actual height or width by itself (without\r\n\t\t\t\t\t// styles coming from a stylesheet), it receives the inline height and width\r\n\t\t\t\t\t// from the dragged item. Or, if it's a tbody or tr, it's going to have a height\r\n\t\t\t\t\t// anyway since we're populating them with <td>s above, but they're unlikely to\r\n\t\t\t\t\t// be the correct height on their own if the row heights are dynamic, so we'll\r\n\t\t\t\t\t// always assign the height of the dragged item given forcePlaceholderSize\r\n\t\t\t\t\t// is true.\r\n\t\t\t\t\tif ( !p.height() || ( o.forcePlaceholderSize &&\r\n\t\t\t\t\t\t\t( nodeName === \"tbody\" || nodeName === \"tr\" ) ) ) {\r\n\t\t\t\t\t\tp.height(\r\n\t\t\t\t\t\t\tthat.currentItem.innerHeight() -\r\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingTop\" ) || 0, 10 ) -\r\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingBottom\" ) || 0, 10 ) );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( !p.width() ) {\r\n\t\t\t\t\t\tp.width(\r\n\t\t\t\t\t\t\tthat.currentItem.innerWidth() -\r\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingLeft\" ) || 0, 10 ) -\r\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingRight\" ) || 0, 10 ) );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t//Create the placeholder\r\n\t\tthat.placeholder = $( o.placeholder.element.call( that.element, that.currentItem ) );\r\n\r\n\t\t//Append it after the actual current item\r\n\t\tthat.currentItem.after( that.placeholder );\r\n\r\n\t\t//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\r\n\t\to.placeholder.update( that, that.placeholder );\r\n\r\n\t},\r\n\r\n\t_createTrPlaceholder: function( sourceTr, targetTr ) {\r\n\t\tvar that = this;\r\n\r\n\t\tsourceTr.children().each( function() {\r\n\t\t\t$( \"<td>&#160;</td>\", that.document[ 0 ] )\r\n\t\t\t\t.attr( \"colspan\", $( this ).attr( \"colspan\" ) || 1 )\r\n\t\t\t\t.appendTo( targetTr );\r\n\t\t} );\r\n\t},\r\n\r\n\t_contactContainers: function( event ) {\r\n\t\tvar i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom,\r\n\t\t\tfloating, axis,\r\n\t\t\tinnermostContainer = null,\r\n\t\t\tinnermostIndex = null;\r\n\r\n\t\t// Get innermost container that intersects with item\r\n\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\r\n\r\n\t\t\t// Never consider a container that's located within the item itself\r\n\t\t\tif ( $.contains( this.currentItem[ 0 ], this.containers[ i ].element[ 0 ] ) ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif ( this._intersectsWith( this.containers[ i ].containerCache ) ) {\r\n\r\n\t\t\t\t// If we've already found a container and it's more \"inner\" than this, then continue\r\n\t\t\t\tif ( innermostContainer &&\r\n\t\t\t\t\t\t$.contains(\r\n\t\t\t\t\t\t\tthis.containers[ i ].element[ 0 ],\r\n\t\t\t\t\t\t\tinnermostContainer.element[ 0 ] ) ) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinnermostContainer = this.containers[ i ];\r\n\t\t\t\tinnermostIndex = i;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// container doesn't intersect. trigger \"out\" event if necessary\r\n\t\t\t\tif ( this.containers[ i ].containerCache.over ) {\r\n\t\t\t\t\tthis.containers[ i ]._trigger( \"out\", event, this._uiHash( this ) );\r\n\t\t\t\t\tthis.containers[ i ].containerCache.over = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// If no intersecting containers found, return\r\n\t\tif ( !innermostContainer ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Move the item into the container if it's not there already\r\n\t\tif ( this.containers.length === 1 ) {\r\n\t\t\tif ( !this.containers[ innermostIndex ].containerCache.over ) {\r\n\t\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash( this ) );\r\n\t\t\t\tthis.containers[ innermostIndex ].containerCache.over = 1;\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\t// When entering a new container, we will find the item with the least distance and\r\n\t\t\t// append our item near it\r\n\t\t\tdist = 10000;\r\n\t\t\titemWithLeastDistance = null;\r\n\t\t\tfloating = innermostContainer.floating || this._isFloating( this.currentItem );\r\n\t\t\tposProperty = floating ? \"left\" : \"top\";\r\n\t\t\tsizeProperty = floating ? \"width\" : \"height\";\r\n\t\t\taxis = floating ? \"pageX\" : \"pageY\";\r\n\r\n\t\t\tfor ( j = this.items.length - 1; j >= 0; j-- ) {\r\n\t\t\t\tif ( !$.contains(\r\n\t\t\t\t\t\tthis.containers[ innermostIndex ].element[ 0 ], this.items[ j ].item[ 0 ] )\r\n\t\t\t\t) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif ( this.items[ j ].item[ 0 ] === this.currentItem[ 0 ] ) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcur = this.items[ j ].item.offset()[ posProperty ];\r\n\t\t\t\tnearBottom = false;\r\n\t\t\t\tif ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) {\r\n\t\t\t\t\tnearBottom = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( Math.abs( event[ axis ] - cur ) < dist ) {\r\n\t\t\t\t\tdist = Math.abs( event[ axis ] - cur );\r\n\t\t\t\t\titemWithLeastDistance = this.items[ j ];\r\n\t\t\t\t\tthis.direction = nearBottom ? \"up\" : \"down\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//Check if dropOnEmpty is enabled\r\n\t\t\tif ( !itemWithLeastDistance && !this.options.dropOnEmpty ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif ( this.currentContainer === this.containers[ innermostIndex ] ) {\r\n\t\t\t\tif ( !this.currentContainer.containerCache.over ) {\r\n\t\t\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash() );\r\n\t\t\t\t\tthis.currentContainer.containerCache.over = 1;\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif ( itemWithLeastDistance ) {\r\n\t\t\t\tthis._rearrange( event, itemWithLeastDistance, null, true );\r\n\t\t\t} else {\r\n\t\t\t\tthis._rearrange( event, null, this.containers[ innermostIndex ].element, true );\r\n\t\t\t}\r\n\t\t\tthis._trigger( \"change\", event, this._uiHash() );\r\n\t\t\tthis.containers[ innermostIndex ]._trigger( \"change\", event, this._uiHash( this ) );\r\n\t\t\tthis.currentContainer = this.containers[ innermostIndex ];\r\n\r\n\t\t\t//Update the placeholder\r\n\t\t\tthis.options.placeholder.update( this.currentContainer, this.placeholder );\r\n\r\n\t\t\t//Update scrollParent\r\n\t\t\tthis.scrollParent = this.placeholder.scrollParent();\r\n\r\n\t\t\t//Update overflowOffset\r\n\t\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\r\n\t\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\r\n\t\t\t\tthis.overflowOffset = this.scrollParent.offset();\r\n\t\t\t}\r\n\r\n\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash( this ) );\r\n\t\t\tthis.containers[ innermostIndex ].containerCache.over = 1;\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_createHelper: function( event ) {\r\n\r\n\t\tvar o = this.options,\r\n\t\t\thelper = typeof o.helper === \"function\" ?\r\n\t\t\t\t$( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) :\r\n\t\t\t\t( o.helper === \"clone\" ? this.currentItem.clone() : this.currentItem );\r\n\r\n\t\t//Add the helper to the DOM if that didn't happen already\r\n\t\tif ( !helper.parents( \"body\" ).length ) {\r\n\t\t\tthis.appendTo[ 0 ].appendChild( helper[ 0 ] );\r\n\t\t}\r\n\r\n\t\tif ( helper[ 0 ] === this.currentItem[ 0 ] ) {\r\n\t\t\tthis._storedCSS = {\r\n\t\t\t\twidth: this.currentItem[ 0 ].style.width,\r\n\t\t\t\theight: this.currentItem[ 0 ].style.height,\r\n\t\t\t\tposition: this.currentItem.css( \"position\" ),\r\n\t\t\t\ttop: this.currentItem.css( \"top\" ),\r\n\t\t\t\tleft: this.currentItem.css( \"left\" )\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif ( !helper[ 0 ].style.width || o.forceHelperSize ) {\r\n\t\t\thelper.width( this.currentItem.width() );\r\n\t\t}\r\n\t\tif ( !helper[ 0 ].style.height || o.forceHelperSize ) {\r\n\t\t\thelper.height( this.currentItem.height() );\r\n\t\t}\r\n\r\n\t\treturn helper;\r\n\r\n\t},\r\n\r\n\t_adjustOffsetFromHelper: function( obj ) {\r\n\t\tif ( typeof obj === \"string\" ) {\r\n\t\t\tobj = obj.split( \" \" );\r\n\t\t}\r\n\t\tif ( Array.isArray( obj ) ) {\r\n\t\t\tobj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };\r\n\t\t}\r\n\t\tif ( \"left\" in obj ) {\r\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\r\n\t\t}\r\n\t\tif ( \"right\" in obj ) {\r\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\r\n\t\t}\r\n\t\tif ( \"top\" in obj ) {\r\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\r\n\t\t}\r\n\t\tif ( \"bottom\" in obj ) {\r\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\r\n\t\t}\r\n\t},\r\n\r\n\t_getParentOffset: function() {\r\n\r\n\t\t//Get the offsetParent and cache its position\r\n\t\tthis.offsetParent = this.helper.offsetParent();\r\n\t\tvar po = this.offsetParent.offset();\r\n\r\n\t\t// This is a special case where we need to modify a offset calculated on start, since the\r\n\t\t// following happened:\r\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the\r\n\t\t// next positioned parent\r\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't\r\n\t\t// the document, which means that the scroll is included in the initial calculation of the\r\n\t\t// offset of the parent, and never recalculated upon drag\r\n\t\tif ( this.cssPosition === \"absolute\" && this.scrollParent[ 0 ] !== this.document[ 0 ] &&\r\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {\r\n\t\t\tpo.left += this.scrollParent.scrollLeft();\r\n\t\t\tpo.top += this.scrollParent.scrollTop();\r\n\t\t}\r\n\r\n\t\t// This needs to be actually done for all browsers, since pageX/pageY includes\r\n\t\t// this information.\r\n\t\tif ( this.offsetParent[ 0 ] === this.document[ 0 ].body ) {\r\n\t\t\tpo = { top: 0, left: 0 };\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop: po.top + ( parseInt( this.offsetParent.css( \"borderTopWidth\" ), 10 ) || 0 ),\r\n\t\t\tleft: po.left + ( parseInt( this.offsetParent.css( \"borderLeftWidth\" ), 10 ) || 0 )\r\n\t\t};\r\n\r\n\t},\r\n\r\n\t_getRelativeOffset: function() {\r\n\r\n\t\tif ( this.cssPosition === \"relative\" ) {\r\n\t\t\tvar p = this.currentItem.position();\r\n\t\t\treturn {\r\n\t\t\t\ttop: p.top - ( parseInt( this.helper.css( \"top\" ), 10 ) || 0 ) +\r\n\t\t\t\t\tthis.scrollParent.scrollTop(),\r\n\t\t\t\tleft: p.left - ( parseInt( this.helper.css( \"left\" ), 10 ) || 0 ) +\r\n\t\t\t\t\tthis.scrollParent.scrollLeft()\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\treturn { top: 0, left: 0 };\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_cacheMargins: function() {\r\n\t\tthis.margins = {\r\n\t\t\tleft: ( parseInt( this.currentItem.css( \"marginLeft\" ), 10 ) || 0 ),\r\n\t\t\ttop: ( parseInt( this.currentItem.css( \"marginTop\" ), 10 ) || 0 )\r\n\t\t};\r\n\t},\r\n\r\n\t_cacheHelperProportions: function() {\r\n\t\tthis.helperProportions = {\r\n\t\t\twidth: this.helper.outerWidth(),\r\n\t\t\theight: this.helper.outerHeight()\r\n\t\t};\r\n\t},\r\n\r\n\t_setContainment: function() {\r\n\r\n\t\tvar ce, co, over,\r\n\t\t\to = this.options;\r\n\t\tif ( o.containment === \"parent\" ) {\r\n\t\t\to.containment = this.helper[ 0 ].parentNode;\r\n\t\t}\r\n\t\tif ( o.containment === \"document\" || o.containment === \"window\" ) {\r\n\t\t\tthis.containment = [\r\n\t\t\t\t0 - this.offset.relative.left - this.offset.parent.left,\r\n\t\t\t\t0 - this.offset.relative.top - this.offset.parent.top,\r\n\t\t\t\to.containment === \"document\" ?\r\n\t\t\t\t\tthis.document.width() :\r\n\t\t\t\t\tthis.window.width() - this.helperProportions.width - this.margins.left,\r\n\t\t\t\t( o.containment === \"document\" ?\r\n\t\t\t\t\t( this.document.height() || document.body.parentNode.scrollHeight ) :\r\n\t\t\t\t\tthis.window.height() || this.document[ 0 ].body.parentNode.scrollHeight\r\n\t\t\t\t) - this.helperProportions.height - this.margins.top\r\n\t\t\t];\r\n\t\t}\r\n\r\n\t\tif ( !( /^(document|window|parent)$/ ).test( o.containment ) ) {\r\n\t\t\tce = $( o.containment )[ 0 ];\r\n\t\t\tco = $( o.containment ).offset();\r\n\t\t\tover = ( $( ce ).css( \"overflow\" ) !== \"hidden\" );\r\n\r\n\t\t\tthis.containment = [\r\n\t\t\t\tco.left + ( parseInt( $( ce ).css( \"borderLeftWidth\" ), 10 ) || 0 ) +\r\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingLeft\" ), 10 ) || 0 ) - this.margins.left,\r\n\t\t\t\tco.top + ( parseInt( $( ce ).css( \"borderTopWidth\" ), 10 ) || 0 ) +\r\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingTop\" ), 10 ) || 0 ) - this.margins.top,\r\n\t\t\t\tco.left + ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -\r\n\t\t\t\t\t( parseInt( $( ce ).css( \"borderLeftWidth\" ), 10 ) || 0 ) -\r\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingRight\" ), 10 ) || 0 ) -\r\n\t\t\t\t\tthis.helperProportions.width - this.margins.left,\r\n\t\t\t\tco.top + ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -\r\n\t\t\t\t\t( parseInt( $( ce ).css( \"borderTopWidth\" ), 10 ) || 0 ) -\r\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingBottom\" ), 10 ) || 0 ) -\r\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\r\n\t\t\t];\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_convertPositionTo: function( d, pos ) {\r\n\r\n\t\tif ( !pos ) {\r\n\t\t\tpos = this.position;\r\n\t\t}\r\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\r\n\t\t\tscroll = this.cssPosition === \"absolute\" &&\r\n\t\t\t\t!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\r\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?\r\n\t\t\t\t\tthis.offsetParent :\r\n\t\t\t\t\tthis.scrollParent,\r\n\t\t\tscrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );\r\n\r\n\t\treturn {\r\n\t\t\ttop: (\r\n\r\n\t\t\t\t// The absolute mouse position\r\n\t\t\t\tpos.top\t+\r\n\r\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\r\n\t\t\t\tthis.offset.relative.top * mod +\r\n\r\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\r\n\t\t\t\tthis.offset.parent.top * mod -\r\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\r\n\t\t\t\t\t-this.scrollParent.scrollTop() :\r\n\t\t\t\t\t( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod )\r\n\t\t\t),\r\n\t\t\tleft: (\r\n\r\n\t\t\t\t// The absolute mouse position\r\n\t\t\t\tpos.left +\r\n\r\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\r\n\t\t\t\tthis.offset.relative.left * mod +\r\n\r\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\r\n\t\t\t\tthis.offset.parent.left * mod\t-\r\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\r\n\t\t\t\t\t-this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 :\r\n\t\t\t\t\tscroll.scrollLeft() ) * mod )\r\n\t\t\t)\r\n\t\t};\r\n\r\n\t},\r\n\r\n\t_generatePosition: function( event ) {\r\n\r\n\t\tvar top, left,\r\n\t\t\to = this.options,\r\n\t\t\tpageX = event.pageX,\r\n\t\t\tpageY = event.pageY,\r\n\t\t\tscroll = this.cssPosition === \"absolute\" &&\r\n\t\t\t\t!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\r\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?\r\n\t\t\t\t\tthis.offsetParent :\r\n\t\t\t\t\tthis.scrollParent,\r\n\t\t\t\tscrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );\r\n\r\n\t\t// This is another very weird special case that only happens for relative elements:\r\n\t\t// 1. If the css position is relative\r\n\t\t// 2. and the scroll parent is the document or similar to the offset parent\r\n\t\t// we have to refresh the relative offset during the scroll so there are no jumps\r\n\t\tif ( this.cssPosition === \"relative\" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\r\n\t\t\t\tthis.scrollParent[ 0 ] !== this.offsetParent[ 0 ] ) ) {\r\n\t\t\tthis.offset.relative = this._getRelativeOffset();\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\t * - Position constraining -\r\n\t\t * Constrain the position to a mix of grid, containment.\r\n\t\t */\r\n\r\n\t\tif ( this.originalPosition ) { //If we are not dragging yet, we won't check for options\r\n\r\n\t\t\tif ( this.containment ) {\r\n\t\t\t\tif ( event.pageX - this.offset.click.left < this.containment[ 0 ] ) {\r\n\t\t\t\t\tpageX = this.containment[ 0 ] + this.offset.click.left;\r\n\t\t\t\t}\r\n\t\t\t\tif ( event.pageY - this.offset.click.top < this.containment[ 1 ] ) {\r\n\t\t\t\t\tpageY = this.containment[ 1 ] + this.offset.click.top;\r\n\t\t\t\t}\r\n\t\t\t\tif ( event.pageX - this.offset.click.left > this.containment[ 2 ] ) {\r\n\t\t\t\t\tpageX = this.containment[ 2 ] + this.offset.click.left;\r\n\t\t\t\t}\r\n\t\t\t\tif ( event.pageY - this.offset.click.top > this.containment[ 3 ] ) {\r\n\t\t\t\t\tpageY = this.containment[ 3 ] + this.offset.click.top;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( o.grid ) {\r\n\t\t\t\ttop = this.originalPageY + Math.round( ( pageY - this.originalPageY ) /\r\n\t\t\t\t\to.grid[ 1 ] ) * o.grid[ 1 ];\r\n\t\t\t\tpageY = this.containment ?\r\n\t\t\t\t\t( ( top - this.offset.click.top >= this.containment[ 1 ] &&\r\n\t\t\t\t\t\ttop - this.offset.click.top <= this.containment[ 3 ] ) ?\r\n\t\t\t\t\t\t\ttop :\r\n\t\t\t\t\t\t\t( ( top - this.offset.click.top >= this.containment[ 1 ] ) ?\r\n\t\t\t\t\t\t\t\ttop - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) :\r\n\t\t\t\t\t\t\t\ttop;\r\n\r\n\t\t\t\tleft = this.originalPageX + Math.round( ( pageX - this.originalPageX ) /\r\n\t\t\t\t\to.grid[ 0 ] ) * o.grid[ 0 ];\r\n\t\t\t\tpageX = this.containment ?\r\n\t\t\t\t\t( ( left - this.offset.click.left >= this.containment[ 0 ] &&\r\n\t\t\t\t\t\tleft - this.offset.click.left <= this.containment[ 2 ] ) ?\r\n\t\t\t\t\t\t\tleft :\r\n\t\t\t\t\t\t\t( ( left - this.offset.click.left >= this.containment[ 0 ] ) ?\r\n\t\t\t\t\t\t\t\tleft - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) :\r\n\t\t\t\t\t\t\t\tleft;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop: (\r\n\r\n\t\t\t\t// The absolute mouse position\r\n\t\t\t\tpageY -\r\n\r\n\t\t\t\t// Click offset (relative to the element)\r\n\t\t\t\tthis.offset.click.top -\r\n\r\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\r\n\t\t\t\tthis.offset.relative.top -\r\n\r\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\r\n\t\t\t\tthis.offset.parent.top +\r\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\r\n\t\t\t\t\t-this.scrollParent.scrollTop() :\r\n\t\t\t\t\t( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) )\r\n\t\t\t),\r\n\t\t\tleft: (\r\n\r\n\t\t\t\t// The absolute mouse position\r\n\t\t\t\tpageX -\r\n\r\n\t\t\t\t// Click offset (relative to the element)\r\n\t\t\t\tthis.offset.click.left -\r\n\r\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\r\n\t\t\t\tthis.offset.relative.left -\r\n\r\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\r\n\t\t\t\tthis.offset.parent.left +\r\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\r\n\t\t\t\t\t-this.scrollParent.scrollLeft() :\r\n\t\t\t\t\tscrollIsRootNode ? 0 : scroll.scrollLeft() ) )\r\n\t\t\t)\r\n\t\t};\r\n\r\n\t},\r\n\r\n\t_rearrange: function( event, i, a, hardRefresh ) {\r\n\r\n\t\tif ( a ) {\r\n\t\t\ta[ 0 ].appendChild( this.placeholder[ 0 ] );\r\n\t\t} else {\r\n\t\t\ti.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ],\r\n\t\t\t\t( this.direction === \"down\" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) );\r\n\t\t}\r\n\r\n\t\t//Various things done here to improve the performance:\r\n\t\t// 1. we create a setTimeout, that calls refreshPositions\r\n\t\t// 2. on the instance, we have a counter variable, that get's higher after every append\r\n\t\t// 3. on the local scope, we copy the counter variable, and check in the timeout,\r\n\t\t// if it's still the same\r\n\t\t// 4. this lets only the last addition to the timeout stack through\r\n\t\tthis.counter = this.counter ? ++this.counter : 1;\r\n\t\tvar counter = this.counter;\r\n\r\n\t\tthis._delay( function() {\r\n\t\t\tif ( counter === this.counter ) {\r\n\r\n\t\t\t\t//Precompute after each DOM insertion, NOT on mousemove\r\n\t\t\t\tthis.refreshPositions( !hardRefresh );\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t},\r\n\r\n\t_clear: function( event, noPropagation ) {\r\n\r\n\t\tthis.reverting = false;\r\n\r\n\t\t// We delay all events that have to be triggered to after the point where the placeholder\r\n\t\t// has been removed and everything else normalized again\r\n\t\tvar i,\r\n\t\t\tdelayedTriggers = [];\r\n\r\n\t\t// We first have to update the dom position of the actual currentItem\r\n\t\t// Note: don't do it if the current item is already removed (by a user), or it gets\r\n\t\t// reappended (see #4088)\r\n\t\tif ( !this._noFinalSort && this.currentItem.parent().length ) {\r\n\t\t\tthis.placeholder.before( this.currentItem );\r\n\t\t}\r\n\t\tthis._noFinalSort = null;\r\n\r\n\t\tif ( this.helper[ 0 ] === this.currentItem[ 0 ] ) {\r\n\t\t\tfor ( i in this._storedCSS ) {\r\n\t\t\t\tif ( this._storedCSS[ i ] === \"auto\" || this._storedCSS[ i ] === \"static\" ) {\r\n\t\t\t\t\tthis._storedCSS[ i ] = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.currentItem.css( this._storedCSS );\r\n\t\t\tthis._removeClass( this.currentItem, \"ui-sortable-helper\" );\r\n\t\t} else {\r\n\t\t\tthis.currentItem.show();\r\n\t\t}\r\n\r\n\t\tif ( this.fromOutside && !noPropagation ) {\r\n\t\t\tdelayedTriggers.push( function( event ) {\r\n\t\t\t\tthis._trigger( \"receive\", event, this._uiHash( this.fromOutside ) );\r\n\t\t\t} );\r\n\t\t}\r\n\t\tif ( ( this.fromOutside ||\r\n\t\t\t\tthis.domPosition.prev !==\r\n\t\t\t\tthis.currentItem.prev().not( \".ui-sortable-helper\" )[ 0 ] ||\r\n\t\t\t\tthis.domPosition.parent !== this.currentItem.parent()[ 0 ] ) && !noPropagation ) {\r\n\r\n\t\t\t// Trigger update callback if the DOM position has changed\r\n\t\t\tdelayedTriggers.push( function( event ) {\r\n\t\t\t\tthis._trigger( \"update\", event, this._uiHash() );\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\t// Check if the items Container has Changed and trigger appropriate\r\n\t\t// events.\r\n\t\tif ( this !== this.currentContainer ) {\r\n\t\t\tif ( !noPropagation ) {\r\n\t\t\t\tdelayedTriggers.push( function( event ) {\r\n\t\t\t\t\tthis._trigger( \"remove\", event, this._uiHash() );\r\n\t\t\t\t} );\r\n\t\t\t\tdelayedTriggers.push( ( function( c ) {\r\n\t\t\t\t\treturn function( event ) {\r\n\t\t\t\t\t\tc._trigger( \"receive\", event, this._uiHash( this ) );\r\n\t\t\t\t\t};\r\n\t\t\t\t} ).call( this, this.currentContainer ) );\r\n\t\t\t\tdelayedTriggers.push( ( function( c ) {\r\n\t\t\t\t\treturn function( event ) {\r\n\t\t\t\t\t\tc._trigger( \"update\", event, this._uiHash( this ) );\r\n\t\t\t\t\t};\r\n\t\t\t\t} ).call( this, this.currentContainer ) );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//Post events to containers\r\n\t\tfunction delayEvent( type, instance, container ) {\r\n\t\t\treturn function( event ) {\r\n\t\t\t\tcontainer._trigger( type, event, instance._uiHash( instance ) );\r\n\t\t\t};\r\n\t\t}\r\n\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\r\n\t\t\tif ( !noPropagation ) {\r\n\t\t\t\tdelayedTriggers.push( delayEvent( \"deactivate\", this, this.containers[ i ] ) );\r\n\t\t\t}\r\n\t\t\tif ( this.containers[ i ].containerCache.over ) {\r\n\t\t\t\tdelayedTriggers.push( delayEvent( \"out\", this, this.containers[ i ] ) );\r\n\t\t\t\tthis.containers[ i ].containerCache.over = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//Do what was originally in plugins\r\n\t\tif ( this._storedStylesheet ) {\r\n\t\t\tthis._storedStylesheet.remove();\r\n\t\t\tthis._storedStylesheet = null;\r\n\t\t}\r\n\t\tif ( this._storedOpacity ) {\r\n\t\t\tthis.helper.css( \"opacity\", this._storedOpacity );\r\n\t\t}\r\n\t\tif ( this._storedZIndex ) {\r\n\t\t\tthis.helper.css( \"zIndex\", this._storedZIndex === \"auto\" ? \"\" : this._storedZIndex );\r\n\t\t}\r\n\r\n\t\tthis.dragging = false;\r\n\r\n\t\tif ( !noPropagation ) {\r\n\t\t\tthis._trigger( \"beforeStop\", event, this._uiHash() );\r\n\t\t}\r\n\r\n\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\r\n\t\t// it unbinds ALL events from the original node!\r\n\t\tthis.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );\r\n\r\n\t\tif ( !this.cancelHelperRemoval ) {\r\n\t\t\tif ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {\r\n\t\t\t\tthis.helper.remove();\r\n\t\t\t}\r\n\t\t\tthis.helper = null;\r\n\t\t}\r\n\r\n\t\tif ( !noPropagation ) {\r\n\t\t\tfor ( i = 0; i < delayedTriggers.length; i++ ) {\r\n\r\n\t\t\t\t// Trigger all delayed events\r\n\t\t\t\tdelayedTriggers[ i ].call( this, event );\r\n\t\t\t}\r\n\t\t\tthis._trigger( \"stop\", event, this._uiHash() );\r\n\t\t}\r\n\r\n\t\tthis.fromOutside = false;\r\n\t\treturn !this.cancelHelperRemoval;\r\n\r\n\t},\r\n\r\n\t_trigger: function() {\r\n\t\tif ( $.Widget.prototype._trigger.apply( this, arguments ) === false ) {\r\n\t\t\tthis.cancel();\r\n\t\t}\r\n\t},\r\n\r\n\t_uiHash: function( _inst ) {\r\n\t\tvar inst = _inst || this;\r\n\t\treturn {\r\n\t\t\thelper: inst.helper,\r\n\t\t\tplaceholder: inst.placeholder || $( [] ),\r\n\t\t\tposition: inst.position,\r\n\t\t\toriginalPosition: inst.originalPosition,\r\n\t\t\toffset: inst.positionAbs,\r\n\t\t\titem: inst.currentItem,\r\n\t\t\tsender: _inst ? _inst.element : null\r\n\t\t};\r\n\t}\r\n\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Spinner 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Spinner\r\n//>>group: Widgets\r\n//>>description: Displays buttons to easily input numbers via the keyboard or mouse.\r\n//>>docs: https://api.jqueryui.com/spinner/\r\n//>>demos: https://jqueryui.com/spinner/\r\n//>>css.structure: ../../themes/base/core.css\r\n//>>css.structure: ../../themes/base/spinner.css\r\n//>>css.theme: ../../themes/base/theme.css\r\n\r\n\r\nfunction spinnerModifier( fn ) {\r\n\treturn function() {\r\n\t\tvar previous = this.element.val();\r\n\t\tfn.apply( this, arguments );\r\n\t\tthis._refresh();\r\n\t\tif ( previous !== this.element.val() ) {\r\n\t\t\tthis._trigger( \"change\" );\r\n\t\t}\r\n\t};\r\n}\r\n\r\n$.widget( \"ui.spinner\", {\r\n\tversion: \"1.14.1\",\r\n\tdefaultElement: \"<input>\",\r\n\twidgetEventPrefix: \"spin\",\r\n\toptions: {\r\n\t\tclasses: {\r\n\t\t\t\"ui-spinner\": \"ui-corner-all\",\r\n\t\t\t\"ui-spinner-down\": \"ui-corner-br\",\r\n\t\t\t\"ui-spinner-up\": \"ui-corner-tr\"\r\n\t\t},\r\n\t\tculture: null,\r\n\t\ticons: {\r\n\t\t\tdown: \"ui-icon-triangle-1-s\",\r\n\t\t\tup: \"ui-icon-triangle-1-n\"\r\n\t\t},\r\n\t\tincremental: true,\r\n\t\tmax: null,\r\n\t\tmin: null,\r\n\t\tnumberFormat: null,\r\n\t\tpage: 10,\r\n\t\tstep: 1,\r\n\r\n\t\tchange: null,\r\n\t\tspin: null,\r\n\t\tstart: null,\r\n\t\tstop: null\r\n\t},\r\n\r\n\t_create: function() {\r\n\r\n\t\t// handle string values that need to be parsed\r\n\t\tthis._setOption( \"max\", this.options.max );\r\n\t\tthis._setOption( \"min\", this.options.min );\r\n\t\tthis._setOption( \"step\", this.options.step );\r\n\r\n\t\t// Only format if there is a value, prevents the field from being marked\r\n\t\t// as invalid in Firefox, see #9573.\r\n\t\tif ( this.value() !== \"\" ) {\r\n\r\n\t\t\t// Format the value, but don't constrain.\r\n\t\t\tthis._value( this.element.val(), true );\r\n\t\t}\r\n\r\n\t\tthis._draw();\r\n\t\tthis._on( this._events );\r\n\t\tthis._refresh();\r\n\r\n\t\t// Turning off autocomplete prevents the browser from remembering the\r\n\t\t// value when navigating through history, so we re-enable autocomplete\r\n\t\t// if the page is unloaded before the widget is destroyed. #7790\r\n\t\tthis._on( this.window, {\r\n\t\t\tbeforeunload: function() {\r\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\t_getCreateOptions: function() {\r\n\t\tvar options = this._super();\r\n\t\tvar element = this.element;\r\n\r\n\t\t$.each( [ \"min\", \"max\", \"step\" ], function( i, option ) {\r\n\t\t\tvar value = element.attr( option );\r\n\t\t\tif ( value != null && value.length ) {\r\n\t\t\t\toptions[ option ] = value;\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\treturn options;\r\n\t},\r\n\r\n\t_events: {\r\n\t\tkeydown: function( event ) {\r\n\t\t\tif ( this._start( event ) && this._keydown( event ) ) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t}\r\n\t\t},\r\n\t\tkeyup: \"_stop\",\r\n\t\tfocus: function() {\r\n\t\t\tthis.previous = this.element.val();\r\n\t\t},\r\n\t\tblur: function( event ) {\r\n\t\t\tthis._stop();\r\n\t\t\tthis._refresh();\r\n\t\t\tif ( this.previous !== this.element.val() ) {\r\n\t\t\t\tthis._trigger( \"change\", event );\r\n\t\t\t}\r\n\t\t},\r\n\t\tmousewheel: function( event, delta ) {\r\n\t\t\tvar activeElement = this.document[ 0 ].activeElement;\r\n\t\t\tvar isActive = this.element[ 0 ] === activeElement;\r\n\r\n\t\t\tif ( !isActive || !delta ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif ( !this.spinning && !this._start( event ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tthis._spin( ( delta > 0 ? 1 : -1 ) * this.options.step, event );\r\n\t\t\tclearTimeout( this.mousewheelTimer );\r\n\t\t\tthis.mousewheelTimer = this._delay( function() {\r\n\t\t\t\tif ( this.spinning ) {\r\n\t\t\t\t\tthis._stop( event );\r\n\t\t\t\t}\r\n\t\t\t}, 100 );\r\n\t\t\tevent.preventDefault();\r\n\t\t},\r\n\t\t\"mousedown .ui-spinner-button\": function( event ) {\r\n\t\t\tvar previous;\r\n\r\n\t\t\t// We never want the buttons to have focus; whenever the user is\r\n\t\t\t// interacting with the spinner, the focus should be on the input.\r\n\t\t\t// If the input is focused then this.previous is properly set from\r\n\t\t\t// when the input first received focus. If the input is not focused\r\n\t\t\t// then we need to set this.previous based on the value before spinning.\r\n\t\t\tprevious = this.element[ 0 ] === this.document[ 0 ].activeElement ?\r\n\t\t\t\tthis.previous : this.element.val();\r\n\t\t\tfunction checkFocus() {\r\n\t\t\t\tvar isActive = this.element[ 0 ] === this.document[ 0 ].activeElement;\r\n\t\t\t\tif ( !isActive ) {\r\n\t\t\t\t\tthis.element.trigger( \"focus\" );\r\n\t\t\t\t\tthis.previous = previous;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Ensure focus is on (or stays on) the text field\r\n\t\t\tevent.preventDefault();\r\n\t\t\tcheckFocus.call( this );\r\n\r\n\t\t\tif ( this._start( event ) === false ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._repeat( null, $( event.currentTarget )\r\n\t\t\t\t.hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\r\n\t\t},\r\n\t\t\"mouseup .ui-spinner-button\": \"_stop\",\r\n\t\t\"mouseenter .ui-spinner-button\": function( event ) {\r\n\r\n\t\t\t// button will add ui-state-active if mouse was down while mouseleave and kept down\r\n\t\t\tif ( !$( event.currentTarget ).hasClass( \"ui-state-active\" ) ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif ( this._start( event ) === false ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tthis._repeat( null, $( event.currentTarget )\r\n\t\t\t\t.hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\r\n\t\t},\r\n\r\n\t\t// TODO: do we really want to consider this a stop?\r\n\t\t// shouldn't we just stop the repeater and wait until mouseup before\r\n\t\t// we trigger the stop event?\r\n\t\t\"mouseleave .ui-spinner-button\": \"_stop\"\r\n\t},\r\n\r\n\t// Support mobile enhanced option and make backcompat more sane\r\n\t_enhance: function() {\r\n\t\tthis.uiSpinner = this.element\r\n\t\t\t.attr( \"autocomplete\", \"off\" )\r\n\t\t\t.wrap( \"<span>\" )\r\n\t\t\t.parent()\r\n\r\n\t\t\t\t// Add buttons\r\n\t\t\t\t.append(\r\n\t\t\t\t\t\"<a></a><a></a>\"\r\n\t\t\t\t);\r\n\t},\r\n\r\n\t_draw: function() {\r\n\t\tthis._enhance();\r\n\r\n\t\tthis._addClass( this.uiSpinner, \"ui-spinner\", \"ui-widget ui-widget-content\" );\r\n\t\tthis._addClass( \"ui-spinner-input\" );\r\n\r\n\t\tthis.element.attr( \"role\", \"spinbutton\" );\r\n\r\n\t\t// Button bindings\r\n\t\tthis.buttons = this.uiSpinner.children( \"a\" )\r\n\t\t\t.attr( \"tabIndex\", -1 )\r\n\t\t\t.attr( \"aria-hidden\", true )\r\n\t\t\t.button( {\r\n\t\t\t\tclasses: {\r\n\t\t\t\t\t\"ui-button\": \"\"\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\r\n\t\t// TODO: Right now button does not support classes this is already updated in button PR\r\n\t\tthis._removeClass( this.buttons, \"ui-corner-all\" );\r\n\r\n\t\tthis._addClass( this.buttons.first(), \"ui-spinner-button ui-spinner-up\" );\r\n\t\tthis._addClass( this.buttons.last(), \"ui-spinner-button ui-spinner-down\" );\r\n\t\tthis.buttons.first().button( {\r\n\t\t\t\"icon\": this.options.icons.up,\r\n\t\t\t\"showLabel\": false\r\n\t\t} );\r\n\t\tthis.buttons.last().button( {\r\n\t\t\t\"icon\": this.options.icons.down,\r\n\t\t\t\"showLabel\": false\r\n\t\t} );\r\n\r\n\t\t// IE 6 doesn't understand height: 50% for the buttons\r\n\t\t// unless the wrapper has an explicit height\r\n\t\tif ( this.buttons.height() > Math.ceil( this.uiSpinner.height() * 0.5 ) &&\r\n\t\t\t\tthis.uiSpinner.height() > 0 ) {\r\n\t\t\tthis.uiSpinner.height( this.uiSpinner.height() );\r\n\t\t}\r\n\t},\r\n\r\n\t_keydown: function( event ) {\r\n\t\tvar options = this.options,\r\n\t\t\tkeyCode = $.ui.keyCode;\r\n\r\n\t\tswitch ( event.keyCode ) {\r\n\t\tcase keyCode.UP:\r\n\t\t\tthis._repeat( null, 1, event );\r\n\t\t\treturn true;\r\n\t\tcase keyCode.DOWN:\r\n\t\t\tthis._repeat( null, -1, event );\r\n\t\t\treturn true;\r\n\t\tcase keyCode.PAGE_UP:\r\n\t\t\tthis._repeat( null, options.page, event );\r\n\t\t\treturn true;\r\n\t\tcase keyCode.PAGE_DOWN:\r\n\t\t\tthis._repeat( null, -options.page, event );\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\t_start: function( event ) {\r\n\t\tif ( !this.spinning && this._trigger( \"start\", event ) === false ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif ( !this.counter ) {\r\n\t\t\tthis.counter = 1;\r\n\t\t}\r\n\t\tthis.spinning = true;\r\n\t\treturn true;\r\n\t},\r\n\r\n\t_repeat: function( i, steps, event ) {\r\n\t\ti = i || 500;\r\n\r\n\t\tclearTimeout( this.timer );\r\n\t\tthis.timer = this._delay( function() {\r\n\t\t\tthis._repeat( 40, steps, event );\r\n\t\t}, i );\r\n\r\n\t\tthis._spin( steps * this.options.step, event );\r\n\t},\r\n\r\n\t_spin: function( step, event ) {\r\n\t\tvar value = this.value() || 0;\r\n\r\n\t\tif ( !this.counter ) {\r\n\t\t\tthis.counter = 1;\r\n\t\t}\r\n\r\n\t\tvalue = this._adjustValue( value + step * this._increment( this.counter ) );\r\n\r\n\t\tif ( !this.spinning || this._trigger( \"spin\", event, { value: value } ) !== false ) {\r\n\t\t\tthis._value( value );\r\n\t\t\tthis.counter++;\r\n\t\t}\r\n\t},\r\n\r\n\t_increment: function( i ) {\r\n\t\tvar incremental = this.options.incremental;\r\n\r\n\t\tif ( incremental ) {\r\n\t\t\treturn typeof incremental === \"function\" ?\r\n\t\t\t\tincremental( i ) :\r\n\t\t\t\tMath.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 );\r\n\t\t}\r\n\r\n\t\treturn 1;\r\n\t},\r\n\r\n\t_precision: function() {\r\n\t\tvar precision = this._precisionOf( this.options.step );\r\n\t\tif ( this.options.min !== null ) {\r\n\t\t\tprecision = Math.max( precision, this._precisionOf( this.options.min ) );\r\n\t\t}\r\n\t\treturn precision;\r\n\t},\r\n\r\n\t_precisionOf: function( num ) {\r\n\t\tvar str = num.toString(),\r\n\t\t\tdecimal = str.indexOf( \".\" );\r\n\t\treturn decimal === -1 ? 0 : str.length - decimal - 1;\r\n\t},\r\n\r\n\t_adjustValue: function( value ) {\r\n\t\tvar base, aboveMin,\r\n\t\t\toptions = this.options;\r\n\r\n\t\t// Make sure we're at a valid step\r\n\t\t// - find out where we are relative to the base (min or 0)\r\n\t\tbase = options.min !== null ? options.min : 0;\r\n\t\taboveMin = value - base;\r\n\r\n\t\t// - round to the nearest step\r\n\t\taboveMin = Math.round( aboveMin / options.step ) * options.step;\r\n\r\n\t\t// - rounding is based on 0, so adjust back to our base\r\n\t\tvalue = base + aboveMin;\r\n\r\n\t\t// Fix precision from bad JS floating point math\r\n\t\tvalue = parseFloat( value.toFixed( this._precision() ) );\r\n\r\n\t\t// Clamp the value\r\n\t\tif ( options.max !== null && value > options.max ) {\r\n\t\t\treturn options.max;\r\n\t\t}\r\n\t\tif ( options.min !== null && value < options.min ) {\r\n\t\t\treturn options.min;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t},\r\n\r\n\t_stop: function( event ) {\r\n\t\tif ( !this.spinning ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tclearTimeout( this.timer );\r\n\t\tclearTimeout( this.mousewheelTimer );\r\n\t\tthis.counter = 0;\r\n\t\tthis.spinning = false;\r\n\t\tthis._trigger( \"stop\", event );\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\t\tvar prevValue, first, last;\r\n\r\n\t\tif ( key === \"culture\" || key === \"numberFormat\" ) {\r\n\t\t\tprevValue = this._parse( this.element.val() );\r\n\t\t\tthis.options[ key ] = value;\r\n\t\t\tthis.element.val( this._format( prevValue ) );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( key === \"max\" || key === \"min\" || key === \"step\" ) {\r\n\t\t\tif ( typeof value === \"string\" ) {\r\n\t\t\t\tvalue = this._parse( value );\r\n\t\t\t}\r\n\t\t}\r\n\t\tif ( key === \"icons\" ) {\r\n\t\t\tfirst = this.buttons.first().find( \".ui-icon\" );\r\n\t\t\tthis._removeClass( first, null, this.options.icons.up );\r\n\t\t\tthis._addClass( first, null, value.up );\r\n\t\t\tlast = this.buttons.last().find( \".ui-icon\" );\r\n\t\t\tthis._removeClass( last, null, this.options.icons.down );\r\n\t\t\tthis._addClass( last, null, value.down );\r\n\t\t}\r\n\r\n\t\tthis._super( key, value );\r\n\t},\r\n\r\n\t_setOptionDisabled: function( value ) {\r\n\t\tthis._super( value );\r\n\r\n\t\tthis._toggleClass( this.uiSpinner, null, \"ui-state-disabled\", !!value );\r\n\t\tthis.element.prop( \"disabled\", !!value );\r\n\t\tthis.buttons.button( value ? \"disable\" : \"enable\" );\r\n\t},\r\n\r\n\t_setOptions: spinnerModifier( function( options ) {\r\n\t\tthis._super( options );\r\n\t} ),\r\n\r\n\t_parse: function( val ) {\r\n\t\tif ( typeof val === \"string\" && val !== \"\" ) {\r\n\t\t\tval = window.Globalize && this.options.numberFormat ?\r\n\t\t\t\tGlobalize.parseFloat( val, 10, this.options.culture ) : +val;\r\n\t\t}\r\n\t\treturn val === \"\" || isNaN( val ) ? null : val;\r\n\t},\r\n\r\n\t_format: function( value ) {\r\n\t\tif ( value === \"\" ) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\treturn window.Globalize && this.options.numberFormat ?\r\n\t\t\tGlobalize.format( value, this.options.numberFormat, this.options.culture ) :\r\n\t\t\tvalue;\r\n\t},\r\n\r\n\t_refresh: function() {\r\n\t\tthis.element.attr( {\r\n\t\t\t\"aria-valuemin\": this.options.min,\r\n\t\t\t\"aria-valuemax\": this.options.max,\r\n\r\n\t\t\t// TODO: what should we do with values that can't be parsed?\r\n\t\t\t\"aria-valuenow\": this._parse( this.element.val() )\r\n\t\t} );\r\n\t},\r\n\r\n\tisValid: function() {\r\n\t\tvar value = this.value();\r\n\r\n\t\t// Null is invalid\r\n\t\tif ( value === null ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// If value gets adjusted, it's invalid\r\n\t\treturn value === this._adjustValue( value );\r\n\t},\r\n\r\n\t// Update the value without triggering change\r\n\t_value: function( value, allowAny ) {\r\n\t\tvar parsed;\r\n\t\tif ( value !== \"\" ) {\r\n\t\t\tparsed = this._parse( value );\r\n\t\t\tif ( parsed !== null ) {\r\n\t\t\t\tif ( !allowAny ) {\r\n\t\t\t\t\tparsed = this._adjustValue( parsed );\r\n\t\t\t\t}\r\n\t\t\t\tvalue = this._format( parsed );\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.element.val( value );\r\n\t\tthis._refresh();\r\n\t},\r\n\r\n\t_destroy: function() {\r\n\t\tthis.element\r\n\t\t\t.prop( \"disabled\", false )\r\n\t\t\t.removeAttr( \"autocomplete role aria-valuemin aria-valuemax aria-valuenow\" );\r\n\r\n\t\tthis.uiSpinner.replaceWith( this.element );\r\n\t},\r\n\r\n\tstepUp: spinnerModifier( function( steps ) {\r\n\t\tthis._stepUp( steps );\r\n\t} ),\r\n\t_stepUp: function( steps ) {\r\n\t\tif ( this._start() ) {\r\n\t\t\tthis._spin( ( steps || 1 ) * this.options.step );\r\n\t\t\tthis._stop();\r\n\t\t}\r\n\t},\r\n\r\n\tstepDown: spinnerModifier( function( steps ) {\r\n\t\tthis._stepDown( steps );\r\n\t} ),\r\n\t_stepDown: function( steps ) {\r\n\t\tif ( this._start() ) {\r\n\t\t\tthis._spin( ( steps || 1 ) * -this.options.step );\r\n\t\t\tthis._stop();\r\n\t\t}\r\n\t},\r\n\r\n\tpageUp: spinnerModifier( function( pages ) {\r\n\t\tthis._stepUp( ( pages || 1 ) * this.options.page );\r\n\t} ),\r\n\r\n\tpageDown: spinnerModifier( function( pages ) {\r\n\t\tthis._stepDown( ( pages || 1 ) * this.options.page );\r\n\t} ),\r\n\r\n\tvalue: function( newVal ) {\r\n\t\tif ( !arguments.length ) {\r\n\t\t\treturn this._parse( this.element.val() );\r\n\t\t}\r\n\t\tspinnerModifier( this._value ).call( this, newVal );\r\n\t},\r\n\r\n\twidget: function() {\r\n\t\treturn this.uiSpinner;\r\n\t}\r\n} );\r\n\r\n// DEPRECATED\r\n// TODO: switch return back to widget declaration at top of file when this is removed\r\nif ( $.uiBackCompat === true ) {\r\n\r\n\t// Backcompat for spinner html extension points\r\n\t$.widget( \"ui.spinner\", $.ui.spinner, {\r\n\t\t_enhance: function() {\r\n\t\t\tthis.uiSpinner = this.element\r\n\t\t\t\t.attr( \"autocomplete\", \"off\" )\r\n\t\t\t\t.wrap( this._uiSpinnerHtml() )\r\n\t\t\t\t.parent()\r\n\r\n\t\t\t\t\t// Add buttons\r\n\t\t\t\t\t.append( this._buttonHtml() );\r\n\t\t},\r\n\t\t_uiSpinnerHtml: function() {\r\n\t\t\treturn \"<span>\";\r\n\t\t},\r\n\r\n\t\t_buttonHtml: function() {\r\n\t\t\treturn \"<a></a><a></a>\";\r\n\t\t}\r\n\t} );\r\n}\r\n\r\nvar widgetsSpinner = $.ui.spinner;\r\n\r\n\r\n/*!\r\n * jQuery UI Tabs 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Tabs\r\n//>>group: Widgets\r\n//>>description: Transforms a set of container elements into a tab structure.\r\n//>>docs: https://api.jqueryui.com/tabs/\r\n//>>demos: https://jqueryui.com/tabs/\r\n//>>css.structure: ../../themes/base/core.css\r\n//>>css.structure: ../../themes/base/tabs.css\r\n//>>css.theme: ../../themes/base/theme.css\r\n\r\n\r\n$.widget( \"ui.tabs\", {\r\n\tversion: \"1.14.1\",\r\n\tdelay: 300,\r\n\toptions: {\r\n\t\tactive: null,\r\n\t\tclasses: {\r\n\t\t\t\"ui-tabs\": \"ui-corner-all\",\r\n\t\t\t\"ui-tabs-nav\": \"ui-corner-all\",\r\n\t\t\t\"ui-tabs-panel\": \"ui-corner-bottom\",\r\n\t\t\t\"ui-tabs-tab\": \"ui-corner-top\"\r\n\t\t},\r\n\t\tcollapsible: false,\r\n\t\tevent: \"click\",\r\n\t\theightStyle: \"content\",\r\n\t\thide: null,\r\n\t\tshow: null,\r\n\r\n\t\t// Callbacks\r\n\t\tactivate: null,\r\n\t\tbeforeActivate: null,\r\n\t\tbeforeLoad: null,\r\n\t\tload: null\r\n\t},\r\n\r\n\t_isLocal: ( function() {\r\n\t\tvar rhash = /#.*$/;\r\n\r\n\t\treturn function( anchor ) {\r\n\t\t\tvar anchorUrl, locationUrl;\r\n\r\n\t\t\tanchorUrl = anchor.href.replace( rhash, \"\" );\r\n\t\t\tlocationUrl = location.href.replace( rhash, \"\" );\r\n\r\n\t\t\t// Decoding may throw an error if the URL isn't UTF-8 (#9518)\r\n\t\t\ttry {\r\n\t\t\t\tanchorUrl = decodeURIComponent( anchorUrl );\r\n\t\t\t} catch ( error ) {}\r\n\t\t\ttry {\r\n\t\t\t\tlocationUrl = decodeURIComponent( locationUrl );\r\n\t\t\t} catch ( error ) {}\r\n\r\n\t\t\treturn anchor.hash.length > 1 && anchorUrl === locationUrl;\r\n\t\t};\r\n\t} )(),\r\n\r\n\t_create: function() {\r\n\t\tvar that = this,\r\n\t\t\toptions = this.options;\r\n\r\n\t\tthis.running = false;\r\n\r\n\t\tthis._addClass( \"ui-tabs\", \"ui-widget ui-widget-content\" );\r\n\t\tthis._toggleClass( \"ui-tabs-collapsible\", null, options.collapsible );\r\n\r\n\t\tthis._processTabs();\r\n\t\toptions.active = this._initialActive();\r\n\r\n\t\t// Take disabling tabs via class attribute from HTML\r\n\t\t// into account and update option properly.\r\n\t\tif ( Array.isArray( options.disabled ) ) {\r\n\t\t\toptions.disabled = $.uniqueSort( options.disabled.concat(\r\n\t\t\t\t$.map( this.tabs.filter( \".ui-state-disabled\" ), function( li ) {\r\n\t\t\t\t\treturn that.tabs.index( li );\r\n\t\t\t\t} )\r\n\t\t\t) ).sort();\r\n\t\t}\r\n\r\n\t\t// Check for length avoids error when initializing empty list\r\n\t\tif ( this.options.active !== false && this.anchors.length ) {\r\n\t\t\tthis.active = this._findActive( options.active );\r\n\t\t} else {\r\n\t\t\tthis.active = $();\r\n\t\t}\r\n\r\n\t\tthis._refresh();\r\n\r\n\t\tif ( this.active.length ) {\r\n\t\t\tthis.load( options.active );\r\n\t\t}\r\n\t},\r\n\r\n\t_initialActive: function() {\r\n\t\tvar active = this.options.active,\r\n\t\t\tcollapsible = this.options.collapsible,\r\n\t\t\tlocationHashDecoded = decodeURIComponent( location.hash.substring( 1 ) );\r\n\r\n\t\tif ( active === null ) {\r\n\r\n\t\t\t// check the fragment identifier in the URL\r\n\t\t\tif ( locationHashDecoded ) {\r\n\t\t\t\tthis.tabs.each( function( i, tab ) {\r\n\t\t\t\t\tif ( $( tab ).attr( \"aria-controls\" ) === locationHashDecoded ) {\r\n\t\t\t\t\t\tactive = i;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\r\n\t\t\t// Check for a tab marked active via a class\r\n\t\t\tif ( active === null ) {\r\n\t\t\t\tactive = this.tabs.index( this.tabs.filter( \".ui-tabs-active\" ) );\r\n\t\t\t}\r\n\r\n\t\t\t// No active tab, set to false\r\n\t\t\tif ( active === null || active === -1 ) {\r\n\t\t\t\tactive = this.tabs.length ? 0 : false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Handle numbers: negative, out of range\r\n\t\tif ( active !== false ) {\r\n\t\t\tactive = this.tabs.index( this.tabs.eq( active ) );\r\n\t\t\tif ( active === -1 ) {\r\n\t\t\t\tactive = collapsible ? false : 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Don't allow collapsible: false and active: false\r\n\t\tif ( !collapsible && active === false && this.anchors.length ) {\r\n\t\t\tactive = 0;\r\n\t\t}\r\n\r\n\t\treturn active;\r\n\t},\r\n\r\n\t_getCreateEventData: function() {\r\n\t\treturn {\r\n\t\t\ttab: this.active,\r\n\t\t\tpanel: !this.active.length ? $() : this._getPanelForTab( this.active )\r\n\t\t};\r\n\t},\r\n\r\n\t_tabKeydown: function( event ) {\r\n\t\tvar focusedTab = $( this.document[ 0 ].activeElement ).closest( \"li\" ),\r\n\t\t\tselectedIndex = this.tabs.index( focusedTab ),\r\n\t\t\tgoingForward = true;\r\n\r\n\t\tif ( this._handlePageNav( event ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tswitch ( event.keyCode ) {\r\n\t\tcase $.ui.keyCode.RIGHT:\r\n\t\tcase $.ui.keyCode.DOWN:\r\n\t\t\tselectedIndex++;\r\n\t\t\tbreak;\r\n\t\tcase $.ui.keyCode.UP:\r\n\t\tcase $.ui.keyCode.LEFT:\r\n\t\t\tgoingForward = false;\r\n\t\t\tselectedIndex--;\r\n\t\t\tbreak;\r\n\t\tcase $.ui.keyCode.END:\r\n\t\t\tselectedIndex = this.anchors.length - 1;\r\n\t\t\tbreak;\r\n\t\tcase $.ui.keyCode.HOME:\r\n\t\t\tselectedIndex = 0;\r\n\t\t\tbreak;\r\n\t\tcase $.ui.keyCode.SPACE:\r\n\r\n\t\t\t// Activate only, no collapsing\r\n\t\t\tevent.preventDefault();\r\n\t\t\tclearTimeout( this.activating );\r\n\t\t\tthis._activate( selectedIndex );\r\n\t\t\treturn;\r\n\t\tcase $.ui.keyCode.ENTER:\r\n\r\n\t\t\t// Toggle (cancel delayed activation, allow collapsing)\r\n\t\t\tevent.preventDefault();\r\n\t\t\tclearTimeout( this.activating );\r\n\r\n\t\t\t// Determine if we should collapse or activate\r\n\t\t\tthis._activate( selectedIndex === this.options.active ? false : selectedIndex );\r\n\t\t\treturn;\r\n\t\tdefault:\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Focus the appropriate tab, based on which key was pressed\r\n\t\tevent.preventDefault();\r\n\t\tclearTimeout( this.activating );\r\n\t\tselectedIndex = this._focusNextTab( selectedIndex, goingForward );\r\n\r\n\t\t// Navigating with control/command key will prevent automatic activation\r\n\t\tif ( !event.ctrlKey && !event.metaKey ) {\r\n\r\n\t\t\t// Update aria-selected immediately so that AT think the tab is already selected.\r\n\t\t\t// Otherwise AT may confuse the user by stating that they need to activate the tab,\r\n\t\t\t// but the tab will already be activated by the time the announcement finishes.\r\n\t\t\tfocusedTab.attr( \"aria-selected\", \"false\" );\r\n\t\t\tthis.tabs.eq( selectedIndex ).attr( \"aria-selected\", \"true\" );\r\n\r\n\t\t\tthis.activating = this._delay( function() {\r\n\t\t\t\tthis.option( \"active\", selectedIndex );\r\n\t\t\t}, this.delay );\r\n\t\t}\r\n\t},\r\n\r\n\t_panelKeydown: function( event ) {\r\n\t\tif ( this._handlePageNav( event ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Ctrl+up moves focus to the current tab\r\n\t\tif ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tthis.active.trigger( \"focus\" );\r\n\t\t}\r\n\t},\r\n\r\n\t// Alt+page up/down moves focus to the previous/next tab (and activates)\r\n\t_handlePageNav: function( event ) {\r\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {\r\n\t\t\tthis._activate( this._focusNextTab( this.options.active - 1, false ) );\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {\r\n\t\t\tthis._activate( this._focusNextTab( this.options.active + 1, true ) );\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n\r\n\t_findNextTab: function( index, goingForward ) {\r\n\t\tvar lastTabIndex = this.tabs.length - 1;\r\n\r\n\t\tfunction constrain() {\r\n\t\t\tif ( index > lastTabIndex ) {\r\n\t\t\t\tindex = 0;\r\n\t\t\t}\r\n\t\t\tif ( index < 0 ) {\r\n\t\t\t\tindex = lastTabIndex;\r\n\t\t\t}\r\n\t\t\treturn index;\r\n\t\t}\r\n\r\n\t\twhile ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {\r\n\t\t\tindex = goingForward ? index + 1 : index - 1;\r\n\t\t}\r\n\r\n\t\treturn index;\r\n\t},\r\n\r\n\t_focusNextTab: function( index, goingForward ) {\r\n\t\tindex = this._findNextTab( index, goingForward );\r\n\t\tthis.tabs.eq( index ).trigger( \"focus\" );\r\n\t\treturn index;\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\t\tif ( key === \"active\" ) {\r\n\r\n\t\t\t// _activate() will handle invalid values and update this.options\r\n\t\t\tthis._activate( value );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._super( key, value );\r\n\r\n\t\tif ( key === \"collapsible\" ) {\r\n\t\t\tthis._toggleClass( \"ui-tabs-collapsible\", null, value );\r\n\r\n\t\t\t// Setting collapsible: false while collapsed; open first panel\r\n\t\t\tif ( !value && this.options.active === false ) {\r\n\t\t\t\tthis._activate( 0 );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( key === \"event\" ) {\r\n\t\t\tthis._setupEvents( value );\r\n\t\t}\r\n\r\n\t\tif ( key === \"heightStyle\" ) {\r\n\t\t\tthis._setupHeightStyle( value );\r\n\t\t}\r\n\t},\r\n\r\n\trefresh: function() {\r\n\t\tvar options = this.options,\r\n\t\t\tlis = this.tablist.children( \":has(a[href])\" );\r\n\r\n\t\t// Get disabled tabs from class attribute from HTML\r\n\t\t// this will get converted to a boolean if needed in _refresh()\r\n\t\toptions.disabled = $.map( lis.filter( \".ui-state-disabled\" ), function( tab ) {\r\n\t\t\treturn lis.index( tab );\r\n\t\t} );\r\n\r\n\t\tthis._processTabs();\r\n\r\n\t\t// Was collapsed or no tabs\r\n\t\tif ( options.active === false || !this.anchors.length ) {\r\n\t\t\toptions.active = false;\r\n\t\t\tthis.active = $();\r\n\r\n\t\t// was active, but active tab is gone\r\n\t\t} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {\r\n\r\n\t\t\t// all remaining tabs are disabled\r\n\t\t\tif ( this.tabs.length === options.disabled.length ) {\r\n\t\t\t\toptions.active = false;\r\n\t\t\t\tthis.active = $();\r\n\r\n\t\t\t// activate previous tab\r\n\t\t\t} else {\r\n\t\t\t\tthis._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );\r\n\t\t\t}\r\n\r\n\t\t// was active, active tab still exists\r\n\t\t} else {\r\n\r\n\t\t\t// make sure active index is correct\r\n\t\t\toptions.active = this.tabs.index( this.active );\r\n\t\t}\r\n\r\n\t\tthis._refresh();\r\n\t},\r\n\r\n\t_refresh: function() {\r\n\t\tthis._setOptionDisabled( this.options.disabled );\r\n\t\tthis._setupEvents( this.options.event );\r\n\t\tthis._setupHeightStyle( this.options.heightStyle );\r\n\r\n\t\tthis.tabs.not( this.active ).attr( {\r\n\t\t\t\"aria-selected\": \"false\",\r\n\t\t\t\"aria-expanded\": \"false\",\r\n\t\t\ttabIndex: -1\r\n\t\t} );\r\n\t\tthis.panels.not( this._getPanelForTab( this.active ) )\r\n\t\t\t.hide()\r\n\t\t\t.attr( {\r\n\t\t\t\t\"aria-hidden\": \"true\"\r\n\t\t\t} );\r\n\r\n\t\t// Make sure one tab is in the tab order\r\n\t\tif ( !this.active.length ) {\r\n\t\t\tthis.tabs.eq( 0 ).attr( \"tabIndex\", 0 );\r\n\t\t} else {\r\n\t\t\tthis.active\r\n\t\t\t\t.attr( {\r\n\t\t\t\t\t\"aria-selected\": \"true\",\r\n\t\t\t\t\t\"aria-expanded\": \"true\",\r\n\t\t\t\t\ttabIndex: 0\r\n\t\t\t\t} );\r\n\t\t\tthis._addClass( this.active, \"ui-tabs-active\", \"ui-state-active\" );\r\n\t\t\tthis._getPanelForTab( this.active )\r\n\t\t\t\t.show()\r\n\t\t\t\t.attr( {\r\n\t\t\t\t\t\"aria-hidden\": \"false\"\r\n\t\t\t\t} );\r\n\t\t}\r\n\t},\r\n\r\n\t_processTabs: function() {\r\n\t\tvar that = this,\r\n\t\t\tprevTabs = this.tabs,\r\n\t\t\tprevAnchors = this.anchors,\r\n\t\t\tprevPanels = this.panels;\r\n\r\n\t\tthis.tablist = this._getList().attr( \"role\", \"tablist\" );\r\n\t\tthis._addClass( this.tablist, \"ui-tabs-nav\",\r\n\t\t\t\"ui-helper-reset ui-helper-clearfix ui-widget-header\" );\r\n\r\n\t\t// Prevent users from focusing disabled tabs via click\r\n\t\tthis.tablist\r\n\t\t\t.on( \"mousedown\" + this.eventNamespace, \"> li\", function( event ) {\r\n\t\t\t\tif ( $( this ).is( \".ui-state-disabled\" ) ) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\r\n\t\tthis.tabs = this.tablist.find( \"> li:has(a[href])\" )\r\n\t\t\t.attr( {\r\n\t\t\t\trole: \"tab\",\r\n\t\t\t\ttabIndex: -1\r\n\t\t\t} );\r\n\t\tthis._addClass( this.tabs, \"ui-tabs-tab\", \"ui-state-default\" );\r\n\r\n\t\tthis.anchors = this.tabs.map( function() {\r\n\t\t\treturn $( \"a\", this )[ 0 ];\r\n\t\t} )\r\n\t\t\t.attr( {\r\n\t\t\t\ttabIndex: -1\r\n\t\t\t} );\r\n\t\tthis._addClass( this.anchors, \"ui-tabs-anchor\" );\r\n\r\n\t\tthis.panels = $();\r\n\r\n\t\tthis.anchors.each( function( i, anchor ) {\r\n\t\t\tvar selector, panel, panelId,\r\n\t\t\t\tanchorId = $( anchor ).uniqueId().attr( \"id\" ),\r\n\t\t\t\ttab = $( anchor ).closest( \"li\" ),\r\n\t\t\t\toriginalAriaControls = tab.attr( \"aria-controls\" );\r\n\r\n\t\t\t// Inline tab\r\n\t\t\tif ( that._isLocal( anchor ) ) {\r\n\t\t\t\tselector = decodeURIComponent( anchor.hash );\r\n\t\t\t\tpanelId = selector.substring( 1 );\r\n\t\t\t\tpanel = that.element.find( \"#\" + CSS.escape( panelId ) );\r\n\r\n\t\t\t// remote tab\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// If the tab doesn't already have aria-controls,\r\n\t\t\t\t// generate an id by using a throw-away element\r\n\t\t\t\tpanelId = tab.attr( \"aria-controls\" ) || $( {} ).uniqueId()[ 0 ].id;\r\n\t\t\t\tselector = \"#\" + panelId;\r\n\t\t\t\tpanel = that.element.find( selector );\r\n\t\t\t\tif ( !panel.length ) {\r\n\t\t\t\t\tpanel = that._createPanel( panelId );\r\n\t\t\t\t\tpanel.insertAfter( that.panels[ i - 1 ] || that.tablist );\r\n\t\t\t\t}\r\n\t\t\t\tpanel.attr( \"aria-live\", \"polite\" );\r\n\t\t\t}\r\n\r\n\t\t\tif ( panel.length ) {\r\n\t\t\t\tthat.panels = that.panels.add( panel );\r\n\t\t\t}\r\n\t\t\tif ( originalAriaControls ) {\r\n\t\t\t\ttab.data( \"ui-tabs-aria-controls\", originalAriaControls );\r\n\t\t\t}\r\n\t\t\ttab.attr( {\r\n\t\t\t\t\"aria-controls\": panelId,\r\n\t\t\t\t\"aria-labelledby\": anchorId\r\n\t\t\t} );\r\n\t\t\tpanel.attr( \"aria-labelledby\", anchorId );\r\n\t\t} );\r\n\r\n\t\tthis.panels.attr( \"role\", \"tabpanel\" );\r\n\t\tthis._addClass( this.panels, \"ui-tabs-panel\", \"ui-widget-content\" );\r\n\r\n\t\t// Avoid memory leaks (#10056)\r\n\t\tif ( prevTabs ) {\r\n\t\t\tthis._off( prevTabs.not( this.tabs ) );\r\n\t\t\tthis._off( prevAnchors.not( this.anchors ) );\r\n\t\t\tthis._off( prevPanels.not( this.panels ) );\r\n\t\t}\r\n\t},\r\n\r\n\t// Allow overriding how to find the list for rare usage scenarios (#7715)\r\n\t_getList: function() {\r\n\t\treturn this.tablist || this.element.find( \"ol, ul\" ).eq( 0 );\r\n\t},\r\n\r\n\t_createPanel: function( id ) {\r\n\t\treturn $( \"<div>\" )\r\n\t\t\t.attr( \"id\", id )\r\n\t\t\t.data( \"ui-tabs-destroy\", true );\r\n\t},\r\n\r\n\t_setOptionDisabled: function( disabled ) {\r\n\t\tvar currentItem, li, i;\r\n\r\n\t\tif ( Array.isArray( disabled ) ) {\r\n\t\t\tif ( !disabled.length ) {\r\n\t\t\t\tdisabled = false;\r\n\t\t\t} else if ( disabled.length === this.anchors.length ) {\r\n\t\t\t\tdisabled = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Disable tabs\r\n\t\tfor ( i = 0; ( li = this.tabs[ i ] ); i++ ) {\r\n\t\t\tcurrentItem = $( li );\r\n\t\t\tif ( disabled === true || $.inArray( i, disabled ) !== -1 ) {\r\n\t\t\t\tcurrentItem.attr( \"aria-disabled\", \"true\" );\r\n\t\t\t\tthis._addClass( currentItem, null, \"ui-state-disabled\" );\r\n\t\t\t} else {\r\n\t\t\t\tcurrentItem.removeAttr( \"aria-disabled\" );\r\n\t\t\t\tthis._removeClass( currentItem, null, \"ui-state-disabled\" );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.options.disabled = disabled;\r\n\r\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null,\r\n\t\t\tdisabled === true );\r\n\t},\r\n\r\n\t_setupEvents: function( event ) {\r\n\t\tvar events = {};\r\n\t\tif ( event ) {\r\n\t\t\t$.each( event.split( \" \" ), function( index, eventName ) {\r\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\tthis._off( this.anchors.add( this.tabs ).add( this.panels ) );\r\n\r\n\t\t// Always prevent the default action, even when disabled\r\n\t\tthis._on( true, this.anchors, {\r\n\t\t\tclick: function( event ) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t}\r\n\t\t} );\r\n\t\tthis._on( this.anchors, events );\r\n\t\tthis._on( this.tabs, { keydown: \"_tabKeydown\" } );\r\n\t\tthis._on( this.panels, { keydown: \"_panelKeydown\" } );\r\n\r\n\t\tthis._focusable( this.tabs );\r\n\t\tthis._hoverable( this.tabs );\r\n\t},\r\n\r\n\t_setupHeightStyle: function( heightStyle ) {\r\n\t\tvar maxHeight,\r\n\t\t\tparent = this.element.parent();\r\n\r\n\t\tif ( heightStyle === \"fill\" ) {\r\n\t\t\tmaxHeight = parent.height();\r\n\t\t\tmaxHeight -= this.element.outerHeight() - this.element.height();\r\n\r\n\t\t\tthis.element.siblings( \":visible\" ).each( function() {\r\n\t\t\t\tvar elem = $( this ),\r\n\t\t\t\t\tposition = elem.css( \"position\" );\r\n\r\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\r\n\t\t\t} );\r\n\r\n\t\t\tthis.element.children().not( this.panels ).each( function() {\r\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\r\n\t\t\t} );\r\n\r\n\t\t\tthis.panels.each( function() {\r\n\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\r\n\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\r\n\t\t\t} )\r\n\t\t\t\t.css( \"overflow\", \"auto\" );\r\n\t\t} else if ( heightStyle === \"auto\" ) {\r\n\t\t\tmaxHeight = 0;\r\n\t\t\tthis.panels.each( function() {\r\n\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).height( \"\" ).height() );\r\n\t\t\t} ).height( maxHeight );\r\n\t\t}\r\n\t},\r\n\r\n\t_eventHandler: function( event ) {\r\n\t\tvar options = this.options,\r\n\t\t\tactive = this.active,\r\n\t\t\tanchor = $( event.currentTarget ),\r\n\t\t\ttab = anchor.closest( \"li\" ),\r\n\t\t\tclickedIsActive = tab[ 0 ] === active[ 0 ],\r\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\r\n\t\t\ttoShow = collapsing ? $() : this._getPanelForTab( tab ),\r\n\t\t\ttoHide = !active.length ? $() : this._getPanelForTab( active ),\r\n\t\t\teventData = {\r\n\t\t\t\toldTab: active,\r\n\t\t\t\toldPanel: toHide,\r\n\t\t\t\tnewTab: collapsing ? $() : tab,\r\n\t\t\t\tnewPanel: toShow\r\n\t\t\t};\r\n\r\n\t\tevent.preventDefault();\r\n\r\n\t\tif ( tab.hasClass( \"ui-state-disabled\" ) ||\r\n\r\n\t\t\t\t// tab is already loading\r\n\t\t\t\ttab.hasClass( \"ui-tabs-loading\" ) ||\r\n\r\n\t\t\t\t// can't switch durning an animation\r\n\t\t\t\tthis.running ||\r\n\r\n\t\t\t\t// click on active header, but not collapsible\r\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\r\n\r\n\t\t\t\t// allow canceling activation\r\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\toptions.active = collapsing ? false : this.tabs.index( tab );\r\n\r\n\t\tthis.active = clickedIsActive ? $() : tab;\r\n\t\tif ( this.xhr ) {\r\n\t\t\tthis.xhr.abort();\r\n\t\t}\r\n\r\n\t\tif ( !toHide.length && !toShow.length ) {\r\n\t\t\t$.error( \"jQuery UI Tabs: Mismatching fragment identifier.\" );\r\n\t\t}\r\n\r\n\t\tif ( toShow.length ) {\r\n\t\t\tthis.load( this.tabs.index( tab ), event );\r\n\t\t}\r\n\t\tthis._toggle( event, eventData );\r\n\t},\r\n\r\n\t// Handles show/hide for selecting tabs\r\n\t_toggle: function( event, eventData ) {\r\n\t\tvar that = this,\r\n\t\t\ttoShow = eventData.newPanel,\r\n\t\t\ttoHide = eventData.oldPanel;\r\n\r\n\t\tthis.running = true;\r\n\r\n\t\tfunction complete() {\r\n\t\t\tthat.running = false;\r\n\t\t\tthat._trigger( \"activate\", event, eventData );\r\n\t\t}\r\n\r\n\t\tfunction show() {\r\n\t\t\tthat._addClass( eventData.newTab.closest( \"li\" ), \"ui-tabs-active\", \"ui-state-active\" );\r\n\r\n\t\t\tif ( toShow.length && that.options.show ) {\r\n\t\t\t\tthat._show( toShow, that.options.show, complete );\r\n\t\t\t} else {\r\n\t\t\t\ttoShow.show();\r\n\t\t\t\tcomplete();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Start out by hiding, then showing, then completing\r\n\t\tif ( toHide.length && this.options.hide ) {\r\n\t\t\tthis._hide( toHide, this.options.hide, function() {\r\n\t\t\t\tthat._removeClass( eventData.oldTab.closest( \"li\" ),\r\n\t\t\t\t\t\"ui-tabs-active\", \"ui-state-active\" );\r\n\t\t\t\tshow();\r\n\t\t\t} );\r\n\t\t} else {\r\n\t\t\tthis._removeClass( eventData.oldTab.closest( \"li\" ),\r\n\t\t\t\t\"ui-tabs-active\", \"ui-state-active\" );\r\n\t\t\ttoHide.hide();\r\n\t\t\tshow();\r\n\t\t}\r\n\r\n\t\ttoHide.attr( \"aria-hidden\", \"true\" );\r\n\t\teventData.oldTab.attr( {\r\n\t\t\t\"aria-selected\": \"false\",\r\n\t\t\t\"aria-expanded\": \"false\"\r\n\t\t} );\r\n\r\n\t\t// If we're switching tabs, remove the old tab from the tab order.\r\n\t\t// If we're opening from collapsed state, remove the previous tab from the tab order.\r\n\t\t// If we're collapsing, then keep the collapsing tab in the tab order.\r\n\t\tif ( toShow.length && toHide.length ) {\r\n\t\t\teventData.oldTab.attr( \"tabIndex\", -1 );\r\n\t\t} else if ( toShow.length ) {\r\n\t\t\tthis.tabs.filter( function() {\r\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\r\n\t\t\t} )\r\n\t\t\t\t.attr( \"tabIndex\", -1 );\r\n\t\t}\r\n\r\n\t\ttoShow.attr( \"aria-hidden\", \"false\" );\r\n\t\teventData.newTab.attr( {\r\n\t\t\t\"aria-selected\": \"true\",\r\n\t\t\t\"aria-expanded\": \"true\",\r\n\t\t\ttabIndex: 0\r\n\t\t} );\r\n\t},\r\n\r\n\t_activate: function( index ) {\r\n\t\tvar anchor,\r\n\t\t\tactive = this._findActive( index );\r\n\r\n\t\t// Trying to activate the already active panel\r\n\t\tif ( active[ 0 ] === this.active[ 0 ] ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Trying to collapse, simulate a click on the current active header\r\n\t\tif ( !active.length ) {\r\n\t\t\tactive = this.active;\r\n\t\t}\r\n\r\n\t\tanchor = active.find( \".ui-tabs-anchor\" )[ 0 ];\r\n\t\tthis._eventHandler( {\r\n\t\t\ttarget: anchor,\r\n\t\t\tcurrentTarget: anchor,\r\n\t\t\tpreventDefault: $.noop\r\n\t\t} );\r\n\t},\r\n\r\n\t_findActive: function( index ) {\r\n\t\treturn index === false ? $() : this.tabs.eq( index );\r\n\t},\r\n\r\n\t_getIndex: function( index ) {\r\n\r\n\t\t// meta-function to give users option to provide a href string instead of a numerical index.\r\n\t\tif ( typeof index === \"string\" ) {\r\n\t\t\tindex = this.anchors.index( this.anchors.filter( \"[href$='\" +\r\n\t\t\t\tCSS.escape( index ) + \"']\" ) );\r\n\t\t}\r\n\r\n\t\treturn index;\r\n\t},\r\n\r\n\t_destroy: function() {\r\n\t\tif ( this.xhr ) {\r\n\t\t\tthis.xhr.abort();\r\n\t\t}\r\n\r\n\t\tthis.tablist\r\n\t\t\t.removeAttr( \"role\" )\r\n\t\t\t.off( this.eventNamespace );\r\n\r\n\t\tthis.anchors\r\n\t\t\t.removeAttr( \"role tabIndex\" )\r\n\t\t\t.removeUniqueId();\r\n\r\n\t\tthis.tabs.add( this.panels ).each( function() {\r\n\t\t\tif ( $.data( this, \"ui-tabs-destroy\" ) ) {\r\n\t\t\t\t$( this ).remove();\r\n\t\t\t} else {\r\n\t\t\t\t$( this ).removeAttr( \"role tabIndex \" +\r\n\t\t\t\t\t\"aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded\" );\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\tthis.tabs.each( function() {\r\n\t\t\tvar li = $( this ),\r\n\t\t\t\tprev = li.data( \"ui-tabs-aria-controls\" );\r\n\t\t\tif ( prev ) {\r\n\t\t\t\tli\r\n\t\t\t\t\t.attr( \"aria-controls\", prev )\r\n\t\t\t\t\t.removeData( \"ui-tabs-aria-controls\" );\r\n\t\t\t} else {\r\n\t\t\t\tli.removeAttr( \"aria-controls\" );\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\tthis.panels.show();\r\n\r\n\t\tif ( this.options.heightStyle !== \"content\" ) {\r\n\t\t\tthis.panels.css( \"height\", \"\" );\r\n\t\t}\r\n\t},\r\n\r\n\tenable: function( index ) {\r\n\t\tvar disabled = this.options.disabled;\r\n\t\tif ( disabled === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( index === undefined ) {\r\n\t\t\tdisabled = false;\r\n\t\t} else {\r\n\t\t\tindex = this._getIndex( index );\r\n\t\t\tif ( Array.isArray( disabled ) ) {\r\n\t\t\t\tdisabled = $.map( disabled, function( num ) {\r\n\t\t\t\t\treturn num !== index ? num : null;\r\n\t\t\t\t} );\r\n\t\t\t} else {\r\n\t\t\t\tdisabled = $.map( this.tabs, function( li, num ) {\r\n\t\t\t\t\treturn num !== index ? num : null;\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._setOptionDisabled( disabled );\r\n\t},\r\n\r\n\tdisable: function( index ) {\r\n\t\tvar disabled = this.options.disabled;\r\n\t\tif ( disabled === true ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( index === undefined ) {\r\n\t\t\tdisabled = true;\r\n\t\t} else {\r\n\t\t\tindex = this._getIndex( index );\r\n\t\t\tif ( $.inArray( index, disabled ) !== -1 ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif ( Array.isArray( disabled ) ) {\r\n\t\t\t\tdisabled = $.merge( [ index ], disabled ).sort();\r\n\t\t\t} else {\r\n\t\t\t\tdisabled = [ index ];\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._setOptionDisabled( disabled );\r\n\t},\r\n\r\n\tload: function( index, event ) {\r\n\t\tindex = this._getIndex( index );\r\n\t\tvar that = this,\r\n\t\t\ttab = this.tabs.eq( index ),\r\n\t\t\tanchor = tab.find( \".ui-tabs-anchor\" ),\r\n\t\t\tpanel = this._getPanelForTab( tab ),\r\n\t\t\teventData = {\r\n\t\t\t\ttab: tab,\r\n\t\t\t\tpanel: panel\r\n\t\t\t},\r\n\t\t\tcomplete = function( jqXHR, status ) {\r\n\t\t\t\tif ( status === \"abort\" ) {\r\n\t\t\t\t\tthat.panels.stop( false, true );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthat._removeClass( tab, \"ui-tabs-loading\" );\r\n\t\t\t\tpanel.removeAttr( \"aria-busy\" );\r\n\r\n\t\t\t\tif ( jqXHR === that.xhr ) {\r\n\t\t\t\t\tdelete that.xhr;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t// Not remote\r\n\t\tif ( this._isLocal( anchor[ 0 ] ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );\r\n\r\n\t\tif ( this.xhr.statusText !== \"canceled\" ) {\r\n\t\t\tthis._addClass( tab, \"ui-tabs-loading\" );\r\n\t\t\tpanel.attr( \"aria-busy\", \"true\" );\r\n\r\n\t\t\tthis.xhr\r\n\t\t\t\t.done( function( response, status, jqXHR ) {\r\n\t\t\t\t\tpanel.html( response );\r\n\t\t\t\t\tthat._trigger( \"load\", event, eventData );\r\n\r\n\t\t\t\t\tcomplete( jqXHR, status );\r\n\t\t\t\t} )\r\n\t\t\t\t.fail( function( jqXHR, status ) {\r\n\t\t\t\t\tcomplete( jqXHR, status );\r\n\t\t\t\t} );\r\n\t\t}\r\n\t},\r\n\r\n\t_ajaxSettings: function( anchor, event, eventData ) {\r\n\t\tvar that = this;\r\n\t\treturn {\r\n\t\t\turl: anchor.attr( \"href\" ),\r\n\t\t\tbeforeSend: function( jqXHR, settings ) {\r\n\t\t\t\treturn that._trigger( \"beforeLoad\", event,\r\n\t\t\t\t\t$.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) );\r\n\t\t\t}\r\n\t\t};\r\n\t},\r\n\r\n\t_getPanelForTab: function( tab ) {\r\n\t\tvar id = $( tab ).attr( \"aria-controls\" );\r\n\t\treturn this.element.find( \"#\" + CSS.escape( id ) );\r\n\t}\r\n} );\r\n\r\n// DEPRECATED\r\n// TODO: Switch return back to widget declaration at top of file when this is removed\r\nif ( $.uiBackCompat === true ) {\r\n\r\n\t// Backcompat for ui-tab class (now ui-tabs-tab)\r\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\r\n\t\t_processTabs: function() {\r\n\t\t\tthis._superApply( arguments );\r\n\t\t\tthis._addClass( this.tabs, \"ui-tab\" );\r\n\t\t}\r\n\t} );\r\n}\r\n\r\nvar widgetsTabs = $.ui.tabs;\r\n\r\n\r\n/*!\r\n * jQuery UI Tooltip 1.14.1\r\n * https://jqueryui.com\r\n *\r\n * Copyright OpenJS Foundation and other contributors\r\n * Released under the MIT license.\r\n * https://jquery.org/license\r\n */\r\n\r\n//>>label: Tooltip\r\n//>>group: Widgets\r\n//>>description: Shows additional information for any element on hover or focus.\r\n//>>docs: https://api.jqueryui.com/tooltip/\r\n//>>demos: https://jqueryui.com/tooltip/\r\n//>>css.structure: ../../themes/base/core.css\r\n//>>css.structure: ../../themes/base/tooltip.css\r\n//>>css.theme: ../../themes/base/theme.css\r\n\r\n\r\n$.widget( \"ui.tooltip\", {\r\n\tversion: \"1.14.1\",\r\n\toptions: {\r\n\t\tclasses: {\r\n\t\t\t\"ui-tooltip\": \"ui-corner-all ui-widget-shadow\"\r\n\t\t},\r\n\t\tcontent: function() {\r\n\t\t\tvar title = $( this ).attr( \"title\" );\r\n\r\n\t\t\t// Escape title, since we're going from an attribute to raw HTML\r\n\t\t\treturn $( \"<a>\" ).text( title ).html();\r\n\t\t},\r\n\t\thide: true,\r\n\r\n\t\t// Disabled elements have inconsistent behavior across browsers (#8661)\r\n\t\titems: \"[title]:not([disabled])\",\r\n\t\tposition: {\r\n\t\t\tmy: \"left top+15\",\r\n\t\t\tat: \"left bottom\",\r\n\t\t\tcollision: \"flipfit flip\"\r\n\t\t},\r\n\t\tshow: true,\r\n\t\ttrack: false,\r\n\r\n\t\t// Callbacks\r\n\t\tclose: null,\r\n\t\topen: null\r\n\t},\r\n\r\n\t_addDescribedBy: function( elem, id ) {\r\n\t\tvar describedby = ( elem.attr( \"aria-describedby\" ) || \"\" ).split( /\\s+/ );\r\n\t\tdescribedby.push( id );\r\n\t\telem\r\n\t\t\t.data( \"ui-tooltip-id\", id )\r\n\t\t\t.attr( \"aria-describedby\", String.prototype.trim.call( describedby.join( \" \" ) ) );\r\n\t},\r\n\r\n\t_removeDescribedBy: function( elem ) {\r\n\t\tvar id = elem.data( \"ui-tooltip-id\" ),\r\n\t\t\tdescribedby = ( elem.attr( \"aria-describedby\" ) || \"\" ).split( /\\s+/ ),\r\n\t\t\tindex = $.inArray( id, describedby );\r\n\r\n\t\tif ( index !== -1 ) {\r\n\t\t\tdescribedby.splice( index, 1 );\r\n\t\t}\r\n\r\n\t\telem.removeData( \"ui-tooltip-id\" );\r\n\t\tdescribedby = String.prototype.trim.call( describedby.join( \" \" ) );\r\n\t\tif ( describedby ) {\r\n\t\t\telem.attr( \"aria-describedby\", describedby );\r\n\t\t} else {\r\n\t\t\telem.removeAttr( \"aria-describedby\" );\r\n\t\t}\r\n\t},\r\n\r\n\t_create: function() {\r\n\t\tthis._on( {\r\n\t\t\tmouseover: \"open\",\r\n\t\t\tfocusin: \"open\"\r\n\t\t} );\r\n\r\n\t\t// IDs of generated tooltips, needed for destroy\r\n\t\tthis.tooltips = {};\r\n\r\n\t\t// IDs of parent tooltips where we removed the title attribute\r\n\t\tthis.parents = {};\r\n\r\n\t\t// Append the aria-live region so tooltips announce correctly\r\n\t\tthis.liveRegion = $( \"<div>\" )\r\n\t\t\t.attr( {\r\n\t\t\t\trole: \"log\",\r\n\t\t\t\t\"aria-live\": \"assertive\",\r\n\t\t\t\t\"aria-relevant\": \"additions\"\r\n\t\t\t} )\r\n\t\t\t.appendTo( this.document[ 0 ].body );\r\n\t\tthis._addClass( this.liveRegion, null, \"ui-helper-hidden-accessible\" );\r\n\r\n\t\tthis.disabledTitles = $( [] );\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\t\tvar that = this;\r\n\r\n\t\tthis._super( key, value );\r\n\r\n\t\tif ( key === \"content\" ) {\r\n\t\t\t$.each( this.tooltips, function( id, tooltipData ) {\r\n\t\t\t\tthat._updateContent( tooltipData.element );\r\n\t\t\t} );\r\n\t\t}\r\n\t},\r\n\r\n\t_setOptionDisabled: function( value ) {\r\n\t\tthis[ value ? \"_disable\" : \"_enable\" ]();\r\n\t},\r\n\r\n\t_disable: function() {\r\n\t\tvar that = this;\r\n\r\n\t\t// Close open tooltips\r\n\t\t$.each( this.tooltips, function( id, tooltipData ) {\r\n\t\t\tvar event = $.Event( \"blur\" );\r\n\t\t\tevent.target = event.currentTarget = tooltipData.element[ 0 ];\r\n\t\t\tthat.close( event, true );\r\n\t\t} );\r\n\r\n\t\t// Remove title attributes to prevent native tooltips\r\n\t\tthis.disabledTitles = this.disabledTitles.add(\r\n\t\t\tthis.element.find( this.options.items ).addBack()\r\n\t\t\t\t.filter( function() {\r\n\t\t\t\t\tvar element = $( this );\r\n\t\t\t\t\tif ( element.is( \"[title]\" ) ) {\r\n\t\t\t\t\t\treturn element\r\n\t\t\t\t\t\t\t.data( \"ui-tooltip-title\", element.attr( \"title\" ) )\r\n\t\t\t\t\t\t\t.removeAttr( \"title\" );\r\n\t\t\t\t\t}\r\n\t\t\t\t} )\r\n\t\t);\r\n\t},\r\n\r\n\t_enable: function() {\r\n\r\n\t\t// restore title attributes\r\n\t\tthis.disabledTitles.each( function() {\r\n\t\t\tvar element = $( this );\r\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\r\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\r\n\t\t\t}\r\n\t\t} );\r\n\t\tthis.disabledTitles = $( [] );\r\n\t},\r\n\r\n\topen: function( event ) {\r\n\t\tvar that = this,\r\n\t\t\ttarget = $( event ? event.target : this.element )\r\n\r\n\t\t\t\t// we need closest here due to mouseover bubbling,\r\n\t\t\t\t// but always pointing at the same event target\r\n\t\t\t\t.closest( this.options.items );\r\n\r\n\t\t// No element to show a tooltip for or the tooltip is already open\r\n\t\tif ( !target.length || target.data( \"ui-tooltip-id\" ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( target.attr( \"title\" ) ) {\r\n\t\t\ttarget.data( \"ui-tooltip-title\", target.attr( \"title\" ) );\r\n\t\t}\r\n\r\n\t\ttarget.data( \"ui-tooltip-open\", true );\r\n\r\n\t\t// Kill parent tooltips, custom or native, for hover\r\n\t\tif ( event && event.type === \"mouseover\" ) {\r\n\t\t\ttarget.parents().each( function() {\r\n\t\t\t\tvar parent = $( this ),\r\n\t\t\t\t\tblurEvent;\r\n\t\t\t\tif ( parent.data( \"ui-tooltip-open\" ) ) {\r\n\t\t\t\t\tblurEvent = $.Event( \"blur\" );\r\n\t\t\t\t\tblurEvent.target = blurEvent.currentTarget = this;\r\n\t\t\t\t\tthat.close( blurEvent, true );\r\n\t\t\t\t}\r\n\t\t\t\tif ( parent.attr( \"title\" ) ) {\r\n\t\t\t\t\tparent.uniqueId();\r\n\t\t\t\t\tthat.parents[ this.id ] = {\r\n\t\t\t\t\t\telement: this,\r\n\t\t\t\t\t\ttitle: parent.attr( \"title\" )\r\n\t\t\t\t\t};\r\n\t\t\t\t\tparent.attr( \"title\", \"\" );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\tthis._registerCloseHandlers( event, target );\r\n\t\tthis._updateContent( target, event );\r\n\t},\r\n\r\n\t_updateContent: function( target, event ) {\r\n\t\tvar content,\r\n\t\t\tcontentOption = this.options.content,\r\n\t\t\tthat = this,\r\n\t\t\teventType = event ? event.type : null;\r\n\r\n\t\tif ( typeof contentOption === \"string\" || contentOption.nodeType ||\r\n\t\t\t\tcontentOption.jquery ) {\r\n\t\t\treturn this._open( event, target, contentOption );\r\n\t\t}\r\n\r\n\t\tcontent = contentOption.call( target[ 0 ], function( response ) {\r\n\r\n\t\t\t// Ignore async response if tooltip was closed already\r\n\t\t\tif ( !target.data( \"ui-tooltip-open\" ) ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// JQuery creates a special event for focusin when it doesn't\r\n\t\t\t// exist natively. To improve performance, the native event\r\n\t\t\t// object is reused and the type is changed. Therefore, we can't\r\n\t\t\t// rely on the type being correct after the event finished\r\n\t\t\t// bubbling, so we set it back to the previous value. (#8740)\r\n\t\t\tif ( event ) {\r\n\t\t\t\tevent.type = eventType;\r\n\t\t\t}\r\n\t\t\tthat._open( event, target, response );\r\n\t\t} );\r\n\t\tif ( content ) {\r\n\t\t\tthis._open( event, target, content );\r\n\t\t}\r\n\t},\r\n\r\n\t_open: function( event, target, content ) {\r\n\t\tvar tooltipData, tooltip, delayedShow, a11yContent,\r\n\t\t\tpositionOption = $.extend( {}, this.options.position );\r\n\r\n\t\tif ( !content ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Content can be updated multiple times. If the tooltip already\r\n\t\t// exists, then just update the content and bail.\r\n\t\ttooltipData = this._find( target );\r\n\t\tif ( tooltipData ) {\r\n\t\t\ttooltipData.tooltip.find( \".ui-tooltip-content\" ).html( content );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If we have a title, clear it to prevent the native tooltip\r\n\t\t// we have to check first to avoid defining a title if none exists\r\n\t\t// (we don't want to cause an element to start matching [title])\r\n\t\t//\r\n\t\t// We use removeAttr only for key events, to allow IE to export the correct\r\n\t\t// accessible attributes. For mouse events, set to empty string to avoid\r\n\t\t// native tooltip showing up (happens only when removing inside mouseover).\r\n\t\tif ( target.is( \"[title]\" ) ) {\r\n\t\t\tif ( event && event.type === \"mouseover\" ) {\r\n\t\t\t\ttarget.attr( \"title\", \"\" );\r\n\t\t\t} else {\r\n\t\t\t\ttarget.removeAttr( \"title\" );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttooltipData = this._tooltip( target );\r\n\t\ttooltip = tooltipData.tooltip;\r\n\t\tthis._addDescribedBy( target, tooltip.attr( \"id\" ) );\r\n\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\r\n\r\n\t\t// Support: Voiceover on OS X, JAWS on IE <= 9\r\n\t\t// JAWS announces deletions even when aria-relevant=\"additions\"\r\n\t\t// Voiceover will sometimes re-read the entire log region's contents from the beginning\r\n\t\tthis.liveRegion.children().hide();\r\n\t\ta11yContent = $( \"<div>\" ).html( tooltip.find( \".ui-tooltip-content\" ).html() );\r\n\t\ta11yContent.removeAttr( \"name\" ).find( \"[name]\" ).removeAttr( \"name\" );\r\n\t\ta11yContent.removeAttr( \"id\" ).find( \"[id]\" ).removeAttr( \"id\" );\r\n\t\ta11yContent.appendTo( this.liveRegion );\r\n\r\n\t\tfunction position( event ) {\r\n\t\t\tpositionOption.of = event;\r\n\t\t\tif ( tooltip.is( \":hidden\" ) ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\ttooltip.position( positionOption );\r\n\t\t}\r\n\t\tif ( this.options.track && event && /^mouse/.test( event.type ) ) {\r\n\t\t\tthis._on( this.document, {\r\n\t\t\t\tmousemove: position\r\n\t\t\t} );\r\n\r\n\t\t\t// trigger once to override element-relative positioning\r\n\t\t\tposition( event );\r\n\t\t} else {\r\n\t\t\ttooltip.position( $.extend( {\r\n\t\t\t\tof: target\r\n\t\t\t}, this.options.position ) );\r\n\t\t}\r\n\r\n\t\ttooltip.hide();\r\n\r\n\t\tthis._show( tooltip, this.options.show );\r\n\r\n\t\t// Handle tracking tooltips that are shown with a delay (#8644). As soon\r\n\t\t// as the tooltip is visible, position the tooltip using the most recent\r\n\t\t// event.\r\n\t\t// Adds the check to add the timers only when both delay and track options are set (#14682)\r\n\t\tif ( this.options.track && this.options.show && this.options.show.delay ) {\r\n\t\t\tdelayedShow = this.delayedShow = setInterval( function() {\r\n\t\t\t\tif ( tooltip.is( \":visible\" ) ) {\r\n\t\t\t\t\tposition( positionOption.of );\r\n\t\t\t\t\tclearInterval( delayedShow );\r\n\t\t\t\t}\r\n\t\t\t}, 13 );\r\n\t\t}\r\n\r\n\t\tthis._trigger( \"open\", event, { tooltip: tooltip } );\r\n\t},\r\n\r\n\t_registerCloseHandlers: function( event, target ) {\r\n\t\tvar events = {\r\n\t\t\tkeyup: function( event ) {\r\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.ESCAPE ) {\r\n\t\t\t\t\tvar fakeEvent = $.Event( event );\r\n\t\t\t\t\tfakeEvent.currentTarget = target[ 0 ];\r\n\t\t\t\t\tthis.close( fakeEvent, true );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Only bind remove handler for delegated targets. Non-delegated\r\n\t\t// tooltips will handle this in destroy.\r\n\t\tif ( target[ 0 ] !== this.element[ 0 ] ) {\r\n\t\t\tevents.remove = function() {\r\n\t\t\t\tvar targetElement = this._find( target );\r\n\t\t\t\tif ( targetElement ) {\r\n\t\t\t\t\tthis._removeTooltip( targetElement.tooltip );\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif ( !event || event.type === \"mouseover\" ) {\r\n\t\t\tevents.mouseleave = \"close\";\r\n\t\t}\r\n\t\tif ( !event || event.type === \"focusin\" ) {\r\n\t\t\tevents.focusout = \"close\";\r\n\t\t}\r\n\t\tthis._on( true, target, events );\r\n\t},\r\n\r\n\tclose: function( event ) {\r\n\t\tvar tooltip,\r\n\t\t\tthat = this,\r\n\t\t\ttarget = $( event ? event.currentTarget : this.element ),\r\n\t\t\ttooltipData = this._find( target );\r\n\r\n\t\t// The tooltip may already be closed\r\n\t\tif ( !tooltipData ) {\r\n\r\n\t\t\t// We set ui-tooltip-open immediately upon open (in open()), but only set the\r\n\t\t\t// additional data once there's actually content to show (in _open()). So even if the\r\n\t\t\t// tooltip doesn't have full data, we always remove ui-tooltip-open in case we're in\r\n\t\t\t// the period between open() and _open().\r\n\t\t\ttarget.removeData( \"ui-tooltip-open\" );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttooltip = tooltipData.tooltip;\r\n\r\n\t\t// Disabling closes the tooltip, so we need to track when we're closing\r\n\t\t// to avoid an infinite loop in case the tooltip becomes disabled on close\r\n\t\tif ( tooltipData.closing ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Clear the interval for delayed tracking tooltips\r\n\t\tclearInterval( this.delayedShow );\r\n\r\n\t\t// Only set title if we had one before (see comment in _open())\r\n\t\t// If the title attribute has changed since open(), don't restore\r\n\t\tif ( target.data( \"ui-tooltip-title\" ) && !target.attr( \"title\" ) ) {\r\n\t\t\ttarget.attr( \"title\", target.data( \"ui-tooltip-title\" ) );\r\n\t\t}\r\n\r\n\t\tthis._removeDescribedBy( target );\r\n\r\n\t\ttooltipData.hiding = true;\r\n\t\ttooltip.stop( true );\r\n\t\tthis._hide( tooltip, this.options.hide, function() {\r\n\t\t\tthat._removeTooltip( $( this ) );\r\n\t\t} );\r\n\r\n\t\ttarget.removeData( \"ui-tooltip-open\" );\r\n\t\tthis._off( target, \"mouseleave focusout keyup\" );\r\n\r\n\t\t// Remove 'remove' binding only on delegated targets\r\n\t\tif ( target[ 0 ] !== this.element[ 0 ] ) {\r\n\t\t\tthis._off( target, \"remove\" );\r\n\t\t}\r\n\t\tthis._off( this.document, \"mousemove\" );\r\n\r\n\t\tif ( event && event.type === \"mouseleave\" ) {\r\n\t\t\t$.each( this.parents, function( id, parent ) {\r\n\t\t\t\t$( parent.element ).attr( \"title\", parent.title );\r\n\t\t\t\tdelete that.parents[ id ];\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\ttooltipData.closing = true;\r\n\t\tthis._trigger( \"close\", event, { tooltip: tooltip } );\r\n\t\tif ( !tooltipData.hiding ) {\r\n\t\t\ttooltipData.closing = false;\r\n\t\t}\r\n\t},\r\n\r\n\t_tooltip: function( element ) {\r\n\t\tvar tooltip = $( \"<div>\" ).attr( \"role\", \"tooltip\" ),\r\n\t\t\tcontent = $( \"<div>\" ).appendTo( tooltip ),\r\n\t\t\tid = tooltip.uniqueId().attr( \"id\" );\r\n\r\n\t\tthis._addClass( content, \"ui-tooltip-content\" );\r\n\t\tthis._addClass( tooltip, \"ui-tooltip\", \"ui-widget ui-widget-content\" );\r\n\r\n\t\ttooltip.appendTo( this._appendTo( element ) );\r\n\r\n\t\treturn this.tooltips[ id ] = {\r\n\t\t\telement: element,\r\n\t\t\ttooltip: tooltip\r\n\t\t};\r\n\t},\r\n\r\n\t_find: function( target ) {\r\n\t\tvar id = target.data( \"ui-tooltip-id\" );\r\n\t\treturn id ? this.tooltips[ id ] : null;\r\n\t},\r\n\r\n\t_removeTooltip: function( tooltip ) {\r\n\r\n\t\t// Clear the interval for delayed tracking tooltips\r\n\t\tclearInterval( this.delayedShow );\r\n\r\n\t\ttooltip.remove();\r\n\t\tdelete this.tooltips[ tooltip.attr( \"id\" ) ];\r\n\t},\r\n\r\n\t_appendTo: function( target ) {\r\n\t\tvar element = target.closest( \".ui-front, dialog\" );\r\n\r\n\t\tif ( !element.length ) {\r\n\t\t\telement = this.document[ 0 ].body;\r\n\t\t}\r\n\r\n\t\treturn element;\r\n\t},\r\n\r\n\t_destroy: function() {\r\n\t\tvar that = this;\r\n\r\n\t\t// Close open tooltips\r\n\t\t$.each( this.tooltips, function( id, tooltipData ) {\r\n\r\n\t\t\t// Delegate to close method to handle common cleanup\r\n\t\t\tvar event = $.Event( \"blur\" ),\r\n\t\t\t\telement = tooltipData.element;\r\n\t\t\tevent.target = event.currentTarget = element[ 0 ];\r\n\t\t\tthat.close( event, true );\r\n\r\n\t\t\t// Remove immediately; destroying an open tooltip doesn't use the\r\n\t\t\t// hide animation\r\n\t\t\t$( \"#\" + id ).remove();\r\n\r\n\t\t\t// Restore the title\r\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\r\n\r\n\t\t\t\t// If the title attribute has changed since open(), don't restore\r\n\t\t\t\tif ( !element.attr( \"title\" ) ) {\r\n\t\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\r\n\t\t\t\t}\r\n\t\t\t\telement.removeData( \"ui-tooltip-title\" );\r\n\t\t\t}\r\n\t\t} );\r\n\t\tthis.liveRegion.remove();\r\n\t}\r\n} );\r\n\r\n// DEPRECATED\r\n// TODO: Switch return back to widget declaration at top of file when this is removed\r\nif ( $.uiBackCompat === true ) {\r\n\r\n\t// Backcompat for tooltipClass option\r\n\t$.widget( \"ui.tooltip\", $.ui.tooltip, {\r\n\t\toptions: {\r\n\t\t\ttooltipClass: null\r\n\t\t},\r\n\t\t_tooltip: function() {\r\n\t\t\tvar tooltipData = this._superApply( arguments );\r\n\t\t\tif ( this.options.tooltipClass ) {\r\n\t\t\t\ttooltipData.tooltip.addClass( this.options.tooltipClass );\r\n\t\t\t}\r\n\t\t\treturn tooltipData;\r\n\t\t}\r\n\t} );\r\n}\r\n\r\nvar widgetsTooltip = $.ui.tooltip;\r\n\r\n\r\n\r\n\r\n} );\n","define('drops/calendar/calendarItems',[\r\n    'jquery-ui',\r\n    'underscore',\r\n    'luxon',\r\n    'when',\r\n    'lq/style',\r\n    'drops/calendar/calendarParameter',\r\n    'lq/onlongpress'\r\n], function (ui, _, luxon, when, Style, calendarParameter, OnLongPress) {\r\n    'use strict';\r\n\r\n    const { DateTime, Interval } = luxon;\r\n\r\n    const minutesInAday = 1440;\r\n\r\n    var calendarItemsCollide = function (item, otherItem) {\r\n        return item.data.endOfItem > otherItem.data.startOfItem\r\n            && item.data.startOfItem < otherItem.data.endOfItem;\r\n    };\r\n\r\n    var getNumberOfAvailableColumns = function (item, columns, columnIndexOfItem) {\r\n        var availableColumns = 1;\r\n\r\n        for (var i = columnIndexOfItem + 1; i < columns.length; i++) {\r\n            var column = columns[i];\r\n\r\n            for (var j = 0; j < column.length; j++) {\r\n                var otherItem = column[j];\r\n\r\n                if (calendarItemsCollide(item, otherItem))\r\n                    return availableColumns;\r\n            }\r\n\r\n            availableColumns++;\r\n        }\r\n\r\n        return availableColumns;\r\n    };\r\n\r\n    var layoutGroupOfCalendarItems = function (columns) {\r\n        for (var i = 0; i < columns.length; i++) {\r\n            var column = columns[i];\r\n\r\n            for (var j = 0; j < column.length; j++) {\r\n                var item = column[j];\r\n                var colspan = getNumberOfAvailableColumns(item, columns, i);\r\n\r\n                item.$element.css({\r\n                    'left': ((i / columns.length) * 100) + '%',\r\n                    'width': ((100 / columns.length) * colspan) + '%'\r\n                });\r\n            }\r\n        }\r\n    };\r\n\r\n    var startNewGroupOfCalendarItems = function (lastEncounteredItem, nextItem) {\r\n        return !!lastEncounteredItem && lastEncounteredItem.data.endOfItem < nextItem.data.startOfItem;\r\n    };\r\n\r\n    var sortCalendarItems = function (items) {\r\n        return items.sort(function (firstItem, secondItem) {\r\n            if (firstItem.data.startOfItem < secondItem.data.startOfItem) return -1;\r\n            if (firstItem.data.startOfItem > secondItem.data.startOfItem) return 1;\r\n            if (firstItem.data.endOfItem < secondItem.data.endOfItem) return -1;\r\n            if (firstItem.data.endOfItem > secondItem.data.endOfItem) return 1;\r\n            return 0;\r\n        });\r\n    };\r\n\r\n    var tryAddingItemToExistingColumn = function (columns, item) {\r\n        for (var i = 0; i < columns.length; i++) {\r\n            var column = columns[i];\r\n\r\n            if (!calendarItemsCollide(_.last(column), item)) {\r\n                column.push(item);\r\n                return true;\r\n            }\r\n        }\r\n\r\n        return false;\r\n    };\r\n\r\n    var layoutOverlappingCalendarItems = function (items) {\r\n        var columns = [];\r\n        var lastEncounteredItem = null;\r\n\r\n        _.each(sortCalendarItems(items), function (item) {\r\n            if (startNewGroupOfCalendarItems(lastEncounteredItem, item)) {\r\n                layoutGroupOfCalendarItems(columns);\r\n\r\n                columns = [];\r\n                lastEncounteredItem = null;\r\n            }\r\n\r\n            if (!tryAddingItemToExistingColumn(columns, item))\r\n                columns.push([item]);\r\n\r\n            if (lastEncounteredItem === null || item.data.endOfItem > lastEncounteredItem.data.endOfItem)\r\n                lastEncounteredItem = item;\r\n        });\r\n\r\n        if (columns.length > 0)\r\n            layoutGroupOfCalendarItems(columns);\r\n    };\r\n\r\n    var handleItemSelection = function (calendarView, drop) {\r\n        new OnLongPress().applyLongPressOnElement(drop.$element, drop, null,\r\n            function () {\r\n                if (drop !== calendarView.selectedItem) {\r\n                    if (drop.data.styles.selected && !drop.data.styles.selected.enabled) {\r\n                        if (calendarView.selectedItem)\r\n                            Style.renderStyle(calendarView.selectedItem.data.styles.normal, calendarView.selectedItem);\r\n                        Style.renderStyle(drop.data.styles.selected, drop);\r\n                    }\r\n\r\n                    calendarView.selectedItem = drop;\r\n                }\r\n\r\n                drop.triggerEventIfEnabled('clicked');\r\n            });\r\n\r\n        if (drop.data.eventing.clicked.enabled) {\r\n            drop.$element.addClass('clickable');\r\n        }\r\n    };\r\n\r\n    var makeResizableAndDraggable = function (drop, drops, calendarView, onlyDraggable, isMultiweek, direction) {\r\n        if (!drop.isEventEnabled('onUpdate')) return;\r\n\r\n        var timeslotSize = calendarView.data.timeslotSize; // minutes\r\n        var timeslotHeight = getTimeslotHeight(calendarView);\r\n\r\n        var snapInterval = drop.data.resizeSnapInterval;\r\n        if (!snapInterval) snapInterval = timeslotSize;\r\n        var snapHeight = (timeslotHeight / timeslotSize) * snapInterval;\r\n\r\n        var weekdayWidth = drop.data.$target.parent().outerWidth();\r\n        var itemWidth = drop.data.$target.outerWidth();\r\n        var elementPadding = (parseFloat(drop.$element.css('padding-top')) || 0) +\r\n            (parseFloat(drop.$element.css('padding-bottom')) || 0);\r\n        var elementBorder = (parseFloat(drop.$element.css('border-top-width')) || 0) +\r\n            (parseFloat(drop.$element.css('border-bottom-width')) || 0);\r\n\r\n        var onStart = function (event, ui) {\r\n            setOtherItemsOpacity(0.6);\r\n            var group = getGroup().groupMembers;\r\n            _.each(group, function (drop) {\r\n                drop.data.leftOffset = parseFloat(drop.$element.css(\"left\"));\r\n                drop.data.prevState = {\r\n                    top: ui.position.top,\r\n                    left: ui.position.left,\r\n                    height: parseFloat(drop.$element.css(\"height\")),\r\n                    width: parseFloat(drop.$element.css(\"width\"))\r\n                };\r\n            });\r\n        }\r\n\r\n        var getGroup = function () {\r\n            for (var i = 0; i < calendarView.data.calendarItemGroups.length; i++) {\r\n                var group = calendarView.data.calendarItemGroups[i];\r\n                if (group.groupMembers[0].data.row[drop.data.idOutput] === drop.data.row[drop.data.idOutput]) {\r\n                    return group;\r\n                }\r\n            }\r\n        }\r\n\r\n        var onStop = function (event, ui) {\r\n            snapDropTopAndHeight();\r\n\r\n            var group = getGroup().groupMembers;\r\n\r\n            var earlyDrop = group[0];\r\n            var lateDrop = group[group.length - 1];\r\n\r\n            var earlyTimeDate = getItemTimeData1(earlyDrop);\r\n            var lateTimeData = getItemTimeData1(lateDrop);\r\n\r\n            var origStatMomnet = calendarView.getDatetimeFromRow(earlyDrop.data.row, calendarView.data.startOutput);\r\n            var origEndMomnet = calendarView.getDatetimeFromRow(lateDrop.data.row, calendarView.data.endOutput);\r\n\r\n            var prveEarlyTimeDate = origStatMomnet.hour * 60 + origStatMomnet.minute;\r\n            var prveLateTimeData = origEndMomnet.hour * 60 + origEndMomnet.minute;\r\n\r\n            var startDateObj = calendarParameter.convert(origStatMomnet);\r\n            var endDateObj = calendarParameter.convert(origEndMomnet);\r\n\r\n            if (event.type.includes('drag')) {\r\n                var currentDateMoment = origStatMomnet.startOf('day');\r\n                var currentDateMomente = origEndMomnet.startOf('day');\r\n                if (calendarView.type == \"CalendarWeekView\") {\r\n                    currentDateMoment = getCurrentPositionDateMoment(earlyDrop.$element.css('left'), earlyDrop, true);\r\n                    currentDateMomente = getCurrentPositionDateMoment(lateDrop.$element.css('left'), lateDrop, true);\r\n                }\r\n\r\n                var startTime = earlyTimeDate.start;\r\n                var startMoment = currentDateMoment.plus({ minutes: startTime });\r\n\r\n                var endTime = lateTimeData.end === minutesInAday ? lateTimeData.end - 1 : lateTimeData.end; // Have to subtract one minute otherweise it will be interpreted as start of the NEXT day\r\n                var endMoment = currentDateMomente.plus({ minutes: endTime });\r\n\r\n                startDateObj = calendarParameter.convert(startMoment);\r\n                endDateObj = calendarParameter.convert(endMoment);\r\n                setOtherItemsOpacity(1);\r\n            } else if (earlyTimeDate.start >= 0\r\n                && earlyTimeDate.start !== prveEarlyTimeDate\r\n                && (calendarView.getStartOfCurrentWeek && !calendarView.getStartOfCurrentWeek() > origStatMomnet || calendarView.type === \"CalendarDayView\")) { // true if draging the top\r\n                var dateTime = origStatMomnet.startOf('day').plus({ minutes: earlyTimeDate.start });\r\n                startDateObj = calendarParameter.convert(dateTime);\r\n                setOtherItemsOpacity(1);\r\n            } else if (lateTimeData.end !== prveLateTimeData) { // true if draging the bottom\r\n                var dateTime = origEndMomnet.startOf('day').plus({ minutes: lateTimeData.end === minutesInAday ? lateTimeData.end - 1 : lateTimeData.end }); // Have to subtract one minute otherweise it will be interpreted as start of the NEXT day\r\n                endDateObj = calendarParameter.convert(dateTime);\r\n                setOtherItemsOpacity(1);\r\n            }\r\n\r\n            var id = drop.data.row[drop.data.idOutput];\r\n            const params = drop.data.updateParams;\r\n            if (params) {\r\n                if (params.newStart) calendarView.piping.parameters.locals.setValue(params.newStart, startDateObj);\r\n                if (params.newEnd) calendarView.piping.parameters.locals.setValue(params.newEnd, endDateObj);\r\n                if (params.id) calendarView.piping.parameters.locals.setValue(params.id, id);\r\n            }\r\n            drop.triggerEventIfEnabled('onUpdate');\r\n        }\r\n\r\n        var checkForOverLapping = function (actDrop, top, left, height) {\r\n            var pos3 = actDrop.$element.css([\"top\", \"height\"]);\r\n            if (height) {\r\n                pos3.height = height;\r\n            }\r\n            var group = getGroup().groupMembers;\r\n            var a = getCurrentPositionDateMoment(parseInt(left), actDrop)\r\n            var sameDayDrops = drops.filter(function (_drop) {\r\n                if (_drop == actDrop || group.includes(_drop)) return false;\r\n                return _drop.data.startOfDay.startOf('day').equals(a.startOf('day'));\r\n            });\r\n\r\n            return _.some(sameDayDrops, function (sameDayDrop) {\r\n                return doItemsOverlap(sameDayDrop.$element, {top: group.length === 1 ? parseInt(top) : parseInt(pos3.top), height: parseInt(pos3.height)});\r\n            });\r\n        }\r\n\r\n        var doItemsOverlap = function ($item1, topHeight) {\r\n            var pos1 = $item1.css([\"top\", \"height\"]);\r\n            var pos2 = topHeight;\r\n            pos1.start = round(parseFloat(pos1.top), snapHeight);\r\n            pos1.end = round(pos1.start + parseFloat(pos1.height), snapHeight);\r\n            pos2.start = round(parseFloat(pos2.top), snapHeight);\r\n            pos2.end = round(pos2.start + parseFloat(pos2.height), snapHeight);\r\n            return ((pos1.start > pos2.start && pos1.start < pos2.end) || (pos1.end > pos2.start && pos1.end < pos2.end)\r\n                || (pos2.start > pos1.start && pos2.start < pos1.end) || (pos2.end > pos1.start && pos2.end < pos1.end))\r\n                || (pos2.start === pos1.start && pos2.end === pos1.end);\r\n        }\r\n\r\n        var checkForOutOfWeek = function (dropic, top, left) {\r\n            if (!calendarView.getStartOfCurrentWeek) return false;\r\n            var isStartOut =  getCurrentPositionDateMoment(left, dropic).diff(calendarView.getStartOfCurrentWeek());\r\n            var isEndOut = calendarView.getEndOfCurrentWeek().diff(getCurrentPositionDateMoment(left, dropic));\r\n            return  isStartOut < 0 || isEndOut < 0;\r\n        }\r\n\r\n        if (!onlyDraggable) {\r\n            if (drop.$element.is('.ui-resizable')) {\r\n                direction = drop.$element\r\n                    .resizable( \"option\", \"handles\" ) + ', ' + direction;\r\n                drop.$element\r\n                    .resizable(\"destroy\");\r\n            }\r\n            drop.$element.resizable({\r\n                handles: direction,\r\n                grid: [0, snapHeight],\r\n                containment: '.weekdays',\r\n                start: onStart,\r\n                stop: onStop,\r\n                resize: function (event, ui) {\r\n                    ui.position.left = getRoundedToWeekdayLeft(ui.position.left) + drop.data.leftOffset;\r\n                    ui.size.width = drop.data.prevState.width;\r\n                    ui.position.top = round(ui.position.top, snapHeight);\r\n                    ui.size.height = round(ui.size.height, snapHeight);\r\n\r\n                    if (calendarView.data.savePosition && !drop.data.allowItemOverlap && checkForOverLapping(drop, ui.position.top, ui.position.left, ui.size.height)) {\r\n                        ui.position.top = calendarView.data.savePosition.uiTop;\r\n                        ui.size.height = calendarView.data.savePosition.uiHeight;\r\n                    }\r\n\r\n                    ui.size.height = ui.size.height - (elementPadding + elementBorder); // need to adjust height, otherwise calendaritem grows\r\n\r\n                    calendarView.data.savePosition = {\r\n                        uiTop: ui.position.top,\r\n                        uiHeight: ui.size.height\r\n                    };\r\n                }\r\n            });\r\n        }\r\n\r\n        if (!isMultiweek) {\r\n            drop.$element.draggable({\r\n                axis: calendarView.type == \"CalendarWeekView\" ? \"x, y\" : \"y\",\r\n                grid: [weekdayWidth, snapHeight],\r\n                containment: '.weekdays',\r\n                scroll: true,\r\n                scrollSensitivity: 100,\r\n                scrollSpeed: 5,\r\n                start: onStart,\r\n                stop: onStop,\r\n                drag: function (event, ui) {\r\n                    var gMembers = getGroup().groupMembers;\r\n                    if (calendarView.type !== \"CalendarWeekView\") {\r\n                        drop.$element.draggable({axis: 'y'});\r\n                    } else if (gMembers.length > 1) {\r\n                        drop.$element.draggable({axis: 'x'});\r\n                    } else {\r\n                        drop.$element.draggable({axis: 'x, y'});\r\n                    }\r\n                    ui.position.left = getRoundedToWeekdayLeft(ui.position.left);\r\n                    ui.position.top = round(ui.position.top, snapHeight);\r\n                    drop.$element.css(\"height\", getRoundedHeight());\r\n\r\n                    var overLappings = [];\r\n                    var hasOverlap = false;\r\n                    if (!drop.data.allowItemOverlap) {\r\n                        for (var i = 0; i < gMembers.length; i++) {\r\n                            var element = gMembers[i];\r\n                            var outOfWeek = checkForOutOfWeek(element, ui.position.top, ui.position.left );\r\n                            var overLapping = checkForOverLapping(element, ui.position.top, ui.position.left);\r\n                            overLappings.push(overLapping);\r\n                            if (overLapping || outOfWeek) {\r\n                                hasOverlap = true;\r\n                                break;\r\n                            }\r\n                        }\r\n                    } else {\r\n                        for (var i = 0; i < gMembers.length; i++) {\r\n                            var element = gMembers[i];\r\n                            var outOfWeek = checkForOutOfWeek(element, ui.position.top, ui.position.left );\r\n                            if (outOfWeek) {\r\n                                hasOverlap = true;\r\n                                break;\r\n                            }\r\n                        }\r\n                    }\r\n\r\n                    if (calendarView.data.savePosition && hasOverlap) {\r\n                        ui.position.top = calendarView.data.savePosition.uiTop;\r\n                        ui.position.left = calendarView.data.savePosition.uiLeft;\r\n                    }\r\n\r\n                    calendarView.data.savePosition = {\r\n                        uiTop: ui.position.top,\r\n                        uiLeft: ui.position.left\r\n                    };\r\n\r\n                    _.each(gMembers, function (d) {\r\n                        var pos1 = d.$element.css([\"top\", \"left\"]);\r\n                        d.$element.css({\r\n                            top: pos1.top + ui.position.top,\r\n                            left: ui.position.left,\r\n                            width: itemWidth\r\n                        })\r\n                    });\r\n                }\r\n            });\r\n        }\r\n\r\n        var setOtherItemsOpacity = function (opacity) {\r\n            var group = getGroup().groupMembers;\r\n            _.each(drops, function (_drop) {\r\n                if (_drop == drop || group.includes(_drop)) return;\r\n                _drop.$element.css(\"opacity\", opacity);\r\n            });\r\n        }\r\n\r\n        var getRoundedToWeekdayLeft = function (itemLeft, dropp, flag) {\r\n            if (dropp && flag) {\r\n                dropp.data.leftOffset = 0;\r\n            }\r\n            return round((dropp ? dropp.data.leftOffset : drop.data.leftOffset >= weekdayWidth / 2 ? -weekdayWidth : 0) + itemLeft, weekdayWidth);\r\n        }\r\n\r\n        var getCurrentPositionDateMoment = function (left, dropp, flag) {\r\n            var dayOffset = getRoundedToWeekdayLeft(parseFloat(left), dropp, flag) / weekdayWidth;\r\n            var currentDateObj = new Date(dropp ? dropp.data.startOfDay : drop.data.startOfDay);\r\n            currentDateObj.setDate(currentDateObj.getDate() + dayOffset);\r\n            return DateTime.fromJSDate(currentDateObj).startOf(\"day\");\r\n        }\r\n\r\n\r\n        var snapDropTopAndHeight = function () {\r\n            drop.$element.css(\"height\", getRoundedHeight() + \"px\");\r\n            drop.$element.css(\"top\", getRoundedTop() + \"px\");\r\n        }\r\n\r\n        var getItemTimeData1 = function (calendarItemDrop) {\r\n            var duration = getRoundedHeight1(calendarItemDrop) / timeslotHeight * timeslotSize;\r\n\r\n            var start = calendarView.data.dayStart + (getRoundedTop1(calendarItemDrop) / timeslotHeight * timeslotSize);\r\n            var end = start + duration;\r\n\r\n            return {\r\n                start: start,\r\n                end: end\r\n            };\r\n        }\r\n\r\n        var getRoundedHeight = function () {\r\n            return round(parseFloat(drop.$element.css(\"height\")), snapHeight);\r\n        }\r\n\r\n        var getRoundedTop = function () {\r\n            return round(parseFloat(drop.$element.css(\"top\")), snapHeight);\r\n        }\r\n\r\n        var getRoundedHeight1 = function (dropp) {\r\n            return round(parseFloat(dropp.$element.css(\"height\")), snapHeight);\r\n        }\r\n\r\n        var getRoundedTop1 = function (dropp) {\r\n            return round(parseFloat(dropp.$element.css(\"top\")), snapHeight);\r\n        }\r\n\r\n        var round = function (toRound, roundTo) {\r\n            var isNegative = false;\r\n            if (toRound < 0) {\r\n                toRound = -toRound;\r\n                isNegative = true;\r\n            }\r\n            var rounded = (toRound % roundTo < roundTo / 2) ? toRound - (toRound % roundTo) : toRound + (roundTo - (toRound % roundTo));\r\n            if (isNegative) rounded = -rounded;\r\n            return rounded;\r\n        }\r\n    };\r\n\r\n    var getTimeslotHeight = function (calendarView) {\r\n        var viewClassSelector = \".\" + calendarView.$element.attr(\"class\").replace(/ /g, \".\");\r\n        var timeslotHeight = parseFloat($(viewClassSelector + \" .timeslot\").css(\"height\")); // px3\r\n        return timeslotHeight;\r\n    };\r\n\r\n    var round = function (x, roundTo) {\r\n        var rounded = Math.round(x / roundTo) * roundTo;\r\n        if (rounded === minutesInAday) {\r\n            return rounded - 1;\r\n        }\r\n        return rounded;\r\n    };\r\n\r\n    var floor = function (x, roundTo) {\r\n        return Math.floor(x / roundTo) * roundTo;\r\n    };\r\n\r\n    var getMouseEventMinutes = function (e, data, isMove) {\r\n        var timeslotIndex = $(e.target).index();\r\n        var y = e.offsetY;\r\n        var yTot = timeslotIndex * data.timeslotSize + y;\r\n\r\n        var creationInterval = data.creationInterval || data.timeslotSize; // creationInterval editable in property editor?\r\n        if (!!isMove) {\r\n            return round(yTot, creationInterval);\r\n        }\r\n        return floor(yTot, creationInterval);\r\n    };\r\n\r\n    var fillUp = function (calendarView, itemsData) {\r\n        calendarView.selectedItem = null;\r\n\r\n        if (!itemsData.length)\r\n            return when();\r\n\r\n        var drops = calendarView.piping.dropFactory.createDrops(itemsData);\r\n\r\n        layoutOverlappingCalendarItems(drops);\r\n        var groupMembers = [];\r\n        var calendarItemGroups = [];\r\n        var ids = []\r\n\r\n        _.each(drops, function (drop) {\r\n            calendarView.addDrop(drop);\r\n            handleItemSelection(calendarView, drop);\r\n            drop.piping = calendarView.piping.fork(drop.data.row, calendarView, drop.data.idOutput);\r\n\r\n            groupMembers = [];\r\n            _.each(drops, function (d) {\r\n                if (drop && d.data.row[d.data.idOutput] ===\r\n                    drop.data.row[drop.data.idOutput]\r\n                    && !ids.includes(d.data.row[drop.data.idOutput])\r\n                    ) {\r\n                    groupMembers.push(d);\r\n                }\r\n            });\r\n            ids.push(drop.data.row[drop.data.idOutput]);\r\n\r\n            if (groupMembers.length > 0)\r\n                calendarItemGroups.push({ groupMembers: groupMembers });\r\n        });\r\n\r\n        _.each(calendarItemGroups, function (g) {\r\n            var isMultiweek = false;\r\n            if (calendarView.getStartOfCurrentWeek) {\r\n                var startOfItem = calendarView.getDatetimeFromRow(g.groupMembers[0].data.row, calendarView.data.startOutput);\r\n                var endOfItem = calendarView.getDatetimeFromRow(g.groupMembers[0].data.row, calendarView.data.endOutput);\r\n                var startOfCurrentWeek = calendarView.getStartOfCurrentWeek();\r\n                var endOfCurrentWeek = calendarView.getEndOfCurrentWeek();\r\n                var currentWeekInterval = Interval.fromDateTimes(startOfCurrentWeek, endOfCurrentWeek);\r\n\r\n                var startIsBetween = currentWeekInterval.contains(startOfItem);\r\n                var endIsBetween = currentWeekInterval.contains(endOfItem);\r\n\r\n                isMultiweek = !startIsBetween || !endIsBetween;\r\n\r\n                for (var j = 1; j < g.groupMembers.length - 1; j++) {\r\n                    makeResizableAndDraggable(g.groupMembers[j], drops, calendarView, true, isMultiweek);\r\n                }\r\n                if (startOfCurrentWeek <= startOfItem) {\r\n                    makeResizableAndDraggable(g.groupMembers[0], drops, calendarView, false, isMultiweek, 'n');\r\n                }\r\n                if (endOfCurrentWeek >= endOfItem) {\r\n                    makeResizableAndDraggable(g.groupMembers[g.groupMembers.length - 1], drops, calendarView, false, isMultiweek, 's');\r\n                }\r\n            } else {\r\n                makeResizableAndDraggable(g.groupMembers[0], drops, calendarView, false, false, 'n, s');\r\n            }\r\n\r\n        });\r\n\r\n        calendarView.data.calendarItemGroups = calendarItemGroups;\r\n\r\n        return when.all(_.map(drops, function (drop) {\r\n            return drop.render(drop.data.$target);\r\n        }));\r\n    };\r\n\r\n    return {\r\n\r\n        fillUp: fillUp,\r\n\r\n        timeslotMousedown: function ($weekday, dayOfWeek, e) {\r\n            if (e.button !== 0 || $weekday === null || !!this.designData || !this.childDrops[0].data.enableDragAndResize || !this.childDrops[0].data.eventing.onCreate || !this.childDrops[0].data.eventing.onCreate.enabled) return;\r\n            if (!this.designData)\r\n                _.each(this.pool, function (drop) {\r\n                    drop.$element\r\n                        .css({\r\n                            'cursor': 'default',\r\n                            'pointer-events': 'none',\r\n                            \"opacity\": 0.6\r\n                        });\r\n                });\r\n\r\n            var dragStartMinutes = getMouseEventMinutes(e, this.data, false);\r\n\r\n            var startOfDay = this.date.startOf('day').plus({ minutes: this.data.dayStart });\r\n            var endOfDay = this.date.startOf('day').plus({ minutes: this.data.dayEnd });\r\n\r\n            var item = $.extend(true, {}, this.childDrops[0], {\r\n                data: {\r\n                    $target: $weekday,\r\n                    startOfDay: startOfDay,\r\n                    endOfDay: endOfDay,\r\n                    dayOfWeek: dayOfWeek,\r\n                    startOfItem: startOfDay.plus({ minutes: dragStartMinutes }),\r\n                    endOfItem: startOfDay.plus({ minutes: dragStartMinutes }),\r\n                    row: {},\r\n                    eventArg: this.data.eventArg,\r\n                    tooltipOutput: this.data.tooltipOutput,\r\n                    idOutput: this.data.idOutput\r\n                }\r\n            });\r\n\r\n            var self = this;\r\n            fillUp(this, [item]).then(function (dropArr) {\r\n                var drop = dropArr[0];\r\n                drop.applyPosition();\r\n                drop.$element.css(\"pointer-events\", \"none\");\r\n\r\n                self.itemCreation = {\r\n                    dragStartMinutes: dragStartMinutes,\r\n                    inProgress: true,\r\n                    isCreatable: false,\r\n                    pageX: e.pageX,\r\n                    pageY: e.pageY,\r\n                    drop: drop\r\n                };\r\n            });\r\n        },\r\n\r\n        timeslotMouseup: function (e) {\r\n            if (e.button !== 0 || !this.itemCreation || !this.itemCreation.inProgress) return;\r\n            if (!this.designData)\r\n                _.each(this.pool, function (drop) {\r\n                    drop.$element\r\n                        .css({\r\n                            'cursor': 'all-scroll',\r\n                            'pointer-events': '',\r\n                            \"opacity\": 1\r\n                        });\r\n                });\r\n            if (!this.itemCreation.isCreatable) {\r\n                this.itemCreation.drop.$element.remove();\r\n                delete this.itemCreation.drop;\r\n            } else {\r\n                this.itemCreation.drop.$element.css(\"pointer-events\", \"auto\");\r\n\r\n                var startMoment = this.itemCreation.drop.data.startOfItem;\r\n                var endMoment = this.itemCreation.drop.data.endOfItem;\r\n\r\n                if (startMoment.equals(endMoment)) {\r\n                    endMoment.plus({ minutes: this.itemCreation.drop.data.resizeSnapInterval || this.data.timeslotSize });\r\n                }\r\n                var parameters = this.piping.parameters;\r\n                const params = this.itemCreation.drop.data.createParams;\r\n                if (params) {\r\n                    if (this.getStartOfCurrentWeek) {\r\n                        if (params.newStart) parameters.locals.setValue(params.newStart, calendarParameter.convert(this.getStartOfCurrentWeek().plus({ days: this.itemCreation.drop.data.dayOfWeek, minutes: startMoment })));\r\n                        if (params.newEnd) parameters.locals.setValue(params.newEnd, calendarParameter.convert(this.getStartOfCurrentWeek().plus({ days: this.itemCreation.drop.data.dayOfWeek, minutes: endMoment })));\r\n                    } else {\r\n                        if (params.newStart) parameters.locals.setValue(params.newStart, calendarParameter.convert(startMoment));\r\n                        if (params.newEnd) parameters.locals.setValue(params.newEnd, calendarParameter.convert(endMoment));\r\n                    }\r\n                }\r\n\r\n                this.itemCreation.drop.triggerEventIfEnabled('onCreate');\r\n            }\r\n            this.itemCreation = {\r\n                dragStartMinutes: null,\r\n                inProgress: false,\r\n                isCreatable: false,\r\n                drop: null\r\n            };\r\n        },\r\n\r\n        timeslotMousemove: function (e) {\r\n            if (!this.itemCreation || !this.itemCreation.inProgress) return;\r\n            var distance = Math.sqrt(Math.pow(e.pageX - this.itemCreation.pageX, 2) + Math.pow(e.pageY - this.itemCreation.pageY, 2));\r\n            var timeslotHeight = getTimeslotHeight(this);\r\n            if (distance > timeslotHeight / 3) {\r\n                this.itemCreation.isCreatable = true;\r\n            }\r\n\r\n            var dragMinutes = getMouseEventMinutes(e, this.data, true);\r\n\r\n            var startOfDay = this.date.startOf('day').plus({ minutes: this.data.dayStart });\r\n\r\n            var savedStart = this.itemCreation.drop.data.startOfItem;\r\n            var savedEnd = this.itemCreation.drop.data.endOfItem;\r\n\r\n            if (dragMinutes >= this.itemCreation.dragStartMinutes) {\r\n                this.itemCreation.drop.data.startOfItem = startOfDay.plus({ minutes: this.itemCreation.dragStartMinutes });\r\n                this.itemCreation.drop.data.endOfItem = startOfDay.plus({ minutes: dragMinutes });\r\n            }\r\n            else {\r\n                this.itemCreation.drop.data.startOfItem = startOfDay.plus({ minutes: dragMinutes });\r\n                this.itemCreation.drop.data.endOfItem = startOfDay.plus({ minutes: this.itemCreation.dragStartMinutes });\r\n            }\r\n\r\n            var overlapp = false;\r\n            if (!this.itemCreation.drop.data.allowItemOverlap) {\r\n                var currentStart = this.itemCreation.drop.data.startOfItem;\r\n                var currentEnd = this.itemCreation.drop.data.endOfItem;\r\n\r\n                if (this.getStartOfCurrentWeek) {\r\n                    currentStart = this.getStartOfCurrentWeek().plus({ days: this.itemCreation.drop.data.dayOfWeek, minutes: this.itemCreation.drop.data.startOfItem });\r\n                    currentEnd = this.getStartOfCurrentWeek().plus({ days: this.itemCreation.drop.data.dayOfWeek, minutes: this.itemCreation.drop.data.endOfItem });\r\n                }\r\n\r\n                var sameDayDrops = this.pool.filter(function (_drop) {\r\n                    return _drop.data.startOfDay.startOf('day').equals(currentStart.startOf('day'));\r\n                });\r\n\r\n                currentStart = currentStart.plus({ minutes: this.itemCreation.drop.data.startOfItem });\r\n\r\n                var currentInterval = Interval.fromDateTimes(currentStart, currentEnd);\r\n                for (var i = 0;  i < sameDayDrops.length; i++) {\r\n                    var sameDayDrop = sameDayDrops[i];\r\n                    var isStartBetweenOrSame = currentInterval.contains(sameDayDrop.data.startOfItem) || sameDayDrop.data.startOfItem.equals(currentStart);\r\n                    var isEndBetweenOrSame = currentInterval.contains(sameDayDrop.data.endOfItem) || sameDayDrop.data.endOfItem.equals(currentEnd);\r\n                    if (isStartBetweenOrSame || isEndBetweenOrSame) {\r\n                        overlapp = true;\r\n                        break;\r\n                    }\r\n                };\r\n            }\r\n\r\n            if (!overlapp) {\r\n                this.itemCreation.drop.applyPosition();\r\n            } else {\r\n                this.itemCreation.drop.data.startOfItem = savedStart;\r\n                this.itemCreation.drop.data.endOfItem = savedEnd;\r\n            }\r\n        }\r\n\r\n    };\r\n});\r\n\n","define('lq/nestingContext',[\r\n\r\n], function () {\r\n    'use strict';\r\n\r\n    var NestingContext = function (piping) {\r\n        this.nestedDataSources = [];\r\n        this.piping = piping;\r\n    };\r\n\r\n    NestingContext.prototype.addDataSource = function (dataSource) {\r\n        if (this.nestedDataSources.indexOf(dataSource) !== -1)\r\n            return;\r\n        this.nestedDataSources.push(dataSource);\r\n    };\r\n\r\n    NestingContext.prototype.executeDataSources = function () {\r\n        var self = this;\r\n        _.forEach(this.nestedDataSources, function (dataSource) {\r\n            var listeners = self.piping.datasources.getDatasourceListenersThatListenFor(dataSource);\r\n\r\n            if (listeners.length) {\r\n                self.piping.queryDispatcher.dispatch(\r\n                    dataSource,\r\n                    function (response) {\r\n                        _.each(listeners, function (listener) {\r\n                            listener.handler(response);\r\n                        });\r\n                    },\r\n                    $.noop);\r\n            }\r\n        });\r\n    };\r\n\r\n    return NestingContext;\r\n});\n","\ndefine(\"tpl!drops/calendarDayView/calendarDayView.html\", [\"underscore\"], function(_) { return function(obj){\nvar __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\nwith(obj||{}){\n__p+='<div class=\"calendar-view day-view\">\\r\\n    <div class=\"calendar-title\">\\r\\n        <a class=\"previous-page clickable no-text-select\">〈 </a>\\r\\n        <a class=\"next-page clickable no-text-select\"> 〉</a>\\r\\n\\r\\n        <div class=\"date-as-title\"></div>\\r\\n    </div>\\r\\n    <div class=\"calendar-main\">\\r\\n\\r\\n        <div class=\"hours\"></div>\\r\\n\\r\\n        <div class=\"timeslots\"></div>\\r\\n\\r\\n        <div class=\"clear\"></div>\\r\\n    </div>\\r\\n</div>\\r\\n';\n}\nreturn __p;\n};});\n\n","define('drops/calendarDayView/calendarDayView',[\r\n    'jquery',\r\n    'underscore',\r\n    'luxon',\r\n    'lq/constants',\r\n    'globalize',\r\n    'lq/drop',\r\n    'drops/calendar/calendarParameter',\r\n    'drops/calendar/calendarItems',\r\n    'lq/nestingContext',\r\n    'tpl!drops/calendarDayView/calendarDayView.html',\r\n    'lq/onlongpress'\r\n], function ($, _, luxon, constants, globalize, Drop, calendarParameter, calendarItems, NestingContext, template, OnLongPress) {\r\n    'use strict';\r\n\r\n    const { DateTime } = luxon;\r\n\r\n    var defaults = {\r\n        data: {\r\n            dataSource: null,\r\n            dataSourceType: 'datetimes',\r\n            dateOutput: null,\r\n            startOutput: null,\r\n            endOutput: null,\r\n            calendarStartParameter: 'CalendarDayStart',\r\n            calendarEndParameter: 'CalendarDayEnd',\r\n            timeslotSize: 30,\r\n            dayStart: 0,\r\n            dayEnd: (60 * 24) - 1,\r\n            titleFormat: 'D',\r\n            timeslotHourFormat: 'HH:mm',\r\n            longPressDelay: 1000\r\n        },\r\n        childDrops: [\r\n            {\r\n                data: { type: 'CalendarItem' }\r\n            }\r\n        ]\r\n    };\r\n\r\n    function CalendarDayView(options) {\r\n        Drop.call(this, $(template()), defaults, options);\r\n        // right now we're not really doing anything with the selected date in the day view\r\n        this.selectedDate = null;\r\n        this.bindings = [];\r\n    };\r\n\r\n    Drop.extend(CalendarDayView, Drop);\r\n\r\n    CalendarDayView.typeName = 'CalendarDayView';\r\n\r\n    CalendarDayView.prototype.applyPosition = $.noop;\r\n\r\n    CalendarDayView.prototype.init = function () {\r\n        this.nestingContext = new NestingContext(this.piping);\r\n        this.goToDefaultPosition();\r\n        this.bindScrollPositionParameter();\r\n    };\r\n\r\n    CalendarDayView.prototype.goToDefaultPosition = function () {\r\n        if (!$.isNumeric(this.data.defaultScrollPosition)) return;\r\n\r\n        var slotNumber = Math.floor((this.data.defaultScrollPosition - this.data.dayStart) / this.data.timeslotSize);\r\n        var $slot = this.$hours.children('.timeslot').eq(slotNumber);\r\n        this.$container.scrollTop(this.$container.scrollTop() + $slot.position().top);\r\n    };\r\n\r\n    CalendarDayView.prototype.bindScrollPositionParameter = function () {\r\n        if (this.data.scrollPositionParameter) {\r\n            var binding = this.piping.parameters.subscribeForUpdates(this.data.scrollPositionParameter, this.goToScrollToPosition.bind(this), true);\r\n\r\n            if (!this.bindings) this.bindings = [];\r\n\r\n            this.bindings.push(binding);\r\n        }\r\n    };\r\n\r\n    CalendarDayView.prototype.goToScrollToPosition = function () {\r\n        var scrollPosition = this.piping.parameters.getValue(this.data.scrollPositionParameter);\r\n\r\n        if (!$.isNumeric(scrollPosition)) return;\r\n\r\n        var slotNumber = Math.floor((scrollPosition - this.data.dayStart) / this.data.timeslotSize);\r\n        var $slot = this.$hours.children('.timeslot').eq(slotNumber);\r\n        this.$container.scrollTop(this.$container.scrollTop() + $slot.position().top);\r\n    };\r\n\r\n    CalendarDayView.prototype.loadCalendarData = function () {\r\n        if (!this.data.dataSource)\r\n            return;\r\n\r\n        var dateOfRequestedData = this.date;\r\n\r\n        var self = this;\r\n        this.piping.queryDispatcher.backgroundDispatch(\r\n            this.data.dataSource,\r\n            function (response) {\r\n                if (dateOfRequestedData.equals(self.date))\r\n                    self.showItems(response.outputs, response.results);\r\n            });\r\n\r\n        if (!this.data.activeTSDataSource)\r\n            return;\r\n\r\n        this.piping.queryDispatcher.backgroundDispatch(\r\n            this.data.activeTSDataSource,\r\n            function (response) {\r\n                if (dateOfRequestedData.equals(self.date))\r\n                    self.setActiveTimeslots(response.results);\r\n            });\r\n    };\r\n\r\n    CalendarDayView.prototype.setSelectedDate = function (date) {\r\n        this.selectedDate = date;\r\n    };\r\n\r\n    CalendarDayView.prototype.clearSelectedDate = function () {\r\n        this.selectedDate = null;\r\n    };\r\n\r\n    CalendarDayView.prototype.getSelectedDate = function () {\r\n        return this.selectedDate;\r\n    };\r\n\r\n    CalendarDayView.prototype.render = function () {\r\n        this.registerForDataSource();\r\n        this.prepareUi();\r\n        this.createTimeslots();\r\n        this.open(DateTime.now());\r\n    };\r\n\r\n    CalendarDayView.prototype.prepareUi = function () {\r\n        this.$container = this.$element.find('.calendar-main');\r\n        this.$title = this.$element.find('.date-as-title');\r\n        this.$hours = this.$element.find('.hours');\r\n        this.$timeslots = this.$element.find('.timeslots');\r\n\r\n        this.$element.find('.previous-page')\r\n            .on('click', this.previous.bind(this));\r\n        this.$element.find('.next-page')\r\n            .on('click', this.next.bind(this));\r\n    };\r\n\r\n    CalendarDayView.prototype.createTimeslots = function () {\r\n        var timeslots = _.range(this.data.dayStart, this.data.dayEnd, this.data.timeslotSize);\r\n\r\n        var self = this;\r\n        var $hours = _.map(timeslots, function (slot) {\r\n            var date = new Date(1970, 0, 1);\r\n            date.setMinutes(slot);\r\n\r\n            return $('<div />')\r\n                .addClass('timeslot')\r\n                .append($('<span />')\r\n                    .text(globalize.format(date, self.data.timeslotHourFormat)));\r\n        });\r\n        this.$hours.append($hours);\r\n\r\n        var $timeslots = _.map(timeslots, function (startMinute) {\r\n            var $timeslot = $('<div />')\r\n                .addClass('timeslot')\r\n                .data('time', startMinute);\r\n\r\n            new OnLongPress().applyLongPressOnElement($timeslot, self,\r\n                function(e) {\r\n                    return self.determineEventArg(startMinute);\r\n                }, function () {\r\n                    self.timeslotClicked(startMinute);\r\n                });\r\n\r\n            $timeslot.on(\"mousedown\", calendarItems.timeslotMousedown.bind(self, self.$timeslots, 0));\r\n            $timeslot.on(\"mouseup\", calendarItems.timeslotMouseup.bind(self));\r\n            $timeslot.on(\"mousemove\", calendarItems.timeslotMousemove.bind(self));\r\n\r\n            return $timeslot;\r\n        });\r\n\r\n        this.$timeslots.append(\r\n            $('<div class=\"calendar-item-container\"/>')\r\n        );\r\n\r\n        this.$timeslots.append($timeslots);\r\n    };\r\n\r\n    var round = function (x, roundTo) {\r\n        return Math.round(x / roundTo) * roundTo;\r\n    };\r\n\r\n    var getMouseEventMinutes = function (e, data) {\r\n        var timeslotIndex = $(e.target).index();\r\n        var y = e.offsetY;\r\n        var yTot = timeslotIndex * data.timeslotSize + y;\r\n\r\n        var creationInterval = data.creationInterval || data.timeslotSize; // creationInterval editable in property editor?\r\n        return round(yTot, creationInterval);\r\n    };\r\n\r\n    CalendarDayView.prototype.determineEventArg = function (startMinute) {\r\n        var dateAndTime = this.date\r\n            .startOf('day')\r\n            .plus({ minutes: startMinute });\r\n        return globalize.format(dateAndTime.toJSDate(), constants.licquidDateFormat);\r\n    };\r\n\r\n    CalendarDayView.prototype.timeslotClicked = function (startMinute) {\r\n        var eventArg = this.determineEventArg(startMinute);\r\n        this.triggerEvent(this.data.eventing.clicked.raisedEventName, eventArg);\r\n    };\r\n\r\n    CalendarDayView.prototype.registerForDataSource = function () {\r\n        if (this.data.dataSource) {\r\n            var self = this;\r\n            this.piping.datasources.registerDatasourceListener(this.data.dataSource, function (data) {\r\n                self.removeCalendarItems();\r\n                self.showItems(data.outputs, data.results);\r\n            });\r\n        }\r\n\r\n        if (this.data.activeTSDataSource) {\r\n            var self = this;\r\n            this.piping.datasources.registerDatasourceListener(this.data.activeTSDataSource, function (data) {\r\n                self.setActiveTimeslots(data.results);\r\n            });\r\n        }\r\n    };\r\n\r\n    CalendarDayView.prototype.previous = function () {\r\n        this.open(this.date.minus({ days: 1 }));\r\n        this.loadCalendarData();\r\n        this.triggerNavigatedEvent();\r\n    };\r\n\r\n    CalendarDayView.prototype.next = function () {\r\n        this.open(this.date.plus({ days: 1 }));\r\n        this.loadCalendarData();\r\n        this.triggerNavigatedEvent();\r\n    };\r\n\r\n    CalendarDayView.prototype.triggerNavigatedEvent = function () {\r\n        this.triggerEventIfEnabled('navigated', this.date);\r\n    };\r\n\r\n    CalendarDayView.prototype.open = function (date) {\r\n        this.date = date;\r\n        this.updateTitle();\r\n        this.removeCalendarItems();\r\n\r\n        var parameters = this.piping.parameters;\r\n        parameters.locals.setValue(this.data.calendarStartParameter, calendarParameter.convert(this.date.startOf('day')));\r\n        parameters.locals.setValue(this.data.calendarEndParameter, calendarParameter.convert(this.date.endOf('day')));\r\n    };\r\n\r\n    CalendarDayView.prototype.getOpenDate = function () {\r\n        return this.date;\r\n    };\r\n\r\n    CalendarDayView.prototype.updateTitle = function () {\r\n        var title = globalize.format(this.date.toJSDate(), this.data.titleFormat);\r\n        this.$title.text(title);\r\n    };\r\n\r\n    CalendarDayView.prototype.showItems = function (outputs, rows) {\r\n        var startOfDay = this.date.startOf('day').plus({ minutes: this.data.dayStart });\r\n        var endOfDay = this.date.startOf('day').plus({ minutes: this.data.dayEnd });\r\n\r\n        var self = this;\r\n        var items = _.map(rows, function (row) {\r\n            var startOfItem = self.getDatetimeFromRow(row, self.data.startOutput);\r\n            var endOfItem = self.getDatetimeFromRow(row, self.data.endOutput);\r\n\r\n            return $.extend(true, {}, self.childDrops[0],{\r\n                data: {\r\n                    $target: self.$timeslots.find('.calendar-item-container'),\r\n                    startOfDay: startOfDay,\r\n                    endOfDay: endOfDay,\r\n                    startOfItem: startOfItem,\r\n                    endOfItem: endOfItem,\r\n                    row: row,\r\n                    outputs: outputs,\r\n                    eventArg: self.data.eventArg,\r\n                    tooltipOutput: self.data.tooltipOutput,\r\n                    idOutput: self.data.idOutput\r\n                }\r\n            });\r\n        });\r\n\r\n        calendarItems.fillUp(this, items)\r\n            .then(function () {\r\n                self.nestingContext.executeDataSources();\r\n            }).catch(function (e) {\r\n                self.piping.errorHandler.showErrorDialog(e);\r\n            });\r\n    };\r\n\r\n    CalendarDayView.prototype.removeCalendarItems = function () {\r\n        _.each(this.pool, function (drop) {\r\n            drop.$element.remove();\r\n        });\r\n        this.removeAllDrops();\r\n    };\r\n\r\n    CalendarDayView.prototype.getDatetimeFromRow = function (row, output) {\r\n        if (this.data.dataSourceType === 'datetimes')\r\n            return DateTime.fromISO(row[output]);\r\n\r\n        var date = this.date.startOf('day');\r\n        var time = row[output];\r\n        return date.plus({ seconds: time });\r\n    };\r\n\r\n    CalendarDayView.prototype.setActiveTimeslots = function (rows) {\r\n        var self = this;\r\n\r\n        var $timeslots = self.$timeslots.children();\r\n        var $activeTimeslots = $(); \r\n\r\n        rows.forEach(function (row) {\r\n                var activeTSStart = self.getDatetimeFromRow(row, self.data.activeTSStartOutput).toJSDate();\r\n                var activeTSEnd = self.getDatetimeFromRow(row, self.data.activeTSEndOutput).toJSDate();\r\n\r\n                var $filteredTimeslots = $timeslots.filter(function () {\r\n                    var time = $(this).data('time');\r\n\r\n                    return time >= self.getTimeOfDay(activeTSStart) && time < self.getTimeOfDay(activeTSEnd);\r\n                });\r\n\r\n                $activeTimeslots.push(...$filteredTimeslots);\r\n            });\r\n\r\n        $activeTimeslots.addClass('active-timeslot');\r\n        $timeslots.not($activeTimeslots).removeClass('active-timeslot');\r\n    };\r\n\r\n    CalendarDayView.prototype.getTimeOfDay = function (date) {\r\n        return date.getHours() * 60 + date.getMinutes();\r\n    };\r\n\r\n    CalendarDayView.prototype.unsubscribeEventHandlers = function () {\r\n        _.each(this.bindings, function (binding) {\r\n            binding.dispose();\r\n        });\r\n\r\n        this.bindings = undefined;\r\n    };\r\n\r\n    return CalendarDayView;\r\n});\n","define('drops/calendarItem/calendarItem',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/html'\r\n], function ($, _, Drop, Style, html) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            eventing: {\r\n                clicked: {}\r\n            },\r\n            updateParams: {\r\n            },\r\n            createParams: {\r\n            },\r\n            longPressDelay: 1000,\r\n            allowItemOverlap: true,\r\n        }\r\n    };\r\n\r\n    function CalendarItem(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        var self = this;\r\n\r\n        this.$element\r\n            .addClass('calendar-item boxToBorderSize');\r\n\r\n        if(this.data.row && this.data.eventArg)\r\n            this.defaultEventArg = this.data.row[this.data.eventArg];\r\n\r\n        this.addListener('ChildAdded', function (childDrop) {\r\n            self.applyDataToChild(childDrop);\r\n        });\r\n\r\n        Style.renderStyles(this);\r\n    };\r\n\r\n    Drop.extend(CalendarItem, Drop);\r\n\r\n    CalendarItem.typeName = 'CalendarItem';\r\n\r\n    CalendarItem.prototype.preRender = function () {\r\n        this.applyPosition();\r\n    };\r\n\r\n    CalendarItem.prototype.render = function ($element) {\r\n        return this.createAndRenderDrops($element);\r\n    };\r\n\r\n    CalendarItem.prototype.postRender = function () {\r\n        if (this.data.row) {\r\n            var tooltip = this.data.row[this.data.tooltipOutput];\r\n            if (tooltip) this.$element.attr('title', html.strip(tooltip));\r\n        }\r\n    };\r\n\r\n    CalendarItem.prototype.applyDataToChild = function (childDrop) {\r\n        if (!this.data.row)\r\n            return;\r\n\r\n        childDrop.defaultEventArg = this.defaultEventArg;\r\n\r\n        // quick hack\r\n        var self = this;\r\n        _.defer(function () {\r\n            if (childDrop.setValue && _.has(self.data.row, childDrop.data.name)) {\r\n                childDrop.setValue({\r\n                    type: self.data.outputs[childDrop.data.name],\r\n                    value: self.data.row[childDrop.data.name]\r\n                });\r\n            }\r\n\r\n            childDrop.informListeners('DatasourceApplied', self.data.row);\r\n        });\r\n    };\r\n\r\n    CalendarItem.prototype.applyPosition = function() {\r\n        var lengthOfDay = this.data.endOfDay.diff(this.data.startOfDay, \"minutes\");\r\n        var lengthOfItem = this.data.endOfItem.diff(this.data.startOfItem, 'minutes');\r\n        var lengthToSkip = this.data.startOfItem.diff(this.data.startOfDay, 'minutes');\r\n\r\n        var height = (100 / lengthOfDay) * lengthOfItem;\r\n        var top = (100 / lengthOfDay) * lengthToSkip;\r\n\r\n        this.$element\r\n            .css({\r\n                top: top + '%',\r\n                height: height + '%'\r\n            });\r\n    };\r\n\r\n    CalendarItem.prototype.unsubscribeEventHandlers = function () {\r\n        this.piping.cleanUp();\r\n    };\r\n\r\n    return CalendarItem;\r\n});\n","define('lq/eventSource',['underscore'], function (_) {\r\n\t'use strict';\r\n\r\n    // event distribution with strict checking for event name on all operations (listen, trigger, getListeners)\r\n    // can independently add new events to existing ones later on\r\n    // can remove listeners or can subscribe to event only once (not both yet)\r\n    // internal data structures hidden\r\n\r\n    // This should be merged with observable, after the above features are added and usage is updated.\r\n\r\n\tvar addEventSource = function (source, eventName) {\r\n\t\tvar listeners = [];\r\n\r\n\t\tsource['withOn' + eventName] = function (handler) {\r\n\t\t    listeners.push(handler);\r\n\t\t    return source;\r\n\t\t};\r\n\r\n\t\tvar removeListener = function (handler) {\r\n\t\t    var index = listeners.indexOf(handler);\r\n\t\t    if (index >= 0) {\r\n\t\t        listeners.splice(index, 1);\r\n\t\t    }\r\n\t\t}\r\n\r\n\t\tsource['withOnce' + eventName] = function (handler) {\r\n\t\t    var onceHandler = function () {\r\n\t\t        removeListener(onceHandler);\r\n\t\t        handler.apply(this, arguments);\r\n\t\t    }\r\n\t\t    listeners.push(onceHandler);\r\n\t\t    return source;\r\n\t\t};\r\n\r\n\t\tsource['withoutOn' + eventName] = function (handler) {\r\n\t\t    removeListener(handler);\r\n\t\t\treturn source;\r\n\t\t};\r\n\r\n\t\tsource['trigger' + eventName] = function () {\r\n\t\t    var eventArgs = arguments;\r\n\t\t    _.each(listeners.slice(), function (handler) { handler.apply(source, eventArgs); });\r\n\t\t    return source;\r\n\t\t};\r\n\r\n\t\tsource['get' + eventName + 'Listeners'] = function () {\r\n\t\t    return listeners.slice();\r\n\t\t};\r\n\r\n\t\tsource['has' + eventName + 'Listeners'] = function () {\r\n\t\t    return listeners.length > 0;\r\n\t\t};\r\n\t};\r\n    \r\n\tvar EventSource = function (eventNameOrNames) {\r\n\t    var source = this;\r\n\r\n\t    if (_.isArray(eventNameOrNames)) {\r\n\t        _.each(eventNameOrNames, function (eventName) { addEventSource(source, eventName); });\r\n\t    } else {\r\n\t        addEventSource(source, eventNameOrNames);\r\n\t    }\r\n\t};\r\n\r\n\treturn EventSource;\r\n});\r\n\n","\ndefine(\"tpl!drops/calendar/daysofmonthcalendar.html\", [\"underscore\"], function(_) { return function(obj){\nvar __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\nwith(obj||{}){\n__p+='<div class=\"days-of-month-calendar\">\\r\\n    \\r\\n    <div class=\"calendar-header\">\\r\\n        <a class=\"previous-page clickable no-text-select\">〈</a>\\r\\n        <a class=\"next-page clickable no-text-select\">〉</a>\\r\\n\\r\\n        <div class=\"date-as-title\"></div>\\r\\n    </div>\\r\\n    \\r\\n    <div class=\"calendar-days\">\\r\\n    </div>\\r\\n</div>';\n}\nreturn __p;\n};});\n\n","define('drops/calendar/daysofmonthcalendar',[\r\n    'jquery',\r\n    'underscore',\r\n    'globalize',\r\n    'luxon',\r\n    'lq/eventSource',\r\n    'tpl!drops/calendar/daysofmonthcalendar.html',\r\n    'lq/html'\r\n], function ($, _, globalize, luxon, EventSource, template, html) {\r\n    'use strict';\r\n\r\n    const { DateTime } = luxon;\r\n\r\n    var defaults = {\r\n        standalone: false,\r\n        showWeekdayHeaders: false,\r\n        weekdayHeadersFormat: 'd',\r\n        titleFormat: 'MMMM yyyy',\r\n        languageISOCode: null\r\n    };\r\n\r\n    var DaysOfMonthCalendar = function (options) {\r\n        EventSource.call(this, ['Navigated', 'Clicked']);\r\n\r\n        this.options = $.extend({}, defaults, options);\r\n        this.selectedDate = null;\r\n\r\n        this.$element = $(template());\r\n\r\n        var self = this;\r\n        this.$element.find('.previous-page')\r\n            .on('click', function() {\r\n                self.previous();\r\n            });\r\n        this.$element.find('.next-page')\r\n            .on('click', function () {\r\n                self.next();\r\n            });\r\n\r\n        this.$title = this.$element.find('.date-as-title');\r\n        this.$days =  this.$element.find('.calendar-days');\r\n        this.$weekdayHeaders = _.map(_.range(1, 8), function () {\r\n            return $('<div />');\r\n        });\r\n\r\n        this.$days.append($('<div />')\r\n            .addClass('weekday-headers')\r\n            .append(this.$weekdayHeaders));\r\n\r\n        if (!this.options.standalone) {\r\n            this.$element.addClass('no-navigation');\r\n            this.$title.addClass('always-visible');\r\n        }\r\n\r\n        this.updateWeekdayHeaders();\r\n        this.toggleWeekdayHeaders();\r\n    };\r\n\r\n    DaysOfMonthCalendar.prototype.updateWeekdayHeaders = function () {\r\n        var self = this;\r\n        _.each(this.$weekdayHeaders, function ($weekdayHeader, i) {\r\n            var date = DateTime.now().startOf('week').plus({ days: i });\r\n            var name = globalize.format(\r\n                date.toJSDate(),\r\n                self.options.weekdayHeadersFormat,\r\n                self.options.languageISOCode ? self.options.languageISOCode : undefined);\r\n            $weekdayHeader.text(name);\r\n        });\r\n    };\r\n\r\n    DaysOfMonthCalendar.prototype.toggleWeekdayHeaders = function () {\r\n        if (this.options.showWeekdayHeaders)\r\n            this.$element.removeClass('no-weekday-headers');\r\n        else\r\n            this.$element.addClass('no-weekday-headers');\r\n    };\r\n\r\n    DaysOfMonthCalendar.prototype.previous = function() {\r\n        this.open(this.date.minus({ months: 1 }));\r\n        this.triggerNavigated();\r\n    };\r\n\r\n    DaysOfMonthCalendar.prototype.next = function () {\r\n        this.open(this.date.plus({ months: 1 }));\r\n        this.triggerNavigated();\r\n    };\r\n\r\n    DaysOfMonthCalendar.prototype.open = function (date) {\r\n        this.date = date;\r\n        this.rerender();\r\n    };\r\n\r\n    DaysOfMonthCalendar.prototype.rerender = function () {\r\n        this.updateTitle();\r\n        this.buildDays();\r\n        this.renderDaysInRowsOfSeven();\r\n    };\r\n\r\n    DaysOfMonthCalendar.prototype.updateTitle = function () {\r\n        var title = globalize.format(\r\n            this.date.toJSDate(),\r\n            this.options.titleFormat,\r\n            this.options.languageISOCode ? this.options.languageISOCode : undefined);\r\n        this.$title.text(title);\r\n    };\r\n\r\n    DaysOfMonthCalendar.prototype.getOpenDate = function () {\r\n        return this.date;\r\n    };\r\n\r\n    DaysOfMonthCalendar.prototype.buildDays = function () {\r\n        this.days = [];\r\n\r\n        var start = this.date\r\n            .startOf('month')\r\n            .startOf('week')\r\n            .startOf('day');\r\n\r\n        // Always show 6 weeks. This is the only way to make sure the calendar always has the same size.\r\n        var stop = start\r\n            .plus({ weeks: 5 })\r\n            .endOf('week')\r\n            .startOf('day');\r\n\r\n        while (start <= stop) {\r\n            var day = this.createDay(start);\r\n            this.days.push(day);\r\n\r\n            start = start.plus({ days: 1 });\r\n        }\r\n    };\r\n\r\n    DaysOfMonthCalendar.prototype.createDay = function(date) {\r\n        var $day = $('<div />')\r\n            .text(globalize.format(date.toJSDate(), ' d'));\r\n        var today = DateTime.now();\r\n\r\n        if (date.hasSame(this.date, 'month')) {\r\n            $day.addClass('this-month');\r\n\r\n            if (date.isWeekend)\r\n                $day.addClass('weekend');\r\n\r\n            if (date.hasSame(today, 'day'))\r\n                $day.addClass('today');\r\n\r\n            if (this.selectedDate && date.hasSame(this.selectedDate, 'day'))\r\n                $day.addClass('selected');\r\n\r\n            if (this.hasClickedListeners()) {\r\n                var self = this;\r\n                $day\r\n                    .addClass('clickable')\r\n                    .on('click', function () {\r\n                        if (self.isSelectedDate(date))\r\n                            return;\r\n                        self.setSelectedDate(date);\r\n                        self.triggerClicked(date);\r\n                    });\r\n            }\r\n        } else {\r\n            $day.addClass('another-month');\r\n        }\r\n\r\n        return {\r\n            $element: $day,\r\n            dateTime: date\r\n        };\r\n    };\r\n\r\n    DaysOfMonthCalendar.prototype.isSelectedDate = function(otherDate) {\r\n        return this.selectedDate && this.selectedDate.equals(otherDate);\r\n    };\r\n\r\n    DaysOfMonthCalendar.prototype.renderDaysInRowsOfSeven = function () {\r\n        this.$days\r\n            .children(':not(.weekday-headers)')\r\n            .remove();\r\n\r\n        var $days = _.pluck(this.days, '$element');\r\n\r\n        while ($days.length) {\r\n            var $row = $days.splice(0, 7);\r\n            this.$days\r\n                .append($('<div />')\r\n                    .addClass('days-of-month')\r\n                    .append($row));\r\n        }\r\n    };\r\n\r\n    DaysOfMonthCalendar.prototype.decorateDate = function (date, backgroundColor, fontColor, tooltip, isUnavailable) {\r\n        var visibleDay = this.getDay(date);\r\n\r\n        if (visibleDay) {\r\n            if (isUnavailable) {\r\n                visibleDay.$element\r\n                    .addClass('unavailable')\r\n                    .removeClass('clickable')\r\n                    .off('click');\r\n            }\r\n\r\n            // in case of the colors, the last one will win\r\n            if (backgroundColor)\r\n                visibleDay.$element.css('background-color', backgroundColor);\r\n\r\n            if (fontColor)\r\n                visibleDay.$element.css('color', fontColor);\r\n\r\n            // in case of the tooltip we will merge the text if there are multiple events for the same date\r\n            if (tooltip) {\r\n                var title = visibleDay.$element.attr('title');\r\n\r\n                if (title)\r\n                    title = title + '\\n' + tooltip;\r\n                else\r\n                    title = tooltip;\r\n\r\n                visibleDay.$element.attr('title', html.strip(title));\r\n            }\r\n        }\r\n    };\r\n\r\n    DaysOfMonthCalendar.prototype.setSelectedDate = function (date) {\r\n        this.clearSelectedDate();\r\n\r\n        var visibleDay = this.getDay(date);\r\n        if (visibleDay)\r\n            visibleDay.$element.addClass('selected');\r\n\r\n        this.selectedDate = date;\r\n    };\r\n\r\n    DaysOfMonthCalendar.prototype.clearSelectedDate = function () {\r\n        if (!this.selectedDate)\r\n            return;\r\n\r\n        var visibleDay = this.getDay(this.selectedDate);\r\n        if (visibleDay)\r\n            visibleDay.$element.removeClass('selected');\r\n\r\n        this.selectedDate = null;\r\n    };\r\n\r\n    DaysOfMonthCalendar.prototype.getSelectedDate = function () {\r\n        return this.selectedDate;\r\n    };\r\n\r\n    DaysOfMonthCalendar.prototype.getDay = function (date) {\r\n        return _.find(this.days, function (day) {\r\n            return day.dateTime.hasSame(date, 'day');\r\n        });\r\n    };\r\n\r\n    DaysOfMonthCalendar.prototype.set = function (option, value) {\r\n        if (!this.options.hasOwnProperty(option))\r\n            return;\r\n\r\n        this.options[option] = value;\r\n\r\n        if (option === 'titleFormat')\r\n            this.updateTitle();\r\n        else if (option === 'showWeekdayHeaders')\r\n            this.toggleWeekdayHeaders();\r\n        else if (option === 'weekdayHeadersFormat')\r\n            this.updateWeekdayHeaders();\r\n    };\r\n\r\n    return DaysOfMonthCalendar;\r\n\r\n\r\n});\n","define('drops/calendarMonthView/calendarMonthView',[\r\n    'jquery',\r\n    'luxon',\r\n    'globalize',\r\n    'lq/drop',\r\n    'lq/constants',\r\n    'drops/calendar/calendarParameter',\r\n    'drops/calendar/daysofmonthcalendar'\r\n], function ($, luxon, globalize, Drop, constants, calendarParameter, DaysOfMonthCalendar) {\r\n    'use strict';\r\n\r\n    const { DateTime } = luxon;\r\n\r\n    var defaults = {\r\n        data: {\r\n            dataSource: null,\r\n            dateOutput: null,\r\n            tooltipOutput: null,\r\n            colorOutput: null,\r\n            fontColorOutput: null,\r\n            isUnavailableOutput: null,\r\n            calendarStartParameter: 'CalendarMonthStart',\r\n            calendarEndParameter: 'CalendarMonthEnd',\r\n            titleFormat: 'MMMM yyyy',\r\n            showWeekdayHeaders: false,\r\n            weekdayHeadersFormat: 'ddd',\r\n            eventing: {\r\n                clicked: {}\r\n            }\r\n        }\r\n    };\r\n\r\n    function CalendarMonthView(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n    };\r\n\r\n    Drop.extend(CalendarMonthView, Drop);\r\n\r\n    CalendarMonthView.typeName = 'CalendarMonthView';\r\n\r\n    CalendarMonthView.prototype.applyPosition = $.noop;\r\n\r\n    CalendarMonthView.prototype.loadCalendarData = function () {\r\n        if (!this.data.dataSource)\r\n            return;\r\n\r\n        var dateOfRequestedData = this.getOpenDate();\r\n\r\n        var self = this;\r\n        this.piping.queryDispatcher.backgroundDispatch(\r\n            this.data.dataSource,\r\n            function (response) {\r\n                if (dateOfRequestedData.equals(self.getOpenDate()))\r\n                    self.showColors(response.results);\r\n            });\r\n    };\r\n\r\n    CalendarMonthView.prototype.setSelectedDate = function (date) {\r\n        this.calendar.setSelectedDate(date);\r\n    };\r\n\r\n    CalendarMonthView.prototype.init = $.noop;\r\n\r\n    CalendarMonthView.prototype.clearSelectedDate = function () {\r\n        this.calendar.clearSelectedDate();\r\n    };\r\n\r\n    CalendarMonthView.prototype.getSelectedDate = function () {\r\n        return this.calendar.getSelectedDate();\r\n    };\r\n\r\n    CalendarMonthView.prototype.render = function () {\r\n        this.registerForDataSource();\r\n        this.prepareUi();\r\n        this.open(DateTime.now());\r\n    };\r\n\r\n    CalendarMonthView.prototype.prepareUi = function () {\r\n        this.calendar = new DaysOfMonthCalendar({\r\n            standalone: true,\r\n            titleFormat: this.data.titleFormat,\r\n            showWeekdayHeaders: this.data.showWeekdayHeaders,\r\n            weekdayHeadersFormat: this.data.weekdayHeadersFormat,\r\n            languageISOCode: this.piping.parameters.getValue('CurrentLanguageISOCode')\r\n        });\r\n\r\n        var self = this;\r\n        this.calendar.withOnNavigated(function () {\r\n            var parameters = self.piping.parameters;\r\n            var startOfCurrentMonth = calendarParameter.convert(self.getOpenDate().startOf('month'));\r\n            var endOfCurrentMonth = calendarParameter.convert(self.getOpenDate().endOf('month'));\r\n            parameters.locals.setValue(self.data.calendarStartParameter, startOfCurrentMonth);\r\n            parameters.locals.setValue(self.data.calendarEndParameter, endOfCurrentMonth);\r\n\r\n            self.loadCalendarData();\r\n            self.triggerEventIfEnabled('navigated', startOfCurrentMonth);\r\n        });\r\n\r\n        if (this.data.eventing.clicked.enabled) {\r\n            this.calendar.withOnClicked(function (date) {\r\n                var arg = globalize.format(date.toJSDate(), constants.licquidDateFormat);\r\n                self.triggerEventIfEnabled('clicked', arg);\r\n            });\r\n        }\r\n\r\n        this.$element\r\n            .addClass('calendar-view month-view')\r\n            .append(this.calendar.$element);\r\n    };\r\n\r\n    CalendarMonthView.prototype.registerForDataSource = function () {\r\n        if (this.data.dataSource) {\r\n            var self = this;\r\n            this.piping.datasources.registerDatasourceListener(this.data.dataSource, function (data) {\r\n                self.calendar.rerender();\r\n                self.showColors(data.results);\r\n            });\r\n        }\r\n    };\r\n\r\n    CalendarMonthView.prototype.open = function (date) {\r\n        this.calendar.open(date);\r\n\r\n        var parameters = this.piping.parameters;\r\n        parameters.locals.setValue(this.data.calendarStartParameter, calendarParameter.convert(this.getOpenDate().startOf('month')));\r\n        parameters.locals.setValue(this.data.calendarEndParameter, calendarParameter.convert(this.getOpenDate().endOf('month')));\r\n    };\r\n\r\n    CalendarMonthView.prototype.getOpenDate = function () {\r\n        return this.calendar.getOpenDate();\r\n    };\r\n\r\n    CalendarMonthView.prototype.showColors = function (results) {\r\n        var self = this;\r\n        _.each(results, function (row) {\r\n            var date = new Date(row[self.data.dateOutput]);\r\n            var backgroundColor = row[self.data.colorOutput];\r\n            var fontColor = row[self.data.fontColorOutput];\r\n            var tooltip = row[self.data.tooltipOutput];\r\n            var isUnavailable = row[self.data.isUnavailableOutput];\r\n            self.calendar.decorateDate(date, backgroundColor, fontColor, tooltip, isUnavailable);\r\n        });\r\n    };\r\n\r\n    CalendarMonthView.prototype.previous = function () {\r\n        this.open(this.getOpenDate().minus({ months: 1 }));\r\n        this.loadCalendarData();\r\n        this.triggerNavigatedEvent();\r\n    };\r\n\r\n    CalendarMonthView.prototype.next = function () {\r\n        this.open(this.getOpenDate().plus({ months: 1 }));\r\n        this.loadCalendarData();\r\n        this.triggerNavigatedEvent();\r\n    };\r\n\r\n    CalendarMonthView.prototype.triggerNavigatedEvent = function () {\r\n        this.triggerEventIfEnabled('navigated', this.getOpenDate().startOf('month'));\r\n    };\r\n\r\n    return CalendarMonthView;\r\n});\n","define('lq/windowSize',[\r\n    'jquery',\r\n    'lq/eventSource'\r\n], function ($, EventSource) {\r\n    'use strict';\r\n\r\n    /*\r\n     *\r\n     * IE fires resize event when any elements on the page is resized.\r\n     * This can be triggered by changes in height, styling, etc.\r\n     *\r\n     *\r\n     */\r\n\r\n    var $window = $(window);\r\n    \r\n    var WindowSize = function () {\r\n        EventSource.call(this, ['Changed']);\r\n\r\n        this.lastWidth = $window.width();\r\n        this.lastHeight = $window.height();\r\n\r\n        $window.on('resize', this.resize.bind(this));\r\n    };\r\n\r\n    WindowSize.prototype.resize = function() {\r\n        var newWidth = $window.width();\r\n        var newHeight = $window.height();\r\n\r\n        if (newWidth === this.lastWidth && newHeight === this.lastHeight)\r\n            return;\r\n\r\n        this.lastWidth = newWidth;\r\n        this.lastHeight = newHeight;\r\n\r\n        this.triggerChanged();\r\n    };\r\n    \r\n    return new WindowSize();\r\n});\n","\ndefine(\"tpl!drops/calendarWeekView/calendarWeekView.html\", [\"underscore\"], function(_) { return function(obj){\nvar __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\nwith(obj||{}){\n__p+='<div class=\"calendar-view week-view\">\\r\\n    <div class=\"calendar-title\">\\r\\n        <a class=\"previous-page clickable no-text-select\">〈 </a>\\r\\n        <a class=\"next-page clickable no-text-select\"> 〉</a>\\r\\n\\r\\n        <div class=\"date-as-title\"></div>\\r\\n    </div>\\r\\n\\r\\n    <div class=\"weekday-headers-row\">\\r\\n        <div class=\"weekday-headers\"></div>\\r\\n    </div>\\r\\n\\r\\n    <div class=\"calendar-main\">\\r\\n\\r\\n        <div class=\"hours\">\\r\\n            \\r\\n        </div>\\r\\n\\r\\n        <div class=\"weekdays\"></div>\\r\\n\\r\\n        <div class=\"clear\"></div>\\r\\n\\r\\n    </div>\\r\\n</div>';\n}\nreturn __p;\n};});\n\n","define('drops/calendarWeekView/calendarWeekView',[\r\n    'jquery',\r\n    'underscore',\r\n    'globalize',\r\n    'luxon',\r\n    'lq/constants',\r\n    'lq/drop',\r\n    'drops/calendar/calendarParameter',\r\n    'drops/calendar/calendarItems',\r\n    'lq/windowSize',\r\n    'lq/nestingContext',\r\n    'tpl!drops/calendarWeekView/calendarWeekView.html',\r\n    'lq/onlongpress'\r\n], function ($, _, globalize, luxon, constants, Drop, calendarParameter, calendarItems, windowSize, NestingContext, template, OnLongPress) {\r\n    'use strict';\r\n\r\n    const { DateTime, Interval } = luxon;\r\n\r\n    var defaults = {\r\n        data: {\r\n            dataSource: null,\r\n            dataSourceType: 'datetimes',\r\n            dateOutput: null,\r\n            startOutput: null,\r\n            endOutput: null,\r\n            calendarStartParameter: 'CalendarWeekStart',\r\n            calendarEndParameter: 'CalendarWeekEnd',\r\n            timeslotSize: 30,\r\n            dayStart: 0,\r\n            dayEnd: (60 * 24) - 1,\r\n            titleFormat: 'D',\r\n            dayHeaderFormat: 'ddd, MMM dd',\r\n            timeslotHourFormat: 'HH:mm',\r\n            hideTitleEndDate: false\r\n        },\r\n        childDrops: [\r\n            {\r\n                data: { type: 'CalendarItem' }\r\n            }\r\n        ]\r\n    };\r\n\r\n    function CalendarWeekView(options) {\r\n        Drop.call(this, $(template()), defaults, options);\r\n        // right now we're not really doing anything with the selected date in the week view\r\n        this.selectedDate = null;\r\n        this.bindings = [];\r\n    };\r\n\r\n    Drop.extend(CalendarWeekView, Drop);\r\n\r\n    CalendarWeekView.typeName = 'CalendarWeekView';\r\n\r\n    CalendarWeekView.prototype.applyPosition = $.noop;\r\n\r\n    CalendarWeekView.prototype.loadCalendarData = function () {\r\n        if (!this.data.dataSource)\r\n            return;\r\n\r\n        var dateOfRequestedData = this.date;\r\n\r\n        var self = this;\r\n        this.piping.queryDispatcher.backgroundDispatch(\r\n            this.data.dataSource,\r\n            function (response) {\r\n                if (dateOfRequestedData.equals(self.date))\r\n                    self.showItems(response.outputs, response.results);\r\n            });\r\n\r\n        if (!this.data.activeTSDataSource)\r\n            return;\r\n\r\n        this.piping.queryDispatcher.backgroundDispatch(\r\n            this.data.activeTSDataSource,\r\n            function (response) {\r\n                if (dateOfRequestedData.equals(self.date))\r\n                    self.setActiveTimeslots(response.results);\r\n            });\r\n    };\r\n\r\n    CalendarWeekView.prototype.setSelectedDate = function (date) {\r\n        this.selectedDate = date;\r\n    };\r\n\r\n    CalendarWeekView.prototype.clearSelectedDate = function () {\r\n        this.selectedDate = null;\r\n    };\r\n\r\n    CalendarWeekView.prototype.getSelectedDate = function () {\r\n        return this.selectedDate;\r\n    };\r\n\r\n    CalendarWeekView.prototype.init = function () {\r\n        this.nestingContext = new NestingContext(this.piping);\r\n        this.goToDefaultPosition();\r\n        this.bindScrollPositionParameter();\r\n    };\r\n\r\n    CalendarWeekView.prototype.goToDefaultPosition = function () {\r\n        if (!$.isNumeric(this.data.defaultScrollPosition)) return;\r\n\r\n        var slotNumber = Math.floor((this.data.defaultScrollPosition - this.data.dayStart) / this.data.timeslotSize);\r\n        var $slot = this.$hours.children('.timeslot').eq(slotNumber);\r\n        this.$container.scrollTop(this.$container.scrollTop() + $slot.position().top);\r\n    };\r\n\r\n    CalendarWeekView.prototype.bindScrollPositionParameter = function () {\r\n        if (this.data.scrollPositionParameter) {\r\n            var binding = this.piping.parameters.subscribeForUpdates(this.data.scrollPositionParameter, this.goToScrollToPosition.bind(this), true);\r\n\r\n            if (!this.bindings) this.bindings = [];\r\n\r\n            this.bindings.push(binding);\r\n        }\r\n    };\r\n\r\n    CalendarWeekView.prototype.goToScrollToPosition = function () {\r\n        var scrollPosition = this.piping.parameters.getValue(this.data.scrollPositionParameter);\r\n\r\n        if (!$.isNumeric(scrollPosition)) return;\r\n\r\n        var slotNumber = Math.floor((scrollPosition - this.data.dayStart) / this.data.timeslotSize);\r\n        var $slot = this.$hours.children('.timeslot').eq(slotNumber);\r\n        this.$container.scrollTop(this.$container.scrollTop() + $slot.position().top);\r\n    };\r\n\r\n    CalendarWeekView.prototype.render = function () {\r\n        this.registerForDataSource();\r\n        this.prepareUi();\r\n        this.createWeekdayHeaders();\r\n        this.createWeekdayColumns();\r\n        this.createTimeslots();\r\n        this.open(DateTime.now());\r\n\r\n        var self = this;\r\n        _.each(this.$columns, function ($weekday, dayOfWeek) {\r\n            if ($(self.$headers[dayOfWeek]).hasClass('today')) {\r\n                $weekday.children().addClass('today');\r\n            }\r\n        });\r\n    };\r\n\r\n    CalendarWeekView.prototype.prepareUi = function () {\r\n        this.$container = this.$element.find('.calendar-main');\r\n        this.$title = this.$element.find('.date-as-title');\r\n        this.$hours = this.$element.find('.hours');\r\n        this.$weekdays = this.$element.find('.weekdays');\r\n        this.$weekdayHeaders = this.$element.find('.weekday-headers');\r\n\r\n        this.$backPage = this.$element.find('.previous-page');\r\n        this.$nextPage = this.$element.find('.next-page');\r\n\r\n        var self = this;\r\n        this.$backPage\r\n            .on('click', function () {\r\n                self.previous();\r\n            });\r\n        this.$nextPage\r\n            .on('click', function () {\r\n                self.next();\r\n            });\r\n\r\n        this.events(windowSize,\r\n            {\r\n                'Changed': this.updateHeadersWidth.bind(this)\r\n            });\r\n    };\r\n\r\n    CalendarWeekView.prototype.afterShown = function () {\r\n        this.updateHeadersWidth();\r\n        this.updateHeadersLeftMargin();\r\n    };\r\n\r\n    CalendarWeekView.prototype.createWeekdayHeaders = function () {\r\n        this.$headers = _.map(_.range(0, 7), function () {\r\n            return $('<div />')\r\n                .addClass('weekday-header');\r\n        });\r\n        this.$weekdayHeaders.append(this.$headers);\r\n    };\r\n\r\n    CalendarWeekView.prototype.createWeekdayColumns = function () {\r\n        this.$columns = _.map(_.range(0, 7), function () {\r\n            return $('<div />')\r\n                .addClass('weekday')\r\n                .append(\r\n                    $('<div class=\"calendar-item-container\"/>')\r\n                );\r\n        });\r\n        this.$weekdays.append(this.$columns);\r\n    };\r\n\r\n    CalendarWeekView.prototype.createTimeslots = function () {\r\n        var timeslots = _.range(this.data.dayStart, this.data.dayEnd, this.data.timeslotSize);\r\n\r\n        var self = this;\r\n        _.each(this.$columns, function ($weekday, dayOfWeek) {\r\n            var $timeslots = _.map(timeslots, function (startMinute) {\r\n                var $slot = $('<div />')\r\n                    .addClass('timeslot')\r\n                    .data('dayOfWeek', dayOfWeek)\r\n                    .data('time', startMinute);\r\n\r\n                new OnLongPress().applyLongPressOnElement($slot, self,\r\n                    function(e) {\r\n                        return self.determineEventArg(dayOfWeek, startMinute);\r\n                    }, function() {\r\n                        self.timeslotClicked(dayOfWeek, startMinute);\r\n                    });\r\n\r\n                $slot.on(\"mousedown\", calendarItems.timeslotMousedown.bind(self, $weekday, dayOfWeek));\r\n                $slot.on(\"mouseup\", calendarItems.timeslotMouseup.bind(self));\r\n                $slot.on(\"mousemove\", calendarItems.timeslotMousemove.bind(self));\r\n\r\n                return $slot;\r\n            });\r\n            $weekday.append($timeslots);\r\n        });\r\n\r\n        var $hours = _.map(timeslots, function (timeslot) {\r\n            var date = new Date(1970, 0, 1);\r\n            date.setMinutes(timeslot);\r\n\r\n            return $('<div />')\r\n                .addClass('timeslot')\r\n                .text(globalize.format(date, self.data.timeslotHourFormat));\r\n        });\r\n        this.$hours\r\n            .append($('<div class=\"calendar-header\"></div>'))\r\n            .append($hours);\r\n    };\r\n\r\n    CalendarWeekView.prototype.determineEventArg = function (dayOfWeek, startMinute) {\r\n        var dateAndTime = this.monday\r\n            .plus({ days: dayOfWeek })\r\n            .plus({ minutes: startMinute });\r\n        return globalize.format(dateAndTime.toJSDate(), constants.licquidDateFormat);\r\n    };\r\n\r\n    CalendarWeekView.prototype.timeslotClicked = function (dayOfWeek, startMinute) {\r\n        var eventArg = this.determineEventArg(dayOfWeek, startMinute);\r\n        this.triggerEvent(this.data.eventing.clicked.raisedEventName, eventArg);\r\n    };\r\n\r\n    CalendarWeekView.prototype.registerForDataSource = function () {\r\n        if (this.data.dataSource) {\r\n            var self = this;\r\n            this.piping.datasources.registerDatasourceListener(this.data.dataSource, function (data) {\r\n                self.removeCalendarItems();\r\n                self.showItems(data.outputs, data.results);\r\n            });\r\n        }\r\n\r\n        if (this.data.activeTSDataSource) {\r\n            var self = this;\r\n            this.piping.datasources.registerDatasourceListener(this.data.activeTSDataSource, function (data) {\r\n                self.setActiveTimeslots(data.results);\r\n            });\r\n        }\r\n    };\r\n\r\n    CalendarWeekView.prototype.previous = function () {\r\n        this.open(this.date.minus({ weeks: 1}));\r\n        this.loadCalendarData();\r\n        this.triggerNavigatedEvent();\r\n    };\r\n\r\n    CalendarWeekView.prototype.next = function () {\r\n        this.open(this.date.plus({ weeks: 1}));\r\n        this.loadCalendarData();\r\n        this.triggerNavigatedEvent();\r\n    };\r\n\r\n    CalendarWeekView.prototype.triggerNavigatedEvent = function () {\r\n        this.triggerEventIfEnabled('navigated', this.getStartOfCurrentWeek());\r\n    };\r\n\r\n    CalendarWeekView.prototype.open = function (date) {\r\n        this.date = date;\r\n\r\n        this.monday = this.date.startOf('week');\r\n        this.sunday = this.date.endOf('week');\r\n\r\n        this.updateTitle();\r\n        this.updateWeekdayHeaders();\r\n        this.removeCalendarItems();\r\n        this.updateHeadersWidth();\r\n        this.updateHeadersLeftMargin();\r\n\r\n        var parameters = this.piping.parameters;\r\n        parameters.locals.setValue(this.data.calendarStartParameter, calendarParameter.convert(this.getStartOfCurrentWeek()));\r\n        parameters.locals.setValue(this.data.calendarEndParameter, calendarParameter.convert(this.getEndOfCurrentWeek()));\r\n    };\r\n\r\n    CalendarWeekView.prototype.getStartOfCurrentWeek = function() {\r\n        return this.getOpenDate().startOf('week');\r\n    };\r\n\r\n    CalendarWeekView.prototype.getEndOfCurrentWeek = function() {\r\n        return this.getOpenDate().endOf('week');\r\n    };\r\n\r\n    CalendarWeekView.prototype.updateTitle = function () {\r\n        if (!this.data.hideTitleEndDate) {\r\n            var title = globalize.format(this.monday.toJSDate(), this.data.titleFormat) + ' - ' + globalize.format(this.sunday.toJSDate(), this.data.titleFormat);\r\n        } else {\r\n            var title = globalize.format(this.monday.toJSDate(), this.data.titleFormat);\r\n        }\r\n        this.$title.text(title);\r\n    };\r\n\r\n    CalendarWeekView.prototype.updateWeekdayHeaders = function() {\r\n        var self = this;\r\n        _.each(this.$headers, function ($header, i) {\r\n            var date = self.monday.plus({ days: i });\r\n            var weekDayTitle = globalize.format(date.toJSDate(), self.data.dayHeaderFormat);\r\n            $header.text(weekDayTitle);\r\n            var today = DateTime.now();\r\n            if (date.hasSame(today, 'day')) {\r\n                $header.addClass('today');\r\n            }\r\n        });\r\n    };\r\n\r\n    CalendarWeekView.prototype.updateHeadersWidth = function () {\r\n        // WHY give the cells in the header row the same width as the weekday columns\r\n        // this handles the appearance/dissapearance of a scrollbar\r\n        var self = this;\r\n        _.defer(function () {\r\n            self.$weekdayHeaders.width(self.$weekdays.width());\r\n        });\r\n    };\r\n\r\n    CalendarWeekView.prototype.updateHeadersLeftMargin = function () {\r\n        // WHY mergin on the left should be equal to the width of the column that contains the hours\r\n        var self = this;\r\n        _.defer(function() {\r\n            self.$weekdayHeaders.css('margin-left', self.$hours.outerWidth());\r\n        });\r\n    };\r\n\r\n    CalendarWeekView.prototype.getOpenDate = function () {\r\n        return this.date;\r\n    };\r\n\r\n    CalendarWeekView.prototype.showItems = function (outputs, rows) {\r\n        var self = this;\r\n\r\n        var startOfCurrentWeek = this.getStartOfCurrentWeek();\r\n        var endOfCurrentWeek = this.getEndOfCurrentWeek();\r\n\r\n        var items = _.chain(rows)\r\n            .map(function(row) {\r\n                var startOfItem = self.getDatetimeFromRow(row, self.data.startOutput);\r\n                var endOfItem = self.getDatetimeFromRow(row, self.data.endOutput);\r\n                var currentWeekInterval = Interval.fromDateTimes(startOfCurrentWeek, endOfCurrentWeek);\r\n\r\n                var startIsBetween = currentWeekInterval.contains(startOfItem);\r\n                var endIsBetween = currentWeekInterval.contains(endOfItem);\r\n\r\n                var diff = 0;\r\n                if (!startIsBetween || !endIsBetween) { // Multiweek case\r\n                    diff = Math.ceil(endOfItem.endOf('day').diff(startOfItem.startOf('day'), 'days').days);\r\n                } else {\r\n                    diff = endOfItem.weekday - startOfItem.weekday + 1;\r\n                }\r\n\r\n                return _.chain(_.range(diff))\r\n                    .map(function (dayDifference) {\r\n                        return startOfItem.plus({ days: dayDifference });\r\n                    })\r\n                    .filter(function (dateTime) {\r\n                        return (startOfCurrentWeek <= dateTime)\r\n                            && (dateTime <= endOfCurrentWeek)\r\n                            && (!dateTime.startOf('day').equals(endOfItem));\r\n                    })\r\n                    .map(function(dateTime) {\r\n                        var startOfItemInCurrentDay = dateTime.hasSame(startOfItem, 'day') ?\r\n                            dateTime : dateTime.startOf('day');\r\n                        var endOfItemInCurrentDay = dateTime.hasSame(endOfItem, 'day') ?\r\n                            endOfItem : dateTime.endOf('day');\r\n\r\n                        var weekday = startOfItemInCurrentDay.weekday - 1;\r\n                        var $weekday = self.$columns[weekday].find('.calendar-item-container');\r\n\r\n                        return $.extend(true, {}, self.childDrops[0], {\r\n                            data: {\r\n                                $target: $weekday,\r\n                                startOfDay: startOfItemInCurrentDay.startOf('day').plus({ minutes: self.data.dayStart }),\r\n                                endOfDay: endOfItemInCurrentDay.startOf('day').plus({ minutes: self.data.dayEnd }),\r\n                                startOfItem: startOfItemInCurrentDay,\r\n                                endOfItem: endOfItemInCurrentDay,\r\n                                row: row,\r\n                                outputs: outputs,\r\n                                eventArg: self.data.eventArg,\r\n                                tooltipOutput: self.data.tooltipOutput,\r\n                                idOutput: self.data.idOutput\r\n                            }\r\n                        });\r\n                    })\r\n                    .value();\r\n            })\r\n            .flatten()\r\n            .value();\r\n\r\n        calendarItems.fillUp(this, items)\r\n            .then(function () {\r\n                self.nestingContext.executeDataSources();\r\n            }).catch(function (e) {\r\n                self.piping.errorHandler.showErrorDialog(e);\r\n            });\r\n    };\r\n\r\n    CalendarWeekView.prototype.removeCalendarItems = function () {\r\n        _.each(this.pool, function (drop) {\r\n            drop.$element.remove();\r\n        });\r\n        this.removeAllDrops();\r\n    };\r\n\r\n    CalendarWeekView.prototype.getDatetimeFromRow = function (row, output) {\r\n        if (this.data.dataSourceType === 'datetimes')\r\n            return DateTime.fromISO(row[output]);\r\n\r\n        var dateTime = DateTime.fromISO(row[this.data.dateOutput]).startOf('day');\r\n        var time = row[output];\r\n        return dateTime.plus({ seconds: time });\r\n    };\r\n\r\n    CalendarWeekView.prototype.setActiveTimeslots = function (rows) {\r\n        var self = this;\r\n\r\n        var $timeslots = self.$weekdays.find('.timeslot');\r\n        var $activeTimeslots = $();\r\n\r\n        rows.forEach(function (row) {\r\n            var activeTSStart = self.getDatetimeFromRow(row, self.data.activeTSStartOutput).toJSDate();\r\n            var activeTSEnd = self.getDatetimeFromRow(row, self.data.activeTSEndOutput).toJSDate();\r\n\r\n            var $filteredTimeslots = $timeslots.filter(function () {\r\n                var dayOfWeek = $(this).data('dayOfWeek');\r\n                var time = $(this).data('time');\r\n\r\n                return dayOfWeek + 1 === activeTSStart.getDay()\r\n                    && time >= self.getTimeOfDay(activeTSStart)\r\n                    && time < self.getTimeOfDay(activeTSEnd);\r\n            });\r\n\r\n            $activeTimeslots.push(...$filteredTimeslots);\r\n        });\r\n\r\n        $activeTimeslots.addClass('active-timeslot');\r\n        $timeslots.not($activeTimeslots).removeClass('active-timeslot');\r\n    };\r\n\r\n    CalendarWeekView.prototype.getTimeOfDay = function (date) {\r\n        return date.getHours() * 60 + date.getMinutes();\r\n    };\r\n\r\n    CalendarWeekView.prototype.unsubscribeEventHandlers = function () {\r\n        _.each(this.bindings, function (binding) {\r\n            binding.dispose();\r\n        });\r\n\r\n        this.bindings = undefined;\r\n    };\r\n\r\n    return CalendarWeekView;\r\n});\r\n\n","\ndefine(\"tpl!drops/calendarYearView/calendarYearView.html\", [\"underscore\"], function(_) { return function(obj){\nvar __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\nwith(obj||{}){\n__p+='<div class=\"calendar-view year-view\">\\r\\n\\r\\n    <div class=\"calendar-title\">\\r\\n        <a class=\"previous-page clickable no-text-select\">〈 </a>\\r\\n        <a class=\"next-page clickable no-text-select\"> 〉</a>\\r\\n\\r\\n        <div class=\"date-as-title\"></div>\\r\\n    </div>\\r\\n\\r\\n    <div class=\"calendar-main\">\\r\\n    </div>\\r\\n\\r\\n</div>';\n}\nreturn __p;\n};});\n\n","define('drops/calendarYearView/calendarYearView',[\r\n    'jquery',\r\n    'underscore',\r\n    'luxon',\r\n    'globalize',\r\n    'lq/drop',\r\n    'lq/constants',\r\n    'drops/calendar/calendarParameter',\r\n    'drops/calendar/daysofmonthcalendar',\r\n    'tpl!drops/calendarYearView/calendarYearView.html'\r\n], function ($, _, luxon, globalize, Drop, constants, calendarParameter, DaysOfMonthCalendar, template) {\r\n    'use strict';\r\n\r\n    const { DateTime } = luxon;\r\n\r\n    var defaults ={\r\n        data: {\r\n            dataSource: null,\r\n            dateOutput: null,\r\n            tooltipOutput: null,\r\n            colorOutput: null,\r\n            fontColorOutput: null,\r\n            isUnavailableOutput: null,\r\n            calendarStartParameter: 'CalendarYearStart',\r\n            calendarEndParameter: 'CalendarYearEnd',\r\n            monthTitleFormat: 'MMMM yyyy',\r\n            showWeekdayHeaders: false,\r\n            weekdayHeadersFormat: 'ddd',\r\n            eventing: {\r\n                clicked: {}\r\n            }\r\n        }\r\n    };\r\n\r\n    function CalendarYearView(options) {\r\n        Drop.call(this, $(template()), defaults, options);\r\n        this.selectedDate = null;\r\n    };\r\n\r\n    Drop.extend(CalendarYearView, Drop);\r\n\r\n    CalendarYearView.typeName = 'CalendarYearView';\r\n\r\n    CalendarYearView.prototype.loadCalendarData = function () {\r\n        if (!this.data.dataSource)\r\n            return;\r\n\r\n        var dateOfRequestedData = this.date;\r\n\r\n        var self = this;\r\n        this.piping.queryDispatcher.backgroundDispatch(\r\n            this.data.dataSource,\r\n            function (response) {\r\n                if (dateOfRequestedData.equals(self.date))\r\n                    self.showColors(response.results);\r\n            });\r\n    };\r\n\r\n    CalendarYearView.prototype.setSelectedDate = function (date) {\r\n        this.clearSelectedDate();\r\n\r\n        var calendar = this.getCalendarForDate(date);\r\n        calendar.setSelectedDate(date);\r\n\r\n        this.selectedDate = date;\r\n    };\r\n\r\n    CalendarYearView.prototype.clearSelectedDate = function () {\r\n        if (!this.selectedDate)\r\n            return;\r\n\r\n        var calendar = this.getCalendarForDate(this.selectedDate);\r\n        calendar.clearSelectedDate();\r\n\r\n        this.selectedDate = null;\r\n    };\r\n\r\n    CalendarYearView.prototype.init = $.noop;\r\n\r\n    CalendarYearView.prototype.getSelectedDate = function () {\r\n        return this.selectedDate;\r\n    };\r\n\r\n    CalendarYearView.prototype.getCalendarForDate = function (date) {\r\n        var calendarIndex = date.get('month');\r\n        return this.calendars[calendarIndex];\r\n    };\r\n\r\n    CalendarYearView.prototype.render = function () {\r\n        this.registerForDataSource();\r\n        this.prepareUi();\r\n        this.open(DateTime.now());\r\n    };\r\n\r\n    CalendarYearView.prototype.prepareUi = function () {\r\n        var setup = {\r\n            standalone: false,\r\n            titleFormat: this.data.monthTitleFormat,\r\n            showWeekdayHeaders: this.data.showWeekdayHeaders,\r\n            weekdayHeadersFormat: this.data.weekdayHeadersFormat,\r\n            languageISOCode: this.piping.parameters.getValue('CurrentLanguageISOCode')\r\n        };\r\n\r\n        var self = this;\r\n        this.calendars = _.map(_.range(0, 12), function () {\r\n            return new DaysOfMonthCalendar(setup);\r\n        });\r\n\r\n        if (this.data.eventing.clicked.enabled) {\r\n            _.each(this.calendars, function (calendar) {\r\n                calendar.withOnClicked(function (date) {\r\n                    if (self.selectedDate && !date.hasSame(self.selectedDate, 'month'))\r\n                        self.clearSelectedDate();\r\n                    self.selectedDate = date;\r\n\r\n                    var arg = globalize.format(date.toJSDate(), constants.licquidDateFormat);\r\n                    self.triggerEventIfEnabled('clicked', arg);\r\n                });\r\n            });\r\n        }\r\n\r\n        this.$title = this.$element.find('.date-as-title');\r\n\r\n        var $calendars = _.pluck(this.calendars, '$element');\r\n        this.$element.find('.calendar-main').append($calendars);\r\n\r\n        this.$element.find('.previous-page')\r\n            .on('click', function () {\r\n                self.previous();\r\n            });\r\n        this.$element.find('.next-page')\r\n            .on('click', function () {\r\n                self.next();\r\n            });\r\n    };\r\n\r\n    CalendarYearView.prototype.registerForDataSource = function () {\r\n        if (this.data.dataSource) {\r\n            var self = this;\r\n            this.piping.datasources.registerDatasourceListener(this.data.dataSource, function (data) {\r\n                _.each(self.calendars, function(calendar) {\r\n                    calendar.rerender();\r\n                });\r\n                self.showColors(data.results);\r\n            });\r\n        }\r\n    };\r\n\r\n    CalendarYearView.prototype.previous = function () {\r\n        this.open(this.date.minus({ years: 1 }));\r\n        this.loadCalendarData();\r\n        this.triggerNavigatedEvent();\r\n    };\r\n\r\n    CalendarYearView.prototype.next = function () {\r\n        this.open(this.date.plus({ years: 1 }));\r\n        this.loadCalendarData();\r\n        this.triggerNavigatedEvent();\r\n    };\r\n\r\n    CalendarYearView.prototype.triggerNavigatedEvent = function () {\r\n        this.triggerEventIfEnabled('navigated', this.getStartOfCurrentYear());\r\n    };\r\n\r\n    CalendarYearView.prototype.open = function (date) {\r\n        this.date = date;\r\n\r\n        this.$title.text(this.date.get('year'));\r\n\r\n        for (var i = 0; i < 12; i++) {\r\n            var calendarDate = this.date.startOf('year').plus({ months: i });\r\n            this.calendars[i].open(calendarDate);\r\n        }\r\n\r\n        var parameters = this.piping.parameters;\r\n        parameters.locals.setValue(this.data.calendarStartParameter, this.getStartOfCurrentYear());\r\n        parameters.locals.setValue(this.data.calendarEndParameter, this.getEndOfCurrentYear());\r\n    };\r\n\r\n    CalendarYearView.prototype.getStartOfCurrentYear = function() {\r\n        return calendarParameter.convert(this.date.startOf('year'));\r\n    };\r\n\r\n    CalendarYearView.prototype.getEndOfCurrentYear = function () {\r\n        return calendarParameter.convert(this.date.endOf('year'));\r\n    };\r\n\r\n    CalendarYearView.prototype.showColors = function (results) {\r\n        var self = this;\r\n        _.each(results, function (row) {\r\n            var date = new Date(row[self.data.dateOutput]);\r\n            var backgroundColor = row[self.data.colorOutput];\r\n            var fontColor = row[self.data.fontColorOutput];\r\n            var tooltip = row[self.data.tooltipOutput];\r\n            var isUnavailable = row[self.data.isUnavailableOutput];\r\n            var calendar = self.calendars[date.getMonth()];\r\n            calendar.decorateDate(date, backgroundColor, fontColor, tooltip, isUnavailable);\r\n        });\r\n    };\r\n\r\n    CalendarYearView.prototype.getOpenDate = function () {\r\n        return this.date;\r\n    };\r\n\r\n    return CalendarYearView;\r\n});\n","define('drops/bucketDrop/bucketDrop',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq',\r\n    'lq/style',\r\n    'lq/drop',\r\n    'lq/responsive'\r\n], function (\r\n    $,\r\n    _,\r\n    main,\r\n    Style,\r\n    Drop,\r\n    responsive) {\r\n    'use strict';\r\n\r\n    function BucketDrop(options) {\r\n        Drop.call(this, $('<div class=\"canvas-target\" />'), options);\r\n\r\n        this.$element.css({\r\n            'overflow-y': 'auto',\r\n            'overflow-x': 'hidden'\r\n        });\r\n\r\n        Style.renderStyles(this, null, this.$element);\r\n\r\n        //this.data.url = 'http://localhost:25000';\r\n    }\r\n\r\n    Drop.extend(BucketDrop, Drop);\r\n\r\n    BucketDrop.typeName = 'BucketDrop';\r\n\r\n    BucketDrop.prototype.preRender = function () {\r\n        this.applyPosition();\r\n    };\r\n\r\n    BucketDrop.prototype.postRender = function () {\r\n        var baseUrl = (this.data.url || main.getTenantUploads('Buckets')) + '/';\r\n\r\n        var self = this;\r\n        $.get(baseUrl + this.data.definition + requirejs.s.contexts._.config.urlArgs(null, ''), function (bucketInfo) {\r\n            _.each(bucketInfo.files.stylesheets, function (stylesheet) {\r\n                var el = document.createElement('link');\r\n                el.setAttribute('rel', 'stylesheet');\r\n                el.setAttribute('type', 'text/css');\r\n                el.setAttribute('href', baseUrl + stylesheet + requirejs.s.contexts._.config.urlArgs(null, ''));\r\n                document.getElementsByTagName('head')[0].appendChild(el);\r\n            });\r\n\r\n            var loadedCount = bucketInfo.files.scripts.length;\r\n            _.each(bucketInfo.files.scripts, function (file) {\r\n                var script = document.createElement('script');\r\n                script.async = false; // make sure the script are executed in the correct order\r\n                script.setAttribute('type', 'text/javascript');\r\n                script.setAttribute('src', baseUrl + file + requirejs.s.contexts._.config.urlArgs(null, ''));\r\n                script.onload = function () {\r\n                    if (loadedCount === 1) {\r\n                        window[bucketInfo.id].default({\r\n                            id: self.data.id,\r\n                            bucketsBaseUrl: baseUrl,\r\n                            configuration: self.data.configuration,\r\n                            targetElement: self.$element.get(0),\r\n                            piping: self.piping,\r\n                            triggerEvent: self.triggerEventIfEnabled.bind(self),\r\n                            deviceType: responsive.getDeviceType().name,\r\n                            url: {\r\n                                runtime: main.getTenantUrl(''),\r\n                                uploads: main.getTenantUploads(''),\r\n                                root: main.getBaseUrl('')\r\n                            }\r\n                        });\r\n\r\n                        _.each(bucketInfo.methods, function (method) {\r\n                            self['licquidMethod_' + method.name] = self.callMethodOnBucket.bind(self, bucketInfo.id, method.name);\r\n                        });\r\n                    } else {\r\n                        loadedCount--;\r\n                    }\r\n                };\r\n                document.getElementsByTagName('head')[0].appendChild(script);\r\n            });\r\n        });\r\n    };\r\n\r\n    BucketDrop.prototype.callMethodOnBucket = function (bucketId, methodName, args) {\r\n        window[bucketId][methodName](args);\r\n    };\r\n\r\n    return BucketDrop;\r\n});\n","define('drops/captcha/captcha',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'jquery.placeholder'\r\n], function ($, _, lq, Drop, Style) {\r\n    'use strict';\r\n    \r\n    function Captcha(options) {\r\n        Drop.call(this, $('<div/>'), options);\r\n        \r\n        this.$image = $('<div />')\r\n            .css({\r\n                'width': '100%',\r\n                'height': '100%',\r\n                'overflow': 'hidden'\r\n            })\r\n            .attr('tabindex', this.data.tabIndex)\r\n            .appendTo(this.$element);\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize');\r\n\r\n        Style.renderStyles(this, null, this.$image);\r\n    };\r\n\r\n    Drop.extend(Captcha, Drop);\r\n\r\n    Captcha.typeName = 'Captcha';\r\n\r\n    Captcha.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n        this.setACaptcha();\r\n    };\r\n\r\n    Captcha.prototype.setACaptcha = function () {\r\n        this.$image\r\n            .css({\r\n                'background-image': 'url(' + this.createCaptchaUrl() + ')',\r\n                'background-size': '100% 100%',\r\n                'background-repeat': 'no-repeat'\r\n            });\r\n    };\r\n\r\n    Captcha.prototype.createCaptchaUrl = function () {\r\n        return lq.getTenantUrl('LicquidAction/Captcha?t=' + new Date().getTime());\r\n    };\r\n    \r\n    Captcha.prototype.refreshCaptcha = function () {\r\n        this.setACaptcha();\r\n    };\r\n    \r\n    return Captcha;\r\n});\r\n\n","define('drops/carousel/carousel',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/drop',\r\n    'lq/constants',\r\n    'lq/responsive',\r\n    'jquery.bxslider/jquery.bxslider'\r\n], function ($, _, Drop, constants, responsive) {\r\n    'use strict';\r\n\r\n    var controls = [\r\n        'default',\r\n        'custom'\r\n    ];\r\n\r\n    var defaults = {\r\n        data: {\r\n            size: { x: 200, y: 150 },\r\n            showPager: true,\r\n            showControls: true,\r\n            controls: 'default',\r\n            opacity: 100,\r\n            border: {\r\n                width: 5,\r\n                color: 'rgba(255, 255, 255, 1)',\r\n                style: 'solid',\r\n                top: true,\r\n                left: true,\r\n                bottom: true,\r\n                right: true\r\n            },\r\n            background: {\r\n                enabled: true,\r\n                color: 'rgb(255, 255, 255)'\r\n            }\r\n        }\r\n    };\r\n\r\n    function Carousel(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.slideChanged = 0;\r\n\r\n        this.sliderActive = false;\r\n        this.onChangeFunctions = [];\r\n\r\n        this.childDrops = _.sortBy(this.childDrops, function (child) {\r\n            return child.data.index;\r\n        });\r\n\r\n        this.$shadowWrapper = $('<div />')\r\n            .css({\r\n                height: '100%',\r\n                width: '100%'\r\n            });\r\n\r\n        this.$sliderUl = $('<ul />')\r\n            .addClass('bxslider')\r\n            .css({margin:'0'})\r\n            .width(this.data.size.x)\r\n            .height('100%')\r\n            .appendTo(this.$shadowWrapper);\r\n\r\n        this.$shadowWrapper.appendTo(this.$element);\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize')\r\n            .css({\r\n                opacity: Number(this.data.opacity) / 100,\r\n                paddingBottom: '30px'\r\n            });\r\n\r\n        this.renderDropShadow();\r\n    }\r\n\r\n    Drop.extend(Carousel, Drop);\r\n\r\n    Carousel.typeName = 'Carousel';\r\n\r\n    Carousel.controls = controls;\r\n\r\n    Carousel.prototype.renderDropShadow = function () {\r\n        if (this.data.hasDrop) {\r\n            this.$shadowWrapper\r\n                .css({\r\n                    boxShadow: this.data.dropSize + 'px ' + this.data.dropSize + 'px ' + this.data.dropBlur + 'px #888888'\r\n                });\r\n        } else {\r\n            this.$shadowWrapper\r\n                .css('boxShadow', 'none');\r\n        }\r\n    };\r\n\r\n    Carousel.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n    };\r\n\r\n    Carousel.prototype.render = function ($element) {\r\n        return this.createAndRenderDrops($element);\r\n    };\r\n\r\n    Carousel.prototype.postRender = function () {\r\n        _.defer(this.initSlider.bind(this));\r\n    };\r\n\r\n    Carousel.prototype.hasPanels = function() {\r\n        return !!_.findWhere(this.pool, { type: 'CarouselPanel' });\r\n    };\r\n\r\n    Carousel.prototype.initSlider = function () {\r\n    \tvar self = this;\r\n\r\n    \tvar onSlideHandler = function (currentElement, currentPosition, comingPosition) {\r\n    \t\tself.setInitialIndex(comingPosition);\r\n            self.slideChanged = self.slideChanged + 1;\r\n\r\n            for (var i = 0; i < self.$sliderUl[0].childNodes.length; i++) {\r\n                var temp = self.$sliderUl[0].childNodes[i];\r\n                self.disableTabbing($(temp));\r\n            }\r\n            self.enableTabbing($(currentElement));\r\n\r\n            return true;\r\n    \t};\r\n\r\n        if (this.hasPanels()) {\r\n            var deviceType = responsive.getDeviceType();\r\n\r\n            self.$element.children('li').appendTo(self.$sliderUl);\r\n\r\n\t        self.slider = self.$sliderUl.bxSlider({\r\n\t            mode: 'horizontal',\r\n\t            hideControlOnEnd: true,\r\n\t            responsive: true,\r\n\t            video: true,\r\n                touchEnabled: deviceType === constants.deviceTypes.Phone || deviceType === constants.deviceTypes.Tablet,\r\n\t            oneToOneTouch: false,\r\n\r\n\t            controls: this.data.showControls && this.data.controls === 'default',\r\n\t            pager: this.data.showPager,\r\n\r\n    \t\t    swipeThreshold: 100,\r\n    \t\t    speed: 500,\r\n    \t\t\tstartSlide: self.getInitialIndex(),\r\n    \t\t\tonSlideBefore: function (currentElement, currentPosition, comingPosition) {\r\n    \t\t\t\tonSlideHandler(currentElement, currentPosition, comingPosition);\r\n    \t\t\t\tself.change();\r\n    \t\t\t\treturn true;\r\n    \t\t\t},\r\n\r\n    \t\t\tauto: this.designData ? false : this.data.enableAutoTransition,\r\n    \t\t\tpause: this.data.autoTransitionPause * 1000,\r\n    \t\t\tinfiniteLoop: this.designData ? false : this.data.enableAutoTransition,\r\n\r\n    \t\t\tonSlideNext: onSlideHandler,\r\n    \t\t\tonSlidePrev: onSlideHandler,\r\n    \t\t\tonSlideAfter: function () {\r\n    \t\t\t\tself.sliderActive = false;\r\n    \t\t\t}\r\n    \t\t});\r\n    \t\tself.$element.find('.bx-controls').css({ lineHeight: '1' });\r\n            self.$element.find('.bx-viewport').height(self.data.size.y);\r\n            self.setBorderAndBGStyle();\r\n\r\n            for (var i = 0; i < self.$sliderUl[0].childNodes.length; i++) {\r\n                if (i !== self.getInitialIndex() + 1) {\r\n                    var temp = self.$sliderUl[0].childNodes[i];\r\n                    self.disableTabbing($(temp));\r\n                }\r\n            }\r\n    \t}\r\n    };\r\n\r\n    Carousel.prototype.setBorderAndBGStyle = function () {\r\n        var b = this.data.border; // shortening\r\n        var bg = this.data.background; // shortening\r\n        this.$element.find('.bx-wrapper').css({\r\n            borderBottom: b.bottom ? b.width + 'px ' + b.style + ' ' + b.color : 'none',\r\n            borderLeft:  b.left ? b.width + 'px ' + b.style + ' ' + b.color : 'none',\r\n            borderTop:  b.top ? b.width + 'px ' + b.style + ' ' + b.color : 'none',\r\n            borderRight: b.right ? b.width + 'px ' + b.style + ' ' + b.color : 'none',\r\n            background: bg.enabled ? bg.color : 'none'\r\n        });\r\n        var originalBgWidth = 5;\r\n        var widthCorrectionAmount = 0;\r\n        if (b.left && b.right) {\r\n            widthCorrectionAmount = 2 * (originalBgWidth - b.width);\r\n        } else if (b.left || b.right) {\r\n            widthCorrectionAmount = 2 * originalBgWidth - b.width;\r\n        } else if (!b.left && !b.right) {\r\n            widthCorrectionAmount = 2 * originalBgWidth;\r\n        }\r\n\r\n        var actualWidth =this.$element.find('.bx-wrapper').css('width');\r\n\r\n        var left = null;\r\n        var correction = 2 * originalBgWidth;\r\n        if (b.style === 'none' || b.style === 'hidden') {\r\n            correction = 0;\r\n            widthCorrectionAmount = 0;\r\n            left = 2 * originalBgWidth;\r\n        }\r\n\r\n        this.$sliderUl.find('li').css({\r\n            width: parseFloat(actualWidth) - correction + widthCorrectionAmount + 'px',\r\n            left: left ? -left + 'px' : -widthCorrectionAmount + 'px'\r\n        });\r\n    };\r\n\r\n    Carousel.prototype.disableTabbing = function ($element) {\r\n        var self = this;\r\n        if ($element) {\r\n            if (!$element.prop('originalTabindex')) {\r\n                if ($element.attr('tabindex')) {\r\n                    $element.prop('originalTabindex', $element.attr('tabindex'));\r\n                } else {\r\n                    $element.prop('originalTabindex', 'undef');\r\n                }\r\n            }\r\n            $element.attr('tabindex', -1);\r\n            _.each($element[0].childNodes, function(temp) {\r\n                self.disableTabbing($(temp));\r\n            })\r\n        }\r\n    };\r\n\r\n    Carousel.prototype.enableTabbing = function ($element) {\r\n        var self = this;\r\n        if ($element) {\r\n            if ($element.prop('originalTabindex') !== 'undef') {\r\n                $element.attr('tabindex', $element.prop('originalTabindex'));\r\n            } else {\r\n                $element.removeAttr('tabindex');\r\n            }\r\n            _.each($element[0].childNodes, function(temp) {\r\n                self.enableTabbing($(temp));\r\n            })\r\n        }\r\n    };\r\n\r\n    Carousel.prototype.goToSlide = function (slideNr) {\r\n    \tvar self = this;\r\n        if (self.slider != undefined && self.slider.getCurrentSlide() !== slideNr) {\r\n            self.setInitialIndex(slideNr);\r\n            self.sliderActive = true;\r\n            self.slider.goToSlide(slideNr);\r\n        }\r\n    };\r\n\r\n    Carousel.prototype.onChange = function (func) {\r\n        this.onChangeFunctions.push(func);\r\n    };\r\n\r\n    Carousel.prototype.offChange = function (func) {\r\n        this.onChangeFunctions = _.without(this.onChangeFunctions, func);\r\n    };\r\n\r\n    Carousel.prototype.change = function () {\r\n        var index = this.getInitialIndex();\r\n        _.each(this.onChangeFunctions, function(item) {\r\n            item(index);\r\n        });\r\n    };\r\n\r\n    Carousel.prototype.setInitialIndex = function (index) {\r\n        var parameters = this.getInitialIndexParameters();\r\n        parameters.setValue(this.data.id, index);\r\n    };\r\n\r\n    Carousel.prototype.getInitialIndex = function () {\r\n        var parameters = this.getInitialIndexParameters();\r\n        return parameters.getValue(this.data.id) || 0;\r\n    };\r\n\r\n    Carousel.prototype.getInitialIndexParameters = function () {\r\n        var parameters = this.piping.parameters;\r\n        return this.data.useLocalParameter\r\n            ? parameters.locals\r\n            : parameters.globals;\r\n    };\r\n\r\n    Carousel.prototype.performAction = function (action) {\r\n        if (action === 'next') this.slider.goToNextSlide();\r\n        if (action === 'previous') this.slider.goToPrevSlide();\r\n    };\r\n\r\n    Carousel.prototype.canPerformAction = function (action) {\r\n        if (this.slider) {\r\n            if (action === 'next')\r\n                return this.slider.getCurrentSlide() + 1 < this.slider.getSlideCount();\r\n            if (action === 'previous')\r\n                return this.slider.getCurrentSlide() > 0;\r\n        } else {\r\n            // initial state when the slider has not yet been loaded\r\n            if (action === 'next')\r\n                return this.hasPanels();\r\n        }\r\n\r\n        return false;\r\n    };\r\n\r\n    Carousel.prototype.unsubscribeEventHandlers = function () {\r\n        if (this.slider) {\r\n            this.slider.destroySlider()\r\n            this.slider = null;\r\n        }\r\n    };\r\n\r\n    return Carousel;\r\n});\n","define('drops/carouselControl/carouselControl',[\r\n    'jquery',\r\n    'lq',\r\n    'lq/drop',\r\n    'lq/style'\r\n], function ($, lq, Drop, Style) {\r\n    'use strict';\r\n\r\n    function CarouselControl(options) {\r\n        Drop.call(this, $('<div/>'), options);\r\n\r\n        Style.renderStyles(this);\r\n\r\n        this.$element\r\n            .addClass('clickable')\r\n            .on('click', this.clicked.bind(this))\r\n            .css('background-size', 'cover');\r\n\r\n        this.onChangeListener = this.updateVisibility.bind(this);\r\n    };\r\n\r\n    Drop.extend(CarouselControl, Drop);\r\n\r\n    CarouselControl.typeName = 'CarouselControl';\r\n    \r\n    CarouselControl.prototype.preRender = function () {\r\n        this.applyPosition();\r\n        this.setupControlImages();\r\n        this.updateVisibility();\r\n        \r\n        this.parent.onChange(this.onChangeListener);\r\n    };\r\n\r\n    CarouselControl.prototype.clicked = function() {\r\n        this.parent.performAction(this.data.action);\r\n    };\r\n\r\n    CarouselControl.prototype.updateVisibility = function () {\r\n        this.$element.toggle(this.parent.canPerformAction(this.data.action));\r\n    };\r\n\r\n    CarouselControl.prototype.setupControlImages = function () {\r\n        if (!this.data.normalImage)\r\n            return;\r\n\r\n        var normalImage = lq.getTenantUploads(this.data.normalImage);\r\n        this.setImage(normalImage);\r\n\r\n        if (!this.data.hoverImage)\r\n            return;\r\n\r\n        var hoverImage = lq.getTenantUploads(this.data.hoverImage);\r\n        this.$element\r\n            .on('mouseenter', this.setImage.bind(this, hoverImage))\r\n            .on('mouseleave', this.setImage.bind(this, normalImage));\r\n    };\r\n\r\n    CarouselControl.prototype.setImage = function (path) {\r\n        this.$element.css('background-image', 'url(' + path + ')');\r\n    };\r\n\r\n    return CarouselControl;\r\n});\n","define('drops/carouselPanel/carouselPanel',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/drop'\r\n], function ($, _, Drop) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            color: 'rgba(255, 255, 255, 1)'\r\n        }\r\n    };\r\n\r\n    var overrides = {\r\n        data: {\r\n            positioning: 'relative', // the carousel library requires it (and sets it) but applyposition messes it up if this is not set\r\n            position: { x: 0, y: 0 } // position has to be zero to avoid position issues in bxslider\r\n        }\r\n    };\r\n\r\n    function CarouselPanel(options) {\r\n        $.extend(true, options, overrides);\r\n        Drop.call(this, $('<li/>'), defaults, options);\r\n        var self = this;\r\n\r\n        self.$element\r\n            .addClass('boxToBorderSize')\r\n            .css({\r\n                overflow: 'hidden'\r\n            });\r\n\r\n        self.applyColor();\r\n    }\r\n\r\n    Drop.extend(CarouselPanel);\r\n\r\n    CarouselPanel.typeName = 'CarouselPanel';\r\n\r\n    CarouselPanel.prototype.preRender = function () {\r\n        this.data.size = this.parent.data.size;\r\n        this.applyPosition();\r\n    };\r\n\r\n    CarouselPanel.prototype.postRender = function () {\r\n        this.$element.height('100%');\r\n    };\r\n\r\n    CarouselPanel.prototype.applyColor = function () {\r\n        this.$element\r\n            .css('backgroundColor', this.data.color);\r\n    };\r\n\r\n    CarouselPanel.prototype.render = function ($element) {\r\n        return this.createAndRenderDrops($element);\r\n    };\r\n\r\n    return CarouselPanel;\r\n});\n","define('drops/carouselTabControl/carouselTabControl',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util'\r\n], function ($, _, Drop, Style, util) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            type: 'CarouselTabControl'\r\n        }\r\n    };\r\n\r\n    function CarouselTabControl(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.data.styles = this.data.tabStyles;\r\n\r\n        var self = this;\r\n        this.onChangeFunc = function (index) {\r\n            self.$element.find('.carousel-tab-control-tab').eq(index).trigger('click');\r\n        };\r\n    }\r\n\r\n    Drop.extend(CarouselTabControl, Drop);\r\n\r\n    CarouselTabControl.typeName = 'CarouselTabControl';\r\n\r\n    CarouselTabControl.prototype.getCarousel = function () {\r\n        return this.data.carousel && this.piping.dropFactory.findDropByName(this.data.carousel);\r\n    };\r\n\r\n    CarouselTabControl.prototype.getTabData = function () {\r\n        if (!this.carousel)\r\n            return [];\r\n        return _.chain(this.carousel.childDrops)\r\n            .pluck('data')\r\n            .where({ type: 'CarouselPanel' })\r\n            .value();\r\n    };\r\n\r\n    CarouselTabControl.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.formatter = this.piping.formatting.createFormatter(this.data.formatting);\r\n        this.carousel = this.getCarousel();\r\n        this.applyPosition();\r\n    };\r\n\r\n    CarouselTabControl.prototype.postRender = function () {\r\n        this.renderTabs();\r\n    };\r\n\r\n    CarouselTabControl.prototype.renderTabs = function () {\r\n        var self = this;\r\n\r\n        var tabstyle = util.convertListOfKeyValuesToObject(self.data.tabStyles);\r\n        this.carousel = this.getCarousel();\r\n        \r\n        _.each(this.getTabData(), function (tabData, index) {\r\n            var $tab = $('<div />')\r\n                .text(tabData.name)\r\n                .width(self.data.tabX)\r\n                .height(self.data.tabY)\r\n                .addClass('boxToBorderSize')\r\n                .addClass('carousel-tab-control-tab')\r\n                .css({\r\n                    cursor: 'pointer',\r\n                    'float': 'left',\r\n                    overflow: 'hidden',\r\n                    wordWrap: 'break-word',\r\n                    display: 'block',\r\n                    lineHeight: 1\r\n                })\r\n                .appendTo(self.$element);\r\n\r\n            if (tabstyle && tabstyle.normal) {\r\n                Style.renderStyle(tabstyle.normal, self, $tab);\r\n            } else {\r\n                Style.renderStyles(self, null, $tab);\r\n            }\r\n\r\n            if (tabstyle && tabstyle.active && tabstyle.active.enabled) {\r\n                if (index === self.carousel.getInitialIndex()) {\r\n                    self.selectedTab = index;\r\n                    Style.renderStyle(tabstyle.active, self, $tab);\r\n                }\r\n                $tab.on('click', function () {\r\n                    if (!self.carousel.sliderActive) {\r\n                        self.carousel.goToSlide(index);\r\n                        self.selectedTab = index;\r\n                        Style.renderStyle(tabstyle.normal, self, self.$element.find('.carousel-tab-control-tab'));\r\n                        Style.renderStyle(tabstyle.active, self, $tab);\r\n                    }\r\n                });\r\n                if (tabstyle.hover && tabstyle.hover.enabled) {\r\n                    $tab\r\n                        .on('mouseenter', function () {\r\n                            if (self.selectedTab !== index) {\r\n                                Style.renderStyle(tabstyle.hover, self, $tab);\r\n                            }\r\n                        })\r\n                        .on('mouseleave', function () {\r\n                            if (self.selectedTab !== index) {\r\n                                Style.renderStyle(tabstyle.normal, self, $tab);\r\n                            }\r\n                        });\r\n                }\r\n            } else {\r\n                if (index === self.carousel.getInitialIndex()) {\r\n                    self.selectedTab = index;\r\n                    $tab.addClass('active');\r\n                }\r\n                $tab.on('click', function () {\r\n                    self.carousel.goToSlide(index);\r\n                    $(this).addClass('active').siblings().removeClass('active');\r\n                });\r\n            }\r\n\r\n        });\r\n        if (this.carousel) {\r\n            this.carousel.onChange(this.onChangeFunc);\r\n        }\r\n    };\r\n\r\n    return CarouselTabControl;\r\n});\n","define('lq/cache',[\r\n    'underscore'\r\n], function (_) {\r\n\t'use strict';\r\n\r\n\tvar Cache = function () {\r\n\t\tthis.store = {};\r\n\t};\r\n\r\n\tCache.prototype.hasOwn = function (property) {\r\n\t    return Object.prototype.hasOwnProperty.call(this.store, property);\r\n\t};\r\n\r\n\tCache.prototype.set = function (key, value) {\r\n\t    this.store[key] = value;\r\n\t};\r\n\r\n\tCache.prototype.get = function (key) {\r\n\t    if (this.has(key))\r\n\t        return this.store[key];\r\n\t    return undefined;\r\n\t};\r\n\r\n\tCache.prototype.has = function (key) {\r\n\t    return this.hasOwn(key);\r\n\t};\r\n\r\n\tCache.prototype.remove = function (key) {\r\n\t    delete this.store[key];\r\n\t};\r\n\r\n\tCache.prototype.clear = function () {\r\n\t    this.store = {};\r\n\t};\r\n\r\n\tCache.prototype.keys = function () {\r\n\t    return _.keys(this.store);\r\n\t};\r\n\r\n\tCache.prototype.values = function () {\r\n\t    return _.values(this.store);\r\n\t};\r\n\r\n\treturn Cache;\r\n});\n","define('lq/cssutil',['require', 'lq/cache'], function (require, Cache) {\r\n\t'use strict';\r\n\r\n\tvar styleSheetCache = new Cache();\r\n\r\n    return {\r\n    \trequireCss: function (path) {\r\n    \t\tthis.loadCss(require.toUrl(path));\r\n    \t},\r\n\r\n    \tloadCss: function (url) {\r\n    \t\tif (styleSheetCache.has(url)) {\r\n    \t\t\treturn;\r\n    \t\t}\r\n    \t\tstyleSheetCache.set(url, true);\r\n\r\n            var link = document.createElement(\"link\");\r\n            link.type = \"text/css\";\r\n            link.rel = \"stylesheet\";\r\n            link.href = url;\r\n            document.getElementsByTagName(\"head\")[0].appendChild(link);\r\n        }\r\n    };\r\n});\r\n\n","define('drops/chart/chart',[\r\n    'jquery',\r\n    'when',\r\n    'underscore',\r\n    'lq/drop',\r\n    'lq/util',\r\n    'lq/cssutil'\r\n], function ($, when, _, Drop, util, cssUtil) {\r\n    'use strict';\r\n\r\n    var d3 = null;\r\n    var c3 = null;\r\n\r\n    var defaults = {\r\n        data: {\r\n            pageSize: 10240,\r\n            showGridX: false,\r\n            showGridY: false,\r\n            showTooltip: true,\r\n            showLegend: true,\r\n            showDataLabels: false,\r\n            labelType: 'percentage',\r\n            legendPosition: 'bottom',\r\n            showXAxis: true,\r\n            axisXType: 'indexed',\r\n            axisXLabel: '',\r\n            axisXLabelPosition: 'outer-center',\r\n            showYAxis: true,\r\n            axisYLabel: '',\r\n            axisYLabelPosition: 'outer-middle',\r\n            showY2Axis: false,\r\n            axisY2Label: '',\r\n            axisY2LabelPosition: 'outer-middle',\r\n            emptyText: \"No data\",\r\n            animationDuration: 0,\r\n            removeAxisPadding: false,\r\n            enableZoom: false,\r\n            zoomType: 'scroll',\r\n            zoomBoundaries: false,\r\n            axisXLimit: false,\r\n            enableSubchart: false,\r\n            subchartHeight: 10,\r\n            subchartHide: true,\r\n            scrollbarColor: \"#DDDDDD\"\r\n        }\r\n    };\r\n\r\n    var Chart = function (options) {\r\n        Drop.call(this, $('<div>'), defaults, options);\r\n\r\n        this.$chart = $('<div>')\r\n            .appendTo(this.$element);\r\n    };\r\n\r\n    Drop.extend(Chart);\r\n\r\n    Chart.typeName = 'Chart';\r\n\r\n    Chart.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n\r\n        var self = this;\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.dataSource,\r\n            function (data) { self.update(data); },\r\n            function (data) { self.decorateDataSourceData(data); }\r\n        );\r\n\r\n        this.applyPosition();\r\n\r\n        var deferred = when.defer();\r\n        require([\r\n                'd3',\r\n                'c3'\r\n            ],\r\n            function (lazyLoadedD3, lazyLoadedC3) {\r\n                cssUtil.requireCss('c3.min.css');\r\n\r\n                d3 = lazyLoadedD3;\r\n                c3 = lazyLoadedC3;\r\n                deferred.resolve();\r\n            });\r\n\r\n        return deferred.promise;\r\n    };\r\n\r\n    Chart.prototype.postRender = function () {\r\n        this.update();\r\n    };\r\n\r\n    Chart.prototype.decorateDataSourceData = function (queryData) {\r\n        this.update();\r\n        if (typeof this.data.pageSize === 'number' && this.data.pageSize > 0) {\r\n            queryData.pageSize = this.data.pageSize;\r\n        } else {\r\n            queryData.pageSize = defaults.pageSize;\r\n        }\r\n    };\r\n\r\n    Chart.prototype.getStepType = function () {\r\n        var self = this;\r\n        if (self.data.stepType === \"at start\") return \"step-before\";\r\n        if (self.data.stepType === \"at end\") return \"step-after\";\r\n        return \"step\";\r\n    };\r\n\r\n    Chart.prototype.getTickSettings = function (result, axis) {\r\n        var self = this;\r\n        var precisionSetting = self.data[\"axis\" + axis.toUpperCase() + \"Precision\"];\r\n        if (_.isFinite(precisionSetting))\r\n            return { format: d3.format('.' + precisionSetting + 'f'), fit: false };\r\n\r\n\r\n        var seriesSettings = _.findWhere(self.data.series, { axis: axis });\r\n        if (seriesSettings && seriesSettings.output && result.outputs[seriesSettings.output]) {\r\n            var outputType = result.outputs[seriesSettings.output];\r\n            if (outputType === \"System.Int32\" || outputType === \"System.Int64\" || outputType === \"System.Decimal\")\r\n                return { format: util.autoFormatNumber, fit: false };\r\n            else\r\n                return { fit: false }; // c3 replaces category (string) data with indexes if a number format function is passed\r\n        }\r\n\r\n        return { format: util.autoFormatNumber, fit: false };\r\n    };\r\n\r\n    Chart.prototype.update = function (result) {\r\n        var self = this;\r\n\r\n        result = result || {\r\n            outputs: [],\r\n            results: [],\r\n            totalResults: 0\r\n        };\r\n\r\n        if (self.chart) {\r\n            self.chart.destroy();\r\n        }\r\n\r\n        var series = self.data.series;\r\n        var results = result.results;\r\n\r\n        var dynamicPie = _.find(series, function (s) { return s.type === 'pie-dynamic' && s.axis === 'y'; });\r\n        if (dynamicPie) {\r\n            var row = _.reduce(result.results, function (memo, row) {\r\n                memo[row[dynamicPie.labelOutput]] = row[dynamicPie.output];\r\n                return memo;\r\n            }, {});\r\n            results = [row];\r\n\r\n            series = _.map(result.results,\r\n                function(row) {\r\n                    var copy = Object.assign({}, dynamicPie);\r\n                    copy.type = 'pie';\r\n                    copy.output = row[dynamicPie.labelOutput];\r\n                    copy.label = row[dynamicPie.labelOutput];\r\n                    return copy;\r\n                });\r\n        }\r\n        \r\n        var seriesWithColorSetting = _.filter(series, function (serie) { return serie.hasCustomColor; });\r\n        var barSeriesWithStack = _.filter(series, function (serie) { return serie.type === \"bar-stacked\"; });\r\n\r\n        var chartSettings = {\r\n            bindto: self.$chart[0],\r\n            transition: {\r\n                duration: self.data.animationDuration\r\n            },\r\n            size: {\r\n                // when there's no anchoring -> set the height explicitly for backwards compatibility reasons\r\n                height: this.data.top != null || this.data.bottom != null ? undefined : self.data.size.y\r\n            },\r\n            // padding\r\n            //color: {\r\n            //    pattern: ['#1f77b4', '#aec7e8', ...]\r\n            //}\r\n            data: {\r\n                names:\r\n                    _.object(\r\n                        _.pluck(series, 'output'), // keys\r\n                        _.pluck(series, 'label')), // values\r\n                types:\r\n                    _.object(\r\n                        _.pluck(series, 'output'),\r\n                        _.map(_.pluck(series, 'type'), function (value) { return value === 'bar-stacked' ? 'bar' : value; })), //bar-stacked doesn't exist => replace it back to bar\r\n                colors:\r\n                    _.object(\r\n                        _.pluck(seriesWithColorSetting, 'output'),\r\n                        _.pluck(seriesWithColorSetting, 'customColor')\r\n                    ),\r\n                axes:\r\n                    _.object(\r\n                        _.pluck(series, 'output'),\r\n                        _.map(series, function (serie) { return serie.axis || 'y'; })),\r\n                groups:\r\n                    [\r\n                        _.pluck(barSeriesWithStack, 'output')\r\n                    ],\r\n\r\n                //type: 'line/spline/step/area/area-spline/area-step/bar/scatter/pie/donut/gauge',\r\n                //names: {\r\n                //    upload: 'Upload amount',\r\n                //    download: 'Download amount',\r\n                //}\r\n                //x: 'date', // TODO: change axis.x.type to 'timeseries' when output data type is datetime\r\n                //xs: {\r\n                //    data1: 'x1',\r\n                //    data2: 'x2',\r\n                //},\r\n                //xFormat: '%Y-%m-%d %H:%M:%S' // from d3 https://github.com/mbostock/d3/wiki/Time-Formatting and https://github.com/mbostock/d3/wiki/Formatting\r\n                //classes: {\r\n                //    data1: 'additional-data1-class',\r\n                //    data2: 'additional-data2-class',\r\n                //},\r\n                //groups: [ // for stacked charts\r\n                //    ['data1', 'data2'],\r\n                //    ['data3'],\r\n                //],\r\n                labels: self.data.showDataLabels, // Show labels on each data points.\r\n                //labels: {\r\n                //    format: function (v, id, i, j) { ... }\r\n                //    //v is the value of the data point where the label is shown.\r\n                //    //id is the id of the data where the label is shown.\r\n                //    //i is the index of the data point where the label is shown.\r\n                //    //j is the sub index of the data point where the label is shown.\r\n                //}\r\n                json: results,\r\n                keys: {\r\n                    // x: 'name', // it's possible to specify 'x' when category axis\r\n                    value: _.pluck(series, 'output')\r\n                },\r\n                empty: {\r\n                    label: {\r\n                        text: self.data.emptyText\r\n                    }\r\n                }\r\n            },\r\n            grid: {\r\n                x: {\r\n                    show: self.data.showGridX\r\n                },\r\n                y: {\r\n                    show: self.data.showGridY\r\n                }\r\n            },\r\n            tooltip: {\r\n                show: self.data.showTooltip\r\n            },\r\n            legend: {\r\n                show: self.data.showLegend,\r\n                //inset: {\r\n                //    anchor: 'top-left',\r\n                //    x: 10,\r\n                //    y: 0,\r\n                //    step: undefined\r\n                //},\r\n                position: self.data.legendPosition\r\n            },\r\n            axis: {\r\n                //rotated: true,\r\n                x: {\r\n                    show: self.data.showXAxis,\r\n                    //label: 'Your X Axis',\r\n                    label: {\r\n                        text: self.data.axisXLabel,\r\n                        position: self.data.axisXLabelPosition\r\n                    },\r\n                    tick: self.getTickSettings(result, \"x\"),\r\n                    min: self.data.axisXLimit ? self.data.axisXLimitMin : undefined,\r\n                    max: self.data.axisXLimit ? self.data.axisXLimitMax : undefined,\r\n                    type: self.data.axisXType,\r\n                    height: self.data.axisXLabelHeight\r\n                    //categories: ['Category 1', 'Category 2'] // if not specified in data\r\n                },\r\n                y: {\r\n                    show: self.data.showYAxis,\r\n                    //inner: false,\r\n                    //inverted: false,\r\n                    label: {\r\n                        text: self.data.axisYLabel,\r\n                        position: self.data.axisYLabelPosition\r\n                    },\r\n                    tick: self.getTickSettings(result, \"y\")\r\n                },\r\n                y2: {\r\n                    show: self.data.showY2Axis,\r\n                    //inner: false,\r\n                    //inverted: false,\r\n                    label: {\r\n                        text: self.data.axisY2Label,\r\n                        position: self.data.axisY2LabelPosition\r\n                    },\r\n                    tick: self.getTickSettings(result, \"y2\")\r\n                }\r\n            },\r\n            //point: {\r\n            //    show: false,\r\n            //    r: 5\r\n            //},\r\n            line: {\r\n                step: {\r\n                    type: self.getStepType()\r\n                }\r\n            },\r\n            pie: {\r\n                label: {\r\n                    format: function (value, ratio, id) {\r\n                        if (self.data.labelType === 'percentage') {\r\n                            return (100 * ratio).toFixed(1) + '%';\r\n                        } else {\r\n                            return value;\r\n                        }\r\n                    }\r\n                }\r\n            },\r\n            zoom: {\r\n                enabled: self.data.enableZoom,\r\n                type: self.data.zoomType,\r\n            },\r\n            subchart: {\r\n                show: self.data.enableSubchart,\r\n                // axis: {\r\n                //     x: {\r\n                //         show: false // doesn't work\r\n                //     }\r\n                // },\r\n                size: {\r\n                    height: self.data.subchartHeight\r\n                }\r\n            }\r\n        };\r\n\r\n        if (this.isEventEnabled('clicked')) {\r\n            chartSettings.data.onclick = function(chartSerie) {\r\n                self.triggerEventIfEnabled('clicked', chartSerie.id);\r\n            };\r\n        }\r\n\r\n        if (self.data.axisYMax || self.data.axisYMax === 0) chartSettings.axis.y.max = self.data.axisYMax;\r\n        if (self.data.axisYMin || self.data.axisYMin === 0) chartSettings.axis.y.min = self.data.axisYMin;\r\n\r\n        var xDataSeries = _.findWhere(self.data.series, { axis: 'x' });\r\n        if (xDataSeries) {\r\n            chartSettings.data.x = xDataSeries.output;\r\n            //chartSettings.data.xs =\r\n            //    _.object(\r\n            //        _.pluck(self.data.series, 'output'),\r\n            //        _.map(self.data.series, function (serie) {\r\n            //            return serie.axisXDataOutput || self.data.axisXDataOutput;\r\n            //        }));\r\n        }\r\n\r\n        if (self.data.removeAxisPadding) {\r\n            chartSettings.axis.x.padding = { left: 0, right: 0 };\r\n            chartSettings.axis.y.padding = { top: 0, bottom: 0 };\r\n        }\r\n\r\n        self.chart = c3.generate(chartSettings);\r\n\r\n        // https://github.com/c3js/c3/issues/2357 none of these initial zoom configurations work\r\n        // this workaround isn't perfect either, when zoom type is scroll it has a minor issue\r\n        var xs = self.chart.xs();\r\n        var xArr = xs[Object.keys(xs)[0]];\r\n        if (self.data.enableZoom) {\r\n            if (self.data.zoomBoundaries && (self.data.zoomBoundaryMin || self.data.zoomBoundaryMax) && xArr.length) {\r\n                if (self.data.zoomBoundaryMin && self.data.zoomBoundaryMax) {\r\n                    self.chart.zoom([self.data.zoomBoundaryMin, self.data.zoomBoundaryMax]);\r\n                } else {\r\n                    // var xs = self.chart.xs();\r\n                    // var xArr = xs[Object.keys(xs)[0]];\r\n                    var defaultMin = chartSettings.axis.x.type == \"category\" ? 0 : Math.min.apply(null, xArr);\r\n                    var defaultMax = chartSettings.axis.x.type == \"category\" ? xArr.length : Math.max.apply(null, xArr);\r\n                    self.chart.zoom([\r\n                        self.data.zoomBoundaryMin ? Number(self.data.zoomBoundaryMin) : defaultMin,\r\n                        self.data.zoomBoundaryMax ? Number(self.data.zoomBoundaryMax) : defaultMax,\r\n                    ]);\r\n                }\r\n            }\r\n            if (self.data.enableZoom && self.data.enableSubchart) {\r\n                self.$chart.find(\".c3-axis-x\").not(\".c3-axis\").hide(); // chartSettings.subchart.axis.x.show = false; doesn't work\r\n                if (self.data.subchartHide) self.$chart.find(\".c3-brush > .overlay\").attr(\"fill\", self.data.scrollbarColor);\r\n            }\r\n        }\r\n\r\n        //THIS CAN BE USED TO ANIMATE TO NEW VALUES:\r\n        /*self.chart.load({\r\n           json: result.results,\r\n                keys: {\r\n                    // x: 'name', // it's possible to specify 'x' when category axis\r\n                    value: _.pluck(self.data.series, 'output')\r\n                }\r\n        });*/\r\n\r\n        /*self.chart.selectAll(\".percent\")\r\n            .on(\"click\", function (d) {\r\n                alert('test');\r\n                // code you want executed on the click event\r\n            });   */\r\n    };\r\n\r\n    Chart.prototype.afterShown = function () {\r\n        this.$element.css('display', 'inherit');\r\n    };\r\n\r\n    Chart.prototype.afterHidden = function () {\r\n        this.$element.css('display', 'none');\r\n    };\r\n\r\n    return Chart;\r\n});\r\n\n","define('lq/Drop',[\r\n    'underscore',\r\n    'jquery',\r\n    'when',\r\n    'lq',\r\n    'lq/oop',\r\n    'lq/observable',\r\n    'lq/validations'\r\n], function (_, $, when, lq, oop, observable, validations) {\r\n    'use strict';\r\n\r\n    const masterPageOffsetZIndex = 3000;\r\n\r\n    var dropDefaultModel = {\r\n        data: {\r\n            positioning: 'absolute',\r\n            position: { x: 0, y: 0 },\r\n            size: { x: 100, y: 20 },\r\n            zIndex: 1,\r\n            locked: false,\r\n            isHidden: false,\r\n            formatting: {\r\n                dateFormat: 'dd-MM-yyyy',\r\n                groupSeperator: '',\r\n                decimalSeperator: '',\r\n                decimalPrecision: ''\r\n            },\r\n            eventing: {},\r\n            initialVisibility: true,\r\n            initialVisibilityOption: 'Hard Coded',\r\n            centered: false,\r\n            toPage: false\r\n        },\r\n        childDrops: [],\r\n        editable: false,\r\n        renderInBackground: false\r\n    };\r\n\r\n    var Drop = function ($element, defaultModel, model) {\r\n        $.extend(true, this, dropDefaultModel, defaultModel, model);\r\n\r\n        this.type = this.data.type;\r\n\r\n        this.$element = $element\r\n            .addClass('drop-element')\r\n            .css('visibility', 'inherit');\r\n\r\n        this.parent = null;\r\n        this.pool = [];\r\n\r\n        this.otherVisuals = [];\r\n\r\n        this.eventHandlers = [];\r\n\r\n        observable.makeObservable(this, ['ChildAdded', 'DatasourceApplied']);\r\n\r\n        this.applyLayouts();\r\n\r\n        if (typeof Drop.constructing === 'function')\r\n            Drop.constructing(this);\r\n\r\n        // this seems a lot easier than if-chaining the constructing method every time\r\n        Drop.informListeners('Constructing', this);\r\n    };\r\n\r\n    Drop.prototype.defaultEventArg = undefined;\r\n    Drop.prototype.isHidden = false;\r\n    Drop.prototype.supportsManyToManyData = function () {\r\n        return false;\r\n    };\r\n\r\n    oop.makeExtendable(Drop);\r\n\r\n    observable.makeObservable(Drop, 'Constructing');\r\n\r\n    Drop.prototype.$ = function (selector) {\r\n        return this.$element.find(selector);\r\n    };\r\n\r\n    Drop.prototype.autoPositionAt = function (targetPosition) {\r\n        this.$element\r\n            .css({\r\n                left: targetPosition.left === null ? 'auto' : (targetPosition.left + 'px'),\r\n                top: targetPosition.top === null ? 'auto' : (targetPosition.top + 'px'),\r\n                right: targetPosition.right === null ? 'auto' : (targetPosition.right + 'px'),\r\n                bottom: targetPosition.bottom === null ? 'auto' : (targetPosition.bottom + 'px')\r\n            })\r\n            .appendTo($('body'));\r\n    };\r\n\r\n\r\n    Drop.prototype.createAndRenderDrops = function ($element) {\r\n        var self = this;\r\n\r\n        return when(self.preRender())\r\n            .then(function () {\r\n                if (self.removed)\r\n                    return;\r\n                self.$element.appendTo($element);\r\n                var childDropsWithRootDrop = _.map(self.childDrops, function(c) {\r\n                    c.rootDrop = self.rootDrop;\r\n                    return c;\r\n                });\r\n                var drops = self.piping.dropFactory.createDrops(childDropsWithRootDrop);\r\n                return when.all(self.createRenderPromisesForChildren(drops));\r\n            })\r\n            .then(function () {\r\n                return self.postRender();\r\n            });\r\n    };\r\n\r\n    Drop.prototype.isRenderedInBackground = function () {\r\n        if (this.renderInBackground === true)\r\n            return true;\r\n        if (!this.parent)\r\n            return false;\r\n        return this.parent.isRenderedInBackground();\r\n    };\r\n\r\n    Drop.prototype.createRenderPromiseForChild = function (drop) {\r\n        if (drop.data.toBrowser) {\r\n            return drop.render(this.piping.$actionWrapper);\r\n        } else if (drop.renderInBackground && this.rootDrop.$masterPage) {\r\n            return drop.render(this.rootDrop.$masterPage);\r\n        } else if (drop.data.toPage && this.rootDrop.$pageAnchored) {\r\n            return drop.render(this.rootDrop.$pageAnchored);\r\n        }\r\n\r\n        return drop.render(this.$element);\r\n    };\r\n\r\n    Drop.prototype.createRenderPromisesForChildren = function (drops) {\r\n        var self = this;\r\n        var renderPromises = [];\r\n\r\n        _.each(drops, function (drop) {\r\n            self.addDrop(drop);\r\n            renderPromises.push(self.createRenderPromiseForChild(drop));\r\n        });\r\n\r\n        return renderPromises;\r\n    };\r\n\r\n    Drop.prototype.render = function ($element) {\r\n        var self = this;\r\n\r\n        return when(self.preRender())\r\n            .then(function () {\r\n                if (self.removed)\r\n                    return;\r\n                self.$element.appendTo($element);\r\n\r\n                var renderPromises = [];\r\n\r\n                _.forEach(self.pool, function (drop) {\r\n                    renderPromises.push(self.createRenderPromiseForChild(drop));\r\n                });\r\n\r\n                return when.all(renderPromises);\r\n            })\r\n            .then(function () {\r\n                return self.postRender();\r\n            });\r\n    };\r\n\r\n    Drop.prototype.preRender = $.noop;\r\n\r\n    Drop.prototype.postRender = $.noop;\r\n\r\n    Drop.prototype.resize = function () {\r\n        this.postWindowResize();\r\n\r\n        _.forEach(this.pool, function (drop) {\r\n            //TODO: only call this if this drop is anchored (and resized)\r\n            drop.resize();\r\n        });\r\n    };\r\n\r\n    //TODO: should be called postResize\r\n    Drop.prototype.postWindowResize = $.noop;\r\n\r\n    Drop.prototype.error = function (errorArgs) {\r\n        this.onError(errorArgs);\r\n\r\n        _.forEach(this.pool, function (drop) {\r\n            drop.error(errorArgs);\r\n        });\r\n    };\r\n\r\n    Drop.prototype.onError = function (errorArgs) {\r\n    };\r\n\r\n    Drop.prototype.isVisible = function () {\r\n        if (this.isHidden)\r\n            return false;\r\n\r\n        if (this.parent)\r\n            return this.parent.isVisible();\r\n\r\n        return true;\r\n    };\r\n\r\n    Drop.prototype.showWithoutAnimation = function () {\r\n        this.getElementForVisibility().removeClass('drop-hidden');\r\n        this.isHidden = false;\r\n        this.shown();\r\n    };\r\n\r\n    Drop.prototype.show = function () {\r\n        //https://github.com/daneden/animate.css\r\n        var self = this;\r\n        var animation = this.data.showAnimation;\r\n        if (animation !== \"none\" && animation != undefined) {\r\n            if (this.data.showAnimationTime)\r\n                $(this.getElementForVisibility()).css({animationDuration: this.data.showAnimationTime.delay + this.data.showAnimationTime.unit});\r\n            this.getElementForVisibility().removeClass('drop-hidden');\r\n            this.getElementForVisibility().addClass('animated ' + animation);\r\n            this.getElementForVisibility().one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () {\r\n                self.getElementForVisibility().removeClass('animated ' + animation);\r\n                self.isHidden = false;\r\n                self.shown();\r\n            });\r\n        } else {\r\n            this.showWithoutAnimation();\r\n        }\r\n    };\r\n\r\n    Drop.prototype.hideWithoutAnimation = function () {\r\n        this.getElementForVisibility().addClass('drop-hidden');\r\n        this.isHidden = true;\r\n        this.hidden();\r\n    };\r\n\r\n    Drop.prototype.hide = function () {\r\n        //https://github.com/daneden/animate.css\r\n        var self = this;\r\n        var animation = this.data.hideAnimation;\r\n        if (animation !== \"none\" && animation != undefined) {\r\n            if (this.data.hideAnimationTime)\r\n                $(this.getElementForVisibility()).css({animationDuration: this.data.hideAnimationTime.delay + this.data.hideAnimationTime.unit});\r\n            this.getElementForVisibility().addClass('animated ' + animation);\r\n            this.getElementForVisibility().one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () {\r\n                self.getElementForVisibility().removeClass('animated ' + animation);\r\n                self.getElementForVisibility().addClass('drop-hidden');\r\n                self.isHidden = true;\r\n                self.hidden();\r\n            });\r\n        } else {\r\n            this.hideWithoutAnimation();\r\n        }\r\n    };\r\n\r\n    Drop.prototype.getElementForVisibility = function () {\r\n        if (this.parent != null) {\r\n            return this.parent.getChildElementForVisibility(this);\r\n        } else {\r\n            return this.$element;\r\n        }\r\n    };\r\n\r\n    Drop.prototype.getChildElementForVisibility = function (childDrop) {\r\n        return childDrop.$element;\r\n    };\r\n\r\n    Drop.prototype.toggle = function (show) {\r\n        if (arguments.length === 0) {\r\n            show = !this.isVisible();\r\n        }\r\n        if (show)\r\n            this.show();\r\n        else\r\n            this.hide();\r\n    };\r\n\r\n    Drop.prototype.shown = function () {\r\n        if (!this.isVisible())\r\n            return;\r\n\r\n        this.afterShown();\r\n\r\n        _.forEach(this.pool, function (drop) {\r\n            drop.shown();\r\n        });\r\n    };\r\n\r\n    Drop.prototype.afterShown = $.noop;\r\n\r\n    Drop.prototype.hidden = function () {\r\n        if (this.isVisible())\r\n            return;\r\n\r\n        this.afterHidden();\r\n\r\n        _.forEach(this.pool, function (drop) {\r\n            drop.hidden();\r\n        });\r\n    };\r\n\r\n    Drop.prototype.afterHidden = $.noop;\r\n\r\n    Drop.prototype.getEventDataFor = function (eventName) {\r\n        return this.data && this.data.eventing && this.data.eventing[eventName] || {};\r\n    };\r\n\r\n    Drop.prototype.applyEventTrigger = function (eventName, jsEventName, $target, eventArg) {\r\n        var self = this;\r\n        $target = $target || self.$element;\r\n\r\n        var eventData = this.getEventDataFor(eventName);\r\n        var jsEventNameWithNamespace = jsEventName + \".licquidEventTrigger-\" + eventName;\r\n\r\n        $target.off(jsEventNameWithNamespace);\r\n\r\n        if (eventData.enabled) {\r\n            this.subscribeEventHandler($target, jsEventNameWithNamespace, function () {\r\n                self.triggerEvent(eventData.raisedEventName, eventArg, undefined, undefined, self.isBackgroundEvent(eventName));\r\n\r\n                // Modal popups aren't always modal. Needed for the JAO website (and probably other applications as well).\r\n                // A drop inside a list (e.g. a button) should block events from bubbling up,\r\n                // otherwise it could trigger events on both the button and the parent list item (which you probably don't want).\r\n                // A modal popup (without lightbox enabled) will listen to clicks on the document to close itself. However\r\n                // if we were to block the event in the button, the click event will never reach the document and hence\r\n                // the modal won't close. Furthermore, we can't use the lightbox for this purpose because the\r\n                // popup and its lightbox are rendered inside the action (they don't cover the entire page).\r\n                return !self.insideList();\r\n            });\r\n        }\r\n    };\r\n\r\n    Drop.prototype.insideList = function () {\r\n        if (!this.parent)\r\n            return false;\r\n        if (this.parent.type === 'List')\r\n            return true;\r\n        return this.parent.insideList();\r\n    };\r\n\r\n    Drop.prototype.triggerEventIfEnabled = function (eventName, eventArg, $optionalSource, event) {\r\n        var eventData = this.getEventDataFor(eventName);\r\n        if (eventData.enabled) {\r\n            var isBackgroundEvent = this.isBackgroundEvent(eventName);\r\n            this.triggerEvent(eventData.raisedEventName, eventArg, $optionalSource, event, isBackgroundEvent);\r\n        }\r\n    };\r\n\r\n    Drop.prototype.isBackgroundEvent = function (eventName) {\r\n        return eventName === 'mouseEnter' || eventName === 'mouseLeave';\r\n    };\r\n\r\n    Drop.prototype.isEventEnabled = function (eventName) {\r\n        var eventData = this.getEventDataFor(eventName);\r\n        return eventData.enabled;\r\n    };\r\n\r\n    Drop.prototype.triggerEvent = function (raisedEventName, eventArg, $optionalSource, event, isBackgroundEvent, parentEventActionId) {\r\n        if (!this.piping) return;\r\n\r\n        if (eventArg === undefined)\r\n            eventArg = this.getDefaultEventArg();\r\n\r\n        var trigger = $optionalSource || this.$element;\r\n\r\n        if (trigger instanceof $)\r\n            trigger = trigger.get(0);\r\n\r\n        var eventPosition;\r\n        if (event) {\r\n            eventPosition = {\r\n                clientX: event.clientX,\r\n                clientY: event.clientY,\r\n                offsetX: event.offsetX,\r\n                offsetY: event.offsetY,\r\n                pageX: event.pageX,\r\n                pageY: event.pageY,\r\n                screenX: event.screenX,\r\n                screenY: event.screenY\r\n            };\r\n        }\r\n\r\n        var source = {\r\n            drop: this,\r\n            element: trigger,\r\n            activeArea: trigger.getBoundingClientRect(),\r\n            eventPosition: eventPosition,\r\n            isBackgroundEvent: !!isBackgroundEvent\r\n        };\r\n\r\n        this.piping.eventing.publish(raisedEventName, source, eventArg, null, parentEventActionId);\r\n    };\r\n\r\n    Drop.prototype.getDefaultEventArg = function () {\r\n        if (this.defaultEventArg !== undefined)\r\n            return this.defaultEventArg;\r\n\r\n        if (this.parent)\r\n            return this.parent.getDefaultEventArg();\r\n\r\n        return undefined;\r\n    };\r\n\r\n    Drop.prototype.updateRequiredIndicator = function () {\r\n        if (this.isValid())\r\n            this.$element.addClass('hasValidValue');\r\n        else\r\n            this.$element.removeClass('hasValidValue');\r\n    };\r\n\r\n    Drop.prototype.isValid = function () {\r\n        return !this.requiredData || this.hasValue();\r\n    };\r\n\r\n    Drop.prototype.triggerValidationEvent = function (optionalParentEventActionId, raisedEventName) {\r\n        this.triggerEvent(raisedEventName, null, null, null, null, optionalParentEventActionId)\r\n    };\r\n\r\n    Drop.prototype.performValidation = function (optionalParentEventActionId) {\r\n        return validations.runValidation(this.data.validation, this.piping, this.triggerValidationEvent.bind(this, optionalParentEventActionId), this.getValue());        \r\n    };\r\n\r\n    Drop.prototype.hasValue = function () {\r\n        var value = this.getValue();\r\n\r\n        if (value === undefined || value === null || value === false) {\r\n            return false;\r\n        }\r\n\r\n        if (value.length === 0) {\r\n            return false;\r\n        }\r\n\r\n        return true;\r\n    };\r\n\r\n    Drop.prototype.makesItGrow = function () {\r\n        return this.rootDrop && this.rootDrop.doesThisMakeMeGrow(this);\r\n    };\r\n\r\n    Drop.prototype.applyPosition = function () {\r\n        if (this.canGrow() || this.makesItGrow()) {\r\n            var css = {\r\n                position: 'relative',\r\n                display: 'block',\r\n                zIndex: this.getZIndex()\r\n            };\r\n\r\n            if (this.data.minHeight)\r\n                css.minHeight = this.data.minHeight + 'px';\r\n\r\n            // horizontal positioning\r\n            if (this.data.centered === true) {\r\n                css.width = this.data.size.x + 'px';\r\n                css.margin = '0 auto';\r\n            } else if (this.data.right != null && this.data.left == null) {\r\n                css.marginLeft = 'auto';\r\n                css.marginRight = this.data.right + 'px';\r\n                css.width = this.data.size.x + 'px';\r\n            } else if (this.data.right != null && this.data.left != null) {\r\n                css.marginLeft = this.data.left + 'px';\r\n                css.marginRight = this.data.right + 'px';\r\n                css.width = 'calc(100% - ' + this.data.left + 'px' - this.data.right + 'px)';\r\n            } else {\r\n                css.marginLeft = (this.data.left != null ? this.data.left : this.data.position.x) + 'px';\r\n                css.width = this.data.size.x + 'px';\r\n            }\r\n\r\n            this.$element.css(css);\r\n\r\n            var parentCss = {\r\n                paddingTop: (this.data.top != null ? this.data.top : this.data.position.y) + 'px'\r\n            };\r\n\r\n            if (this.data.bottom != null)\r\n                parentCss.paddingBottom = this.data.bottom + 'px';\r\n\r\n            if (this === this.rootDrop)\r\n                this.piping.$actionView.css(parentCss);\r\n            else\r\n                this.parent.$element.css(parentCss);\r\n\r\n        } else if (this.parent != null && this.parent.parent == null && !this.isRenderedInBackground()) {\r\n            var pool = this.rootDrop.$element[0];\r\n\r\n            if (this.$element[0] !== pool) {\r\n                var parent = this.$element.parent()[0];\r\n\r\n                if ((this.data.toPage || this.data.toBrowser) && this.rootDrop.$pageAnchored) {\r\n                    var pageAnchoredCanvas = this.rootDrop.$pageAnchored[0];\r\n                    if (parent !== pageAnchoredCanvas)\r\n                        this.$element.appendTo(pageAnchoredCanvas);\r\n                } else if (!this.data.toPage && !this.data.toBrowser) {\r\n                    if (parent !== pool)\r\n                        this.$element.appendTo(pool);\r\n                }\r\n            }\r\n\r\n            this.parent.applyPositionForChild(this);\r\n        } else {\r\n            if (this.parent != null) {\r\n                this.parent.applyPositionForChild(this);\r\n            } else {\r\n                this.$element.css(this.getPositionCss(this.data));\r\n            }\r\n        }\r\n\r\n        if (this.data.parallax && this.data.parallax.enabled)\r\n            this.piping.$actionWrapper.on('scroll', this.updateParallaxPosition.bind(this));\r\n    };\r\n\r\n    Drop.prototype.doesThisMakeMeGrow = function (otherDrop) {\r\n        return false;\r\n    };\r\n\r\n    Drop.prototype.canGrow = function (drop) {\r\n        return false;\r\n    };\r\n\r\n    Drop.prototype.updateParallaxPosition = function () {\r\n        var scrollTop = this.piping.$actionWrapper.scrollTop();\r\n        this.$element.css('top', this.data.position.y + scrollTop - (scrollTop * this.data.parallax.factor) + 'px');\r\n    };\r\n\r\n    Drop.prototype.applyPositionForChild = function (childDrop) {\r\n        var zIndex = childDrop.getZIndex();\r\n        var css =  this.getPositionCss(childDrop.data, zIndex);\r\n        childDrop.$element.css(css);\r\n    };\r\n\r\n    Drop.prototype.getZIndex = function () {\r\n        if (!this.renderInBackground && this.parent === this.rootDrop && !this.designData)\r\n            return this.data.zIndex + masterPageOffsetZIndex;\r\n        return this.data.zIndex;\r\n    }\r\n\r\n    Drop.prototype.getPositionCss = function (data, optionalZIndex) {\r\n        var zIndex = optionalZIndex !== undefined ? optionalZIndex : data.zIndex;\r\n\r\n        if (data.dynamicHeight === true) {\r\n            return {\r\n                position: 'relative',\r\n                top: data.position.y + 'px',\r\n                left: data.position.x + 'px',\r\n                width: data.size.x,\r\n                zIndex: zIndex,\r\n                height: 'auto'\r\n            };\r\n        }\r\n\r\n        var css = {\r\n            zIndex: zIndex,\r\n            position: data.positioning\r\n        };\r\n\r\n        if (data.useFullScreen) {\r\n            css.left = '0px';\r\n            css.right = '0px';\r\n            css.top = '0px';\r\n            css.bottom = '0px';\r\n            css.height = 'auto';\r\n            css.width = 'auto';\r\n            return css;\r\n        }\r\n\r\n        if (data.bottom != null && data.top == null) {\r\n            css.top = 'auto';\r\n            css.bottom = data.bottom + 'px';\r\n            css.height = data.size.y;\r\n        } else if (data.bottom != null && data.top != null) {\r\n            css.top = data.top + 'px';\r\n            css.bottom = data.bottom + 'px';\r\n            css.height = 'auto';\r\n        } else {\r\n            css.top = (data.top != null ? data.top : data.position.y) + 'px';\r\n            css.bottom = 'auto';\r\n            css.height = data.size.y;\r\n        }\r\n        if (data.right != null && data.left == null) {\r\n            css.left = 'auto';\r\n            css.right = data.right + 'px';\r\n            css.width = data.size.x;\r\n        } else if (data.right != null && data.left != null) {\r\n            css.left = data.left + 'px';\r\n            css.right = data.right + 'px';\r\n            css.width = 'auto';\r\n        } else {\r\n            css.left = (data.left != null ? data.left : data.position.x) + 'px';\r\n            css.right = 'auto';\r\n            css.width = data.size.x;\r\n        }\r\n\r\n        if (data.centered === true) {\r\n            css.left = '0';\r\n            css.right = '0';\r\n            css.marginLeft = 'auto';\r\n            css.marginRight = 'auto';\r\n        }\r\n\r\n        if (data.autoHeight || (data.useDynamicHeight && data.isDynamiclySizedContainer)) {\r\n            css.height = 'auto';\r\n        }\r\n\r\n        if (data.autoWidth || (data.useDynamicWidth && data.isDynamiclySizedContainer)) {\r\n            css.width = 'auto';\r\n        }\r\n\r\n        if (data.fitContent) {\r\n            css.width = 'fit-content';\r\n        }\r\n\r\n        return css;\r\n    };\r\n\r\n    Drop.prototype.getPosition = function () {\r\n        var position = {};\r\n\r\n        if (this.data.left !== null)\r\n            position.left = this.data.left;\r\n\r\n        if (this.data.top !== null)\r\n            position.top = this.data.top;\r\n\r\n        if (this.data.right !== null)\r\n            position.right = this.data.right;\r\n\r\n        if (this.data.bottom !== null)\r\n            position.bottom = this.data.bottom;\r\n\r\n        return position;\r\n    };\r\n\r\n    Drop.prototype.addDrop = function (drop) {\r\n        this.pool.push(drop);\r\n        drop.parent = this;\r\n        drop.rootDrop = this.rootDrop;\r\n        drop.piping = this.piping;\r\n        this.informListeners('ChildAdded', drop);\r\n        delete drop.removed;\r\n        return this;\r\n    };\r\n\r\n    Drop.prototype.removeDrop = function (drop) {\r\n        drop.beforeRemove();\r\n\r\n        if (drop.type === \"Query\") {\r\n            this.piping.datasources.unregisterDatasource(drop.data);\r\n        }\r\n        var index = this.pool.indexOf(drop);\r\n        this.pool.splice(index, 1);\r\n        drop.parent = null;\r\n        drop.rootDrop = null;\r\n        drop.piping = null;\r\n        drop.removed = true;\r\n\r\n        return this;\r\n    };\r\n\r\n    Drop.prototype.beforeRemove = function() {\r\n        _.each(this.pool, function (childDrop) {\r\n            childDrop.beforeRemove();\r\n        });\r\n    };\r\n\r\n    Drop.prototype.removeAllDrops = function () {\r\n        var self = this;\r\n        _.each(this.pool.slice(0), function (drop) {\r\n            self.removeDrop(drop);\r\n        });\r\n    };\r\n\r\n    Drop.prototype.subscribeEventHandler = function ($element, event, handler) {\r\n        if (typeof arguments[0] === 'string')\r\n            return this.subscribeEventHandler(this.$element, arguments[0], arguments[1]);\r\n        this.eventHandlers.push({ $element: $element, event: event, handler: handler });\r\n        $element.on(event, handler);\r\n    };\r\n\r\n    // TODO: implement this in all drops otherwise we leak the whole drop tree when reloading (they all reference eachother)\r\n    // DOM event handlers inside the element of the drop may be removed automatically in newer browsers,\r\n    // but still cause memory leaks in old ones\r\n    // DOM event handlers on document/body/#action-canvas or anything outside the element tree of the action always have to be removed explicitly\r\n    Drop.prototype.unsubscribeEventHandlers = $.noop;\r\n\r\n    Drop.prototype.unsubscribeEventHandlersRecursive = function () {\r\n        _.each(this.pool, function (drop) {\r\n            drop.unsubscribeEventHandlersRecursive();\r\n        });\r\n\r\n        this.unsubscribeEventHandlers();\r\n\r\n        if (this.removeClicks)\r\n            this.removeClicks();\r\n\r\n        var self = this;\r\n        _.each(this.eventHandlers, function (eventHandler) {\r\n            if (eventHandler.$element)\r\n                eventHandler.$element.off(eventHandler.event, eventHandler.handler);\r\n            else if (eventHandler.source)\r\n                self.unsubscribe(eventHandler.source, eventHandler.events);\r\n        });\r\n\r\n        this.parent = null;\r\n        this.rootDrop = null;\r\n        this.piping = null;\r\n        \r\n        this.$element.remove();\r\n    };\r\n\r\n    Drop.prototype.getRootDrop = function () {\r\n        if (this.parent)\r\n            return this.parent.getRootDrop();\r\n        return this;\r\n    };\r\n\r\n    Drop.prototype.isChildDropOfRecursive = function (potentialParent) {\r\n        if (this.parent)\r\n            return this.parent === potentialParent || this.parent.isChildDropOfRecursive(potentialParent);\r\n        return false;\r\n    };\r\n\r\n    // very simple implementation for now\r\n    Drop.prototype.events = function (source, events, doNotAutoUnsubscribe) {\r\n        _.each(_.keys(events), function (event) {\r\n            var handler = events[event];\r\n            source['withOn' + event](handler);\r\n        });\r\n\r\n        // doNotAutoUnsubscribe will default to 'false' if ommitted\r\n        if (doNotAutoUnsubscribe !== true)\r\n            this.eventHandlers.push({ source: source, events: events });\r\n    };\r\n\r\n    Drop.prototype.unsubscribe = function (source, events) {\r\n        _.each(_.keys(events), function (event) {\r\n            var handler = events[event];\r\n            source['withoutOn' + event](handler);\r\n        });\r\n    };\r\n\r\n    Drop.prototype.descendantOf = function (dropType) {\r\n        if (!this.parent) return false;\r\n        if (this.parent.type === dropType) return true;\r\n        return this.parent.descendantOf(dropType);\r\n    };\r\n\r\n    Drop.prototype.getFirstParentOfType = function (dropType) {\r\n        if (!this.parent) return undefined;\r\n        if (this.parent.type === dropType) return this.parent;\r\n        return this.parent.getFirstParentOfType(dropType);\r\n    };\r\n\r\n    Drop.prototype.getNestingContext = function () {\r\n        if (!this.parent) return undefined;\r\n        if (this.parent.nestingContext) return this.parent.nestingContext;\r\n        return this.parent.getNestingContext();\r\n    };\r\n\r\n    Drop.prototype.applyLayouts = function () {\r\n        if (this.data.appliedLayouts && this.data.appliedLayouts.length > 0) {\r\n            this.$element\r\n                .addClass('layout-specific')\r\n                .addClass(_.map(this.data.appliedLayouts, function (layoutId) {\r\n                    return 'supports-layout-' + layoutId;\r\n                }));\r\n        }\r\n    };\r\n\r\n    return Drop;\r\n});\n","define('drops/chart_v2/Chart_v2Defaults',[], function () {\r\n    const defaultFontSettingsMain = {\r\n        fontFamily: 'Arial',\r\n        size: 14,\r\n        weight: 'normal',\r\n        color: 'rgba(0, 0, 0, 1)'\r\n    };\r\n\r\n    const defaultFontSettingsSecondary = {\r\n        fontFamily: 'Arial',\r\n        size: 14,\r\n        weight: 'normal',\r\n        color: 'rgba(255, 255, 255, 1)'\r\n    };\r\n\r\n    const defaultRoundedCorners = {\r\n        enabled: false,\r\n        leftBottomRadius: 6,\r\n        leftTopRadius: 6,\r\n        rightBottomRadius: 6,\r\n        rightTopRadius: 6\r\n    };\r\n\r\n    const defaultPadding = {\r\n        left: 0,\r\n        right: 0,\r\n        top: 0,\r\n        bottom: 0\r\n    };\r\n\r\n    var designDefaults = {\r\n        data: {\r\n\r\n            labelType: 'value',\r\n            backgroundColor: 'rgba(255, 255, 255, 0)',\r\n            chartPadding: defaultPadding,\r\n\r\n            // axisX\r\n            showXAxis: false,\r\n            axisXColor: 'rgba(0, 0, 0, 0.1)',\r\n            axisXWidth: 1,\r\n            showXAxisLabel: false,\r\n            axisXLabel: '',\r\n            axisXLabelFont: defaultFontSettingsMain,\r\n            axisXLabelAlignment: 'end',\r\n            axisXLabelPadding: 4,\r\n            showXAxisTicks: true,\r\n            axisXTickColor: 'rgba(0, 0, 0, 1)',\r\n            axisXTickWidth: 1,\r\n            axisXTickLength: 8,\r\n            axisXDashedTick: false,\r\n            axisXDashedTickLength: 1,\r\n            axisXDashedTickSpacing: 1,\r\n            showXAxisTickLabels: true,\r\n            axisXTickLabelAlignment: 'center',\r\n            axisXTickLabelFont: defaultFontSettingsMain,\r\n            axisXTickLabelPadding: 3,\r\n            axisXTickLabelMirror: false,\r\n            axisXLabelAutoSkip: true,\r\n            axisXLabelAutoSkipPadding: 3,\r\n            axisXLabelMinRotation: 0,\r\n            axisXLabelMaxRotation: 0,\r\n\r\n            // axisY\r\n            showYAxis: false,\r\n            axisYColor: 'rgba(0, 0, 0, 0.1)',\r\n            axisYWidth: 1,\r\n            showYAxisLabel: false,\r\n            axisYLabel: '',\r\n            axisYLabelFont: defaultFontSettingsMain,\r\n            axisYLabelAlignment: 'end',\r\n            axisYLabelPadding: 4,\r\n            showYAxisTicks: true,\r\n            axisYTickColor: 'rgba(0, 0, 0, 1)',\r\n            axisYTickWidth: 1,\r\n            axisYTickLength: 8,\r\n            axisYDashedTick: false,\r\n            axisYDashedTickLength: 1,\r\n            axisYDashedTickSpacing: 1,\r\n            showYAxisTickLabels: true,\r\n            axisYTickLabelAlignment: 'center',\r\n            axisYTickLabelFont: defaultFontSettingsMain,\r\n            axisYTickLabelPadding: 3,\r\n            axisYTickLabelMirror: false,\r\n            axisYLabelAutoSkip: true,\r\n            axisYLabelAutoSkipPadding: 3,\r\n            axisYLabelMinRotation: 0,\r\n            axisYLabelMaxRotation: 0,\r\n\r\n            // axisY2\r\n            showY2Axis: false,\r\n            axisY2Color: 'rgba(0, 0, 0, 0.1)',\r\n            axisY2Width: 1,\r\n            showY2AxisLabel: false,\r\n            axisY2Label: '',\r\n            axisY2LabelFont: defaultFontSettingsMain,\r\n            axisY2LabelAlignment: 'end',\r\n            axisY2LabelPadding: 4,\r\n            showY2AxisTicks: true,\r\n            axisY2TickColor: 'rgba(0, 0, 0, 1)',\r\n            axisY2TickWidth: 1,\r\n            axisY2TickLength: 8,\r\n            axisY2DashedTick: false,\r\n            axisY2DashedTickLength: 1,\r\n            axisY2DashedTickSpacing: 1,\r\n            showY2AxisTickLabels: true,\r\n            axisY2TickLabelAlignment: 'center',\r\n            axisY2TickLabelFont: defaultFontSettingsMain,\r\n            axisY2TickLabelPadding: 3,\r\n            axisY2TickLabelMirror: false,\r\n            axisY2LabelAutoSkip: true,\r\n            axisY2LabelAutoSkipPadding: 3,\r\n            axisY2LabelMinRotation: 0,\r\n            axisY2LabelMaxRotation: 0,\r\n\r\n            // gridX\r\n            showXGrid: false,\r\n            gridXColor: 'rgba(0, 0, 0, 0.1)',\r\n            gridXLineWidth: 1,\r\n            gridXDashedLine: false,\r\n            gridXDashedLineLength: 1,\r\n            gridXDashedLineSpacing: 1,\r\n\r\n            // gridY\r\n            showYGrid: false,\r\n            gridYColor: 'rgba(0, 0, 0, 0.1)',\r\n            gridYLineWidth: 1,\r\n            gridYDashedLine: false,\r\n            gridYDashedLineLength: 1,\r\n            gridYDashedLineSpacing: 1,\r\n\r\n            // title\r\n            showTitle: false,\r\n            titleText: '',\r\n            titleFont: defaultFontSettingsMain,\r\n            titleFullSize: false,\r\n            titlePosition: 'top',\r\n            titleAlignment: 'center',\r\n            titlePadding: 10,\r\n\r\n            // tooltip\r\n            showTooltip: false,\r\n            tooltipInteractionMode: 'nearest',\r\n            tooltipInteractionIntersect: true,\r\n            tooltipInteractionAxis: 'x',\r\n            tooltipInteractionIncludeInvisible: false,\r\n            tooltipPosition: 'average',\r\n            tooltipPadding: defaultPadding,\r\n            tooltipBoxPadding: 1,\r\n            tooltipCaretPadding: 2,\r\n            tooltipCaretSize: 5,\r\n            tooltipBorderWidth: 0,\r\n            tooltipBorderColor: 'rgba(0, 0, 0, 0)',\r\n            tooltipRoundedCorners: defaultRoundedCorners,\r\n            tooltipBackgroundColor: 'rgba(0, 0, 0, 0.8)',\r\n            showTooltipTitle: true,\r\n            tooltipTitleFont: defaultFontSettingsSecondary,\r\n            tooltipTitleAlignment: 'left',\r\n            tooltipTitleSpacing: 2,\r\n            tooltipTitleMarginBottom: 6,\r\n            showTooltipBody: true,\r\n            tooltipBodyFont: defaultFontSettingsSecondary,\r\n            tooltipBodyLabelType: 'value',\r\n            tooltipBodyAlignment: 'left',\r\n            tooltipBodySpacing: 2,\r\n            tooltipUsePointStyle: false,\r\n            tooltipShowColorBoxes: true,\r\n\r\n            // legend\r\n            showLegend: false,\r\n            legendPosition: 'top',\r\n            legendAlignment: 'center',\r\n            legendMaxWidth: undefined,\r\n            legendMaxHeight: undefined,\r\n            legendDisableClick: true,\r\n            legendLabelFont: defaultFontSettingsMain,\r\n            legendItemShowBorder: false,\r\n            legendItemBorderColor: 'rgba(0, 0, 0, 0.8)',\r\n            legendItemBorderWidth: 1,\r\n            legendItemBorderRadius: 0,\r\n            legendItemBorderPadding: 5,\r\n            legendLabelBoxWitdh: 40,\r\n            legendLabelBoxHeight: 12,\r\n            legendLabelAlignment: 'left',\r\n            legendLabelPadding: 10,\r\n            legendLabelUsePointStyle: false,\r\n            legendLabelBoxRoundedCorners: 0,\r\n            showLegendTitle: false,\r\n            legendTitleText: '',\r\n            legendTitleFont: defaultFontSettingsMain,\r\n            legendTitlePadding: 10,\r\n            legendHideNullSeries: true,\r\n\r\n            // zoom\r\n            enableZoom: false,\r\n            enableZoomWheel: false,\r\n            zoomWheelSpeed: 0.1,\r\n            zoomWheelModifierKey: 'None',\r\n            enableZoomDrag: false,\r\n            zoomDragBacgroundColor: 'rgba(225, 225, 225, 0.3)',\r\n            showScrollbar: false,\r\n            scrollbarColor: 'rgba(0, 0, 0, 0.1)',\r\n            scrollbarHeight: 15,\r\n            scrollbarRoundedCorners: 0,\r\n            enableZoomPinch: false,\r\n            zoomMode: 'x',\r\n            zoomScaleMode: 'x',\r\n\r\n            // pan\r\n            enablePanning: false,\r\n            panningMode: 'x',\r\n            panningModifierKey: 'None',\r\n\r\n            // datalabels\r\n            showDatalabels: false,\r\n            datalabelFont: defaultFontSettingsMain,\r\n            datalabelHideZero: false,\r\n            datalabelMinPercentageThreshold: 0,\r\n            datalabelAnchor: 'center',\r\n            datalabelAlignment: 'center',\r\n            datalabelOffset: 4,\r\n            datalabelClamp: false\r\n        }\r\n    };\r\n\r\n    return designDefaults;\r\n});\r\n\n","define('lq/frontendModules',['lq'], function (lq) {\r\n    'use strict';\r\n\r\n    var getServerTicks = function () {\r\n        return 621356004000000000 + 10000 * Date.now();\r\n    };\r\n\r\n    var createScript = function (scriptUrl) {\r\n        var script = document.createElement('script');\r\n        script.async = false; // make sure the script are executed in the correct order\r\n        script.setAttribute('type', 'text/javascript');\r\n        script.setAttribute('src', scriptUrl);\r\n        return script;\r\n    };\r\n\r\n    var createLink = function (linkUrl) {\r\n        var link = document.createElement('link');\r\n        link.setAttribute('rel', 'stylesheet');\r\n        link.setAttribute('type', 'text/css');\r\n        link.setAttribute('href', linkUrl);\r\n        return link;\r\n    };\r\n\r\n    var vendorLoaded = false;\r\n\r\n    var load = function (bundleName, includeCss) {\r\n        if (!vendorLoaded) {\r\n            var script = createScript(lq.getFrontEndUrl('') + 'vendor.bundle.js?bust=' + getServerTicks());\r\n            document.getElementsByTagName('head')[0].appendChild(script);\r\n            vendorLoaded = true;\r\n        }\r\n\r\n        if (includeCss) {\r\n            var link = createLink(lq.getFrontEndUrl('') + bundleName + '.bundle.css?bust=' + getServerTicks());\r\n            document.getElementsByTagName('head')[0].appendChild(link);\r\n        }\r\n\r\n        return new Promise((resolve) => {\r\n            if (window[bundleName])\r\n                return resolve(window[bundleName]);\r\n\r\n            var script = createScript(lq.getFrontEndUrl('') + bundleName + '.bundle.js?bust=' + getServerTicks());\r\n            script.onload = function () {\r\n                resolve(window[bundleName]);\r\n            };\r\n            document.getElementsByTagName('head')[0].appendChild(script);\r\n        });\r\n    };\r\n\r\n    return {\r\n        load: load\r\n    };\r\n});\n","define('drops/chart_v2/chart_v2',[\r\n    'jquery',\r\n    'lq/Drop',\r\n    'drops/chart_v2/Chart_v2Defaults',\r\n    'lq/frontendModules'\r\n], function ($, Drop, designDefaults, FrontendModules) {    \r\n    'use strict';\r\n\r\n    var Chart = function (options) {\r\n        Drop.call(this, $('<div>'), designDefaults, options);\r\n\r\n        this.$canvas = $('<canvas>').appendTo(this.$element);\r\n    };\r\n\r\n    Drop.extend(Chart);\r\n\r\n    Chart.typeName = 'Chart_v2';\r\n\r\n    Chart.prototype.preRender = function () {\r\n        var self = this;\r\n    \r\n        this.ChartComponent = null;\r\n    \r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n\r\n        FrontendModules.load('chart', true)\r\n            .then(this.setChart.bind(this));\r\n\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.dataSource,\r\n            function (data) {\r\n                self.dataSourceResult = data;\r\n\r\n                if (self.ChartComponent)\r\n                    self.setData(data);\r\n                }\r\n        );\r\n    };\r\n\r\n    Chart.prototype.setChart = function (ChartRendered) {\r\n        this.ChartComponent = ChartRendered;\r\n\r\n        if (this.dataSourceResult)\r\n            this.setData(this.dataSourceResult);\r\n    };\r\n\r\n    Chart.prototype.setData = function (dataSourceResult) {\r\n        var config = {\r\n            labelType: this.data.labelType,\r\n            backgroundColor: this.data.backgroundColor,\r\n            chartPadding: this.data.chartPadding,\r\n\r\n            showXAxis: this.data.showXAxis,\r\n            axisXColor: this.data.axisXColor,\r\n            axisXWidth: this.data.axisXWidth,\r\n            showXAxisLabel: this.data.showXAxisLabel,\r\n            axisXLabel: this.data.axisXLabel,\r\n            axisXLabelFont: this.data.axisXLabelFont,\r\n            axisXLabelAlignment: this.data.axisXLabelAlignment,\r\n            axisXLabelPadding: this.data.axisXLabelPadding,\r\n            showXAxisTicks: this.data.showXAxisTicks,\r\n            axisXTickColor: this.data.axisXTickColor,\r\n            axisXTickWidth: this.data.axisXTickWidth,\r\n            axisXTickLength: this.data.axisXTickLength,\r\n            axisXDashedTick: this.data.axisXDashedTick,\r\n            axisXDashedTickLength: this.data.axisXDashedTickLength,\r\n            axisXDashedTickSpacing: this.data.axisXDashedTickSpacing,\r\n            showXAxisTickLabels: this.data.showXAxisTickLabels,\r\n            axisXTickLabelAlignment: this.data.axisXTickLabelAlignment,\r\n            axisXTickLabelFont: this.data.axisXTickLabelFont,\r\n            axisXTickLabelPadding: this.data.axisXTickLabelPadding,\r\n            axisXTickLabelMirror: this.data.axisXTickLabelMirror,\r\n            axisXLabelAutoSkip: this.data.axisXLabelAutoSkip,\r\n            axisXLabelAutoSkipPadding: this.data.axisXLabelAutoSkipPadding,\r\n            axisXLabelMinRotation: this.data.axisXLabelMinRotation,\r\n            axisXLabelMaxRotation: this.data.axisXLabelMaxRotation,\r\n\r\n            showYAxis: this.data.showYAxis,\r\n            axisYColor: this.data.axisYColor,\r\n            axisYWidth: this.data.axisYWidth,\r\n            showYAxisLabel: this.data.showYAxisLabel,\r\n            axisYLabel: this.data.axisYLabel,\r\n            axisYLabelFont: this.data.axisYLabelFont,\r\n            axisYLabelAlignment: this.data.axisYLabelAlignment,\r\n            axisYLabelPadding: this.data.axisYLabelPadding,\r\n            showYAxisTicks: this.data.showYAxisTicks,\r\n            axisYTickColor: this.data.axisYTickColor,\r\n            axisYTickWidth: this.data.axisYTickWidth,\r\n            axisYTickLength: this.data.axisYTickLength,\r\n            axisYDashedTick: this.data.axisYDashedTick,\r\n            axisYDashedTickLength: this.data.axisYDashedTickLength,\r\n            axisYDashedTickSpacing: this.data.axisYDashedTickSpacing,\r\n            showYAxisTickLabels: this.data.showYAxisTickLabels,\r\n            axisYTickLabelAlignment: this.data.axisYTickLabelAlignment,\r\n            axisYTickLabelFont: this.data.axisYTickLabelFont,\r\n            axisYTickLabelPadding: this.data.axisYTickLabelPadding,\r\n            axisYTickLabelMirror: this.data.axisYTickLabelMirror,\r\n            axisYLabelAutoSkip: this.data.axisYLabelAutoSkip,\r\n            axisYLabelAutoSkipPadding: this.data.axisYLabelAutoSkipPadding,\r\n            axisYLabelMinRotation: this.data.axisYLabelMinRotation,\r\n            axisYLabelMaxRotation: this.data.axisYLabelMaxRotation,\r\n\r\n            showY2Axis: this.data.showY2Axis,\r\n            axisY2Color: this.data.axisY2Color,\r\n            axisY2Width: this.data.axisY2Width,\r\n            showY2AxisLabel: this.data.showY2AxisLabel,\r\n            axisY2Label: this.data.axisY2Label,\r\n            axisY2LabelFont: this.data.axisY2LabelFont,\r\n            axisY2LabelAlignment: this.data.axisY2LabelAlignment,\r\n            axisY2LabelPadding: this.data.axisY2LabelPadding,\r\n            showY2AxisTicks: this.data.showY2AxisTicks,\r\n            axisY2TickColor: this.data.axisY2TickColor,\r\n            axisY2TickWidth: this.data.axisY2TickWidth,\r\n            axisY2TickLength: this.data.axisY2TickLength,\r\n            axisY2DashedTick: this.data.axisY2DashedTick,\r\n            axisY2DashedTickLength: this.data.axisY2DashedTickLength,\r\n            axisY2DashedTickSpacing: this.data.axisY2DashedTickSpacing,\r\n            showY2AxisTickLabels: this.data.showY2AxisTickLabels,\r\n            axisY2TickLabelAlignment: this.data.axisY2TickLabelAlignment,\r\n            axisY2TickLabelFont: this.data.axisY2TickLabelFont,\r\n            axisY2TickLabelPadding: this.data.axisY2TickLabelPadding,\r\n            axisY2TickLabelMirror: this.data.axisY2TickLabelMirror,\r\n            axisY2LabelAutoSkip: this.data.axisY2LabelAutoSkip,\r\n            axisY2LabelAutoSkipPadding: this.data.axisY2LabelAutoSkipPadding,\r\n            axisY2LabelMinRotation: this.data.axisY2LabelMinRotation,\r\n            axisY2LabelMaxRotation: this.data.axisY2LabelMaxRotation,\r\n\r\n            showXGrid: this.data.showXGrid,\r\n            gridXColor: this.data.gridXColor,\r\n            gridXLineWidth: this.data.gridXLineWidth,\r\n            gridXDashedLine: this.data.gridXDashedLine,\r\n            gridXDashedLineLength: this.data.gridXDashedLineLength,\r\n            gridXDashedLineSpacing: this.data.gridXDashedLineSpacing,\r\n\r\n            showYGrid: this.data.showYGrid,\r\n            gridYColor: this.data.gridYColor,\r\n            gridYLineWidth: this.data.gridYLineWidth,\r\n            gridYDashedLine: this.data.gridYDashedLine,\r\n            gridYDashedLineLength: this.data.gridYDashedLineLength,\r\n            gridYDashedLineSpacing: this.data.gridYDashedLineSpacing,\r\n\r\n            showTitle: this.data.showTitle,\r\n            titleText: this.data.titleText,\r\n            titleFont: this.data.titleFont,\r\n            titleFullSize: this.data.titleFullSize,\r\n            titlePosition: this.data.titlePosition,\r\n            titleAlignment: this.data.titleAlignment,\r\n            titlePadding: this.data.titlePadding,\r\n\r\n            showTooltip: this.data.showTooltip,\r\n            tooltipInteractionMode: this.data.tooltipInteractionMode,\r\n            tooltipInteractionIntersect: this.data.tooltipInteractionIntersect,\r\n            tooltipInteractionAxis: this.data.tooltipInteractionAxis,\r\n            tooltipInteractionIncludeInvisible: this.data.tooltipInteractionIncludeInvisible,\r\n            tooltipPosition: this.data.tooltipPosition,\r\n            tooltipPadding: this.data.tooltipPadding,\r\n            tooltipBoxPadding: this.data.tooltipBoxPadding,\r\n            tooltipCaretPadding: this.data.tooltipCaretPadding,\r\n            tooltipCaretSize: this.data.tooltipCaretSize,\r\n            tooltipBorderWidth: this.data.tooltipBorderWidth,\r\n            tooltipBorderColor: this.data.tooltipBorderColor,\r\n            tooltipRoundedCorners: this.data.tooltipRoundedCorners,\r\n            tooltipBackgroundColor: this.data.tooltipBackgroundColor,\r\n            showTooltipTitle: this.data.showTooltipTitle,\r\n            tooltipTitleFont: this.data.tooltipTitleFont,\r\n            tooltipTitleAlignment: this.data.tooltipTitleAlignment,\r\n            tooltipTitleSpacing: this.data.tooltipTitleSpacing,\r\n            tooltipTitleMarginBottom: this.data.tooltipTitleMarginBottom,\r\n            showTooltipBody: this.data.showTooltipBody,\r\n            tooltipBodyFont: this.data.tooltipBodyFont,\r\n            tooltipBodyLabelType: this.data.tooltipBodyLabelType,\r\n            tooltipBodyAlignment: this.data.tooltipBodyAlignment,\r\n            tooltipBodySpacing: this.data.tooltipBodySpacing,\r\n            tooltipUsePointStyle: this.data.tooltipUsePointStyle,\r\n            tooltipShowColorBoxes: this.data.tooltipShowColorBoxes,\r\n\r\n            showLegend: this.data.showLegend,\r\n            legendPosition: this.data.legendPosition,\r\n            legendAlignment: this.data.legendAlignment,\r\n            legendMaxWidth: this.data.legendMaxWidth,\r\n            legendMaxHeight: this.data.legendMaxHeight,\r\n            legendDisableClick: this.data.legendDisableClick,\r\n            legendLabelFont: this.data.legendLabelFont,\r\n            legendItemShowBorder: this.data.legendItemShowBorder,\r\n            legendItemBorderColor: this.data.legendItemBorderColor,\r\n            legendItemBorderWidth: this.data.legendItemBorderWidth,\r\n            legendItemBorderRadius: this.data.legendItemBorderRadius,\r\n            legendItemBorderPadding: this.data.legendItemBorderPadding,\r\n            legendLabelBoxWitdh: this.data.legendLabelBoxWitdh,\r\n            legendLabelBoxHeight: this.data.legendLabelBoxHeight,\r\n            legendLabelAlignment: this.data.legendLabelAlignment,\r\n            legendLabelPadding: this.data.legendLabelPadding,\r\n            legendLabelUsePointStyle: this.data.legendLabelUsePointStyle,\r\n            legendLabelBoxRoundedCorners: this.data.legendLabelBoxRoundedCorners,\r\n            showLegendTitle: this.data.showLegendTitle,\r\n            legendTitleText: this.data.legendTitleText,\r\n            legendTitleFont: this.data.legendTitleFont,\r\n            legendTitlePadding: this.data.legendTitlePadding,\r\n            legendHideNullSeries: this.data.legendHideNullSeries,\r\n\r\n            enableZoom: this.data.enableZoom,\r\n            enableZoomWheel: this.data.enableZoomWheel,\r\n            zoomWheelSpeed: this.data.zoomWheelSpeed,\r\n            zoomWheelModifierKey: this.data.zoomWheelModifierKey,\r\n            enableZoomDrag: this.data.enableZoomDrag,\r\n            showScrollbar: this.data.showScrollbar,\r\n            scrollbarColor: this.data.scrollbarColor,\r\n            scrollbarHeight: this.data.scrollbarHeight,\r\n            scrollbarRoundedCorners: this.data.scrollbarRoundedCorners,\r\n            zoomDragBacgroundColor: this.data.zoomDragBacgroundColor,\r\n            enableZoomPinch: this.data.enableZoomPinch,\r\n            zoomMode: this.data.zoomMode,\r\n            zoomScaleMode: this.data.zoomScaleMode,\r\n\r\n            enablePanning: this.data.enablePanning,\r\n            panningMode: this.data.panningMode,\r\n            panningModifierKey: this.data.panningModifierKey,\r\n\r\n            showDatalabels: this.data.showDatalabels,\r\n            datalabelFont: this.data.datalabelFont,\r\n            datalabelHideZero: this.data.datalabelHideZero,\r\n            datalabelMinPercentageThreshold: this.data.datalabelMinPercentageThreshold,\r\n            datalabelAnchor: this.data.datalabelAnchor,\r\n            datalabelAlignment: this.data.datalabelAlignment,\r\n            datalabelOffset: this.data.datalabelOffset,\r\n            datalabelClamp: this.data.datalabelClamp,\r\n\r\n            emptyText: this.data.emptyText,\r\n\r\n            clickedEvent: this.isEventEnabled('clicked') ? this.triggerEventIfEnabled.bind(this) : undefined\r\n        }\r\n\r\n        this.ChartComponent.default(dataSourceResult, this.data.series, config, this.$element.get(0));\r\n    };\r\n\r\n    Chart.prototype.afterShown = function () {\r\n        this.$element.css('display', 'inherit');\r\n    };\r\n\r\n    Chart.prototype.afterHidden = function () {\r\n        this.$element.css('display', 'none');\r\n    };\r\n\r\n    return Chart;\r\n});\r\n\n","define('drops/circle/circle',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'underscore'\r\n], function ($, Drop, Style, _) {\r\n    'use strict';\r\n    \r\n    function Circle(options) {\r\n        Drop.call(this, $('<div/>'), options);\r\n        \r\n        this.styleTheCircle();\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize');\r\n\r\n        var $wrapper = $('<div />')\r\n            .css({\r\n                display: 'table-cell',\r\n                width: this.data.size.x + 'px',\r\n                height: this.data.size.y + 'px',\r\n                textAlign: 'center',\r\n                verticalAlign: 'middle'\r\n            })\r\n            .appendTo(this.$element);\r\n\r\n        this.$text = $('<div/>')\r\n            .text(this.data.value)\r\n            .appendTo($wrapper);\r\n\r\n        this.setColors(this.data.value);\r\n    };\r\n\r\n    Drop.extend(Circle);\r\n\r\n    Circle.typeName = 'Circle';\r\n    \r\n    Circle.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.formatter = this.piping.formatting.createFormatter(this.data.formatting);\r\n        this.applyPosition();\r\n    };\r\n\r\n    Circle.prototype.styleTheCircle = function () {\r\n        Style.renderStyles(this);\r\n\r\n        // note: these css settings overwrite the styling, so the styling should be applied first!\r\n        this.$element\r\n            .css({\r\n                borderRadius: '1000px'\r\n            });\r\n    };\r\n\r\n    Circle.prototype.setColors = function (value) {\r\n        var self = this;\r\n        _.forEach(this.data.colorRanges, function (range) {\r\n            var from = parseFloat(range.from);\r\n            var to = parseFloat(range.to);\r\n            if (from <= value && value <= to) {\r\n                self.$element.css({ backgroundColor: range.color });\r\n            }\r\n        });\r\n    };\r\n\r\n    Circle.prototype.clearValue = function () {\r\n        this.$text.text('0');\r\n        this.setColors(0);\r\n    };\r\n\r\n    Circle.prototype.setValue = function (update) {\r\n        this.$text.text(update.value);\r\n        this.setColors(update.value);\r\n    };\r\n\r\n    return Circle;\r\n});\n","define('drops/circleShape/circleShape',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style'\r\n], function ($, Drop, Style) {\r\n    'use strict';\r\n\r\n    function CircleShape(options) {\r\n        Drop.call(this, $('<div/>'), options);\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize');\r\n    };\r\n\r\n    Drop.extend(CircleShape, Drop);\r\n\r\n    CircleShape.typeName = 'CircleShape';\r\n\r\n    CircleShape.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n\r\n        this.applyPosition();\r\n\r\n        var dropSize = this.data.size;\r\n        var availableSize = dropSize.x < dropSize.y ? dropSize.x : dropSize.y;\r\n\r\n        this.$circle = $('<div/>')\r\n            .css({\r\n                width: availableSize + 'px',\r\n                height: availableSize + 'px'\r\n            });\r\n\r\n        this.renderStyles();\r\n\r\n        this.$circle.appendTo(this.$element);\r\n    };\r\n\r\n    CircleShape.prototype.renderStyles = function () {\r\n        // note: this will clear the border-radius\r\n        Style.renderStyles(this, null, this.$circle);\r\n        \r\n        this.$circle.css('border-radius', '50%');\r\n    };\r\n\r\n    return CircleShape;\r\n});\n","define('drops/clock/clock',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'globalize',\r\n    'lq/util'\r\n], function ($, Drop, Style, globalize, util) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            format: 'HH:mm'\r\n        }\r\n    };\r\n\r\n    function Clock(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n        var self = this;\r\n\r\n        self.$timeField = $('<div/>')\r\n            .addClass('drop-text-content')\r\n            .css({\r\n                display: 'flex',\r\n                flexDirection: 'column',\r\n                flex: '1 1 100%'\r\n            })\r\n\t        .appendTo(self.$element);\r\n\r\n        var style = util.convertListOfKeyValuesToObject(self.data.styles);\r\n\r\n        Style.renderStyles(self);\r\n\r\n        var fontSize = style && style.normal && style.normal.font && style.normal.font.size\r\n\t\t\t|| Style.getDefaults().font.size;\r\n\r\n        self.$element\r\n\t        .addClass('boxToBorderSize drop-text-container')\r\n\t        .css({                \r\n\t            display: 'flex'\r\n\t        });       \r\n\r\n        self.update();\r\n\r\n        return self;\r\n    };\r\n\r\n    Drop.extend(Clock, Drop);\r\n\r\n    Clock.typeName = 'Clock';\r\n\r\n    Clock.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n    };\r\n\r\n    Clock.prototype.update = function () {\r\n        var dateTimeString = globalize.format(new Date(), this.data.format);\r\n        this.$timeField.text(dateTimeString);\r\n\r\n        var self = this;\r\n        setTimeout(function () { self.update(); }, 1000 - (new Date().getTime() % 1000));\r\n    };\r\n\r\n    return Clock;\r\n});\n","//\r\n// jQuery MiniColors: A tiny color picker built on jQuery\r\n//\r\n// Developed by Cory LaViska for A Beautiful Site, LLC\r\n//\r\n// Licensed under the MIT license: http://opensource.org/licenses/MIT\r\n//\r\n(function (factory) {\r\n  if(typeof define === 'function' && define.amd) {\r\n    // AMD. Register as an anonymous module.\r\n    define('jquery.miniColors/jquery.miniColors',['jquery'], factory);\r\n  } else if(typeof exports === 'object') {\r\n    // Node/CommonJS\r\n    module.exports = factory(require('jquery'));\r\n  } else {\r\n    // Browser globals\r\n    factory(jQuery);\r\n  }\r\n}(function ($) {\r\n  'use strict';\r\n\r\n  // Defaults\r\n  $.minicolors = {\r\n    defaults: {\r\n      animationSpeed: 50,\r\n      animationEasing: 'swing',\r\n      change: null,\r\n      changeDelay: 0,\r\n      control: 'hue',\r\n      defaultValue: '',\r\n      format: 'hex',\r\n      hide: null,\r\n      hideSpeed: 100,\r\n      inline: false,\r\n      keywords: '',\r\n      letterCase: 'lowercase',\r\n      opacity: false,\r\n      position: 'bottom',\r\n      show: null,\r\n      showSpeed: 100,\r\n      theme: 'default',\r\n      swatches: []\r\n    }\r\n  };\r\n\r\n  // Public methods\r\n  $.extend($.fn, {\r\n    minicolors: function(method, data) {\r\n\r\n      switch(method) {\r\n        // Destroy the control\r\n        case 'destroy':\r\n          $(this).each(function() {\r\n            destroy($(this));\r\n          });\r\n          return $(this);\r\n\r\n        // Hide the color picker\r\n        case 'hide':\r\n          hide();\r\n          return $(this);\r\n\r\n        // Get/set opacity\r\n        case 'opacity':\r\n          // Getter\r\n          if(data === undefined) {\r\n            // Getter\r\n            return $(this).attr('data-opacity');\r\n          } else {\r\n            // Setter\r\n            $(this).each(function() {\r\n              updateFromInput($(this).attr('data-opacity', data));\r\n            });\r\n          }\r\n          return $(this);\r\n\r\n        // Get an RGB(A) object based on the current color/opacity\r\n        case 'rgbObject':\r\n          return rgbObject($(this), method === 'rgbaObject');\r\n\r\n        // Get an RGB(A) string based on the current color/opacity\r\n        case 'rgbString':\r\n        case 'rgbaString':\r\n          return rgbString($(this), method === 'rgbaString');\r\n\r\n        // Get/set settings on the fly\r\n        case 'settings':\r\n          if(data === undefined) {\r\n            return $(this).data('minicolors-settings');\r\n          } else {\r\n            // Setter\r\n            $(this).each(function() {\r\n              var settings = $(this).data('minicolors-settings') || {};\r\n              destroy($(this));\r\n              $(this).minicolors($.extend(true, settings, data));\r\n            });\r\n          }\r\n          return $(this);\r\n\r\n        // Show the color picker\r\n        case 'show':\r\n          show($(this).eq(0));\r\n          return $(this);\r\n\r\n        // Get/set the hex color value\r\n        case 'value':\r\n          if(data === undefined) {\r\n            // Getter\r\n            return $(this).val();\r\n          } else {\r\n            // Setter\r\n            $(this).each(function() {\r\n              if(typeof(data) === 'object' && data !== null) {\r\n                if(data.opacity !== undefined) {\r\n                  $(this).attr('data-opacity', keepWithin(data.opacity, 0, 1));\r\n                }\r\n                if(data.color) {\r\n                  $(this).val(data.color);\r\n                }\r\n              } else {\r\n                $(this).val(data);\r\n              }\r\n              updateFromInput($(this));\r\n            });\r\n          }\r\n          return $(this);\r\n\r\n        // Initializes the control\r\n        default:\r\n          if(method !== 'create') data = method;\r\n          $(this).each(function() {\r\n            init($(this), data);\r\n          });\r\n          return $(this);\r\n\r\n      }\r\n\r\n    }\r\n  });\r\n\r\n  // Initialize input elements\r\n  function init(input, settings) {\r\n    var minicolors = $('<div class=\"minicolors\" />');\r\n    var defaults = $.minicolors.defaults;\r\n    var name;\r\n    var size;\r\n    var swatches;\r\n    var swatch;\r\n    var swatchString;\r\n    var panel;\r\n    var i;\r\n\r\n    // Do nothing if already initialized\r\n    if(input.data('minicolors-initialized')) return;\r\n\r\n    // Handle settings\r\n    settings = $.extend(true, {}, defaults, settings);\r\n\r\n    // The wrapper\r\n    minicolors\r\n      .addClass('minicolors-theme-' + settings.theme)\r\n      .toggleClass('minicolors-with-opacity', settings.opacity);\r\n\r\n    // Custom positioning\r\n    if(settings.position !== undefined) {\r\n      $.each(settings.position.split(' '), function() {\r\n        minicolors.addClass('minicolors-position-' + this);\r\n      });\r\n    }\r\n\r\n    // Input size\r\n    if(settings.format === 'rgb') {\r\n      size = settings.opacity ? '25' : '20';\r\n    } else {\r\n      size = settings.keywords ? '11' : '7';\r\n    }\r\n\r\n    // The input\r\n    input\r\n      .addClass('minicolors-input')\r\n      .data('minicolors-initialized', false)\r\n      .data('minicolors-settings', settings)\r\n      .prop('size', size)\r\n      .wrap(minicolors)\r\n      .after(\r\n        '<div class=\"minicolors-panel minicolors-slider-' + settings.control + '\">' +\r\n                '<div class=\"minicolors-slider minicolors-sprite\">' +\r\n                  '<div class=\"minicolors-picker\"></div>' +\r\n                '</div>' +\r\n                '<div class=\"minicolors-opacity-slider minicolors-sprite\">' +\r\n                  '<div class=\"minicolors-picker\"></div>' +\r\n                '</div>' +\r\n                '<div class=\"minicolors-grid minicolors-sprite\">' +\r\n                  '<div class=\"minicolors-grid-inner\"></div>' +\r\n                  '<div class=\"minicolors-picker\"><div></div></div>' +\r\n                '</div>' +\r\n              '</div>'\r\n      );\r\n\r\n    // The swatch\r\n    if(!settings.inline) {\r\n      input.after('<span class=\"minicolors-swatch minicolors-sprite minicolors-input-swatch\"><span class=\"minicolors-swatch-color\"></span></span>');\r\n      input.next('.minicolors-input-swatch').on('click', function(event) {\r\n        event.preventDefault();\r\n        input.trigger('focus');\r\n      });\r\n    }\r\n\r\n    // Prevent text selection in IE\r\n    panel = input.parent().find('.minicolors-panel');\r\n    panel.on('selectstart', function() { return false; }).end();\r\n\r\n    // Swatches\r\n    if(settings.swatches && settings.swatches.length !== 0) {\r\n      panel.addClass('minicolors-with-swatches');\r\n      swatches = $('<ul class=\"minicolors-swatches\"></ul>')\r\n        .appendTo(panel);\r\n      for(i = 0; i < settings.swatches.length; ++i) {\r\n        // allow for custom objects as swatches\r\n        if(typeof settings.swatches[i] === 'object') {\r\n          name = settings.swatches[i].name;\r\n          swatch = settings.swatches[i].color;\r\n        } else {\r\n          name = '';\r\n          swatch = settings.swatches[i];\r\n        }\r\n        swatchString = swatch;\r\n        swatch = isRgb(swatch) ? parseRgb(swatch, true) : hex2rgb(parseHex(swatch, true));\r\n        $('<li class=\"minicolors-swatch minicolors-sprite\"><span class=\"minicolors-swatch-color\"></span></li>')\r\n          .attr(\"title\", name)\r\n          .appendTo(swatches)\r\n          .data('swatch-color', swatchString)\r\n          .find('.minicolors-swatch-color')\r\n          .css({\r\n            backgroundColor: ((swatchString !== 'transparent') ? rgb2hex(swatch) : 'transparent'),\r\n            opacity: String(swatch.a)\r\n          });\r\n        settings.swatches[i] = swatch;\r\n      }\r\n    }\r\n\r\n    // Inline controls\r\n    if(settings.inline) input.parent().addClass('minicolors-inline');\r\n\r\n    updateFromInput(input, false);\r\n\r\n    input.data('minicolors-initialized', true);\r\n  }\r\n\r\n  // Returns the input back to its original state\r\n  function destroy(input) {\r\n    var minicolors = input.parent();\r\n\r\n    // Revert the input element\r\n    input\r\n      .removeData('minicolors-initialized')\r\n      .removeData('minicolors-settings')\r\n      .removeProp('size')\r\n      .removeClass('minicolors-input');\r\n\r\n    // Remove the wrap and destroy whatever remains\r\n    minicolors.before(input).remove();\r\n  }\r\n\r\n  // Shows the specified dropdown panel\r\n  function show(input) {\r\n    var minicolors = input.parent();\r\n    var panel = minicolors.find('.minicolors-panel');\r\n    var settings = input.data('minicolors-settings');\r\n\r\n    // Do nothing if uninitialized, disabled, inline, or already open\r\n    if(\r\n      !input.data('minicolors-initialized') ||\r\n      input.prop('disabled') ||\r\n      minicolors.hasClass('minicolors-inline') ||\r\n      minicolors.hasClass('minicolors-focus')\r\n    ) return;\r\n\r\n    hide();\r\n\r\n    minicolors.addClass('minicolors-focus');\r\n    if (panel.animate) {\r\n      panel\r\n        .stop(true, true)\r\n        .fadeIn(settings.showSpeed, function () {\r\n          if (settings.show) settings.show.call(input.get(0));\r\n        });\r\n    } else {\r\n      panel.show();\r\n      if (settings.show) settings.show.call(input.get(0));\r\n    }\r\n  }\r\n\r\n  // Hides all dropdown panels\r\n  function hide() {\r\n    $('.minicolors-focus').each(function() {\r\n      var minicolors = $(this);\r\n      var input = minicolors.find('.minicolors-input');\r\n      var panel = minicolors.find('.minicolors-panel');\r\n      var settings = input.data('minicolors-settings');\r\n\r\n      if (panel.animate) {\r\n        panel.fadeOut(settings.hideSpeed, function () {\r\n          if (settings.hide) settings.hide.call(input.get(0));\r\n          minicolors.removeClass('minicolors-focus');\r\n        });\r\n      } else {\r\n        panel.hide();\r\n        if (settings.hide) settings.hide.call(input.get(0));\r\n        minicolors.removeClass('minicolors-focus');\r\n      }\r\n    });\r\n  }\r\n\r\n  // Moves the selected picker\r\n  function move(target, event, animate) {\r\n    var input = target.parents('.minicolors').find('.minicolors-input');\r\n    var settings = input.data('minicolors-settings');\r\n    var picker = target.find('[class$=-picker]');\r\n    var offsetX = target.offset().left;\r\n    var offsetY = target.offset().top;\r\n    var x = Math.round(event.pageX - offsetX);\r\n    var y = Math.round(event.pageY - offsetY);\r\n    var duration = animate ? settings.animationSpeed : 0;\r\n    var wx, wy, r, phi, styles;\r\n\r\n    // Touch support\r\n    if(event.originalEvent.changedTouches) {\r\n      x = event.originalEvent.changedTouches[0].pageX - offsetX;\r\n      y = event.originalEvent.changedTouches[0].pageY - offsetY;\r\n    }\r\n\r\n    // Constrain picker to its container\r\n    if(x < 0) x = 0;\r\n    if(y < 0) y = 0;\r\n    if(x > target.width()) x = target.width();\r\n    if(y > target.height()) y = target.height();\r\n\r\n    // Constrain color wheel values to the wheel\r\n    if(target.parent().is('.minicolors-slider-wheel') && picker.parent().is('.minicolors-grid')) {\r\n      wx = 75 - x;\r\n      wy = 75 - y;\r\n      r = Math.sqrt(wx * wx + wy * wy);\r\n      phi = Math.atan2(wy, wx);\r\n      if(phi < 0) phi += Math.PI * 2;\r\n      if(r > 75) {\r\n        r = 75;\r\n        x = 75 - (75 * Math.cos(phi));\r\n        y = 75 - (75 * Math.sin(phi));\r\n      }\r\n      x = Math.round(x);\r\n      y = Math.round(y);\r\n    }\r\n\r\n    // Move the picker\r\n    styles = {\r\n      top: y + 'px'\r\n    };\r\n    if(target.is('.minicolors-grid')) {\r\n      styles.left = x + 'px';\r\n    }\r\n    if (picker.animate) {\r\n      picker\r\n        .stop(true)\r\n        .animate(styles, duration, settings.animationEasing, function() {\r\n          updateFromControl(input, target);\r\n        });\r\n    } else {\r\n      picker\r\n        .css(styles);\r\n      updateFromControl(input, target);\r\n    }\r\n  }\r\n\r\n  // Sets the input based on the color picker values\r\n  function updateFromControl(input, target) {\r\n\r\n    function getCoords(picker, container) {\r\n      var left, top;\r\n      if(!picker.length || !container) return null;\r\n      left = picker.offset().left;\r\n      top = picker.offset().top;\r\n\r\n      return {\r\n        x: left - container.offset().left + (picker.outerWidth() / 2),\r\n        y: top - container.offset().top + (picker.outerHeight() / 2)\r\n      };\r\n    }\r\n\r\n    var hue, saturation, brightness, x, y, r, phi;\r\n    var hex = input.val();\r\n    var opacity = input.attr('data-opacity');\r\n\r\n    // Helpful references\r\n    var minicolors = input.parent();\r\n    var settings = input.data('minicolors-settings');\r\n    var swatch = minicolors.find('.minicolors-input-swatch');\r\n\r\n    // Panel objects\r\n    var grid = minicolors.find('.minicolors-grid');\r\n    var slider = minicolors.find('.minicolors-slider');\r\n    var opacitySlider = minicolors.find('.minicolors-opacity-slider');\r\n\r\n    // Picker objects\r\n    var gridPicker = grid.find('[class$=-picker]');\r\n    var sliderPicker = slider.find('[class$=-picker]');\r\n    var opacityPicker = opacitySlider.find('[class$=-picker]');\r\n\r\n    // Picker positions\r\n    var gridPos = getCoords(gridPicker, grid);\r\n    var sliderPos = getCoords(sliderPicker, slider);\r\n    var opacityPos = getCoords(opacityPicker, opacitySlider);\r\n\r\n    // Handle colors\r\n    if(target.is('.minicolors-grid, .minicolors-slider, .minicolors-opacity-slider')) {\r\n\r\n      // Determine HSB values\r\n      switch(settings.control) {\r\n        case 'wheel':\r\n          // Calculate hue, saturation, and brightness\r\n          x = (grid.width() / 2) - gridPos.x;\r\n          y = (grid.height() / 2) - gridPos.y;\r\n          r = Math.sqrt(x * x + y * y);\r\n          phi = Math.atan2(y, x);\r\n          if(phi < 0) phi += Math.PI * 2;\r\n          if(r > 75) {\r\n            r = 75;\r\n            gridPos.x = 69 - (75 * Math.cos(phi));\r\n            gridPos.y = 69 - (75 * Math.sin(phi));\r\n          }\r\n          saturation = keepWithin(r / 0.75, 0, 100);\r\n          hue = keepWithin(phi * 180 / Math.PI, 0, 360);\r\n          brightness = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);\r\n          hex = hsb2hex({\r\n            h: hue,\r\n            s: saturation,\r\n            b: brightness\r\n          });\r\n\r\n          // Update UI\r\n          slider.css('backgroundColor', hsb2hex({ h: hue, s: saturation, b: 100 }));\r\n          break;\r\n\r\n        case 'saturation':\r\n          // Calculate hue, saturation, and brightness\r\n          hue = keepWithin(parseInt(gridPos.x * (360 / grid.width()), 10), 0, 360);\r\n          saturation = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);\r\n          brightness = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);\r\n          hex = hsb2hex({\r\n            h: hue,\r\n            s: saturation,\r\n            b: brightness\r\n          });\r\n\r\n          // Update UI\r\n          slider.css('backgroundColor', hsb2hex({ h: hue, s: 100, b: brightness }));\r\n          minicolors.find('.minicolors-grid-inner').css('opacity', saturation / 100);\r\n          break;\r\n\r\n        case 'brightness':\r\n          // Calculate hue, saturation, and brightness\r\n          hue = keepWithin(parseInt(gridPos.x * (360 / grid.width()), 10), 0, 360);\r\n          saturation = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);\r\n          brightness = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);\r\n          hex = hsb2hex({\r\n            h: hue,\r\n            s: saturation,\r\n            b: brightness\r\n          });\r\n\r\n          // Update UI\r\n          slider.css('backgroundColor', hsb2hex({ h: hue, s: saturation, b: 100 }));\r\n          minicolors.find('.minicolors-grid-inner').css('opacity', 1 - (brightness / 100));\r\n          break;\r\n\r\n        default:\r\n          // Calculate hue, saturation, and brightness\r\n          hue = keepWithin(360 - parseInt(sliderPos.y * (360 / slider.height()), 10), 0, 360);\r\n          saturation = keepWithin(Math.floor(gridPos.x * (100 / grid.width())), 0, 100);\r\n          brightness = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);\r\n          hex = hsb2hex({\r\n            h: hue,\r\n            s: saturation,\r\n            b: brightness\r\n          });\r\n\r\n          // Update UI\r\n          grid.css('backgroundColor', hsb2hex({ h: hue, s: 100, b: 100 }));\r\n          break;\r\n      }\r\n\r\n      // Handle opacity\r\n      if(settings.opacity) {\r\n        opacity = parseFloat(1 - (opacityPos.y / opacitySlider.height())).toFixed(2);\r\n      } else {\r\n        opacity = 1;\r\n      }\r\n\r\n      updateInput(input, hex, opacity);\r\n    }\r\n    else {\r\n      // Set swatch color\r\n      swatch.find('span').css({\r\n        backgroundColor: hex,\r\n        opacity: String(opacity)\r\n      });\r\n\r\n      // Handle change event\r\n      doChange(input, hex, opacity);\r\n    }\r\n  }\r\n\r\n  // Sets the value of the input and does the appropriate conversions\r\n  // to respect settings, also updates the swatch\r\n  function updateInput(input, value, opacity) {\r\n    var rgb;\r\n\r\n    // Helpful references\r\n    var minicolors = input.parent();\r\n    var settings = input.data('minicolors-settings');\r\n    var swatch = minicolors.find('.minicolors-input-swatch');\r\n\r\n    if(settings.opacity) input.attr('data-opacity', opacity);\r\n\r\n    // Set color string\r\n    if(settings.format === 'rgb') {\r\n      // Returns RGB(A) string\r\n\r\n      // Checks for input format and does the conversion\r\n      if(isRgb(value)) {\r\n        rgb = parseRgb(value, true);\r\n      }\r\n      else {\r\n        rgb = hex2rgb(parseHex(value, true));\r\n      }\r\n\r\n      opacity = input.attr('data-opacity') === '' ? 1 : keepWithin(parseFloat(input.attr('data-opacity')).toFixed(2), 0, 1);\r\n      if(isNaN(opacity) || !settings.opacity) opacity = 1;\r\n\r\n      if(input.minicolors('rgbObject').a <= 1 && rgb && settings.opacity) {\r\n        // Set RGBA string if alpha\r\n        value = 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + parseFloat(opacity) + ')';\r\n      } else {\r\n        // Set RGB string (alpha = 1)\r\n        value = 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')';\r\n      }\r\n    } else {\r\n      // Returns hex color\r\n\r\n      // Checks for input format and does the conversion\r\n      if(isRgb(value)) {\r\n        value = rgbString2hex(value);\r\n      }\r\n\r\n      value = convertCase(value, settings.letterCase);\r\n    }\r\n\r\n    // Update value from picker\r\n    input.val(value);\r\n\r\n    // Set swatch color\r\n    swatch.find('span').css({\r\n      backgroundColor: value,\r\n      opacity: String(opacity)\r\n    });\r\n\r\n    // Handle change event\r\n    doChange(input, value, opacity);\r\n  }\r\n\r\n  // Sets the color picker values from the input\r\n  function updateFromInput(input, preserveInputValue) {\r\n    var hex, hsb, opacity, keywords, alpha, value, x, y, r, phi;\r\n\r\n    // Helpful references\r\n    var minicolors = input.parent();\r\n    var settings = input.data('minicolors-settings');\r\n    var swatch = minicolors.find('.minicolors-input-swatch');\r\n\r\n    // Panel objects\r\n    var grid = minicolors.find('.minicolors-grid');\r\n    var slider = minicolors.find('.minicolors-slider');\r\n    var opacitySlider = minicolors.find('.minicolors-opacity-slider');\r\n\r\n    // Picker objects\r\n    var gridPicker = grid.find('[class$=-picker]');\r\n    var sliderPicker = slider.find('[class$=-picker]');\r\n    var opacityPicker = opacitySlider.find('[class$=-picker]');\r\n\r\n    // Determine hex/HSB values\r\n    if(isRgb(input.val())) {\r\n      // If input value is a rgb(a) string, convert it to hex color and update opacity\r\n      hex = rgbString2hex(input.val());\r\n      alpha = keepWithin(parseFloat(getAlpha(input.val())).toFixed(2), 0, 1);\r\n      if(alpha) {\r\n        input.attr('data-opacity', alpha);\r\n      }\r\n    } else {\r\n      hex = convertCase(parseHex(input.val(), true), settings.letterCase);\r\n    }\r\n\r\n    if(!hex){\r\n      hex = convertCase(parseInput(settings.defaultValue, true), settings.letterCase);\r\n    }\r\n    hsb = hex2hsb(hex);\r\n\r\n    // Get array of lowercase keywords\r\n    keywords = !settings.keywords ? [] : $.map(settings.keywords.split(','), function(a) {\r\n      return a.toLowerCase().trim();\r\n    });\r\n\r\n    // Set color string\r\n    if(input.val() !== '' && $.inArray(input.val().toLowerCase(), keywords) > -1) {\r\n      value = convertCase(input.val());\r\n    } else {\r\n      value = isRgb(input.val()) ? parseRgb(input.val()) : hex;\r\n    }\r\n\r\n    // Update input value\r\n    if(!preserveInputValue) input.val(value);\r\n\r\n    // Determine opacity value\r\n    if(settings.opacity) {\r\n      // Get from data-opacity attribute and keep within 0-1 range\r\n      opacity = input.attr('data-opacity') === '' ? 1 : keepWithin(parseFloat(input.attr('data-opacity')).toFixed(2), 0, 1);\r\n      if(isNaN(opacity)) opacity = 1;\r\n      input.attr('data-opacity', opacity);\r\n      swatch.find('span').css('opacity', String(opacity));\r\n\r\n      // Set opacity picker position\r\n      y = keepWithin(opacitySlider.height() - (opacitySlider.height() * opacity), 0, opacitySlider.height());\r\n      opacityPicker.css('top', y + 'px');\r\n    }\r\n\r\n    // Set opacity to zero if input value is transparent\r\n    if(input.val().toLowerCase() === 'transparent') {\r\n      swatch.find('span').css('opacity', String(0));\r\n    }\r\n\r\n    // Update swatch\r\n    swatch.find('span').css('backgroundColor', hex);\r\n\r\n    // Determine picker locations\r\n    switch(settings.control) {\r\n      case 'wheel':\r\n        // Set grid position\r\n        r = keepWithin(Math.ceil(hsb.s * 0.75), 0, grid.height() / 2);\r\n        phi = hsb.h * Math.PI / 180;\r\n        x = keepWithin(75 - Math.cos(phi) * r, 0, grid.width());\r\n        y = keepWithin(75 - Math.sin(phi) * r, 0, grid.height());\r\n        gridPicker.css({\r\n          top: y + 'px',\r\n          left: x + 'px'\r\n        });\r\n\r\n        // Set slider position\r\n        y = 150 - (hsb.b / (100 / grid.height()));\r\n        if(hex === '') y = 0;\r\n        sliderPicker.css('top', y + 'px');\r\n        \r\n        // Update panel color\r\n        slider.css('backgroundColor', hsb2hex({ h: hsb.h, s: hsb.s, b: 100 }));\r\n        break;\r\n\r\n      case 'saturation':\r\n        // Set grid position\r\n        x = keepWithin((5 * hsb.h) / 12, 0, 150);\r\n        y = keepWithin(grid.height() - Math.ceil(hsb.b / (100 / grid.height())), 0, grid.height());\r\n        gridPicker.css({\r\n          top: y + 'px',\r\n          left: x + 'px'\r\n        });\r\n\r\n        // Set slider position\r\n        y = keepWithin(slider.height() - (hsb.s * (slider.height() / 100)), 0, slider.height());\r\n        sliderPicker.css('top', y + 'px');\r\n\r\n        // Update UI\r\n        slider.css('backgroundColor', hsb2hex({ h: hsb.h, s: 100, b: hsb.b }));\r\n        minicolors.find('.minicolors-grid-inner').css('opacity', hsb.s / 100);\r\n        break;\r\n\r\n      case 'brightness':\r\n        // Set grid position\r\n        x = keepWithin((5 * hsb.h) / 12, 0, 150);\r\n        y = keepWithin(grid.height() - Math.ceil(hsb.s / (100 / grid.height())), 0, grid.height());\r\n        gridPicker.css({\r\n          top: y + 'px',\r\n          left: x + 'px'\r\n        });\r\n\r\n        // Set slider position\r\n        y = keepWithin(slider.height() - (hsb.b * (slider.height() / 100)), 0, slider.height());\r\n        sliderPicker.css('top', y + 'px');\r\n\r\n        // Update UI\r\n        slider.css('backgroundColor', hsb2hex({ h: hsb.h, s: hsb.s, b: 100 }));\r\n        minicolors.find('.minicolors-grid-inner').css('opacity', 1 - (hsb.b / 100));\r\n        break;\r\n\r\n      default:\r\n        // Set grid position\r\n        x = keepWithin(Math.ceil(hsb.s / (100 / grid.width())), 0, grid.width());\r\n        y = keepWithin(grid.height() - Math.ceil(hsb.b / (100 / grid.height())), 0, grid.height());\r\n        gridPicker.css({\r\n          top: y + 'px',\r\n          left: x + 'px'\r\n        });\r\n\r\n        // Set slider position\r\n        y = keepWithin(slider.height() - (hsb.h / (360 / slider.height())), 0, slider.height());\r\n        sliderPicker.css('top', y + 'px');\r\n\r\n        // Update panel color\r\n        grid.css('backgroundColor', hsb2hex({ h: hsb.h, s: 100, b: 100 }));\r\n        break;\r\n    }\r\n\r\n    // Fire change event, but only if minicolors is fully initialized\r\n    if(input.data('minicolors-initialized')) {\r\n      doChange(input, value, opacity);\r\n    }\r\n  }\r\n\r\n  // Runs the change and changeDelay callbacks\r\n  function doChange(input, value, opacity) {\r\n    var settings = input.data('minicolors-settings');\r\n    var lastChange = input.data('minicolors-lastChange');\r\n    var obj, sel, i;\r\n\r\n    // Only run if it actually changed\r\n    if(!lastChange || lastChange.value !== value || lastChange.opacity !== opacity) {\r\n\r\n      // Remember last-changed value\r\n      input.data('minicolors-lastChange', {\r\n        value: value,\r\n        opacity: opacity\r\n      });\r\n\r\n      // Check and select applicable swatch\r\n      if(settings.swatches && settings.swatches.length !== 0) {\r\n        if(!isRgb(value)) {\r\n          obj = hex2rgb(value);\r\n        }\r\n        else {\r\n          obj = parseRgb(value, true);\r\n        }\r\n        sel = -1;\r\n        for(i = 0; i < settings.swatches.length; ++i) {\r\n          if(obj.r === settings.swatches[i].r && obj.g === settings.swatches[i].g && obj.b === settings.swatches[i].b && obj.a === settings.swatches[i].a) {\r\n            sel = i;\r\n            break;\r\n          }\r\n        }\r\n\r\n        input.parent().find('.minicolors-swatches .minicolors-swatch').removeClass('selected');\r\n        if(sel !== -1) {\r\n          input.parent().find('.minicolors-swatches .minicolors-swatch').eq(i).addClass('selected');\r\n        }\r\n      }\r\n\r\n      // Fire change event\r\n      if(settings.change) {\r\n        if(settings.changeDelay) {\r\n          // Call after a delay\r\n          clearTimeout(input.data('minicolors-changeTimeout'));\r\n          input.data('minicolors-changeTimeout', setTimeout(function() {\r\n            settings.change.call(input.get(0), value, opacity);\r\n          }, settings.changeDelay));\r\n        } else {\r\n          // Call immediately\r\n          settings.change.call(input.get(0), value, opacity);\r\n        }\r\n      }\r\n      input.trigger('change').trigger('input');\r\n    }\r\n  }\r\n\r\n  // Generates an RGB(A) object based on the input's value\r\n  function rgbObject(input) {\r\n    var rgb,\r\n      opacity = $(input).attr('data-opacity');\r\n    if( isRgb($(input).val()) ) {\r\n      rgb = parseRgb($(input).val(), true);\r\n    } else {\r\n      var hex = parseHex($(input).val(), true);\r\n      rgb = hex2rgb(hex);\r\n    }\r\n    if( !rgb ) return null;\r\n    if( opacity !== undefined ) $.extend(rgb, { a: parseFloat(opacity) });\r\n    return rgb;\r\n  }\r\n\r\n  // Generates an RGB(A) string based on the input's value\r\n  function rgbString(input, alpha) {\r\n    var rgb,\r\n      opacity = $(input).attr('data-opacity');\r\n    if( isRgb($(input).val()) ) {\r\n      rgb = parseRgb($(input).val(), true);\r\n    } else {\r\n      var hex = parseHex($(input).val(), true);\r\n      rgb = hex2rgb(hex);\r\n    }\r\n    if( !rgb ) return null;\r\n    if( opacity === undefined ) opacity = 1;\r\n    if( alpha ) {\r\n      return 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + parseFloat(opacity) + ')';\r\n    } else {\r\n      return 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')';\r\n    }\r\n  }\r\n\r\n  // Converts to the letter case specified in settings\r\n  function convertCase(string, letterCase) {\r\n    return letterCase === 'uppercase' ? string.toUpperCase() : string.toLowerCase();\r\n  }\r\n\r\n  // Parses a string and returns a valid hex string when possible\r\n  function parseHex(string, expand) {\r\n    string = string.replace(/^#/g, '');\r\n    if(!string.match(/^[A-F0-9]{3,6}/ig)) return '';\r\n    if(string.length !== 3 && string.length !== 6) return '';\r\n    if(string.length === 3 && expand) {\r\n      string = string[0] + string[0] + string[1] + string[1] + string[2] + string[2];\r\n    }\r\n    return '#' + string;\r\n  }\r\n\r\n  // Parses a string and returns a valid RGB(A) string when possible\r\n  function parseRgb(string, obj) {\r\n    var values = string.replace(/[^\\d,.]/g, '');\r\n    var rgba = values.split(',');\r\n\r\n    rgba[0] = keepWithin(parseInt(rgba[0], 10), 0, 255);\r\n    rgba[1] = keepWithin(parseInt(rgba[1], 10), 0, 255);\r\n    rgba[2] = keepWithin(parseInt(rgba[2], 10), 0, 255);\r\n    if(rgba[3] !== undefined) {\r\n      rgba[3] = keepWithin(parseFloat(rgba[3], 10), 0, 1);\r\n    }\r\n\r\n    // Return RGBA object\r\n    if( obj ) {\r\n      if (rgba[3] !== undefined) {\r\n        return {\r\n          r: rgba[0],\r\n          g: rgba[1],\r\n          b: rgba[2],\r\n          a: rgba[3]\r\n        };\r\n      } else {\r\n        return {\r\n          r: rgba[0],\r\n          g: rgba[1],\r\n          b: rgba[2]\r\n        };\r\n      }\r\n    }\r\n\r\n    // Return RGBA string\r\n    if(typeof(rgba[3]) !== 'undefined' && rgba[3] <= 1) {\r\n      return 'rgba(' + rgba[0] + ', ' + rgba[1] + ', ' + rgba[2] + ', ' + rgba[3] + ')';\r\n    } else {\r\n      return 'rgb(' + rgba[0] + ', ' + rgba[1] + ', ' + rgba[2] + ')';\r\n    }\r\n\r\n  }\r\n\r\n  // Parses a string and returns a valid color string when possible\r\n  function parseInput(string, expand) {\r\n    if(isRgb(string)) {\r\n      // Returns a valid rgb(a) string\r\n      return parseRgb(string);\r\n    } else {\r\n      return parseHex(string, expand);\r\n    }\r\n  }\r\n\r\n  // Keeps value within min and max\r\n  function keepWithin(value, min, max) {\r\n    if(value < min) value = min;\r\n    if(value > max) value = max;\r\n    return value;\r\n  }\r\n\r\n  // Checks if a string is a valid RGB(A) string\r\n  function isRgb(string) {\r\n    var rgb = string.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\r\n    return (rgb && rgb.length === 4) ? true : false;\r\n  }\r\n\r\n  // Function to get alpha from a RGB(A) string\r\n  function getAlpha(rgba) {\r\n    rgba = rgba.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+(\\.\\d{1,2})?|\\.\\d{1,2})[\\s+]?/i);\r\n    return (rgba && rgba.length === 6) ? rgba[4] : '1';\r\n  }\r\n\r\n  // Converts an HSB object to an RGB object\r\n  function hsb2rgb(hsb) {\r\n    var rgb = {};\r\n    var h = Math.round(hsb.h);\r\n    var s = Math.round(hsb.s * 255 / 100);\r\n    var v = Math.round(hsb.b * 255 / 100);\r\n    if(s === 0) {\r\n      rgb.r = rgb.g = rgb.b = v;\r\n    } else {\r\n      var t1 = v;\r\n      var t2 = (255 - s) * v / 255;\r\n      var t3 = (t1 - t2) * (h % 60) / 60;\r\n      if(h === 360) h = 0;\r\n      if(h < 60) { rgb.r = t1; rgb.b = t2; rgb.g = t2 + t3; }\r\n      else if(h < 120) {rgb.g = t1; rgb.b = t2; rgb.r = t1 - t3; }\r\n      else if(h < 180) {rgb.g = t1; rgb.r = t2; rgb.b = t2 + t3; }\r\n      else if(h < 240) {rgb.b = t1; rgb.r = t2; rgb.g = t1 - t3; }\r\n      else if(h < 300) {rgb.b = t1; rgb.g = t2; rgb.r = t2 + t3; }\r\n      else if(h < 360) {rgb.r = t1; rgb.g = t2; rgb.b = t1 - t3; }\r\n      else { rgb.r = 0; rgb.g = 0; rgb.b = 0; }\r\n    }\r\n    return {\r\n      r: Math.round(rgb.r),\r\n      g: Math.round(rgb.g),\r\n      b: Math.round(rgb.b)\r\n    };\r\n  }\r\n\r\n  // Converts an RGB string to a hex string\r\n  function rgbString2hex(rgb){\r\n    rgb = rgb.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\r\n    return (rgb && rgb.length === 4) ? '#' +\r\n      ('0' + parseInt(rgb[1],10).toString(16)).slice(-2) +\r\n      ('0' + parseInt(rgb[2],10).toString(16)).slice(-2) +\r\n      ('0' + parseInt(rgb[3],10).toString(16)).slice(-2) : '';\r\n  }\r\n\r\n  // Converts an RGB object to a hex string\r\n  function rgb2hex(rgb) {\r\n    var hex = [\r\n      rgb.r.toString(16),\r\n      rgb.g.toString(16),\r\n      rgb.b.toString(16)\r\n    ];\r\n    $.each(hex, function(nr, val) {\r\n      if(val.length === 1) hex[nr] = '0' + val;\r\n    });\r\n    return '#' + hex.join('');\r\n  }\r\n\r\n  // Converts an HSB object to a hex string\r\n  function hsb2hex(hsb) {\r\n    return rgb2hex(hsb2rgb(hsb));\r\n  }\r\n\r\n  // Converts a hex string to an HSB object\r\n  function hex2hsb(hex) {\r\n    var hsb = rgb2hsb(hex2rgb(hex));\r\n    if(hsb.s === 0) hsb.h = 360;\r\n    return hsb;\r\n  }\r\n\r\n  // Converts an RGB object to an HSB object\r\n  function rgb2hsb(rgb) {\r\n    var hsb = { h: 0, s: 0, b: 0 };\r\n    var min = Math.min(rgb.r, rgb.g, rgb.b);\r\n    var max = Math.max(rgb.r, rgb.g, rgb.b);\r\n    var delta = max - min;\r\n    hsb.b = max;\r\n    hsb.s = max !== 0 ? 255 * delta / max : 0;\r\n    if(hsb.s !== 0) {\r\n      if(rgb.r === max) {\r\n        hsb.h = (rgb.g - rgb.b) / delta;\r\n      } else if(rgb.g === max) {\r\n        hsb.h = 2 + (rgb.b - rgb.r) / delta;\r\n      } else {\r\n        hsb.h = 4 + (rgb.r - rgb.g) / delta;\r\n      }\r\n    } else {\r\n      hsb.h = -1;\r\n    }\r\n    hsb.h *= 60;\r\n    if(hsb.h < 0) {\r\n      hsb.h += 360;\r\n    }\r\n    hsb.s *= 100/255;\r\n    hsb.b *= 100/255;\r\n    return hsb;\r\n  }\r\n\r\n  // Converts a hex string to an RGB object\r\n  function hex2rgb(hex) {\r\n    hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);\r\n    return {\r\n      r: hex >> 16,\r\n      g: (hex & 0x00FF00) >> 8,\r\n      b: (hex & 0x0000FF)\r\n    };\r\n  }\r\n\r\n  // Handle events\r\n  $([document])\r\n    // Hide on clicks outside of the control\r\n    .on('mousedown.minicolors touchstart.minicolors', function(event) {\r\n      if(!$(event.target).parents().add(event.target).hasClass('minicolors')) {\r\n        hide();\r\n      }\r\n    })\r\n    // Start moving\r\n    .on('mousedown.minicolors touchstart.minicolors', '.minicolors-grid, .minicolors-slider, .minicolors-opacity-slider', function(event) {\r\n      var target = $(this);\r\n      event.preventDefault();\r\n      $(event.delegateTarget).data('minicolors-target', target);\r\n      move(target, event, true);\r\n    })\r\n    // Move pickers\r\n    .on('mousemove.minicolors touchmove.minicolors', function(event) {\r\n      var target = $(event.delegateTarget).data('minicolors-target');\r\n      if(target) move(target, event);\r\n    })\r\n    // Stop moving\r\n    .on('mouseup.minicolors touchend.minicolors', function() {\r\n      $(this).removeData('minicolors-target');\r\n    })\r\n    // Selected a swatch\r\n    .on('click.minicolors', '.minicolors-swatches li', function(event) {\r\n      event.preventDefault();\r\n      var target = $(this), input = target.parents('.minicolors').find('.minicolors-input'), color = target.data('swatch-color');\r\n      updateInput(input, color, getAlpha(color));\r\n      updateFromInput(input);\r\n    })\r\n    // Show panel when swatch is clicked\r\n    .on('mousedown.minicolors touchstart.minicolors', '.minicolors-input-swatch', function(event) {\r\n      var input = $(this).parent().find('.minicolors-input');\r\n      event.preventDefault();\r\n      show(input);\r\n    })\r\n    // Show on focus\r\n    .on('focus.minicolors', '.minicolors-input', function() {\r\n      var input = $(this);\r\n      if(!input.data('minicolors-initialized')) return;\r\n      show(input);\r\n    })\r\n    // Update value on blur\r\n    .on('blur.minicolors', '.minicolors-input', function() {\r\n      var input = $(this);\r\n      var settings = input.data('minicolors-settings');\r\n      var keywords;\r\n      var hex;\r\n      var rgba;\r\n      var swatchOpacity;\r\n      var value;\r\n\r\n      if(!input.data('minicolors-initialized')) return;\r\n\r\n      // Get array of lowercase keywords\r\n      keywords = !settings.keywords ? [] : $.map(settings.keywords.split(','), function(a) {\r\n        return a.toLowerCase().trim();\r\n      });\r\n\r\n      // Set color string\r\n      if(input.val() !== '' && $.inArray(input.val().toLowerCase(), keywords) > -1) {\r\n        value = input.val();\r\n      } else {\r\n        // Get RGBA values for easy conversion\r\n        if(isRgb(input.val())) {\r\n          rgba = parseRgb(input.val(), true);\r\n        } else {\r\n          hex = parseHex(input.val(), true);\r\n          rgba = hex ? hex2rgb(hex) : null;\r\n        }\r\n\r\n        // Convert to format\r\n        if(rgba === null) {\r\n          value = settings.defaultValue;\r\n        } else if(settings.format === 'rgb') {\r\n          value = settings.opacity ?\r\n            parseRgb('rgba(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ',' + input.attr('data-opacity') + ')') :\r\n            parseRgb('rgb(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ')');\r\n        } else {\r\n          value = rgb2hex(rgba);\r\n        }\r\n      }\r\n\r\n      // Update swatch opacity\r\n      swatchOpacity = settings.opacity ? input.attr('data-opacity') : 1;\r\n      if(value.toLowerCase() === 'transparent') swatchOpacity = 0;\r\n      input\r\n        .closest('.minicolors')\r\n        .find('.minicolors-input-swatch > span')\r\n        .css('opacity', String(swatchOpacity));\r\n\r\n      // Set input value\r\n      input.val(value);\r\n\r\n      // Is it blank?\r\n      if(input.val() === '') input.val(parseInput(settings.defaultValue, true));\r\n\r\n      // Adjust case\r\n      input.val(convertCase(input.val(), settings.letterCase));\r\n\r\n    })\r\n    // Handle keypresses\r\n    .on('keydown.minicolors', '.minicolors-input', function(event) {\r\n      var input = $(this);\r\n      if(!input.data('minicolors-initialized')) return;\r\n      switch(event.which) {\r\n        case 9: // tab\r\n          hide();\r\n          break;\r\n        case 13: // enter\r\n        case 27: // esc\r\n          hide();\r\n          input.blur();\r\n          break;\r\n      }\r\n    })\r\n    // Update on keyup\r\n    .on('keyup.minicolors', '.minicolors-input', function() {\r\n      var input = $(this);\r\n      if(!input.data('minicolors-initialized')) return;\r\n      updateFromInput(input, true);\r\n    })\r\n    // Update on paste\r\n    .on('paste.minicolors', '.minicolors-input', function() {\r\n      var input = $(this);\r\n      if(!input.data('minicolors-initialized')) return;\r\n      setTimeout(function() {\r\n        updateFromInput(input, true);\r\n      }, 1);\r\n    });\r\n}));\r\n\n","define('drops/colorPicker/colorPicker',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'jquery.miniColors/jquery.miniColors',\r\n    'lq/required',\r\n    'lq/style'\r\n], function ($, Drop, miniColors, Required, Style) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            behaviour: 'popup',\r\n            format: 'hex',\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded'\r\n            }\r\n        }\r\n    };\r\n\r\n    function ColorPicker(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.$colorPicker = this.createElement()\r\n            .appendTo(this.$element)\r\n            .minicolors('create', this.createData());\r\n        this.value = null;\r\n\r\n        Style.renderStyles(this);\r\n    }\r\n\r\n    Drop.extend(ColorPicker, Drop);\r\n\r\n    ColorPicker.typeName = 'ColorPicker';\r\n\r\n    ColorPicker.prototype.createElement = function () {\r\n        return this.data.behaviour === 'popup'\r\n            ? $('<input type=\"hidden\" />')\r\n            : $('<input type=\"text\" />');\r\n    };\r\n\r\n    ColorPicker.prototype.createData = function () {\r\n        var data = {\r\n            change: this.colorChanged.bind(this)\r\n        };\r\n\r\n        if (this.data.behaviour === 'inline')\r\n            data.inline = true;\r\n\r\n        return data;\r\n    };\r\n\r\n    ColorPicker.prototype.colorChanged = function (value) {\r\n        this.value = this.data.format === 'hex'\r\n            ? value\r\n            : this.$colorPicker.minicolors('rgbString');\r\n        this.triggerEventIfEnabled('changed', this.value);\r\n    };\r\n\r\n    ColorPicker.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.piping.required.apply(this);\r\n        Required.prototype.addRemoveRequiredIndicator(this);\r\n        this.applyPosition();\r\n    };\r\n\r\n    ColorPicker.prototype.postRender = function () {\r\n        this.updatePosition();\r\n        $('.licquid-action-wrapper').on('scroll',\r\n            _.debounce(this.updatePosition.bind(this), 75)\r\n        );\r\n    };\r\n\r\n    ColorPicker.prototype.clearValue = function () {\r\n        this.value = '';\r\n        this.$colorPicker\r\n            .minicolors('value', { color: null, opacity: 1 });\r\n    };\r\n\r\n    ColorPicker.prototype.setValue = function (update) {\r\n        this.value = update.value;\r\n        this.$colorPicker\r\n            .minicolors('value', { color: update.value, opacity: 1 });\r\n    };\r\n\r\n    ColorPicker.prototype.getValue = function () {\r\n        return this.value;\r\n    };\r\n\r\n    ColorPicker.prototype.updatePosition = function () {\r\n        if (!this.$colorPicker || this.data.behaviour === 'inline') return;\r\n\r\n        const THRESHOLD = 175; // rough overestimate of minicolors popup size\r\n        var newPosition = \"\";\r\n\r\n        var parentPos = this.$colorPicker.closest('.drop-element').position();\r\n        var offset = this.$colorPicker.closest('.drop-element').offset();\r\n\r\n        var offsetTop = offset.top - $(window).scrollTop();\r\n        var offsetLeft = offset.left - $(window).scrollLeft();\r\n        \r\n        if (parentPos.top + THRESHOLD > this.rootDrop.$element.height()\r\n            || offsetTop + THRESHOLD > $(window).height())\r\n            newPosition = \"top\";\r\n        else newPosition = \"bottom\";\r\n\r\n        if (parentPos.left + THRESHOLD > this.rootDrop.$element.width()\r\n            || offsetLeft + THRESHOLD > $(window).width())\r\n            newPosition += \" right\";\r\n        else newPosition += \" left\";\r\n\r\n        var currentPosition = this.$colorPicker.data('minicolors-settings').position;\r\n        if (currentPosition != newPosition) {\r\n            this.$colorPicker.minicolors('settings', { position: newPosition });\r\n        }\r\n    };\r\n\r\n    return ColorPicker;\r\n});\n","define('drops/custom/custom',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style'\r\n], function ($, Drop, Style) {\r\n\t'use strict';\r\n\r\n\tvar defaults = {\r\n        data: {\r\n\t        style: 'border:1px solid black;'\r\n        }\r\n\t};\r\n\r\n    function Custom(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.$element\r\n\t        .addClass('boxToBorderSize')\r\n\t        .css({\r\n\t            whiteSpace: 'pre-wrap'\r\n\t        });\r\n\r\n        this.$customStyledElement = $('<div></div>')\r\n\t        .appendTo(this.$element);\r\n\r\n        Style.renderStyles(this);\r\n    };\r\n    \r\n    Drop.extend(Custom, Drop);\r\n\r\n    Custom.typeName = 'Custom';\r\n\r\n    Custom.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.renderStyle();\r\n        this.renderDropShadow();\r\n        this.applyPosition();\r\n\t};\r\n\r\n    Custom.prototype.renderStyle = function () {\r\n        this.$customStyledElement.attr('style', 'width:100%;height:100%;' + this.data.style);\r\n    };\r\n\r\n    Custom.prototype.renderDropShadow = function () {\r\n        if (this.data.hasDrop) {\r\n            this.$element\r\n                .css({\r\n                    boxShadow: this.data.dropSize + 'px ' + this.data.dropSize + 'px ' + this.data.dropBlur + 'px #888888'\r\n                });\r\n        }\r\n        else {\r\n            this.$element.css('boxShadow', 'none');\r\n        }\r\n    };\r\n\r\n\treturn Custom;\r\n});\n","define('lq/imageSize',[],function() {\r\n    'use strict';\r\n\r\n    var hasHighPixelRatio = function () {\r\n        // e.g. high-resolution and retina displays\r\n        return window.devicePixelRatio >= 2;\r\n    };\r\n\r\n    var forElement = function(htmlElementSize) {\r\n        if (hasHighPixelRatio()) {\r\n            return {\r\n                x: htmlElementSize.x * 2,\r\n                y: htmlElementSize.y * 2\r\n            };\r\n        }\r\n\r\n        return {\r\n            x: htmlElementSize.x,\r\n            y: htmlElementSize.y\r\n        };\r\n    };\r\n\r\n    return {\r\n\r\n        hasHighPixelRatio: hasHighPixelRatio,\r\n\r\n        forElement: forElement\r\n\r\n    };\r\n\r\n});\n","define('lq/dynamicContentImage',[\r\n    'lq/imageSize',\r\n    'lq'\r\n], function(imageSize, lq) {\r\n\r\n    var imageTypes = [\r\n        'png',\r\n        'jpg',\r\n        'jpeg',\r\n        'gif',\r\n        'tiff',\r\n        'bmp',\r\n        'pdf'\r\n    ];\r\n\r\n    var isImageExtension = function(extension) {\r\n        return imageTypes.indexOf(extension) !== -1;\r\n    };\r\n\r\n    var isSvg = function(extension) {\r\n        return extension === 'svg';\r\n    };\r\n\r\n    var extractExtension = function(imageName) {\r\n        return imageName.substr(imageName.lastIndexOf('.') + 1, imageName.length - imageName.lastIndexOf('.')).toLowerCase();\r\n    };\r\n\r\n    var isFullUrl = function (imageName) {\r\n        return imageName.indexOf('http://') === 0 ||\r\n            imageName.indexOf('https://') === 0 ||\r\n            imageName.indexOf('//') === 0;\r\n    };\r\n\r\n    var getPath = function (options) {\r\n        if (isFullUrl(options.imageName))\r\n            return options.imageName;\r\n\r\n        var imageName = options.imageName;\r\n        var useThumbnail = options.useThumbnail;\r\n        var resizeOption = options.resizeOption;\r\n        var thumbnailFileType = options.thumbnailFileType;\r\n        var size = options.size;\r\n        var extension = extractExtension(imageName);\r\n\r\n        if (isSvg(extension))\r\n            return lq.getTenantUrl('DynamicContent/File/' + imageName);\r\n\r\n        if (!isImageExtension(extension) || (extension === 'pdf' && !useThumbnail))\r\n            return lq.getTenantUrl('DynamicContent/Icon/' + imageName);\r\n\r\n        if (useThumbnail) {\r\n            var requiredSize = imageSize.forElement(size);\r\n\r\n            return lq.getTenantUrl('DynamicContent/Thumbnail/' + imageName\r\n                + '?width=' + requiredSize.x\r\n                + '&height=' + requiredSize.y\r\n                + \"&filetype=\" + thumbnailFileType\r\n                + \"&isMaxSize=\" + (resizeOption === 'fillKeepRatio' ? 'false' : 'true'));\r\n        }\r\n\r\n        return lq.getTenantUrl('DynamicContent/File/' + imageName);\r\n    };\r\n\r\n    return {\r\n        getPath: getPath\r\n    };\r\n});\n","define('drops/dataGrid/dataGrid',[\r\n    'jquery',\r\n    'when',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'underscore',\r\n    'lq/util',\r\n    'lq',\r\n    'lq/eventSource',\r\n    'lq/windowSize',\r\n    'lq/dynamicContentImage',\r\n    'lq/tooltip',\r\n    'lq/html'\r\n], function($, when, Drop, Style, _, util, lq, EventSource, windowSize, dynamicContentImage, Tooltip, html) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            showNavigationAtTop: false,\r\n            showNavigationAtBottom: true,\r\n            pageSize: 100,\r\n            page: 0,\r\n            headerHeight: 25,\r\n            rowHeight: 25,\r\n            headerEnabled: true,\r\n            selection: 'single',\r\n            defaultSortOutput: null,\r\n            defaultSortDirection: null,\r\n            infiniteScroll: true,\r\n        }\r\n    };\r\n\r\n    var setBackgroundImage = function ($el, physicalFile) {\r\n        var background = ''\r\n        if (physicalFile && physicalFile !== '') {\r\n            var url = lq.getTenantUploads(physicalFile);\r\n            background = url\r\n                ? 'url(' + url + ')'\r\n                : '';\r\n        }\r\n        $el.css('background-image', background);\r\n    };\r\n\r\n    var horizontalAlignmentToFlex = {\r\n        inherit: 'flex-start',\r\n        left: 'flex-start',\r\n        center: 'center',\r\n        right: 'flex-end'\r\n    };\r\n\r\n    function DataGrid(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n        EventSource.call(this, [\r\n            'PageOpened'\r\n        ]);\r\n\r\n        this.data.columns = _.map(this.data.columns, function (column) {\r\n            return util.convertListOfKeyValuesToObject(column);\r\n        });\r\n\r\n        this.results = null;\r\n        var self = this;\r\n\r\n        this.$tableHeaders = null;\r\n        this.$tableRows = null;\r\n        this.$element.css({\r\n            'visibility': 'inherit',\r\n            overflow: 'hidden'\r\n        });\r\n\r\n        this.$wrapper = $('<div/>')\r\n            .css({\r\n                position: 'absolute',\r\n                top: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                left: 0,\r\n                whiteSpace: 'pre-wrap'\r\n            })\r\n            .addClass('data-grid-wrapper')\r\n            .appendTo(this.$element);\r\n\r\n        this.$headerWrapper = $('<div/>')\r\n            .addClass('header-wrapper header')\r\n            .appendTo(this.$wrapper);\r\n        this.updateHeaderStyle(this.$headerWrapper, 'header', 'hoverHeader');\r\n\r\n        this.$contentWrapper = $('<div/>')\r\n            .addClass('content-wrapper')\r\n            .appendTo(this.$wrapper);\r\n\r\n        if (this.data.infiniteScroll) {\r\n            this.subscribeEventHandler(this.$contentWrapper, 'scroll', this.loadNextPageIfNeeded.bind(this));\r\n        }\r\n\r\n        this.$footerWrapper = $('<div/>')\r\n            .addClass('footer-wrapper')\r\n            .appendTo(this.$wrapper);\r\n\r\n        this.page = 0;\r\n        this.currentScrollPosition = 0;\r\n        this.loadedAllData = false;\r\n        this.loading = false;\r\n        this.loadedPages = 1;\r\n        this.previousData = null;\r\n        this.conditionalStartStates = [];\r\n        this.footerData = null;\r\n\r\n        this.sortParameters = [];\r\n        this.clicksCounter = 0;\r\n\r\n        if (this.data.defaultSortOutput) {\r\n            this.sortParameters.push({\r\n                output: this.data.defaultSortOutput,\r\n                descending: this.data.defaultSortDirection === 'Descending'\r\n            });\r\n        }\r\n\r\n        this.events(windowSize,\r\n            {\r\n                'Changed': function() {\r\n                    if (self.previousData)\r\n                        self.update(self.previousData);\r\n                }\r\n            });\r\n\r\n        self.updateStyle(this.$element, '');\r\n\r\n        this.update([{ 'initializing': true }]);\r\n    };\r\n\r\n    Drop.extend(DataGrid, Drop);\r\n\r\n    DataGrid.typeName = 'DataGrid';\r\n\r\n    DataGrid.prototype.preRender = function () {\r\n        var self = this;\r\n        this.piping.visibility.apply(this);\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.dataSource,\r\n            function (data) {\r\n                if (!self.data.keepScrollPositionOnQueryReload) {\r\n                    self.loadedPages = 1;\r\n                    self.currentScrollPosition = 0;\r\n                } else {\r\n                    self.storeScollPosition.apply(self);\r\n                }\r\n                self.loadedAllData = data.totalResults < self.getPageSize();\r\n                self.previousData = data;\r\n                self.selectedRows = [];\r\n                self.update(data)\r\n                    .done(function() {\r\n                        self.triggerPageOpened(data.totalResults, self.page, self.getPageSize());\r\n                        self.loadNextPageIfNeeded();\r\n                    });\r\n            },\r\n            this.decorateDataSourceDataForFirstPage.bind(this));\r\n\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.footerDataSource,\r\n            function (data) {\r\n                self.$footerWrapper\r\n                    .empty()\r\n                    .append(self.getFooterRow(data));\r\n            });\r\n\r\n        this.setUpHeaderTooltips();\r\n\r\n        this.formatters = _.map(this.data.columns, function (column) {\r\n            return self.piping.formatting.createFormatter(column.formatting);\r\n        });\r\n\r\n        this.applyPosition();\r\n    };\r\n\r\n    DataGrid.prototype.setUpHeaderTooltips = function () {\r\n        // In case the tooltip comes from a query we need to subscribe to the event listener in time,\r\n        // because if the query is on pageload it will be too late in the place where we put together the header\r\n        var self = this;\r\n        this.headersWithTooltips = [];\r\n        _.each(this.data.columns, function (column) {\r\n            var $h = $('<span>')\r\n                .html(html.sanitize((column.headerVisible ? column.headerText : '')));\r\n\r\n            self.headersWithTooltips.push($h);\r\n            var headerTooltip = new Tooltip(self, column.headerTooltip, $h)\r\n            headerTooltip.update();\r\n        });\r\n    };\r\n\r\n    DataGrid.prototype.decorateDataSourceDataForFirstPage = function (data) {\r\n        data.doNotExecuteCountQuery = this.data.infiniteScroll;\r\n        data.page = 0;\r\n        data.pageSize = this.data.keepScrollPositionOnQueryReload\r\n            ? this.loadedPages * this.getPageSize()\r\n            : this.getPageSize();\r\n        data.sortParameters = this.sortParameters;\r\n    };\r\n\r\n    DataGrid.prototype.loadNextPageIfNeeded = function () {\r\n        var self = this;\r\n        if (self.$contentWrapper.scrollTop() + self.$contentWrapper.height() >= self.$contentWrapper[0].scrollHeight - 30) {\r\n            if (!self.loading && !self.loadedAllData) {\r\n                self.storeScollPosition();\r\n                self.loadNextPage();\r\n            }\r\n        }\r\n    }\r\n\r\n    DataGrid.prototype.loadNextPage = function () {\r\n        this.loadDataForPage(this.loadedPages, false);\r\n    };\r\n\r\n    DataGrid.prototype.updateColumnWidths = function () {\r\n        this.calculateColumnWidths();\r\n\r\n        if (this.data.headerEnabled) {\r\n            var self = this;\r\n            _.each(this.data.columns, function (column, index) {\r\n                self.$tableHeaders.children().eq(0).children().eq(index)\r\n                    .css('width', column.columnSizeType === 'Pixels' ? column.columnSizeInPixels + 'px' : column.columnSizeInPercentage + '%');\r\n            });\r\n        }\r\n    };\r\n\r\n    DataGrid.prototype.update = function (data, forceHeaderRender) {\r\n        if (data)\r\n            this.results = data.results;\r\n\r\n        var self = this;\r\n        return when.promise(function(res) {\r\n            self.prepareGrid();\r\n            setTimeout(res);\r\n        })\r\n        .then(function(){\r\n            return when.promise(function(res) {\r\n                var columns = self.data.columns;\r\n                self.renderHeadersAndRows(data, forceHeaderRender, columns);\r\n                setTimeout(res);\r\n            });\r\n        })\r\n        .then(function(){\r\n            self.postDataGridRender(self.currentScrollPosition);\r\n        });\r\n    };\r\n\r\n    DataGrid.prototype.prepareGrid = function(){\r\n        if (this.data.headerEnabled) {\r\n            if (!this.$tableHeaders) {\r\n                this.$headerWrapper\r\n                    .addClass('header-enabled');\r\n\r\n                this.$tableHeaders = $('<table cellspacing=\"0\" cellpadding=\"0\" />')\r\n                    .css({\r\n                        height: this.data.headerHeight + 'px'\r\n                    })\r\n                    .addClass('table-header')\r\n                    .appendTo(this.$headerWrapper);\r\n            }\r\n        } else {\r\n            this.$headerWrapper\r\n                .removeClass('header-enabled');\r\n        }\r\n\r\n        if (this.data.footerEnabled) {\r\n            this.$footerWrapper\r\n                .addClass('footer-enabled');\r\n        } else {\r\n            this.$footerWrapper\r\n                .removeClass('footer-enabled');\r\n        }\r\n    };\r\n\r\n    DataGrid.prototype.renderHeadersAndRows = function (data, forceHeaderRender, columns) {\r\n        this.$contentWrapper\r\n            .empty()\r\n            .css('visibility', 'hidden');\r\n\r\n        this.$tableRows = $('<table cellspacing=\"0\" cellpadding=\"0\" />')\r\n            .addClass('table-body')\r\n            .append($('<tbody/>').addClass('table-body-row'))\r\n            .appendTo(this.$contentWrapper);\r\n\r\n        this.updateColumnWidths();\r\n        this.updateItems(data, false);\r\n\r\n        if (forceHeaderRender && this.$headerRow) {\r\n            this.$headerRow.remove();\r\n            delete this.$headerRow;\r\n            this.setUpHeaderTooltips();\r\n        }\r\n        if (this.data.headerEnabled && !this.$headerRow) {\r\n            this.$headerRow = $('<thead/>')\r\n                .css({display: 'flex'})\r\n                .addClass('table-header-row')\r\n                .appendTo(this.$tableHeaders);\r\n\r\n            var self = this;\r\n            _.each(columns, function (column, columnIndex) {\r\n                var $header = self.getHTMLHeaderElementByType(column, columnIndex)\r\n                    .css({display: 'flex'});\r\n                self.$headerRow.append($header);\r\n\r\n                if (column.type !== 'Static Image' &&\r\n                    column.type !== 'Dynamic Image' &&\r\n                    column.type !== 'Static Text' &&\r\n                    !column.disabledColumnSorting) {\r\n                    $header\r\n                        .on('click', self.sortByColumn.bind(self, column))\r\n                        .attr('class', 'data-grid-clickable');\r\n                }\r\n\r\n                var padL = column.headerIconPadding && column.headerIconPadding.left ? column.headerIconPadding.left : 0; // fallback 0\r\n                var padT = column.headerIconPadding && column.headerIconPadding.top ? column.headerIconPadding.top : 0; // fallback 0\r\n                var padR = column.headerIconPadding && column.headerIconPadding.right ? column.headerIconPadding.right : 0; // fallback 0\r\n                var padB = column.headerIconPadding && column.headerIconPadding.bottom ? column.headerIconPadding.bottom : 0; // fallback 0\r\n\r\n                if (!!column.isHeaderIconEnabled && column.headerIconFile) {\r\n                    $header.prepend(\r\n                        $('<div>')\r\n                            .addClass('icon-wrapper')\r\n                            .css({\r\n                                width: 'fit-content',\r\n                                height: '100%',\r\n                                display: 'flex',\r\n                                flexDirection: 'column',\r\n                                justifyContent: 'center',\r\n                                paddingLeft: padL + 'px',\r\n                                paddingTop: padT + 'px',\r\n                                paddingRight: padR + 'px',\r\n                                paddingBottom: padB + 'px'\r\n                            })\r\n                            .append(\r\n                                $('<div>')\r\n                                    .addClass('icon')\r\n                                    .css({\r\n                                        backgroundImage: 'url(' + lq.getTenantUploads(column.headerIconFile) + ')',\r\n                                        backgroundSize: 'contain',\r\n                                        width: (column.headerIconWidth ?? 24) + 'px', // fallback 24\r\n                                        height: (column.headerIconHeight ?? 24) + 'px', // fallback 24\r\n                                        backgroundRepeat: 'no-repeat',\r\n                                    })\r\n                            )\r\n                        )\r\n                        .css({display: 'flex'});\r\n                }\r\n            });\r\n        }\r\n    };\r\n\r\n    DataGrid.prototype.postDataGridRender = function (restoreScrollPosition) {\r\n        if (this.data.headerEnabled)\r\n            this.$tableHeaders.css('width', this.$tableRows.outerWidth() + 'px');\r\n\r\n        if (this.data.footerEnabled)\r\n            this.$footerWrapper.children().css('width', this.$tableRows.outerWidth() + 'px');\r\n\r\n        this.updateStyle(this.$footerWrapper, 'footer', 'hoverFooter');\r\n\r\n        this.updateSelectedRow(this.selectedRowValue);\r\n        this.restoreScrollPosition(restoreScrollPosition);\r\n\r\n        this.$contentWrapper\r\n            .css('visibility', 'inherit');\r\n    };\r\n\r\n    DataGrid.prototype.updateItems = function (data, replace) {\r\n        if (!data || !data.results) return;\r\n\r\n        var $tbody = this.$tableRows.find('tbody');\r\n\r\n        if (replace) {\r\n            $tbody.find('tr:gt(0)').remove();\r\n            $tbody.scrollTop(0);\r\n\r\n            this.results = data.results;\r\n        } else {\r\n            this.results = _.union(this.results, data.results);\r\n        }\r\n\r\n        $tbody.\r\n            append(_.map(data.results, this.createRow.bind(this,\r\n                this.results,\r\n                this.results.length - data.results.length,\r\n                data.outputs)));\r\n\r\n        $tbody.children().eq(0)\r\n            .css('padding', '0');\r\n    };\r\n\r\n    DataGrid.prototype.createRow = function(allRows, offsetIndexCurrentRows, outputs, currentRow, currentRowIndex) {\r\n        var $currentRow = $('<tr/>');\r\n\r\n        var actualIndex = offsetIndexCurrentRows + currentRowIndex;\r\n\r\n        var self = this;\r\n        $currentRow\r\n            .append(_.map(this.data.columns, function (column) {\r\n                var $cell = self.getHTMLRowElementByType(outputs, currentRow, column, $currentRow, column.textAlignment);\r\n\r\n                if (column.dataGrouping && actualIndex > 0) {\r\n                    var output = column.type === 'Dynamic Text'\r\n                        ? column.output\r\n                        : column.physicalFile;\r\n                    var previousRowCellText = allRows[actualIndex - 1][output];\r\n                    if (previousRowCellText === currentRow[output])\r\n                        $cell.addClass('hidden-content');\r\n                }\r\n\r\n                return $cell;\r\n            }));\r\n\r\n        if (this.data.backgroundColorArg && currentRow[this.data.backgroundColorArg])\r\n            $currentRow.css('background-color', currentRow[this.data.backgroundColorArg]);\r\n\r\n        if (this.isEventEnabled('dblClicked') && this.isEventEnabled('clicked')) {\r\n            $currentRow.on('click', function(e) {\r\n                self.clicksCounter++; //count clicks\r\n\r\n                if (self.clicksCounter === 1) {\r\n                    self.dblClickTimer = setTimeout(function() {\r\n                        self.clicksCounter = 0; //after action performed, reset counter\r\n                        self.handleSingleClick(currentRow);\r\n                    },\r\n                    250);\r\n                } else {\r\n                    clearTimeout(self.dblClickTimer); //prevent single-click action\r\n                    self.clicksCounter = 0; //after action performed, reset counter\r\n                    self.handleDoubleClick(currentRow);\r\n                }\r\n            })\r\n            .on('dblclick', function(e) {\r\n                e.preventDefault(); //cancel system double-click event\r\n            });\r\n        } else if (self.isEventEnabled('dblClicked')) {\r\n            $currentRow.on('dblclick', function () {\r\n                self.handleDoubleClick(currentRow);\r\n            });\r\n        } else if (self.isEventEnabled('clicked')) {\r\n            $currentRow.on('click', function() {\r\n                self.handleSingleClick(currentRow);\r\n            });\r\n        }\r\n\r\n        var rowCssStyle = actualIndex % 2 === 0 ? 'odd' : 'even';\r\n        this.updateStyle($currentRow, rowCssStyle);\r\n\r\n        $currentRow.on('selected', this.showRowAsSelected.bind(this, $currentRow));\r\n        $currentRow.on('deselected', this.showRowAsDeselected.bind(this, $currentRow, currentRow, rowCssStyle));\r\n\r\n        if (this.isSelected(currentRow[this.data.eventArg]))\r\n            $currentRow.trigger('selected');\r\n\r\n        return $currentRow;\r\n    };\r\n\r\n    DataGrid.prototype.handleSingleClick = function (row) {\r\n        this.updateSelectedRow(row[this.data.eventArg]);\r\n        this.triggerEventIfEnabled('clicked', row[this.data.eventArg]);\r\n    };\r\n\r\n    DataGrid.prototype.handleDoubleClick = function (row) {\r\n        this.updateSelectedRow(row[this.data.eventArg]);\r\n        this.triggerEventIfEnabled('dblClicked', row[this.data.eventArg]);\r\n    };\r\n\r\n    DataGrid.prototype.setValue = function (update) {\r\n        this.resetRowSelection();\r\n        this.updateSelectedRow(update.value);\r\n    };\r\n\r\n    DataGrid.prototype.getValue = function () {\r\n        return this.supportsManyToManyData() ? this.selectedRows : _.first(this.selectedRows);\r\n    };\r\n\r\n    DataGrid.prototype.supportsManyToManyData = function () {\r\n        return this.data.selection === 'multiple';\r\n    };\r\n\r\n    DataGrid.prototype.clearValue = function() {\r\n        this.resetRowSelection();\r\n    };\r\n\r\n    DataGrid.prototype.resetRowSelection = function () {\r\n        var $tbody = this.$tableRows.find('tbody');\r\n\r\n        $tbody.children('.selectedRow').each(function(index, tr) {\r\n            $(tr).trigger('deselected');\r\n        });\r\n\r\n        this.selectedRows = [];\r\n    };\r\n\r\n    DataGrid.prototype.getIndexOfRowWithId = function(id) {\r\n        for (var i = 0; i < this.results.length; i++) {\r\n            var result = this.results[i];\r\n\r\n            if (result !== null && result[this.data.eventArg] === id)\r\n                return i;\r\n        }\r\n\r\n        return undefined;\r\n    };\r\n\r\n    DataGrid.prototype.isSelected = function(rowId) {\r\n        return !!_.find(this.selectedRows, function(selectedRowId) {\r\n            return selectedRowId === rowId;\r\n        });\r\n    };\r\n\r\n    DataGrid.prototype.updateSelectedRow = function (rowValues) {\r\n        if (rowValues == null) return;\r\n\r\n        var $tbody = this.$tableRows.find('tbody');\r\n\r\n        if (!$.isArray(rowValues))\r\n            rowValues = [rowValues];\r\n\r\n        if (this.data.selection === 'single')\r\n            this.resetRowSelection();\r\n\r\n        var self = this;\r\n        _.each(rowValues, function(rowId) {\r\n            var rowIndex = self.getIndexOfRowWithId(rowId);\r\n\r\n            if (rowIndex !== undefined) {\r\n                var $row = $tbody.children().eq(rowIndex);\r\n\r\n                if (self.isSelected(rowId)) {\r\n                    self.selectedRows = _.reject(self.selectedRows, function(selectedRowId) {\r\n                            return selectedRowId === rowId;\r\n                        });\r\n                    $row.trigger('deselected');\r\n                } else {\r\n                    self.selectedRows.push(rowId);\r\n                    $row.trigger('selected');\r\n                }\r\n            } else {\r\n                // row not visible at the moment\r\n                self.selectedRows.push(rowId);\r\n            }\r\n        });\r\n    };\r\n\r\n    DataGrid.prototype.showRowAsDeselected = function($row, rowData, rowCssStyle) {\r\n        this.updateStyle($row, rowCssStyle);\r\n\r\n        $row.removeClass('selectedRow');\r\n\r\n        _.each(this.data.columns, function (column, columnIndex) {\r\n            if (column.type === 'Static Image') {\r\n                var imageUrl = column.imageVisibility === 'Always' ? column.physicalFile : '';\r\n                setBackgroundImage($row.children().eq(columnIndex).children().eq(0).children().eq(0), imageUrl);\r\n            }\r\n        });\r\n\r\n        _.each(this.data.columns, function (column, columnIndex) {\r\n            //when row is deselected, make custom backgrounds visible so selected state can be seen\r\n            if (column.backgroundColor)\r\n                $row.children().eq(columnIndex).css('background-color', rowData[column.backgroundColor]);\r\n        });\r\n    };\r\n\r\n    DataGrid.prototype.showRowAsSelected = function($row) {\r\n        this.updateStyle($row, 'selectedRow');\r\n\r\n        $row.addClass('selectedRow');\r\n\r\n        _.each(this.data.columns, function (column, columnIndex) {\r\n            if (column.type === 'Static Image') {\r\n                if (column.imageVisibility === 'Always') {\r\n                    if (column.physicalFileHoverSelected)\r\n                        setBackgroundImage($row.children().eq(columnIndex).children().eq(0).children().eq(0), column.physicalFileHoverSelected);\r\n                } else {\r\n                    setBackgroundImage($row.children().eq(columnIndex).children().eq(0).children().eq(0), column.physicalFile);\r\n                }\r\n            }\r\n        });\r\n    };\r\n\r\n    DataGrid.prototype.updateHeaderStyle = function ($element, styleName, customStyleName) {\r\n        if (customStyleName)\r\n            Style.renderStyles(this, null, $element, this.data.styles, styleName, customStyleName);\r\n        else\r\n            Style.renderStyles(this, null, $element, this.data.styles, styleName);\r\n    };\r\n\r\n    DataGrid.prototype.updateStyle = function ($element, styleName, customStyleName) {\r\n        if (customStyleName == null)\r\n            Style.renderStyles(this, null, $element, this.data.styles, styleName);\r\n        else\r\n            Style.renderStyles(this, null, $element, this.data.styles, styleName, customStyleName);\r\n    };\r\n\r\n    DataGrid.prototype.getPaddingFormat = function (padding) {\r\n        if (!padding)\r\n            return '';\r\n        return padding.top + 'px ' + padding.right + 'px ' + padding.bottom + 'px ' + padding.left + 'px';\r\n    };\r\n\r\n    DataGrid.prototype.storeScollPosition = function () {\r\n        this.currentScrollPosition = this.$contentWrapper.scrollTop();\r\n    };\r\n\r\n    DataGrid.prototype.restoreScrollPosition = function (currentScrollPosition) {\r\n        if (currentScrollPosition !== null && currentScrollPosition !== undefined) {\r\n            this.$contentWrapper.scrollTop(currentScrollPosition);\r\n        } else {\r\n            this.$contentWrapper.scrollTop(this.currentScrollPosition);\r\n        }\r\n    };\r\n\r\n    DataGrid.prototype.sortByColumn = function (column) {\r\n        if(!column) return;\r\n        var descending = this.sortParameters.length !== 0\r\n            && this.sortParameters[0].output === column.output\r\n            && !this.sortParameters[0].descending;\r\n\r\n        this.sortParameters = [{ output: column.output, descending: descending }];\r\n        this.dispatchQuery();\r\n    };\r\n\r\n    DataGrid.prototype.dispatchQuery = function () {\r\n        var self = this;\r\n        this.piping.queryDispatcher.dispatch(\r\n            this.data.dataSource,\r\n            function(data) {\r\n                self.loadedPages = 1;\r\n                self.currentScrollPosition = 0;\r\n                self.loadedAllData = self.getPageSize() > data.results.length;\r\n                self.update(data, self);\r\n                self.previousData = data;\r\n            },\r\n            this.decorateDataSourceDataForFirstPage.bind(this));\r\n    };\r\n\r\n    DataGrid.prototype.getHTMLHeaderElementByType = function (column, columnIndex) {\r\n        var $th = $('<td/>')\r\n            .css({\r\n                textAlign: column.textAlignmentHeader,\r\n                height: this.data.headerHeight + 'px'\r\n            });\r\n\r\n        if (column.columnSize != null)\r\n            $th.css('width', column.columnSizeType === 'Pixels' ? column.columnSizeInPixels + 'px' : column.columnSizeInPercentage + '%');\r\n\r\n        var $content = $('<div />');\r\n\r\n        if (this.data.showSortingInHeader && !column.disabledColumnSorting) {\r\n            var $sorting = $('<div class=\"column-sorting\" />')\r\n                .append($('<div class=\"sorting-ascending\" />').text('▲'))\r\n                .append($('<div class=\"sorting-descending\" />').text('▼'));\r\n\r\n            if (this.sortParameters.length > 0 && this.sortParameters[0].output === column.output)\r\n                $sorting.addClass(this.sortParameters[0].descending ? 'descending' : 'ascending');\r\n\r\n            $content.append($sorting);\r\n        }\r\n\r\n        var $headerTitle = $('<div class=\"column-title\"/>');\r\n        if (column.applyCustomPaddingForHeader && column.customPaddingForHeader) {\r\n            $headerTitle\r\n                .css({\r\n                    padding: this.getPaddingFormat(column.customPaddingForHeader)\r\n                });\r\n        }\r\n\r\n        $content.append($headerTitle\r\n            .append(\r\n                this.headersWithTooltips[columnIndex]\r\n            ));\r\n\r\n        if (!column.headerEnabled) {\r\n            $content.css({\r\n                visibility: 'hidden',\r\n                backgroundColor: 'rgba(0, 0, 0, 0)'\r\n            });\r\n        }\r\n\r\n        return $th\r\n            .append($('<div class=\"table header-content\">')\r\n                .append($content));\r\n    };\r\n\r\n    DataGrid.prototype.getFooterRow = function (data) {\r\n        if (data.results.length === 0)\r\n            return $('<div/>');\r\n\r\n        var self = this;\r\n        var columns = this.data.columns;\r\n\r\n        var $table = $('<table cellspacing=\"0\" cellpadding=\"0\" />')\r\n            .css('overflow', 'hidden')\r\n            .addClass('table-body');\r\n\r\n        var $tbody = $('<tbody>')\r\n            .addClass('table-body-row');\r\n        $tbody.appendTo($table);\r\n        this.$footerHeaders = $tbody;\r\n\r\n        var row = data.results[0];\r\n\r\n        var $row = $('<tr/>');\r\n        $row.appendTo($tbody);\r\n\r\n        _.each(columns, function (column) {\r\n            if (data.results.length > 0) {\r\n                var $cell = self.getHTMLRowElementByType(data.outputs, row, column, $row, column.textAlignmentFooter, true);\r\n                $cell.css({\r\n                    'white-space': 'nowrap',\r\n                    padding: column.applyCustomPaddingForFooter ? self.getPaddingFormat(column.customPaddingForFooter) : ''\r\n                });\r\n                $row.append($cell);\r\n            }\r\n        });\r\n\r\n        return $table;\r\n    };\r\n\r\n    DataGrid.prototype.getHTMLRowElementByType = function (outputs, dataOfRow, column, $row, textAlignment, isFooter) {\r\n        var self = this;\r\n\r\n        var $td = $('<td/>')\r\n            .css({\r\n                overflow: 'hidden',\r\n                whiteSpace: (column.textTrimStyle === 'Single Line' ? 'nowrap' : 'pre-line'),\r\n                verticalAlign: column.verticalAlign || 'top'\r\n            });\r\n\r\n        if (column.textTrimStyle === 'Single Line') {\r\n            $td.find('div').css({\r\n                overflow: 'hidden',\r\n                whiteSpace: 'nowrap',\r\n                textOverflow: 'ellipsis'\r\n            });\r\n        }\r\n\r\n        var hasEventOnColumn = Object.keys(column.eventing).length !== 0;\r\n        var hasEventOnDataGrid = Object.keys(this.data.eventing).length !== 0;\r\n\r\n        if (!hasEventOnColumn && !hasEventOnDataGrid) {\r\n            $td.addClass('no-event');\r\n        }\r\n\r\n        var $content = $('<div/>').appendTo($td);\r\n\r\n        $content.css({\r\n            textAlign: textAlignment,\r\n            padding: this.getPaddingFormat(column.customPadding)\r\n        });\r\n\r\n        if (dataOfRow[column.queryVisible] != null) {\r\n            var value = dataOfRow[column.queryVisible];\r\n            if (!value)\r\n                $td.addClass('hidden-content');\r\n        }\r\n\r\n        if (column.textTrimStyle === 'Dynamic Height' || column.type.indexOf('image') === -1)\r\n            $td.css('height', this.data.rowHeight + 'px');\r\n\r\n        if (column.columnSize)\r\n            $td.css('width', column.columnSizeType === 'Pixels' ? column.columnSizeInPixels + 'px' : column.columnSizeInPercentage + '%');\r\n\r\n        if (column.backgroundColor)\r\n            $td.css('background-color', dataOfRow[column.backgroundColor]);\r\n\r\n        //tooltip\r\n        if (column.tooltip) {\r\n            if (column.tooltip.option === Tooltip.hardcoded && column.tooltip.hardcodedTooltip)\r\n                $content.attr('title', html.strip(column.tooltip.hardcodedTooltip));\r\n            else if (column.tooltip.option === Tooltip.query)\r\n                $content.attr('title', html.strip(dataOfRow[column.tooltip.datasourceOutput]));\r\n        }\r\n        else if (self.data.tooltip)\r\n            $content.attr('title', html.strip(dataOfRow[self.data.tooltip]));\r\n\r\n        var columnType = column.type;\r\n        var output = column.output;\r\n\r\n        if (self.data.footerEnabled && isFooter)\r\n            columnType = column.footerType;\r\n\r\n        switch (columnType) {\r\n            case 'Input':\r\n                var $element;\r\n                switch (column.inputType) {\r\n                    case 'text':\r\n                        $element = ($('<input type=\"text\"/>'));\r\n                        break;\r\n                    case 'checkbox':\r\n                        $element = ($('<input type=\"checkbox\"/>'));\r\n                        break;\r\n                    default:\r\n                        $element = $('<div/>');\r\n                        break;\r\n                }\r\n                $element.css('width', column.inputWidth + 'px').css('height', column.inputHeight + 'px');\r\n                $element.attr('class', 'inputType');\r\n                $element.on('click', function (event) { event.stopPropagation(); });\r\n                $content.append($element);\r\n                break;\r\n            case 'Static Text':\r\n                if (isFooter) output = column.footerStaticValue;\r\n\r\n                if (column.eventing && column.eventing['clicked'] && column.eventing['clicked'].enabled) {\r\n                    $content.on('click', function () {\r\n                        self.storeScollPosition();\r\n                        self.triggerEvent(column.eventing['clicked'].raisedEventName, dataOfRow[self.data.eventArg], $content);\r\n                        return false;\r\n                    });\r\n                }\r\n                if ($content.attr('title') === null) $content.attr('title', html.strip(output));\r\n\r\n                var $textElement = $('<span/>').html(html.sanitize(output));\r\n                this.applyColumnStyleToElement($textElement, column);\r\n                $content.append($textElement);\r\n                break;\r\n            case 'Dynamic Text':\r\n                if (isFooter) output = column.footerDynamicValue;\r\n\r\n                var colType = outputs[output];\r\n                var value = self.formatters[_.indexOf(self.data.columns, column)].convertFromLicquidFormat(colType, dataOfRow[output]);\r\n                if (column.eventing && column.eventing['clicked'] && column.eventing['clicked'].enabled) {\r\n                    $content.on('click', function () {\r\n                        self.storeScollPosition();\r\n                        self.triggerEvent(column.eventing['clicked'].raisedEventName, dataOfRow[self.data.eventArg], $content);\r\n                        return false;\r\n                    });\r\n                }\r\n\r\n                if (column.removeMarginAndPadding)\r\n                    $td.addClass('remove-margin-and-padding');\r\n\r\n                if ($content.attr('title') == null) $content.attr('title', html.strip(value));\r\n\r\n                if (value) {\r\n                    if (column.textSuffix)\r\n                        value += column.textSuffix;\r\n\r\n                    var $textElement = $('<span/>').html(html.sanitize(value));\r\n                    this.applyColumnStyleToElement($textElement, column);\r\n                    $content.append($textElement);\r\n                }\r\n\r\n                break;\r\n            case 'Static Image':\r\n\r\n                $content\r\n                    .css(\"padding\", this.getPaddingFormat(column.customPadding));\r\n\r\n                var $image = this.create$image(column, '');\r\n                this.addImageToContent($image, $content, column);\r\n\r\n                if (column.imageVisibility === 'Always') {\r\n                    setBackgroundImage($image, column.physicalFile);\r\n\r\n                    if (column.physicalFileHoverSelected) {\r\n                        $row.on('mouseover', function () {\r\n                            setBackgroundImage($image, column.physicalFileHoverSelected);\r\n                        });\r\n\r\n                        $row.on('mouseout', function () {\r\n                            if (self.isSelected(dataOfRow[self.data.eventArg]))\r\n                                return;\r\n                            setBackgroundImage($image, column.physicalFile);\r\n                        });\r\n                    }\r\n                }\r\n                else {\r\n                    $row.on('mouseout', function () {\r\n                        if ((self.data.selection === 'single' && !self.isSelected(dataOfRow[self.data.eventArg])))\r\n                            setBackgroundImage($image, \"\");\r\n                    });\r\n\r\n                    $row.on('mouseover', function () {\r\n                        setBackgroundImage($image, column.physicalFile);\r\n                    });\r\n                }\r\n\r\n                if (column.eventing && column.eventing['clicked'] && column.eventing['clicked'].enabled) {\r\n                    $image.on('click', function () {\r\n                        self.storeScollPosition();\r\n                        self.triggerEvent(column.eventing['clicked'].raisedEventName, dataOfRow[self.data.eventArg], $image);\r\n                        return false;\r\n                    });\r\n                }\r\n\r\n                break;\r\n            case 'Dynamic Image':\r\n                $content.css(\"padding\", this.getPaddingFormat(column.customPadding));\r\n                var value = dataOfRow[column.physicalFile];\r\n\r\n                if (value) {\r\n                    if (typeof value !== 'string')\r\n                        value = value.Url;\r\n\r\n                    var imageUrl = dynamicContentImage.getPath({\r\n                        imageName: value,\r\n                        useThumbnail: true,\r\n                        resizeOption: 'fillKeepRatio',\r\n                        thumbnailFileType: 'png',\r\n                        size: {\r\n                            x: column.imageWidth,\r\n                            y: column.imageHeight\r\n                        }\r\n                    });\r\n\r\n                    var $image = this.create$image(column, imageUrl);\r\n                    this.addImageToContent($image, $content, column);\r\n\r\n                    if (column.eventing && column.eventing['clicked'] && column.eventing['clicked'].enabled) {\r\n                        $image.on('click', function () {\r\n                            self.storeScollPosition();\r\n                            self.triggerEvent(column.eventing['clicked'].raisedEventName, dataOfRow[self.data.eventArg], $content);\r\n                            return false;\r\n                        });\r\n                    }\r\n                }\r\n\r\n                break;\r\n            case 'Conditional Image':\r\n                var value = dataOfRow[output];\r\n\r\n                var $image = this.create$image(column, lq.getTenantUploads((value ? column.truePhysicalFile : column.falsePhysicalFile)));\r\n                this.addImageToContent($image, $content, column);\r\n\r\n                $image.on('click', function () {\r\n                    self.toggleConditionalState(column, dataOfRow, $image);\r\n                    return false;\r\n                });\r\n                break;\r\n        }\r\n\r\n        return $td;\r\n    };\r\n\r\n    DataGrid.prototype.addImageToContent = function ($image, $content, column) {\r\n        $content\r\n            .css({\r\n                display: 'flex',\r\n                justifyContent: horizontalAlignmentToFlex[column.horizontalAlign]\r\n            })\r\n            .append($image);\r\n    };\r\n\r\n    DataGrid.prototype.create$image = function (column, imageUrl) {\r\n        var $image = $('<div />')\r\n            .css({\r\n                \"width\": column.imageWidth + \"px\",\r\n                \"height\": column.imageHeight + \"px\",\r\n                \"background-image\": \"url(\" + imageUrl + \")\"\r\n            });\r\n\r\n        if (column.selectedResizeOption === 'stretch') {\r\n            $image\r\n                .css({\r\n                    \"background-size\": column.imageWidth + \"px \" + column.imageHeight + \"px\",\r\n                    \"background-position\": \"left top\"\r\n                });\r\n        } else if (column.selectedResizeOption === 'fillKeepRatio') {\r\n            $image\r\n                .css({\r\n                    \"background-size\": \"cover\",\r\n                    \"background-position\": 'center'\r\n                });\r\n        } else if (column.selectedResizeOption === 'completeImageKeepRatio') {\r\n            $image\r\n                .css({\r\n                    \"background-size\": \"contain\",\r\n                    \"background-position\": 'center'\r\n                });\r\n        }\r\n\r\n        $image\r\n            .css({\r\n                \"border-radius\": column.imageRoundness + \"px\",\r\n                \"display\": \"inline-block\",\r\n                \"background-repeat\": \"no-repeat\"\r\n            });\r\n\r\n        return $image;\r\n    };\r\n\r\n    DataGrid.prototype.applyColumnStyleToElement = function ($element, column) {\r\n        $element.css({\r\n            'font-weight': column.textBold ? 'bold' : 'normal',\r\n            'text-decoration': column.textUnderline ? 'underline' : '',\r\n            'font-style': column.textItalic ? 'italic' : ''\r\n        });\r\n    };\r\n\r\n    DataGrid.prototype.toggleConditionalState = function (column, dataOfRow, $div) {\r\n        var self = this;\r\n        if (column.eventing['clicked'] && column.eventing['clicked'].enabled) {\r\n            self.storeScollPosition();\r\n            self.triggerEvent(column.eventing['clicked'].raisedEventName, dataOfRow[self.data.eventArg], $div);\r\n        }\r\n\r\n        if (column.enableConditionalState) {\r\n            var currentValue =  dataOfRow[column.output];\r\n\r\n            if (currentValue && (column.conditionalState === 'falseState' || column.conditionalState === 'opposite')) {\r\n                if (column.eventing['unchecked'] && column.eventing['unchecked'].enabled) {\r\n                    self.storeScollPosition();\r\n                    self.triggerEvent(column.eventing['unchecked'].raisedEventName, dataOfRow[self.data.eventArg]);\r\n                }\r\n                dataOfRow[column.output] = false;\r\n                self.updateSelectedRow(dataOfRow.Id);\r\n            } else if (!currentValue && (column.conditionalState === 'trueState' || column.conditionalState === 'opposite')) {\r\n                if (column.eventing['checked'] && column.eventing['checked'].enabled) {\r\n                    self.storeScollPosition();\r\n                    self.triggerEvent(column.eventing['checked'].raisedEventName, dataOfRow[self.data.eventArg]);\r\n                }\r\n                dataOfRow[column.output] = true;\r\n                self.updateSelectedRow(dataOfRow.Id);\r\n            }\r\n            $div.css('background-image', \"url(\" + lq.getTenantUploads((!currentValue ? column.truePhysicalFile : column.falsePhysicalFile)) + \")\");\r\n        }\r\n    };\r\n\r\n    DataGrid.prototype.usingScrollBar = function () {\r\n        var height = _.reduce(this.$tableRows.find('tbody').children(), function (acc, child) {\r\n            return acc + $(child).outerHeight();\r\n        }, 0);\r\n\r\n        return height > this.$contentWrapper.outerHeight();\r\n    }\r\n\r\n    DataGrid.prototype.calculateColumnWidths = function () {\r\n        var columns = this.data.columns;\r\n        if (columns == null) {\r\n            columns = [];\r\n        }\r\n        _.each(_.where(columns, { columnSizeType: 'undefined' }), function (column) {\r\n            column.columnSizeType = 'Fractions';\r\n        });\r\n\r\n        var tableWidth = this.usingScrollBar() ? this.$wrapper.find('tr:first').outerWidth() : this.$wrapper.outerWidth();\r\n\r\n        var pixelWidth = _.chain(columns)\r\n            .where({ columnSizeType: 'Pixels' })\r\n            .reduce(function (memo, column) {\r\n                column.columnSizeInPixels = column.columnSize;\r\n                return memo + column.columnSize;\r\n            }, 0)\r\n            .value();\r\n\r\n        if (pixelWidth == null) pixelWidth = 0;\r\n\r\n        var leftOverPixels = tableWidth - pixelWidth;\r\n        var leftOverPercentage = 100 / tableWidth * leftOverPixels;\r\n\r\n        var totalWeight = _.chain(columns)\r\n            .where({ columnSizeType: 'Fractions' })\r\n            .reduce(function (memo, column) {\r\n                return memo + column.columnSize;\r\n            }, 0)\r\n            .value();\r\n\r\n        _.each(_.where(columns, { columnSizeType: 'Fractions' }), function (column) {\r\n\r\n            column.columnSizeInPercentage = leftOverPercentage / (totalWeight) * column.columnSize;\r\n        });\r\n        this.$tableRows.css('overflow-y', 'auto');\r\n    };\r\n\r\n    // used when a Pager is linked with this drop\r\n    DataGrid.prototype.openPage = function(pageNumber) {\r\n        this.loadDataForPage(pageNumber, true);\r\n    };\r\n\r\n    DataGrid.prototype.loadDataForPage = function (pageNumber, resetList) {\r\n        if (this.loading)\r\n            return;\r\n\r\n        this.loading = true;\r\n\r\n        var self = this;\r\n        this.piping.queryDispatcher.backgroundDispatch(\r\n            this.data.dataSource,\r\n            function (data) {\r\n                self.page = pageNumber;\r\n                self.loadedPages = pageNumber + 1;\r\n                self.totalResults = data.totalResults;\r\n                self.loadedAllData = self.getPageSize() > data.results.length;\r\n                self.loading = false;\r\n\r\n                self.updateItems(data, resetList);\r\n                self.triggerPageOpened(data.totalResults, self.page, self.getPageSize());\r\n                self.loadNextPageIfNeeded();\r\n            },\r\n            function (params) {\r\n                params.page = pageNumber;\r\n                params.pageSize = self.getPageSize();\r\n                params.doNotExecuteCountQuery = self.data.infiniteScroll;\r\n                params.sortParameters = self.sortParameters;\r\n            },\r\n            function () {\r\n                self.loading = false;\r\n            });\r\n    };\r\n\r\n    DataGrid.prototype.getPageSize = function () {\r\n        return this.data.pageSize || defaults.data.pageSize;\r\n    };\r\n\r\n    return DataGrid;\r\n});\n","define('drops/dateInput/dateInputCustom',[\r\n    'jquery',\r\n    'underscore',\r\n    'require',\r\n    'globalize',\r\n    'lq/style',\r\n    'lq/enum',\r\n    'lq/constants',\r\n    'lq/responsive',\r\n    'lq',\r\n    'lq/zebra/zebra_datepicker',\r\n    'jquery.timepicker',\r\n    'drops/modals'\r\n], function ($, _, require, globalize, Style, Enum, constants, responsive, lq, zebraDatepicker, timepicker, modals) {\r\n    'use strict';\r\n\r\n    var formatTypes = new Enum(\"FormatType\", [\"Date\", \"Time\"]);\r\n\r\n    function DateInputCustom(drop, formatter) {\r\n        this.drop = drop;\r\n        this.formatter = formatter;\r\n\r\n        this.inputFocusLostTimeout = null;\r\n\r\n        this.$dateInput = $('<input type=\"text\" />')\r\n            .attr('id', drop.rootDrop.instanceId + '_' + drop.data.id)\r\n            .addClass('date-picker')\r\n            .css({\r\n                width: '100%',\r\n                height: '100%',\r\n                display: 'inline-block'\r\n            })\r\n            .attr('tabindex', drop.data.tabIndex)\r\n            .attr('placeholder', drop.data.watermark)\r\n            .addClass('boxToBorderSize')\r\n            .on('blur', this.onDateInputBlur.bind(this))\r\n            .on('focus', this.cancelFocusLost.bind(this))\r\n            .on('click', this.setCurrentDateIfNeeded.bind(this))\r\n            .appendTo(drop.$element);\r\n\r\n        if (drop.data.showTimePicker) {\r\n            this.$timeInput = $('<input type=\"text\" />')\r\n                .css({\r\n                    display: 'inline-block',\r\n                    position: 'absolute',\r\n                    right: 0,\r\n                    bottom: 0,\r\n                    width: '102px',\r\n                    height: '100%'\r\n                })\r\n                .attr('tabindex', -1)\r\n                .appendTo(drop.$element);\r\n        }\r\n\r\n        this.$dateIcon = $('<button class=\"Zebra_DatePicker_Icon Zebra_DatePicker_Icon_Inside\">')\r\n            .css({\r\n                backgroundPosition: 'center',\r\n                backgroundSize: 'contain',\r\n                backgroundRepeat: 'no-repeat',\r\n                right: this.drop.data.showTimePicker ? 25 : 5,\r\n                top: '0px',\r\n                display: 'inline-block',\r\n                width: '20px',\r\n                height: '100%'\r\n            });\r\n\r\n        this.$timeButton = $('<span>')\r\n            .css({\r\n                position: 'absolute',\r\n                border: 'none',\r\n                padding: 0,\r\n                backgroundPosition: 'center',\r\n                backgroundSize: 'contain',\r\n                backgroundRepeat: 'no-repeat',\r\n                right: 5,\r\n                top: '0px',\r\n                display: 'inline-block',\r\n                width: '20px',\r\n                height: '100%'\r\n            })\r\n\r\n\r\n        if (drop.data.readOnly)\r\n            this.$dateInput.prop('inert', true);\r\n\r\n        Style.renderStyles(drop, null, this.$dateInput);\r\n    }\r\n\r\n    DateInputCustom.prototype.initialize = function () {\r\n        this.dateOnlyPhpFormat = this.filterAndConvertDateTimeFormat(this.formatter.dateFormat, formatTypes.Date);\r\n        this.timeOnlyPhpFormat = this.filterAndConvertDateTimeFormat(this.formatter.dateFormat, formatTypes.Time);\r\n\r\n        if (this.drop.data.precision !== 'day') {\r\n            this.dateOnlyPhpFormat = this.dateOnlyPhpFormat\r\n                .replace(/[jdDL]/g, '');\r\n\r\n            if (this.drop.data.precision !== 'month') {\r\n                this.dateOnlyPhpFormat = this.dateOnlyPhpFormat\r\n                    .replace(/[nmMF]/g, '');\r\n            }\r\n        }\r\n\r\n        if (this.drop.data.showDatePicker)\r\n            this.attachDatePicker();\r\n\r\n        if (this.drop.data.showTimePicker)\r\n            this.attachTimePicker();\r\n\r\n        if (this.drop.data.hasLightBox)\r\n            this.createLightBoxOverlay();\r\n    };\r\n\r\n    DateInputCustom.prototype.cancelFocusLost = function () {\r\n        if (this.inputFocusLostTimeout !== null)\r\n            clearTimeout(this.inputFocusLostTimeout);\r\n    };\r\n\r\n    var datePatternToPhpMap = {\r\n        yy: 'y',\r\n        yyyy: 'Y',\r\n        M: 'n',\r\n        MM: 'm',\r\n        MMM: 'M',\r\n        MMMM: 'F',\r\n        d: 'j',\r\n        dd: 'd',\r\n        ddd: 'D',\r\n        dddd: 'L'\r\n    };\r\n\r\n    var timePatternToPhpMap = {\r\n        h: 'g',\r\n        H: 'G',\r\n        hh: 'h',\r\n        HH: 'H',\r\n        mm: 'i',\r\n        ss: 's',\r\n        tt: 'A',\r\n        zzz: 'P'\r\n    };\r\n\r\n    /*jslint regexp: true */\r\n    DateInputCustom.prototype.filterAndConvertDateTimeFormat = function (dateTimeFormat, formatTypeToFilter) {\r\n        var lastKnownType;\r\n        var currentMap = formatTypeToFilter === formatTypes.Time ? timePatternToPhpMap : datePatternToPhpMap;\r\n\r\n        return dateTimeFormat\r\n            .replace(/(.)\\1*/g, function (sameCharGroup) {\r\n                var currentType = datePatternToPhpMap[sameCharGroup] ? formatTypes.Date :\r\n                    timePatternToPhpMap[sameCharGroup] ? formatTypes.Time :\r\n                        undefined;\r\n\r\n                var result = (currentType || lastKnownType) === formatTypeToFilter ?\r\n                    currentMap[sameCharGroup] || sameCharGroup : '';\r\n\r\n                lastKnownType = currentType || lastKnownType;\r\n                return result;\r\n            });\r\n    };\r\n    /*jslint regexp: false */\r\n\r\n    DateInputCustom.prototype.attachDatePicker = function () {\r\n        var self = this;\r\n\r\n        this.attachDateButton();\r\n\r\n        if (this.drop.data.readOnly) {\r\n            this.$dateInput\r\n                .prop('readonly', true);\r\n\r\n            this.$dateIcon\r\n                .css({\r\n                    cursor: 'default'\r\n                });\r\n        } else {\r\n            var deviceType = responsive.getDeviceType();\r\n            var showAtFixedLocation = deviceType === constants.deviceTypes.Phone || (deviceType === constants.deviceTypes.Tablet && window.matchMedia(\"(orientation: portrait)\").matches);\r\n\r\n            this.$dateInput\r\n                .Zebra_DatePicker({\r\n                    days: this.formatter.culture.calendar.days.names,\r\n                    days_abbr: this.formatter.culture.calendar.days.namesAbbr,\r\n                    months: this.formatter.culture.calendar.months.names,\r\n                    months_abbr: this.formatter.culture.calendar.months.namesAbbr,\r\n                    show_icon: false,\r\n                    format: this.dateOnlyPhpFormat,\r\n                    readonly_element: showAtFixedLocation,\r\n                    zero_pad: false,\r\n                    show_select_today: this.drop.data.todayLabel,\r\n                    show_clear_date: this.drop.data.showClearButton,\r\n                    lang_clear_date: this.drop.data.clearLabel,\r\n                    onSelect: function (dateFormatted, dateStandard, dateObj) {\r\n                        if (self.drop.data.precision !== 'day') {\r\n                            var day = self.drop.data.defaultDay;\r\n                            var month = self.drop.data.defaultMonth;\r\n\r\n                            if (self.drop.data.defaultMonthSource === 'parameter' && self.drop.data.monthParameter) {\r\n                                month = self.drop.piping.parameters.locals.getValue(self.drop.data.monthParameter);\r\n                            }\r\n\r\n                            if (self.drop.data.defaultDaySource === 'parameter' && self.drop.data.dayParameter) {\r\n                                day = self.drop.piping.parameters.locals.getValue(self.drop.data.dayParameter);\r\n                            } else if (self.drop.data.defaultDaySource === 'lastday') {\r\n                                day = new Date(dateObj.getYear(), self.drop.data.precision === 'month' ? dateObj.getMonth() + 1 : month, 0).getDate();\r\n                            }\r\n\r\n                            if (self.drop.data.precision !== 'month') {\r\n                                dateObj.setMonth(month - 1);\r\n                            }\r\n                            dateObj.setDate(day);\r\n                        }\r\n\r\n                        dateObj.setHours(0, 0, 0, 0);\r\n\r\n                        var minMaxFlag = true;\r\n                        if (self.drop.data.minDate && dateObj) {\r\n                            if (self.minDateFormatted && dateObj < self.minDateFormatted) {\r\n                                minMaxFlag = false;\r\n                                self.drop.triggerEventIfEnabled('minMaxDateNotValid');\r\n                            }\r\n                        }\r\n                        if (self.drop.data.maxDate && dateObj) {\r\n                            if (self.maxDateFormatted && dateObj > self.maxDateFormatted) {\r\n                                minMaxFlag = false;\r\n                                self.drop.triggerEventIfEnabled('minMaxDateNotValid');\r\n                            }\r\n                        }\r\n                        if (minMaxFlag) {\r\n                            //Stop clickthrough so Modal doesn't close when clicked on modal background\r\n                            $('.Zebra_DatePicker').on('click', function (e) {\r\n                                e.stopImmediatePropagation();\r\n                            });\r\n\r\n                            var valueChanged = self.drop.dateChanged(self.date, dateObj);\r\n\r\n                            if (valueChanged) {\r\n                                self.drop.date = dateObj;\r\n                                self.dateFormatted = dateFormatted;\r\n                                if (self.drop.data.precision !== 'day') {\r\n                                    self.$dateInput.val(self.formatter.formatDate(dateObj));\r\n                                }\r\n                            }\r\n\r\n                            self.cancelFocusLost();\r\n                            self.drop.updateRequiredIndicator();\r\n\r\n                            if (self.drop.data.showTimePicker)\r\n                                self.$timeInput.timepicker('show');\r\n\r\n                            var licquidDate = self.drop.getCurrentDateAsLicquidDate();\r\n\r\n                            if (licquidDate) {\r\n                                self.drop.triggerEventIfEnabled('selected', licquidDate);\r\n                                self.drop.triggerEventIfEnabled('dateSelected', licquidDate);\r\n                            };\r\n\r\n                            if (valueChanged) {\r\n                                self.drop.triggerEventIfEnabled('changed', licquidDate);\r\n                                self.drop.triggerEventIfEnabled('dateChanged', licquidDate);\r\n                            }\r\n                        } else {\r\n                            self.dateUpdated(null);\r\n                        }\r\n                    },\r\n                    onClear: function () {\r\n                        if (self.drop.date === null)\r\n                            return;\r\n\r\n                        self.drop.date = null;\r\n                        self.cancelFocusLost();\r\n                        self.drop.updateRequiredIndicator();\r\n\r\n                        self.drop.triggerEventIfEnabled('deselected');\r\n                        self.drop.triggerEventIfEnabled('changed');\r\n                        self.drop.triggerEventIfEnabled('dateChanged');\r\n                    },\r\n                    onOpen: function () {\r\n                        self.cancelFocusLost();\r\n\r\n                        if (self.drop.data.hasLightBox) {\r\n                            if (!self.$lightBoxOverlay) {\r\n                                self.createLightBoxOverlay();\r\n                            }\r\n\r\n                            self.$lightBoxOverlay.css('display', 'block');\r\n                        }\r\n\r\n                        if (showAtFixedLocation) {\r\n                            var currentDimensions = $(\".Zebra_DatePicker\").css([\"width\", \"height\", \"margin-left\"]);\r\n                            var currentBodyHeight = $(\".Zebra_DatePicker .dp_body.dp_daypicker\").css(\"height\");\r\n                            var currentDimensionsNumbers = {\r\n                                width: Number(currentDimensions.width.substring(0, currentDimensions.width.length - 2)),\r\n                                height: Number(currentDimensions.height.substring(0, currentDimensions.height.length - 2)),\r\n                                bodyHeight: Number(currentBodyHeight.substring(0, currentBodyHeight.length - 2)),\r\n                                margin: Number(currentDimensions[\"margin-left\"].substring(0, currentDimensions[\"margin-left\"].length - 2)),\r\n                            }\r\n\r\n                            var newWidth = window.innerWidth - (2 * currentDimensionsNumbers.margin);\r\n                            var newBodyHeight = newWidth * (currentDimensionsNumbers.bodyHeight / currentDimensionsNumbers.width);\r\n                            var newMargin = currentDimensionsNumbers.margin == 0 ? \"auto\" : currentDimensionsNumbers.margin + \"px\";\r\n                            if ((newBodyHeight + currentDimensionsNumbers.height - currentDimensionsNumbers.bodyHeight) > (window.innerHeight - 150)) {\r\n                                newBodyHeight = window.innerHeight - 150 - currentDimensionsNumbers.height + currentDimensionsNumbers.bodyHeight;\r\n                                newWidth = newBodyHeight * (currentDimensionsNumbers.width / currentDimensionsNumbers.bodyHeight);\r\n                                newMargin = ((window.innerWidth - newWidth) / 2) + \"px\";\r\n                            }\r\n\r\n                            $(\".Zebra_DatePicker\").\r\n                                css({\r\n                                    width: newWidth + 'px !important',\r\n                                    margin: '0 ' + newMargin + ' 0 ' + newMargin,\r\n                                    position: 'fixed',\r\n                                    top: 'auto',\r\n                                    bottom: 0,\r\n                                    zIndex: modals.getZIndexForPopups()\r\n                                });\r\n                            $(\".Zebra_DatePicker .dp_body:not([style*=none])\")\r\n                                .css({\r\n                                    height: newBodyHeight + 'px !important'\r\n                                });\r\n                            $(\".Zebra_DatePicker .dp_body[style*=none]\")\r\n                                .css({\r\n                                    height: newBodyHeight + 'px !important',\r\n                                    display: 'none'\r\n                                });\r\n                        }\r\n                        else {\r\n                            var styleSplit = $(\".Zebra_DatePicker\").attr(\"style\").split(/;/g);\r\n                            if (styleSplit.some(function (element) { return element.includes(\"margin\"); }) && styleSplit.some(function (element) { return element.includes(\"left\"); }) && styleSplit.some(function (element) { return element.includes(\"top\"); })) {\r\n                                var left = styleSplit.find(function (element) { return element.includes(\"left\"); });\r\n                                var top = styleSplit.find(function (element) { return element.includes(\"top\"); });\r\n                                $(\".Zebra_DatePicker\").attr(\"style\", left + \"; \" + top + \";\");\r\n                                $(\".Zebra_DatePicker .dp_body:not([style*=none])\").attr(\"style\", \"\");\r\n                                $(\".Zebra_DatePicker .dp_body[style*=none]\").attr(\"style\", \"display: none;\");\r\n                            }\r\n                            $(\".Zebra_DatePicker\").\r\n                                css('zIndex', modals.getZIndexForPopups());\r\n                        }\r\n                    },\r\n                    onClose: function () {\r\n                        if (self.$lightBoxOverlay) {\r\n                            self.$lightBoxOverlay.css('display', 'none');\r\n                        }\r\n                    }\r\n                });\r\n\r\n            this.zebra = this.$dateInput\r\n                .data('Zebra_DatePicker');\r\n\r\n            if (this.drop.data.popupStyleId) {\r\n                this.zebra.datepicker.addClass('dateinputstyle-' + this.drop.data.popupStyleId);\r\n            } else {\r\n                var defaultStyle = Style.getDefaultStyleIdForComponentByDropType(this.drop, 'Popup');\r\n\r\n                if (defaultStyle)\r\n                    this.zebra.datepicker.addClass('dateinputstyle-' + defaultStyle);\r\n                else\r\n                    this.zebra.datepicker.addClass('dateinputstyle-' + 'default');\r\n            }\r\n\r\n            this.$dateIcon\r\n                .on('click', this.setCurrentDateAndShowDatePicker.bind(this));\r\n        }\r\n    };\r\n\r\n    DateInputCustom.prototype.attachTimePicker = function () {\r\n        var self = this;\r\n\r\n        this.$timeInput\r\n            .css('visibility', 'hidden');\r\n\r\n        this.attachTimeButton();\r\n\r\n        if (!this.drop.data.readOnly) {\r\n            this.$timeButton\r\n                .css({\r\n                    cursor: 'pointer'\r\n                })\r\n                .on('click', function () {\r\n                    self.$timeInput.timepicker('show');\r\n                });\r\n\r\n            this.$timeInput.timepicker({\r\n                timeFormat: this.timeOnlyPhpFormat,\r\n                step: this.drop.data.timeInputStep,\r\n                useSelect: false,\r\n                noneOption: false\r\n            });\r\n\r\n            this.$timeInput\r\n                .on('change', function () {\r\n                    var newTime = self.$timeInput.timepicker('getTime', self.drop.date);\r\n\r\n                    self.dateUpdated(newTime);\r\n\r\n                    // the time selection popup seems to be doing something really strange with the click event:\r\n                    // triggering an event will show the ui blocker and this ui blocker will prevent\r\n                    // the click event from propagating => the time selection popup will stay open\r\n                    self.$timeInput.timepicker('hide');\r\n                })\r\n                .on('showTimepicker', function () {\r\n                    var $popup = $(this).data(\"timepicker-list\");\r\n                    $popup.css('zIndex', modals.getZIndexForPopups());\r\n                    self.cancelFocusLost();\r\n                })\r\n                .on('hideTimepicker', function () {\r\n                    var licquidDate = self.drop.getCurrentDateAsLicquidDate();\r\n                    self.$dateInput.val(self.formatter.convertFromLicquidFormat(constants.valueTypes.dateTime, licquidDate));\r\n                });\r\n        }\r\n    };\r\n\r\n    DateInputCustom.prototype.attachTimeButton = function () {\r\n        this.$timeButton.appendTo(this.drop.$element);\r\n        this.changeTimePickerIcon();\r\n    };\r\n\r\n    DateInputCustom.prototype.attachDateButton = function () {\r\n        this.$dateIcon.appendTo(this.drop.$element);\r\n        this.changeDatePickerIcon();\r\n    };\r\n\r\n    DateInputCustom.prototype.onDateInputBlur = function () {\r\n        this.drop.updateRequiredIndicator();\r\n        this.handleFocusLost();\r\n    };\r\n\r\n    DateInputCustom.prototype.handleFocusLost = function () {\r\n        this.cancelFocusLost();\r\n\r\n        var newDateFormatted = this.$dateInput.val();\r\n\r\n        if (this.dateFormatted === newDateFormatted)\r\n            return;\r\n\r\n        var newDate = globalize.parseDate(newDateFormatted, this.formatter.dateFormat);\r\n\r\n        // force loose date format\r\n        if (!newDate)\r\n            newDate = globalize.parseDate(newDateFormatted.replace(/\\D/g, ''), this.formatter.looseDateFormat);\r\n\r\n        if (this.drop.date && !this.drop.data.showDatePicker && this.drop.data.showTimePicker) {\r\n            if (newDate) {\r\n                newDate.setFullYear(this.drop.date.getFullYear());\r\n                newDate.setMonth(this.drop.date.getMonth());\r\n                newDate.setDate(this.drop.date.getDate());\r\n            } else {\r\n                newDate = new Date(this.drop.date);\r\n            }\r\n        }\r\n\r\n        this.dateUpdated(newDate);\r\n    };\r\n\r\n    DateInputCustom.prototype.dateUpdated = function (newDate) {\r\n        this.drop.updateDate(newDate);\r\n\r\n        var self = this;\r\n        this.inputFocusLostTimeout = setTimeout(function () {\r\n            // we consider the input and the calendar to be a single element\r\n            // so when the calendar is opened we have to give it some time\r\n            // to cancel the focus lost event of the input box\r\n            if (self.drop.isEventEnabled('focusLost')) {\r\n                if (self.zebra.datepicker.hasClass('dp_hidden') && !$('.ui-timepicker-wrapper:visible').length && !self.$dateInput.is(':focus'))\r\n                    self.drop.triggerEvent(self.drop.data.eventing.focusLost.raisedEventName);\r\n            }\r\n\r\n            self.inputFocusLostTimeout = null;\r\n        }, 100);\r\n    };\r\n\r\n    DateInputCustom.prototype.afterDateUpdatedSuccesfully = function (newDate) {\r\n        this.dateFormatted = this.formatter.formatDate(newDate);\r\n        this.$dateInput.val(this.dateFormatted);\r\n\r\n        if (this.drop.data.showTimePicker)\r\n            this.$timeInput.timepicker('setTime', newDate);\r\n    };\r\n\r\n    DateInputCustom.prototype.focus = function () {\r\n        this.$dateInput.trigger('focus');\r\n    };\r\n\r\n    DateInputCustom.prototype.clearValue = function () {\r\n        this.dateFormatted = null;\r\n\r\n        this.$dateInput.val(null);\r\n\r\n        if (this.drop.data.showTimePicker)\r\n            this.$timeInput.timepicker('setTime', null);\r\n    };\r\n\r\n    DateInputCustom.prototype.setValue = function (newDate) {\r\n        this.dateFormatted = this.formatter.formatDate(newDate);\r\n\r\n        this.$dateInput.val(this.dateFormatted);\r\n\r\n        if (this.drop.data.showTimePicker)\r\n            this.$timeInput.timepicker('setTime', newDate);\r\n    };\r\n\r\n    DateInputCustom.prototype.getDatePickerImagePath = function () {\r\n        if (this.drop.data.physicalFileDatePicker && this.drop.data.useCustomIconDatePicker)\r\n            return lq.getTenantUploads(this.drop.data.physicalFileDatePicker);\r\n\r\n        // non-editable property used on generated images like default preloader on list\r\n        if (this.drop.data.cdnPath)\r\n            return lq.getCdnUrl(this.drop.data.cdnPath);\r\n\r\n        return null;\r\n    };\r\n\r\n    DateInputCustom.prototype.getTimePickerImagePath = function () {\r\n        if (this.drop.data.physicalFileTimePicker && this.drop.data.useCustomIconTimePicker)\r\n            return lq.getTenantUploads(this.drop.data.physicalFileTimePicker);\r\n\r\n        // non-editable property used on generated images like default preloader on list\r\n        if (this.drop.data.cdnPath)\r\n            return lq.getCdnUrl(this.drop.data.cdnPath);\r\n\r\n        return null;\r\n    };\r\n\r\n    DateInputCustom.prototype.changeDatePickerIcon = function () {\r\n        var imagePath = this.getDatePickerImagePath();\r\n        if (imagePath && this.drop.data.useCustomIconDatePicker) {\r\n            this.setImageDatePicker(imagePath);\r\n        } else this.setImageDatePicker(false);\r\n    };\r\n\r\n    DateInputCustom.prototype.changeTimePickerIcon = function () {\r\n        var imagePath = this.getTimePickerImagePath();\r\n        if (imagePath && this.drop.data.useCustomIconTimePicker && this.$timeButton) {\r\n            this.setImageTimePicker(imagePath);\r\n        } else this.setImageTimePicker(false);\r\n    };\r\n\r\n    DateInputCustom.prototype.setImageTimePicker = function (image) {\r\n        if (image)\r\n            this.$timeButton.css({\r\n                backgroundImage: 'url(' + require.toUrl(image) + ')',\r\n            })\r\n        else this.$timeButton.css('background-image', '');\r\n    };\r\n\r\n    DateInputCustom.prototype.setImageDatePicker = function (image) {\r\n        if (image)\r\n            this.$dateIcon.css({\r\n                backgroundImage: 'url(' + require.toUrl(image) + ')',\r\n            })\r\n        else this.$dateIcon.css('background-image', '');\r\n    };\r\n\r\n    DateInputCustom.prototype.setCurrentDateIfNeeded = function () {\r\n        if (this.drop.data.dateParameterWhenOpening) {\r\n            var licquidDateFromParameter = this.drop.piping.parameters.locals.getValue(this.drop.data.dateParameterWhenOpening);\r\n\r\n            if (licquidDateFromParameter) {\r\n                var dateObject = this.formatter.parseLicquidDate(licquidDateFromParameter);\r\n                this.zebra.update({\r\n                    current_date: dateObject\r\n                });\r\n            }\r\n        }\r\n    };\r\n\r\n    DateInputCustom.prototype.setCurrentDateAndShowDatePicker = function () {\r\n        this.setCurrentDateIfNeeded();\r\n\r\n        this.zebra.show();\r\n    };\r\n\r\n    DateInputCustom.prototype.createLightBoxOverlay = function () {\r\n        this.$lightBoxOverlay = $('<div />')\r\n            .css({\r\n                'position': 'fixed',\r\n                'top': 0,\r\n                'left': 0,\r\n                'width': '100%',\r\n                'height': '100%',\r\n                'background-color': this.drop.data.hasLightBox ? this.drop.data.lightBoxColor : 'rgba(0, 0, 0, 0)',\r\n                'opacity': this.drop.data.lightBoxOpacity / 100,\r\n                'z-index': 9999,\r\n                'display': 'none'\r\n            });\r\n\r\n        if (this.drop.data.toBrowser) {\r\n            this.$lightBoxOverlay.appendTo(this.drop.piping.$actionWrapper);\r\n        } else {\r\n            this.$lightBoxOverlay.appendTo(this.drop.rootDrop.$element);\r\n        }\r\n        this.$lightBoxOverlay.appendTo(this.drop.$element);\r\n    }\r\n\r\n    return DateInputCustom;\r\n});\r\n\n","define('drops/dateInput/dateInputNative',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/style'\r\n], function ($, _, Style) {\r\n    'use strict';\r\n\r\n    function DateInputNative(drop) {\r\n        this.drop = drop;\r\n\r\n        var self = this;\r\n        this.$dateInput = $('<input>')\r\n            .attr('type', this.drop.data.showTimePicker ? \"datetime-local\" : \"date\")\r\n            .css({\r\n                width: '100%',\r\n                height: '100%',\r\n                display: 'inline-block',\r\n                whiteSpace: 'normal'\r\n            })\r\n            .attr('id', drop.rootDrop.instanceId + '_' + drop.data.id)\r\n            .addClass('date-picker')\r\n            .attr('tabindex', this.drop.data.tabIndex)\r\n            .attr('placeholder', this.drop.data.watermark)\r\n            .addClass('boxToBorderSize')\r\n            .attr(\"min\", this.drop.data.minDate)\r\n            .attr(\"max\", this.drop.data.maxDate)\r\n            .on(\"blur\", function () {\r\n                drop.triggerEventIfEnabled('focusLost');\r\n            })\r\n            .on(\"change\", function () {\r\n                var selectedDate = new Date(this.value);\r\n                self.drop.updateDate(selectedDate);\r\n            })\r\n            .appendTo(this.drop.$element);\r\n\r\n        if (this.drop.data.readOnly)\r\n            this.$dateInput.prop('inert', true);\r\n\r\n        Style.renderStyles(drop, null, this.$dateInput);\r\n    };\r\n\r\n    DateInputNative.prototype.initialize = $.noop;\r\n\r\n    DateInputNative.prototype.afterDateUpdatedSuccesfully = $.noop;\r\n\r\n    DateInputNative.prototype.focus = function () {\r\n        this.$dateInput.trigger('focus');\r\n    };\r\n\r\n    DateInputNative.prototype.clearValue = function () {\r\n        this.$dateInput.val(null);\r\n    };\r\n\r\n    DateInputNative.prototype.setValue = function (newDate) {\r\n        var localTimeAsString = new Date(newDate.getTime() - newDate.getTimezoneOffset() * 60 * 1000).toISOString();\r\n        var value = this.drop.data.showTimePicker\r\n            ? localTimeAsString.substr(0, 19)\r\n            : localTimeAsString.substr(0, 10);\r\n        this.$dateInput.val(value);\r\n    };\r\n\r\n    return DateInputNative;\r\n});\r\n\n","define('drops/dateInput/dateInput',[\r\n    'jquery',\r\n    'underscore',\r\n    'globalize',\r\n    'lq/drop',\r\n    'lq/constants',\r\n    'lq/responsive',\r\n    'lq/util',\r\n    'lq',\r\n    './dateInputCustom',\r\n    './dateInputNative',\r\n    'lq/required'\r\n], function ($, _, globalize, Drop, constants, responsive, util, lq, DateInputCustom, DateInputNative, Required) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            showDatePicker: true,\r\n            showTimePicker: false,\r\n            todayLabel: 'Today',\r\n            clearLabel: 'Clear',\r\n            timeInputStep: 30,\r\n            lightBoxOpacity: 100,\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded'\r\n            },\r\n            precision: 'day',\r\n            defaultMonth: 1,\r\n            defaultDay: 1,\r\n            defaultDaySource: 'hardcoded',\r\n            defaultMonthSource: 'hardcoded',\r\n            showClearButton: true\r\n        }\r\n    };\r\n\r\n    function DateInput(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing) || {};\r\n\r\n        this.date = null;\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize')\r\n            .css({\r\n                whiteSpace: 'pre-wrap'\r\n            });\r\n\r\n        this.minDateFormatted = globalize.parseDate(this.data.minDate, this.minMaxDateFormat);\r\n        this.maxDateFormatted = globalize.parseDate(this.data.maxDate, this.minMaxDateFormat);\r\n    }\r\n\r\n    Drop.extend(DateInput, Drop);\r\n\r\n    DateInput.typeName = 'DateInput';\r\n\r\n    DateInput.prototype.minMaxDateFormat = 'yyyy-MM-dd';\r\n\r\n    DateInput.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.piping.required.apply(this);\r\n        Required.prototype.addRemoveRequiredIndicator(this);\r\n\r\n        this.formatter = this.piping.formatting.createFormatter(this.data.formatting);\r\n\r\n        this.input = this.shouldShowCustomInput()\r\n            ? new DateInputCustom(this, this.formatter)\r\n            : new DateInputNative(this);\r\n\r\n        this.input.initialize();\r\n\r\n        this.applyPosition();\r\n    };\r\n\r\n    DateInput.prototype.shouldShowCustomInput = function () {\r\n        var dateInputBehaviour = this.rootDrop.options.dateInputBehaviour;\r\n        return dateInputBehaviour === 0 || (dateInputBehaviour === 1 && !responsive.isPhoneDevice());\r\n    };\r\n\r\n    DateInput.prototype.focus = function () {\r\n        this.input.focus();\r\n    };\r\n\r\n    DateInput.prototype.getValue = function () {\r\n        return this.getCurrentDateAsLicquidDate();\r\n    };\r\n\r\n    DateInput.prototype.clearValue = function () {\r\n        this.date = null;\r\n        this.input.clearValue();\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    DateInput.prototype.setValue = function (update) {\r\n        if (update.value) {\r\n            this.date = globalize.parseDate(update.value, constants.licquidDateFormat);\r\n\r\n            if (!this.data.showTimePicker)\r\n                this.date.setHours(0, 0, 0, 0);\r\n\r\n            this.input.setValue(this.date);\r\n        } else {\r\n            this.date = null;\r\n            this.input.clearValue();\r\n        }\r\n\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    DateInput.prototype.dateChanged = function (date1, date2) {\r\n        if (!date1 || !date2)\r\n            return date1 !== date2;\r\n\r\n        return date1.getYear() !== date2.getYear()\r\n            || date1.getMonth() !== date2.getMonth()\r\n            || date1.getDate() !== date2.getDate();\r\n    };\r\n\r\n    DateInput.prototype.timeChanged = function (date1, date2) {\r\n        if (!date1 || !date2)\r\n            return date1 !== date2;\r\n\r\n        return date1.getHours() !== date2.getHours()\r\n            || date1.getMinutes() !== date2.getMinutes()\r\n            || date1.getSeconds() !== date2.getSeconds();\r\n    };\r\n\r\n    DateInput.prototype.updateDate = function (newDate) {\r\n        var newDateWithoutTime = null;\r\n        if (newDate) {\r\n            newDateWithoutTime = new Date(newDate);\r\n            if (this.data.showTimePicker) {\r\n                newDateWithoutTime.setHours(0, 0, 0, 0);\r\n            }\r\n        }\r\n        if (this.data.minDate && newDateWithoutTime) {\r\n            if (this.minDateFormatted && newDateWithoutTime < this.minDateFormatted) {\r\n                newDate = null;\r\n                this.triggerEventIfEnabled('minMaxDateNotValid');\r\n            }\r\n        }\r\n        if (this.data.maxDate && newDateWithoutTime) {\r\n            if (this.maxDateFormatted && newDateWithoutTime > this.maxDateFormatted) {\r\n                newDate = null;\r\n                this.triggerEventIfEnabled('minMaxDateNotValid');\r\n            }\r\n        }\r\n        if (newDate) {\r\n            var hasTimeChange = this.timeChanged(this.date, newDate);\r\n            var hasDateChange = this.dateChanged(this.date, newDate);\r\n\r\n            this.date = newDate;\r\n\r\n            this.input.afterDateUpdatedSuccesfully(newDate);\r\n\r\n            var licquidDate = this.formatter.formatLicquidDate(newDate);\r\n\r\n            if (hasTimeChange || hasDateChange) {\r\n                this.triggerEventIfEnabled('selected', licquidDate);\r\n                this.triggerEventIfEnabled('changed', licquidDate);\r\n            }\r\n\r\n            if (hasTimeChange) {\r\n                this.triggerEventIfEnabled('timeSelected', licquidDate);\r\n                this.triggerEventIfEnabled('timeChanged', licquidDate);\r\n            }\r\n\r\n            if (hasDateChange) {\r\n                this.triggerEventIfEnabled('dateSelected', licquidDate);\r\n                this.triggerEventIfEnabled('dateChanged', licquidDate);\r\n            }\r\n        } else {\r\n            var hadDate = !!this.date;\r\n\r\n            this.date = null;\r\n\r\n            this.input.clearValue();\r\n\r\n            if (hadDate) {\r\n                this.triggerEventIfEnabled('deselected');\r\n                this.triggerEventIfEnabled('changed');\r\n                this.triggerEventIfEnabled('timeChanged');\r\n                this.triggerEventIfEnabled('dateChanged');\r\n            }\r\n        }\r\n\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    DateInput.prototype.getCurrentDateAsLicquidDate = function () {\r\n        if (!this.date) return null;\r\n        return this.formatter.formatLicquidDate(this.date);\r\n    };\r\n\r\n    DateInput.prototype.setPlaceholder = function (val) {\r\n        if (this.input && this.input.$dateInput) \r\n            this.input.$dateInput.attr('placeholder', val);\r\n    }\r\n\r\n    return DateInput;\r\n});\r\n\n","define('drops/documentView/documentView',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'lq/imageSize',\r\n    'lq'\r\n], function ($, Drop, Style, util, imageSize, lq) {\r\n    'use strict';\r\n\r\n    // NOTE THIS IS NOT FINAL CODE, THIS DROP NEEDS TO BE REMOVED LATER ON\r\n    // BE CAREFUL: UGLY CODE!!\r\n    function DocumentView(options) {\r\n        Drop.call(this, $('<div/>'), options);\r\n\r\n        var self = this;\r\n        \r\n        self.$element\r\n            .css({\r\n                whiteSpace: 'pre-wrap'\r\n            });\r\n        \r\n        Style.renderStyles(self);\r\n\r\n        self.$element\r\n            .height(self.data.size.y)\r\n            .width(self.data.size.x);\r\n      \r\n        self.$a = $('<a/>')\r\n            .css({\r\n                display: 'inline-block'\r\n            })\r\n            .height(self.data.size.y)\r\n            .width(self.data.size.x)\r\n            .appendTo(self.$element);\r\n\r\n        self.$span = $('<span/>')\r\n                    .css({\r\n                        height: self.data.size.y + 'px'\r\n                    })\r\n            .appendTo(self.$a);\r\n        \r\n        self.$img = $('<img/>')\r\n            .css({\r\n                verticalAlign: 'middle'\r\n            })\r\n            .height(self.data.iconSize)\r\n            .width(self.data.iconSize)\r\n            .appendTo(self.$span);\r\n\r\n        if (self.data.downloadText) {\r\n            self.$spanDownloadText = $('<span/>')\r\n                .css({\r\n                    display: 'inline-block',\r\n                    verticalAlign: 'middle',\r\n                    paddingLeft: '4px'\r\n                })\r\n                .text(self.data.downloadText)\r\n                .appendTo(self.$span);\r\n        }\r\n\r\n        if (!self.data.showIcon) {\r\n            self.$img.hide();\r\n            \r\n            if (self.data.downloadText) {\r\n            \tself.$spanDownloadText\r\n\t\t\t\t\t.css({\r\n\t\t\t\t\t\tpaddingLeft: '0px'\r\n\t\t\t\t\t});\r\n            }\r\n        }\r\n        self.hide();\r\n       \r\n        return self;\r\n    };\r\n\r\n    Drop.extend(DocumentView, Drop);\r\n\r\n    DocumentView.typeName = 'DocumentView';\r\n\r\n    DocumentView.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n    };\r\n\t\r\n\tDocumentView.prototype.clearValue = function () {\r\n        // todo : don't know what to clear here\r\n    };\r\n\r\n    DocumentView.prototype.setValue = function(update) {\r\n        var value = util.convertListOfKeyValuesToObject(update.value);\r\n        var self = this;\r\n\r\n        var url;\r\n        var filename = '';\r\n\r\n        if (!value) {\r\n            return;\r\n        } else if ($.type(value) === 'string') {\r\n            url = value;\r\n        } else {\r\n            url = value.url || value.Url;\r\n            filename = value.filename || value.Filename;\r\n        }\r\n\r\n        if (url) {\r\n            self.$a.show();\r\n\r\n            // If filename exists, set filename parameter\r\n            if (filename) {\r\n                filename = '&filename=' + filename;\r\n            }\r\n\r\n            var openInBrowser = '';\r\n            // If the behaviour is either currentTab or newTab set the openInBrowser parameter to true\r\n            if (self.data.behaviour === 'currentTab' || self.data.behaviour === 'newTab') {\r\n                openInBrowser = '&openInBrowser=true';\r\n            }\r\n\r\n            self.$a.attr('href', lq.getTenantUrl('DynamicContent/DownloadFile?url=' + url + filename + openInBrowser));\r\n\r\n            var requiredSize = imageSize.forElement(self.data.size);\r\n            var src = lq.getTenantUrl('DynamicContent/Thumbnail/' + url + \"?width=\" + requiredSize.x + \"&height=\" + requiredSize.y + \"&filetype=png&isMaxSize=true\");\r\n            self.$img.attr('src', src);\r\n\r\n            //prevents clickthrough on listitems\r\n            self.$a.on('click', function (event) {\r\n                if (event.stopPropagation) { // W3C/addEventListener()\r\n                    event.stopPropagation();\r\n                } else { // Older IE.\r\n                    event.cancelBubble = true;\r\n                }\r\n            })\r\n\r\n        } else {\r\n            self.$a.hide();\r\n        }\r\n        self.show();\r\n    };\r\n    \r\n    return DocumentView;\r\n});\n","define('drops/dropdown/dropdown',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'underscore',\r\n    'lq/tooltip',\r\n    'lq/html',\r\n    'lq/required'\r\n], function ($, Drop, Style, util, _, Tooltip, html, Required) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            showEmptyItem: true,\r\n            title: {\r\n                option: Tooltip.hardcoded\r\n            },\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded'\r\n            }\r\n        }\r\n    };\r\n\r\n    function Dropdown(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing);\r\n        this.loaded = false;\r\n        this.value = null;\r\n        this.valueIsNumber = false;\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize')\r\n            .css({\r\n                whiteSpace: 'pre-wrap'\r\n            });\r\n\r\n        var self = this;\r\n        this.$dropDown = $('<select />')\r\n            .css({\r\n                width: '100%',\r\n                height: '100%',\r\n                textOverflow: 'ellipsis'\r\n            })\r\n            .on('change', this.valueChanged.bind(this))\r\n            .attr('tabindex', self.data.tabIndex)\r\n            .appendTo(self.$element);\r\n\r\n        if (this.data.showEmptyItem) {\r\n            this.$dropDown.addClass('dropdown-placeholder');\r\n        }\r\n\r\n        Style.renderStyles(this, null, this.$dropDown);\r\n\r\n        if (this.data.readOnly)\r\n            this.$dropDown.prop('disabled', true);\r\n\r\n        this.$dropDown.on('change', function () {\r\n            if (self.$dropDown.val()) {\r\n                var arg = self.$dropDown.val();\r\n                self.triggerEventIfEnabled('selected', arg);\r\n                self.triggerEventIfEnabled('changed', arg);\r\n            } else {\r\n                self.triggerEventIfEnabled('deselected', null);\r\n                self.triggerEventIfEnabled('changed', null);\r\n            }\r\n        });\r\n\r\n        this.$dropDown.on('change', function () {\r\n            self.updateRequiredIndicator();\r\n        });\r\n\r\n        this.tooltip = new Tooltip(this, this.data.title, this.$dropDown);\r\n    };\r\n\r\n    Drop.extend(Dropdown, Drop);\r\n\r\n    Dropdown.typeName = 'Dropdown';\r\n\r\n    Dropdown.prototype.preRender = function () {\r\n        var self = this;\r\n        this.tooltip.update();\r\n        this.piping.visibility.apply(this);\r\n        this.piping.required.apply(this, function(requiredData) {\r\n            if (requiredData && self.defaultOption) {\r\n                self.defaultOption.css({display: 'none'});\r\n            } else if (self.defaultOption) {\r\n                self.defaultOption.css({display: ''});\r\n            } else {\r\n                self.requiredInitialState = requiredData;\r\n            }\r\n        });\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.dataSource,\r\n            function (data) { self._update(data); },\r\n            function (params) {\r\n                if (self.data.pageSize) {\r\n                    params.pageSize = self.data.pageSize;\r\n                }\r\n            });\r\n        Required.prototype.addRemoveRequiredIndicator(self);\r\n\r\n        this.applyPosition();\r\n        this.renderMockData();\r\n    };\r\n\r\n    Dropdown.prototype.postRender = function () {\r\n        this.$dropDown.css('padding-right', 'max(23px, ' + this.$dropDown.css('padding-right') + ')');\r\n    };\r\n\r\n    Dropdown.prototype.valueChanged = function() {\r\n        var val = this.$dropDown.val();\r\n        \r\n        if (val === '') {\r\n            this.value = null;\r\n            this.$dropDown.addClass('dropdown-placeholder');\r\n        } else {\r\n            this.value = val;\r\n            this.$dropDown.removeClass('dropdown-placeholder');\r\n        }\r\n    };\r\n\r\n    Dropdown.prototype.createEmptyItem = function() {\r\n        this.defaultOption = $('<option />')\r\n            .val('')\r\n            .text(this.data.emptyItemText || '...')\r\n            .addClass('dropdown-placeholder');\r\n\r\n        if (this.requiredInitialState) {\r\n            this.defaultOption.css({display: 'none'});\r\n        }\r\n        return this.defaultOption;\r\n    };\r\n\r\n    Dropdown.prototype.renderMockData = function () {\r\n        if (this.data.showEmptyItem)\r\n            this.$dropDown.append(this.createEmptyItem());\r\n\r\n        if (!this.data.mockData) return;\r\n\r\n        this.$dropDown.append(_.map(this.data.mockData.split('\\n'), function(item) {\r\n            return $('<option />', {\r\n                value: item,\r\n                text: item\r\n            });\r\n        }));\r\n    };\r\n\r\n    Dropdown.prototype._update = function (data) {\r\n        this.loaded = true;\r\n\r\n        this.$dropDown\r\n            .find('option')\r\n            .remove()\r\n            .end();\r\n\r\n        if(this.data.showEmptyItem)\r\n            this.$dropDown.append(this.createEmptyItem());\r\n\r\n        var self = this;\r\n        $.each(data.results, function (key, result) {\r\n            var val = result[self.data.selectedKeyColumn || 'Id'];\r\n            self.valueIsNumber = (typeof val === 'number');\r\n\r\n            var $option = $('<option />', {\r\n                value: val,\r\n                text: html.strip(self.getDisplayStringFromResult(result))\r\n            });\r\n\r\n            Style.renderStyles(self, null, $option);\r\n\r\n            $option.appendTo(self.$dropDown);\r\n        });\r\n\r\n        if (this.value)\r\n            this.setValue({ value: this.value });\r\n        else\r\n            this.selectFirstItem();\r\n    };\r\n\r\n    Dropdown.prototype.getDisplayStringFromResult = function (result) {\r\n        var column = this.getNameOfDisplayedColumn(result);\r\n        return result[column];\r\n    };\r\n\r\n    Dropdown.prototype.getNameOfDisplayedColumn = function (result) {\r\n        var keys = Object.keys(result);\r\n        if (keys.length === 1) {\r\n            return keys[0];\r\n        }\r\n        if (keys.indexOf(this.data.selectedColumnToShow) !== -1) {\r\n            return this.data.selectedColumnToShow;\r\n        }\r\n        if (keys[0].toUpperCase() !== \"ID\") {\r\n            return keys[0];\r\n        }\r\n        return keys[1];\r\n    };\r\n\r\n    Dropdown.prototype.focus = function () {\r\n        this.$dropDown.trigger('focus');\r\n    };\r\n\r\n    Dropdown.prototype.getValue = function () {\r\n        if (this.valueIsNumber && this.value !== null)\r\n            return parseInt(this.value);\r\n        return this.value === undefined\r\n            ? null\r\n            : this.value;\r\n    };\r\n\r\n    Dropdown.prototype.clearValue = function () {\r\n        if (this.data.showEmptyItem) {\r\n            this.value = null;\r\n            var self = this;\r\n            setTimeout(function() {\r\n                self.$dropDown.val('');\r\n                self.$dropDown.addClass('dropdown-placeholder');\r\n            });\r\n        } else {\r\n            this.selectFirstItem();\r\n        }\r\n\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    Dropdown.prototype.selectFirstItem = function () {\r\n        var firstOption = this.$dropDown.find('option:first');\r\n        this.$dropDown.val(firstOption.val());\r\n        this.valueChanged();\r\n    };\r\n\r\n    Dropdown.prototype.setValue = function (update) {\r\n        if (!this.loaded) {\r\n            this.value = update.value;\r\n        } else {\r\n            if (update.value !== null && update.value !== undefined) {\r\n                var option = _.find(this.$dropDown.children(), function(option) {\r\n                    return option.value === update.value.toString();\r\n                });\r\n\r\n                if (option) {\r\n                    this.value = update.value;\r\n                    var self = this;\r\n\r\n                    if (this.value === '') {\r\n                        this.$dropDown.addClass('dropdown-placeholder');\r\n                    } else {\r\n                        this.$dropDown.removeClass('dropdown-placeholder');\r\n                    }\r\n\r\n                    // in some cases the correct item might not be selected if we don't add a timeout\r\n                    setTimeout(function() {\r\n                        self.$dropDown.val(update.value.toString());\r\n                        self.updateRequiredIndicator();\r\n                    });\r\n                } else {\r\n                    this.triggerEventIfEnabled('valueNotFound', update.value);\r\n                    if(!this.isEventEnabled('valueNotFound')) {\r\n                        alert('A value was mapped onto a drop down list, but the corresponding item was not found in the list. Saving this form will cause you to lose this information.');\r\n                    }\r\n\r\n                    this.clearValue();\r\n                }\r\n            } else {\r\n                this.clearValue();\r\n            }\r\n        }\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    return Dropdown;\r\n});\r\n\r\n\r\n\r\n\n","define('drops/dropField/dropField',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'underscore'\r\n], function ($, Drop, Style, _) {\r\n    'use strict';\r\n\r\n    var fileDroppedEvent = 'fileDropped';\r\n\r\n    function DropField(options) {\r\n        Drop.call(this, $('<div />'), null, options);\r\n\r\n        Style.renderStyles(this, null, this.$element);\r\n    };\r\n\r\n    Drop.extend(DropField, Drop);\r\n\r\n    DropField.typeName = 'DropField';\r\n\r\n    DropField.prototype.preRender = function () {\r\n        this.applyPosition();\r\n\r\n        this.preventDefaultEventHandlers();\r\n\r\n        if (this.isEventEnabled(fileDroppedEvent)) {\r\n            this.addDropEventHandler();\r\n        }\r\n    };\r\n\r\n    DropField.prototype.preventDefaultEventHandlers = function () {\r\n        this.$element.on('dragover', function (e) {\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n        });\r\n        this.$element.on('dragenter', function (e) {\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n        });\r\n        this.$element.on('dragleave', function (e) {\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n        });\r\n    };\r\n\r\n    DropField.prototype.addDropEventHandler = function () {\r\n        var self = this;\r\n        this.$element.on('drop', function (e) {\r\n            if (e.originalEvent.dataTransfer) {\r\n                if (e.originalEvent.dataTransfer.files.length) {\r\n                    e.preventDefault();\r\n                    e.stopPropagation();\r\n\r\n                    _.each(e.originalEvent.dataTransfer.files, function (file) {\r\n                        self.triggerEvent(self.data.eventing[fileDroppedEvent].raisedEventName, file);\r\n                    });\r\n                }\r\n            }\r\n        });\r\n    };\r\n\r\n    return DropField;\r\n});\n","define('drops/dynamicBarcode/dynamicBarcode',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/util',\r\n    'lq'\r\n], function ($, Drop, util, lq) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            code: '12345678955'\r\n        }\r\n    };\r\n\r\n    function DynamicBarcode(options) {\r\n        Drop.call(this, $('<div />'), defaults, options);\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize')\r\n            .css({\r\n                'background-repeat': 'no-repeat',\r\n                'background-size': '100% 100%'\r\n            });\r\n\r\n        return this;\r\n    };\r\n\r\n    Drop.extend(DynamicBarcode, Drop);\r\n\r\n    DynamicBarcode.typeName = 'DynamicBarcode';\r\n\r\n    DynamicBarcode.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n    };\r\n\r\n    DynamicBarcode.prototype.generate = function (url) {\r\n        this.$element.css('background-image', 'url(' + url + ')');\r\n    };\r\n\r\n    DynamicBarcode.prototype.clearValue = function () {\r\n        this.$image.empty();\r\n    };\r\n\r\n    DynamicBarcode.prototype.setValue = function (update) {\r\n        var value = util.convertListOfKeyValuesToObject(update.value);\r\n\r\n        if (!value) {\r\n            this.clearValue();\r\n        } else {\r\n            this.data.code = value;\r\n            this.generate(this.getImageUrl());\r\n        }\r\n    };\r\n\r\n    DynamicBarcode.prototype.getImageUrl = function () {\r\n        return lq.getTenantUrl('GeneratedContent/DynamicBarcode/'\r\n            + '?actionId=' + this.rootDrop.data.id\r\n            + '&barcodeId=' + this.data.id\r\n            + '&code=' + this.data.code\r\n            + '&barcodeType=' + this.data.barcodeType\r\n            + '&width=' + this.data.size.x\r\n            + '&height=' + this.data.size.y);\r\n    };\r\n\r\n    return DynamicBarcode;\r\n});\n","define('drops/dynamicIframe/dynamicIframe',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style'\r\n], function ($, Drop, Style) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            scrolling: 'auto',\r\n            eventsToCatch: []\r\n        }\r\n    };\r\n    \r\n    function DynamicIframe(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n        var self = this;\r\n\r\n        self.$iframe = $('<iframe />')\r\n            .attr('allow', self.getAllowedFeatures())\r\n            .attr('scrolling', self.data.scrolling)\r\n            .css({\r\n                width: '100%',\r\n                height: '100%',\r\n                border: 0\r\n            })\r\n            .appendTo(self.$element);\r\n        \r\n        self.$element\r\n\t        .addClass('boxToBorderSize')\r\n\t        .css({\r\n\t            whiteSpace: 'pre-wrap'\r\n\t        });\r\n\r\n        Style.renderStyles(self);\r\n\r\n        this.listenForMessage(function (e) {\r\n            // staying backwards compatible with existing custom code\r\n            var args = e.args ? e.args[0] : null;\r\n            self.triggerEvent(self.data.id + '.' + e.eventName, args);\r\n        });\r\n\r\n        return self;\r\n    };\r\n\r\n    Drop.extend(DynamicIframe, Drop);\r\n\r\n    DynamicIframe.typeName = 'DynamicIframe';\r\n\r\n    DynamicIframe.prototype.getAllowedFeatures = function () {\r\n        var features = [];\r\n\r\n        if (this.data.allowCamera)\r\n            features.push('camera');\r\n\r\n        if (this.data.allowMicrophone)\r\n            features.push('microphone');\r\n\r\n        return features.join(';');\r\n    };\r\n\r\n    DynamicIframe.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n    };\r\n    \r\n    DynamicIframe.prototype.clearValue = function () {\r\n        this.$element\r\n            .hide();\r\n    };\r\n\r\n    DynamicIframe.prototype.setValue = function (update) {\r\n        this.$iframe.attr('src', update.value);\r\n\r\n        if (update.value === null || update.value === undefined || update.value === '') {\r\n            this.$iframe.hide();\r\n        } else {\r\n            this.$iframe.show();\r\n        }\r\n    };\r\n\r\n    // backwards compatibility\r\n    DynamicIframe.prototype.getValue = function () {\r\n        if (this.$iframe) {\r\n            return this.$iframe.attr('src');\r\n        }\r\n\r\n        return null;\r\n    };\r\n\r\n    DynamicIframe.prototype.listenForMessage = function (callback) {\r\n        var eventMethod = window.addEventListener ? 'addEventListener' : 'attachEvent';\r\n        var messageEvent = window.addEventListener ? 'message' : 'onmessage';\r\n        var self = this;\r\n\r\n        window[eventMethod](messageEvent, function (e) {\r\n            if (e.source !== self.$iframe.get(0).contentWindow)\r\n                return;\r\n            try {\r\n                var eventObj = JSON.parse(e.data);\r\n                callback(eventObj);\r\n            } catch (err) {\r\n                //could not parse, ignore it\r\n            }\r\n\r\n        }, false);\r\n    };\r\n\r\n    DynamicIframe.prototype.triggerEventForChild = function (eventObj) {\r\n        this.$iframe.get(0).contentWindow.postMessage(JSON.stringify(eventObj), \"*\");\r\n    };\r\n\r\n    DynamicIframe.prototype.show = function() {\r\n        this.$iframe\r\n            .css('display', 'inherit');\r\n\r\n        Drop.prototype.show.call(this);\r\n    };\r\n\r\n    DynamicIframe.prototype.hide = function() {\r\n        // drops that are not visible have 'visibility' set to 'hidden'\r\n        // but in some browser (e.g. Safari) the still block events when hidden\r\n        this.$iframe\r\n            .attr('src', '')\r\n            .css('display', 'none');\r\n\r\n        Drop.prototype.hide.call(this);\r\n    };\r\n\r\n    return DynamicIframe;\r\n});\n","define('drops/dynamicImage/dynamicImage',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'lq/tooltip',\r\n    'lq/dynamicContentImage',\r\n    'lq',\r\n    'lq/imageSize',\r\n    'lq/onlongpress'\r\n], function ($, Drop, Style, util, Tooltip, dynamicContentImage, lq, imageSize, OnLongPress) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            horizontalImageAlignment: 'center',\r\n            verticalImageAlignment: 'center',\r\n            thumbnailFileType: 'png',\r\n            selectedResizeOption: 'Stretch Image',\r\n            title: {\r\n                option: Tooltip.hardcoded\r\n            },\r\n            notOptimise: false,\r\n            optimisationLevel: 0\r\n        }\r\n    };\r\n\r\n    function DynamicImage(options) {\r\n        Drop.call(this, $('<div />'), defaults, options);\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing) || {};\r\n\r\n        this.$image = $('<div />')\r\n            .css({\r\n                'width': '100%',\r\n                'height': '100%',\r\n                'overflow': 'hidden'\r\n            })\r\n            .appendTo(this.$element);\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize');\r\n\r\n        this.$image\r\n            .addClass('loading');\r\n\r\n        Style.renderStyles(this, null, this.$image);\r\n\r\n        this.tooltip = new Tooltip(this, this.data.title, this.$image);\r\n\r\n        this.hideWhenNecessary();\r\n\r\n        this.applyEventTrigger('mouseEnter', 'mouseenter');\r\n        this.applyEventTrigger('mouseLeave', 'mouseleave');\r\n    };\r\n\r\n    Drop.extend(DynamicImage, Drop);\r\n\r\n    DynamicImage.typeName = 'DynamicImage';\r\n\r\n    DynamicImage.prototype.onResizeOptions = [\r\n        { key: 'Stretch Image', value: 'Stretch Image' },\r\n        { key: 'No-Resize', value: 'No-Resize' },\r\n        { key: 'Keep Ratio, Show Complete Image', value: 'Keep Ratio, Show Complete Image' },\r\n        { key: 'fillKeepRatio', value: 'Fill, keep ratio' }\r\n    ];\r\n\r\n    DynamicImage.prototype.horizontalAlignmentOptions = [\r\n        { key: 'left', value: 'Left' },\r\n        { key: 'center', value: 'Center' },\r\n        { key: 'right', value: 'Right' }\r\n    ];\r\n\r\n    DynamicImage.prototype.verticalAlignmentOptions = [\r\n        { key: 'top', value: 'Top' },\r\n        { key: 'center', value: 'Center' },\r\n        { key: 'bottom', value: 'Bottom' }\r\n    ];\r\n\r\n    DynamicImage.prototype.thumbnailFileTypes = [\r\n        { key: 'png', value: 'PNG (lossless)' },\r\n        { key: 'jpeg100', value: 'JPEG - highest quality' },\r\n        { key: 'jpeg75', value: 'JPEG - medium quality' },\r\n        { key: 'jpeg50', value: 'JPEG - low quality' },\r\n        { key: 'jpeg25', value: 'JPEG - very low quality' },\r\n        { key: 'jpeg10', value: 'JPEG - extreme low quality' },\r\n        { key: 'jpeg0', value: 'JPEG - max compression' }\r\n    ];\r\n\r\n    DynamicImage.prototype.preRender = function () {\r\n        this.tooltip.update();\r\n        this.piping.visibility.apply(this);\r\n\r\n        this.initialize();\r\n        this.setImageScaling();\r\n        this.applyPosition();\r\n    };\r\n\r\n    DynamicImage.prototype.initialize = function () {\r\n        new OnLongPress().applyLongPressOnElement(this.$element, this);\r\n\r\n        if (this.data.eventing.clicked && this.data.eventing.clicked.enabled === true) {\r\n            this.$element.addClass('clickable');\r\n        }\r\n    };\r\n\r\n    // todo unify Image and DynamicImage\r\n    DynamicImage.prototype.setImageScaling = function () {\r\n        if (this.data.selectedResizeOption === 'Stretch Image')\r\n            this.$image.css('background-size', '100% 100%');\r\n        else if (this.data.selectedResizeOption === 'Keep Ratio, Show Complete Image')\r\n            this.$image.css({\r\n                'background-size': 'contain',\r\n                'background-repeat': 'no-repeat',\r\n                'background-position': this.data.horizontalImageAlignment + ' ' + this.data.verticalImageAlignment\r\n            });\r\n        else if (this.data.selectedResizeOption === 'No-Resize')\r\n            this.$image.css({\r\n                // When generating a thumbnail for high resolution devices we have to generate an image that has\r\n                // twice the width and twice the height as the drop. In that case we can't set the size to 'auto'\r\n                // because that would give the image twice its size in the browser\r\n                'background-size': this.data.useThumbnail && imageSize.hasHighPixelRatio() ? 'contain' : 'auto',\r\n                'background-repeat': 'no-repeat'\r\n            });\r\n        else if (this.data.selectedResizeOption === 'fillKeepRatio')\r\n            this.$image.css({\r\n                'background-size': 'cover',\r\n                'background-repeat': 'no-repeat',\r\n                'background-position': this.data.horizontalImageAlignment + ' ' + this.data.verticalImageAlignment\r\n            });\r\n    };\r\n\r\n    DynamicImage.prototype.clearValue = function () {\r\n        this.$image\r\n            .css('background-image', '');\r\n        this.hideWhenNecessary();\r\n    };\r\n\r\n    DynamicImage.prototype.hideWhenNecessary = function () {\r\n        if (this.data.hideWhenEmpty)\r\n            this.hide();\r\n    };\r\n\r\n    DynamicImage.prototype.setValue = function (update) {\r\n        this.$image\r\n            .removeClass('loading');\r\n\r\n        var value = util.convertListOfKeyValuesToObject(update.value);\r\n\r\n        if (!value) {\r\n            this.clearValue();\r\n        } else if ($.type(value) === 'string') {\r\n            var regex = /data:image\\/[^;]+;base64[^\"]+/g;\r\n            if (value.match(regex)) {\r\n                this.updateImage('\"' + value + '\"', '');\r\n            } else {\r\n                var srcPath = this.getPathFromSrcString(value);\r\n                this.updateImage(srcPath, '');\r\n            }\r\n        } else {\r\n            var url = update.value.url || update.value.Url;\r\n\r\n            if (url) {\r\n                var documentPath = this.getPathFromSrcString(url);\r\n\r\n                if (documentPath)\r\n                    this.updateImage(documentPath, update.value.filename || update.value.Filename);\r\n                else\r\n                    this.clearValue();\r\n            }\r\n        }\r\n    };\r\n\r\n    DynamicImage.prototype.updateImage = function(src, alt) {\r\n        this.$image\r\n            .css('background-image', 'url(' + src + ')')\r\n            .attr('alt', alt);\r\n\r\n        if (this.data.hideWhenEmpty)\r\n            this.show();\r\n    };\r\n\r\n    DynamicImage.prototype.getPathFromSrcString = function (src) {\r\n        return dynamicContentImage.getPath({\r\n            imageName: src,\r\n            useThumbnail: this.data.useThumbnail,\r\n            resizeOption: this.data.selectedResizeOption,\r\n            thumbnailFileType: this.data.thumbnailFileType,\r\n            size: this.data.size\r\n        });\r\n    };\r\n\r\n    return DynamicImage;\r\n});\n","define('drops/dynamicSlideshow/dynamicSlideshow',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'lq/imageSize',\r\n    'lq',\r\n    'underscore',\r\n    'lq/required'\r\n], function ($, Drop, Style, util, imageSize, lq, _, Required) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded'\r\n            }\r\n        }\r\n    };\r\n\r\n    var movements = {\r\n        next: 'next',\r\n        previous: 'previous',\r\n        none: 'none'\r\n    };\r\n\r\n    function DynamicSlideshow(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing) || {};\r\n\r\n        this.inTransition = false;\r\n        this.transitionsQueue = [];\r\n        this.results = null;\r\n        this.currentIndex = null;\r\n        this.deferredUpdate = null;\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize dynamic-slideshow');\r\n\r\n        this.$imageWrapper = $('<div class=\"dynamic-slideshow-image\" />')\r\n            .appendTo(this.$element);\r\n\r\n        this._addPanels();\r\n\r\n        Style.renderStyles(this);\r\n    };\r\n\r\n    Drop.extend(DynamicSlideshow, Drop);\r\n\r\n    DynamicSlideshow.typeName = 'DynamicSlideshow';\r\n\r\n    DynamicSlideshow.prototype.preRender = function () {\r\n        var self = this;\r\n        this.piping.visibility.apply(this);\r\n        this.piping.required.apply(this);\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.dataSource,\r\n            function(data) {\r\n                 self.update(data);\r\n            });\r\n\r\n        this.formatter = this.piping.formatting.createFormatter(this.data.formatting);\r\n        this.applyPosition();\r\n    };\r\n\r\n    DynamicSlideshow.prototype.startAutoSlide = function() {\r\n        if (!this.data.autoTransition) return;\r\n        this.cancelAutoSlide();\r\n        this.autoTransitionTimer = _.delay(this._next.bind(this, this), this.data.transitionDelay * 1000);\r\n    };\r\n\r\n    DynamicSlideshow.prototype.cancelAutoSlide = function () {\r\n        if (this.data.autoTransition)\r\n            clearTimeout(this.autoTransitionTimer);\r\n    };\r\n\r\n    DynamicSlideshow.prototype.update = function (update) {\r\n        this.cancelAutoSlide();\r\n\r\n        var previousResults = this.results;\r\n        this.results = update.results;\r\n\r\n        if (this.results.length > 0) {\r\n            if (this.deferredUpdate) {\r\n                this.setValue(this.deferredUpdate);\r\n                this.deferredUpdate = null;\r\n                return;\r\n            }\r\n\r\n            if (this.currentIndex != null) {\r\n                if (previousResults.length > 0) {\r\n                    var keyOfCurrentImage = previousResults[this.currentIndex][this.data.selectedKeyField];\r\n                    var index = this.getIndexOfRowWithKey(keyOfCurrentImage);\r\n\r\n                    if (index !== null)\r\n                        this._setImage(index, false, movements.none);\r\n                    else\r\n                        this._setImage(0, true, movements.none);\r\n                } else {\r\n                    this.currentIndex = null;\r\n                }\r\n            } else {\r\n                this._setImage(0, true, movements.none);\r\n            }\r\n        }\r\n    };\r\n\r\n    DynamicSlideshow.prototype._next = function () {\r\n        if (!this.results || this.results.length === 0)\r\n            return;\r\n\r\n        var nextIndex = this.currentIndex + 1;\r\n        if (this.results[nextIndex]) {\r\n            this._setImage(nextIndex, true, movements.next);\r\n        } else {\r\n            this._setImage(0, true, movements.next);\r\n        }\r\n    };\r\n\r\n    DynamicSlideshow.prototype._previous = function () {\r\n        if (!this.results || this.results.length === 0)\r\n            return;\r\n\r\n        var previousIndex = this.currentIndex - 1;\r\n        if (this.results[previousIndex]) {\r\n            this._setImage(previousIndex, true, movements.previous);\r\n        } else {\r\n            this._setImage(this.results.length - 1, true, movements.previous);\r\n        }\r\n    };\r\n\r\n    DynamicSlideshow.prototype._setImage = function (index, withEvent, movement) {\r\n        var self = this;\r\n        self.inTransition = true;\r\n        self.currentIndex = index;\r\n        var value = util.convertListOfKeyValuesToObject(self.results[index][self.data.selectedDocumentField]);\r\n        if (!value) {\r\n            return;\r\n        }\r\n        var url = value.url || value.Url;\r\n        if (url.length !== 0) {\r\n            var imageTypes = ['png', 'jpg', 'gif', 'tiff', 'jpeg', 'bmp', 'pdf'];\r\n            var extension = url.substr(url.lastIndexOf('.') + 1, url.length - url.lastIndexOf('.')).toLowerCase();\r\n\r\n            var filePath = lq.getTenantUrl('DynamicContent/File/' + url);\r\n\r\n            if (imageTypes.indexOf(extension) === -1) {\r\n                filePath = lq.getTenantUrl('DynamicContent/Icon/' + url);\r\n            } else if (self.data.useThumbnail) {\r\n                var requiredSize = imageSize.forElement(self.data.size);\r\n                filePath = lq.getTenantUrl('DynamicContent/Thumbnail/' + url + '?width=' + requiredSize.x + '&height=' + requiredSize.y + '&filetype=png&isMaxSize=true');\r\n            }\r\n\r\n            // prefetch the image and wait until it's actually loaded\r\n            $('<img/>').attr('src', filePath).on('load', function () {\r\n                $(this).remove();\r\n\r\n                var $image = $('<div class=\"dynamic-slideshow-image\" />')\r\n                    .attr('title', self.data.title);\r\n\r\n                if (self.data.selectedResizeOption === 'Stretch Image')\r\n                    $image.css('background-size', '100% 100%');\r\n                else if (self.data.selectedResizeOption === 'Keep Ratio, Show Complete Image')\r\n                    $image.css({\r\n                        'background-size': 'contain',\r\n                        'background-repeat': 'no-repeat',\r\n                        'background-position': 'center'\r\n                    });\r\n                else if (self.data.selectedResizeOption === 'No-Resize')\r\n                    $image.css({\r\n                        // When generating a thumbnail for high resolution devices we have to generate an image that has\r\n                        // twice the width and twice the height as the drop. In that case we can't set the size to 'auto'\r\n                        // because that would give the image twice its size in the browser\r\n                        'background-size': self.data.useThumbnail && imageSize.hasHighPixelRatio() ? 'contain' : 'auto',\r\n                        'background-repeat': 'no-repeat',\r\n                        'background-position': 'center'\r\n                    });\r\n\r\n                $image.css('background-image', 'url(' + filePath + ')');\r\n\r\n                var $previous = self.$imageWrapper.children();\r\n\r\n                var hideAnimation = self.getHideAnimation(movement);\r\n                if (hideAnimation && hideAnimation !== \"none\") {\r\n                    $previous.addClass('animated ' + hideAnimation);\r\n                    $previous.one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend',\r\n                        function() {\r\n                            $previous.remove();\r\n                        });\r\n                } else {\r\n                    $previous.remove();\r\n                }\r\n\r\n                self.$imageWrapper\r\n                    .prepend($image);\r\n\r\n                var showAnimation = self.getShowAnimation(movement);\r\n                if (showAnimation && showAnimation !== \"none\") {\r\n                    $image.addClass('animated ' + showAnimation);\r\n                    $image.one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend',\r\n                        function() {\r\n                            $image.removeClass('animated ' + showAnimation);\r\n                            self.inTransition = false;\r\n                            self.runNextInQueue();\r\n                        });\r\n                } else {\r\n                    self.inTransition = false;\r\n                    self.runNextInQueue();\r\n                }\r\n\r\n                if (withEvent === true) {\r\n                    if (self.isEventEnabled('displayed')) {\r\n                        var arg = self.data.selectedKeyField ? self.results[index][self.data.selectedKeyField] : null;\r\n                        self.triggerEvent(self.data.eventing.displayed.raisedEventName, arg);\r\n                    }\r\n                }\r\n\r\n                self.startAutoSlide();\r\n            });\r\n        }\r\n    };\r\n\r\n    DynamicSlideshow.prototype.getShowAnimation = function(movement) {\r\n        if (movement === movements.next)\r\n            return this.data.nextShowAnimation;\r\n        if (movement === movements.previous)\r\n            return this.data.previousShowAnimation;\r\n        return null;\r\n    };\r\n\r\n    DynamicSlideshow.prototype.getHideAnimation = function (movement) {\r\n        if (movement === movements.next)\r\n            return this.data.nextHideAnimation;\r\n        if (movement === movements.previous)\r\n            return this.data.previousHideAnimation;\r\n        return null;\r\n    };\r\n\r\n    DynamicSlideshow.prototype.getLeftImage = function() {\r\n        return this.data.leftButtonImage\r\n            ? lq.getTenantUploads(this.data.leftButtonImage)\r\n            : lq.getCdnUrl('drops/dynamicSlideshow/left-arrow.png');\r\n    };\r\n\r\n    DynamicSlideshow.prototype.getRightImage = function () {\r\n        return this.data.rightButtonImage\r\n            ? lq.getTenantUploads(this.data.rightButtonImage)\r\n            : lq.getCdnUrl('drops/dynamicSlideshow/right-arrow.png');\r\n    };\r\n\r\n    DynamicSlideshow.prototype._addPanels = function () {\r\n        var self = this;\r\n\r\n        self.$leftArrow = $('<div />')\r\n            .css({\r\n                backgroundImage: 'url(' + this.getLeftImage() + ')',\r\n                width: '33%',\r\n                height: '100%',\r\n                float: 'left',\r\n                backgroundRepeat: 'no-repeat',\r\n                backgroundPosition: 'left 10px center',\r\n                position: 'relative',\r\n                zIndex: '3',\r\n                opacity: '0.6'\r\n            })\r\n            .attr('unselectable', 'on')\r\n            .on('mouseenter', function () {\r\n                $(this).css({\r\n                    opacity: '1'\r\n                });\r\n            })\r\n            .on('mouseleave', function () {\r\n                $(this).css({\r\n                    opacity: '0.6'\r\n                });\r\n            })\r\n            .on('click', function () {\r\n                self.queue(function () {\r\n                    self._previous();\r\n                });\r\n            })\r\n            .appendTo(self.$element);\r\n\r\n        var $centerclick = $('<div />')\r\n            .css({\r\n                width: '34%',\r\n                height: '100%',\r\n                'float': 'left',\r\n                position: 'relative',\r\n                zIndex: '3'\r\n            })\r\n            .attr('unselectable', 'on')\r\n            .appendTo(self.$element);\r\n\r\n        if (self.data.eventing.selected && self.data.eventing.selected.enabled === true) {\r\n            $centerclick\r\n                .on('click', function () {\r\n                    if (!self.piping) return;\r\n                    var arg = self.data.selectedKeyField && self.results ? self.results[self.currentIndex][self.data.selectedKeyField] : null;\r\n                    self.piping.eventing.publish(self.data.eventing.selected.raisedEventName, self.$element, arg);\r\n                });\r\n        }\r\n\r\n        self.$rightArrow = $('<div />')\r\n            .css({\r\n                backgroundImage: 'url(' + this.getRightImage() + ')',\r\n                width: '33%',\r\n                height: '100%',\r\n                float: 'left',\r\n                backgroundRepeat: 'no-repeat',\r\n                backgroundPosition: 'right 10px center',\r\n                position: 'relative',\r\n                zIndex: '3',\r\n                opacity: '0.6'\r\n            })\r\n            .attr('unselectable', 'on')\r\n            .on('mouseenter', function () {\r\n                $(this).css({\r\n                    opacity: '1'\r\n                });\r\n            })\r\n            .on('mouseleave', function () {\r\n                $(this).css({\r\n                    opacity: '0.6'\r\n                });\r\n            })\r\n            .on('click', function () {\r\n                self.queue(function() {\r\n                    self._next();\r\n                });\r\n            })\r\n            .appendTo(self.$element);\r\n    };\r\n\r\n    DynamicSlideshow.prototype.queue = function (callback) {\r\n        if (this.inTransition) {\r\n            this.transitionsQueue.push(callback);\r\n        } else {\r\n            callback();\r\n        }\r\n    };\r\n\r\n    DynamicSlideshow.prototype.runNextInQueue = function () {\r\n        if (this.transitionsQueue.length === 0) return;\r\n        var callback = this.transitionsQueue.shift();\r\n        callback();\r\n    };\r\n\r\n    DynamicSlideshow.prototype.getValue = function () {\r\n        if (this.data.selectedKeyField && this.currentIndex) {\r\n            return this.results[this.currentIndex][this.data.selectedKeyField];\r\n        }\r\n\r\n        return undefined;\r\n    };\r\n\r\n    DynamicSlideshow.prototype.clearValue = function () {\r\n        if (this.results.length > 0) {\r\n            this._setImage(0, true, movements.none);\r\n        }\r\n    };\r\n\r\n    DynamicSlideshow.prototype.setValue = function (update) {\r\n        if (update.value && this.data.selectedKeyField) {\r\n            if (this.results) {\r\n                var index = this.getIndexOfRowWithKey(update.value);\r\n                if (index !== null) {\r\n                    this._setImage(index, true, movements.none);\r\n                }\r\n            } else {\r\n                this.deferredUpdate = update;\r\n            }\r\n        }\r\n    };\r\n\r\n    DynamicSlideshow.prototype.getIndexOfRowWithKey = function(key) {\r\n        for (var i = 0; i < this.results.length; i++) {\r\n            var rowId = this.results[i][this.data.selectedKeyField];\r\n            if (rowId === key) {\r\n                return i;\r\n            }\r\n        }\r\n\r\n        return null;\r\n    };\r\n\r\n    return DynamicSlideshow;\r\n});\n","define('lq/domainDefinitions',[], function () {\r\n    'use strict';\r\n\r\n    var DomainDefinitions = function () {\r\n        this.entityDefinitions = [];\r\n        this.indexDefinitions = [];\r\n        this.styles = [];\r\n    };\r\n    \r\n    DomainDefinitions.prototype.getDocumentEntityNames = function () {\r\n        return _.pluck(this.getDocumentEntityDefinitions(), 'name');\r\n    };\r\n\r\n    DomainDefinitions.prototype.getDocumentEntityDefinitions = function () {\r\n        return _.filter(this.entityDefinitions, function (entity) {\r\n            return entity.entityType === 'Licquid.Core.LicquidDocumentEntity' ||\r\n                entity.entityType === 'Licquid.Core.LicquidVersionedDocumentEntity';\r\n        });\r\n    };\r\n\r\n    return new DomainDefinitions();\r\n\r\n});\n","define('lq/richText',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/domainDefinitions',\r\n    'lq/style',\r\n    'lq/eventSource'\r\n], function ($, _, DomainDefinitions, Style, EventSource) {\r\n\r\n        var richTextStringPrefix = 'RICHTEXT:';\r\n\r\n        var isRichTextString = function (value) {\r\n            if (value === undefined || value === null || !value.substring || value.length <= richTextStringPrefix.length) return false;\r\n            return value.substring(0, richTextStringPrefix.length) == richTextStringPrefix;\r\n        };\r\n\r\n        var modelToRichTextString = function (richTextModel) {\r\n            return richTextStringPrefix + JSON.stringify(richTextModel);\r\n        };\r\n\r\n        var modelFromRichTextString = function (richTextString) {\r\n            return JSON.parse(richTextString.substring(richTextStringPrefix.length));\r\n        };\r\n\r\n        var convertToHtml = function (value) {\r\n            if (typeof value !== 'string') return value;\r\n\r\n            // http://stackoverflow.com/questions/5007574/rendering-plaintext-as-html-maintaining-whitespace-without-pre\r\n            // http://stackoverflow.com/questions/1219860/html-encoding-in-javascript-jquery\r\n            return value\r\n                .replace(/&/g, '&amp;')\r\n                .replace(/\"/g, '&quot;')\r\n                .replace(/'/g, '&#39;')\r\n                .replace(/</g, '&lt;')\r\n                .replace(/>/g, '&gt;')\r\n                .replace(/\\t/g, '    ')\r\n                .replace(/  /g, '&nbsp; ')\r\n                .replace(/  /g, ' &nbsp;')\r\n                .replace(/\\r\\n|\\n|\\r/g, '<br />');\r\n        };\r\n\r\n        var RichTextEditorSection = function (richTextEditor, content) {\r\n            var self = this;\r\n            self.richTextEditor = richTextEditor;\r\n\r\n            if (content) {\r\n                self.data = {\r\n                    styles: content.styleId,\r\n                    text: content.text\r\n                };\r\n            } else {\r\n                self.data = {\r\n                    styles: null,\r\n                    text: ''\r\n                };\r\n            }\r\n\r\n            self.$element = self.createRichTextEditorSection();\r\n            self.$viewer = self.createViewer(richTextEditor);\r\n        };\r\n\r\n        RichTextEditorSection.prototype.createRichTextEditorSection = function () {\r\n            return $('<div />')\r\n                .addClass('richTextEditorSection');\r\n        };\r\n\r\n        RichTextEditorSection.prototype.createViewer = function () {\r\n            var self = this;\r\n\r\n            var $viewer = $('<div />')\r\n                .addClass('richTextEditorSectionViewer')\r\n                .appendTo(self.$element);\r\n\r\n            if (this.richTextEditor.editable) {\r\n                $viewer\r\n                    .on('click', function () {\r\n                        self.openEditor();\r\n                    });\r\n            }\r\n\r\n            if (self.data.text !== '') {\r\n                $viewer.html(self.data.text);\r\n                Style.renderStyles(self, null, $viewer);\r\n            } else if (this.richTextEditor.editable) {\r\n                this.setPlaceholder($viewer);\r\n            }\r\n\r\n            return $viewer;\r\n        };\r\n\r\n        RichTextEditorSection.prototype.openEditor = function () {\r\n            var self = this;\r\n\r\n            self.$viewer.hide();\r\n\r\n            if (self.$editor) {\r\n                self.$editor.show();\r\n                self.$editor.trigger('focus');\r\n                return;\r\n            }\r\n\r\n            self.$editor = $('<div />')\r\n                .addClass('richTextEditorSectionEditor')\r\n                .appendTo(self.$element);\r\n\r\n            var $toolbar = this.buildToolbar()\r\n                .addClass('richTextEditorToolbar')\r\n                .appendTo(self.$editor);\r\n            \r\n            var $textAreaDiv = $('<div />')\r\n                .addClass('richTextEditorTextAreaDiv')\r\n                .appendTo(self.$editor);\r\n\r\n            var $textArea = $('<textarea/>')\r\n                .val(self.data.text)\r\n                .addClass('richTextEditingTextArea')\r\n                .css({\r\n                    width: '100%',\r\n                    'max-width': '100%'\r\n                })\r\n                .appendTo($textAreaDiv);\r\n\r\n            if (!self.richTextEditor.simpleRichTextEditor) {\r\n                $textAreaDiv\r\n                    .addClass('richTextEditorTextAreaDivFullMode');\r\n\r\n                $toolbar\r\n                    .addClass('richTextEditorToolbarFullMode');\r\n\r\n                this.buildStylesBar()\r\n                    .addClass('richTextEditorStylesBar')\r\n                    .appendTo(self.$editor);\r\n\r\n                this.buildSectionOperationsBar()\r\n                    .addClass('richTextEditorSectionOperationsBar')\r\n                    .appendTo(self.$editor);\r\n            }\r\n\r\n            // Only load the Wysihtml5 files when we actually need the editor. Rich text is used by both \r\n            // TextArea and DynamicText which both are used extensively, but the editor functionality \r\n            // is only used once in a while.\r\n            // Instead of fixing this here we should actually just get rid of this rich text editor.\r\n            require([\r\n                'Wysihtml5/wysihtml5-0.4.0pre',\r\n                'Wysihtml5/parser_rules/licquid',\r\n                'Wysihtml5/jquery.wysihtml5_size_matters'\r\n            ], function () {\r\n                    var editor = new wysihtml5.Editor($textArea[0], {\r\n                        toolbar: $toolbar.get(0),\r\n                        parserRules: wysihtml5ParserRules,\r\n                        stylesheets: require.toUrl('../Lq/richTextEditor.css')\r\n                    });\r\n\r\n                    editor.observe('load', function () {\r\n                        $textArea.data('editor', editor);\r\n                        $(editor.composer.iframe).wysihtml5_size_matters();\r\n                        editor.focus();\r\n                    });\r\n\r\n                    editor.on('change', function () {\r\n                        self.updateViewerFromEditor(editor);\r\n                    });\r\n\r\n                    editor.on('aftercommand:composer', function () {\r\n                        self.updateViewerFromEditor(editor);\r\n                    });\r\n\r\n                    editor.on('blur', function () {\r\n                        self.richTextEditor.triggerFocusLost();\r\n                    });\r\n                });            \r\n        };\r\n\r\n        RichTextEditorSection.prototype.buildToolbar = function () {\r\n            var $toolbar = $('<div />');\r\n\r\n            $('<button />')\r\n                .attr('data-wysihtml5-command', 'bold')\r\n                .addClass('smallbutton')\r\n                .css({ 'font-weight': 'bold' })\r\n                .text('b')\r\n                .appendTo($toolbar);\r\n\r\n            $('<button />')\r\n                .attr('data-wysihtml5-command', 'italic')\r\n                .addClass('smallbutton')\r\n                .css({ 'font-style': 'italic' })\r\n                .text('i')\r\n                .appendTo($toolbar);\r\n\r\n            $('<button />')\r\n                .attr('data-wysihtml5-command', 'underline')\r\n                .addClass('smallbutton')\r\n                .css({ 'text-decoration': 'underline' })\r\n                .text('u')\r\n                .appendTo($toolbar);\r\n\r\n            $('<button />')\r\n                .attr('data-wysihtml5-command', 'insertUnorderedList')\r\n                .addClass('smallbutton')\r\n                .text('•')\r\n                .appendTo($toolbar);\r\n\r\n            $('<button />')\r\n                .attr('data-wysihtml5-command', 'insertOrderedList')\r\n                .addClass('smallbutton')\r\n                .text('1.')\r\n                .appendTo($toolbar);\r\n\r\n            $('<button class=\"smallbutton\">url</button>')\r\n                .attr('data-wysihtml5-command', 'createLink')\r\n                .appendTo($toolbar);\r\n\r\n            $('<div>')\r\n                .hide()\r\n                .attr('data-wysihtml5-dialog', 'createLink')\r\n                .append($('<input type=\"text\" value=\"http://\">')\r\n                    .attr('data-wysihtml5-dialog-field', 'href'))\r\n                .append($('<button class=\"smallbutton\">ok</button>')\r\n                    .attr('data-wysihtml5-dialog-action', 'save'))\r\n                .appendTo($toolbar);\r\n\r\n            return $toolbar;\r\n        };\r\n\r\n        RichTextEditorSection.prototype.buildStylesBar = function () {\r\n            var self = this;\r\n            var $styleDiv = $('<div />');\r\n\r\n            self.$styleSelect = $('<select />')\r\n                .width(150)\r\n                .on('change', function () {\r\n                    Style.removeStyleClass(self, null, self.$viewer);\r\n                    self.data.styles = self.$styleSelect.val();\r\n                    Style.renderStyles(self, null, self.$viewer);\r\n                })\r\n                .appendTo($styleDiv)\r\n                .append($('<option />', { value: null, text: '...' }));\r\n\r\n            _.chain(DomainDefinitions.styles.genericStyles)\r\n             .sortBy(function (style) { return (style.name || '').toLowerCase(); })\r\n             .filter(function (style) { return style.normal && style.normal.runtime; })\r\n             .forEach(function (style) {\r\n                 $('<option />', {\r\n                     value: style.id,\r\n                     text: style.name\r\n                 })\r\n                 .appendTo(self.$styleSelect);\r\n             });\r\n\r\n            self.$styleSelect.val(self.data.styles);\r\n\r\n            $('<button />')\r\n                .addClass('smallbutton')\r\n                .text('x')\r\n                .on('click', function () {\r\n                    self.richTextEditor.removeSection(self);\r\n                })\r\n                .appendTo($styleDiv);\r\n\r\n            return $styleDiv;\r\n        };\r\n        \r\n        RichTextEditorSection.prototype.buildSectionOperationsBar = function () {\r\n            var self = this;\r\n            var $sectionOperations = $('<div />')\r\n                .width(25);\r\n\r\n            $('<button />')\r\n                .addClass('smallbutton')\r\n                .text('+')\r\n                .on('click', function () {\r\n                    self.richTextEditor.addSectionBefore(self);\r\n                })\r\n                .appendTo($sectionOperations);\r\n\r\n            $('<button />')\r\n                .addClass('smallbutton')\r\n                .html('&#x25B2;')\r\n                .on('click', function () {\r\n                    if (self.richTextEditor.moveSectionUp(self)) {\r\n                        self.reopenEditor();\r\n                    }\r\n                })\r\n                .appendTo($sectionOperations);\r\n\r\n            $('<button />')\r\n                .addClass('smallbutton')\r\n                .html('&#x25BC;')\r\n                .on('click', function () {\r\n                    if (self.richTextEditor.moveSectionDown(self)) {\r\n                        self.reopenEditor();\r\n                    }\r\n                })\r\n                .appendTo($sectionOperations);\r\n\r\n            $('<button />')\r\n                .addClass('smallbutton')\r\n                .text('+')\r\n                .on('click', function () {\r\n                    self.richTextEditor.addSectionAfter(self);\r\n                })\r\n                .appendTo($sectionOperations);\r\n\r\n            return $sectionOperations;\r\n        };\r\n\r\n        RichTextEditorSection.prototype.updateViewerFromEditor = function (editor) {\r\n            var newValue = editor.getValue(true);\r\n            var oldValue = this.$viewer.html();\r\n            \r\n            if (newValue !== oldValue) {\r\n                this.$viewer.empty();\r\n                this.$viewer.html(newValue);\r\n            }\r\n\r\n            if (newValue === '') {\r\n                this.setPlaceholder(this.$viewer);\r\n            }\r\n\r\n            this.data.text = newValue;\r\n        };\r\n\r\n        RichTextEditorSection.prototype.setPlaceholder = function ($viewer) {\r\n            $viewer.empty();\r\n\r\n            var placeHolder = $('<span></span>')\r\n                .addClass('richTextEditorPlaceholder')\r\n                .text(this.richTextEditor.placeholder || 'Click here to start editing the content');\r\n            $viewer.append(placeHolder);\r\n        };\r\n\r\n        // wysihtml5 editor doesn't work after moving the div, so we remove it and reinitiate it\r\n        RichTextEditorSection.prototype.reopenEditor = function () {\r\n            var self = this;\r\n            self.$editor.remove();\r\n            self.$editor = null;\r\n\r\n            setTimeout(function () {\r\n                self.openEditor();\r\n            });\r\n        };\r\n\r\n        RichTextEditorSection.prototype.closeEditor = function () {\r\n            if (this.$editor) {\r\n                this.$editor.hide();\r\n                this.$viewer.show();\r\n                this.$element.css({ height: 'auto' });\r\n            }\r\n        };\r\n\r\n        RichTextEditorSection.prototype.toModel = function () {\r\n            return {\r\n                text: this.data.text,\r\n                styleId: this.data.styles\r\n            };\r\n        };\r\n\r\n        var RichTextEditor = function (config) {\r\n            var self = this;\r\n\r\n            self.$element = config.parentElement;\r\n            self.placeholder = config.placeholder;\r\n            self.simpleRichTextEditor = config.simpleRichTextEditor;\r\n            self.sections = config.sections || [];\r\n            self.editable = config.editable;\r\n            EventSource.call(this, 'FocusLost');\r\n\r\n            self.$richTextEditor = $('<div />')\r\n                .addClass('richTextEditor')\r\n                .appendTo(self.$element);\r\n\r\n            if (config.editable) {\r\n                if (self.simpleRichTextEditor) {\r\n                    var defaultSection = new RichTextEditorSection(self);\r\n                    self.sections.push(defaultSection);\r\n                    self.$richTextEditor.append(defaultSection.$element);\r\n                }\r\n\r\n                if (!self.simpleRichTextEditor) {\r\n                    self.$richTextEditor\r\n                        .addClass('richTextEditorFullMode');\r\n\r\n                    self.$richTextEditorBottomActions = $('<div />')\r\n                        .addClass('richTextEditorBottomActions')\r\n                        .appendTo(self.$element);\r\n\r\n                    self.$richTextEditorLeftActions = $('<div />')\r\n                        .addClass('richTextEditorLeftActions')\r\n                        .appendTo(self.$richTextEditorBottomActions);\r\n\r\n                    $('<button />')\r\n                        .text('+')\r\n                        .on('click', function() {\r\n                            var newSection = new RichTextEditorSection(self);\r\n                            self.sections.push(newSection);\r\n                            self.$richTextEditor.append(newSection.$element);\r\n                        })\r\n                        .appendTo(self.$richTextEditorLeftActions);\r\n                }\r\n\r\n                $(document).on('click', function (e) {\r\n                    var clickedSection = $(e.target).closest('.richTextEditorSection');\r\n                    var nonSelectedSections = $.grep(self.sections, function (a) {\r\n                        return a.$element[0] !== clickedSection[0];\r\n                    });\r\n                    $.each(nonSelectedSections, function (key, section) {\r\n                        section.closeEditor();\r\n                    });\r\n                });\r\n            }\r\n        };\r\n\r\n        RichTextEditor.prototype.addSectionBefore = function (section) {\r\n            var index = this.sections.indexOf(section);\r\n            var newSection = new RichTextEditorSection(this);\r\n            this.sections.splice(index, 0, newSection);\r\n\r\n            section.$element.before(newSection.$element);\r\n        };\r\n\r\n        RichTextEditor.prototype.addSectionAfter = function (section) {\r\n            var index = this.sections.indexOf(section) + 1;\r\n            var newSection = new RichTextEditorSection(this);\r\n            this.sections.splice(index, 0, newSection);\r\n\r\n            section.$element.after(newSection.$element);\r\n        };\r\n\r\n        RichTextEditor.prototype.removeSection = function (section) {\r\n            var index = this.sections.indexOf(section);\r\n            this.sections.splice(index, 1);\r\n\r\n            section.$element.remove();\r\n        };\r\n\r\n        RichTextEditor.prototype.moveSectionUp = function (section) {\r\n            var index = this.sections.indexOf(section);\r\n\r\n            if (index === 0) {\r\n                return false;\r\n            }\r\n\r\n            this.sections.splice(index, 1);\r\n            this.sections.splice(index - 1, 0, section);\r\n\r\n            this.sections[index].$element.before(section.$element);\r\n\r\n            return true;\r\n        };\r\n\r\n        RichTextEditor.prototype.moveSectionDown = function (section) {\r\n            var index = this.sections.indexOf(section);\r\n\r\n            if (index === this.sections.length) {\r\n                return false;\r\n            }\r\n\r\n            this.sections.splice(index, 1);\r\n            this.sections.splice(index + 1, 0, section);\r\n\r\n            this.sections[index].$element.after(section.$element);\r\n\r\n            return true;\r\n        };\r\n\r\n        RichTextEditor.prototype.clearSections = function () {\r\n            _.forEach(this.sections, function (section) {\r\n                section.$element.remove();\r\n            });\r\n            this.sections = [];\r\n        };\r\n\r\n        RichTextEditor.prototype.fromModel = function (model) {\r\n            var self = this;\r\n\r\n            self.clearSections();\r\n\r\n            if (model.sections) {\r\n                _.forEach(model.sections, function (sectionModel) {\r\n                    var section = new RichTextEditorSection(self, sectionModel);\r\n                    self.sections.push(section);\r\n                    self.$richTextEditor.append(section.$element);\r\n                });\r\n            }\r\n        };\r\n\r\n        RichTextEditor.prototype.fromString = function (content) {\r\n            if (isRichTextString(content)) {\r\n                this.fromModel(modelFromRichTextString(content));\r\n            } else {\r\n                this.clearSections();\r\n\r\n                var section = new RichTextEditorSection(this, {\r\n                    text: convertToHtml(content) || ''\r\n                });\r\n                this.sections.push(section);\r\n                this.$richTextEditor.append(section.$element);\r\n            }\r\n        };\r\n\r\n\r\n        RichTextEditor.prototype.toModel = function () {\r\n            return {\r\n                sections: $.map(this.sections, function (section) {\r\n                    return section.toModel();\r\n                })\r\n            };\r\n        };\r\n\r\n        RichTextEditor.prototype.toString = function () {\r\n            var model = this.toModel();\r\n            return modelToRichTextString(model);\r\n        };\r\n\r\n        RichTextEditor.prototype.close = function () {\r\n            this.$richTextEditor.remove();\r\n            this.$richTextEditorBottomActions.remove();\r\n        };\r\n\r\n        return {\r\n            RichTextEditor: RichTextEditor,\r\n            isRichTextString: isRichTextString,\r\n            modelFromRichTextString: modelFromRichTextString,\r\n            modelToRichTextString: modelToRichTextString\r\n        };\r\n    });\n","define('drops/dynamicText/dynamicText',[\r\n    'jquery',\r\n    'lq',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'lq/richText',\r\n    'lq/html',\r\n    'lq/constants',\r\n    'lq/tooltip',\r\n    'lq/onlongpress'\r\n], function($, lq, Drop, Style, util, richText, html, constants, Tooltip, OnLongPress) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            trimTextWithEllipsis: false,\r\n            useDynamicWidth: true,\r\n            useDynamicHeight: true,\r\n            hideWhenEmpty: false,\r\n            trimTextWithEllipsisMaxNumberOfLines: 1,\r\n            title: {\r\n                option: Tooltip.hardcoded\r\n            },\r\n            role: 'default'\r\n        }\r\n    };\r\n\r\n    var base = Drop;\r\n    function DynamicText(options) {\r\n        base.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing) || {};\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize drop-text-container dynamic-text');\r\n\r\n        this.$element\r\n            .addClass('loading');\r\n\r\n        new OnLongPress().applyLongPressOnElement(this.$element, this);\r\n\r\n        if (this.data.eventing.clicked && this.data.eventing.clicked.enabled === true) {\r\n            this.$element.addClass('clickable');\r\n        }\r\n\r\n        this.applyEventTrigger('mouseEnter', 'mouseenter');\r\n        this.applyEventTrigger('mouseLeave', 'mouseleave');\r\n\r\n        this.tooltip = new Tooltip(this, this.data.title, this.$element);\r\n    };\r\n\r\n    base.extend(DynamicText);\r\n\r\n    DynamicText.typeName = 'DynamicText';\r\n\r\n    DynamicText.prototype.showMockData = function (mockData) {\r\n        this.setValue({ value: this.getMockTextToShow(mockData), type: constants.string });\r\n    };\r\n\r\n    DynamicText.prototype.getMockTextToShow = function (mockData) {\r\n        return mockData;\r\n    };\r\n\r\n    DynamicText.prototype.updateMockData = function () {\r\n        this.applyPosition();\r\n    };\r\n\r\n    DynamicText.prototype.preRender = function () {\r\n        this.tooltip.update();\r\n\r\n        this.piping.visibility.apply(this);\r\n        this.formatter = this.piping.formatting.createFormatter(this.data.formatting);\r\n\r\n        if (!this.data.hideWhenEmpty)\r\n            this.showPlainText();\r\n        else {\r\n            this.hide();\r\n        }\r\n\r\n        if (this.data.mockData)\r\n            this.showMockData(this.data.mockData);\r\n\r\n        if (this.data.containImages) {\r\n            this.$element.addClass('contain-images');\r\n        }\r\n\r\n        if (this.data.removeMarginAndPadding) {\r\n            this.$element.addClass('remove-margin-and-padding');\r\n        }\r\n\r\n        this.applyPosition();\r\n    };\r\n\r\n    DynamicText.prototype.clearValue = function () {\r\n        if (this.data.hideWhenEmpty)\r\n            this.hide();\r\n        else {\r\n            if (this.$label)\r\n                this.$label.text('');\r\n            else\r\n                this.richTextEditor.fromString('');\r\n        }\r\n    };\r\n\r\n    DynamicText.prototype.rerenderLabel = function () {\r\n        var text = this.text;\r\n\r\n        if (this.data.renderAsHtml) {\r\n            if (text) {\r\n                var regex = new RegExp('{{{TenantUrl}}}', 'g');\r\n                text = text.replace(regex, lq.getTenantUrl(''));\r\n            }\r\n\r\n            var $htmlWrapper = $('<div/>')\r\n                .html(html.sanitize(text) || '');\r\n\r\n            this.$label\r\n                .empty()\r\n                .append($htmlWrapper)\r\n                .css({\r\n                    whiteSpace: 'normal',\r\n                    overflowWrap: 'break-word'\r\n                });\r\n        } else {\r\n            if (this.data.stripHtml && text)\r\n                text = html.strip(text);\r\n\r\n            this.$label\r\n                .text(text || '')\r\n                .css({\r\n                    whiteSpace: 'pre-wrap',\r\n                    overflowWrap: 'break-word'\r\n                });\r\n        }\r\n\r\n        if (this.data.trimTextWithEllipsis)\r\n            this.tooltip.update(text);\r\n\r\n        if (this.data.hideWhenEmpty) {\r\n            if (text === null || text === undefined || text === '') {\r\n                this.hide();\r\n            } else {\r\n                this.show();\r\n            }\r\n        }\r\n    };\r\n\r\n    DynamicText.prototype.setValue = function (update) {\r\n        this.$element\r\n            .removeClass('loading');\r\n\r\n        update.value = update.value === null || update.value === undefined || update.value === '' ? this.data.defaultValue : update.value;\r\n\r\n        if (richText.isRichTextString(update.value)) {\r\n            this.hidePlainText();\r\n            this.showRichText();\r\n            this.richTextEditor.fromString(update.value);\r\n            this.show();\r\n        } else {\r\n            this.hideRichText();\r\n            this.showPlainText();\r\n\r\n            this.text = this.formatter.convertFromLicquidFormat(update.type, update.value);\r\n            this.rerenderLabel();\r\n        }\r\n    };\r\n\r\n    // backwards compatibility\r\n    DynamicText.prototype.getValue = function () {\r\n        if (this.$label)\r\n            return this.$label.text();\r\n        return null;\r\n    };\r\n\r\n    DynamicText.prototype.hideRichText = function () {\r\n        if (this.richTextEditor) {\r\n            this.richTextEditor.close();\r\n            this.richTextEditor = null;\r\n        }\r\n    };\r\n\r\n    DynamicText.prototype.hidePlainText = function () {\r\n        if (this.$label) {\r\n            this.$label.remove();\r\n            this.$label = null;\r\n        }\r\n    };\r\n\r\n    DynamicText.prototype.showRichText = function () {\r\n        if (!this.richTextEditor) {\r\n            this.richTextEditor = new richText.RichTextEditor({\r\n                parentElement: this.$element,\r\n                sections: this.data.sections,\r\n                editable: false\r\n            });\r\n\r\n            this.renderStyles();\r\n        }\r\n    };\r\n\r\n    DynamicText.prototype.renderStyles = function () {\r\n        if (this.richTextEditor) {\r\n            Style.renderStyles(this, null, this.richTextEditor.$element);\r\n        } else {\r\n            Style.renderStyles(this, null, this.$element);\r\n        }\r\n    };\r\n\r\n    DynamicText.prototype.createLabelElement = function () {\r\n        if (this.data.role === 'title') {\r\n            return $('<h1 />')\r\n                .addClass('ignore-default-headings');\r\n        } else if (this.data.role === 'subtitle') {\r\n            return $('<h2 />')\r\n                .addClass('ignore-default-headings');\r\n        } else if (this.data.role === 'label') {\r\n            return $('<label />')\r\n                .attr('for', this.rootDrop.instanceId + '_' + this.data.labelForDropId);\r\n        } else {\r\n            return $('<div />');\r\n        }\r\n    };\r\n\r\n    DynamicText.prototype.showPlainText = function () {\r\n        if (!this.$label) {\r\n\r\n            if (this.data.trimTextWithEllipsis && !this.data.trimTextWithEllipsisBasedOnLineCount) {\r\n                this.$labelWrapper = $('<div />')\r\n                    .addClass('ellipsis')\r\n                    .addClass('boxToBorderSize')\r\n                    .css({\r\n                        width: '100%',\r\n                        height: '100%'\r\n                    })\r\n                    .appendTo(this.$element);\r\n\r\n                this.$innerLabelWrapper = $('<div />')\r\n                    .appendTo(this.$labelWrapper);\r\n\r\n                this.$label = this.createLabelElement()\r\n                    .addClass('drop-text-content')\r\n                    .css({\r\n                        whiteSpace: 'pre-wrap',\r\n                        marginRight: '10px',\r\n                        margin: '0'\r\n                    })\r\n                    .appendTo(this.$innerLabelWrapper);\r\n            } else {\r\n                this.$overflowWrapper = $('<div />')\r\n                    .addClass('overflow-wrapper')\r\n                    .appendTo(this.$element);\r\n\r\n                this.$labelWrapper = $('<div />')\r\n                    .css({\r\n                        display: 'flex',\r\n                        width: '100%',\r\n                        height: '100%'\r\n                    })\r\n                    .appendTo(this.$overflowWrapper);\r\n\r\n                this.$label = this.createLabelElement()\r\n                    .addClass('boxToBorderSize drop-text-content')\r\n                    .css({\r\n                        display: 'flex',\r\n                        flexDirection: 'column',\r\n                        flex: '1 1 100%',\r\n                        width: '100%',\r\n                        height: '100%'\r\n                    })\r\n                    .appendTo(this.$labelWrapper);\r\n\r\n                if (this.data.trimTextWithEllipsis && this.data.trimTextWithEllipsisBasedOnLineCount) {\r\n                    this.$label = this.createLabelElement()\r\n                        .css({\r\n                            overflow: 'hidden',\r\n                            display: '-webkit-box',\r\n                            '-webkit-line-clamp': this.data.trimTextWithEllipsisMaxNumberOfLines.toString(),\r\n                            '-webkit-box-orient': 'vertical',\r\n                            width: '100%'\r\n                        })\r\n                        .appendTo(this.$label);\r\n                }\r\n\r\n                if (this.data.showScrollbar) {\r\n                    this.$element.css({\r\n                        overflowY: 'auto',\r\n                        overflowX: 'hidden'\r\n                    });\r\n                }\r\n            }\r\n\r\n            this.renderStyles();\r\n        }\r\n    };\r\n\r\n    DynamicText.prototype.rerenderDynamicText = function () {\r\n        this.$element.empty();\r\n        this.$label = null;\r\n        this.showPlainText();\r\n        this.rerenderLabel();\r\n    };\r\n\r\n    return DynamicText;\r\n});\n","define('lq/videoPlayer',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq'\r\n], function ($, _, lq) {\r\n    'use strict';\r\n\r\n    var supportedTypes = [\r\n        'webm',\r\n        'mp4',\r\n        'ogg'\r\n    ];\r\n\r\n    var datasetup = [\r\n        // 'flash',\r\n        'html5',\r\n        'youtube'\r\n    ];\r\n\r\n    function VideoPlayer($element) {\r\n        this.$element = $element;\r\n        this.player = null;\r\n    }\r\n\r\n    VideoPlayer.prototype.open = function(config) {\r\n        this.close();\r\n\r\n        if(!config.url)\r\n            return;\r\n\r\n        require([\r\n            'videojs.youtube'\r\n        ], this.videoLoaded.bind(this, config));\r\n    };\r\n\r\n    VideoPlayer.prototype.videoLoaded = function (config, video) {\r\n        var videoType = config.videoType || this.getVideoType(config.url);\r\n        if (!videoType)\r\n            return;\r\n\r\n        var $source = $('<source />')\r\n            .attr('type', 'video/' + this.videoType)\r\n            .attr('src', config.url);\r\n\r\n        var id = _.uniqueId('v');\r\n        var $video = $('<video />')\r\n             .attr('id', id)\r\n             .attr('class', 'video-js vjs-default-skin vjs-big-play-centered')\r\n             .attr('width', this.$element.width())\r\n             .attr('height', this.$element.height())\r\n             .attr('data-height', '264')\r\n             .attr('controls', 'false')\r\n             .attr('poster', config.poster)\r\n             .attr('preload', 'auto')\r\n             .attr('autoplay', config.autoPlay)\r\n             .attr('loop', config.loop)\r\n             .attr('controls', config.controls)\r\n             .attr('videoType', videoType)\r\n            .append($source);\r\n\r\n        if (config.autoPlay) {\r\n            $video.attr('muted', '')\r\n                .attr('playsinline', '');\r\n        }\r\n\r\n        this.$element.append($video);\r\n\r\n        this.player = video($video.get(0), {\r\n            techOrder: datasetup,\r\n            preload: 'auto',\r\n            autoplay: config.autoPlay,\r\n            loop: config.loop,\r\n            controls: config.controls,\r\n            poster: [config.poster],\r\n            sources: [\r\n                {\r\n                    type: 'video/' + videoType,\r\n                    src: config.url\r\n                }\r\n            ]\r\n        });\r\n\r\n        this.player.on('error', this.showAsError.bind(this));\r\n\r\n        if (config.autoPlay) {\r\n            video(id).ready(function () {\r\n                this.play();\r\n            });\r\n        }\r\n\r\n        if (config.onEnded)\r\n            this.player.on('ended', config.onEnded);\r\n    };\r\n\r\n    VideoPlayer.prototype.close = function() {\r\n        if(this.player) {\r\n            this.player.dispose();\r\n            this.player = null;\r\n        }\r\n    };\r\n\r\n    VideoPlayer.prototype.hasVideo = function () {\r\n        return this.player !== null;\r\n    };\r\n\r\n    VideoPlayer.prototype.getVideoType = function(url) {\r\n        var extension = url.split('.').pop();\r\n\r\n        var i = supportedTypes.indexOf(extension);\r\n        if (i !== -1)\r\n            return extension;\r\n\r\n        if (extension === 'ogv') {\r\n            return 'ogg';\r\n        }\r\n\r\n        var match = url.match(/v=([^&]+)/);\r\n        if (match != null && match.length == 2)\r\n            return 'youtube';\r\n\r\n        return null;\r\n    };\r\n\r\n    VideoPlayer.prototype.showAsError = function () {\r\n        $('<div />')\r\n            .text('The video cannot be player')\r\n            .appendTo(this.$element)\r\n            .css({\r\n                backgroundColor: 'black',\r\n                position: 'absolute',\r\n                left: 0,\r\n                top: 0,\r\n                right: 0,\r\n                bottom: 0\r\n            })\r\n            .append($('<span />')\r\n           .text('The video cannot be played')\r\n           .css({\r\n               color: 'white',\r\n               position: 'absolute',\r\n               top: '50%',\r\n               left: '50%',\r\n               transform: 'translate(-50%, -50%)'\r\n           }));\r\n    };\r\n\r\n    return VideoPlayer;\r\n});\n","define('drops/dynamicVideo/dynamicVideo',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/util',\r\n    'lq/style',\r\n    'lq/videoPlayer',\r\n    'lq'\r\n], function ($, Drop, util, Style, VideoPlayer, lq) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            value: '',\r\n            loop: false,\r\n            controls: true\r\n        }\r\n    };\r\n\r\n    function DynamicVideo(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.url = null;\r\n\r\n        if (this.data.size.x < 200)\r\n            this.data.size.x = 200;\r\n        if (this.data.size.y < 100)\r\n            this.data.size.y = 100;\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize');\r\n\r\n        Style.renderStyles(this);\r\n    };\r\n\r\n    Drop.extend(DynamicVideo, Drop);\r\n\r\n    DynamicVideo.typeName = 'DynamicVideo';\r\n\r\n    DynamicVideo.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n    };\r\n\r\n    DynamicVideo.prototype.setValue = function (update) {\r\n        var value = util.convertListOfKeyValuesToObject(update.value);\r\n        var url = value.url || value.Url;\r\n\r\n        if (url && url.length > 0)\r\n            this.url = lq.getTenantUrl('DynamicContent/File/' + url);\r\n        else if(update.value)\r\n            this.url = update.value;\r\n\r\n        if(this.isVisible())\r\n            this.openVideoPlayer();\r\n    };\r\n\r\n    DynamicVideo.prototype.openVideoPlayer = function () {\r\n        if (!this.player)\r\n            this.player = new VideoPlayer(this.$element);\r\n\r\n        var config = {\r\n            url: this.url,\r\n            autoPlay: this.data.autoPlay,\r\n            poster: this.data.poster,\r\n            loop: this.data.loop,\r\n            controls: this.data.controls\r\n        };\r\n\r\n        if (this.isEventEnabled('videoEnded'))\r\n            config.onEnded = this.triggerEventIfEnabled.bind(this, 'videoEnded');\r\n\r\n        this.player.open(config);\r\n    };\r\n\r\n    DynamicVideo.prototype.clearValue = function () {\r\n        if (this.player)\r\n            this.player.close();\r\n    };\r\n\r\n    DynamicVideo.prototype.afterShown = function () {\r\n        if(this.url)\r\n            this.openVideoPlayer();\r\n    };\r\n\r\n    DynamicVideo.prototype.afterHidden = function () {\r\n        if (this.player)\r\n            this.player.close();\r\n    };\r\n\r\n    return DynamicVideo;\r\n});\n","define('drops/embed/embed',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style'\r\n], function ($, Drop, Style) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            embedCode: ''\r\n        }\r\n    };\r\n\r\n    function Embed(options) {\r\n        Drop.call(this, $('<div class=\"boxToBorderSize embed-drop\" />'), defaults, options);\r\n\r\n        Style.renderStyles(this);\r\n    };\r\n\r\n    Drop.extend(Embed, Drop);\r\n\r\n    Embed.typeName = 'Embed';\r\n\r\n    Embed.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n\r\n        if (this.data.embedCode)\r\n            this.$element.html(this.data.embedCode);\r\n\r\n        this.applyPosition();\r\n    };\r\n    \r\n    return Embed;\r\n});\n","define('drops/entityFilter/filterInstance',[\r\n    'underscore',\r\n    'lq/constants',\r\n    'lq/eventSource',\r\n    'lq/design/editors/dropExtensionsClicks'\r\n], function (_, constants, EventSource) {\r\n    'use strict';\r\n\r\n    var horizontalMargin = 10;\r\n\r\n    var FilterInstance = function (filter, targetDrop, options, hasInitialValue) {\r\n        EventSource.call(this, [\r\n            'Removed',\r\n            'EditingSettings',\r\n            'SettingsApplied'\r\n        ]);\r\n\r\n        this.options = options;\r\n        this.targetDrop = targetDrop;\r\n        this.filter = filter;\r\n        this.dropFactory = targetDrop.piping.dropFactory;\r\n        this.hasInitialValue = hasInitialValue;\r\n    };\r\n    \r\n    FilterInstance.currentPopup = null;\r\n    \r\n    FilterInstance.prototype.applyFilterToTarget = function () {\r\n        if (!this.options.modalPopup)\r\n            this.executeFilterChanges();\r\n    };\r\n\r\n    FilterInstance.prototype.applySettingsFromPopup = function () {\r\n        this.hideSettingsPopup();\r\n        this.executeFilterChanges();\r\n\r\n        this.triggerSettingsApplied();\r\n    };\r\n\r\n    FilterInstance.prototype.hideSettingsPopup = function (isImmediate) {\r\n        var popup = this.dropFactory.findDropByName(this.options.modalPopup);\r\n        if (isImmediate) {\r\n            popup.$element.hide();\r\n        } else {\r\n            popup.$element\r\n                .fadeOut({\r\n                    queue: false,\r\n                    complete: function () {\r\n                        popup.$element.show();\r\n                        popup.hide();\r\n                    }\r\n                });\r\n        }\r\n    };\r\n\r\n    FilterInstance.prototype.closeCurrentPopup = function () {\r\n        if (FilterInstance.currentPopup) {\r\n            FilterInstance.currentPopup.hideSettingsPopup(true);\r\n            FilterInstance.currentPopup = null;\r\n        }\r\n    };\r\n\r\n    FilterInstance.prototype.showSettingsPopup = function ($nextTo) {\r\n        this.closeCurrentPopup();\r\n        \r\n        this.doReverseMappingToShowFilterValuesForCurrentTarget(this.options);\r\n\r\n        var popup = this.dropFactory.findDropByName(this.options.modalPopup);\r\n        popup.show();\r\n        popup.$element\r\n            .hide()\r\n            .fadeIn({\r\n                duration: 'slow',\r\n                queue: false\r\n            });\r\n        var filterPosition = $nextTo.offset();\r\n        var poolPosition = this.filter.rootDrop.$element.offset();\r\n        popup.$element.css({\r\n            positioning: 'absolute',\r\n            top: filterPosition.top - poolPosition.top,\r\n            left: filterPosition.left - poolPosition.left + $nextTo.outerWidth() + horizontalMargin,\r\n            bottom: 'auto',\r\n            right: 'auto',\r\n            width: popup.data.size.x,\r\n            height: popup.data.size.y\r\n        });\r\n        $nextTo.addClass('settings-is-open');\r\n\r\n        FilterInstance.currentPopup = this;\r\n\r\n        this.triggerEditingSettings();\r\n    };\r\n\r\n    FilterInstance.prototype.doReverseMappingToShowFilterValuesForCurrentTarget = function () {\r\n        var parameters = this.targetDrop.piping.parameters;\r\n\r\n        var self = this;\r\n        _.each(this.options.mappings, function (mapping) {\r\n            var sourceDrop = self.dropFactory.findDropByName(mapping.sourceName);\r\n\r\n            sourceDrop.setValue({\r\n                type: constants.valueTypes.string,\r\n                value: parameters.getValue(mapping.targetParameter)\r\n            });\r\n        });\r\n    };\r\n\r\n    FilterInstance.prototype.executeFilterChanges = function () {\r\n        var parameters = this.targetDrop.piping.parameters;\r\n\r\n        if (this.options.filterParameterName)\r\n            parameters.locals.setValue(this.options.filterParameterName, this.options.filterParameterValue);\r\n\r\n        if (this.options.modalPopup) {\r\n            var self = this;\r\n            _.each(this.options.mappings, function (mapping) {\r\n                var sourceDrop = self.dropFactory.findDropByName(mapping.sourceName);\r\n                parameters.locals.setValue(mapping.targetParameter, sourceDrop.getValue());\r\n            });\r\n        }\r\n\r\n        this.filter.triggerEventForTargetIfEnabled(this.options, 'applyFilter');\r\n\r\n        if (this.options.executeQuery)\r\n            this.targetDrop.executeQuery();\r\n    };\r\n\r\n    FilterInstance.prototype.resetFilter = function () {\r\n        var parameters = this.targetDrop.piping.parameters;\r\n\r\n        if (this.options.filterParameterName)\r\n            parameters.locals.setValue(this.options.filterParameterName, this.options.filterParameterResetValue);\r\n\r\n        if (this.options.modalPopup) {\r\n            this.hideSettingsPopup();\r\n\r\n            _.each(this.options.mappings, function (mapping) {\r\n                parameters.locals.setValue(mapping.targetParameter, null);\r\n            });\r\n        }\r\n\r\n        this.filter.triggerEventForTargetIfEnabled(this.options, 'resetFilter');\r\n    };\r\n\r\n    FilterInstance.prototype.remove = function (skipQueryExecution) {\r\n        this.resetFilter();\r\n\r\n        if (this.options.executeQuery && !skipQueryExecution)\r\n            this.targetDrop.executeQuery();\r\n\r\n        this.triggerRemoved();\r\n    };\r\n    \r\n    return FilterInstance;\r\n});\n","define('drops/entityFilter/entityFilter',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'lq/eventSource',\r\n    'drops/entityFilter/filterInstance',\r\n    'lq/design/editors/dropExtensionsClicks'\r\n], function ($, _, Drop, Style, util, EventSource, FilterInstance) {\r\n    'use strict';\r\n    \r\n    var base = Drop;\r\n\r\n    var EntityFilter = function (options) {\r\n        base.call(this, $('<div>'), options);\r\n        EventSource.call(this, [\r\n            'FilterAdded'\r\n        ]);\r\n\r\n        this.$element\r\n            .addClass('entity-filter-drop boxToBorderSize drop-text-container');\r\n        \r\n        this.$title = $('<span>')\r\n            .addClass('title')\r\n            .addClass('drop-text-content')\r\n            .text(this.data.title)\r\n            .css({\r\n                display: 'flex',\r\n                flexDirection: 'column',\r\n                flex: '1 1 100%',\r\n                width: '100%'\r\n            });\r\n            \r\n        this.$element\r\n            .append($('<div />')\r\n            .css({\r\n                cursor: 'pointer',\r\n                display: 'flex',\r\n                whiteSpace: 'pre-wrap',\r\n                height: '100%',\r\n                width: '100%'\r\n            })\r\n            .append(this.$title));\r\n            \r\n        Style.renderStyles(this);\r\n\r\n        this.initialPosition = util.cloneData(this.data.position);\r\n\r\n        this.clicks({\r\n            drag: true,\r\n            revertWhenDroppedOffTarget: true,\r\n            getDropTargets: this.getDropTargets.bind(this),\r\n            droppedOnTarget: this.applyFilterToTarget.bind(this)\r\n        });\r\n    };\r\n\r\n    base.extend(EntityFilter);\r\n\r\n    EntityFilter.typeName = 'EntityFilter';\r\n\r\n    EntityFilter.currentPopup = null;\r\n\r\n    EntityFilter.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n    };\r\n\r\n    EntityFilter.prototype.getDropTargets = function () {\r\n        if (!this.targetsCached) {\r\n            var dropFactory = this.piping.dropFactory;\r\n\r\n            this.targetsCached = _.map(this.data.targets, function (targetOptions) {\r\n                return dropFactory.findDropByName(targetOptions.drop);\r\n            });\r\n        }\r\n\r\n        return this.targetsCached;\r\n    };\r\n\r\n    EntityFilter.prototype.getOptionsForTarget = function(targetDrop) {\r\n        return _.findWhere(this.data.targets, { drop: targetDrop.data.name });\r\n    };\r\n\r\n    // note: this method won't execute any queries\r\n    EntityFilter.prototype.removeAppliedFilters = function () {\r\n        _.each(this.getDropTargets(), this.removeAppliedFilter.bind(this));\r\n    };\r\n    \r\n    EntityFilter.prototype.removeAppliedFilter = function (targetDrop) {\r\n        _.each(this.getMyActiveFiltersForTarget(targetDrop), function (activeFilter) {\r\n            activeFilter.resetFilter();\r\n            activeFilter.remove(true);\r\n        });\r\n    };\r\n\r\n    EntityFilter.prototype.applyFilterToTarget = function (targetDrop) {\r\n        this.closeCurrentPopup();\r\n\r\n        var activeFilterInstances = this.getActiveFiltersForTarget(targetDrop);\r\n\r\n        var self = this;\r\n        var isAlreadyFiltered = _.find(activeFilterInstances, function(current) {\r\n            return current.filter === self;\r\n        });\r\n\r\n        if (isAlreadyFiltered) {\r\n            this.animateBackToStart();\r\n            return;\r\n        }\r\n\r\n        var targetOptions = this.getOptionsForTarget(targetDrop);\r\n\r\n        this.removeConflictingFiltersFromTarget(targetDrop, targetOptions);\r\n        \r\n        this.dragToPosition(this.initialPosition);\r\n        this.$element.hide().fadeIn({\r\n            duration: 'slow',\r\n            queue: false\r\n        });\r\n\r\n        var instance = this.createInstance(targetDrop, targetOptions, false);\r\n        instance.applyFilterToTarget();\r\n        this.addAsActiveFilterToTarget(instance);\r\n    };\r\n\r\n    EntityFilter.prototype.createInstance = function (targetDrop, targetOptions, hasInitialValue) {\r\n        return new FilterInstance(this, targetDrop, targetOptions, hasInitialValue);\r\n    };\r\n    \r\n    EntityFilter.prototype.closeCurrentPopup = function () {\r\n        if (EntityFilter.currentPopup)\r\n            this.hideSettingsPopup(EntityFilter.currentPopup, true);\r\n    };\r\n    \r\n    EntityFilter.prototype.removeConflictingFiltersFromTarget = function (targetDrop, targetOptions) {\r\n        if (!targetOptions.filterParameterName)\r\n            return;\r\n\r\n        var conflictingFilterInstances = _.filter(this.getActiveFiltersForTarget(targetDrop), function (filterInstance) {\r\n            return filterInstance.options.filterParameterName === targetOptions.filterParameterName;\r\n        });\r\n        \r\n        _.each(conflictingFilterInstances, function (filterInstance) {\r\n            filterInstance.remove();\r\n        });\r\n    };\r\n    \r\n    EntityFilter.prototype.getActiveFiltersForTarget = function (targetDrop) {\r\n        return targetDrop.$element.data('licquid-entity-filters') || [];\r\n    };\r\n\r\n    EntityFilter.prototype.getMyActiveFiltersForTarget = function (targetDrop) {\r\n        var self = this;\r\n        return _.filter(this.getActiveFiltersForTarget(targetDrop), function (activeFilter) {\r\n            return activeFilter.filter === self;\r\n        });\r\n    };\r\n\r\n    EntityFilter.prototype.addAsActiveFilterToTarget = function (filterInstance) {\r\n        var activeFilters = this.getActiveFiltersForTarget(filterInstance.targetDrop);\r\n        var newFilters = activeFilters.concat(filterInstance);\r\n        filterInstance.targetDrop.$element.data('licquid-entity-filters', newFilters);\r\n\r\n        filterInstance.withOnceRemoved(this.removeAsActiveFilterFromTarget.bind(this, filterInstance));\r\n\r\n        this.triggerFilterAdded(filterInstance);\r\n    };\r\n    \r\n    EntityFilter.prototype.removeAsActiveFilterFromTarget = function (filterInstance) {\r\n        var activeFilters = this.getActiveFiltersForTarget(filterInstance.targetDrop);\r\n        var self = this;\r\n        var filtersWithoutSelf = _.filter(activeFilters, function(current) {\r\n            return current.filter !== self;\r\n        });\r\n        filterInstance.targetDrop.$element.data('licquid-entity-filters', filtersWithoutSelf);\r\n    };\r\n\r\n    EntityFilter.prototype.getEventDataForTarget = function (targetOptions, eventName) {\r\n        return targetOptions && targetOptions.eventing && targetOptions.eventing[eventName] || {};\r\n    };\r\n\r\n    EntityFilter.prototype.triggerEventForTargetIfEnabled = function (targetOptions, eventName) {\r\n        var eventData = this.getEventDataForTarget(targetOptions, eventName);\r\n        if (eventData.enabled) this.triggerEvent(eventData.raisedEventName);\r\n    };\r\n\r\n    return EntityFilter;\r\n});\n","\ndefine(\"tpl!drops/entityFiltersPanel/entityFiltersPanelItem.html\", [\"underscore\"], function(_) { return function(obj){\nvar __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\nwith(obj||{}){\n__p+='<div class=\"entity-filters-panel-item applied drop-text-container\">\\r\\n    <span class=\"remove\"></span>\\r\\n    <span class=\"settings\"></span>\\r\\n    <span class=\"settings-ok-button\"></span>\\r\\n    <div class=\"text-wrapper\">\\r\\n        <span class=\"title drop-text-content\">'+\n((__t=( title ))==null?'':_.escape(__t))+\n'</span>\\r\\n    </div>\\r\\n</div>';\n}\nreturn __p;\n};});\n\n","define('drops/entityFiltersPanel/entityFiltersPanelItem',[\r\n    'jquery',\r\n    'underscore',\r\n    'tpl!./entityFiltersPanelItem.html'\r\n], function ($, _, template) {\r\n    'use strict';\r\n\r\n    var EntityFiltersPanelItem = function (filterInstance) {\r\n        this.$element = $(template({\r\n            title: filterInstance.filter.data.title\r\n        }));\r\n        this.filterInstance = filterInstance;\r\n\r\n        this.editingSettings = this.showAsPopupOpen.bind(this);\r\n        this.settingsApplied = this.showAsPopupApplied.bind(this);\r\n    };\r\n\r\n    EntityFiltersPanelItem.prototype.show = function () {\r\n        this.filterInstance.withOnEditingSettings(this.editingSettings);\r\n        this.filterInstance.withOnSettingsApplied(this.settingsApplied);\r\n\r\n        this.$remove = this.$element\r\n            .find('.remove')\r\n            .on('click', this.removeClicked.bind(this));\r\n        \r\n        if (this.filterInstance.options.modalPopup) {\r\n            this.$element\r\n                .addClass('has-settings')\r\n                .on('click', this.clicked.bind(this));\r\n\r\n            if (!this.filterInstance.hasInitialValue)\r\n                this.showSettingsPopup();\r\n        }\r\n\r\n        this.$element.addClass('fade-in');\r\n    };\r\n\r\n    EntityFiltersPanelItem.prototype.remove = function () {\r\n        var $element = this.$element;\r\n\r\n        this.$element.slideUp({\r\n                done: function () {\r\n                    $element.remove();\r\n                }\r\n            })\r\n            .css('pointer-events', 'none')\r\n            .find('*').addBack().off('click');\r\n\r\n        this.filterInstance.withoutOnEditingSettings(this.editingSettings);\r\n        this.filterInstance.withoutOnSettingsApplied(this.settingsApplied);\r\n    };\r\n\r\n    EntityFiltersPanelItem.prototype.clicked = function (e) {\r\n        if (e.target === this.$remove[0])\r\n            return;\r\n        \r\n        if (this.$element.hasClass('settings-is-open')) {\r\n            this.hideSettingsPopup();\r\n            this.executeFilterChanges();\r\n        } else {\r\n            this.showSettingsPopup();\r\n        }\r\n    };\r\n\r\n    EntityFiltersPanelItem.prototype.showSettingsPopup = function () {\r\n        this.filterInstance.showSettingsPopup(this.$element);\r\n    };\r\n\r\n    EntityFiltersPanelItem.prototype.showAsPopupOpen = function () {\r\n        this.$element.addClass('settings-is-open');\r\n    };\r\n    \r\n    EntityFiltersPanelItem.prototype.hideSettingsPopup = function () {\r\n        this.filterInstance.applySettingsFromPopup();\r\n    };\r\n\r\n    EntityFiltersPanelItem.prototype.showAsPopupApplied = function () {\r\n        this.$element.removeClass('settings-is-open');\r\n    };\r\n    \r\n    EntityFiltersPanelItem.prototype.removeClicked = function () {\r\n        this.filterInstance.remove();\r\n    };\r\n\r\n    EntityFiltersPanelItem.prototype.executeFilterChanges = function () {\r\n        this.filterInstance.executeFilterChanges();\r\n    };\r\n    \r\n    return EntityFiltersPanelItem;\r\n});\r\n\n","define('drops/entityFiltersPanel/entityFiltersPanel',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/drop',\r\n    'lq/style',\r\n    './entityFiltersPanelItem'\r\n], function ($, _, Drop, Style, EntityFiltersPanelItem) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n        }\r\n    };\r\n\r\n    var EntityFiltersPanel = function (options) {\r\n        Drop.call(this, $('<div />'), defaults, options);\r\n\r\n        this.$panel = $('<div class=\"entity-filters-panel\" />')\r\n            .appendTo(this.$element);\r\n\r\n        Style.renderStyles(this, null, this.$panel);\r\n\r\n        this.items = [];\r\n    };\r\n\r\n    Drop.extend(EntityFiltersPanel, Drop);\r\n\r\n    EntityFiltersPanel.typeName = 'EntityFiltersPanel';\r\n\r\n    EntityFiltersPanel.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n    };\r\n\r\n    EntityFiltersPanel.prototype.postRender = function () {\r\n        var self = this;\r\n        _.each(this.piping.dropFactory.getAllDrops(), function(drop) {\r\n            if (drop.type !== 'EntityFilter') return;\r\n            drop.withOnFilterAdded(self.addEntityFilter.bind(self));\r\n        });\r\n    };\r\n    \r\n    EntityFiltersPanel.prototype.addEntityFilter = function (filterInstance) {\r\n        if (filterInstance.targetDrop.data.name !== this.data.targetDrop) return;\r\n\r\n        filterInstance.withOnceRemoved(this.removeEntityFilter.bind(this, filterInstance));\r\n\r\n        var item = new EntityFiltersPanelItem(filterInstance);\r\n\r\n        Style.renderStyles(this, null, item.$element, this.data.itemStyles, 'normal');\r\n        \r\n        this.$panel.append(item.$element);\r\n\r\n        item.show();\r\n\r\n        this.items.push(item);\r\n    };\r\n    \r\n    EntityFiltersPanel.prototype.removeEntityFilter = function (filterInstance) {\r\n        var item = _.find(this.items, function (item) {\r\n            return item.filterInstance === filterInstance;\r\n        });\r\n        if (item) {\r\n            item.remove();\r\n\r\n            var index = _.indexOf(this.items, item);\r\n            this.items.splice(index, 1);\r\n        }\r\n    };\r\n\r\n    EntityFiltersPanel.prototype.expand = function () {\r\n        this.$panel.removeClass('collapsed');\r\n        this.triggerEventIfEnabled('expanded');\r\n    };\r\n\r\n    EntityFiltersPanel.prototype.collapse = function () {\r\n        this.$panel.addClass('collapsed');\r\n        this.triggerEventIfEnabled('collapsed');\r\n    };\r\n    \r\n    return EntityFiltersPanel;\r\n});\r\n\r\n\n","define('drops/errorHandling/errorHandling',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style'\r\n], function ($, Drop, Style) {\r\n    'use strict';\r\n\r\n    function ErrorHandling(options) {\r\n        Drop.call(this, $('<div/>'), options);\r\n\r\n        this.$element\r\n\t        .addClass('boxToBorderSize')\r\n            .css({\r\n                overflowY: 'auto',\r\n                overflowX: 'auto'\r\n            });\r\n\r\n        Style.renderStyles(this);\r\n    };\r\n\r\n    Drop.extend(ErrorHandling, Drop);\r\n\r\n    ErrorHandling.typeName = 'ErrorHandling';\r\n\r\n    ErrorHandling.prototype.preRender = function () {\r\n        this.applyPosition();\r\n        this.hide();\r\n    };\r\n\r\n    ErrorHandling.prototype.onError = function (errorArgs) {\r\n        this.showMessage(errorArgs.message);\r\n        \r\n        this.piping.busyIndicator.forceHide();\r\n        errorArgs.handled = true;\r\n    };\r\n\r\n    ErrorHandling.prototype.showMessage = function (message) {\r\n        this.$element.html(message.replace(/\\n/g, '<br />'));\r\n        this.show();\r\n    };\r\n\r\n    ErrorHandling.prototype.clearValue = function () {\r\n        this.$element.html('');\r\n        this.hide();\r\n    };\r\n\r\n    ErrorHandling.prototype.setValue = function (update) {\r\n        this.showMessage(update.value);\r\n    };\r\n\r\n    return ErrorHandling;\r\n});\n","define('drops/frame/frame',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/drop',\r\n    'lq/style'\r\n], function ($, _, Drop, Style) {\r\n\t'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            hasScrollbars: false\r\n        }\r\n    };\r\n\r\n\tvar Frame = function (options) {\r\n\t    Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        if (this.data.hasScrollbars) {\r\n            this.$frameContainer = $('<div class=\"frame-container\">')\r\n                .appendTo(this.$element);\r\n            this.$element.css({ overflow: \"auto\" });\r\n        }\r\n        else {\r\n            this.$element.css({ overflow: \"visible\" });\r\n        }\r\n\r\n\t    this.applyEventTrigger('mouseEnter', 'mouseenter');\r\n\t    this.applyEventTrigger('mouseLeave', 'mouseleave');\r\n\r\n        Style.renderStyles(this);\r\n\t};\r\n\r\n    Drop.extend(Frame, Drop);\r\n\r\n    Frame.typeName = 'Frame';\r\n\r\n    Frame.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n\t    this.applyPosition();\r\n\t};\r\n\r\n\tFrame.prototype.render = function ($element) {\r\n\t\treturn this.createAndRenderDrops($element);\r\n\t};\r\n\r\n\r\n    Frame.prototype.postRender = function () {\r\n        if (this.data.hasScrollbars) {\r\n\t        this.$element.css({ overflow: \"auto\" });\r\n\r\n            this.switchBeetweenAnchorModes();\r\n\r\n            this.$frameContainer.css({\r\n                position: 'absolute',\r\n                inset: '0px'\r\n            })\r\n            .appendTo(this.$element);\r\n        }\r\n\t    else {\r\n            this.$element.css({ overflow: \"visible\" });\r\n        }\r\n    };\r\n\r\n    Frame.prototype.addAnchorContainer = function () {\r\n        var sH = this.$element[0].scrollHeight;\r\n        var sW = this.$element[0].scrollWidth;\r\n        var self = this;\r\n        if (!this.$frameContainer) {\r\n            this.$frameContainer = $('<div class=\"frame-container\">')\r\n                .appendTo(this.$element);\r\n        }\r\n        _.each(this.$element.children(), function (child) {\r\n            $(child).appendTo(self.$frameContainer)\r\n        });\r\n        this.$frameContainer.css({\r\n                height: sH,\r\n                width: sW,\r\n                position: 'absolute',\r\n                inset: '0px'\r\n            })\r\n            .appendTo(this.$element);\r\n    };\r\n\r\n    Frame.prototype.removeAnchorContainer = function () {\r\n        if (this.$frameContainer) {\r\n            var self = this;\r\n            _.each(this.$frameContainer.children(), function (child) {\r\n                $(child).appendTo(self.$element)\r\n            });\r\n            this.$frameContainer.remove();\r\n        }\r\n    };\r\n\r\n    Frame.prototype.postWindowResize = function () {\r\n        if (this.data.hasScrollbars) {\r\n            this.switchBeetweenAnchorModes();\r\n        }\r\n    };\r\n\r\n    Frame.prototype.createRenderPromiseForChild = function (drop) {\r\n\t    return drop.render(this.$frameContainer || this.$element);\r\n\t};\r\n\r\n\tFrame.prototype.renderScrollbars = function (data) {\r\n\t    if (data.hasScrollbars) {\r\n\t        this.$element.css({ overflow: \"auto\" });\r\n            this.addAnchorContainer();\r\n        }\r\n\t    else {\r\n\t        this.$element.css({ overflow: \"visible\" });\r\n            this.removeAnchorContainer();\r\n        }\r\n\t};\r\n\r\n    Frame.prototype.frameSizesCalculationHelper = function () {\r\n        var sH = (this.$element[0].scrollHeight - this.$element[0].offsetHeight) <= 0 ? this.$element[0].offsetHeight : this.$element[0].scrollHeight;\r\n        var sW = (this.$element[0].scrollWidth - this.$element[0].offsetWidth) <= 0 ? this.$element[0].offsetWidth : this.$element[0].scrollWidth;\r\n        var hasVerticalScrollbar = this.$element[0].scrollHeight - this.$element[0].offsetHeight <= 0;\r\n        var hasHorizontalScrollbar = this.$element[0].scrollWidth - this.$element[0].offsetWidth <= 0;\r\n\r\n        return {\r\n            sH: sH,\r\n            sW: sW,\r\n            hasVerticalScrollbar: hasVerticalScrollbar,\r\n            hasHorizontalScrollbar: hasHorizontalScrollbar\r\n        };\r\n    };\r\n\r\n    Frame.prototype.switchBeetweenAnchorModes = function () {\r\n        var calcObject = this.frameSizesCalculationHelper();\r\n\r\n        if (calcObject.hasVerticalScrollbar) {\r\n            this.$frameContainer.css({\r\n                top: 0,\r\n                bottom: 0,\r\n                height: ''\r\n            });\r\n        } else {\r\n            this.$frameContainer.css({\r\n                height: calcObject.sH,\r\n                top: '',\r\n                bottom: ''\r\n            });\r\n        }\r\n\r\n        if (calcObject.hasHorizontalScrollbar) {\r\n            this.$frameContainer.css({\r\n                left: 0,\r\n                right: 0,\r\n                width: ''\r\n            });\r\n        } else {\r\n            this.$frameContainer.css({\r\n                width: calcObject.sW,\r\n                left: '',\r\n                right: ''\r\n            });\r\n        }\r\n    }\r\n\r\n\treturn Frame;\r\n});\r\n\r\n\n","define('drops/gauge/gauge',[\r\n    'jquery',\r\n    'lq',\r\n    'lq/drop',\r\n    'lq/windowSize'\r\n], function ($, lq, Drop, windowSize) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            range: {\r\n                start: -90,\r\n                end: 90\r\n            },\r\n            indicatorPosition: { // in %\r\n                x: '50',\r\n                y: '50'\r\n            },\r\n            indicatorOrigin: { // in %\r\n                x: '50',\r\n                y: '95'\r\n            },\r\n            indicatorScale: 100,\r\n            rotation: 0,\r\n            input: {\r\n                type: 'degrees',\r\n                start: 0,\r\n                end: 100\r\n            }\r\n        }\r\n    };\r\n\r\n    function Gauge(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.$background = $('<img />')\r\n            .css({\r\n                width: '100%',\r\n                height: '100%'\r\n            });\r\n\r\n        this.$indicator = $('<img />')\r\n            .css({\r\n                position: 'absolute'\r\n            });\r\n\r\n        this.$element\r\n            .append(this.$background, this.$indicator);\r\n        \r\n        this.hideIndicator();\r\n        if (this.data.indicatorImage) this.setIndicatorImage(this.data.indicatorImage);\r\n        if (this.data.backgroundImage) this.setBackgroundImage(this.data.backgroundImage);\r\n    };\r\n\r\n    Drop.extend(Gauge, Drop);\r\n\r\n    Gauge.typeName = 'Gauge';\r\n\r\n    Gauge.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n    };\r\n\r\n    Gauge.prototype.postRender = function () {\r\n        this.setupWindowResizeScaling();\r\n    };\r\n\r\n    Gauge.prototype.setupWindowResizeScaling = function () {\r\n        if ((this.data.bottom == null || this.data.top == null)\r\n            && (this.data.left == null || this.data.right == null))\r\n            return;\r\n\r\n        var self = this;\r\n\r\n        this.events(windowSize, {\r\n            'Changed': function () {\r\n                self.updateIndicator(self.value);\r\n            }\r\n        });\r\n    };\r\n\r\n    Gauge.prototype.setBackgroundImage = function (backgroundImage) {\r\n        this.$background.attr('src', lq.getTenantUploads(backgroundImage));\r\n    };\r\n\r\n    Gauge.prototype.setIndicatorImage = function (indicatorImage) {\r\n        this.$indicator.attr('src', lq.getTenantUploads(indicatorImage));\r\n    };\r\n\r\n    Gauge.prototype.clearValue = function () {\r\n        this.hideIndicator();\r\n    };\r\n\r\n    Gauge.prototype.setValue = function (update) {\r\n        this.updateIndicator(update.value);\r\n    };\r\n\r\n    Gauge.prototype.updateIndicator = function (value) {\r\n        if (!value && value !== 0) {\r\n            this.hideIndicator();\r\n        } else {\r\n            var position = this.getPositionOfIndicator(value);\r\n\r\n            if (position < this.data.range.start)\r\n                position = this.data.range.start;\r\n            else if (position > this.data.range.end)\r\n                position = this.data.range.end;\r\n\r\n            this.positionIndicator(position);\r\n            this.showIndicator();\r\n        }\r\n\r\n        this.value = value;\r\n    };\r\n\r\n    Gauge.prototype.getPositionOfIndicator = function (value) {\r\n        if (this.data.input.type === 'range')\r\n            return (value - this.data.input.start) * (this.data.range.end - this.data.range.start) / (this.data.input.end - this.data.input.start) + this.data.range.start;\r\n\r\n        return this.data.range.start < this.data.range.end ?\r\n                this.data.range.start + Number(value) : this.data.range.start - Number(value);\r\n    };\r\n\r\n    Gauge.prototype.hideIndicator = function () {\r\n        this.$indicator.css('visibility', 'hidden');\r\n    };\r\n\r\n    Gauge.prototype.showIndicator = function () {\r\n        this.$indicator.css('visibility', 'inherit');\r\n    };\r\n\r\n    Gauge.prototype.positionIndicator = function (rotation) {\r\n        var xFactor = this.getXScalingFactor();\r\n        var yFactor = this.getYScalingFactor();\r\n        var scaleX = (this.data.indicatorScale / 100) * xFactor;\r\n        var scaleY = (this.data.indicatorScale / 100) * yFactor;\r\n\r\n        var transform = 'translate(' + (-1 * this.data.indicatorOrigin.x) + '%, ' + (-1 * this.data.indicatorOrigin.y) + '%) rotate(' + rotation + 'deg) scale(' + scaleX + ', ' + scaleY + ')';\r\n        var transformOrigin = this.data.indicatorOrigin.x + '% ' + this.data.indicatorOrigin.y + '%';\r\n        \r\n        this.$indicator\r\n            .css({\r\n                left: this.data.indicatorPosition.x + '%',\r\n                top: this.data.indicatorPosition.y + '%',\r\n\r\n                '-ms-transform': transform,\r\n                '-webkit-transform': transform,\r\n                'transform': transform,\r\n\r\n                '-webkit-transform-origin': transformOrigin,\r\n                '-moz-transform-origin': transformOrigin,\r\n                '-o-transform-origin': transformOrigin,\r\n                'transform-origin': transformOrigin\r\n            });\r\n    };\r\n\r\n    Gauge.prototype.getXScalingFactor = function() {\r\n        return this.$element.width() / this.data.size.x;\r\n    };\r\n\r\n    Gauge.prototype.getYScalingFactor = function () {\r\n        return this.$element.height() / this.data.size.y;\r\n    };\r\n\r\n    return Gauge;\r\n});\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define('uuid',e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).uuidv4=e()}(this,(function(){\"use strict\";var t=\"undefined\"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||\"undefined\"!=typeof msCrypto&&\"function\"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto),e=new Uint8Array(16);function o(){if(!t)throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");return t(e)}var n=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function r(t){return\"string\"==typeof t&&n.test(t)}for(var i=[],u=0;u<256;++u)i.push((u+256).toString(16).substr(1));return function(t,e,n){var u=(t=t||{}).random||(t.rng||o)();if(u[6]=15&u[6]|64,u[8]=63&u[8]|128,e){n=n||0;for(var f=0;f<16;++f)e[n+f]=u[f];return e}return function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=(i[t[e+0]]+i[t[e+1]]+i[t[e+2]]+i[t[e+3]]+\"-\"+i[t[e+4]]+i[t[e+5]]+\"-\"+i[t[e+6]]+i[t[e+7]]+\"-\"+i[t[e+8]]+i[t[e+9]]+\"-\"+i[t[e+10]]+i[t[e+11]]+i[t[e+12]]+i[t[e+13]]+i[t[e+14]]+i[t[e+15]]).toLowerCase();if(!r(o))throw TypeError(\"Stringified UUID is invalid\");return o}(u)}}));\n","define('lq/runtimeDispatcher',[\r\n    'jquery',\r\n    'lq',\r\n    'when'\r\n], function ($, lq, when) {\r\n    'use strict';\r\n\r\n    var getCsrfToken = function () {\r\n        return $('input[name=\"__RequestVerificationToken\"]', $('#__AjaxAntiForgeryForm')).val();\r\n    };\r\n\r\n    var RuntimeDispatcher = function (busyIndicator, actionVersion, masterPageVersion) {\r\n        this.busyIndicator = busyIndicator;\r\n        this.actionVersion = actionVersion;\r\n        this.masterPageVersion = masterPageVersion;\r\n        this.csrfToken = getCsrfToken();\r\n    };\r\n    \r\n    RuntimeDispatcher.prototype.dispatch = function (url, data, success, options, error, doNotHandleUnauthorized) {\r\n        url = lq.getTenantUrl(url);\r\n        return this.dispatchToAbsoluteUrl(url, data, success, options, error, doNotHandleUnauthorized);\r\n    };\r\n\r\n    RuntimeDispatcher.prototype.dispatchToAbsoluteUrl = function (absoluteUrl, data, success, options, error, doNotHandleUnauthorized) {\r\n        data = data || {};\r\n        success = success || $.noop;\r\n        error = error || $.noop;\r\n        doNotHandleUnauthorized = doNotHandleUnauthorized || false;\r\n        var self = this;\r\n        var successFunc = function (result) {\r\n            self.busyIndicator.hide();\r\n            success(result);\r\n        };\r\n        var errorFunc = function (jqxhr) {\r\n            // Automatically reload the page if we get a 401\r\n            // when making a call to the url of the current tenant.\r\n            // In all other cases (e.g. the annotations integrations)\r\n            // the calling code should handle this.\r\n            //\r\n            // Note that this is not the best way to handle this\r\n            // (the user will briefly see an error dialog), cause\r\n            // we're using a mix of callbacks and promises\r\n            if (jqxhr.status === 401 && absoluteUrl.indexOf(lq.getTenantUrl('')) === 0 && !doNotHandleUnauthorized) {\r\n                window.location.reload();\r\n            } else {\r\n                try {\r\n                    error();\r\n                } finally {\r\n                    self.busyIndicator.hide();\r\n                }\r\n            }\r\n        };\r\n        options = options || {};\r\n\r\n        this.busyIndicator.show();\r\n        return this.doDispatch(absoluteUrl, data, successFunc, errorFunc, options);\r\n    };\r\n\r\n    RuntimeDispatcher.prototype.backgroundDispatch = function (url, data, success, options, error) {\r\n        url = lq.getTenantUrl(url);\r\n        return this.doDispatch(url, data || {}, success || $.noop, error || $.noop, options || {});\r\n    };\r\n\r\n    RuntimeDispatcher.prototype.doDispatch = function (url, data, successFunc, errorFunc, options) {\r\n        var headers = options.headers || {};\r\n\r\n        headers.LicquidActionVersion = this.actionVersion;\r\n        headers.LicquidMasterPageVersion = this.masterPageVersion;\r\n\r\n        if (this.csrfToken)\r\n            headers['__RequestVerificationToken'] = this.csrfToken;\r\n\r\n        return when($.ajax($.extend(\r\n            {\r\n                url: url,\r\n                type: 'POST',\r\n                cache: false,\r\n                data: JSON.stringify(data),\r\n                dataType: 'json',\r\n                contentType: \"application/json; charset=utf-8\",\r\n                headers: headers,\r\n                success: function (data, status, response) {\r\n                    if (data.status === \"VersionMismatch\") {\r\n                        window.location.reload();\r\n                        return;\r\n                    }\r\n                    successFunc(data, status, response);\r\n                },\r\n                error: errorFunc\r\n            },\r\n            options)));\r\n    };\r\n\r\n    RuntimeDispatcher.prototype.getMessageFromResponse = function (jqxhr) {\r\n        var response;\r\n        try {\r\n            response = JSON.parse(jqxhr.responseText);\r\n        }\r\n        catch (ignore) { }\r\n        return response && response.message;\r\n    };\r\n\r\n    RuntimeDispatcher.prototype.refreshCsrfToken = function (callback) {\r\n        var self = this;\r\n        $.get(lq.getTenantUrl('LicquidAction/GetCsrfToken'), function (data) {\r\n            self.csrfToken = $(data).val();\r\n            callback();\r\n        });\r\n    };\r\n\r\n    return RuntimeDispatcher;\r\n});\n","define('lq/runtimeBusyIndicator',[\r\n    'jquery',\r\n    'drops/modals',\r\n    'jquery.blockUI'\r\n], function ($, modals) {\r\n    'use strict';\r\n\r\n    function RuntimeBusyIndicator($element) {\r\n        this.showCount = 0;\r\n        this.opacity = 0;\r\n\r\n        this.$element = $element;\r\n\r\n        $.blockUI.defaults.overlayCSS = {\r\n            backgroundColor: '#FFF',\r\n            opacity: 0.7,\r\n            cursor: 'wait'\r\n        };\r\n        $.blockUI.defaults.fadeOut = 150;\r\n        $.blockUI.defaults.fadeIn = 750;\r\n\r\n        var imageHTML;\r\n        if (window.document.documentMode) {\r\n            imageHTML = '<img width=\"32\" height=\"32 alt=\"loading\" src=\"' + require.toUrl(\"../Lq/loading.gif\") + '\" />';\r\n        } else {\r\n            imageHTML = '<img width=\"64\" height=\"64\" alt=\"loading\" src=\"' + require.toUrl(\"../Lq/loading_new.svg\") + '\" />';\r\n        }\r\n        this.$description = $('<div />');\r\n        this.$indicator = $('<div />')\r\n            .append($(imageHTML))\r\n            .append(this.$description);\r\n\r\n        this.$container = $('<div />')\r\n            .append(this.$indicator)\r\n    };\r\n\r\n    RuntimeBusyIndicator.prototype.setOpacity = function (opacity) {\r\n        this.opacity = opacity;\r\n    };\r\n\r\n    RuntimeBusyIndicator.prototype.show = function () {\r\n        var self = this;\r\n\r\n        self.showCount++;\r\n        if (self.showCount === 1) {\r\n            self._show(1000);\r\n        }\r\n    };\r\n\r\n    RuntimeBusyIndicator.prototype.hide = function () {\r\n        var self = this;\r\n        self.showCount--;\r\n        if (self.showCount < 1) {\r\n            self.showCount = 0;\r\n            this.$element.unblock();\r\n            this.$description.text('');\r\n            if (self.timeout) {\r\n                clearTimeout(self.timeout);\r\n                self.timeout = undefined;\r\n            }\r\n        }\r\n    };\r\n\r\n    RuntimeBusyIndicator.prototype.showText = function (text) {\r\n        this.showHtml('<p>' + text + '</p>');\r\n    };\r\n\r\n    RuntimeBusyIndicator.prototype.showHtml = function (html) {\r\n        this.$description.html(html);\r\n    };\r\n\r\n    RuntimeBusyIndicator.prototype.showElement = function ($element) {\r\n        this.$indicator.detach();\r\n        $element.appendTo(this.$container);\r\n    };\r\n\r\n    RuntimeBusyIndicator.prototype.removeElement = function () {\r\n        this.$container.empty();\r\n        this.$indicator.appendTo(this.$container);\r\n    };\r\n\r\n    RuntimeBusyIndicator.prototype.forceHide = function () {\r\n        var self = this;\r\n        var original = Number(self.showCount);\r\n        self.showCount = 0;\r\n        self.hide();\r\n        return original;\r\n    };\r\n\r\n    RuntimeBusyIndicator.prototype.showWithCount = function (count) {\r\n        var self = this;\r\n        self.showCount = count;\r\n        self._show(0);\r\n    };\r\n\r\n    RuntimeBusyIndicator.prototype._show = function (timeInMilliSec) {\r\n        var overlayCss = {\r\n            backgroundColor: '#000',\r\n            opacity: this.opacity,\r\n            cursor: 'default'\r\n        };\r\n\r\n        var zIndex = modals.getNextZIndex()\r\n        \r\n        this.$element.block({\r\n            baseZ: zIndex,\r\n            showOverlay: true,\r\n            message: '',\r\n            overlayCSS: overlayCss\r\n        });\r\n\r\n        this.opacity = 0; //reset opacity\r\n\r\n        var self = this;\r\n        this.timeout = setTimeout(function () {\r\n            if (self.showCount > 0) {\r\n                self.$element.block({\r\n                    baseZ: zIndex,\r\n                    showOverlay: true,\r\n                    overlayCSS: overlayCss,\r\n                    css: {\r\n                        padding: 0,\r\n                        margin: 0,\r\n                        width: '30%',\r\n                        top: '40%',\r\n                        left: '35%',\r\n                        textAlign: 'center',\r\n                        color: '#000',\r\n                        border: '0',\r\n                        cursor: 'default'\r\n                    },\r\n                    message: self.$container\r\n                });\r\n            }\r\n        }, timeInMilliSec);\r\n    };\r\n\r\n    return RuntimeBusyIndicator;\r\n});\r\n\n","define('lq/busyIndicator',[\r\n    'jquery',\r\n    'lq/runtimeBusyIndicator'\r\n], function ($, RuntimeBusyIndicator) {\r\n    'use strict';\r\n    \r\n    return new RuntimeBusyIndicator($('body'));\r\n});\r\n\n","define('lq/dispatcher',[\r\n    'lq/runtimeDispatcher',\r\n    'lq/busyIndicator'\r\n], function (RuntimeDispatcher, busyIndicator) {\r\n    'use strict';\r\n    \r\n    return new RuntimeDispatcher(busyIndicator);\r\n});\r\n\n","define('drops/googleMap/googleMap',[\r\n    'jquery',\r\n    'when',\r\n    'uuid',\r\n    'lq',\r\n    'lq/frontendModules',\r\n    'lq/drop',\r\n    'lq/dispatcher',\r\n    'lq/style'\r\n], function ($, when, uuid, lq, FrontendModules, Drop, dispatcher, Style) {\r\n    \"use strict\";\r\n\r\n    var defaults = {\r\n        data: {\r\n            zoom: 13,\r\n            selectedlocationOption: \"hard coded\",\r\n            address: \"Palm Jumeirah\",\r\n            mapType: \"roadmap\",\r\n            mapStyle: 'default',\r\n            draggableMarkers: true,\r\n            size: { x: 500, y: 500 },\r\n            zoomAddr: 13,\r\n            zoomCoor: 13,\r\n            estimateDraggedAddress: false,\r\n            unknownAddressText: \"Unknown address\",\r\n            backgroundColor: \"#ea4335\",\r\n            borderColor: \"#b31412\",\r\n            glyphColor: \"#b31412\",\r\n            defaultMarkerScale: 1,\r\n        },\r\n    };\r\n    \r\n    var geoLocationRegex = /[(](-?[0-9]*.[0-9]*)[,][ ](-?[0-9]*.[0-9]*)[)]/;\r\n\r\n    var mapIds = {\r\n        plain: '3409f9b959a3719b'\r\n    }\r\n    var markers = [];\r\n\r\n    function GoogleMap(options) {\r\n        Drop.call(this, $(\"<div/>\"), defaults, options);\r\n\r\n        this.$map = $(\"<div />\")\r\n            .attr(\"id\", \"map-canvas\")\r\n            .css({\r\n                width: \"100%\",\r\n                height: \"100%\",\r\n                visibility: \"inherit\",\r\n            })\r\n            .appendTo(this.$element);\r\n\r\n        this.$element.addClass(\"boxToBorderSize\").css({\r\n            whiteSpace: \"pre-wrap\",\r\n        });\r\n\r\n        this.mapDeferred = when.defer();\r\n\r\n        Style.renderStyles(this);\r\n    };\r\n\r\n    Drop.extend(GoogleMap, Drop);\r\n\r\n    GoogleMap.typeName = \"GoogleMap\";\r\n\r\n    GoogleMap.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n        \r\n        var deferred = when.defer();\r\n        this.loadModule(deferred);\r\n        return deferred.promise;\r\n    };\r\n\r\n    GoogleMap.prototype.loadModule = function (deferred) {\r\n        var self = this;\r\n\r\n        FrontendModules.load(\"googleMap\", false).then(function (module) {\r\n            module\r\n                .loadGoogleMapsLibraries({\r\n                    libraryNames: [\"maps\", \"marker\"],\r\n                    url: lq.getTenantUrl(\"GoogleMaps/FetchApiKey\"),\r\n                    actionId: self.piping.actionId,\r\n                    dropId: self.data.id,\r\n                })\r\n                .then(function () {\r\n                    // Libraries are loaded, initialize the map and resolve the defer\r\n                    self.initMap();\r\n                    deferred.resolve();\r\n                });\r\n        });\r\n    };\r\n\r\n    GoogleMap.prototype.initMap = function () {\r\n        this.createGoogleMap();\r\n        if (this.isEventEnabled(\"locationSelected\")) {\r\n            this.addClickEventListenerToMap();\r\n        }\r\n        this.renderMap();\r\n    };\r\n\r\n    GoogleMap.prototype.getMapId = function () {\r\n        var style = this.data.mapStyle;\r\n        if (style === 'custom' && this.data.customStyleMapId) return this.data.customStyleMapId;\r\n        return mapIds[style] || this.data.id + '-' + Math.floor(Math.random() * 10000).toString();\r\n    };\r\n\r\n    GoogleMap.prototype.createGoogleMap = function () {\r\n        var myOptions = {\r\n            mapTypeId: this.getMapType(this.data.mapType),\r\n            mapId: this.getMapId()\r\n        };\r\n\r\n        this.basePinElementOptions = { scale: this.data.defaultMarkerScale };\r\n        if (this.data.useCustomBaseMarkerColors) {\r\n            this.basePinElementOptions = Object.assign({}, this.basePinElementOptions);\r\n            this.basePinElementOptions.background = this.data.backgroundColor;\r\n            this.basePinElementOptions.borderColor = this.data.borderColor;\r\n            this.basePinElementOptions.glyphColor = this.data.glyphColor;\r\n        }\r\n\r\n        if (!this.map) {\r\n            this.map = new window.google.maps.Map(this.$map.get(0), myOptions);\r\n            this.pointerEventsBlocked = true;\r\n            this.$map.css(\"pointer-events\", \"none\");\r\n        }\r\n    };\r\n\r\n    GoogleMap.prototype.addClickEventListenerToMap = function () {\r\n        var self = this;\r\n\r\n        window.google.maps.event.addListener(this.map, \"click\", function (event) {\r\n            if (self.data.latParam) {\r\n                self.piping.parameters.locals.setValue(self.data.latParam, event.latLng.lat());\r\n            }\r\n            if (self.data.lngParam) {\r\n                self.piping.parameters.locals.setValue(self.data.lngParam, event.latLng.lng());\r\n            }\r\n            if (self.data.addressParam) {\r\n                dispatcher\r\n                    .dispatch(\"GoogleMaps/Geocode\", {\r\n                        actionId: self.piping.actionId,\r\n                        dropId: self.data.id,\r\n                        lat: event.latLng.lat(),\r\n                        lng: event.latLng.lng(),\r\n                    })\r\n                    .then(function (response) {\r\n                        if (response.success) {\r\n                            if (response.formatted_address) {\r\n                                self.piping.parameters.locals.setValue(\r\n                                    self.data.addressParam,\r\n                                    response.formatted_address\r\n                                );\r\n                                self.triggerEventIfEnabled(\"locationSelected\");\r\n                            }\r\n                        } else {\r\n                            alert(\r\n                                \"Failed the geocoding of the following lat lng values: \" +\r\n                                    event.latLng.lat() +\r\n                                    \" \" +\r\n                                    event.latLng.lng() +\r\n                                    \".\\nLeave the 'Address parameter' empty in the designer to skip the geocoding.\"\r\n                            );\r\n                        }\r\n                    });\r\n            } else {\r\n                self.triggerEventIfEnabled(\"locationSelected\");\r\n            }\r\n        });\r\n    };\r\n\r\n    GoogleMap.prototype.renderMap = function () {\r\n        var self = this;\r\n        if (this.data.selectedlocationOption === 'hard coded') {\r\n            if (this.data.address) {\r\n                this.goToAddress(this.data.address);\r\n            }\r\n            else if (this.data.lat && this.data.lng) {\r\n                this.goToCoordinates(this.data);\r\n            }\r\n        } else if (this.data.selectedlocationOption === \"datasource addresses\") {\r\n            this.piping.datasources.registerDatasourceListener(this.data.dataSource, function (data) {\r\n                self.deleteMarkers(self.map);\r\n                if (data.results.length !== 0) {\r\n                    for (var i = 0; i < data.results.length; i++) {\r\n                        var resultAddress = data.results[i][self.data.addressOutput];\r\n                        \r\n                        if (resultAddress != null) {\r\n                            dispatcher\r\n                                .dispatch(\"GoogleMaps/Geocode\", {\r\n                                    actionId: self.piping.actionId,\r\n                                    dropId: self.data.id,\r\n                                    address: resultAddress,\r\n                                })\r\n                                .then(self.forwardGeoCode.bind(self, data.results[i]));\r\n                        }\r\n                    }\r\n                } else {\r\n                    self.setDefaults(self.map);\r\n                }\r\n            });\r\n        } else if (this.data.selectedlocationOption === \"datasource coordinates\") {\r\n            this.piping.datasources.registerDatasourceListener(this.data.dataSource, function (data) {\r\n                self.deleteMarkers(self.map);\r\n                var onlyNullFlag = true;\r\n                for (var i = 0; i < data.results.length; i++) {\r\n                    if (data.results[i][self.data.latOutput] && data.results[i][self.data.lngOutput]) {\r\n                        onlyNullFlag = false;\r\n                        var marker = self.createMarker(data.results[i]);\r\n                        window.google.maps.event.addListener(\r\n                            marker,\r\n                            \"click\",\r\n                            self.markerClicked.bind(self, data.results[i])\r\n                        );\r\n                        if (self.data.draggableMarkers)\r\n                            window.google.maps.event.addListener(\r\n                                marker,\r\n                                \"dragend\",\r\n                                self.markerDragged.bind(self, data.results[i])\r\n                            );\r\n                    }\r\n                }\r\n                if (onlyNullFlag) {\r\n                    self.setDefaults(self.map);\r\n                } else {\r\n                    self.calculateMarkerBounds(self.map);\r\n                }\r\n            });\r\n        }\r\n        this.mapDeferred.resolve(this.map);\r\n    };\r\n\r\n    GoogleMap.prototype.clearValue = $.noop;\r\n\r\n    GoogleMap.prototype.setValue = function (data) {\r\n        this.goToLocation(data.value);\r\n    };\r\n\r\n    GoogleMap.prototype.goToLocation = function (value) {\r\n        var self = this;\r\n        if (self.data.selectedlocationOption === \"query address\") {\r\n            self.goToAddress(value);\r\n        } else if (self.data.selectedlocationOption === \"query coordinates\") {\r\n            self.goToCoordinates(value);\r\n        }\r\n    };\r\n\r\n    GoogleMap.prototype.goToCoordinates = function (coordinates) {\r\n        var self = this;\r\n\r\n        try {\r\n            if (coordinates.lat !== undefined && coordinates.lng !== undefined) {\r\n                self.renderValue(coordinates);\r\n            } else {\r\n                var seperator = coordinates.indexOf(\";\");\r\n                if (seperator != -1) {\r\n                    var slat = coordinates.substring(0, seperator);\r\n                    var slng = coordinates.substring(seperator + 1);\r\n                    var flat = parseFloat(slat);\r\n                    var flng = parseFloat(slng);\r\n                    if (flat < 85 && flat > -85 && flng < 180 && flng > -180) {\r\n                        self.renderValue({\r\n                            lat: flat,\r\n                            lng: flng,\r\n                        });\r\n                    }\r\n                }\r\n            }\r\n        } catch (e) {}\r\n    };\r\n\r\n    GoogleMap.prototype.goToAddress = function (address) {\r\n        var self = this;\r\n        \r\n        dispatcher\r\n            .dispatch(\"GoogleMaps/Geocode\", {\r\n                actionId: self.piping.actionId,\r\n                dropId: self.data.id,\r\n                address: address,\r\n            })\r\n            .then(function (response) {\r\n                if (response.status == 'OK') {\r\n                    var locationCoordinates = `(${response.lat}, ${response.lng})`;\r\n                    var result = geoLocationRegex.exec(locationCoordinates);\r\n                    if (result.length >= 3) {\r\n                        self.renderValue({\r\n                            lat: result[1],\r\n                            lng: result[2],\r\n                        });\r\n                    }\r\n                } else if ([\"query address\", \"query coordinates\"].includes(self.data.selectedlocationOption)) {\r\n                    self.triggerEventIfEnabled(\"unknownMapping\")\r\n                };\r\n            });\r\n    };\r\n\r\n    GoogleMap.prototype.renderValue = function (data) {\r\n        var self = this;\r\n\r\n        var latlng = new window.google.maps.LatLng(data.lat, data.lng);\r\n\r\n        var myOptions = {\r\n            zoom: this.data.zoom,\r\n            center: latlng,\r\n            mapTypeId: this.getMapType(self.data.mapType),\r\n        };\r\n\r\n        this.map.setOptions(myOptions);\r\n\r\n        var marker = self.createMarker(undefined, latlng);\r\n        data.eventArg = uuid();\r\n        \r\n        window.google.maps.event.addListener(marker, \"click\", self.markerClicked.bind(self, data));\r\n        \r\n        if (this.data.draggableMarkers) {\r\n            window.google.maps.event.addListener(marker, \"dragend\", self.markerDragged.bind(self, data));\r\n        }\r\n        \r\n        if (this.data.mappedMarkerId) {\r\n            this.piping.parameters.locals.setValue(this.data.mappedMarkerId, data.eventArg);\r\n        }\r\n\r\n        this.unblockPointerEvents();\r\n    };\r\n\r\n    GoogleMap.prototype.getMapType = function (mapType) {\r\n        switch (mapType) {\r\n            case \"terrain\":\r\n                return window.google.maps.MapTypeId.TERRAIN;\r\n            case \"satellite\":\r\n                return window.google.maps.MapTypeId.SATELLITE;\r\n            case \"hybrid\":\r\n                return window.google.maps.MapTypeId.HYBRID;\r\n            default:\r\n                return window.google.maps.MapTypeId.ROADMAP;\r\n        }\r\n    };\r\n\r\n    GoogleMap.prototype.markerClicked = function (markerData) {\r\n        this.triggerEventIfEnabled(\"clicked\", markerData[this.data.eventArg] || markerData.eventArg);\r\n    };\r\n\r\n    GoogleMap.prototype.geocodePosition = function (lat, lng, writeParam) {\r\n        var self = this;\r\n        var deferred = $.Deferred();\r\n\r\n        dispatcher\r\n            .dispatch(\"GoogleMaps/Geocode\", {\r\n                actionId: self.piping.actionId,\r\n                dropId: self.data.id,\r\n                lat: lat,\r\n                lng: lng,\r\n            })\r\n            .then(function (response) {\r\n                if (\r\n                    response.status === 'OK' &&\r\n                    response.status !== 'ZERO_RESULTS'\r\n                ) {\r\n                    self.piping.parameters.locals.setValue(writeParam, response.formatted_address);\r\n                } else {\r\n                    self.piping.parameters.locals.setValue(writeParam, self.data.unknownAddressText);\r\n                }\r\n                deferred.resolve();\r\n            });\r\n\r\n        return deferred.promise();\r\n    };\r\n\r\n    GoogleMap.prototype.markerDragged = async function (markerData, marker) {\r\n        var self = this;\r\n        if (this.data.draggedLatParam && this.data.draggedLngParam) {\r\n            this.piping.parameters.locals.setValue(this.data.draggedLatParam, marker.latLng.lat());\r\n            this.piping.parameters.locals.setValue(this.data.draggedLngParam, marker.latLng.lng());\r\n        }\r\n\r\n        if (this.data.estimateDraggedAddress && this.data.draggedAddressParam) {\r\n            this.geocodePosition(marker.latLng.lat(), marker.latLng.lng(), this.data.draggedAddressParam).done(\r\n                function () {\r\n                    self.triggerEventIfEnabled(\"pinDragged\", markerData[self.data.eventArg] || markerData.eventArg);\r\n                }\r\n            );\r\n        } else {\r\n            self.triggerEventIfEnabled(\"pinDragged\", markerData[self.data.eventArg] || markerData.eventArg)\r\n        };\r\n    };\r\n\r\n    GoogleMap.prototype.forwardGeoCode = function (markerData, response) {\r\n        var self = this;\r\n\r\n        if (response.status === 'OK') {\r\n            var locationCoordinates = `(${response.lat}, ${response.lng})`;\r\n            var result = geoLocationRegex.exec(locationCoordinates);\r\n\r\n            if (result.length >= 3) {\r\n                var marker = self.createMarker(markerData, new window.google.maps.LatLng(result[1], result[2]));\r\n                window.google.maps.event.addListener(marker, \"click\", self.markerClicked.bind(self, markerData));\r\n                if (self.data.draggableMarkers)\r\n                    window.google.maps.event.addListener(\r\n                        marker,\r\n                        \"dragend\",\r\n                        self.markerDragged.bind(self, markerData, marker)\r\n                    );\r\n            }\r\n            self.calculateMarkerBounds(self.map);\r\n        } else if (markers.length === 0) {\r\n            this.setDefaults(this.map);\r\n        }\r\n    };\r\n\r\n    GoogleMap.prototype.setDefaults = function (map) {\r\n        var self = this;\r\n        var lat, lng, address, zooom, isVisible;\r\n\r\n        if (this.data.selectedlocationOption === \"datasource addresses\") {\r\n            isVisible = this.data.showMapAddr;\r\n            lat = parseFloat(this.data.latAddr);\r\n            lng = parseFloat(this.data.lngAddr);\r\n            address = this.data.addressAddr;\r\n            zooom = this.data.zoomAddr;\r\n        } else if (this.data.selectedlocationOption === \"datasource coordinates\") {\r\n            isVisible = this.data.showMapCoor;\r\n            lat = parseFloat(this.data.latCoor);\r\n            lng = parseFloat(this.data.lngCoor);\r\n            address = this.data.addressCoor;\r\n            zooom = this.data.zoomCoor;\r\n        }\r\n\r\n        this.deleteMarkers(map);\r\n\r\n        if (!isVisible) {\r\n            // this.$map.css({\r\n            //     visibility: 'hidden'\r\n            // })\r\n            return;\r\n        }\r\n        if (address) {\r\n            dispatcher\r\n                .dispatch(\"GoogleMaps/Geocode\", {\r\n                    actionId: self.piping.actionId,\r\n                    dropId: self.data.id,\r\n                    address: address,\r\n                })\r\n                .then(function (response) {\r\n                    if (response.status === 'OK') {\r\n                        var locationCoordinates = `(${response.lat}, ${response.lng})`;\r\n                        var result = geoLocationRegex.exec(locationCoordinates);\r\n                        if (result.length >= 3) {\r\n                            var latlng = new window.google.maps.LatLng(result[1], result[2]);\r\n                            map.setCenter(latlng);\r\n                            map.setZoom(zooom);\r\n                        }\r\n                    }\r\n                });\r\n        } else if (lat && lng) {\r\n            map.setCenter({ lat: lat, lng: lng });\r\n            map.setZoom(zooom);\r\n        } else {\r\n            // If no address and lat-lng values are given, sets the map's center on Belgium.\r\n            map.setCenter({ lat: 50.503887, lng: 4.469936 });\r\n            map.setZoom(7);\r\n        }\r\n\r\n        this.unblockPointerEvents();\r\n    };\r\n\r\n    GoogleMap.prototype.deleteMarkers = function () {\r\n        for (var i = 0; i < markers.length; i++) {\r\n            markers[i].setMap(null);\r\n        }\r\n\r\n        markers = [];\r\n    };\r\n\r\n    GoogleMap.prototype.calculateMarkerBounds = function (map) {\r\n        if (markers.length === 1) {\r\n            map.setCenter(markers[0].position);\r\n            map.setZoom(14); // Default zoom if database has only one value.\r\n        } else if (markers.length !== 0) {\r\n            var markerBounds = new window.google.maps.LatLngBounds();\r\n            \r\n            for (var i = 0; i < markers.length; i++) {\r\n                markerBounds.extend(markers[i].position);\r\n            }\r\n\r\n            map.fitBounds(markerBounds);\r\n        }\r\n        this.unblockPointerEvents();\r\n    };\r\n\r\n    GoogleMap.prototype.getMap = function () {\r\n        return this.mapDeferred.promise;\r\n    };\r\n\r\n    GoogleMap.prototype.licquidMethod_deleteMarkers = function () {\r\n        this.deleteMarkers();\r\n    };\r\n\r\n    GoogleMap.prototype.unblockPointerEvents = function () {\r\n        if (this.pointerEventsBlocked) {\r\n            this.pointerEventsBlocked = false;\r\n            this.$map.css(\"pointer-events\", \"\");\r\n        }\r\n    };\r\n\r\n    GoogleMap.prototype.createMarker = function (markerData, latlng) {\r\n        if (!latlng && (!markerData[this.data.latOutput] || !markerData[this.data.lngOutput])) \r\n            return;\r\n\r\n        var marker = new window.google.maps.marker.AdvancedMarkerElement({\r\n            map: this.map,\r\n            position: latlng || new window.google.maps.LatLng(markerData[this.data.latOutput], markerData[this.data.lngOutput]),\r\n            draggable: this.data.draggableMarkers,\r\n        });\r\n\r\n        var pinElementOptions = Object.assign({}, this.basePinElementOptions);\r\n\r\n        if (markerData) {\r\n            if (this.data.useDynamicMarkerColorsFromDatasource) {\r\n                pinElementOptions.background = markerData[this.data.backgroundColorOutput] || pinElementOptions.background;\r\n                pinElementOptions.borderColor = markerData[this.data.borderColorOutput] || pinElementOptions.borderColor;\r\n                pinElementOptions.glyphColor = markerData[this.data.glyphColorOutput] || pinElementOptions.glyphColor;\r\n            }\r\n\r\n            if (this.data.markerScaleOutput) {\r\n                pinElementOptions.scale = markerData[this.data.markerScaleOutput] || pinElementOptions.scale;\r\n            }\r\n\r\n            if (this.data.markerTitleOutput) {\r\n                marker.title = markerData[this.data.markerTitleOutput];\r\n            } \r\n        }\r\n\r\n        marker.content = new window.google.maps.marker.PinElement(pinElementOptions).element;\r\n        markers.push(marker);\r\n\r\n        return marker;\r\n    };\r\n\r\n    return GoogleMap;\r\n});\r\n\n","define('drops/grid/gridPager',[\r\n    'jquery'\r\n], function($) {\r\n\r\n    var GridPager = function (grid, $parent) {\r\n        this.$element = $('<div class=\"pagerTable\" />')\r\n            .appendTo($parent);\r\n\r\n        this.$firstDiv = $('<div  class=\"pagerCell\"/>')\r\n            .append($('<a href=\"#\"/>')\r\n                .on('click', function () {\r\n                    grid.first();\r\n                })\r\n                .append($('<div class=\"pagerFirst\" />')))\r\n            .appendTo(this.$element);\r\n\r\n        this.$previousDiv = $('<div class=\"pagerCell\" />')\r\n            .append($('<a href=\"#\"/>')\r\n                .on('click', function () {\r\n                    grid.previous();\r\n                })\r\n                .append($('<div class=\"pagerPrevious\" />')))\r\n            .appendTo(this.$element);\r\n\r\n        this.$pagerText = $('<div class=\"pagerText pagerCell\" />')\r\n                .appendTo(this.$element);\r\n\r\n        this.$nextDiv = $('<div class=\"pagerCell\"/>')\r\n            .append($('<a href=\"#\"/>')\r\n                .on('click', function () {\r\n                    grid.next();\r\n                })\r\n                .append($('<div class=\"pagerNext\" />')))\r\n            .appendTo(this.$element);\r\n\r\n        this.$lastDiv = $('<div class=\"pagerCell\" />')\r\n            .append($('<a href=\"#\"/>')\r\n                .on('click', function () {\r\n                    grid.last();\r\n                })\r\n                .append($('<div class=\"pagerLast\" />')))\r\n            .appendTo(this.$element);\r\n    };\r\n\r\n    GridPager.prototype.update = function (page, pageSize, totalResults) {\r\n        var from = page * pageSize + 1;\r\n        var to = totalResults < ((page + 1) * pageSize) ? totalResults : ((page + 1) * pageSize);\r\n\r\n        if (from === 1) {\r\n            this.$firstDiv.hide();\r\n            this.$previousDiv.hide();\r\n        }\r\n\r\n        if (to === totalResults) {\r\n            this.$nextDiv.hide();\r\n            this.$lastDiv.hide();\r\n        }\r\n        \r\n        if (totalResults === 0)\r\n            this.setPagerText(' 0 .. 0 (0) ');\r\n        else\r\n            this.setPagerText(' ' + from + ' .. ' + to + ' (' + totalResults + ') ');\r\n    };\r\n\r\n    GridPager.prototype.setPagerText = function(text) {\r\n        this.$pagerText.text(text);\r\n    };\r\n\r\n    return GridPager;\r\n});\n","define('drops/grid/grid',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'underscore',\r\n    'lq/util',\r\n    'drops/grid/gridPager',\r\n    'lq/html'\r\n], function ($, Drop, Style, _, util, GridPager, html) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            showNavigationAtTop: false,\r\n            showNavigationAtBottom: true,\r\n            pageSize: 10\r\n        }\r\n    };\r\n\r\n    function Grid(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.data.columns = _.map(this.data.columns, function (column) {\r\n            return util.convertListOfKeyValuesToObject(column);\r\n        });\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing) || {};\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize');\r\n\r\n        this.$wrapper = $('<div />')\r\n            .css({\r\n                position: 'absolute',\r\n                top: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                left: 0,\r\n                whiteSpace: 'pre-wrap',\r\n                overflow: 'auto'\r\n            })\r\n            .appendTo(this.$element);\r\n\r\n        this.page = 0;\r\n\r\n        this.renderStyles();\r\n\r\n        this.update();\r\n    }\r\n\r\n    Drop.extend(Grid, Drop);\r\n\r\n    Grid.typeName = 'Grid';\r\n\r\n    Grid.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n\r\n        var self = this;\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.dataSource,\r\n            function(data) {\r\n                self.update(data);\r\n            },\r\n            function(data) {\r\n                self.decorateDataSourceData(data);\r\n            });\r\n\r\n        this.formatter = this.piping.formatting.createFormatter(this.data.formatting);\r\n    \tthis.applyPosition();\r\n    };\r\n\r\n    Grid.prototype.renderStyles = function () {\r\n    \tvar self = this;\r\n    \t// TODO need to fix this in backend\r\n    \tself.data.styles = self.data.styleId;\r\n    \tStyle.renderStyles(self, 'gridstyle-');\r\n    };\r\n\r\n    Grid.prototype.decorateDataSourceData = function (data) {\r\n        data.page = this.page;\r\n        data.pageSize = this.data.pageSize;\r\n        if (this.sortParameters) {\r\n            data.sortParameters = this.sortParameters;\r\n        }\r\n    };\r\n\r\n    Grid.prototype.dispatchQuery = function () {\r\n        var self = this;\r\n        this.piping.queryDispatcher.dispatch(\r\n            this.data.dataSource,\r\n            function (data) { self.update(data, self); },\r\n            function (data) { self.decorateDataSourceData(data); });\r\n    };\r\n\r\n    Grid.prototype.groupColumnsFromLeftToRight = function (allRows, indexOfFirstRow, indexOfLastRow, allGroupedColumns, indexOfThisGroup) {\r\n        if (indexOfThisGroup > allGroupedColumns.length - 1) {\r\n            return;\r\n        }\r\n\r\n        var outputKey = allGroupedColumns[indexOfThisGroup].output;\r\n        var indexOfCurrentRow = indexOfLastRow;\r\n        while (indexOfCurrentRow >= indexOfFirstRow) {\r\n            if (indexOfCurrentRow > indexOfFirstRow && allRows[indexOfCurrentRow][outputKey] === allRows[indexOfCurrentRow - 1][outputKey]) {\r\n                allRows[indexOfCurrentRow][outputKey] = null;\r\n                indexOfCurrentRow -= 1;\r\n            } else {\r\n                this.groupColumnsFromLeftToRight(allRows, indexOfCurrentRow, indexOfLastRow, allGroupedColumns, indexOfThisGroup + 1);\r\n                indexOfCurrentRow -= 1;\r\n                indexOfLastRow = indexOfCurrentRow;\r\n            }\r\n        }\r\n    };\r\n\r\n    Grid.prototype.update = function (data) {\r\n        var self = this;\r\n        self.selectedRowIndex = null;\r\n\r\n        if (data == undefined) {\r\n            data = {};\r\n            data.totalResults = 0;\r\n            data.results = [];\r\n        }\r\n        \r\n        var displayData = _.map(data.results, function (row) {\r\n            return $.extend({}, row);\r\n        });\r\n        var columnsToGroupOn = _.filter(self.data.columns, function (column) {\r\n            return column.group;\r\n        });\r\n        self.groupColumnsFromLeftToRight(displayData, 0, displayData.length - 1, columnsToGroupOn, 0);\r\n\r\n        self.data.totalResults = data.totalResults;\r\n        self.$wrapper.empty();\r\n\r\n        if (this.data.showNavigationAtTop)\r\n            new GridPager(this, this.$wrapper).update(this.page, this.data.pageSize, this.data.totalResults);\r\n\r\n        var $table = $('<table class=\"grid\">')\r\n            .css({\r\n                tableLayout: self.data.autoSizeColumns ? null : 'fixed',\r\n                width: self.data.autoSizeColumns ? '100%' : self.calculateColumnWidthSum(),\r\n                textAlign: 'left',\r\n                borderSpacing: 0,\r\n                lineHeight: 1\r\n            });\r\n\r\n        if (!self.data.autoSizeColumns) {\r\n            var $colgroup = $('<colgroup>').appendTo($table);\r\n            _.each(self.data.columns, function (column) {\r\n                $colgroup.append('<col style=\"width:' + column.width + 'px;\"/>');\r\n            });\r\n        }\r\n\r\n        //Create header row\r\n        var $thead = $('<thead>').appendTo($table);\r\n        var $headerRow = $('<tr>').appendTo($thead);\r\n\r\n        _.each(self.data.columns, function (column) {\r\n            var $th = $('<th>')\r\n                .css('overflow', self.data.autoSizeColumns ? null : 'hidden')\r\n                .appendTo($headerRow);\r\n            $('<a href=\"#\">')\r\n                .text(column.alias)\r\n                .on('click', function () { self.sortByColumn(column); })\r\n                .appendTo($th);\r\n        });\r\n\r\n        $table.appendTo(self.$wrapper);\r\n\r\n        var clickedEvent = this.getEventDataFor('clicked');\r\n        var selectedEvent = this.getEventDataFor('selected');\r\n        var deselectedEvent = this.getEventDataFor('deselected');\r\n\r\n        //create value rows\r\n        $.each(displayData, function (rowKey, row) {\r\n            var $row = $('<tr/>');\r\n            \r\n            _.each(self.data.columns, function (column) {\r\n                var colType = data.outputs[column.output];\r\n                var value = self.formatter.convertFromLicquidFormat(colType, row[column.output]);\r\n\r\n                if (row[column.output] === null) {\r\n                    value = '&nbsp;';\r\n                }\r\n                \r\n                var $cell = $('<td/>')\r\n                    .html(html.sanitize(value))\r\n                    .appendTo($row);\r\n\r\n                if (!self.data.autoSizeColumns) {\r\n                    $cell.css({ overflow: 'hidden' });\r\n                }\r\n            });\r\n\r\n            if (clickedEvent.enabled || deselectedEvent.enabled || selectedEvent.enabled) {\r\n                $row\r\n                    .addClass('clickablerow')\r\n                    .on('click', function () {\r\n                        if (deselectedEvent.enabled || selectedEvent.enabled) {\r\n                            var isSelectedRow = $row.hasClass('selectedrow');\r\n                            $row.parent().children().removeClass('selectedrow');\r\n                            if (!isSelectedRow)\r\n                                $row.addClass('selectedrow');\r\n                        }\r\n                        self.triggerEventIfEnabled('clicked', row[self.data.eventArg]);\r\n                        if (self.selectedRowIndex === rowKey) {\r\n                            self.triggerEventIfEnabled('deselected', data.results[self.selectedRowIndex][self.data.eventArg]);\r\n                            self.selectedRowIndex = null;\r\n                        } else if (rowKey !== self.selectedRowIndex) {\r\n                            self.triggerEventIfEnabled('selected', row[self.data.eventArg]);\r\n                            self.selectedRowIndex = rowKey;\r\n                        }\r\n                    });\r\n            }\r\n\r\n            $row.appendTo($table);\r\n        });\r\n\r\n        if (this.data.showNavigationAtBottom)\r\n            new GridPager(this, this.$wrapper).update(this.page, this.data.pageSize, this.data.totalResults);\r\n    };\r\n    \r\n    Grid.prototype.first = function () {\r\n        this.page = 0;\r\n        this.dispatchQuery();\r\n    };\r\n\r\n    Grid.prototype.previous = function () {\r\n        if (this.page > 0) {\r\n            this.page--;\r\n            this.dispatchQuery();\r\n        }\r\n    };\r\n\r\n    Grid.prototype.next = function () {\r\n        if (this.page < Math.floor(this.data.totalResults / this.data.pageSize)) {\r\n            this.page++;\r\n            this.dispatchQuery();\r\n        }\r\n    };\r\n\r\n    Grid.prototype.last = function () {\r\n        this.page = Math.floor(this.data.totalResults / this.data.pageSize - 0.01);\r\n        this.dispatchQuery();\r\n    };\r\n    \r\n    Grid.prototype.calculateColumnWidthSum = function () {\r\n        var self = this;\r\n        return _.reduce(self.data.columns, function (sum, col) {\r\n            return sum + col.width;\r\n        }, 0);\r\n    };\r\n\r\n    Grid.prototype.sortByColumn = function (column) {\r\n        var self = this;\r\n        var descending = self.sortParameters && self.sortParameters[0].output === column.output\r\n            && !self.sortParameters[0].descending;\r\n\r\n        self.sortParameters = [{ output: column.output, descending: descending }];\r\n        self.dispatchQuery();\r\n    };\r\n\r\n    return Grid;\r\n});\r\n\n","'use strict';\r\n\r\n/**\r\n * Copyright Marc J. Schmidt. See the LICENSE file at the top-level\r\n * directory of this distribution and at\r\n * https://github.com/marcj/css-element-queries/blob/master/LICENSE.\r\n */\r\n(function (root, factory) {\r\n    if (typeof define === \"function\" && define.amd) {\r\n        define('ResizeSensor',factory);\r\n    } else if (typeof exports === \"object\") {\r\n        module.exports = factory();\r\n    } else {\r\n        root.ResizeSensor = factory();\r\n    }\r\n}(typeof window !== 'undefined' ? window : this, function () {\r\n\r\n    // Make sure it does not throw in a SSR (Server Side Rendering) situation\r\n    if (typeof window === \"undefined\") {\r\n        return null;\r\n    }\r\n    // https://github.com/Semantic-Org/Semantic-UI/issues/3855\r\n    // https://github.com/marcj/css-element-queries/issues/257\r\n    var globalWindow = typeof window != 'undefined' && window.Math == Math\r\n        ? window\r\n        : typeof self != 'undefined' && self.Math == Math\r\n            ? self\r\n            : Function('return this')();\r\n    // Only used for the dirty checking, so the event callback count is limited to max 1 call per fps per sensor.\r\n    // In combination with the event based resize sensor this saves cpu time, because the sensor is too fast and\r\n    // would generate too many unnecessary events.\r\n    var requestAnimationFrame = globalWindow.requestAnimationFrame ||\r\n        globalWindow.mozRequestAnimationFrame ||\r\n        globalWindow.webkitRequestAnimationFrame ||\r\n        function (fn) {\r\n            return globalWindow.setTimeout(fn, 20);\r\n        };\r\n\r\n    /**\r\n     * Iterate over each of the provided element(s).\r\n     *\r\n     * @param {HTMLElement|HTMLElement[]} elements\r\n     * @param {Function}                  callback\r\n     */\r\n    function forEachElement(elements, callback){\r\n        var elementsType = Object.prototype.toString.call(elements);\r\n        var isCollectionTyped = ('[object Array]' === elementsType\r\n            || ('[object NodeList]' === elementsType)\r\n            || ('[object HTMLCollection]' === elementsType)\r\n            || ('[object Object]' === elementsType)\r\n            || ('undefined' !== typeof jQuery && elements instanceof jQuery) //jquery\r\n            || ('undefined' !== typeof Elements && elements instanceof Elements) //mootools\r\n        );\r\n        var i = 0, j = elements.length;\r\n        if (isCollectionTyped) {\r\n            for (; i < j; i++) {\r\n                callback(elements[i]);\r\n            }\r\n        } else {\r\n            callback(elements);\r\n        }\r\n    }\r\n\r\n    /**\r\n    * Get element size\r\n    * @param {HTMLElement} element\r\n    * @returns {Object} {width, height}\r\n    */\r\n    function getElementSize(element) {\r\n        if (!element.getBoundingClientRect) {\r\n            return {\r\n                width: element.offsetWidth,\r\n                height: element.offsetHeight\r\n            }\r\n        }\r\n\r\n        var rect = element.getBoundingClientRect();\r\n        return {\r\n            width: Math.round(rect.width),\r\n            height: Math.round(rect.height)\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Apply CSS styles to element.\r\n     *\r\n     * @param {HTMLElement} element\r\n     * @param {Object} style\r\n     */\r\n    function setStyle(element, style) {\r\n        Object.keys(style).forEach(function(key) {\r\n            element.style[key] = style[key];\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Class for dimension change detection.\r\n     *\r\n     * @param {Element|Element[]|Elements|jQuery} element\r\n     * @param {Function} callback\r\n     *\r\n     * @constructor\r\n     */\r\n    var ResizeSensor = function(element, callback) {\r\n        /**\r\n         *\r\n         * @constructor\r\n         */\r\n        function EventQueue() {\r\n            var q = [];\r\n            this.add = function(ev) {\r\n                q.push(ev);\r\n            };\r\n\r\n            var i, j;\r\n            this.call = function(sizeInfo) {\r\n                for (i = 0, j = q.length; i < j; i++) {\r\n                    q[i].call(this, sizeInfo);\r\n                }\r\n            };\r\n\r\n            this.remove = function(ev) {\r\n                var newQueue = [];\r\n                for(i = 0, j = q.length; i < j; i++) {\r\n                    if(q[i] !== ev) newQueue.push(q[i]);\r\n                }\r\n                q = newQueue;\r\n            };\r\n\r\n            this.length = function() {\r\n                return q.length;\r\n            }\r\n        }\r\n\r\n        /**\r\n         *\r\n         * @param {HTMLElement} element\r\n         * @param {Function}    resized\r\n         */\r\n        function attachResizeEvent(element, resized) {\r\n            if (!element) return;\r\n            if (element.resizedAttached) {\r\n                element.resizedAttached.add(resized);\r\n                return;\r\n            }\r\n\r\n            element.resizedAttached = new EventQueue();\r\n            element.resizedAttached.add(resized);\r\n\r\n            element.resizeSensor = document.createElement('div');\r\n            element.resizeSensor.dir = 'ltr';\r\n            element.resizeSensor.className = 'resize-sensor';\r\n\r\n            var style = {\r\n                pointerEvents: 'none',\r\n                position: 'absolute',\r\n                left: '0px',\r\n                top: '0px',\r\n                right: '0px',\r\n                bottom: '0px',\r\n                overflow: 'hidden',\r\n                zIndex: '-1',\r\n                visibility: 'hidden',\r\n                maxWidth: '100%'\r\n            };\r\n            var styleChild = {\r\n                position: 'absolute',\r\n                left: '0px',\r\n                top: '0px',\r\n                transition: '0s',\r\n            };\r\n\r\n            setStyle(element.resizeSensor, style);\r\n\r\n            var expand = document.createElement('div');\r\n            expand.className = 'resize-sensor-expand';\r\n            setStyle(expand, style);\r\n\r\n            var expandChild = document.createElement('div');\r\n            setStyle(expandChild, styleChild);\r\n            expand.appendChild(expandChild);\r\n\r\n            var shrink = document.createElement('div');\r\n            shrink.className = 'resize-sensor-shrink';\r\n            setStyle(shrink, style);\r\n\r\n            var shrinkChild = document.createElement('div');\r\n            setStyle(shrinkChild, styleChild);\r\n            setStyle(shrinkChild, { width: '200%', height: '200%' });\r\n            shrink.appendChild(shrinkChild);\r\n\r\n            element.resizeSensor.appendChild(expand);\r\n            element.resizeSensor.appendChild(shrink);\r\n            element.appendChild(element.resizeSensor);\r\n\r\n            var computedStyle = window.getComputedStyle(element);\r\n            var position = computedStyle ? computedStyle.getPropertyValue('position') : null;\r\n            if ('absolute' !== position && 'relative' !== position && 'fixed' !== position) {\r\n                element.style.position = 'relative';\r\n            }\r\n\r\n            var dirty, rafId;\r\n            var size = getElementSize(element);\r\n            var lastWidth = 0;\r\n            var lastHeight = 0;\r\n            var initialHiddenCheck = true;\r\n            var lastAnimationFrame = 0;\r\n\r\n            var resetExpandShrink = function () {\r\n                var width = element.offsetWidth;\r\n                var height = element.offsetHeight;\r\n\r\n                expandChild.style.width = (width + 10) + 'px';\r\n                expandChild.style.height = (height + 10) + 'px';\r\n\r\n                expand.scrollLeft = width + 10;\r\n                expand.scrollTop = height + 10;\r\n\r\n                shrink.scrollLeft = width + 10;\r\n                shrink.scrollTop = height + 10;\r\n            };\r\n\r\n            var reset = function() {\r\n                // Check if element is hidden\r\n                if (initialHiddenCheck) {\r\n                    var invisible = element.offsetWidth === 0 && element.offsetHeight === 0;\r\n                    if (invisible) {\r\n                        // Check in next frame\r\n                        if (!lastAnimationFrame){\r\n                            lastAnimationFrame = requestAnimationFrame(function(){\r\n                                lastAnimationFrame = 0;\r\n\r\n                                reset();\r\n                            });\r\n                        }\r\n\r\n                        return;\r\n                    } else {\r\n                        // Stop checking\r\n                        initialHiddenCheck = false;\r\n                    }\r\n                }\r\n\r\n                resetExpandShrink();\r\n            };\r\n            element.resizeSensor.resetSensor = reset;\r\n\r\n            var onResized = function() {\r\n                rafId = 0;\r\n\r\n                if (!dirty) return;\r\n\r\n                lastWidth = size.width;\r\n                lastHeight = size.height;\r\n\r\n                if (element.resizedAttached) {\r\n                    element.resizedAttached.call(size);\r\n                }\r\n            };\r\n\r\n            var onScroll = function() {\r\n                size = getElementSize(element);\r\n                dirty = size.width !== lastWidth || size.height !== lastHeight;\r\n\r\n                if (dirty && !rafId) {\r\n                    rafId = requestAnimationFrame(onResized);\r\n                }\r\n\r\n                reset();\r\n            };\r\n\r\n            var addEvent = function(el, name, cb) {\r\n                if (el.attachEvent) {\r\n                    el.attachEvent('on' + name, cb);\r\n                } else {\r\n                    el.addEventListener(name, cb);\r\n                }\r\n            };\r\n\r\n            addEvent(expand, 'scroll', onScroll);\r\n            addEvent(shrink, 'scroll', onScroll);\r\n\r\n            // Fix for custom Elements\r\n            requestAnimationFrame(reset);\r\n        }\r\n\r\n        forEachElement(element, function(elem){\r\n            attachResizeEvent(elem, callback);\r\n        });\r\n\r\n        this.detach = function(ev) {\r\n            ResizeSensor.detach(element, ev);\r\n        };\r\n\r\n        this.reset = function() {\r\n            element.resizeSensor.resetSensor();\r\n        };\r\n    };\r\n\r\n    ResizeSensor.reset = function(element) {\r\n        forEachElement(element, function(elem){\r\n            elem.resizeSensor.resetSensor();\r\n        });\r\n    };\r\n\r\n    ResizeSensor.detach = function(element, ev) {\r\n        forEachElement(element, function(elem){\r\n            if (!elem) return;\r\n            if(elem.resizedAttached && typeof ev === \"function\"){\r\n                elem.resizedAttached.remove(ev);\r\n                if(elem.resizedAttached.length()) return;\r\n            }\r\n            if (elem.resizeSensor) {\r\n                if (elem.contains(elem.resizeSensor)) {\r\n                    elem.removeChild(elem.resizeSensor);\r\n                }\r\n                delete elem.resizeSensor;\r\n                delete elem.resizedAttached;\r\n            }\r\n        });\r\n    };\r\n\r\n    if (typeof MutationObserver !== \"undefined\") {\r\n        var observer = new MutationObserver(function (mutations) {\r\n            for (var i in mutations) {\r\n                if (mutations.hasOwnProperty(i)) {\r\n                    var items = mutations[i].addedNodes;\r\n                    for (var j = 0; j < items.length; j++) {\r\n                        if (items[j].resizeSensor) {\r\n                            ResizeSensor.reset(items[j]);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        });\r\n\r\n        document.addEventListener(\"DOMContentLoaded\", function (event) {\r\n            observer.observe(document.body, {\r\n                childList: true,\r\n                subtree: true,\r\n            });\r\n        });\r\n    }\r\n\r\n    return ResizeSensor;\r\n\r\n}));\r\n\n","define('drops/gridLayout/gridLayout',[\r\n    'jquery',\r\n    'underscore',\r\n\t'lq/drop',\r\n\t'ResizeSensor'\r\n], function ($, _, Drop, ResizeSensor) {\r\n\t'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            rows: [\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: 1,\r\n\t\t\t\t\tunit: 'fr',\r\n\t\t\t\t\tisAspectRatioEnabled: false,\r\n\t\t\t\t\tratioHeight: 1\r\n\t\t\t\t}\r\n            ],\r\n            columns: [\r\n                { value: 1, unit: 'fr' }\r\n            ],\r\n            spaceBetweenRows: { value: 0, unit: 'px' },\r\n\t\t\tspaceBetweenColumns: { value: 0, unit: 'px' },\r\n\t\t\tisDynamiclySizedContainer: false\r\n        }\r\n\t};\r\n\r\n\tvar GridLayout = function (options) {\r\n\t    Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n\t\tthis.cellElements = [];\r\n\r\n\t\treturn this;\r\n\t};\r\n\r\n    Drop.extend(GridLayout, Drop);\r\n\r\n    GridLayout.typeName = 'GridLayout';\r\n\r\n    GridLayout.prototype.preRender = function () {\r\n\t    this.data.autoHeight = _.findWhere(this.data.rows, {isAspectRatioEnabled : true}) !== undefined;\r\n        this.piping.visibility.apply(this);\r\n\t    this.applyPosition();\r\n\t    this.calculateRowAndColumnCssDimensions();\r\n\t    this.createCells();\r\n\t};\r\n\r\n\tGridLayout.prototype.render = function ($element) {\r\n\t\treturn this.createAndRenderDrops($element);\r\n\t};\r\n\r\n\tGridLayout.prototype.postRender = function () {\r\n\t\tthis.calculateSizeBasedOnRatio();\r\n\t\tthis.setupDynamicCells();\r\n\t};\r\n\r\n\tGridLayout.prototype.createRenderPromiseForChild = function (drop) {\r\n\t    var cellElementData = this.getCellElementForChild(drop);\r\n\t    var $cellElement = cellElementData.cellElement;\r\n\t\tif (this.data.rows[cellElementData.rowIndex].unit === 'dy' ||\r\n\t\t\tthis.data.columns[cellElementData.columnIndex].unit === 'dy') {\r\n\t\t\tvar $wrapper = $('<div/>')\r\n\t\t\t\t.addClass('dyn-cell-child')\r\n\t\t\t\t.css({\r\n\t\t\t\t\twidth : 'auto',\r\n\t\t\t\t\theight: 'auto',\r\n\t\t\t\t\tdisplay: 'table',\r\n\t\t\t\t\t'pointer-events': 'none'\r\n\t\t\t\t}); //disable pointer/mouse-events; hard to select GridLayout in designer otherwise\r\n\r\n\t\t\tdrop.$wrapper = $wrapper;\r\n\t\t\tdrop.$element.css('pointer-events', 'auto');\r\n\t\t\tdrop.$element.css('position', 'relative');\r\n\t\t\tdrop.$element.css('inset', '');\r\n\r\n\t\t\tdrop.$wrapper.appendTo($cellElement);\r\n\t\t\tdrop.isInsideADynamicCell = true;\r\n\r\n\t\t\treturn drop.render(drop.$wrapper)\r\n\t\t}\r\n\t    return drop.render($cellElement);\r\n\t};\r\n\r\n\tGridLayout.prototype.getCellElementForChild = function (drop) {\r\n\t    var rowIndex = Math.max(Math.min((drop.data.gridlayout_row || 1) - 1, this.data.rows.length - 1), 0);\r\n\t    var columnIndex = Math.max(Math.min((drop.data.gridlayout_column || 1) - 1, this.data.columns.length - 1), 0);\r\n\t    return {cellElement: this.cellElements[rowIndex][columnIndex], rowIndex: rowIndex, columnIndex: columnIndex};\r\n\t};\r\n\r\n\tGridLayout.prototype.createCells = function () {\r\n\t    var self = this;\r\n\t    this.cellElements = [];\r\n\r\n\t    _.each(self.data.rows, function (row, rowIndex) {\r\n\t        var rowElements = [];\r\n\t        var rowDimension = self.rowCssDimensions[rowIndex];\r\n\r\n\t        _.each(self.data.columns, function (column, columnIndex) {\r\n\t            var columnDimension = self.columnCssDimensions[columnIndex];\r\n\r\n\t            var $cellElement = self.createCell(\r\n                    self.data.columns[columnIndex].unit === 'dy' || self.data.rows[rowIndex].unit === 'dy' ? '' : columnDimension.size,\r\n                    self.data.rows[rowIndex].unit === 'dy' || self.data.columns[columnIndex].unit === 'dy' ? '' : rowDimension.size,\r\n\t\t\t\t\tcolumnDimension.position,\r\n                    rowDimension.position,\r\n                    columnIndex,\r\n                    rowIndex);\r\n\r\n\t            rowElements.push($cellElement);\r\n\t        });\r\n\r\n\t        self.cellElements.push(rowElements);\r\n\t    });\r\n\t};\r\n\r\n\tGridLayout.prototype.calculateRowAndColumnCssDimensions = function () {\r\n\t    this.rowCssDimensions =\r\n            this.calculateCssDimensions(this.data.rows, this.data.spaceBetweenRows);\r\n\r\n\t    this.columnCssDimensions =\r\n            this.calculateCssDimensions(this.data.columns, this.data.spaceBetweenColumns);\r\n\r\n\t    this.$element.css({ minHeight: this.getUnitSum(this.data.rows, this.data.spaceBetweenRows, 'px') + 'px' });\r\n\t    this.$element.css({ minWidth: this.getUnitSum(this.data.columns, this.data.spaceBetweenColumns, 'px') + 'px' });\r\n\t};\r\n\r\n\tGridLayout.prototype.calculateCssDimensions = function (sizes, spaceBetween) {\r\n\t    var self = this;\r\n\t    var cssDimensions = [];\r\n\r\n\t    var fractionSum = this.getUnitSum(sizes, spaceBetween, 'fr');\r\n\t    var pixelSum = this.getUnitSum(sizes, spaceBetween, 'px');\r\n\r\n\t    var sumOfPrecedingFractions = 0;\r\n\t    var sumOfPrecedingPixels = 0;\r\n\r\n\t    _.each(sizes, function (size, index) {\r\n\t        var cssSize = self.getCssSize(size, fractionSum, pixelSum);\r\n\t        var cssPosition =\r\n\t\t\t\tself.getCssPosition(sumOfPrecedingFractions, sumOfPrecedingPixels, fractionSum, pixelSum);\r\n\r\n\t        cssDimensions.push({\r\n\t            size: cssSize,\r\n                position: cssPosition\r\n\t        });\r\n\r\n\t        sumOfPrecedingFractions +=\r\n                self.getUnitValue(size, 'fr') + self.getUnitValue(spaceBetween, 'fr');\r\n\t        sumOfPrecedingPixels +=\r\n                self.getUnitValue(size, 'px') + self.getUnitValue(spaceBetween, 'px');\r\n\t    });\r\n\r\n\t    return cssDimensions;\r\n\t}\r\n\r\n\tGridLayout.prototype.getCssSize = function(size, fractionSum, pixelSum) {\r\n\t    if (size.unit === 'fr') {\r\n\t        var fractionPercentage = size.value / fractionSum;\r\n\t        return 'calc((100% - ' + pixelSum + 'px) * ' + fractionPercentage + ')';\r\n\t    } else {\r\n\t        return size.value + 'px';\r\n\t    }\r\n\t};\r\n\r\n\tGridLayout.prototype.getCssPosition = function (precedingFractions, precedingPixels, fractionSum, pixelSum) {\r\n\t    if (precedingFractions == 0) {\r\n\t        return precedingPixels + 'px';\r\n\t    } else {\r\n\t        var fractionPercentage = precedingFractions / fractionSum;\r\n\t        return 'calc((100% - ' + pixelSum + 'px) * ' + fractionPercentage + ' + ' + precedingPixels + 'px)';\r\n\t    }\r\n\t};\r\n\r\n\tGridLayout.prototype.getUnitValue = function(size, unit) {\r\n\t    if (size.unit === unit) {\r\n\t        return size.value;\r\n\t    }\r\n\t    return 0;\r\n\t};\r\n\r\n\tGridLayout.prototype.getUnitSum = function (sizes, spaceBetween, unit) {\r\n\t    var sum = _.chain(sizes)\r\n            .filter(function (size) { return size.unit === unit })\r\n            .reduce(function (sum, size) { return sum + size.value; }, 0)\r\n            .value();\r\n\t    return sum + ((sizes.length - 1) * this.getUnitValue(spaceBetween, unit));\r\n\t};\r\n\r\n\tGridLayout.prototype.createCell = function (width, height, left, top) {\r\n\t    return $('<div/>')\r\n            .css({\r\n                position: 'absolute',\r\n                boxSizing: 'border-box',\r\n                //overflow: 'hidden', //if we hide overflow, it is currently not possible to get to a drop in the designer when it is outside of the cell bounds, also the resizer handles might not be visible + maybe it might be useful in some cases to have an element position outside of the cell bounds, z-index might be an issue in this case though\r\n                height: height,\r\n                width: width,\r\n                top: top,\r\n                left: left\r\n            })\r\n            .appendTo(this.$element);\r\n\t};\r\n\r\n\tGridLayout.prototype.setupDynamicCells = function () {\r\n\t\tif (!(this.hasDynamicCell())) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.data.isDynamiclySizedContainer = true;\r\n\r\n\t\tfor (var i = 0; i < this.data.rows.length; i++) {\r\n\t\t\tfor (var j = 0; j < this.data.columns.length; j++) {\r\n\r\n\t\t\t\tif ((this.data.rows[i].unit === 'dy' || this.data.columns[j].unit === 'dy') &&\r\n\t\t\t\t\tthis.designData) {\r\n\t\t\t\t\tthis.cellElements[i][j].css({ // If the cell is empyt in the designer the dev still should be able to put elements into it\r\n\t\t\t\t\t\tminHeight: '20px',\r\n\t\t\t\t\t\tminWidth: '20px'\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.cellElements[i][j].css({\r\n\t\t\t\t\ttop: '',\r\n\t\t\t\t\tleft: '',\r\n\t\t\t\t\tposition :'relative',\r\n\t\t\t\t\t'-ms-grid-row':  i+1 + '',\r\n\t\t\t\t\t'-ms-grid-column': j+1 + '',\r\n\t\t\t\t\tgridRow: i+1,\r\n\t\t\t\t\tgridColumn: j+1\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.hasDynamicColumn() || this.hasDynamicRow()) {\r\n\t\t\tthis.$element.css({\r\n\t\t\t\twidth: 'auto',\r\n\t\t\t\theight: 'auto'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.$element.css({\r\n\t\t\tdisplay: window.document.documentMode ? '-ms-grid' : 'grid',\r\n\t\t\trowGap: this.data.spaceBetweenRows.value + this.data.spaceBetweenRows.unit,\r\n\t\t\tcolumnGap: this.data.spaceBetweenColumns.value + this.data.spaceBetweenColumns.unit\r\n\t\t});\r\n\t};\r\n\r\n\tGridLayout.prototype.calculateSizeBasedOnRatio = function() {\r\n\t\tif (!this.data.autoHeight) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar topMargin = 0;\r\n\t\tvar height = 0;\r\n\t\tfor (var i = 0; i < this.data.rows.length; i++) {\r\n\t\t\tfor (var j = 0; j < this.cellElements[i].length; j++) {\r\n\t\t\t\tif (this.data.rows[i].isAspectRatioEnabled) {\r\n\t\t\t\t\theight = (this.data.rows[i].ratioHeight / this.data.rows[i].ratioWidth) * this.$element.outerWidth(true);\r\n\t\t\t\t\t$(this.cellElements[i][j])\r\n\t\t\t\t\t\t.css({\r\n\t\t\t\t\t\t\theight: height,\r\n\t\t\t\t\t\t\ttop: topMargin\r\n\t\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\theight = $(this.cellElements[i][j]).outerHeight(true);\r\n\t\t\t\t\t$(this.cellElements[i][j])\r\n\t\t\t\t\t\t.css({\r\n\t\t\t\t\t\t\ttop: topMargin\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ('px' === this.data.spaceBetweenRows.unit) {\r\n\t\t\t\ttopMargin += height + this.data.spaceBetweenRows.value;\r\n\t\t\t} else {\r\n\t\t\t\ttopMargin += height;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.$element\r\n\t\t\t.css({\r\n\t\t\t\theight : topMargin,\r\n\t\t\t\tminHeight : topMargin\r\n\t\t\t});\r\n\t};\r\n\r\n\tGridLayout.prototype.hasDynamicCell = function () {\r\n\t\treturn this.hasDynamicRow() || this.hasDynamicColumn();\r\n\t};\r\n\r\n\tGridLayout.prototype.hasDynamicRow = function () {\r\n\t\treturn _.some(this.data.rows, function (r) { return r.unit === 'dy'; });\r\n\t};\r\n\r\n\tGridLayout.prototype.hasDynamicColumn = function () {\r\n\t\treturn _.some(this.data.columns, function (c) { return c.unit === 'dy'; });\r\n\t};\r\n\r\n\tGridLayout.prototype.postWindowResize = function () {\r\n\t\tthis.calculateSizeBasedOnRatio();\r\n\t\tthis.setupDynamicCells();\r\n\t};\r\n\r\n\tGridLayout.prototype.resetPositioningForChild = function(childDrop) {\r\n\t    childDrop.$element.css({\r\n            left: 'auto',\r\n            right: 'auto',\r\n            top: 'auto',\r\n            bottom: 'auto',\r\n            position: 'relative'\r\n        });\r\n    };\r\n\r\n\tGridLayout.prototype.applyPositionForChild = function (childDrop) {\r\n\t\tvar self = this;\r\n\t\tif (!childDrop.isInsideADynamicCell) {\r\n\t\t\tDrop.prototype.applyPositionForChild.call(self, childDrop);\r\n\t\t} else {\r\n\t\t\tif (childDrop.applyPositionForChild && childDrop.data.isDynamiclySizedContainer) {\r\n\t\t\t\tchildDrop.applyPositionForChild(childDrop);\r\n\t\t\t} else {\r\n\t\t\t\tself.resetPositioningForChild(childDrop);\r\n\t\t\t\tvar sizeCss = {};\r\n\t\t\t\tsizeCss.width = childDrop.data.size.x + 'px';\r\n\t\t\t\tsizeCss.height = childDrop.data.size.y + 'px';\r\n\t\t\t\tchildDrop.$element.css(sizeCss);\r\n\t\t\t}\r\n\t\t}\r\n    };\r\n\r\n\treturn GridLayout;\r\n});\r\n\r\n\n","define('drops/helper/helper',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq',\r\n    'lq/util',\r\n    'lq/point'\r\n], function ($, Drop, Style, lq, util, Point) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            showNavigationAtTop: false,\r\n            showNavigationAtBottom: true,\r\n            pageSize: 10,\r\n            text: 'Helper content',\r\n            opacity: 100,\r\n            popupPosition: {\r\n                x: 100,\r\n                y: 100\r\n            },\r\n            popupSize: {\r\n                x: 100,\r\n                y: 100\r\n            }\r\n        }\r\n    };\r\n    \r\n    var durationOfAnimation = 150;\r\n\r\n    function Helper(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n        \r\n        this.data.popupSize = util.convertListOfKeyValuesToObject(this.data.popupSize);\r\n        this.data.popupPosition = util.convertListOfKeyValuesToObject(this.data.popupPosition);\r\n        this.popupIsVisible = false;\r\n\r\n        this.$element\r\n            .addClass('hide-on-print boxToBorderSize');\r\n\r\n        var self = this;\r\n        this.$icon = $('<div />')\r\n            .css({\r\n                cursor: 'pointer',\r\n                width: '100%',\r\n                height: '100%',\r\n                backgroundSize: '100% 100%'\r\n            })\r\n            .attr('title', this.data.title)\r\n            .attr('tabindex', this.data.tabIndex)\r\n            .on('click', function (e) {\r\n                self.togglePopup();\r\n            })\r\n            .appendTo(this.$element);\r\n\r\n        this.$popup = $('<div />')\r\n            .hide()\r\n\t        .addClass('boxToBorderSize') // styling is applied to the $popup instead of $element\r\n            .width(this.data.popupSize.x)\r\n            .height(this.data.popupSize.y)\r\n            .css({\r\n                position: 'absolute',\r\n                top: this.data.popupPosition.y + 'px',\r\n                left: this.data.popupPosition.x + 'px',\r\n                overflowX: 'hidden',\r\n                whiteSpace: 'pre-wrap',\r\n                zIndex: 6001\r\n            })\r\n            .appendTo($('body'));\r\n        \r\n        Style.renderStyles(this, null, this.$popup);\r\n        \r\n        this.originalWidth = this.$popup.width();\r\n        this.originalHeight = this.$popup.height();\r\n        this.setValue({ value: this.data.text });\r\n    };\r\n\r\n    Drop.extend(Helper, Drop);\r\n\r\n    Helper.typeName = 'Helper';\r\n\r\n    Helper.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.setIcon(this.data.physicalFile);\r\n        this.setOpacity(this.data.opacity);\r\n        this.applyPosition();\r\n    };\r\n\r\n    Helper.prototype.setIcon = function (physicalFile) {\r\n        var path = physicalFile ? lq.getTenantUploads(physicalFile) : null;\r\n        if(path)\r\n            this.$icon.css('background-image', 'url(' + path + ')');\r\n    };\r\n\r\n    Helper.prototype.postRender = function () {\r\n        var self = this;\r\n        $(document).on('click', function (e) {\r\n            if (e.target !== self.$icon.get(0) && self.popupIsVisible)\r\n                self.closePopup();\r\n        });\r\n    };\r\n\r\n    Helper.prototype.convertToHtmlContent = function (text) {\r\n        return text\r\n            .split('  ')\r\n            .join(' &nbsp;')\r\n            .split('/r/n')\r\n            .join('&nbsp;')\r\n            .replace(/(\\r\\n|\\n|\\r)/gm, '<br />');\r\n    };\r\n\r\n    Helper.prototype.getStartAndEndPositionForOpeningThePopup = function () {\r\n        var diff = new Point()\r\n            .fromPositionXAndY(this.data.position)\r\n            .subtract(new Point(this.$icon.offset().left, this.$icon.offset().top));\r\n        var corrPopupPosition = new Point()\r\n            .fromPositionXAndY(this.data.popupPosition)\r\n            .subtract(diff);\r\n        return {\r\n            start: {\r\n                top: this.$icon.offset().top + this.data.size.y / 2,\r\n                left: this.$icon.offset().left + this.data.size.x / 2,\r\n                width: 0,\r\n                height: 0\r\n            },\r\n            end: {\r\n                top: corrPopupPosition.y,\r\n                left: corrPopupPosition.x,\r\n                width: this.data.popupSize.x,\r\n                height: this.data.popupSize.y\r\n            }\r\n        };\r\n    };\r\n\r\n    Helper.prototype.getEndPositionForClosingThePopup = function () {\r\n        return {\r\n            top: this.$icon.offset().top + this.data.size.y / 2,\r\n            left: this.$icon.offset().left + this.data.size.x / 2,\r\n            width: 0,\r\n            height: 0\r\n        };\r\n    };\r\n\r\n    Helper.prototype.togglePopup = function () {\r\n        if (this.popupIsVisible)\r\n            this.closePopup();\r\n        else\r\n            this.openPopup();\r\n    };\r\n\r\n    Helper.prototype.closePopup = function () {\r\n        this.popupIsVisible = false;\r\n\r\n        var target = this.getEndPositionForClosingThePopup();\r\n\r\n        var self = this;\r\n        this.$popup\r\n            .stop()\r\n            .animate(target, durationOfAnimation, function () {\r\n                self.$popup\r\n                    .hide()\r\n                    .css({ width: self.originalWidth, height: self.originalHeight });\r\n            });\r\n    };\r\n\r\n    Helper.prototype.openPopup = function () {\r\n        this.popupIsVisible = true;\r\n\r\n        var opening = this.getStartAndEndPositionForOpeningThePopup();\r\n        this.$popup\r\n            .stop()\r\n            .css(opening.start)\r\n            .show()\r\n            .animate(opening.end, durationOfAnimation);\r\n    };\r\n\r\n    Helper.prototype.hide = function () {\r\n        Drop.prototype.hide.call(this);\r\n\r\n        if (this.popupIsVisible)\r\n            this.closePopup();\r\n    };\r\n\r\n    Helper.prototype.clearValue = function () {\r\n        this.setValue({ value: null });\r\n    };\r\n\r\n    Helper.prototype.setValue = function (update) {\r\n        if(this.popupIsVisible)\r\n            this.closePopup();\r\n\r\n        if (!update.value) {\r\n            this.$icon.hide();\r\n            this.$popup.html('');\r\n        } else {\r\n            var htmlContent = this.convertToHtmlContent(update.value);\r\n            this.$popup.html(htmlContent);\r\n            this.$icon.show();\r\n        }\r\n    };\r\n\r\n    Helper.prototype.getValue = function () {\r\n        return null;\r\n    };\r\n\r\n    Helper.prototype.setOpacity = function (opacity) {\r\n        this.$icon.css({ opacity: (opacity || 100) / 100 });\r\n    };\r\n\r\n    Helper.prototype.unsubscribeEventHandlers = function () {\r\n        this.$popup.remove();\r\n    };\r\n\r\n    return Helper;\r\n});\n","// Magic Wand (Fuzzy Selection Tool) for Javascript\r\n//\r\n// The MIT License (MIT)\r\n//\r\n// Copyright (c) 2014, Ryasnoy Paul (ryasnoypaul@gmail.com)\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\nMagicWandClass = function () { var a = {}; a.floodFill = function (m, z, B, d, A) { var a, j, i, b, g, f, l, p, q, u, e = m.data, n = m.width, r = m.height, t = m.bytes, v = -1, x = n + 1, w = -1, y = r + 1, c = B * n + z, s = new Uint8Array(n * r), k = new Uint8Array(A ? A : n * r); if (k[c] === 1) return null; c = c * t; var h = [e[c], e[c + 1], e[c + 2], e[c + 3]], o = [{ y: B, left: z - 1, right: z + 1, dir: 1 }]; do { b = o.shift(); u = false; for (j = b.left + 1; j < b.right; j++) { l = b.y * n; c = (l + j) * t; if (k[l + j] === 1) continue; a = e[c] - h[0]; if (a > d || a < -d) continue; a = e[c + 1] - h[1]; if (a > d || a < -d) continue; a = e[c + 2] - h[2]; if (a > d || a < -d) continue; u = true; s[l + j] = 1; k[l + j] = 1; f = j - 1; while (f > -1) { p = l + f; c = p * t; if (k[p] === 1) break; a = e[c] - h[0]; if (a > d || a < -d) break; a = e[c + 1] - h[1]; if (a > d || a < -d) break; a = e[c + 2] - h[2]; if (a > d || a < -d) break; s[p] = 1; k[p] = 1; f-- } g = j + 1; while (g < n) { q = l + g; c = q * t; if (k[q] === 1) break; a = e[c] - h[0]; if (a > d || a < -d) break; a = e[c + 1] - h[1]; if (a > d || a < -d) break; a = e[c + 2] - h[2]; if (a > d || a < -d) break; s[q] = 1; k[q] = 1; g++ } if (f < x) x = f + 1; if (g > v) v = g - 1; i = b.y - b.dir; if (i >= 0 && i < r) { f < b.left && o.push({ y: i, left: f, right: b.left, dir: -b.dir }); b.right < g && o.push({ y: i, left: b.right, right: g, dir: -b.dir }) } i = b.y + b.dir; if (i >= 0 && i < r) f < g && o.push({ y: i, left: f, right: g, dir: b.dir }) } if (u) { if (b.y < y) y = b.y; if (b.y > w) w = b.y } } while (o.length > 0); return { data: s, width: m.width, height: m.height, bounds: { minX: x, minY: y, maxX: v, maxY: w } } }; a.gaussBlur = function (e, b) { for (var m, l, c, d, k, i, j, f = b * 2 + 1, x = b * b, h = new Float32Array(f), p = 0, g = e.width, n = e.height, q = e.data, v = e.bounds.minX, t = e.bounds.maxX, w = e.bounds.minY, u = e.bounds.maxY, a = 0; a < b; a++) { var z = (b - a) * (b - a), y = Math.exp(-z / (2 * x)) / (2 * Math.PI * x); h[b + a] = h[b - a] = y; p += 2 * y } for (a = 0; a < f; a++)h[a] /= p; var o = new Uint8Array(g * n), r = b + g, s = b + n; for (d = w; d < u + 1; d++)for (c = v; c < t + 1; c++) { k = 0; m = d * g + c; i = b - c > 0 ? b - c : 0; j = r - c < f ? r - c : f; l = m - b; for (a = i; a < j; a++)k += q[l + a] * h[a]; i = b - d > 0 ? b - d : 0; j = s - d < f ? s - d : f; l = m - b * g; for (a = i; a < j; a++)k += q[l + a * g] * h[a]; o[m] = k > .5 ? 1 : 0 } return { data: o, width: g, height: n, bounds: { minX: v, minY: w, maxX: t, maxY: u } } }; function b(k, g, y) { var a, i, w, c, b, h, e, d = k.width, v = k.height, l = k.data, f = new Uint8Array(l), r = k.bounds.minX, m = k.bounds.maxX, s = k.bounds.minY, n = k.bounds.maxY, u = d * v, o = new Uint8Array(u), j = [], B = Math.max(r, 1), C = Math.min(m, d - 2), D = Math.max(s, 1), E = Math.min(n, v - 2); if (y && y.length > 0) for (b = 0; b < u; b++)if (y[b] === 1) f[b] = 1; for (c = D; c < E + 1; c++)for (a = B; a < C + 1; a++) { b = c * d + a; if (l[b] === 0) continue; h = b + d; e = b - d; (f[b + 1] === 0 || f[b - 1] === 0 || f[h] === 0 || f[h + 1] === 0 || f[h - 1] === 0 || f[e] === 0 || f[e + 1] === 0 || f[e - 1] === 0) && j.push(b) } if (r == 0) for (c = s; c < n + 1; c++)l[c * d] === 1 && j.push(c * d); if (m == d - 1) for (c = s; c < n + 1; c++)l[c * d + m] === 1 && j.push(c * d + m); if (s == 0) for (a = r; a < m + 1; a++)l[a] === 1 && j.push(a); if (n == v - 1) for (a = r; a < m + 1; a++)l[n * d + a] === 1 && j.push(n * d + a); var p = [], q, t, z = g + d, A = g + v, x = g * 2 + 1; u = j.length; for (w = 0; w < u; w++) { b = j[w]; o[b] = 1; p.push(b); a = b % d; c = (b - a) / d; q = g - a > 0 ? g - a : 0; t = z - a < x ? z - a : x; h = b - g; for (i = q; i < t; i++) { e = h + i; if (o[e] === 0) { o[e] = 1; p.push(e) } } q = g - c > 0 ? g - c : 0; t = A - c < x ? A - c : x; h = b - g * d; for (i = q; i < t; i++) { e = h + i * d; if (o[e] === 0) { o[e] = 1; p.push(e) } } } return p } a.gaussBlurOnlyBorder = function (g, a, C) { for (var w = b(g, a, C), v, A, f, h, t, d, e, o, r, s, i = a * 2 + 1, E = 2 * a * a, p = new Float32Array(i), x = 0, j = g.width, B = g.height, u = g.data, m = g.bounds.minX, k = g.bounds.maxX, n = g.bounds.minY, l = g.bounds.maxY, D = w.length, c = 0; c < a; c++) { A = (a - c) * (a - c); v = Math.exp(-A / E) / Math.PI; p[a + c] = p[a - c] = v; x += 2 * v } for (c = 0; c < i; c++)p[c] /= x; var q = new Uint8Array(u), y = a + j, z = a + B; for (c = 0; c < D; c++) { h = w[c]; o = 0; d = h % j; e = (h - d) / j; r = a - d > 0 ? a - d : 0; s = y - d < i ? y - d : i; t = h - a; for (f = r; f < s; f++)o += u[t + f] * p[f]; if (o > .5) { q[h] = 1; if (d < m) m = d; if (d > k) k = d; if (e < n) n = e; if (e > l) l = e; continue } r = a - e > 0 ? a - e : 0; s = z - e < i ? z - e : i; t = h - a * j; for (f = r; f < s; f++)o += u[t + f * j] * p[f]; if (o > .5) { q[h] = 1; if (d < m) m = d; if (d > k) k = d; if (e < n) n = e; if (e > l) l = e } else q[h] = 0 } return { data: q, width: j, height: B, bounds: { minX: m, minY: n, maxX: k, maxY: l } } }; a.createBorderMask = function (g) { for (var a, l, m, n, f = g.width, p = g.height, c = g.data, d = g.bounds.minX, h = g.bounds.maxX, e = g.bounds.minY, i = g.bounds.maxY, k = h - d + 1, o = i - e + 1, j = new Uint8Array(k * o), q = Math.max(d, 1), r = Math.min(h, f - 2), s = Math.max(e, 1), t = Math.min(i, p - 2), b = s; b < t + 1; b++)for (a = q; a < r + 1; a++) { l = b * f + a; if (c[l] === 0) continue; m = l + f; n = l - f; if (c[l + 1] === 0 || c[l - 1] === 0 || c[m] === 0 || c[m + 1] === 0 || c[m - 1] === 0 || c[n] === 0 || c[n + 1] === 0 || c[n - 1] === 0) j[(b - e) * k + (a - d)] = 1 } if (d == 0) for (b = e; b < i + 1; b++)if (c[b * f] === 1) j[(b - e) * k] = 1; if (h == f - 1) for (b = e; b < i + 1; b++)if (c[b * f + h] === 1) j[(b - e) * k + (h - d)] = 1; if (e == 0) for (a = d; a < h + 1; a++)if (c[a] === 1) j[a - d] = 1; if (i == p - 1) for (a = d; a < h + 1; a++)if (c[i * f + a] === 1) j[(i - e) * k + (a - d)] = 1; return { data: j, width: k, height: o, offset: { x: d, y: e } } }; a.getBorderIndices = function (j) { for (var a, c, g, h, e = j.width, i = j.height, b = j.data, f = [], k = e - 1, l = i - 1, d = 1; d < l; d++)for (a = 1; a < k; a++) { c = d * e + a; if (b[c] === 0) continue; g = c + e; h = c - e; (b[c + 1] === 0 || b[c - 1] === 0 || b[g] === 0 || b[g + 1] === 0 || b[g - 1] === 0 || b[h] === 0 || b[h + 1] === 0 || b[h - 1] === 0) && f.push(c) } for (d = 0; d < i; d++)b[d * e] === 1 && f.push(d * e); for (a = 0; a < e; a++)b[a] === 1 && f.push(a); c = e - 1; for (d = 0; d < i; d++)b[d * e + c] === 1 && f.push(d * e + c); c = (i - 1) * e; for (a = 0; a < e; a++)b[c + a] === 1 && f.push(c + a); return f }; function c(a) { for (var b, l = a.width, k = a.data, c = a.bounds.minX, h = a.bounds.maxX, d = a.bounds.minY, i = a.bounds.maxY, f = h - c + 3, j = i - d + 3, g = new Uint8Array(f * j), e = d; e < i + 1; e++)for (b = c; b < h + 1; b++)if (k[e * l + b] === 1) g[(e - d + 1) * f + (b - c + 1)] = 1; return { data: g, width: f, height: j, offset: { x: c - 1, y: d - 1 } } } a.traceContours = function (A) { for (var j = c(A), v = [], l = 0, d = j.width, y = d * 2, B = j.height, n = j.data, w = j.offset.x, x = j.offset.y, m = new Uint8Array(n), g, u, k, q, o, p, s, f, i, h, a, e, b, t, z = [[1, 0], [1, 1], [0, 1], [-1, 1], [-1, 0], [-1, -1], [0, -1], [1, -1]], r = 1; r < B - 1; r++)for (k = 1; k < d - 1; k++) { q = r * d + k; if (n[q] === 1) for (g = -d; g < y; g += y)if (n[q + g] === 0 && m[q + g] === 0) { s = g === d; l++; p = []; f = s ? 2 : 6; a = e = i = { x: k, y: r }; h = null; while (true) { m[a.y * d + a.x] = l; for (u = 0; u < 8; u++) { f = (f + 1) % 8; t = z[f]; b = { x: a.x + t[0], y: a.y + t[1] }; o = b.y * d + b.x; if (n[o] === 1) { m[o] = l; break } m[o] = -1; b = null } if (b === null) break; a = b; if (h) { if (e.x === i.x && e.y === i.y && a.x === h.x && a.y === h.y) break } else h = b; p.push({ x: e.x + w, y: e.y + x }); e = a; f = (f + 4) % 8 } if (b != null) { p.push({ x: i.x + w, y: i.y + x }); v.push({ inner: s, label: l, points: p }) } } } return v }; a.simplifyContours = function (w, x, y) { for (var z = w.length, u = [], s, d, g, e, f, k, l, n, a, t, p, o, q, r, m, b, c, i, h, j, v = 0; v < z; v++) { g = w[v]; e = g.points; f = g.points.length; if (f < y) { k = []; for (d = 0; d < f; d++)k.push({ x: e[d].x, y: e[d].y }); u.push({ inner: g.inner, label: g.label, points: k, initialCount: f }); continue } l = [0, f - 1]; n = [{ first: 0, last: f - 1 }]; do { a = n.shift(); if (a.last <= a.first + 1) continue; t = -1; p = a.first; for (s = a.first + 1; s < a.last; s++) { i = e[s]; h = e[a.first]; j = e[a.last]; b = i.x - h.x; c = i.y - h.y; q = Math.sqrt(b * b + c * c); b = i.x - j.x; c = i.y - j.y; r = Math.sqrt(b * b + c * c); b = h.x - j.x; c = h.y - j.y; m = Math.sqrt(b * b + c * c); if (q >= Math.sqrt(r * r + m * m)) o = r; else if (r >= Math.sqrt(q * q + m * m)) o = q; else o = Math.abs((c * i.x - b * i.y + h.x * j.y - j.x * h.y) / m); if (o > t) { p = s; t = o } } if (t > x) { l.push(p); n.push({ first: a.first, last: p }); n.push({ first: p, last: a.last }) } } while (n.length > 0); k = []; f = l.length; l.sort(function (a, b) { return a - b }); for (d = 0; d < f; d++)k.push({ x: e[l[d]].x, y: e[l[d]].y }); u.push({ inner: g.inner, label: g.label, points: k, initialCount: g.points.length }) } return u }; return a }();\ndefine(\"magic-wand-min\", function(){});\n\n","define('drops/magicWand/magicWand',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'drops/dynamicImage/dynamicImage',\r\n    'lq/style',\r\n    'magic-wand-min'\r\n], function ($, Drop, DynamicImage, Style) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            simplifierTolerance: 30\r\n        }\r\n    };\r\n\r\n    var selectEvent = 'selected';\r\n\r\n    var magicWandData = {\r\n        colorThreshold: 15,\r\n        currentThreshold: 15,\r\n        blurRadius: 5,\r\n        hatchLength: 4,\r\n        hatchOffset: 0,\r\n        simplifierTolerance: defaults.data.simplifierTolerance,\r\n        imageInfo: null,\r\n        cacheInd: null,\r\n        mask: null,\r\n        downPoint: null,\r\n        allowDraw: false,\r\n        firstDraw: true\r\n    }\r\n\r\n    function MagicWand(options) {\r\n        Drop.call(this, $('<div />'), defaults, options);\r\n\r\n        magicWandData.simplifierTolerance = this.data.simplifierTolerance;\r\n\r\n        this.$image = $('<img />')\r\n            .css({\r\n                'width': '100%',\r\n                'height': '100%',\r\n                'overflow': 'hidden'\r\n            })\r\n            .appendTo(this.$element);\r\n\r\n        this.$canvas = $('<canvas />')\r\n            .css({\r\n                'position': 'absolute',\r\n                'top': '0px',\r\n                'left': '0px',\r\n                'width': '100%',\r\n                'height': '100%',\r\n                'overflow': 'hidden'\r\n            })\r\n            .appendTo(this.$element);\r\n\r\n\r\n        Style.renderStyles(this, null, this.$image);\r\n\r\n        this.hideWhenNecessary();\r\n\r\n        this.applyEventTrigger('mouseEnter', 'mouseenter');\r\n    };\r\n\r\n    Drop.extend(MagicWand, DynamicImage);\r\n\r\n    MagicWand.typeName = 'MagicWand';\r\n\r\n    MagicWand.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n\r\n        this.applyPosition();\r\n\r\n        var self = this;\r\n\r\n        if (this.isEventEnabled(selectEvent)) {\r\n            this.$canvas.on('mouseup', function (e) {\r\n                magicWandData.allowDraw = false;\r\n                magicWandData.currentThreshold = magicWandData.colorThreshold;\r\n\r\n                if (e.button === 0 && magicWandData.mask) {\r\n                    self.triggerEvent(self.data.eventing[selectEvent].raisedEventName, JSON.stringify(self.compressMaskData()));\r\n                }\r\n            });\r\n\r\n            this.$canvas.on('mousedown', function (e) {\r\n\r\n                if (magicWandData.firstDraw) {\r\n                    self.initCanvas();\r\n                    magicWandData.firstDraw = false;\r\n                }\r\n\r\n                if (e.button === 0) {\r\n                    magicWandData.allowDraw = true;\r\n                    magicWandData.downPoint = self.getMousePosition(e);\r\n                    self.drawMask(magicWandData.downPoint.x, magicWandData.downPoint.y);\r\n                } else {\r\n                    magicWandData.allowDraw = false;\r\n                }\r\n            });\r\n\r\n            this.$canvas.on('mousemove', function (e) {\r\n                if (magicWandData.allowDraw) {\r\n                    var p = self.getMousePosition(e);\r\n                    if (p.x != magicWandData.downPoint.x || p.y != magicWandData.downPoint.y) {\r\n                        var dx = p.x - magicWandData.downPoint.x,\r\n                            dy = p.y - magicWandData.downPoint.y,\r\n                            len = Math.sqrt(dx * dx + dy * dy),\r\n                            adx = Math.abs(dx),\r\n                            ady = Math.abs(dy),\r\n                            sign = adx > ady ? dx / adx : dy / ady;\r\n                        sign = sign < 0 ? sign / 5 : sign / 3;\r\n                        var thres = Math.min(Math.max(magicWandData.colorThreshold + Math.floor(sign * len), 1), 255);\r\n                        if (thres != magicWandData.currentThreshold) {\r\n                            magicWandData.currentThreshold = thres;\r\n                            self.drawMask(magicWandData.downPoint.x, magicWandData.downPoint.y);\r\n                        }\r\n                    }\r\n                }\r\n            });\r\n        }\r\n    };\r\n\r\n    MagicWand.prototype.compressMaskData = function () {\r\n        var cs = MagicWandClass.traceContours(magicWandData.mask);\r\n        return MagicWandClass.simplifyContours(cs, magicWandData.simplifierTolerance, 0);\r\n    }\r\n\r\n\r\n    MagicWand.prototype.drawBorderFromSimplifiedData = function (cs, clearCanvas) {\r\n\r\n        if (magicWandData.firstDraw) {\r\n            this.initCanvas();\r\n            magicWandData.firstDraw = false;\r\n        }\r\n\r\n        var ctx = magicWandData.imageInfo.context;\r\n\r\n        if (clearCanvas) {\r\n            ctx.clearRect(0, 0, magicWandData.imageInfo.width, magicWandData.imageInfo.height);\r\n        }\r\n\r\n        for (var i = 0; i < cs.length; ++i) {\r\n            ctx.beginPath();\r\n\r\n            var color = cs[i].inner ? 'red' : 'blue';\r\n            this.drawArea(ctx, cs[i].points, color);\r\n        }\r\n    }\r\n\r\n    MagicWand.prototype.drawArea = function (ctx, points, color) {\r\n        ctx.moveTo(points[0].x, points[0].y);\r\n        for (var j = 1; j < points.length; j++) {\r\n            ctx.lineTo(points[j].x, points[j].y);\r\n        }\r\n\r\n        if (color) {\r\n            ctx.strokeStyle = color;\r\n            ctx.stroke();\r\n        }\r\n    }\r\n\r\n    MagicWand.prototype.initCanvas = function () {\r\n        var cvs = this.$canvas.get(0);\r\n        var img = this.$image.get(0);\r\n\r\n        cvs.width = img.width;\r\n        cvs.height = img.height;\r\n\r\n        magicWandData.imageInfo = {\r\n            width: img.width,\r\n            height: img.height,\r\n            context: cvs.getContext(\"2d\")\r\n        };\r\n        magicWandData.mask = null;\r\n\r\n        var tempCtx = document.createElement(\"canvas\").getContext(\"2d\");\r\n        tempCtx.canvas.width = magicWandData.imageInfo.width;\r\n        tempCtx.canvas.height = magicWandData.imageInfo.height;\r\n        tempCtx.drawImage(img, 0, 0, img.width, img.height);\r\n\r\n        magicWandData.imageInfo.data = tempCtx.getImageData(0, 0, magicWandData.imageInfo.width, magicWandData.imageInfo.height);\r\n    };\r\n\r\n    MagicWand.prototype.drawMask = function (x, y) {\r\n\r\n        var image = {\r\n            data: magicWandData.imageInfo.data.data,\r\n            width: magicWandData.imageInfo.width,\r\n            height: magicWandData.imageInfo.height,\r\n            bytes: 4\r\n        };\r\n\r\n        magicWandData.mask = MagicWandClass.floodFill(image, x, y, magicWandData.currentThreshold);\r\n        magicWandData.mask = MagicWandClass.gaussBlurOnlyBorder(magicWandData.mask, magicWandData.blurRadius);\r\n\r\n        this.drawBorderFromSimplifiedData(this.compressMaskData(), true);\r\n    };\r\n\r\n    MagicWand.prototype.getMousePosition = function (e) {\r\n        var p = $(e.target).offset(),\r\n            x = Math.round((e.clientX || e.pageX) - p.left),\r\n            y = Math.round((e.clientY || e.pageY) - p.top);\r\n        return {\r\n            x: x,\r\n            y: y\r\n        };\r\n    };\r\n\r\n    MagicWand.prototype.updateImage = function (src, alt) {\r\n        this.$image\r\n            .attr('alt', alt)\r\n            .attr('src', src);\r\n\r\n        if (this.data.hideWhenEmpty)\r\n            this.show();\r\n    };\r\n\r\n    MagicWand.prototype.licquidMethod_select = function (args) {\r\n        this.drawBorderFromSimplifiedData(JSON.parse(args.selection), true);\r\n    };\r\n\r\n    return MagicWand;\r\n});\n","define('drops/hotspot/hotspot',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'drops/magicWand/magicWand',\r\n    'underscore'\r\n], function ($, Drop, Style, MagicWand, _) {\r\n    'use strict';\r\n\r\n    var selections = [];\r\n    var selectionClickedEvent = 'selectionClicked'\r\n\r\n    function Hotspot(options) {\r\n        Drop.call(this, $('<div />'), null, options);\r\n\r\n        this.$image = $('<img />')\r\n            .css({\r\n                'width': '100%',\r\n                'height': '100%',\r\n                'overflow': 'hidden'\r\n            })\r\n            .appendTo(this.$element);\r\n\r\n        this.$canvas = $('<canvas />')\r\n            .css({\r\n                'position': 'absolute',\r\n                'top': '0px',\r\n                'left': '0px',\r\n                'width': '100%',\r\n                'height': '100%',\r\n                'overflow': 'hidden'\r\n            })\r\n            .appendTo(this.$element);\r\n\r\n        Style.renderStyles(this, null, this.$image);\r\n\r\n        this.hideWhenNecessary();\r\n        this.applyEventTrigger('mouseEnter', 'mouseenter');\r\n    };\r\n\r\n    Drop.extend(Hotspot, MagicWand);\r\n\r\n    Hotspot.typeName = 'Hotspot';\r\n\r\n    Hotspot.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n\r\n        var self = this;\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.dataSource,\r\n            function (data) { self._update(data); \r\n        });\r\n\r\n        this.addEventHandlers();\r\n    }\r\n\r\n    Hotspot.prototype._update = function (data) {\r\n        var self = this;\r\n        $.each(data.Results, function (key, result) {\r\n            selections.push(result);\r\n            self.drawBorderFromSimplifiedData(JSON.parse(result[self.data.selectedColumn || 'Path']));\r\n        });\r\n    };\r\n\r\n    Hotspot.prototype.addEventHandlers = function () {\r\n        if (this.isEventEnabled(selectionClickedEvent)) {\r\n            this.$canvas.css({ 'cursor': 'pointer' });\r\n            var self = this;\r\n            this.$canvas.on('click', function (e) {\r\n                var position = self.getMousePosition(e);\r\n                var ctx = self.$canvas.get(0).getContext(\"2d\");\r\n                ctx.clearRect(0, 0, self.$image.get(0).width, self.$image.get(0).height);\r\n\r\n                _.each(selections, function (selection) {\r\n                    var cs = JSON.parse(selection.Mask);\r\n                    if (cs.inner) { return; }\r\n                    for (var i = 0; i < cs.length; i++) {\r\n                        ctx.beginPath();\r\n                        var color = cs[i].inner ? 'red' : 'blue';\r\n                        self.drawArea(ctx, cs[i].points, color);\r\n\r\n                        if (ctx.isPointInPath(position.x, position.y)) {\r\n                            ctx.fillStyle = 'red';\r\n                            ctx.fill();\r\n                            self.triggerEvent(self.data.eventing[selectionClickedEvent].raisedEventName, selection[self.data.eventArg || 'Id']);\r\n                            return;\r\n                        }\r\n                    }\r\n                });\r\n            });\r\n        }\r\n    }\r\n\r\n    return Hotspot;\r\n});\n","define('drops/iframe/iframe',[\r\n    'jquery',\r\n    'lq',\r\n    'lq/drop',\r\n    'lq/style'\r\n], function ($, lq, Drop, Style) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            source: 'text',\r\n            url: '',\r\n            actionId: '',\r\n            parameters: [],\r\n            eventsToCatch: [],\r\n            scrolling: 'auto'\r\n        }\r\n    };\r\n\r\n    function Iframe(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n        var self = this;\r\n\r\n        this.$iframe = $('<iframe />')\r\n            .attr('scrolling', self.data.scrolling)\r\n            .css({\r\n                width: '100%',\r\n                height: '100%',\r\n                border: 0\r\n            })\r\n            .appendTo(self.$element);\r\n        \r\n        self.$element\r\n\t        .addClass('boxToBorderSize')\r\n\t        .css({\r\n\t            whiteSpace: 'pre-wrap'\r\n\t        });\r\n\r\n        Style.renderStyles(self);\r\n       \r\n        this.listenForMessage(function(e) {\r\n            // staying backwards compatible with existing custom code\r\n            var args = e.args ? e.args[0] : null;\r\n            self.triggerEvent(self.data.id + '.' + e.eventName, args);\r\n        });\r\n\r\n        return self;\r\n    };\r\n\r\n    Drop.extend(Iframe, Drop);\r\n\r\n    Iframe.typeName = 'Iframe';\r\n\r\n    Iframe.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n    };\r\n\r\n    Iframe.prototype.postRender = function () {\r\n        this.$iframe\r\n            .attr('src', this.getIframeUrl());\r\n    };\r\n\r\n    Iframe.prototype.getIframeUrl = function () {\r\n        if (this.data.source === 'text') {\r\n            return this.data.url;\r\n        } \r\n          \r\n        var parametersForIframe = this.getParametersForIframe();\r\n        var url = lq.getTenantUrl('LicquidAction/Get/' + this.data.actionId);\r\n        return url + '?parameters=' + encodeURIComponent(JSON.stringify(parametersForIframe));\r\n    };\r\n\r\n    Iframe.prototype.getParametersForIframe = function () {\r\n        if (!this.data.parameters)\r\n            return {};\r\n\r\n        var parameters = this.piping.parameters;\r\n        var parametersForIframe = {};\r\n        _.each(this.data.parameters, function(parameterName) {\r\n            parametersForIframe[parameterName] = parameters.getValue(parameterName);\r\n        });\r\n\r\n        return parametersForIframe;\r\n    };\r\n\r\n    Iframe.prototype.listenForMessage = function (callback) {\r\n        var eventMethod = window.addEventListener ? 'addEventListener' : 'attachEvent';\r\n        var messageEvent = window.addEventListener ? 'message' : 'onmessage';\r\n        var self = this;\r\n\r\n        window[eventMethod](messageEvent, function (e) {\r\n            if (e.source !== self.$iframe.get(0).contentWindow)\r\n                return;\r\n            try {\r\n                var eventObj = JSON.parse(e.data);\r\n                callback(eventObj);\r\n            } catch (err) {\r\n                //could not parse, ignore it\r\n            }\r\n\r\n        }, false);\r\n    };\r\n\r\n    Iframe.prototype.triggerEventForChild = function (eventObj) { \r\n        this.$iframe.get(0).contentWindow.postMessage(JSON.stringify(eventObj), \"*\");\r\n    };\r\n\r\n    Iframe.prototype.show = function() {\r\n        this.$iframe\r\n            .css('display', 'inherit');\r\n\r\n        Drop.prototype.show.call(this);\r\n    };\r\n\r\n    Iframe.prototype.hide = function () {\r\n        // drops that are not visible have 'visibility' set to 'hidden'\r\n        // but in some browser (e.g. Safari) the still block events when hidden\r\n        this.$iframe\r\n            .attr('src', '')\r\n            .css('display', 'none');\r\n\r\n        Drop.prototype.hide.call(this);\r\n    };\r\n\r\n    return Iframe;\r\n});\n","define('drops/image/image',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq',\r\n    'lq/util',\r\n    'lq/onlongpress',\r\n    'lq/tooltip',\r\n], function ($, Drop, Style, lq, util, OnLongPress, Tooltip) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            selectedResizeOption: 'completeImageKeepRatio',\r\n            openInline: false,\r\n            cropImageWidth: 150,\r\n            cropImageHeight: 150,\r\n            cropPositionX: 0,\r\n            cropPositionY: 0,\r\n            backgroundRepeat: false,\r\n            opacity: 100,\r\n            notOptimise: false,\r\n            optimisationLevel: 0,\r\n            title: {\r\n                option: Tooltip.hardcoded\r\n            },\r\n            size: {\r\n                x: 250,\r\n                y: 175\r\n            }\r\n        }\r\n    };\r\n\r\n    function Image(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing);\r\n\r\n        this.$image = $('<div />')\r\n            .css({\r\n                'width': '100%',\r\n                'height': '100%',\r\n                'overflow': 'hidden'\r\n            })\r\n            .attr('tabindex', this.data.tabIndex)\r\n            .appendTo(this.$element);\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize');\r\n\r\n        this.tooltip = new Tooltip(this, this.data.title, this.$image);\r\n\r\n        Style.renderStyles(this, null, this.$image);\r\n\r\n        this.applyEventTrigger('mouseEnter', 'mouseenter');\r\n        this.applyEventTrigger('mouseLeave', 'mouseleave');\r\n    };\r\n\r\n    Drop.extend(Image, Drop);\r\n\r\n    Image.typeName = 'Image';\r\n\r\n    Image.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.tooltip.update();\r\n\r\n        this.setImageScaling(this.data.selectedResizeOption);\r\n\r\n        var imagePath = this.getImagePath();\r\n        if (imagePath)\r\n            this.setImage(imagePath);\r\n\r\n        // This property is here for backwards compatibility.\r\n        // Ignore it when the value was left untouched,\r\n        // otherwise it will overwrite the value from styling\r\n        if (this.data.opacity !== 100)\r\n            this.setOpacity(this.data.opacity);\r\n\r\n        this.initialize();\r\n        this.applyPosition();\r\n    };\r\n\r\n    Image.prototype.getImagePath = function () {\r\n        if (this.data.physicalFile)\r\n            return lq.getTenantUploads(this.data.physicalFile);\r\n\r\n        // non-editable property used on generated images like default preloader on list\r\n        if (this.data.cdnPath)\r\n            return lq.getCdnUrl(this.data.cdnPath);\r\n\r\n        return null;\r\n    };\r\n\r\n    Image.prototype.setImage = function(path) {\r\n        this.$image.css('background-image', 'url(' + path + ')');\r\n    };\r\n\r\n    Image.prototype.initialize = function() {\r\n        var self = this;\r\n\r\n        if (this.data.hyperlink) {\r\n            this.data.hyperlink = util.convertRelativeHyperlinkToHostName(this.data.hyperlink);\r\n\r\n            this.$image\r\n                .addClass('clickable')\r\n                .on('click', function (event) {\r\n                    window.open(self.data.hyperlink, self.data.openInline ? '_self' : '_blank');\r\n                    event.stopPropagation();\r\n                });\r\n        }\r\n\r\n        if (!this.data.hyperlink) {\r\n            new OnLongPress().applyLongPressOnElement(this.$element, this);\r\n        } else {\r\n            this.data.hyperlink = util.convertRelativeHyperlinkToHostName(this.data.hyperlink);\r\n\r\n            new OnLongPress().applyLongPressOnElement(this.$element, this, null,\r\n                function (event) {\r\n                    window.open(self.data.hyperlink, self.data.openInline ? '_self' : '_blank');\r\n                    event.stopPropagation();\r\n                });\r\n        }\r\n        if (!this.designData && this.isEventEnabled('onLongPress')) {\r\n            this.$image.addClass('clickable');\r\n        }\r\n        if (this.data.eventing && this.data.eventing.clicked && this.data.eventing.clicked.enabled === true) {\r\n            this.$image\r\n                .addClass('clickable')\r\n                .on('keypress', function (e) {\r\n                    if (e.keyCode === 13)\r\n                        self.triggerEvent(self.data.eventing.clicked.raisedEventName);\r\n                });\r\n        }\r\n    };\r\n\r\n    Image.prototype.setOpacity = function(opacity) {\r\n        this.$image.css({ opacity: opacity / 100 });\r\n    };\r\n\r\n    // todo unify Image and DynamicImage\r\n    Image.prototype.setImageScaling = function (resizeOption) {\r\n        if (resizeOption === 'fill') {\r\n            this.$image.css('background-size', '100% 100%');\r\n        } else if (resizeOption === 'fillKeepRatio') {\r\n            this.$image.css('background-size', 'cover');\r\n        } else if (resizeOption === 'crop') {\r\n            this.$image.css('background-size', this.data.cropImageWidth + 'px' + ' ' + this.data.cropImageHeight + 'px');\r\n        } else if (resizeOption === 'completeImageKeepRatio') {\r\n            this.$image.css({\r\n                'background-size': 'contain',\r\n                'background-repeat': 'no-repeat',\r\n                'background-position': this.data.horizontalImageAlignment + ' ' + this.data.verticalImageAlignment\r\n            });\r\n        }\r\n\r\n        //somehow offset doesn't work with center px center px\r\n\r\n        var str = 'calc(' +\r\n            this.getPercentage(this.data.backgroundAnchorX) +\r\n            ' + ' +\r\n            this.data.cropPositionX +\r\n            'px) calc(' +\r\n            this.getPercentage(this.data.backgroundAnchorY) +\r\n            ' + ' +\r\n            this.data.cropPositionY +\r\n            'px)';\r\n\r\n        this.$image.css('background-position', str);\r\n\r\n        this.$image.css('background-repeat', this.data.backgroundRepeat ? 'repeat' : 'no-repeat');\r\n    };\r\n\r\n    Image.prototype.getPercentage = function(value)\r\n    {\r\n        switch (value) {\r\n            case 'left':\r\n                return '0%';\r\n            case 'center':\r\n                return '50%';\r\n            case 'right':\r\n                return '100%';\r\n            case 'top':\r\n                return '0%';\r\n            case 'bottom':\r\n                return '100%';\r\n            default:\r\n                return '50%' ;\r\n        }\r\n    };\r\n\r\n    return Image;\r\n});\n","define('drops/imageKpi/imageKpi',[\r\n    'jquery',\r\n    'lq',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'underscore'\r\n], function ($, lq, Drop, Style, util, _) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            notOptimise: false,\r\n            optimisationLevel: 0\r\n        }\r\n    };\r\n\r\n    function ImageKpi(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n        var self = this;\r\n\r\n        self.data.eventing = util.convertListOfKeyValuesToObject(self.data.eventing);\r\n\r\n        self.value =  this.data.nullImage\r\n            ? null\r\n            : 0;\r\n        self.images = [];\r\n\r\n        self.$element\r\n\t        .addClass('boxToBorderSize')\r\n            .css({\r\n                overflow: 'hidden'\r\n            });\r\n\r\n        self.$image = $('<img />')\r\n            .hide()\r\n            .appendTo(self.$element);\r\n\r\n        Style.renderStyles(self);\r\n    };\r\n\r\n    Drop.extend(ImageKpi, Drop);\r\n\r\n    ImageKpi.typeName = 'ImageKpi';\r\n\r\n    ImageKpi.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n        this.loadImages();\r\n    };\r\n\r\n    ImageKpi.prototype.loadImages = function () {\r\n        var self = this;\r\n        \r\n        var images = this.data.images;\r\n        \r\n        if(this.data.nullImage) {\r\n            images = images.concat([{\r\n                fileName: this.data.nullImage,\r\n                from: null,\r\n                to: null\r\n            }]);\r\n        }\r\n        \r\n        _.forEach(images, function (image) {\r\n            var url = lq.getTenantUploads(image.fileName);\r\n\r\n            $('<img/>')\r\n                .on('load', function () {\r\n                    loadingFunc(this, url, image.fileName, image.to, image.from);\r\n                })\r\n                .attr('src', url);\r\n        });\r\n\r\n        var loadingFunc = function ($img, url, fileName, to, from) {\r\n            var kpi = {};\r\n            kpi.url = url;\r\n            kpi.fileName = fileName;\r\n            kpi.width = $img.width;\r\n            kpi.height = $img.height;\r\n            kpi.to = to;\r\n            kpi.from = from;\r\n\r\n            self.images.push(kpi);\r\n\r\n            if (self.isTheImageWereLookingFor(kpi)) {\r\n                self.replaceImage(kpi);\r\n            }\r\n        };\r\n    };\r\n\r\n    ImageKpi.prototype.updateImage = function () {\r\n        var self = this;\r\n        var selectedImage = _.find(this.images, function (image) {\r\n            return self.isTheImageWereLookingFor(image);\r\n        });\r\n        this.replaceImage(selectedImage);\r\n    };\r\n\r\n    ImageKpi.prototype.isTheImageWereLookingFor = function (image) { // Because 'this.value' and 'image.from' can be null\r\n        return (this.value !== null && this.value >= image.from && this.value < image.to) || this.value === image.from;\r\n    };\r\n\r\n    ImageKpi.prototype.replaceImage = function (image) {\r\n        if (!image) {\r\n            this.$image.attr('src', '');\r\n        } else if (image.url !== this.$image.attr('src')) {\r\n            if (image.resizeOption === 'FillKeepRatio') {\r\n                var aspectRatio = image.width / image.height;\r\n                var availableWidth = this.$element.width();\r\n                var availableHeight = this.$element.height();\r\n                var targetWidth = availableWidth;\r\n                var targetHeight = availableWidth / aspectRatio;\r\n\r\n                if (targetHeight < availableHeight) {\r\n                    targetWidth = availableHeight * aspectRatio;\r\n                    targetHeight = availableHeight;\r\n                }\r\n\r\n                this.$image\r\n                    .width(targetWidth)\r\n                    .height(targetHeight);\r\n            } else {\r\n                this.$image\r\n                    .width(this.$element.width())\r\n                    .height(this.$element.height());\r\n            }\r\n\r\n            this.$image\r\n                .attr('src', image.url)\r\n                .show();\r\n        }\r\n    };\r\n\r\n    ImageKpi.prototype.clearValue = function () {\r\n        this.value = null;\r\n        this.updateImage();\r\n    };\r\n\r\n    ImageKpi.prototype.setValue = function (update) {\r\n        var parsedValue = parseFloat(update.value);      \r\n        this.value = isNaN(parsedValue) ? null : parsedValue;\r\n        this.updateImage();\r\n    };\r\n\r\n    ImageKpi.prototype.getNullImageUrl = function () {\r\n        if (!this.data.nullImage)\r\n            return lq.getCdnUrl('Drops/ImageKPI/no_image.png');\r\n        return lq.getTenantUploads(this.data.nullImage);\r\n    };\r\n\r\n    ImageKpi.prototype.getUploadUrl = function (filename) {\r\n        if (filename)\r\n            return lq.getTenantUploads(filename);\r\n        return lq.getCdnUrl('Drops/ImageKPI/no_image.png');\r\n    };\r\n\r\n    return ImageKpi;\r\n});\n","define('drops/input/input',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/constants',\r\n    'lq/util',\r\n    'lq/tooltip',\r\n    'jquery.placeholder',\r\n    'lq/required',\r\n    'lq'\r\n], function ($, _, Drop, Style, constants, util, Tooltip, placeholder, Required, lq) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            title: {\r\n                option: Tooltip.hardcoded\r\n            },\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded'\r\n            },\r\n            useCustomImage: false,\r\n            changedDelay: 500,\r\n            autocomplete: 'on'\r\n        }\r\n    };\r\n\r\n    function Input(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing) || {};\r\n\r\n        this.typeOfCurrentValue = constants.valueTypes.string;\r\n\r\n        var inputType = this.data.maskedInput ? 'password' : 'text';  //type needs to be set before creating, because it cannot be changed\r\n        this.$input = $('<input type=' + inputType + ' />')\r\n\t        .addClass('boxToBorderSize')\r\n            .attr('name', this.data.name)\r\n            .attr('tabindex', this.data.tabIndex)\r\n\t\t\t.attr('placeholder', this.data.watermark)\r\n            .attr('autocomplete', this.data.autocomplete)\r\n            .val(this.data.defaultValue || '')\r\n            .css({\r\n                width: '100%',\r\n                height: '100%'\r\n            })\r\n            .appendTo(this.$element);\r\n\r\n        if (this.data.maskedInput) {\r\n            this.addTogglePassword();\r\n            this.changeOpenEyeIcon();\r\n        } else {\r\n            this.removeTogglePassword();\r\n        }\r\n\r\n        this.$input[0].setAttribute('value', '');\r\n\r\n        this.tooltip = new Tooltip(this, this.data.title, this.$input);\r\n\r\n        var self = this;\r\n        var focusLostEvent = this.getEventDataFor('focusLost');\r\n        if (focusLostEvent.enabled) {\r\n            this.$input.on('blur', function () {\r\n                self.triggerEvent(focusLostEvent.raisedEventName);\r\n            });\r\n        }\r\n\r\n        var enterPressedEvent = this.getEventDataFor('enterPressed');\r\n        if (enterPressedEvent.enabled) {\r\n            this.$input.on('keyup', function (event) {\r\n                if (event.keyCode === 13) {\r\n                    self.triggerEvent(enterPressedEvent.raisedEventName);\r\n                }\r\n            });\r\n        }\r\n\r\n        var changedEvent = this.getEventDataFor('changed');\r\n        if (changedEvent.enabled) {\r\n            this.subscribeEventHandler(this.$input, 'keydown', function () {\r\n                if (!_.has(self, 'lastChangedEventValue'))\r\n                    self.lastChangedEventValue = self.getValue();\r\n            });\r\n            this.subscribeEventHandler(this.$input, 'keypress input', _.debounce(function () {\r\n                if (self.lastChangedEventValue !== self.getValue()) {\r\n                    self.lastChangedEventValue = self.getValue();\r\n                    self.triggerEvent(changedEvent.raisedEventName);\r\n                }\r\n            }, this.data.changedDelay));\r\n        }\r\n\r\n    \tthis.$element\r\n\t        .css({\r\n\t            whiteSpace: 'pre-wrap'\r\n\t        });\r\n\r\n    \tStyle.renderStyles(this, null, this.$input);\r\n    };\r\n\r\n    Drop.extend(Input, Drop);\r\n\r\n    Input.typeName = 'Input';\r\n\r\n    Input.prototype.preRender = function () {\r\n        this.$input\r\n            .attr('id', this.rootDrop.instanceId + '_' + this.data.id);\r\n        this.tooltip.update();\r\n        this.piping.visibility.apply(this);\r\n        this.piping.required.apply(this);\r\n        this.formatter = this.piping.formatting.createFormatter(this.data.formatting);\r\n        Required.prototype.addRemoveRequiredIndicator(this);\r\n\r\n        this.applyPosition();\r\n        this.initialize();\r\n    };\r\n\r\n    Input.prototype.postRender = function () {\r\n        this.$input.placeholder(); // needs to be done after rendering, otherwise it breaks IE9\r\n    };\r\n\r\n    Input.prototype.initialize = function () {\r\n        var self = this;\r\n        this.$input.on('keyup', function () {\r\n            self.updateRequiredIndicator();\r\n            this.setAttribute('value', this.value);\r\n        });\r\n\r\n        if (this.data.readOnly)\r\n            this.$input.prop('readonly', true);\r\n\r\n        if (this.data.hasMaxLength)\r\n            this.$input.attr('maxlength', this.data.maxLength);\r\n    };\r\n\r\n    Input.prototype.focus = function() {\r\n        this.$input.trigger('focus');\r\n    };\r\n\r\n    Input.prototype.getDefaultEventArg = function () {\r\n        return this.getValue();\r\n    };\r\n\r\n    Input.prototype.getValue = function () {\r\n        return this.formatter.convertToLicquidFormat(this.typeOfCurrentValue, this.$input.val());\r\n    };\r\n\r\n    Input.prototype.clearValue = function () {\r\n        this.$input.val('');\r\n        this.$input[0].setAttribute('value', '');\r\n        this.lastChangedEventValue = '';\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    Input.prototype.setValue = function (update) {\r\n        var text = this.formatter.convertFromLicquidFormat(update.type, update.value === null ? '' : update.value);\r\n        this.$input.val(text);\r\n        this.$input[0].setAttribute('value', text);\r\n        this.typeOfCurrentValue = update.type;\r\n        this.lastChangedEventValue = update.value;\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    Input.prototype.addTogglePassword = function () {\r\n        var self = this;\r\n        this.$togglePassword = $('<div class = \"input-fa input-fa-eye\">')\r\n            .prop('title', 'Show password')\r\n            .css({\r\n                position: 'absolute',\r\n                top: '50%',\r\n                right: '5px',\r\n                transform: 'translateY(-50%)'\r\n            })\r\n            .on('click', function () {\r\n                if (self.$input[0].type === \"password\") {\r\n                    self.changeClosedEyeIcon();\r\n                } else {\r\n                    self.changeOpenEyeIcon();\r\n                }\r\n            })\r\n            .appendTo(this.$element);\r\n    };\r\n\r\n    Input.prototype.removeTogglePassword = function () {\r\n        if (this.$togglePassword) {\r\n            this.$togglePassword.remove();\r\n            delete this.$togglePassword;\r\n        }\r\n    };\r\n\r\n    Input.prototype.getOpenEyeImagePath = function () {\r\n        if (this.data.physicalFileOpenEye)\r\n            return lq.getTenantUploads(this.data.physicalFileOpenEye);\r\n\r\n        return null;\r\n    };\r\n\r\n    Input.prototype.getClosedEyeImagePath = function () {\r\n        if (this.data.physicalFileClosedEye)\r\n            return lq.getTenantUploads(this.data.physicalFileClosedEye);\r\n\r\n        return null;\r\n    };\r\n\r\n    Input.prototype.changeOpenEyeIcon = function () {\r\n        if (!this.$togglePassword) {\r\n            this.addTogglePassword();\r\n        }\r\n        var type = 'open';\r\n        var imagePath = this.getOpenEyeImagePath();\r\n        if (imagePath && this.data.maskedInput && this.data.useCustomImage) {\r\n            this.setCustomEyeImage(imagePath, type);\r\n        } else if (this.data.maskedInput) {\r\n            this.clearCustomEyeImage(type);\r\n        }\r\n\r\n        this.$input[0].type = \"password\";\r\n    }\r\n\r\n    Input.prototype.changeClosedEyeIcon = function () {\r\n        if (!this.$togglePassword) {\r\n            this.addTogglePassword();\r\n        }\r\n        var type = 'closed';\r\n        var imagePath = this.getClosedEyeImagePath();\r\n        if (imagePath && this.data.maskedInput && this.data.useCustomImage) {\r\n            this.setCustomEyeImage(imagePath, type);\r\n        } else if (this.data.maskedInput) {\r\n            this.clearCustomEyeImage(type);\r\n        }\r\n\r\n        this.$input[0].type = \"text\";\r\n    }\r\n\r\n    Input.prototype.setCustomEyeImage = function(image, type) {\r\n        this.$togglePassword\r\n            .css({\r\n                width: '16px',\r\n                height: '16px',\r\n                backgroundImage: 'url(' +  require.toUrl(image) + ')',\r\n                backgroundSize: '100% 100%'\r\n            })\r\n            .removeClass('input-fa-eye input-fa-eye-slash');\r\n\r\n        if (type === 'closed') {\r\n            $(this.$togglePassword)\r\n                .prop('title', 'Hide password');\r\n        }\r\n        else if (type === 'open') {\r\n            $(this.$togglePassword)\r\n                .prop('title', 'Show password');\r\n        }\r\n    };\r\n\r\n    Input.prototype.clearCustomEyeImage = function(type) {\r\n        $(this.$togglePassword)\r\n            .css({\r\n                width: '',\r\n                height: '',\r\n                backgroundImage: '',\r\n                backgroundSize: ''\r\n            });\r\n        if (type === 'closed') {\r\n            $(this.$togglePassword)\r\n                .prop('title', 'Hide password')\r\n                .addClass('input-fa-eye-slash')\r\n                .removeClass('input-fa-eye');\r\n        }\r\n        else if (type === 'open') {\r\n            $(this.$togglePassword)\r\n                .prop('title', 'Show password')\r\n                .addClass('input-fa-eye')\r\n                .removeClass('input-fa-eye-slash');\r\n        }\r\n    };\r\n\r\n    Input.prototype.setPlaceholder = function (val) {\r\n        this.$input.attr('placeholder', val);\r\n    };\r\n\r\n    return Input;\r\n});\r\n\n","define('drops/jitsiMeeting/jitsiMeeting',[\r\n    'jquery',\r\n    'when',\r\n    'lq',\r\n    'lq/drop',\r\n    'lq/style'\r\n], function ($, when, lq, Drop, Style) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            meetingHasName: false\r\n        }\r\n    };\r\n\r\n    function JitsiMeeting(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n        var self = this;\r\n\r\n        self.meetingDataIsUpdated = false;\r\n        self.isRendered = false;\r\n        self.JitsiMeetExternalAPI = undefined;\r\n        self.runningMeetingAPI = undefined;\r\n\r\n        self.$meeting = $('<div />')\r\n            .css({\r\n                width: '100%',\r\n                height: '100%',\r\n                border: 0\r\n            })\r\n            .appendTo(self.$element);\r\n\r\n        self.$element\r\n            .addClass('boxToBorderSize')\r\n            .css({\r\n                whiteSpace: 'pre-wrap'\r\n            });\r\n\r\n        Style.renderStyles(self);\r\n\r\n        return self;\r\n    };\r\n\r\n    Drop.extend(JitsiMeeting, Drop);\r\n\r\n    JitsiMeeting.typeName = 'JitsiMeeting';\r\n\r\n    JitsiMeeting.prototype.preRender = function () {\r\n        var self = this;\r\n\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.meetingDatasource,\r\n            function (data) {\r\n                self.meetingData = data;\r\n                self.meetingDataIsUpdated = true;\r\n                self.tryStartMeeting();\r\n            });\r\n\r\n        var domain = self.data.jitsiServer || 'meet.jit.si';\r\n\r\n        var deferred = when.defer();\r\n        require(['https://' + domain + '/external_api.js'],\r\n            function (jitsi) {\r\n                deferred.resolve();\r\n\r\n                self.JitsiMeetExternalAPI = jitsi;\r\n                self.tryStartMeeting();\r\n            });\r\n\r\n        return deferred.promise;\r\n    };\r\n\r\n    JitsiMeeting.prototype.postRender = function () {\r\n        var self = this;\r\n\r\n        self.isRendered = true;\r\n        self.tryStartMeeting();\r\n    };\r\n\r\n    JitsiMeeting.prototype.tryStartMeeting = function () {\r\n        var self = this;\r\n\r\n        if (!self.meetingDataIsUpdated) return;\r\n        if (!self.isRendered) return;\r\n        if (!self.JitsiMeetExternalAPI) return;\r\n\r\n        self.meetingDataIsUpdated = false;\r\n\r\n        if (window.cordova &&\r\n            window.cordova.plugins &&\r\n            window.cordova.plugins.diagnostic &&\r\n            window.cordova.plugins.diagnostic.requestRuntimePermissions) {\r\n            window.cordova.plugins.diagnostic.requestRuntimePermissions(function () {\r\n                    self.startMeeting();\r\n                },\r\n                function (error) {\r\n                    console.error(\"The following error occurred: \" + error);\r\n                },\r\n                [\r\n                    window.cordova.plugins.diagnostic.permission.CAMERA,\r\n                    window.cordova.plugins.diagnostic.permission.RECORD_AUDIO\r\n                ]);\r\n        } else {\r\n            self.startMeeting();\r\n        }\r\n    };\r\n\r\n    JitsiMeeting.prototype.startMeeting = function () {\r\n        var self = this;\r\n        var meetingData = self.meetingData.results[0];\r\n\r\n        if (this.runningMeetingAPI)\r\n            this.runningMeetingAPI.dispose();\r\n\r\n        var domain = self.data.jitsiServer || 'meet.jit.si';\r\n        var options = {\r\n            roomName: 'LicquidMeeting-' + meetingData[self.data.meetingIdOutput],\r\n            parentNode: self.$meeting[0],\r\n            userInfo: {\r\n                displayName: meetingData[self.data.fullNameOutput]\r\n            },\r\n            configOverwrite: {\r\n                disableDeepLinking: true,\r\n                disableInviteFunctions: true,\r\n                doNotStoreRoom: true,\r\n                //fileRecordingsEnabled: false,\r\n                //fileRecordingsServiceEnabled: false,\r\n                //fileRecordingsServiceSharingEnabled: false,\r\n                //liveStreamingEnabled: false\r\n            },\r\n            interfaceConfigOverwrite: {\r\n                //SHOW_JITSI_WATERMARK: false,\r\n                //SHOW_WATERMARK_FOR_GUESTS: false\r\n                SHOW_CHROME_EXTENSION_BANNER: false\r\n            }\r\n        };\r\n\r\n        var api = new self.JitsiMeetExternalAPI(domain, options);\r\n\r\n        self.runningMeetingAPI = api;\r\n\r\n        if (self.data.meetingHasName) {\r\n            api.executeCommand('subject', meetingData[self.data.meetingNameOutput]);\r\n        }\r\n\r\n        var avatarURL = meetingData[self.data.fullNameavaterURLOutputOutput];\r\n        if (avatarURL) {\r\n            api.executeCommand('avatarUrl', avatarURL);\r\n        }\r\n\r\n        api.addEventListener('readyToClose', function () {\r\n            self.triggerEventIfEnabled('meetingEnded');\r\n        });\r\n    };\r\n\r\n    return JitsiMeeting;\r\n});\n","/*! Sortable 1.15.0 - MIT | git://github.com/SortableJS/Sortable.git */\r\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define('sortable',e):(t=t||self).Sortable=e()}(this,function(){\"use strict\";function e(e,t){var n,o=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,n)),o}function M(o){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?e(Object(i),!0).forEach(function(t){var e,n;e=o,t=i[n=t],n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t}):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(i)):e(Object(i)).forEach(function(t){Object.defineProperty(o,t,Object.getOwnPropertyDescriptor(i,t))})}return o}function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function a(){return(a=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n,o=arguments[e];for(n in o)Object.prototype.hasOwnProperty.call(o,n)&&(t[n]=o[n])}return t}).apply(this,arguments)}function i(t,e){if(null==t)return{};var n,o=function(t,e){if(null==t)return{};for(var n,o={},i=Object.keys(t),r=0;r<i.length;r++)n=i[r],0<=e.indexOf(n)||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols)for(var i=Object.getOwnPropertySymbols(t),r=0;r<i.length;r++)n=i[r],0<=e.indexOf(n)||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n]);return o}function r(t){return function(t){if(Array.isArray(t))return l(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t[\"@@iterator\"])return Array.from(t)}(t)||function(t,e){if(t){if(\"string\"==typeof t)return l(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return\"Map\"===(n=\"Object\"===n&&t.constructor?t.constructor.name:n)||\"Set\"===n?Array.from(t):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(t,e):void 0}}(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function t(t){if(\"undefined\"!=typeof window&&window.navigator)return!!navigator.userAgent.match(t)}var y=t(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i),w=t(/Edge/i),s=t(/firefox/i),u=t(/safari/i)&&!t(/chrome/i)&&!t(/android/i),n=t(/iP(ad|od|hone)/i),c=t(/chrome/i)&&t(/android/i),d={capture:!1,passive:!1};function h(t,e,n){t.addEventListener(e,n,!y&&d)}function f(t,e,n){t.removeEventListener(e,n,!y&&d)}function p(t,e){if(e&&(\">\"===e[0]&&(e=e.substring(1)),t))try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(t){return}}function N(t,e,n,o){if(t){n=n||document;do{if(null!=e&&(\">\"!==e[0]||t.parentNode===n)&&p(t,e)||o&&t===n)return t}while(t!==n&&(t=(i=t).host&&i!==document&&i.host.nodeType?i.host:i.parentNode))}var i;return null}var g,m=/\\s+/g;function I(t,e,n){var o;t&&e&&(t.classList?t.classList[n?\"add\":\"remove\"](e):(o=(\" \"+t.className+\" \").replace(m,\" \").replace(\" \"+e+\" \",\" \"),t.className=(o+(n?\" \"+e:\"\")).replace(m,\" \")))}function P(t,e,n){var o=t&&t.style;if(o){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,\"\"):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];o[e=!(e in o||-1!==e.indexOf(\"webkit\"))?\"-webkit-\"+e:e]=n+(\"string\"==typeof n?\"\":\"px\")}}function v(t,e){var n=\"\";if(\"string\"==typeof t)n=t;else do{var o=P(t,\"transform\")}while(o&&\"none\"!==o&&(n=o+\" \"+n),!e&&(t=t.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(n)}function b(t,e,n){if(t){var o=t.getElementsByTagName(e),i=0,r=o.length;if(n)for(;i<r;i++)n(o[i],i);return o}return[]}function O(){var t=document.scrollingElement;return t||document.documentElement}function k(t,e,n,o,i){if(t.getBoundingClientRect||t===window){var r,a,l,s,c,u,d=t!==window&&t.parentNode&&t!==O()?(a=(r=t.getBoundingClientRect()).top,l=r.left,s=r.bottom,c=r.right,u=r.height,r.width):(l=a=0,s=window.innerHeight,c=window.innerWidth,u=window.innerHeight,window.innerWidth);if((e||n)&&t!==window&&(i=i||t.parentNode,!y))do{if(i&&i.getBoundingClientRect&&(\"none\"!==P(i,\"transform\")||n&&\"static\"!==P(i,\"position\"))){var h=i.getBoundingClientRect();a-=h.top+parseInt(P(i,\"border-top-width\")),l-=h.left+parseInt(P(i,\"border-left-width\")),s=a+r.height,c=l+r.width;break}}while(i=i.parentNode);return o&&t!==window&&(o=(e=v(i||t))&&e.a,t=e&&e.d,e&&(s=(a/=t)+(u/=t),c=(l/=o)+(d/=o))),{top:a,left:l,bottom:s,right:c,width:d,height:u}}}function R(t,e,n){for(var o=A(t,!0),i=k(t)[e];o;){var r=k(o)[n];if(!(\"top\"===n||\"left\"===n?r<=i:i<=r))return o;if(o===O())break;o=A(o,!1)}return!1}function X(t,e,n,o){for(var i=0,r=0,a=t.children;r<a.length;){if(\"none\"!==a[r].style.display&&a[r]!==Bt.ghost&&(o||a[r]!==Bt.dragged)&&N(a[r],n.draggable,t,!1)){if(i===e)return a[r];i++}r++}return null}function Y(t,e){for(var n=t.lastElementChild;n&&(n===Bt.ghost||\"none\"===P(n,\"display\")||e&&!p(n,e));)n=n.previousElementSibling;return n||null}function B(t,e){var n=0;if(!t||!t.parentNode)return-1;for(;t=t.previousElementSibling;)\"TEMPLATE\"===t.nodeName.toUpperCase()||t===Bt.clone||e&&!p(t,e)||n++;return n}function E(t){var e=0,n=0,o=O();if(t)do{var i=v(t),r=i.a,i=i.d}while(e+=t.scrollLeft*r,n+=t.scrollTop*i,t!==o&&(t=t.parentNode));return[e,n]}function A(t,e){if(!t||!t.getBoundingClientRect)return O();var n=t,o=!1;do{if(n.clientWidth<n.scrollWidth||n.clientHeight<n.scrollHeight){var i=P(n);if(n.clientWidth<n.scrollWidth&&(\"auto\"==i.overflowX||\"scroll\"==i.overflowX)||n.clientHeight<n.scrollHeight&&(\"auto\"==i.overflowY||\"scroll\"==i.overflowY)){if(!n.getBoundingClientRect||n===document.body)return O();if(o||e)return n;o=!0}}}while(n=n.parentNode);return O()}function D(t,e){return Math.round(t.top)===Math.round(e.top)&&Math.round(t.left)===Math.round(e.left)&&Math.round(t.height)===Math.round(e.height)&&Math.round(t.width)===Math.round(e.width)}function S(e,n){return function(){var t;g||(1===(t=arguments).length?e.call(this,t[0]):e.apply(this,t),g=setTimeout(function(){g=void 0},n))}}function F(t,e,n){t.scrollLeft+=e,t.scrollTop+=n}function _(t){var e=window.Polymer,n=window.jQuery||window.Zepto;return e&&e.dom?e.dom(t).cloneNode(!0):n?n(t).clone(!0)[0]:t.cloneNode(!0)}function C(t,e){P(t,\"position\",\"absolute\"),P(t,\"top\",e.top),P(t,\"left\",e.left),P(t,\"width\",e.width),P(t,\"height\",e.height)}function T(t){P(t,\"position\",\"\"),P(t,\"top\",\"\"),P(t,\"left\",\"\"),P(t,\"width\",\"\"),P(t,\"height\",\"\")}var j=\"Sortable\"+(new Date).getTime();function x(){var e,o=[];return{captureAnimationState:function(){o=[],this.options.animation&&[].slice.call(this.el.children).forEach(function(t){var e,n;\"none\"!==P(t,\"display\")&&t!==Bt.ghost&&(o.push({target:t,rect:k(t)}),e=M({},o[o.length-1].rect),!t.thisAnimationDuration||(n=v(t,!0))&&(e.top-=n.f,e.left-=n.e),t.fromRect=e)})},addAnimationState:function(t){o.push(t)},removeAnimationState:function(t){o.splice(function(t,e){for(var n in t)if(t.hasOwnProperty(n))for(var o in e)if(e.hasOwnProperty(o)&&e[o]===t[n][o])return Number(n);return-1}(o,{target:t}),1)},animateAll:function(t){var c=this;if(!this.options.animation)return clearTimeout(e),void(\"function\"==typeof t&&t());var u=!1,d=0;o.forEach(function(t){var e=0,n=t.target,o=n.fromRect,i=k(n),r=n.prevFromRect,a=n.prevToRect,l=t.rect,s=v(n,!0);s&&(i.top-=s.f,i.left-=s.e),n.toRect=i,n.thisAnimationDuration&&D(r,i)&&!D(o,i)&&(l.top-i.top)/(l.left-i.left)==(o.top-i.top)/(o.left-i.left)&&(t=l,s=r,r=a,a=c.options,e=Math.sqrt(Math.pow(s.top-t.top,2)+Math.pow(s.left-t.left,2))/Math.sqrt(Math.pow(s.top-r.top,2)+Math.pow(s.left-r.left,2))*a.animation),D(i,o)||(n.prevFromRect=o,n.prevToRect=i,e=e||c.options.animation,c.animate(n,l,i,e)),e&&(u=!0,d=Math.max(d,e),clearTimeout(n.animationResetTimer),n.animationResetTimer=setTimeout(function(){n.animationTime=0,n.prevFromRect=null,n.fromRect=null,n.prevToRect=null,n.thisAnimationDuration=null},e),n.thisAnimationDuration=e)}),clearTimeout(e),u?e=setTimeout(function(){\"function\"==typeof t&&t()},d):\"function\"==typeof t&&t(),o=[]},animate:function(t,e,n,o){var i,r;o&&(P(t,\"transition\",\"\"),P(t,\"transform\",\"\"),i=(r=v(this.el))&&r.a,r=r&&r.d,i=(e.left-n.left)/(i||1),r=(e.top-n.top)/(r||1),t.animatingX=!!i,t.animatingY=!!r,P(t,\"transform\",\"translate3d(\"+i+\"px,\"+r+\"px,0)\"),this.forRepaintDummy=t.offsetWidth,P(t,\"transition\",\"transform \"+o+\"ms\"+(this.options.easing?\" \"+this.options.easing:\"\")),P(t,\"transform\",\"translate3d(0,0,0)\"),\"number\"==typeof t.animated&&clearTimeout(t.animated),t.animated=setTimeout(function(){P(t,\"transition\",\"\"),P(t,\"transform\",\"\"),t.animated=!1,t.animatingX=!1,t.animatingY=!1},o))}}}var H=[],L={initializeByDefault:!0},K={mount:function(e){for(var t in L)!L.hasOwnProperty(t)||t in e||(e[t]=L[t]);H.forEach(function(t){if(t.pluginName===e.pluginName)throw\"Sortable: Cannot mount plugin \".concat(e.pluginName,\" more than once\")}),H.push(e)},pluginEvent:function(e,n,o){var t=this;this.eventCanceled=!1,o.cancel=function(){t.eventCanceled=!0};var i=e+\"Global\";H.forEach(function(t){n[t.pluginName]&&(n[t.pluginName][i]&&n[t.pluginName][i](M({sortable:n},o)),n.options[t.pluginName]&&n[t.pluginName][e]&&n[t.pluginName][e](M({sortable:n},o)))})},initializePlugins:function(n,o,i,t){for(var e in H.forEach(function(t){var e=t.pluginName;(n.options[e]||t.initializeByDefault)&&((t=new t(n,o,n.options)).sortable=n,t.options=n.options,n[e]=t,a(i,t.defaults))}),n.options){var r;n.options.hasOwnProperty(e)&&(void 0!==(r=this.modifyOption(n,e,n.options[e]))&&(n.options[e]=r))}},getEventProperties:function(e,n){var o={};return H.forEach(function(t){\"function\"==typeof t.eventProperties&&a(o,t.eventProperties.call(n[t.pluginName],e))}),o},modifyOption:function(e,n,o){var i;return H.forEach(function(t){e[t.pluginName]&&t.optionListeners&&\"function\"==typeof t.optionListeners[n]&&(i=t.optionListeners[n].call(e[t.pluginName],o))}),i}};function W(t){var e=t.sortable,n=t.rootEl,o=t.name,i=t.targetEl,r=t.cloneEl,a=t.toEl,l=t.fromEl,s=t.oldIndex,c=t.newIndex,u=t.oldDraggableIndex,d=t.newDraggableIndex,h=t.originalEvent,f=t.putSortable,p=t.extraEventProperties;if(e=e||n&&n[j]){var g,m=e.options,t=\"on\"+o.charAt(0).toUpperCase()+o.substr(1);!window.CustomEvent||y||w?(g=document.createEvent(\"Event\")).initEvent(o,!0,!0):g=new CustomEvent(o,{bubbles:!0,cancelable:!0}),g.to=a||n,g.from=l||n,g.item=i||n,g.clone=r,g.oldIndex=s,g.newIndex=c,g.oldDraggableIndex=u,g.newDraggableIndex=d,g.originalEvent=h,g.pullMode=f?f.lastPutMode:void 0;var v,b=M(M({},p),K.getEventProperties(o,e));for(v in b)g[v]=b[v];n&&n.dispatchEvent(g),m[t]&&m[t].call(e,g)}}function z(t,e){var n=(o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{}).evt,o=i(o,G);K.pluginEvent.bind(Bt)(t,e,M({dragEl:q,parentEl:V,ghostEl:Z,rootEl:$,nextEl:Q,lastDownEl:J,cloneEl:tt,cloneHidden:et,dragStarted:pt,putSortable:lt,activeSortable:Bt.active,originalEvent:n,oldIndex:nt,oldDraggableIndex:it,newIndex:ot,newDraggableIndex:rt,hideGhostForTarget:kt,unhideGhostForTarget:Rt,cloneNowHidden:function(){et=!0},cloneNowShown:function(){et=!1},dispatchSortableEvent:function(t){U({sortable:e,name:t,originalEvent:n})}},o))}var G=[\"evt\"];function U(t){W(M({putSortable:lt,cloneEl:tt,targetEl:q,rootEl:$,oldIndex:nt,oldDraggableIndex:it,newIndex:ot,newDraggableIndex:rt},t))}var q,V,Z,$,Q,J,tt,et,nt,ot,it,rt,at,lt,st,ct,ut,dt,ht,ft,pt,gt,mt,vt,bt,yt=!1,wt=!1,Et=[],Dt=!1,St=!1,_t=[],Ct=!1,Tt=[],xt=\"undefined\"!=typeof document,Ot=n,At=w||y?\"cssFloat\":\"float\",Mt=xt&&!c&&!n&&\"draggable\"in document.createElement(\"div\"),Nt=function(){if(xt){if(y)return!1;var t=document.createElement(\"x\");return t.style.cssText=\"pointer-events:auto\",\"auto\"===t.style.pointerEvents}}(),It=function(t,e){var n=P(t),o=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),i=X(t,0,e),r=X(t,1,e),a=i&&P(i),l=r&&P(r),s=a&&parseInt(a.marginLeft)+parseInt(a.marginRight)+k(i).width,t=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+k(r).width;if(\"flex\"===n.display)return\"column\"===n.flexDirection||\"column-reverse\"===n.flexDirection?\"vertical\":\"horizontal\";if(\"grid\"===n.display)return n.gridTemplateColumns.split(\" \").length<=1?\"vertical\":\"horizontal\";if(i&&a.float&&\"none\"!==a.float){e=\"left\"===a.float?\"left\":\"right\";return!r||\"both\"!==l.clear&&l.clear!==e?\"horizontal\":\"vertical\"}return i&&(\"block\"===a.display||\"flex\"===a.display||\"table\"===a.display||\"grid\"===a.display||o<=s&&\"none\"===n[At]||r&&\"none\"===n[At]&&o<s+t)?\"vertical\":\"horizontal\"},Pt=function(t){function l(r,a){return function(t,e,n,o){var i=t.options.group.name&&e.options.group.name&&t.options.group.name===e.options.group.name;if(null==r&&(a||i))return!0;if(null==r||!1===r)return!1;if(a&&\"clone\"===r)return r;if(\"function\"==typeof r)return l(r(t,e,n,o),a)(t,e,n,o);e=(a?t:e).options.group.name;return!0===r||\"string\"==typeof r&&r===e||r.join&&-1<r.indexOf(e)}}var e={},n=t.group;n&&\"object\"==o(n)||(n={name:n}),e.name=n.name,e.checkPull=l(n.pull,!0),e.checkPut=l(n.put),e.revertClone=n.revertClone,t.group=e},kt=function(){!Nt&&Z&&P(Z,\"display\",\"none\")},Rt=function(){!Nt&&Z&&P(Z,\"display\",\"\")};xt&&!c&&document.addEventListener(\"click\",function(t){if(wt)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),wt=!1},!0);function Xt(t){if(q){t=t.touches?t.touches[0]:t;var e=(i=t.clientX,r=t.clientY,Et.some(function(t){var e=t[j].options.emptyInsertThreshold;if(e&&!Y(t)){var n=k(t),o=i>=n.left-e&&i<=n.right+e,e=r>=n.top-e&&r<=n.bottom+e;return o&&e?a=t:void 0}}),a);if(e){var n,o={};for(n in t)t.hasOwnProperty(n)&&(o[n]=t[n]);o.target=o.rootEl=e,o.preventDefault=void 0,o.stopPropagation=void 0,e[j]._onDragOver(o)}}var i,r,a}function Yt(t){q&&q.parentNode[j]._isOutsideThisEl(t.target)}function Bt(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw\"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(t));this.el=t,this.options=e=a({},e),t[j]=this;var n,o,i={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?\">li\":\">*\",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return It(t,this.options)},ghostClass:\"sortable-ghost\",chosenClass:\"sortable-chosen\",dragClass:\"sortable-drag\",ignore:\"a, img\",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData(\"Text\",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:\"data-id\",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:\"sortable-fallback\",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==Bt.supportPointer&&\"PointerEvent\"in window&&!u,emptyInsertThreshold:5};for(n in K.initializePlugins(this,t,i),i)n in e||(e[n]=i[n]);for(o in Pt(e),this)\"_\"===o.charAt(0)&&\"function\"==typeof this[o]&&(this[o]=this[o].bind(this));this.nativeDraggable=!e.forceFallback&&Mt,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?h(t,\"pointerdown\",this._onTapStart):(h(t,\"mousedown\",this._onTapStart),h(t,\"touchstart\",this._onTapStart)),this.nativeDraggable&&(h(t,\"dragover\",this),h(t,\"dragenter\",this)),Et.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),a(this,x())}function Ft(t,e,n,o,i,r,a,l){var s,c,u=t[j],d=u.options.onMove;return!window.CustomEvent||y||w?(s=document.createEvent(\"Event\")).initEvent(\"move\",!0,!0):s=new CustomEvent(\"move\",{bubbles:!0,cancelable:!0}),s.to=e,s.from=t,s.dragged=n,s.draggedRect=o,s.related=i||e,s.relatedRect=r||k(e),s.willInsertAfter=l,s.originalEvent=a,t.dispatchEvent(s),c=d?d.call(u,s,a):c}function jt(t){t.draggable=!1}function Ht(){Ct=!1}function Lt(t){return setTimeout(t,0)}function Kt(t){return clearTimeout(t)}Bt.prototype={constructor:Bt,_isOutsideThisEl:function(t){this.el.contains(t)||t===this.el||(gt=null)},_getDirection:function(t,e){return\"function\"==typeof this.options.direction?this.options.direction.call(this,t,e,q):this.options.direction},_onTapStart:function(e){if(e.cancelable){var n=this,o=this.el,t=this.options,i=t.preventOnFilter,r=e.type,a=e.touches&&e.touches[0]||e.pointerType&&\"touch\"===e.pointerType&&e,l=(a||e).target,s=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,c=t.filter;if(!function(t){Tt.length=0;var e=t.getElementsByTagName(\"input\"),n=e.length;for(;n--;){var o=e[n];o.checked&&Tt.push(o)}}(o),!q&&!(/mousedown|pointerdown/.test(r)&&0!==e.button||t.disabled)&&!s.isContentEditable&&(this.nativeDraggable||!u||!l||\"SELECT\"!==l.tagName.toUpperCase())&&!((l=N(l,t.draggable,o,!1))&&l.animated||J===l)){if(nt=B(l),it=B(l,t.draggable),\"function\"==typeof c){if(c.call(this,e,l,this))return U({sortable:n,rootEl:s,name:\"filter\",targetEl:l,toEl:o,fromEl:o}),z(\"filter\",n,{evt:e}),void(i&&e.cancelable&&e.preventDefault())}else if(c=c&&c.split(\",\").some(function(t){if(t=N(s,t.trim(),o,!1))return U({sortable:n,rootEl:t,name:\"filter\",targetEl:l,fromEl:o,toEl:o}),z(\"filter\",n,{evt:e}),!0}))return void(i&&e.cancelable&&e.preventDefault());t.handle&&!N(s,t.handle,o,!1)||this._prepareDragStart(e,a,l)}}},_prepareDragStart:function(t,e,n){var o,i=this,r=i.el,a=i.options,l=r.ownerDocument;n&&!q&&n.parentNode===r&&(o=k(n),$=r,V=(q=n).parentNode,Q=q.nextSibling,J=n,at=a.group,st={target:Bt.dragged=q,clientX:(e||t).clientX,clientY:(e||t).clientY},ht=st.clientX-o.left,ft=st.clientY-o.top,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,q.style[\"will-change\"]=\"all\",o=function(){z(\"delayEnded\",i,{evt:t}),Bt.eventCanceled?i._onDrop():(i._disableDelayedDragEvents(),!s&&i.nativeDraggable&&(q.draggable=!0),i._triggerDragStart(t,e),U({sortable:i,name:\"choose\",originalEvent:t}),I(q,a.chosenClass,!0))},a.ignore.split(\",\").forEach(function(t){b(q,t.trim(),jt)}),h(l,\"dragover\",Xt),h(l,\"mousemove\",Xt),h(l,\"touchmove\",Xt),h(l,\"mouseup\",i._onDrop),h(l,\"touchend\",i._onDrop),h(l,\"touchcancel\",i._onDrop),s&&this.nativeDraggable&&(this.options.touchStartThreshold=4,q.draggable=!0),z(\"delayStart\",this,{evt:t}),!a.delay||a.delayOnTouchOnly&&!e||this.nativeDraggable&&(w||y)?o():Bt.eventCanceled?this._onDrop():(h(l,\"mouseup\",i._disableDelayedDrag),h(l,\"touchend\",i._disableDelayedDrag),h(l,\"touchcancel\",i._disableDelayedDrag),h(l,\"mousemove\",i._delayedDragTouchMoveHandler),h(l,\"touchmove\",i._delayedDragTouchMoveHandler),a.supportPointer&&h(l,\"pointermove\",i._delayedDragTouchMoveHandler),i._dragStartTimer=setTimeout(o,a.delay)))},_delayedDragTouchMoveHandler:function(t){t=t.touches?t.touches[0]:t;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){q&&jt(q),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;f(t,\"mouseup\",this._disableDelayedDrag),f(t,\"touchend\",this._disableDelayedDrag),f(t,\"touchcancel\",this._disableDelayedDrag),f(t,\"mousemove\",this._delayedDragTouchMoveHandler),f(t,\"touchmove\",this._delayedDragTouchMoveHandler),f(t,\"pointermove\",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||\"touch\"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?h(document,\"pointermove\",this._onTouchMove):h(document,e?\"touchmove\":\"mousemove\",this._onTouchMove):(h(q,\"dragend\",this),h($,\"dragstart\",this._onDragStart));try{document.selection?Lt(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(t,e){var n;yt=!1,$&&q?(z(\"dragStarted\",this,{evt:e}),this.nativeDraggable&&h(document,\"dragover\",Yt),n=this.options,t||I(q,n.dragClass,!1),I(q,n.ghostClass,!0),Bt.active=this,t&&this._appendGhost(),U({sortable:this,name:\"start\",originalEvent:e})):this._nulling()},_emulateDragOver:function(){if(ct){this._lastX=ct.clientX,this._lastY=ct.clientY,kt();for(var t=document.elementFromPoint(ct.clientX,ct.clientY),e=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(ct.clientX,ct.clientY))!==e;)e=t;if(q.parentNode[j]._isOutsideThisEl(t),e)do{if(e[j])if(e[j]._onDragOver({clientX:ct.clientX,clientY:ct.clientY,target:t,rootEl:e})&&!this.options.dragoverBubble)break}while(e=(t=e).parentNode);Rt()}},_onTouchMove:function(t){if(st){var e=this.options,n=e.fallbackTolerance,o=e.fallbackOffset,i=t.touches?t.touches[0]:t,r=Z&&v(Z,!0),a=Z&&r&&r.a,l=Z&&r&&r.d,e=Ot&&bt&&E(bt),a=(i.clientX-st.clientX+o.x)/(a||1)+(e?e[0]-_t[0]:0)/(a||1),l=(i.clientY-st.clientY+o.y)/(l||1)+(e?e[1]-_t[1]:0)/(l||1);if(!Bt.active&&!yt){if(n&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))<n)return;this._onDragStart(t,!0)}Z&&(r?(r.e+=a-(ut||0),r.f+=l-(dt||0)):r={a:1,b:0,c:0,d:1,e:a,f:l},r=\"matrix(\".concat(r.a,\",\").concat(r.b,\",\").concat(r.c,\",\").concat(r.d,\",\").concat(r.e,\",\").concat(r.f,\")\"),P(Z,\"webkitTransform\",r),P(Z,\"mozTransform\",r),P(Z,\"msTransform\",r),P(Z,\"transform\",r),ut=a,dt=l,ct=i),t.cancelable&&t.preventDefault()}},_appendGhost:function(){if(!Z){var t=this.options.fallbackOnBody?document.body:$,e=k(q,!0,Ot,!0,t),n=this.options;if(Ot){for(bt=t;\"static\"===P(bt,\"position\")&&\"none\"===P(bt,\"transform\")&&bt!==document;)bt=bt.parentNode;bt!==document.body&&bt!==document.documentElement?(bt===document&&(bt=O()),e.top+=bt.scrollTop,e.left+=bt.scrollLeft):bt=O(),_t=E(bt)}I(Z=q.cloneNode(!0),n.ghostClass,!1),I(Z,n.fallbackClass,!0),I(Z,n.dragClass,!0),P(Z,\"transition\",\"\"),P(Z,\"transform\",\"\"),P(Z,\"box-sizing\",\"border-box\"),P(Z,\"margin\",0),P(Z,\"top\",e.top),P(Z,\"left\",e.left),P(Z,\"width\",e.width),P(Z,\"height\",e.height),P(Z,\"opacity\",\"0.8\"),P(Z,\"position\",Ot?\"absolute\":\"fixed\"),P(Z,\"zIndex\",\"100000\"),P(Z,\"pointerEvents\",\"none\"),Bt.ghost=Z,t.appendChild(Z),P(Z,\"transform-origin\",ht/parseInt(Z.style.width)*100+\"% \"+ft/parseInt(Z.style.height)*100+\"%\")}},_onDragStart:function(t,e){var n=this,o=t.dataTransfer,i=n.options;z(\"dragStart\",this,{evt:t}),Bt.eventCanceled?this._onDrop():(z(\"setupClone\",this),Bt.eventCanceled||((tt=_(q)).removeAttribute(\"id\"),tt.draggable=!1,tt.style[\"will-change\"]=\"\",this._hideClone(),I(tt,this.options.chosenClass,!1),Bt.clone=tt),n.cloneId=Lt(function(){z(\"clone\",n),Bt.eventCanceled||(n.options.removeCloneOnHide||$.insertBefore(tt,q),n._hideClone(),U({sortable:n,name:\"clone\"}))}),e||I(q,i.dragClass,!0),e?(wt=!0,n._loopId=setInterval(n._emulateDragOver,50)):(f(document,\"mouseup\",n._onDrop),f(document,\"touchend\",n._onDrop),f(document,\"touchcancel\",n._onDrop),o&&(o.effectAllowed=\"move\",i.setData&&i.setData.call(n,o,q)),h(document,\"drop\",n),P(q,\"transform\",\"translateZ(0)\")),yt=!0,n._dragStartId=Lt(n._dragStarted.bind(n,e,t)),h(document,\"selectstart\",n),pt=!0,u&&P(document.body,\"user-select\",\"none\"))},_onDragOver:function(n){var o,i,r,t,a=this.el,l=n.target,e=this.options,s=e.group,c=Bt.active,u=at===s,d=e.sort,h=lt||c,f=this,p=!1;if(!Ct){if(void 0!==n.preventDefault&&n.cancelable&&n.preventDefault(),l=N(l,e.draggable,a,!0),T(\"dragOver\"),Bt.eventCanceled)return p;if(q.contains(n.target)||l.animated&&l.animatingX&&l.animatingY||f._ignoreWhileAnimating===l)return O(!1);if(wt=!1,c&&!e.disabled&&(u?d||(i=V!==$):lt===this||(this.lastPutMode=at.checkPull(this,c,q,n))&&s.checkPut(this,c,q,n))){if(r=\"vertical\"===this._getDirection(n,l),o=k(q),T(\"dragOverValid\"),Bt.eventCanceled)return p;if(i)return V=$,x(),this._hideClone(),T(\"revert\"),Bt.eventCanceled||(Q?$.insertBefore(q,Q):$.appendChild(q)),O(!0);var g=Y(a,e.draggable);if(!g||function(t,e,n){n=k(Y(n.el,n.options.draggable));return e?t.clientX>n.right+10||t.clientX<=n.right&&t.clientY>n.bottom&&t.clientX>=n.left:t.clientX>n.right&&t.clientY>n.top||t.clientX<=n.right&&t.clientY>n.bottom+10}(n,r,this)&&!g.animated){if(g===q)return O(!1);if((l=g&&a===n.target?g:l)&&(w=k(l)),!1!==Ft($,a,q,o,l,w,n,!!l))return x(),g&&g.nextSibling?a.insertBefore(q,g.nextSibling):a.appendChild(q),V=a,A(),O(!0)}else if(g&&function(t,e,n){n=k(X(n.el,0,n.options,!0));return e?t.clientX<n.left-10||t.clientY<n.top&&t.clientX<n.right:t.clientY<n.top-10||t.clientY<n.bottom&&t.clientX<n.left}(n,r,this)){var m=X(a,0,e,!0);if(m===q)return O(!1);if(w=k(l=m),!1!==Ft($,a,q,o,l,w,n,!1))return x(),a.insertBefore(q,m),V=a,A(),O(!0)}else if(l.parentNode===a){var v,b,y,w=k(l),E=q.parentNode!==a,D=(D=q.animated&&q.toRect||o,C=l.animated&&l.toRect||w,S=(t=r)?D.left:D.top,s=t?D.right:D.bottom,g=t?D.width:D.height,m=t?C.left:C.top,D=t?C.right:C.bottom,C=t?C.width:C.height,!(S===m||s===D||S+g/2===m+C/2)),S=r?\"top\":\"left\",g=R(l,\"top\",\"top\")||R(q,\"top\",\"top\"),m=g?g.scrollTop:void 0;if(gt!==l&&(b=w[S],Dt=!1,St=!D&&e.invertSwap||E),0!==(v=function(t,e,n,o,i,r,a,l){var s=o?t.clientY:t.clientX,c=o?n.height:n.width,t=o?n.top:n.left,o=o?n.bottom:n.right,n=!1;if(!a)if(l&&vt<c*i){if(Dt=!Dt&&(1===mt?t+c*r/2<s:s<o-c*r/2)?!0:Dt)n=!0;else if(1===mt?s<t+vt:o-vt<s)return-mt}else if(t+c*(1-i)/2<s&&s<o-c*(1-i)/2)return function(t){return B(q)<B(t)?1:-1}(e);if((n=n||a)&&(s<t+c*r/2||o-c*r/2<s))return t+c/2<s?1:-1;return 0}(n,l,w,r,D?1:e.swapThreshold,null==e.invertedSwapThreshold?e.swapThreshold:e.invertedSwapThreshold,St,gt===l)))for(var _=B(q);(y=V.children[_-=v])&&(\"none\"===P(y,\"display\")||y===Z););if(0===v||y===l)return O(!1);mt=v;var C=(gt=l).nextElementSibling,E=!1,D=Ft($,a,q,o,l,w,n,E=1===v);if(!1!==D)return 1!==D&&-1!==D||(E=1===D),Ct=!0,setTimeout(Ht,30),x(),E&&!C?a.appendChild(q):l.parentNode.insertBefore(q,E?C:l),g&&F(g,0,m-g.scrollTop),V=q.parentNode,void 0===b||St||(vt=Math.abs(b-k(l)[S])),A(),O(!0)}if(a.contains(q))return O(!1)}return!1}function T(t,e){z(t,f,M({evt:n,isOwner:u,axis:r?\"vertical\":\"horizontal\",revert:i,dragRect:o,targetRect:w,canSort:d,fromSortable:h,target:l,completed:O,onMove:function(t,e){return Ft($,a,q,o,t,k(t),n,e)},changed:A},e))}function x(){T(\"dragOverAnimationCapture\"),f.captureAnimationState(),f!==h&&h.captureAnimationState()}function O(t){return T(\"dragOverCompleted\",{insertion:t}),t&&(u?c._hideClone():c._showClone(f),f!==h&&(I(q,(lt||c).options.ghostClass,!1),I(q,e.ghostClass,!0)),lt!==f&&f!==Bt.active?lt=f:f===Bt.active&&lt&&(lt=null),h===f&&(f._ignoreWhileAnimating=l),f.animateAll(function(){T(\"dragOverAnimationComplete\"),f._ignoreWhileAnimating=null}),f!==h&&(h.animateAll(),h._ignoreWhileAnimating=null)),(l===q&&!q.animated||l===a&&!l.animated)&&(gt=null),e.dragoverBubble||n.rootEl||l===document||(q.parentNode[j]._isOutsideThisEl(n.target),t||Xt(n)),!e.dragoverBubble&&n.stopPropagation&&n.stopPropagation(),p=!0}function A(){ot=B(q),rt=B(q,e.draggable),U({sortable:f,name:\"change\",toEl:a,newIndex:ot,newDraggableIndex:rt,originalEvent:n})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){f(document,\"mousemove\",this._onTouchMove),f(document,\"touchmove\",this._onTouchMove),f(document,\"pointermove\",this._onTouchMove),f(document,\"dragover\",Xt),f(document,\"mousemove\",Xt),f(document,\"touchmove\",Xt)},_offUpEvents:function(){var t=this.el.ownerDocument;f(t,\"mouseup\",this._onDrop),f(t,\"touchend\",this._onDrop),f(t,\"pointerup\",this._onDrop),f(t,\"touchcancel\",this._onDrop),f(document,\"selectstart\",this)},_onDrop:function(t){var e=this.el,n=this.options;ot=B(q),rt=B(q,n.draggable),z(\"drop\",this,{evt:t}),V=q&&q.parentNode,ot=B(q),rt=B(q,n.draggable),Bt.eventCanceled||(Dt=St=yt=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),Kt(this.cloneId),Kt(this._dragStartId),this.nativeDraggable&&(f(document,\"drop\",this),f(e,\"dragstart\",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),u&&P(document.body,\"user-select\",\"\"),P(q,\"transform\",\"\"),t&&(pt&&(t.cancelable&&t.preventDefault(),n.dropBubble||t.stopPropagation()),Z&&Z.parentNode&&Z.parentNode.removeChild(Z),($===V||lt&&\"clone\"!==lt.lastPutMode)&&tt&&tt.parentNode&&tt.parentNode.removeChild(tt),q&&(this.nativeDraggable&&f(q,\"dragend\",this),jt(q),q.style[\"will-change\"]=\"\",pt&&!yt&&I(q,(lt||this).options.ghostClass,!1),I(q,this.options.chosenClass,!1),U({sortable:this,name:\"unchoose\",toEl:V,newIndex:null,newDraggableIndex:null,originalEvent:t}),$!==V?(0<=ot&&(U({rootEl:V,name:\"add\",toEl:V,fromEl:$,originalEvent:t}),U({sortable:this,name:\"remove\",toEl:V,originalEvent:t}),U({rootEl:V,name:\"sort\",toEl:V,fromEl:$,originalEvent:t}),U({sortable:this,name:\"sort\",toEl:V,originalEvent:t})),lt&&lt.save()):ot!==nt&&0<=ot&&(U({sortable:this,name:\"update\",toEl:V,originalEvent:t}),U({sortable:this,name:\"sort\",toEl:V,originalEvent:t})),Bt.active&&(null!=ot&&-1!==ot||(ot=nt,rt=it),U({sortable:this,name:\"end\",toEl:V,originalEvent:t}),this.save())))),this._nulling()},_nulling:function(){z(\"nulling\",this),$=q=V=Z=Q=tt=J=et=st=ct=pt=ot=rt=nt=it=gt=mt=lt=at=Bt.dragged=Bt.ghost=Bt.clone=Bt.active=null,Tt.forEach(function(t){t.checked=!0}),Tt.length=ut=dt=0},handleEvent:function(t){switch(t.type){case\"drop\":case\"dragend\":this._onDrop(t);break;case\"dragenter\":case\"dragover\":q&&(this._onDragOver(t),function(t){t.dataTransfer&&(t.dataTransfer.dropEffect=\"move\");t.cancelable&&t.preventDefault()}(t));break;case\"selectstart\":t.preventDefault()}},toArray:function(){for(var t,e=[],n=this.el.children,o=0,i=n.length,r=this.options;o<i;o++)N(t=n[o],r.draggable,this.el,!1)&&e.push(t.getAttribute(r.dataIdAttr)||function(t){var e=t.tagName+t.className+t.src+t.href+t.textContent,n=e.length,o=0;for(;n--;)o+=e.charCodeAt(n);return o.toString(36)}(t));return e},sort:function(t,e){var n={},o=this.el;this.toArray().forEach(function(t,e){e=o.children[e];N(e,this.options.draggable,o,!1)&&(n[t]=e)},this),e&&this.captureAnimationState(),t.forEach(function(t){n[t]&&(o.removeChild(n[t]),o.appendChild(n[t]))}),e&&this.animateAll()},save:function(){var t=this.options.store;t&&t.set&&t.set(this)},closest:function(t,e){return N(t,e||this.options.draggable,this.el,!1)},option:function(t,e){var n=this.options;if(void 0===e)return n[t];var o=K.modifyOption(this,t,e);n[t]=void 0!==o?o:e,\"group\"===t&&Pt(n)},destroy:function(){z(\"destroy\",this);var t=this.el;t[j]=null,f(t,\"mousedown\",this._onTapStart),f(t,\"touchstart\",this._onTapStart),f(t,\"pointerdown\",this._onTapStart),this.nativeDraggable&&(f(t,\"dragover\",this),f(t,\"dragenter\",this)),Array.prototype.forEach.call(t.querySelectorAll(\"[draggable]\"),function(t){t.removeAttribute(\"draggable\")}),this._onDrop(),this._disableDelayedDragEvents(),Et.splice(Et.indexOf(this.el),1),this.el=t=null},_hideClone:function(){et||(z(\"hideClone\",this),Bt.eventCanceled||(P(tt,\"display\",\"none\"),this.options.removeCloneOnHide&&tt.parentNode&&tt.parentNode.removeChild(tt),et=!0))},_showClone:function(t){\"clone\"===t.lastPutMode?et&&(z(\"showClone\",this),Bt.eventCanceled||(q.parentNode!=$||this.options.group.revertClone?Q?$.insertBefore(tt,Q):$.appendChild(tt):$.insertBefore(tt,q),this.options.group.revertClone&&this.animate(q,tt),P(tt,\"display\",\"\"),et=!1)):this._hideClone()}},xt&&h(document,\"touchmove\",function(t){(Bt.active||yt)&&t.cancelable&&t.preventDefault()}),Bt.utils={on:h,off:f,css:P,find:b,is:function(t,e){return!!N(t,e,t,!1)},extend:function(t,e){if(t&&e)for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t},throttle:S,closest:N,toggleClass:I,clone:_,index:B,nextTick:Lt,cancelNextTick:Kt,detectDirection:It,getChild:X},Bt.get=function(t){return t[j]},Bt.mount=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];(e=e[0].constructor===Array?e[0]:e).forEach(function(t){if(!t.prototype||!t.prototype.constructor)throw\"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(t));t.utils&&(Bt.utils=M(M({},Bt.utils),t.utils)),K.mount(t)})},Bt.create=function(t,e){return new Bt(t,e)};var Wt,zt,Gt,Ut,qt,Vt,Zt=[],$t=!(Bt.version=\"1.15.0\");function Qt(){Zt.forEach(function(t){clearInterval(t.pid)}),Zt=[]}function Jt(){clearInterval(Vt)}var te,ee=S(function(n,t,e,o){if(t.scroll){var i,r=(n.touches?n.touches[0]:n).clientX,a=(n.touches?n.touches[0]:n).clientY,l=t.scrollSensitivity,s=t.scrollSpeed,c=O(),u=!1;zt!==e&&(zt=e,Qt(),Wt=t.scroll,i=t.scrollFn,!0===Wt&&(Wt=A(e,!0)));var d=0,h=Wt;do{var f=h,p=k(f),g=p.top,m=p.bottom,v=p.left,b=p.right,y=p.width,w=p.height,E=void 0,D=void 0,S=f.scrollWidth,_=f.scrollHeight,C=P(f),T=f.scrollLeft,p=f.scrollTop,D=f===c?(E=y<S&&(\"auto\"===C.overflowX||\"scroll\"===C.overflowX||\"visible\"===C.overflowX),w<_&&(\"auto\"===C.overflowY||\"scroll\"===C.overflowY||\"visible\"===C.overflowY)):(E=y<S&&(\"auto\"===C.overflowX||\"scroll\"===C.overflowX),w<_&&(\"auto\"===C.overflowY||\"scroll\"===C.overflowY)),T=E&&(Math.abs(b-r)<=l&&T+y<S)-(Math.abs(v-r)<=l&&!!T),p=D&&(Math.abs(m-a)<=l&&p+w<_)-(Math.abs(g-a)<=l&&!!p);if(!Zt[d])for(var x=0;x<=d;x++)Zt[x]||(Zt[x]={});Zt[d].vx==T&&Zt[d].vy==p&&Zt[d].el===f||(Zt[d].el=f,Zt[d].vx=T,Zt[d].vy=p,clearInterval(Zt[d].pid),0==T&&0==p||(u=!0,Zt[d].pid=setInterval(function(){o&&0===this.layer&&Bt.active._onTouchMove(qt);var t=Zt[this.layer].vy?Zt[this.layer].vy*s:0,e=Zt[this.layer].vx?Zt[this.layer].vx*s:0;\"function\"==typeof i&&\"continue\"!==i.call(Bt.dragged.parentNode[j],e,t,n,qt,Zt[this.layer].el)||F(Zt[this.layer].el,e,t)}.bind({layer:d}),24))),d++}while(t.bubbleScroll&&h!==c&&(h=A(h,!1)));$t=u}},30),c=function(t){var e=t.originalEvent,n=t.putSortable,o=t.dragEl,i=t.activeSortable,r=t.dispatchSortableEvent,a=t.hideGhostForTarget,t=t.unhideGhostForTarget;e&&(i=n||i,a(),e=e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:e,e=document.elementFromPoint(e.clientX,e.clientY),t(),i&&!i.el.contains(e)&&(r(\"spill\"),this.onSpill({dragEl:o,putSortable:n})))};function ne(){}function oe(){}ne.prototype={startIndex:null,dragStart:function(t){t=t.oldDraggableIndex;this.startIndex=t},onSpill:function(t){var e=t.dragEl,n=t.putSortable;this.sortable.captureAnimationState(),n&&n.captureAnimationState();t=X(this.sortable.el,this.startIndex,this.options);t?this.sortable.el.insertBefore(e,t):this.sortable.el.appendChild(e),this.sortable.animateAll(),n&&n.animateAll()},drop:c},a(ne,{pluginName:\"revertOnSpill\"}),oe.prototype={onSpill:function(t){var e=t.dragEl,t=t.putSortable||this.sortable;t.captureAnimationState(),e.parentNode&&e.parentNode.removeChild(e),t.animateAll()},drop:c},a(oe,{pluginName:\"removeOnSpill\"});var ie,re,ae,le,se,ce=[],ue=[],de=!1,he=!1,fe=!1;function pe(n,o){ue.forEach(function(t,e){e=o.children[t.sortableIndex+(n?Number(e):0)];e?o.insertBefore(t,e):o.appendChild(t)})}function ge(){ce.forEach(function(t){t!==ae&&t.parentNode&&t.parentNode.removeChild(t)})}return Bt.mount(new function(){function t(){for(var t in this.defaults={scroll:!0,forceAutoScrollFallback:!1,scrollSensitivity:30,scrollSpeed:10,bubbleScroll:!0},this)\"_\"===t.charAt(0)&&\"function\"==typeof this[t]&&(this[t]=this[t].bind(this))}return t.prototype={dragStarted:function(t){t=t.originalEvent;this.sortable.nativeDraggable?h(document,\"dragover\",this._handleAutoScroll):this.options.supportPointer?h(document,\"pointermove\",this._handleFallbackAutoScroll):t.touches?h(document,\"touchmove\",this._handleFallbackAutoScroll):h(document,\"mousemove\",this._handleFallbackAutoScroll)},dragOverCompleted:function(t){t=t.originalEvent;this.options.dragOverBubble||t.rootEl||this._handleAutoScroll(t)},drop:function(){this.sortable.nativeDraggable?f(document,\"dragover\",this._handleAutoScroll):(f(document,\"pointermove\",this._handleFallbackAutoScroll),f(document,\"touchmove\",this._handleFallbackAutoScroll),f(document,\"mousemove\",this._handleFallbackAutoScroll)),Jt(),Qt(),clearTimeout(g),g=void 0},nulling:function(){qt=zt=Wt=$t=Vt=Gt=Ut=null,Zt.length=0},_handleFallbackAutoScroll:function(t){this._handleAutoScroll(t,!0)},_handleAutoScroll:function(e,n){var o,i=this,r=(e.touches?e.touches[0]:e).clientX,a=(e.touches?e.touches[0]:e).clientY,t=document.elementFromPoint(r,a);qt=e,n||this.options.forceAutoScrollFallback||w||y||u?(ee(e,this.options,t,n),o=A(t,!0),!$t||Vt&&r===Gt&&a===Ut||(Vt&&Jt(),Vt=setInterval(function(){var t=A(document.elementFromPoint(r,a),!0);t!==o&&(o=t,Qt()),ee(e,i.options,t,n)},10),Gt=r,Ut=a)):this.options.bubbleScroll&&A(t,!0)!==O()?ee(e,this.options,A(t,!1),!1):Qt()}},a(t,{pluginName:\"scroll\",initializeByDefault:!0})}),Bt.mount(oe,ne),Bt.mount(new function(){function t(){this.defaults={swapClass:\"sortable-swap-highlight\"}}return t.prototype={dragStart:function(t){t=t.dragEl;te=t},dragOverValid:function(t){var e=t.completed,n=t.target,o=t.onMove,i=t.activeSortable,r=t.changed,a=t.cancel;i.options.swap&&(t=this.sortable.el,i=this.options,n&&n!==t&&(t=te,te=!1!==o(n)?(I(n,i.swapClass,!0),n):null,t&&t!==te&&I(t,i.swapClass,!1)),r(),e(!0),a())},drop:function(t){var e,n,o=t.activeSortable,i=t.putSortable,r=t.dragEl,a=i||this.sortable,l=this.options;te&&I(te,l.swapClass,!1),te&&(l.swap||i&&i.options.swap)&&r!==te&&(a.captureAnimationState(),a!==o&&o.captureAnimationState(),n=te,t=(e=r).parentNode,l=n.parentNode,t&&l&&!t.isEqualNode(n)&&!l.isEqualNode(e)&&(i=B(e),r=B(n),t.isEqualNode(l)&&i<r&&r++,t.insertBefore(n,t.children[i]),l.insertBefore(e,l.children[r])),a.animateAll(),a!==o&&o.animateAll())},nulling:function(){te=null}},a(t,{pluginName:\"swap\",eventProperties:function(){return{swapItem:te}}})}),Bt.mount(new function(){function t(o){for(var t in this)\"_\"===t.charAt(0)&&\"function\"==typeof this[t]&&(this[t]=this[t].bind(this));o.options.avoidImplicitDeselect||(o.options.supportPointer?h(document,\"pointerup\",this._deselectMultiDrag):(h(document,\"mouseup\",this._deselectMultiDrag),h(document,\"touchend\",this._deselectMultiDrag))),h(document,\"keydown\",this._checkKeyDown),h(document,\"keyup\",this._checkKeyUp),this.defaults={selectedClass:\"sortable-selected\",multiDragKey:null,avoidImplicitDeselect:!1,setData:function(t,e){var n=\"\";ce.length&&re===o?ce.forEach(function(t,e){n+=(e?\", \":\"\")+t.textContent}):n=e.textContent,t.setData(\"Text\",n)}}}return t.prototype={multiDragKeyDown:!1,isMultiDrag:!1,delayStartGlobal:function(t){t=t.dragEl;ae=t},delayEnded:function(){this.isMultiDrag=~ce.indexOf(ae)},setupClone:function(t){var e=t.sortable,t=t.cancel;if(this.isMultiDrag){for(var n=0;n<ce.length;n++)ue.push(_(ce[n])),ue[n].sortableIndex=ce[n].sortableIndex,ue[n].draggable=!1,ue[n].style[\"will-change\"]=\"\",I(ue[n],this.options.selectedClass,!1),ce[n]===ae&&I(ue[n],this.options.chosenClass,!1);e._hideClone(),t()}},clone:function(t){var e=t.sortable,n=t.rootEl,o=t.dispatchSortableEvent,t=t.cancel;this.isMultiDrag&&(this.options.removeCloneOnHide||ce.length&&re===e&&(pe(!0,n),o(\"clone\"),t()))},showClone:function(t){var e=t.cloneNowShown,n=t.rootEl,t=t.cancel;this.isMultiDrag&&(pe(!1,n),ue.forEach(function(t){P(t,\"display\",\"\")}),e(),se=!1,t())},hideClone:function(t){var e=this,n=(t.sortable,t.cloneNowHidden),t=t.cancel;this.isMultiDrag&&(ue.forEach(function(t){P(t,\"display\",\"none\"),e.options.removeCloneOnHide&&t.parentNode&&t.parentNode.removeChild(t)}),n(),se=!0,t())},dragStartGlobal:function(t){t.sortable;!this.isMultiDrag&&re&&re.multiDrag._deselectMultiDrag(),ce.forEach(function(t){t.sortableIndex=B(t)}),ce=ce.sort(function(t,e){return t.sortableIndex-e.sortableIndex}),fe=!0},dragStarted:function(t){var e,n=this,t=t.sortable;this.isMultiDrag&&(this.options.sort&&(t.captureAnimationState(),this.options.animation&&(ce.forEach(function(t){t!==ae&&P(t,\"position\",\"absolute\")}),e=k(ae,!1,!0,!0),ce.forEach(function(t){t!==ae&&C(t,e)}),de=he=!0)),t.animateAll(function(){de=he=!1,n.options.animation&&ce.forEach(function(t){T(t)}),n.options.sort&&ge()}))},dragOver:function(t){var e=t.target,n=t.completed,t=t.cancel;he&&~ce.indexOf(e)&&(n(!1),t())},revert:function(t){var n,o,e=t.fromSortable,i=t.rootEl,r=t.sortable,a=t.dragRect;1<ce.length&&(ce.forEach(function(t){r.addAnimationState({target:t,rect:he?k(t):a}),T(t),t.fromRect=a,e.removeAnimationState(t)}),he=!1,n=!this.options.removeCloneOnHide,o=i,ce.forEach(function(t,e){e=o.children[t.sortableIndex+(n?Number(e):0)];e?o.insertBefore(t,e):o.appendChild(t)}))},dragOverCompleted:function(t){var e,n=t.sortable,o=t.isOwner,i=t.insertion,r=t.activeSortable,a=t.parentEl,l=t.putSortable,t=this.options;i&&(o&&r._hideClone(),de=!1,t.animation&&1<ce.length&&(he||!o&&!r.options.sort&&!l)&&(e=k(ae,!1,!0,!0),ce.forEach(function(t){t!==ae&&(C(t,e),a.appendChild(t))}),he=!0),o||(he||ge(),1<ce.length?(o=se,r._showClone(n),r.options.animation&&!se&&o&&ue.forEach(function(t){r.addAnimationState({target:t,rect:le}),t.fromRect=le,t.thisAnimationDuration=null})):r._showClone(n)))},dragOverAnimationCapture:function(t){var e=t.dragRect,n=t.isOwner,t=t.activeSortable;ce.forEach(function(t){t.thisAnimationDuration=null}),t.options.animation&&!n&&t.multiDrag.isMultiDrag&&(le=a({},e),e=v(ae,!0),le.top-=e.f,le.left-=e.e)},dragOverAnimationComplete:function(){he&&(he=!1,ge())},drop:function(t){var e=t.originalEvent,n=t.rootEl,o=t.parentEl,i=t.sortable,r=t.dispatchSortableEvent,a=t.oldIndex,l=t.putSortable,s=l||this.sortable;if(e){var c,u,d,h=this.options,f=o.children;if(!fe)if(h.multiDragKey&&!this.multiDragKeyDown&&this._deselectMultiDrag(),I(ae,h.selectedClass,!~ce.indexOf(ae)),~ce.indexOf(ae))ce.splice(ce.indexOf(ae),1),ie=null,W({sortable:i,rootEl:n,name:\"deselect\",targetEl:ae,originalEvent:e});else{if(ce.push(ae),W({sortable:i,rootEl:n,name:\"select\",targetEl:ae,originalEvent:e}),e.shiftKey&&ie&&i.el.contains(ie)){var p=B(ie),t=B(ae);if(~p&&~t&&p!==t)for(var g,m=p<t?(g=p,t):(g=t,p+1);g<m;g++)~ce.indexOf(f[g])||(I(f[g],h.selectedClass,!0),ce.push(f[g]),W({sortable:i,rootEl:n,name:\"select\",targetEl:f[g],originalEvent:e}))}else ie=ae;re=s}fe&&this.isMultiDrag&&(he=!1,(o[j].options.sort||o!==n)&&1<ce.length&&(c=k(ae),u=B(ae,\":not(.\"+this.options.selectedClass+\")\"),!de&&h.animation&&(ae.thisAnimationDuration=null),s.captureAnimationState(),de||(h.animation&&(ae.fromRect=c,ce.forEach(function(t){var e;t.thisAnimationDuration=null,t!==ae&&(e=he?k(t):c,t.fromRect=e,s.addAnimationState({target:t,rect:e}))})),ge(),ce.forEach(function(t){f[u]?o.insertBefore(t,f[u]):o.appendChild(t),u++}),a===B(ae)&&(d=!1,ce.forEach(function(t){t.sortableIndex!==B(t)&&(d=!0)}),d&&r(\"update\"))),ce.forEach(function(t){T(t)}),s.animateAll()),re=s),(n===o||l&&\"clone\"!==l.lastPutMode)&&ue.forEach(function(t){t.parentNode&&t.parentNode.removeChild(t)})}},nullingGlobal:function(){this.isMultiDrag=fe=!1,ue.length=0},destroyGlobal:function(){this._deselectMultiDrag(),f(document,\"pointerup\",this._deselectMultiDrag),f(document,\"mouseup\",this._deselectMultiDrag),f(document,\"touchend\",this._deselectMultiDrag),f(document,\"keydown\",this._checkKeyDown),f(document,\"keyup\",this._checkKeyUp)},_deselectMultiDrag:function(t){if(!(void 0!==fe&&fe||re!==this.sortable||t&&N(t.target,this.options.draggable,this.sortable.el,!1)||t&&0!==t.button))for(;ce.length;){var e=ce[0];I(e,this.options.selectedClass,!1),ce.shift(),W({sortable:this.sortable,rootEl:this.sortable.el,name:\"deselect\",targetEl:e,originalEvent:t})}},_checkKeyDown:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!0)},_checkKeyUp:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!1)}},a(t,{pluginName:\"multiDrag\",utils:{select:function(t){var e=t.parentNode[j];e&&e.options.multiDrag&&!~ce.indexOf(t)&&(re&&re!==e&&(re.multiDrag._deselectMultiDrag(),re=e),I(t,e.options.selectedClass,!0),ce.push(t))},deselect:function(t){var e=t.parentNode[j],n=ce.indexOf(t);e&&e.options.multiDrag&&~n&&(I(t,e.options.selectedClass,!1),ce.splice(n,1))}},eventProperties:function(){var n=this,o=[],i=[];return ce.forEach(function(t){var e;o.push({multiDragElement:t,index:t.sortableIndex}),e=he&&t!==ae?-1:he?B(t,\":not(.\"+n.options.selectedClass+\")\"):B(t),i.push({multiDragElement:t,index:e})}),{items:r(ce),clones:[].concat(ue),oldIndicies:o,newIndicies:i}},optionListeners:{multiDragKey:function(t){return\"ctrl\"===(t=t.toLowerCase())?t=\"Control\":1<t.length&&(t=t.charAt(0).toUpperCase()+t.substr(1)),t}}})}),Bt});\n","define('lq/dropSortable',[\r\n    'jquery',\r\n    'sortable'\r\n], function ($, Sortable) {\r\n    'use strict';\r\n\r\n    return {\r\n        setUpSortable: function (conf) {\r\n            Sortable.create(conf.$element[0], {\r\n                animation: conf.animation,\r\n                ghostClass: conf.ghostClass,\r\n                forceFallback: conf.forceFallback,\r\n                scroll: conf.scrolling,\r\n                scrollSensitivity: conf.scrollSensitivity,\r\n                scrollSpeed: conf.scrollSpeed,\r\n                handle: conf.handle,\r\n                onStart: function (evt) {\r\n                    var id = $(evt.item).data('id');\r\n                    conf.drop.triggerEventIfEnabled('dragStart', id);\r\n\r\n                    $('.sortable-fallback').css('opacity', '');\r\n                },\r\n                onMove: function (evt) {\r\n                    return evt.related.matches(conf.moveable);\r\n                },\r\n                onEnd: function (evt) {\r\n                    var id = $(evt.item.previousElementSibling).data('id');\r\n                    if (id)\r\n                        conf.drop.triggerEventIfEnabled('dragEnd', id);\r\n                    else\r\n                        conf.drop.triggerEventIfEnabled('dragEnd', undefined);\r\n                }\r\n            });\r\n        }\r\n    };\r\n});\r\n\n","define('drops/list/list',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'lq/eventSource',\r\n    'when',\r\n    'lq/windowSize',\r\n    'lq/nestingContext',\r\n    'lq/onlongpress',\r\n    'lq/dropSortable',\r\n    'lq/required'\r\n], function ($, _, Drop, Style, util, EventSource, when, windowSize, NestingContext, OnLongPress, dropSortable, Required) {\r\n    'use strict';\r\n\r\n    var defaultPageSize = 128;\r\n\r\n    var positioningProps = [\"float\", \"height\", \"left\", \"top\", \"marginLeft\", \"marginTop\", 'marginRight', 'marginBottom', \"paddingLeft\", \"paddingTop\"];\r\n\r\n    var defaults = {\r\n        data: {\r\n            size: { x: 200, y: 150 },\r\n            childPositionX: 10,\r\n            childPositionY: 10,\r\n            childSizeX: 100,\r\n            childSizeY: 50,\r\n            layout: 'Vertical',\r\n            selectionMode: 'single',\r\n            selectionBehavior: 'ctrl+leftclick',\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded'\r\n            },\r\n            pagingEnabled: false,\r\n            pageSize: defaultPageSize,\r\n            infiniteScroll: false,\r\n            stopAutoLoadPages: 10,\r\n            onlyLoadFirstPage: false,\r\n            groupByColumns: [],\r\n            listItemAlignment: 'left',\r\n            isParentIdEnabled: false,\r\n            isAspectRatioEnabled: false,\r\n            ratioWidth: 3,\r\n            ratioHeight: 3,\r\n            longPressDelay: 1000,\r\n            eventThreshold: 90,\r\n            stayThreshold: 60,\r\n            reverseScrolling: false,\r\n            listItemAutoSize: false,\r\n            horAlignDirection: 'Left',\r\n            verAlignDirection: 'Top',\r\n            enableSorting: false,\r\n            handlerDropName: '',\r\n            enableScrollingWithSorting: true,\r\n            animationTime: 300,\r\n            scrollSensitivity: 100,\r\n            scrollSpeed: 15,\r\n            useCustomDragPreview: false,\r\n            hasInitialDynamicText: false\r\n        }\r\n    };\r\n\r\n    var preloadDistance = 150; // px\r\n\r\n    var xDown = null;\r\n    var yDown = null;\r\n    var initialPos = null;\r\n\r\n    var mouseDown = false;\r\n\r\n    function List(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n        EventSource.call(this, [\r\n            'PageOpened'\r\n        ]);\r\n\r\n        var self = this;\r\n\r\n        self.data.eventing = util.convertListOfKeyValuesToObject(self.data.eventing);\r\n\r\n        self.initializeTemplates();\r\n\r\n        self.scrollTop = 0;\r\n        self.scrollLeft = 0;\r\n        self.rendered = false;\r\n        self.loading = false;\r\n        self.rendering = false;\r\n        self.afterRendering = [];\r\n        self.loadedPagesForward = 0;\r\n        self.loadedPagesBackward = 0;\r\n\r\n        if (self.data.reverseScrolling) {\r\n            self.loadedPagesBackward++;\r\n        } else {\r\n            self.loadedPagesForward++;\r\n        }\r\n\r\n        self.groupingLoss = 0;\r\n        self.queuedData = null;\r\n        self.loadedAllData = false;\r\n        self.newItems = 0;\r\n        self.$element\r\n            .addClass('boxToBorderSize list-drop')\r\n            .css({\r\n                whiteSpace: 'pre-wrap'\r\n            });\r\n        self.$list = $('<div />')\r\n            .attr('tabindex', '-1') // needed for the focus() call\r\n            .css({\r\n                outline: 'none', // hide outline on focus\r\n\r\n                // we're using 'display: inline-block' for positioning of the list items, but this will add an extra\r\n                // vertical marging between the items unless we set 'font-size' to '0'\r\n                fontSize: 0,\r\n                borderRadius: 'inherit'\r\n            })\r\n            .appendTo(self.$element);\r\n\r\n\r\n        this.$scrollableElement = self.$list;\r\n\r\n        if (this.hasInfiniteScrollEnabled()) {\r\n            this.events(windowSize,\r\n                {\r\n                    'Changed': _.throttle(this.checkScrollAndLoadNextPageIfNeeded.bind(this), 50)\r\n                });\r\n        }\r\n\r\n        Style.renderStyles(self);\r\n\r\n        // block touch events when we're inside a carousel and a scrollbar is visible\r\n        self.$list.on('touchstart MSPointerDown pointerdown', function (e) {\r\n            var el = self.$list.get(0);\r\n            if (el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth)\r\n                e.stopPropagation();\r\n        });\r\n\r\n        if (this.data.layout === 'Horizontal')\r\n            this.$element.css('white-space', 'nowrap');\r\n\r\n        this.subscribeEventHandler($(window), 'resize', function () {\r\n            self.setWidthOfListItems();\r\n            self.updateAlignContainerResize();\r\n        });\r\n        self.allowSwipe = true;\r\n\r\n        if (this.data.hasInitialDynamicText) {\r\n            this.data.childSizeX = 250;\r\n            this.data.childSizeY = 40;\r\n            this.data.childPositionX = 5;\r\n            this.data.childPositionY = 5;\r\n        }\r\n    }\r\n\r\n    Drop.extend(List);\r\n\r\n    List.typeName = 'List';\r\n\r\n    List.prototype.setWidthOfListItems = function () {\r\n        if (this.data.layout !== 'Continuous' || !this.data.listItemAutoSize) {\r\n            return;\r\n        }\r\n        var listWidth = $(this.$element.children().first()).width() - this.data.childPositionX;\r\n        var width = this.data.childSizeX;\r\n        var max = width + this.data.childPositionX;\r\n\r\n        if (this.pool.length * max > listWidth) {\r\n            var columns = Math.floor(listWidth / max);\r\n            width = (listWidth / columns) - this.data.childPositionX;\r\n\r\n            if (width > (max - this.data.childPositionX)) {\r\n                width = listWidth / (columns + 1) - this.data.childPositionX;\r\n            }\r\n        }\r\n\r\n        _.each(this.pool, function (drop) {\r\n            drop.$element.css('width', width + 'px');\r\n        });\r\n    };\r\n\r\n    List.prototype.decorateQueryParams = function (params) {\r\n        if (!this.data.pagingEnabled) return;\r\n\r\n        if (this.keepPagingInformation()) {\r\n            params.pageSize = this.data.pageSize * this.loadedPagesForward;\r\n        } else {\r\n            params.pageSize = this.data.pageSize;\r\n        }\r\n\r\n        params.doNotExecuteCountQuery = this.data.infiniteScroll;\r\n        params.page = 0;\r\n\r\n        if (this.data.configureStartPageEnabled && this.data.startAtItemIdParameter) {\r\n            this.focusStartPageElement = true;\r\n            params.findRowByItemId = this.data.startAtItemIdParameter;\r\n        }\r\n    };\r\n\r\n    List.prototype.unsubscribeEventHandlers = function () {\r\n        if (this.datasourceListenerId) {\r\n            this.piping.datasources\r\n                .unregisterDatasourceListener(this.datasourceListenerId);\r\n        }\r\n    };\r\n\r\n    List.prototype.preRender = function () {\r\n        var self = this;\r\n\r\n        this.piping.visibility.apply(this);\r\n        this.piping.required.apply(this);\r\n        Required.prototype.addRemoveRequiredIndicator(this);\r\n\r\n        if (!this.data.useParentGroupData)\r\n            this.datasourceListenerId = this.piping.datasources.registerDatasourceListener(\r\n                this.data.dataSource,\r\n                function (data, isUpdate) {\r\n                    return self.setData(data, isUpdate);\r\n                },\r\n                function (params) {\r\n                    // TODO: save scrolltop before rerendering and not before sending request\r\n                    setTimeout(function () {\r\n                        //async, no need to slow down sending a request for result\r\n                        self.scrollTop = self.$scrollableElement.scrollTop();\r\n                        self.scrollLeft = self.$scrollableElement.scrollLeft();\r\n                    }, 0);\r\n\r\n                    self.decorateQueryParams(params);\r\n                },\r\n                this.deleteItem.bind(this)\r\n            );\r\n\r\n        this.nestingContext = new NestingContext(this.piping);\r\n\r\n        if (this.data.isParentIdEnabled) {\r\n            var nestingContext = this.getNestingContext()\r\n            if (nestingContext) {\r\n                nestingContext.addDataSource(this.data.dataSource);\r\n            }\r\n        }\r\n\r\n        this.applyPosition();\r\n\r\n        this.relativePositioned = this.data.autoHeight || this.makesItGrow();\r\n\r\n        if (this.relativePositioned) {\r\n            if (this.data.layout === 'Horizontal') {\r\n                this.$list\r\n                    .css({\r\n                        overflowX: 'auto',\r\n                        overflowY: 'hidden'\r\n                    });\r\n            }\r\n            this.$list\r\n                .css({\r\n                    position: 'relative'\r\n                });\r\n\r\n            if (this.hasInfiniteScrollEnabled()) {\r\n                // https://stackoverflow.com/questions/47524205/random-high-content-download-time-in-chrome/47684257#47684257\r\n                // fix for: https://bugs.chromium.org/p/chromium/issues/detail?id=661155\r\n                //  -> XHR are sometimes blocked while scrolling with the mousewheel\r\n                // note: mousewheel is not a standarised event\r\n                if (window.addEventListener) {\r\n                    window.addEventListener('mousewheel', function (e) {\r\n                        if (e.deltaY === 1)\r\n                            e.preventDefault();\r\n                    });\r\n                }\r\n\r\n                this.subscribeEventHandler(this.piping.$actionWrapper, 'scroll', this.checkScrollAndLoadNextPageIfNeeded.bind(this));\r\n            }\r\n            this.$scrollableElement = this.piping.$actionWrapper;\r\n        } else {\r\n            this.$list\r\n                .css({\r\n                    overflowX: this.data.layout === 'Horizontal' ? 'auto' : 'hidden',\r\n                    overflowY: this.data.layout === 'Horizontal' ? 'hidden' : 'auto',\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    right: 0,\r\n                    bottom: 0,\r\n                    left: 0\r\n                });\r\n\r\n            if (this.hasInfiniteScrollEnabled())\r\n                this.subscribeEventHandler(this.$list, 'scroll', this.checkScrollAndLoadNextPageIfNeeded.bind(this));\r\n\r\n            this.subscribeEventHandler(this.$list, 'scroll', function () {\r\n                self.allowSwipe = false;\r\n                if (self.preventScrollEvent) {\r\n                    self.preventScrollEvent = false; // reset flag\r\n                } else {\r\n                    self.scrolledByUser = true;\r\n                }\r\n            });\r\n\r\n            this.subscribeEventHandler(this.$list, 'touchend mouseup', function () {\r\n                self.allowSwipe = true;\r\n            });\r\n\r\n            this.subscribeEventHandler(this.$list, 'mousedown', function () {\r\n                self.mouseDown = true;\r\n            });\r\n\r\n            this.subscribeEventHandler(this.$list, 'mouseup', function () {\r\n                self.mouseDown = false;\r\n            });\r\n        }\r\n    };\r\n\r\n    List.prototype.setScrollTop = function (amount) {\r\n        this.preventScrollEvent = true; // set flag\r\n        this.$list.scrollTop(amount);\r\n    };\r\n\r\n    List.prototype.deleteItem = function (idToDelete) {\r\n        var existingListItem = _.findWhere(this.pool, {\r\n            id: idToDelete\r\n        });\r\n        if (existingListItem) {\r\n            existingListItem.piping.cleanUp();\r\n            existingListItem.unsubscribeEventHandlersRecursive();\r\n            existingListItem.$element.remove();\r\n            this.removeDrop(existingListItem);\r\n        }\r\n    };\r\n\r\n    List.prototype.applyRelativePositioning = function () {\r\n        this.data.autoHeight = true;\r\n    };\r\n\r\n    function preventDefault(e) {\r\n        e.preventDefault();\r\n    }\r\n\r\n    // modern Chrome requires { passive: false } when adding event\r\n    var supportsPassive = false;\r\n    try {\r\n        window.addEventListener(\"test\", null, Object.defineProperty({}, 'passive', {\r\n            get: function () { supportsPassive = true; }\r\n        }));\r\n    } catch (e) { }\r\n\r\n    var wheelOpt = supportsPassive ? { passive: false } : false;\r\n    var wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel';\r\n\r\n    List.prototype.disableScroll = function () {\r\n        window.addEventListener('DOMMouseScroll', preventDefault, false); // older FF\r\n        window.addEventListener(wheelEvent, preventDefault, wheelOpt); // modern desktop\r\n        window.addEventListener('touchmove', preventDefault, wheelOpt); // mobile\r\n    };\r\n\r\n    List.prototype.enableScroll = function () {\r\n        window.removeEventListener('DOMMouseScroll', preventDefault, false);\r\n        window.removeEventListener(wheelEvent, preventDefault, wheelOpt);\r\n        window.removeEventListener('touchmove', preventDefault, wheelOpt);\r\n    };\r\n\r\n    List.prototype.applyPositionForChild = function (childDrop) {\r\n        var offset = this.getItemOffset();\r\n        var size = this.getItemSize();\r\n\r\n        var childCss = {\r\n            position: 'relative'\r\n        };\r\n\r\n        if (this.data.layout === 'Dynamic Vertical') {\r\n            childCss['height'] = 'auto';\r\n            childCss['width'] = 'auto';\r\n            childCss['minHeight'] = size.y + 'px';\r\n            childCss['marginTop'] = offset.y + 'px';\r\n            childCss['marginLeft'] = offset.x + 'px';\r\n            childCss['marginRight'] = offset.x + 'px';\r\n        } else {\r\n            if (!this.data.reverseScrolling)\r\n                childCss[this.data.verAlignDirection === 'Top' ? 'marginTop' : 'marginBottom'] = offset.y + 'px';\r\n            else\r\n                childCss[this.data.verAlignDirection === 'Top' ? 'marginBottom' : 'marginTop'] = offset.y + 'px';\r\n            childCss['height'] = size.y + 'px';\r\n\r\n            if (childDrop.data.left !== null && childDrop.data.left !== undefined\r\n                && childDrop.data.right !== null && childDrop.data.right !== undefined) {\r\n                childCss['display'] = 'block';\r\n                childCss['marginLeft'] = childDrop.data.left + 'px';\r\n                childCss['marginRight'] = childDrop.data.right + 'px';\r\n            } else {\r\n                childCss['display'] = this.data.layout === 'Vertical' ? 'block' : 'inline-block';\r\n                childCss[this.data.horAlignDirection === 'Left' ? 'marginLeft' : 'marginRight'] = offset.x + 'px';\r\n                childCss['width'] = size.x + 'px';\r\n            }\r\n        }\r\n\r\n        // In a special case the first/last list item does not have left/right margin\r\n        if (this.data.layout === 'Horizontal' &&\r\n            this.data.listItemAlignment === 'center') {\r\n            if (childDrop.data.isFirst) {\r\n                childCss['marginLeft'] = '';\r\n            } else if (childDrop.data.isLast) {\r\n                childCss['marginRight'] = '';\r\n            }\r\n        }\r\n\r\n        childDrop.$element.css(childCss);\r\n    };\r\n\r\n    List.prototype.setData = function (data, isUpdate) {\r\n        var self = this;\r\n\r\n        if (isUpdate) {\r\n            this.scrollTop = this.$scrollableElement.scrollTop();\r\n            this.scrollLeft = this.$scrollableElement.scrollLeft();\r\n\r\n            this.newItems++;\r\n\r\n            if (self.newItems === self.data.pageSize) {\r\n                self.loadedPagesForward++;\r\n                self.newItems = 0;\r\n            }\r\n\r\n            var groupedData = this.groupData(data);\r\n            this.groupingLoss += data.results.length - groupedData.results.length;\r\n            this.renderData(data, groupedData, false, isUpdate);\r\n        } else {\r\n            if (!self.rendered || self.rendering) {\r\n                self.queuedData = data;\r\n            } else {\r\n                return self.update(data);\r\n            }\r\n        }\r\n    };\r\n\r\n    List.prototype.postRender = function () {\r\n        this.rendered = true;\r\n\r\n        if (this.data.mockData && !this.queuedData && !this.data.dataSource) {\r\n            var lines = this.data.mockData.split('\\n');\r\n\r\n            if (lines.length > 1) {\r\n                var outputs = _.map(lines.shift().split(','), function (value) {\r\n                    return value.trim();\r\n                });\r\n\r\n                var rows = _.map(lines, function (line) {\r\n                    return _.map(line.split(','), function (value) {\r\n                        return value.trim();\r\n                    });\r\n                });\r\n\r\n                var data = {\r\n\r\n                    outputs: _.object(_.map(outputs, function (output) {\r\n                        return [output, 'System.String'];\r\n                    })),\r\n\r\n                    results: _.map(rows, function (row) {\r\n                        return _.object(_.map(row, function (value, i) {\r\n                            return [outputs[i] || value, value];\r\n                        }));\r\n                    }),\r\n\r\n                    totalResults: rows.length\r\n\r\n                };\r\n                this.setData(data);\r\n            }\r\n        }\r\n        this.renderLoadingItem();\r\n        return this.renderQueuedData();\r\n    };\r\n\r\n    List.prototype.renderQueuedData = function () {\r\n        if (this.queuedData) {\r\n            var result = this.update(this.queuedData);\r\n            this.queuedData = null;\r\n            return result;\r\n        }\r\n    };\r\n\r\n    List.prototype.focus = function () {\r\n        this.$list.trigger('focus');\r\n    };\r\n\r\n    List.prototype.initializeTemplates = function () {\r\n        var self = this;\r\n\r\n        // unfortunately, there are three versions of child morph data structure:\r\n        // v1: morphs[0] is itemtemplate, rest are headers, no discriminator field\r\n        // v2: morphs[0] is itemtemplate, rest are headers plus with discriminator: nextPage and preloader templates\r\n        // v3: all child morphs have discriminator (item, header, nextPage, preloader)\r\n        // all versions need to be parsed correctly\r\n        // headers are not mandatory\r\n\r\n        _.chain(self.childDrops)\r\n            .filter(function (childModel) {\r\n                return childModel.data.itemTemplateType === undefined;\r\n            });\r\n\r\n        self.itemTemplatesData = _.filter(self.childDrops, function (childModel) {\r\n            return childModel.data.itemTemplateType === 'item';\r\n        });\r\n\r\n        if (self.itemTemplatesData.length === 0) {\r\n            self.itemTemplatesData = [self.getDefaultItemTemplate()];\r\n        }\r\n\r\n        self.headerTemplatesData = _.filter(self.childDrops, function (childModel) {\r\n            return childModel.data.itemTemplateType === 'header';\r\n        });\r\n\r\n        self.loadingTemplatesData = _.filter(self.childDrops, function (childModel) {\r\n            return childModel.data.itemTemplateType === 'loading';\r\n        });\r\n\r\n        self.swipeTemplatesData = _.filter(self.childDrops, function (childModel) {\r\n            return childModel.data.itemTemplateType === 'rightSwipeItem'\r\n                || childModel.data.itemTemplateType === 'leftSwipeItem';\r\n        });\r\n\r\n        self.nextPageTemplateData =\r\n            _.find(self.childDrops, function (childModel) {\r\n                return childModel.data.itemTemplateType === 'nextPage';\r\n            }) || self.getDefaultNextPageTemplate();\r\n\r\n        self.preloaderTemplateData =\r\n            _.find(self.childDrops, function (childModel) {\r\n                return childModel.data.itemTemplateType === 'preloader';\r\n            }) || self.getDefaultPreloaderTemplate();\r\n\r\n        self.childDrops = self.headerTemplatesData\r\n            .concat(self.loadingTemplatesData)\r\n            .concat(self.itemTemplatesData)\r\n            .concat(self.swipeTemplatesData)\r\n            .concat([\r\n                self.nextPageTemplateData,\r\n                self.preloaderTemplateData\r\n            ]);\r\n    };\r\n\r\n    List.prototype.getDefaultItemTemplate = function () {\r\n        if (this.data.hasInitialDynamicText)\r\n        return {\r\n            data: {\r\n                type: 'ListItem',\r\n                itemTemplateType: 'item',\r\n                position: { x: 5, y: 5 },\r\n                size: { x: 250, y: 40 },\r\n                zIndex: 0, color: '#3C3',\r\n            },\r\n            childDrops: [\r\n                { data: { type: 'DynamicText', name: 'item', size: { x: 200, y: 20 }, position: { x: 10, y: 10 } } },\r\n            ]\r\n        }\r\n        else\r\n        return {\r\n            data: {\r\n                type: 'ListItem',\r\n                itemTemplateType: 'item',\r\n                position: { x: 10, y: 10 },\r\n                size: { x: 100, y: 50 },\r\n                zIndex: 0, color: '#3C3'\r\n            },\r\n            childDrops: []\r\n        };\r\n    };\r\n\r\n    List.prototype.getDefaultNextPageTemplate = function () {\r\n        return {\r\n            data: {\r\n                type: 'ListItem',\r\n                itemTemplateType: 'nextPage',\r\n                position: { x: 10, y: 10 },\r\n                size: { x: 100, y: 50 }\r\n            },\r\n            childDrops: [\r\n                { data: { type: 'Button', text: 'Load more', size: { x: 100, y: 25 }, position: { x: 0, y: 0 } } },\r\n                { data: { type: 'DynamicText', name: 'total', size: { x: 65, y: 25 }, position: { x: 0, y: 25 }, styles: { normal: { text: { align: 'right' }, enabled: true } } } },\r\n                { data: { type: 'Text', text: 'total', size: { x: 30, y: 25 }, position: { x: 70, y: 25 } } }\r\n            ]\r\n        };\r\n    };\r\n\r\n    List.prototype.getDefaultPreloaderTemplate = function () {\r\n        return {\r\n            data: {\r\n                type: 'ListItem',\r\n                itemTemplateType: 'preloader',\r\n                position: { x: 10, y: 10 },\r\n                size: { x: 100, y: 50 }\r\n            },\r\n            childDrops: [{\r\n                data: { type: 'Image', cdnPath: 'Drops/List/loading.gif', size: { x: 100, y: 25 }, position: { x: 0, y: 0 } }\r\n            }]\r\n        };\r\n    };\r\n\r\n    List.prototype.supportsManyToManyData = function () {\r\n        return this.data.selectionMode === 'multiple';\r\n    };\r\n\r\n    List.prototype.getValue = function () {\r\n        if (!this.selectedItems) {\r\n            return null;\r\n        }\r\n\r\n        if (this.data.selectionMode === 'single') {\r\n            return this.selectedItems.length === 1 ? this.selectedItems[0].id : null;\r\n        }\r\n\r\n        return _.pluck(this.selectedItems, 'id');\r\n    };\r\n\r\n    List.prototype.setValue = function (update) {\r\n        if (!this.selectedItems || this.rendering) {\r\n            this.afterRendering.push(this.setValue.bind(this, update));\r\n        } else {\r\n            if (!update.value) {\r\n                this.clearValue();\r\n            } else {\r\n                var valueAsArray = $.isArray(update.value) ? update.value : [update.value];\r\n\r\n                if (this.data.selectionMode === 'single' && valueAsArray.length > 0)\r\n                    valueAsArray = [valueAsArray[0]];\r\n\r\n                this.updateSelection(valueAsArray);\r\n            }\r\n        }\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    List.prototype.clearValue = function () {\r\n        if (!this.selectedItems) {\r\n            return;\r\n        }\r\n\r\n        var self = this;\r\n        _.each(self.pool, function (listItem) {\r\n            if (_.indexOf(self.selectedItems, listItem) !== -1) {\r\n                self.renderStyleIfEnabled('normal', listItem);\r\n            }\r\n        });\r\n        self.selectedItems = [];\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    List.prototype.isValid = function () {\r\n        if (!this.data.required || !this.data.required.isRequired) return true;\r\n        return !!this.selectedItems && this.selectedItems.length >= 1;\r\n    };\r\n\r\n    List.prototype.updateSelection = function (selectedIds) {\r\n        var self = this;\r\n        var previouslySelectedItems = this.selectedItems;\r\n        var newlySelectedItems = [];\r\n\r\n        _.each(this.pool, function (listItem) {\r\n            if (_.indexOf(selectedIds, listItem.id) !== -1) {\r\n                newlySelectedItems.push(listItem);\r\n                self.renderStyleIfEnabled('selected', listItem);\r\n            } else if (_.indexOf(previouslySelectedItems, listItem) !== -1) {\r\n                self.renderStyleIfEnabled('normal', listItem);\r\n            }\r\n        });\r\n\r\n        this.selectedItems = newlySelectedItems;\r\n    };\r\n\r\n    var valueOrDefault = function (value, defaultValue) {\r\n        return value === null || value === undefined ? defaultValue : value;\r\n    };\r\n\r\n    List.prototype.getItemOffset = function () {\r\n        return {\r\n            x: valueOrDefault(this.data.childPositionX, this.itemTemplatesData[0].data.position.x),\r\n            y: valueOrDefault(this.data.childPositionY, this.itemTemplatesData[0].data.position.y)\r\n        };\r\n    };\r\n\r\n    List.prototype.getItemSize = function () {\r\n        return {\r\n            x: valueOrDefault(this.data.childSizeX, this.itemTemplatesData[0].data.size.x),\r\n            y: valueOrDefault(this.data.childSizeY, this.itemTemplatesData[0].data.size.y)\r\n        };\r\n    };\r\n\r\n    List.prototype.clear = function () {\r\n        _.forEach(this.pool, function (drop) {\r\n            if(drop.data.itemTemplateType === 'item') {\r\n                drop.piping.cleanUp();\r\n            }\r\n\r\n            drop.unsubscribeEventHandlersRecursive();\r\n\r\n        });\r\n\r\n        this.$list.empty();\r\n        this.removeAllDrops();\r\n        this.nextPageItem = null;\r\n        this.$alignContainer = null;\r\n    };\r\n\r\n    List.prototype.renderLoadingItem = function () {\r\n        var self = this;\r\n        this.updateAlignContainer();\r\n        var loadingDrops = self.piping.dropFactory\r\n            .createDrops(self.loadingTemplatesData, { dynamic: true });\r\n\r\n        _.each(loadingDrops, function (loadingDrop) {\r\n            self.addDrop(loadingDrop);\r\n            loadingDrop.render(self.$alignContainer, self.data.reverseScrolling);\r\n        });\r\n    };\r\n\r\n    List.prototype.update = function (data) {\r\n        this.clear();\r\n        this.updateAlignContainer();\r\n\r\n        if (!data)\r\n            return;\r\n\r\n        var self = this;\r\n        self.rendering = true;\r\n        self.selectedItems = [];\r\n\r\n        self.resetItemCounters();\r\n        self.totalResults = data.totalResults;\r\n        self.triggerPageOpened(data.totalResults, self.loadedPagesForward - 1, self.data.pageSize);\r\n\r\n        if (self.data.infiniteScroll)\r\n            self.loadedAllData = data.totalResults < self.data.pageSize;\r\n\r\n        var headerDrops = self.piping.dropFactory\r\n            .createDrops(self.headerTemplatesData, { dynamic: true });\r\n\r\n        var listItemsRendered = [];\r\n\r\n        _.each(headerDrops, function (headerDrop) {\r\n            self.addDrop(headerDrop);\r\n            self.setTotalData(headerDrop);\r\n\r\n            self.setItemCounters(headerDrop);\r\n\r\n            new OnLongPress()\r\n                .applyLongPressOnElement(\r\n                    headerDrop.$element,\r\n                    self,\r\n                    headerDrop.defaultEventArg,\r\n                    $.noop,\r\n                    null,\r\n                    self.$list,\r\n                    $.noop\r\n                );\r\n\r\n            listItemsRendered.push(headerDrop.render(self.$alignContainer, self.data.reverseScrolling));\r\n            self.incrementItemCounters(headerDrop);\r\n        });\r\n\r\n        listItemsRendered.push(self.renderData(data));\r\n\r\n        setTimeout(function () {\r\n            var widthOfContainer = self.calcTheWidthOfContainer(self.data.childPositionX, self.data.childSizeX, parseFloat(self.$list.css('width')), self.isListItemSizeDynamic);\r\n            self.$alignContainer\r\n                .css({\r\n                    width: widthOfContainer\r\n                });\r\n            if (self.data.listItemAlignment !== 'left' && self.data.layout === 'Horizontal') {\r\n                _.defer(function () {\r\n                    var scrollPosition = 0;\r\n                    if (self.data.listItemAlignment === 'center') {\r\n                        scrollPosition = (self.$list[0].scrollWidth - self.$list.width()) / 2; // Scroll to center\r\n                    } else if (self.data.listItemAlignment === 'right') {\r\n                        scrollPosition = self.$list[0].scrollWidth - self.$list.width(); // Scroll to right\r\n                    }\r\n                    self.$list.scrollLeft(scrollPosition);\r\n                });\r\n            }\r\n        });\r\n\r\n        return when.all(listItemsRendered);\r\n    };\r\n\r\n    List.prototype.keepPagingInformation = function () {\r\n        return this.data.pagingEnabled\r\n            && this.data.keepPagerPositionOnQueryReload\r\n            && this.loadedPagesForward !== 0;\r\n    };\r\n\r\n    List.prototype.resetItemCounters = function () {\r\n        this.currentRow = 0;\r\n        this.currentColumn = 0;\r\n        this.itemCounter = 0;\r\n        this.groupingLoss = 0;\r\n        this.loadedAllData = false;\r\n\r\n        if (!this.keepPagingInformation())\r\n            this.loadedPagesForward = 1;\r\n    };\r\n\r\n    List.prototype.incrementItemCounters = function (lastItem) {\r\n        var self = this;\r\n        self.itemCounter++;\r\n    };\r\n\r\n    List.prototype.decrementItemCounters = function () {\r\n        var self = this;\r\n        self.itemCounter--;\r\n    };\r\n\r\n    var KEY_SEPARATOR = '$';\r\n\r\n    var getPreliminaryGroupingKey = function (resultItem, fieldNames) {\r\n        var groupingValues = _.map(fieldNames, function (headerField) { return resultItem[headerField]; });\r\n        return groupingValues.join(KEY_SEPARATOR);\r\n    };\r\n\r\n    List.prototype.createDataItemForGroup = function (groupResultItems, originalData) {\r\n        var self = this;\r\n        var groupDataItem = _.pick(_.first(groupResultItems), self.data.groupByColumns); // only include columns that are certain\r\n        groupDataItem.$groupData = {\r\n            results: groupResultItems,\r\n            outputs: originalData.outputs,\r\n            totalResults: groupResultItems.length\r\n        };\r\n        return groupDataItem;\r\n    };\r\n\r\n    var stableGroupBy = function (list, getKey) {\r\n        var keyValuePairs = _.map(list, function (item) {\r\n            return {\r\n                key: getKey(item),\r\n                value: item\r\n            };\r\n        });\r\n        var groupsByKey = {};\r\n        var groupsInOrder = [];\r\n        _.each(keyValuePairs, function (kvp) {\r\n            var group = groupsByKey[kvp.key];\r\n            if (!group) {\r\n                group = [];\r\n                groupsByKey[kvp.key] = group;\r\n                groupsInOrder.push(group);\r\n            }\r\n            group.push(kvp.value);\r\n        });\r\n        return groupsInOrder;\r\n    };\r\n\r\n    List.prototype.groupData = function (data) {\r\n        var self = this;\r\n        var groupByColumns = self.data.groupByColumns;\r\n        if (!groupByColumns || groupByColumns.length === 0)\r\n            return data;\r\n\r\n        var groupedItems = stableGroupBy(data.results, function (resultItem) {\r\n            return getPreliminaryGroupingKey(resultItem, groupByColumns);\r\n        });\r\n\r\n        var groupedResults = _.map(groupedItems, function (group) {\r\n            return self.createDataItemForGroup(group, data);\r\n        });\r\n\r\n        return {\r\n            totalResults: data.totalResults,\r\n            outputs: _.pick(data.outputs, groupByColumns),\r\n            results: groupedResults\r\n        };\r\n    };\r\n\r\n    List.prototype.setItemCounters = function (listItem) {\r\n        var self = this;\r\n        listItem.itemCounter = self.itemCounter;\r\n        listItem.currentRow = self.currentRow;\r\n        listItem.currentColumn = self.currentColumn;\r\n    };\r\n\r\n    List.prototype.removeLastListItem = function (item) {\r\n        var self = this;\r\n        self.decrementItemCounters();\r\n        self.removeDrop(item);\r\n        item.$element.remove();\r\n    };\r\n\r\n    List.prototype.getLastListItem = function () {\r\n        var self = this;\r\n        for (var i = self.pool.length - 1; i >= 0; i--) {\r\n            if (self.pool[i].data.itemTemplateType === 'item')\r\n                return self.pool[i];\r\n        }\r\n        return null;\r\n    };\r\n\r\n    List.prototype.getFirstListItem = function () {\r\n        for (var i = 0; i < this.pool.length; i++) {\r\n            if (this.pool[i].data.itemTemplateType === 'item')\r\n                return this.pool[i];\r\n        }\r\n        return null;\r\n    };\r\n\r\n    List.prototype.isGroupingEnabled = function () {\r\n        return this.data.groupByColumns && this.data.groupByColumns.length > 0;\r\n    };\r\n\r\n    var groupInBatches = function (data, size) {\r\n        var i = 0, j = 0;\r\n        var currentBatch = [];\r\n        var result = [currentBatch];\r\n        while (i < data.length) {\r\n            if (j === size) {\r\n                j = 0;\r\n                currentBatch = [];\r\n                result.push(currentBatch);\r\n            }\r\n            currentBatch.push(data[i]);\r\n            i++;\r\n            j++;\r\n        }\r\n        return result;\r\n    };\r\n\r\n    var RENDER_BATCH_SIZE = 5;\r\n\r\n    if (window.location.search.length) {\r\n        var queryParams = util.parseUriQuery(window.location.search.substring(1));\r\n        if (queryParams.listBatchSize) {\r\n            var batchSizeParam = parseInt(queryParams.listBatchSize, 10);\r\n            if (batchSizeParam > 0 && batchSizeParam < 1024)\r\n                RENDER_BATCH_SIZE = batchSizeParam;\r\n        }\r\n    }\r\n\r\n    List.prototype.calcTheWidthOfContainer = function (margin, listItemWidth, listWidth, widthIsDynamic) {\r\n        if (widthIsDynamic || (this.data.layout === 'Continuous' && this.data.listItemAutoSize)) {\r\n            if (this.data.listItemAlignment !== 'center') {\r\n                this.$alignContainer\r\n                    .css({\r\n                        float: this.data.listItemAlignment\r\n                    });\r\n                return '';\r\n            } else if (this.data.layout !== \"Dynamic Vertical\" && this.data.layout !== \"Vertical\") {\r\n                return 'fit-content';\r\n            }\r\n            return '';\r\n        }\r\n\r\n        var retVal;\r\n        var firstChild = this.$element[0].firstChild;\r\n        var childData = this.itemTemplatesData[0].data;\r\n        var hasAnchorLeft = childData.left !== null && childData.left !== undefined;\r\n        var hasAnchorRight = childData.right !== null && childData.right !== undefined;\r\n        if (hasAnchorLeft || hasAnchorRight) {\r\n            var hasScrollBar = firstChild.clientHeight < firstChild.scrollHeight;\r\n            if (hasScrollBar) {\r\n                var scrollbarWidth =\r\n                    firstChild.offsetWidth -\r\n                    firstChild.clientWidth -\r\n                    parseInt($(firstChild).css('border-left-width')) -\r\n                    parseInt($(firstChild).css('border-right-width'));\r\n                retVal = this.$element[0].getBoundingClientRect().width - scrollbarWidth;\r\n            } else {\r\n                retVal = this.$element[0].getBoundingClientRect().width;\r\n            }\r\n        } else {\r\n\r\n            var width;\r\n\r\n            if (this.data.listItemAlignment === 'left') {\r\n                width = margin + listItemWidth;\r\n            } else {\r\n                width = 2 * margin + listItemWidth;\r\n            }\r\n\r\n            var countOfVisibleData = this.renderedItemsCount;\r\n\r\n            if (this.data.layout === 'Horizontal') {\r\n                var i = 0;\r\n                while (i < countOfVisibleData - 1) {\r\n                    width = width + margin + listItemWidth;\r\n                    i++;\r\n                }\r\n                // In a special case the first/last list item does not have left/right margin\r\n                retVal = this.data.listItemAlignment === 'center' ? (width - 2 * margin) : width;\r\n            } else if (this.data.layout === 'Continuous') {\r\n                if (countOfVisibleData !== this.itemCounter) {\r\n                    countOfVisibleData = this.itemCounter;\r\n                }\r\n                var i = 0;\r\n                while (width + margin + listItemWidth <= listWidth && i < countOfVisibleData - 1) {\r\n                    width = width + margin + listItemWidth;\r\n                    i++;\r\n                }\r\n                if (this.isNextPageLinkNeeded() && this.nextPageItem) {\r\n                    width += this.nextPageItem.$element.outerWidth(true);\r\n                }\r\n                retVal = width;\r\n            } else if (this.data.layout === 'Dynamic Vertical' || this.data.layout === 'Vertical') {\r\n                countOfVisibleData += this.itemCounter;\r\n                retVal = '';\r\n                var hasScrollBar = firstChild.clientHeight < firstChild.scrollHeight;\r\n                var scrollbarWidth = hasScrollBar ?\r\n                    firstChild.offsetWidth -\r\n                    firstChild.clientWidth -\r\n                    parseInt($(firstChild).css('border-left-width')) -\r\n                    parseInt($(firstChild).css('border-right-width'))\r\n                    : 0;\r\n\r\n                var elementWidth = this.$element[0].getBoundingClientRect().width;\r\n\r\n                if (elementWidth === 0) {\r\n                    elementWidth = this.$element.outerWidth();\r\n                }\r\n\r\n                retVal = elementWidth - scrollbarWidth;\r\n            }\r\n        }\r\n        return parseFloat(retVal);\r\n    };\r\n\r\n\r\n\r\n    List.prototype.updateAlignContainer = function () {\r\n        if (!this.$alignContainer) {\r\n            this.$alignContainer = $('<div/>')\r\n                .appendTo(this.$list);\r\n\r\n            if (this.data.enableSorting) {\r\n                dropSortable.setUpSortable({\r\n                    drop: this,\r\n                    $element: this.$alignContainer,\r\n                    moveable: '.sortable-list-item',\r\n                    ghostClass: 'drag-ghost',\r\n                    forceFallback: this.data.useCustomDragPreview,\r\n                    handle: this.data.handlerDropName ? '.sortable-list-handler' : null,\r\n                    animation: this.data.animationTime,\r\n                    scrolling: this.data.enableScrollingWithSorting ? this.$list[0] : false,\r\n                    scrollSensitivity: this.data.scrollSensitivity, // px, how near the mouse must be to an edge to start scrolling.\r\n                    scrollSpeed: this.data.scrollSpeed\r\n                });\r\n            }\r\n        }\r\n\r\n        this.setTheAlignContWidthAndMargins();\r\n    };\r\n\r\n    List.prototype.updateAlignContainerResize = function () {\r\n        if (!this.$alignContainer) {\r\n            return;\r\n        }\r\n        this.setTheAlignContWidthAndMargins();\r\n    };\r\n\r\n    List.prototype.setTheAlignContWidthAndMargins = function () {\r\n        var self = this;\r\n        setTimeout(function () {\r\n            var widthOfContainer = self.calcTheWidthOfContainer(self.data.childPositionX, self.data.childSizeX, parseFloat(self.$list.css('width')), self.isListItemSizeDynamic);\r\n\r\n            if (self.data.listItemAlignment === 'left') {\r\n                self.$alignContainer\r\n                    .css({\r\n                        width: widthOfContainer,\r\n                        marginRight: 'auto'\r\n                    });\r\n            } else if (self.data.listItemAlignment === 'center') {\r\n                self.$alignContainer\r\n                    .css({\r\n                        width: widthOfContainer,\r\n                        margin: '0 auto'\r\n                    });\r\n            } else if (self.data.listItemAlignment === 'right') {\r\n                self.$alignContainer\r\n                    .css({\r\n                        width: widthOfContainer,\r\n                        marginLeft: 'auto'\r\n                    });\r\n            }\r\n        });\r\n    };\r\n\r\n    List.prototype.renderData = function (data, groupedData, scrollingQuery, isUpdate) {\r\n        if (!this.parent) return; // received a result from the server but the List was probably already removed from the scree\r\n\r\n        var self = this;\r\n\r\n        self.updateAlignContainer();\r\n\r\n        // \"-webkit-overflow-scrolling: touch\" doesn't like it when you dynamically add content\r\n        self.$element.removeClass('momentum-scrolling');\r\n\r\n        self.rendering = true;\r\n\r\n        groupedData = groupedData || self.groupData(data);\r\n        self.totalResults = groupedData.totalResults;\r\n\r\n        var keyColumn = self.data.keyColumn || 'Id';\r\n\r\n        var lastPreviousItem = self.getLastListItem();\r\n        var lastPreviousData = lastPreviousItem && lastPreviousItem.getData();\r\n        var firstNextData = _.first(groupedData.results);\r\n\r\n        if (self.isGroupingEnabled() && lastPreviousData && firstNextData && _.isEqual(\r\n            _.pick(lastPreviousData, self.data.groupByColumns),\r\n            _.pick(firstNextData, self.data.groupByColumns))) {\r\n            firstNextData.$groupData.results = lastPreviousData.$groupData.results.concat(firstNextData.$groupData.results);\r\n            self.removeLastListItem(lastPreviousItem);\r\n        }\r\n\r\n        var outputs = groupedData.outputs;\r\n        var results = groupedData.results;\r\n\r\n        if (data.state) {\r\n            this.startPage = data.state.startPage;\r\n            this.loadedPagesForward = data.state.endPage - data.state.startPage\r\n        } else {\r\n            this.startPage = this.startPage ?? 0;\r\n        }\r\n\r\n        if (self.data.useParentGroupData && self.data.skipItemsWithEmptyId) {\r\n            results = _.filter(results, function (result) {\r\n                return result[keyColumn] !== undefined && result[keyColumn] !== null;\r\n            });\r\n        } else if (self.data.isParentIdEnabled) {\r\n            results = _.filter(results, function (result) {\r\n                return self.piping.idOfItem === result[self.data.parentIdOutput];\r\n            });\r\n        }\r\n\r\n        if (!self.data.reverseScrolling && self.loadBackward) {\r\n            results = results.reverse();\r\n        }\r\n\r\n        _.each(results, function (currentResult) {\r\n            var existingListItem = _.findWhere(self.pool, {\r\n                id: currentResult[keyColumn]\r\n            });\r\n            if (existingListItem) {\r\n                existingListItem.setData(outputs, currentResult);\r\n                existingListItem.reapplyData();\r\n\r\n                results = _.filter(results, function (r) {\r\n                    return r !== currentResult;\r\n                });\r\n            }\r\n        });\r\n\r\n        return when.map(results, function (dataRow) {\r\n            var pipingData = self.piping.fork(dataRow, self, self.data.keyColumn);\r\n\r\n            if (self.itemTemplatesData.length > 1) {\r\n                return when.reduce(self.itemTemplatesData, function (currentResult, value, index) {\r\n                    if (currentResult) return currentResult;\r\n\r\n                    if (jQuery.isEmptyObject(value.data.condition)) {\r\n                        return util.cloneData(value);\r\n                    }\r\n\r\n                    var evaluator = pipingData.conditions.getConditionEvaluator(value.data.condition);\r\n\r\n                    return evaluator\r\n                        .evaluate(pipingData, true, {\r\n                            [self.data.dataSource]: dataRow,\r\n                        })\r\n                        .then(function (executionData) {\r\n                            if (executionData.conditionResult) {\r\n                                return util.cloneData(value);\r\n                            }\r\n                        });\r\n                }, null);\r\n            } else {\r\n                return util.cloneData(self.itemTemplatesData[0]);\r\n            }\r\n        }).then(function (clonedItemDataToCreate) {\r\n            self.renderedItemsCount = 0;\r\n\r\n            _.each(clonedItemDataToCreate, function (morph) {\r\n                morph.rootDrop = self.rootDrop\r\n            });\r\n            var listItemDrops = self.piping.dropFactory\r\n                .createDrops(clonedItemDataToCreate, { dynamic: true });\r\n            var listItemsBatched = groupInBatches(listItemDrops, RENDER_BATCH_SIZE);\r\n            return when.reduce(listItemsBatched, function (_previous, currentBatch, batchIndex) {\r\n                var batchRenderPromises = [];\r\n                _.each(currentBatch, function (listItem, indexWithinBatch) {\r\n                    var index = batchIndex * RENDER_BATCH_SIZE + indexWithinBatch;\r\n                    if (index === 0) {\r\n                        listItem.data.isFirst = true;\r\n                    } else if (index + 1 === results.length) {\r\n                        listItem.data.isLast = true;\r\n                    }\r\n                    if (index > 0)\r\n                        self.incrementItemCounters(listItemDrops[index - 1]);\r\n\r\n                    self.addDrop(listItem);\r\n\r\n                    var dataRow = results[index];\r\n\r\n                    listItem.id = dataRow[keyColumn];\r\n                    listItem.piping = self.piping.fork(dataRow, self, self.data.keyColumn);\r\n                    listItem.defaultEventArg = dataRow[self.data.eventArg];\r\n                    listItem.setData(outputs, dataRow);\r\n                    if (self.data.enableSorting) {\r\n                        listItem.$element.data('id', dataRow[self.data.eventArg]);\r\n                        if (listItem.data.itemTemplateType === 'item') {\r\n                            listItem.$element.addClass('sortable-list-item');\r\n                        }\r\n                    }\r\n                    listItem.$element.css('overflow', '');\r\n                    listItem.$element.css('vertical-align', 'top');\r\n\r\n                    if (!self.data.isParentIdEnabled || self.piping.idOfItem === dataRow[self.data.parentIdOutput]) {\r\n                        self.setItemCounters(listItem);\r\n                        batchRenderPromises.push(listItem.render(self.$alignContainer, self.data.reverseScrolling || self.loadBackward, isUpdate));\r\n                        self.renderedItemsCount++;\r\n                    }\r\n                });\r\n                return when.all(batchRenderPromises).then(function () {\r\n                    if (self.data.reverseScrolling && self.oldScrollHeight\r\n                        && scrollingQuery && (self.data.onlyLoadFirstPage || self.hasInfiniteScrollEnabled())) {\r\n                        var scrollHeight = self.$list.prop('scrollHeight');\r\n                        self.setScrollTop(scrollHeight - self.oldScrollHeight);\r\n                    }\r\n\r\n                    if (self.loadBackward) {\r\n                        if (self.data.layout === \"Horizontal\") {\r\n                            var scrollWidth = self.$list.prop('scrollWidth');\r\n                            self.$scrollableElement.scrollLeft(scrollWidth - self.oldScrollWidth);\r\n                        } else {\r\n                            var scrollHeight = self.$list.prop('scrollHeight');\r\n                            self.$scrollableElement.scrollTop(scrollHeight - self.oldScrollHeight);\r\n                        }\r\n                    }\r\n                });\r\n            }, null)\r\n                .yield(listItemDrops)\r\n                .then(function (listItemDrops) {\r\n                    if (listItemDrops.length > 0) {\r\n                        self.incrementItemCounters(listItemDrops[listItemDrops.length - 1]);\r\n                        if (listItemDrops[0].childDrops.length === 1 && listItemDrops[0].childDrops[0].data.type === 'Stack') {\r\n                            self.isListItemSizeDynamic = true;\r\n                        } else if (listItemDrops[0].childDrops.length === 1 && listItemDrops[0].childDrops[0].data.type === 'DynamicGridLayout' && (listItemDrops[0].childDrops[0].data.useDynamicWidth || listItemDrops[0].childDrops[0].data.useDynamicHeight)) {\r\n                            self.isListItemHasDynGrid = true;\r\n                        }\r\n                        self.setWidthOfListItems();\r\n                    }\r\n                    _.each(listItemDrops, function (listItem, index) {\r\n                        if (self.isListItemSizeDynamic) {\r\n                            listItem.$element\r\n                                .css({\r\n                                    overflow: 'hidden'\r\n                                });\r\n                        }\r\n                        if (self.data.layout === 'Vertical' && self.swipeTemplatesData.length > 0) {\r\n                            var swipeItems = [];\r\n                            for (var i = 0; i < self.swipeTemplatesData.length; i++) {\r\n                                swipeItems.push(self.piping.dropFactory.createDrop(self.swipeTemplatesData[i]));\r\n                            }\r\n\r\n                            var $wrapper = $('<div class = \"swipe-wrapper\">');\r\n                            var $div = $('<div class = \"swipe-container\">');\r\n\r\n                            _.each(positioningProps, function (prop) {\r\n                                $wrapper.css(prop, listItem.$element.css(prop || ''));\r\n                            });\r\n\r\n                            $wrapper.css({ position: 'relative' });\r\n                            $div.\r\n                                css({\r\n                                    overflow: 'hidden',\r\n                                    position: '',\r\n                                    height: (listItem.$element.outerHeight() + self.data.childPositionY) + 'px'\r\n                                })\r\n                                .appendTo($wrapper);\r\n\r\n                            listItem.$element\r\n                                .css({\r\n                                    position: 'relative',\r\n                                    margin: 0,\r\n                                })\r\n                                .appendTo($div);\r\n\r\n                            // swapSwipeItems\r\n                            if (swipeItems.length === 2 && swipeItems[0].data.itemTemplateType.includes(\"left\")) {\r\n                                var temp = swipeItems[1];\r\n                                swipeItems[1] = swipeItems[0];\r\n                                swipeItems[0] = temp;\r\n                            }\r\n\r\n                            for (var i = 0; i < swipeItems.length; i++) {\r\n                                var itemTemplateType = swipeItems[i].data.itemTemplateType;\r\n                                if (itemTemplateType.includes(\"left\")) {\r\n                                    self.addDrop(swipeItems[i]);\r\n                                    swipeItems[i].render($div).then(function (val) {\r\n                                        var drop = self.getSwipeItemByType(swipeItems, 'leftSwipeItem', 'left-swipe');\r\n                                        drop.$element.addClass('left-swipe');\r\n                                        var top = swipeItems.length === 1 ? -listItem.$element.outerHeight() + 'px' : -2 * listItem.$element.outerHeight() + 'px';\r\n                                        drop.$element.css({\r\n                                            position: 'relative',\r\n                                            zIndex: 1,\r\n                                            left: -listItem.$element.outerWidth() + 'px',\r\n                                            top: top,\r\n                                            margin: 0,\r\n                                            visibility: 'hidden',\r\n                                            overflow: 'hidden',\r\n                                            height: listItem.$element.outerHeight() + 'px',\r\n                                            width: listItem.$element.outerWidth() + 'px'\r\n                                        });\r\n                                        self.addSwipingToListItem(drop);\r\n                                    });\r\n                                } else if (itemTemplateType.includes(\"right\")) {\r\n                                    self.addDrop(swipeItems[i]);\r\n                                    swipeItems[i].render($div).then(function (val) {\r\n                                        var drop = self.getSwipeItemByType(swipeItems, 'rightSwipeItem', 'right-swipe');\r\n                                        drop.$element.addClass('right-swipe');\r\n                                        drop.$element.css({\r\n                                            position: 'relative',\r\n                                            zIndex: 1,\r\n                                            top: -listItem.$element.outerHeight() + 'px',\r\n                                            left: listItem.$element.outerWidth() + 'px',\r\n                                            margin: 0,\r\n                                            visibility: 'hidden',\r\n                                            overflow: 'hidden',\r\n                                            height: listItem.$element.outerHeight() + 'px',\r\n                                            width: listItem.$element.outerWidth() + 'px'\r\n                                        });\r\n                                        self.addSwipingToListItem(drop);\r\n                                    });\r\n                                }\r\n                                var dataRow = results[index];\r\n                                swipeItems[i].defaultEventArg = dataRow[self.data.eventArg];\r\n                            }\r\n\r\n                            if (!self.data.reverseScrolling || self.loadBackward)\r\n                                $wrapper.appendTo(self.$alignContainer);\r\n                            else\r\n                                $wrapper.prependTo(self.$alignContainer);\r\n                            self.addSwipingToListItem(listItem);\r\n                            listItem.$element.addClass('center-swipe');\r\n                        }\r\n\r\n                        if (self.getEventDataFor('selected').enabled || self.getEventDataFor('clicked').enabled) {\r\n                            listItem.$element.css({ cursor: 'pointer' });\r\n                        }\r\n\r\n                        new OnLongPress()\r\n                            .applyLongPressOnElement(\r\n                                listItem.$element,\r\n                                self,\r\n                                listItem.defaultEventArg,\r\n                                function (e) {\r\n                                    self.handleListItemClick(listItem, e);\r\n                                },\r\n                                null,\r\n                                self.$list,\r\n                                function (e) {\r\n                                    self.handleListItemSelection(listItem, e);\r\n                                }\r\n                            );\r\n\r\n                        // Respect Top-Bottom margin even when child is relative\r\n                        if (listItem.data.top !== null && listItem.data.top !== undefined\r\n                            && listItem.data.bottom !== null && listItem.data.bottom !== undefined\r\n                            && (self.isListItemHasDynGrid || self.isListItemSizeDynamic)\r\n                            && self.data.layout === 'Horizontal') {\r\n                            self.$alignContainer.css('height', '100%');\r\n                            listItem.$element.css('height', '100%');\r\n                            listItem.$element.css('margin-top', '');\r\n                            self.$list.css('padding-top', listItem.data.top);\r\n                            self.$list.css('padding-bottom', listItem.data.bottom);\r\n                        }\r\n                    });\r\n\r\n                    self.rendering = false;\r\n\r\n                    _.each(self.afterRendering, function (callback) {\r\n                        callback();\r\n                    });\r\n                    self.afterRendering = [];\r\n\r\n                    self.addNextPageLinkIfNeeded();\r\n\r\n                    if (self.hasInfiniteScrollEnabled())\r\n                        self.checkScrollAndLoadNextPageIfNeeded();\r\n\r\n                    self.nestingContext.executeDataSources();\r\n\r\n                    self.oldScrollHeight = self.$list.prop('scrollHeight')\r\n                        - ((self.data.onlyLoadFirstPage || self.hasInfiniteScrollEnabled()) ? 0 : self.data.childSizeY + self.data.childPositionY);\r\n\r\n                    self.oldScrollWidth = self.$list.prop('scrollWidth')\r\n                        - ((self.data.onlyLoadFirstPage || self.hasInfiniteScrollEnabled()) ? 0 : self.data.childSizeX + self.data.childPositionX);\r\n                })\r\n                .then(function () {\r\n                    _.defer(function () {\r\n                        // note: defer() is needed in case the items of this list contain nested lists\r\n                        if (self.loadBackward) {\r\n                            return;\r\n                        }\r\n                        \r\n                        if(self.focusStartPageElement) {\r\n\r\n                            var listItem = _.findWhere(self.pool, {\r\n                                id: self.piping.parameters.getValue(self.data.startAtItemIdParameter)\r\n                            });\r\n\r\n                            if (listItem) {\r\n                                listItem.$element[0].scrollIntoView({\r\n                                    behavior: \"instant\",\r\n                                    block: \"center\",\r\n                                    inline: \"center\"\r\n                                });\r\n\r\n                                self.focusStartPageElement = false;\r\n                            }\r\n                        } else {\r\n                            if (self.loadedPagesForward === 1) {\r\n                                if (self.scrollTop < self.$list[0].scrollHeight)\r\n                                    self.$scrollableElement.scrollTop(self.scrollTop);\r\n\r\n                                if (self.scrollLeft < self.$list[0].scrollWidth)\r\n                                    self.$scrollableElement.scrollLeft(self.scrollLeft);\r\n                            }\r\n                            \r\n                            if (self.data.reverseScrolling && !scrollingQuery) {\r\n                                self.setScrollTop(self.$list.prop('scrollHeight'));\r\n                            }                            \r\n                        }                        \r\n                    });\r\n                    self.$element.addClass('momentum-scrolling');\r\n\r\n                    return self.renderQueuedData();\r\n                })\r\n                .catch(function (e) {\r\n                    self.piping.errorHandler.showErrorDialog(e);\r\n                });\r\n        });\r\n    };\r\n\r\n    List.prototype.getSwipeItemByType = function (swipeItems, type, typeClass) {\r\n        return _.find(swipeItems, function (item) {\r\n            return item.data.itemTemplateType === type\r\n                && item.$element\r\n                && !item.$element.hasClass(typeClass);\r\n        });\r\n    };\r\n\r\n    List.prototype.addSwipingToListItem = function (listItem) {\r\n        listItem.$element.on('touchstart mousedown', null, null, this.handleTouchStart.bind(this));\r\n        listItem.$element.on('touchend mouseup', this.handleTouchEnd.bind(this, listItem));\r\n        listItem.$element.on('touchmove mousemove', this.handleTouchMove.bind(this));\r\n    };\r\n\r\n    List.prototype.getTouches = function (evt) {\r\n        return evt.touches ||               // browser API\r\n            evt.originalEvent.touches || // jQuery\r\n            [{ clientX: evt.clientX, clientY: evt.clientY }]; // mouse event\r\n    };\r\n\r\n    List.prototype.handleTouchStart = function (evt) {\r\n        var firstTouch = this.getTouches(evt)[0];\r\n        mouseDown = true;\r\n        xDown = firstTouch.clientX;\r\n        yDown = firstTouch.clientY;\r\n        var $evtTarget = $(evt.currentTarget);\r\n        var margin = this.data.childPositionX;\r\n        if (!$evtTarget.hasClass('center-swipe')) {\r\n            if ($evtTarget.hasClass('right-swipe') && parseInt($evtTarget.css('left')) === 0) {\r\n                $($evtTarget.siblings('.center-swipe')[0]).css({ left: -$evtTarget.width() - margin + 'px' });\r\n            } else if (parseInt($evtTarget.css('left')) === 0) {\r\n                $($evtTarget.siblings('.center-swipe')[0]).css({ left: $evtTarget.width() + margin + 'px' });\r\n            }\r\n        }\r\n        evt.stopPropagation();\r\n    };\r\n\r\n    List.prototype.resetStayed = function ($centerSwipe) {\r\n        if (this.stayedElements && $centerSwipe[0] !== this.stayedElements.center[0]) {\r\n            var self = this;\r\n            this.stayedElements.center.animate({ left: '0px' });\r\n            var width = this.stayedElements.center.outerWidth();\r\n            var left = this.stayedElements.left;\r\n            var right = this.stayedElements.right;\r\n\r\n            left.animate(\r\n                {\r\n                    left: -width + 'px'\r\n                },\r\n                {\r\n                    complete: function () {\r\n                        left.css({ visibility: 'hidden' });\r\n                    }\r\n                }\r\n            );\r\n\r\n            right.animate(\r\n                {\r\n                    left: width + 'px'\r\n                },\r\n                {\r\n                    complete: function () {\r\n                        right.css({ visibility: 'hidden' });\r\n                    }\r\n                }\r\n            );\r\n            self.stayedElements = null;\r\n        }\r\n    };\r\n\r\n    List.prototype.handleTouchMove = function (evt) {\r\n        var $evtTarget = $(evt.currentTarget);\r\n        var $centerSwipe;\r\n        if (!$evtTarget.hasClass('center-swipe')) {\r\n            $centerSwipe = $($evtTarget.siblings('.center-swipe')[0]);\r\n        } else {\r\n            $centerSwipe = $evtTarget;\r\n        }\r\n\r\n        var rElems = $centerSwipe.siblings('.right-swipe');\r\n        var lElems = $centerSwipe.siblings('.left-swipe');\r\n        var width = parseInt($('.swipe-container').css('width'));\r\n\r\n        if (mouseDown && this.allowSwipe) {\r\n            this.resetStayed($centerSwipe);\r\n\r\n            if (!initialPos) {\r\n                initialPos = $centerSwipe.css('left');\r\n            }\r\n\r\n            var xUp;\r\n            var yUp;\r\n            if (evt.touches) {\r\n                xUp = evt.touches[0].clientX;\r\n                yUp = evt.touches[0].clientY;\r\n            } else {\r\n                xUp = evt.clientX;\r\n                yUp = evt.clientY;\r\n            }\r\n\r\n            var xDiff = xDown - xUp;\r\n            var yDiff = yDown - yUp;\r\n\r\n            if (Math.abs(xDiff) > Math.abs(yDiff) || this.alreadySwiping) {/*most significant*/\r\n                var newPosInt = parseInt(initialPos) + (xUp - xDown);\r\n                var newPos = newPosInt + 'px';\r\n\r\n                var margin = this.data.childPositionX;\r\n\r\n                if ((newPosInt >= 0 && lElems.length > 0) || (newPosInt <= 0 && rElems.length > 0))\r\n                    $centerSwipe.css('left', newPos);\r\n                if (!xDown || !yDown) {\r\n                    return;\r\n                }\r\n\r\n                if (newPosInt < 0) {\r\n                    this.disableScroll();\r\n                    this.alreadySwiping = true;\r\n                    /* right swipe */\r\n                    rElems.css({\r\n                        left: (newPosInt) + margin + rElems.outerWidth() + 'px',\r\n                        visibility: ''\r\n                    });\r\n                    lElems.css({\r\n                        visibility: 'hidden'\r\n                    });\r\n                } else if (newPosInt > 0) {\r\n                    this.disableScroll();\r\n                    this.alreadySwiping = true;\r\n                    /* left swipe */\r\n                    lElems.css({\r\n                        left: (newPosInt) - margin - lElems.outerWidth() + 'px',\r\n                        visibility: ''\r\n                    });\r\n                    rElems.css({\r\n                        visibility: 'hidden'\r\n                    });\r\n                }\r\n\r\n            }\r\n        }\r\n    };\r\n\r\n    List.prototype.handleTouchEnd = function (listItem, evt) {\r\n        this.enableScroll();\r\n        this.alreadySwiping = false;\r\n        this.allowSwipe = true;\r\n        mouseDown = false;\r\n        initialPos = null;\r\n        var $evtTarget = $(evt.currentTarget);\r\n        var $centerSwipe;\r\n        if (!$evtTarget.hasClass('center-swipe')) {\r\n            $centerSwipe = $($evtTarget.siblings('.center-swipe')[0]);\r\n        } else {\r\n            $centerSwipe = $evtTarget;\r\n        }\r\n\r\n        var newPos = parseInt($centerSwipe.css('left'));\r\n        var width = parseInt($centerSwipe.outerWidth());\r\n\r\n        var stayThreshold = this.data.stayThreshold / 100;\r\n        var eventThreshold = this.data.eventThreshold / 100;\r\n\r\n        var rElems = $centerSwipe.siblings('.right-swipe');\r\n        var lElems = $centerSwipe.siblings('.left-swipe');\r\n\r\n        var margin = this.data.childPositionX;\r\n\r\n        if (Math.abs(newPos) / width >= eventThreshold) {\r\n            if (newPos >= 0) {\r\n                this.triggerEventIfEnabled('swipeRight', listItem.defaultEventArg);\r\n                $centerSwipe.animate({\r\n                    left: width + margin + 'px'\r\n                });\r\n                lElems.animate({\r\n                    left: '0px'\r\n                });\r\n            } else {\r\n                this.triggerEventIfEnabled('swipeLeft', listItem.defaultEventArg);\r\n                $centerSwipe.animate({\r\n                    left: -width - margin + 'px'\r\n                });\r\n                rElems.animate({\r\n                    left: '0px'\r\n                });\r\n            }\r\n        } else if (Math.abs(newPos) / width >= stayThreshold) {\r\n            if (newPos >= 0) {\r\n                $centerSwipe.animate({\r\n                    left: (width * stayThreshold) + margin + 'px'\r\n                });\r\n                lElems.animate({\r\n                    left: (width * stayThreshold) - width + 'px'\r\n                });\r\n            } else {\r\n                $centerSwipe.animate({\r\n                    left: -(width * stayThreshold) - margin + 'px'\r\n                });\r\n                rElems.animate({\r\n                    left: -(width * stayThreshold) + width + 'px'\r\n                });\r\n            }\r\n            this.stayedElements = { center: $centerSwipe, right: rElems, left: lElems };\r\n        } else {\r\n            $centerSwipe.animate({ left: '0px' });\r\n            if (newPos >= 0) {\r\n                lElems.animate(\r\n                    {\r\n                        left: -width + 'px'\r\n                    },\r\n                    {\r\n                        complete: function () {\r\n                            lElems.css({ visibility: 'hidden' });\r\n                        }\r\n                    }\r\n                );\r\n            } else {\r\n                rElems.animate(\r\n                    {\r\n                        left: width + 'px'\r\n                    },\r\n                    {\r\n                        complete: function () {\r\n                            rElems.css({ visibility: 'hidden' });\r\n                        }\r\n                    }\r\n                );\r\n            }\r\n            this.stayedElements = null;\r\n        }\r\n    };\r\n\r\n    List.prototype.isNextPageLinkNeeded = function () {\r\n        if (!this.data.pagingEnabled || !this.hasNextPage() || this.data.onlyLoadFirstPage)\r\n            return false;\r\n        else {\r\n            return true;\r\n        }\r\n    };\r\n\r\n    List.prototype.addNextPageLinkIfNeeded = function () {\r\n        if (!this.isNextPageLinkNeeded())\r\n            return;\r\n\r\n        var widthOfContainer = this.calcTheWidthOfContainer(this.data.childPositionX, this.data.childSizeX, parseFloat(this.$list.css('width')), this.isListItemSizeDynamic);\r\n        this.$alignContainer\r\n            .css({\r\n                width: widthOfContainer\r\n            });\r\n\r\n        if (!this.data.infiniteScroll || this.autoLoadLimitReached())\r\n            this.addNextPageLink();\r\n    };\r\n\r\n    List.prototype.autoLoadLimitReached = function () {\r\n        return this.data.stopAutoLoadPages > 0 && this.loadedPagesForward % this.data.stopAutoLoadPages === 0;\r\n    };\r\n\r\n    List.prototype.setTotalData = function (listItem) {\r\n        var self = this;\r\n        listItem.setData({ total: 'System.Int32' }, { total: self.totalResults });\r\n    };\r\n\r\n    List.prototype.addNextPageLink = function () {\r\n        var self = this;\r\n\r\n        var nextPageItem = self.piping.dropFactory.createDrop(util.cloneData(self.nextPageTemplateData), { dynamic: true });\r\n\r\n        if (self.loading || self.rendering || self.nextPageItem) {\r\n            return;\r\n        }\r\n\r\n        self.nextPageItem = nextPageItem;\r\n        self.addDrop(nextPageItem);\r\n        self.setTotalData(nextPageItem);\r\n        self.setItemCounters(nextPageItem);\r\n        nextPageItem.render(self.$alignContainer, self.data.reverseScrolling)\r\n            .then(function () {\r\n                nextPageItem.$element\r\n                    .addClass('list-nextPage-item')\r\n                    .css('cursor', 'pointer')\r\n                    .on('click', function () {\r\n                        self.offsetScrollPosition = self.$list.scrollTop();\r\n                        self.removeDrop(nextPageItem);\r\n                        nextPageItem.$element.remove();\r\n                        self.nextPageItem = null;\r\n                        self.loadNextPage();\r\n                    });\r\n                if (self.reverseScrolling && self.oldScrollHeight && !self.data.onlyLoadFirstPage) {\r\n                    var scrollHeightWithPagingEl = self.$list.prop('scrollHeight')\r\n                        + (self.data.onlyLoadFirstPage ? 0 : self.data.childSizeY + self.data.childPositionY);\r\n                    self.setScrollTop(scrollHeightWithPagingEl - self.oldScrollHeight + self.offsetScrollPosition);\r\n                }\r\n            });\r\n        // don't increment itemCounter, this will be removed\r\n    };\r\n\r\n    List.prototype.hasInfiniteScrollEnabled = function () {\r\n        return this.data.pagingEnabled && this.data.infiniteScroll;\r\n    };\r\n\r\n    List.prototype.checkScrollAndLoadNextPageIfNeeded = function () {\r\n        if ((!this.hasNextPage() && self.canLoadBackward) || !this.rendered || (!this.data.dataSource && this.data.mockData) || !this.piping)\r\n            return;\r\n\r\n        if (this.relativePositioned) {\r\n            if (!this.data.reverseScrolling) {\r\n                if (this.data.layout === \"Horizontal\") return;\r\n\r\n                if (this.$scrollableElement.scrollTop() < preloadDistance) {\r\n                    this.loadNextPageBackward();\r\n                    return;\r\n                }\r\n\r\n                var bottomMargin = this.data.bottom || 0;\r\n                var documentHeight = this.piping.$actionView.outerHeight();\r\n                var windowHeight = this.piping.$actionWrapper.outerHeight();\r\n                var bottomScrollPosition = documentHeight - windowHeight - this.piping.$actionWrapper.scrollTop();\r\n\r\n                if (documentHeight === windowHeight || bottomScrollPosition < preloadDistance + bottomMargin) {\r\n                    this.loadNextPageForward();\r\n                }\r\n            } else {\r\n                if (this.piping.$actionWrapper.scrollTop() === 0) {\r\n                    this.loadNextPageForward();\r\n                    return;\r\n                }\r\n\r\n                var maxScrollTop = this.$list[0].scrollHeight - this.$list[0].clientHeight;\r\n                if (maxScrollTop - this.$scrollableElement.scrollTop() < preloadDistance) {\r\n                    this.loadNextPageBackward();\r\n                }\r\n            }\r\n        } else {\r\n            if (!this.data.reverseScrolling) {\r\n                if (this.data.layout === \"Horizontal\") {\r\n                    if (this.$scrollableElement.scrollLeft() < preloadDistance) {\r\n                        this.loadNextPageBackward();\r\n                        return;\r\n                    }\r\n\r\n                    var maxScrollLeft = this.$list[0].scrollWidth - this.$list[0].clientWidth;\r\n                    if (maxScrollLeft - this.$scrollableElement.scrollLeft() < preloadDistance)\r\n                        this.loadNextPageForward();\r\n                } else {\r\n                    var clientHeight = this.$list[0].clientHeight;\r\n                    if (clientHeight === 0) return;\r\n\r\n                    var maxScrollTop = this.$list[0].scrollHeight - clientHeight;\r\n                    if (maxScrollTop - this.$scrollableElement.scrollTop() < preloadDistance) {\r\n                        this.loadNextPageForward();\r\n                    } else if (this.data.configureStartPageEnabled && this.$scrollableElement.scrollTop() < preloadDistance) {\r\n                        this.loadNextPageBackward();\r\n                    }\r\n                }\r\n            } else {\r\n                if (this.$list.scrollTop() === 0) {\r\n                    this.loadNextPageForward();\r\n                    return;\r\n                }\r\n\r\n                var maxScrollTop = this.$list[0].scrollHeight - this.$list[0].clientHeight;\r\n                if (maxScrollTop - this.$scrollableElement.scrollTop() < preloadDistance) {\r\n                    this.loadNextPageBackward();\r\n                }\r\n            }\r\n        }\r\n    };\r\n\r\n    List.prototype.executeQuery = function () {\r\n        var self = this;\r\n        this.piping.queryDispatcher.dispatch(\r\n            this.data.dataSource,\r\n            function (response) {\r\n                _.each(self.getDatasourceListenersWithSameParams(), function (listener) {\r\n                    listener.handler(response);\r\n                });\r\n            },\r\n            function (params) {\r\n                self.decorateQueryParams(params);\r\n            });\r\n    };\r\n\r\n    List.prototype.getDatasourceListenersWithSameParams = function () {\r\n        var self = this;\r\n        var myParams = self.piping.queryDispatcher.getDefaultQueryParams();\r\n        self.decorateQueryParams(myParams);\r\n        var allListeners = self.piping.datasources.getDatasourceListenersThatListenFor(self.data.dataSource);\r\n\r\n        return _.filter(allListeners, function (listener) {\r\n            var params = self.piping.queryDispatcher.getDefaultQueryParams();\r\n            if (typeof (listener.decorateDataFunc) === \"function\")\r\n                listener.decorateDataFunc(params);\r\n            return _.isEqual(myParams, params);\r\n        });\r\n    };\r\n\r\n    List.prototype.hasNextPage = function () {\r\n        var self = this;\r\n        if (self.data.useParentGroupData)\r\n            return false;\r\n        if (self.data.infiniteScroll)\r\n            return !self.loadedAllData;\r\n        return self.totalResults - self.groupingLoss > self.loadedPagesForward * self.data.pageSize;\r\n    };\r\n\r\n    List.prototype.loadNextPage = function () {\r\n        var self = this;\r\n        if (self.loading || self.rendering) {\r\n            return;\r\n        }\r\n\r\n        self.loading = true;\r\n        self.renderPreloader();\r\n\r\n        if (self.mouseDown) { // scrolling with mouse pointer using the side scrollbar\r\n            setTimeout(function () {\r\n                self.queryNextPage();\r\n            }, 300);\r\n        } else {\r\n            self.queryNextPage();\r\n        }\r\n    };\r\n\r\n    List.prototype.loadNextPageForward = function () {\r\n        if (!this.autoLoadLimitReached() && !this.loadedAllData) {\r\n            this.loadBackward = false;\r\n            this.loadNextPage();\r\n        }\r\n    };\r\n\r\n    List.prototype.loadNextPageBackward = function () {\r\n        this.canLoadBackward = this.startPage > 0 && this.startPage - this.loadedPagesBackward >= 0;\r\n\r\n        if (this.canLoadBackward) {\r\n            this.loadBackward = true;\r\n            this.loadNextPage();\r\n        }\r\n    };\r\n\r\n    List.prototype.queryNextPage = function () {\r\n        var self = this;\r\n        self.piping.queryDispatcher.backgroundDispatch(\r\n            self.data.dataSource,\r\n            function (data) {\r\n                var groupedData = self.groupData(data);\r\n                self.groupingLoss += data.results.length - groupedData.results.length;\r\n                self.loadedAllData = data.results.length < self.data.pageSize;\r\n                self.loading = false;\r\n                if (self.loadBackward) {\r\n                    self.loadedPagesBackward++;\r\n                } else {\r\n                    self.loadedPagesForward++;\r\n                }\r\n                self.newItems = 0;\r\n                self.removePreloader();\r\n                self.renderData(data, groupedData, self.scrolledByUser, false);\r\n                self.scrolledByUser = false;\r\n            },\r\n            function (params) {\r\n                if (self.loadBackward) {\r\n                    params.page = self.startPage - self.loadedPagesBackward;\r\n                } else {\r\n                    params.page = self.startPage + self.loadedPagesForward;\r\n                }\r\n                params.pageSize = self.data.pageSize;\r\n                params.doNotExecuteCountQuery = self.data.onlyLoadFirstPage || self.data.infiniteScroll;\r\n            },\r\n            function (error) {\r\n                self.loading = false;\r\n                self.removePreloader();\r\n                self.addNextPageLinkIfNeeded();\r\n            });\r\n    };\r\n\r\n    List.prototype.renderPreloader = function () {\r\n        var self = this;\r\n        if (!self.loading || self.preloaderItem) {\r\n            return;\r\n        }\r\n\r\n        var preloaderItem = self.piping.dropFactory.createDrop(util.cloneData(self.preloaderTemplateData), { dynamic: true });\r\n\r\n        if (!self.loading || self.preloaderItem) {\r\n            return;\r\n        }\r\n\r\n        self.preloaderItem = preloaderItem;\r\n        self.addDrop(preloaderItem);\r\n        self.setItemCounters(preloaderItem);\r\n        preloaderItem.render(self.$list, self.data.reverseScrolling);\r\n        // don't increment itemCounter, this will be removed\r\n    };\r\n\r\n    List.prototype.removePreloader = function () {\r\n        var self = this;\r\n\r\n        if (self.preloaderItem) {\r\n            self.removeDrop(self.preloaderItem);\r\n            self.preloaderItem.$element.remove();\r\n            self.preloaderItem = null;\r\n        }\r\n    };\r\n\r\n    List.prototype.handleListItemSelection = function (listItem, e) {\r\n        var self = this;\r\n        if (self.data.selectionMode === 'multiple') {\r\n            // for now we're assuming you always need a left click\r\n            if (e && self.handleLeftClickAsMultiSelect(e)) {\r\n                var indexOfItem = self.selectedItems.indexOf(listItem);\r\n                if (indexOfItem === -1) {\r\n                    self.selectedItems.push(listItem);\r\n                    self.renderStyleIfEnabled('selected', listItem);\r\n                } else {\r\n                    self.selectedItems.splice(indexOfItem, 1);\r\n                    self.renderStyleIfEnabled('normal', listItem);\r\n                }\r\n            }\r\n        } else { // single selection mode\r\n            if (self.selectedItems.indexOf(listItem) === -1) {\r\n                if (self.selectedItems.length === 0) {\r\n                    self.selectedItems.push(listItem);\r\n                } else {\r\n                    var previousSelection = self.selectedItems[0];\r\n                    self.renderStyleIfEnabled('normal', previousSelection);\r\n                    self.selectedItems[0] = listItem;\r\n                }\r\n                self.renderStyleIfEnabled('selected', listItem);\r\n            } else if (self.handleLeftClickAsMultiSelect(e)) {\r\n                self.selectedItems = [];\r\n                self.renderStyleIfEnabled('normal', listItem);\r\n            }\r\n        }\r\n        self.updateRequiredIndicator();\r\n    };\r\n\r\n    List.prototype.handleListItemClick = function (listItem, e) {\r\n        var self = this;\r\n        if (self.data.selectionMode === 'multiple') {\r\n            // for now we're assuming you always need a left click\r\n            if (e && self.handleLeftClickAsMultiSelect(e)) {\r\n                var indexOfItem = self.selectedItems.indexOf(listItem);\r\n                if (indexOfItem !== -1) {\r\n                    if (self.selectedItems.length === 1) {\r\n                        self.triggerEventIfEnabled('selected', listItem.defaultEventArg);\r\n                    }\r\n                    self.triggerEventIfEnabled('itemSelected', listItem.defaultEventArg);\r\n                } else {\r\n                    if (self.selectedItems.length === 0) {\r\n                        self.triggerEventIfEnabled('deselected', listItem.defaultEventArg);\r\n                    }\r\n                    self.triggerEventIfEnabled('itemDeselected', listItem.defaultEventArg);\r\n                }\r\n            } else {\r\n                self.triggerEventIfEnabled('clicked', listItem.defaultEventArg);\r\n            }\r\n        } else { // single selection mode\r\n            if (self.selectedItems.length === 1) {\r\n                self.triggerEventIfEnabled('selected', listItem.defaultEventArg);\r\n            } else if (e && self.handleLeftClickAsMultiSelect(e)) {\r\n                self.triggerEventIfEnabled('deselected', listItem.defaultEventArg);\r\n            }\r\n            self.triggerEventIfEnabled('clicked', listItem.defaultEventArg);\r\n        }\r\n    };\r\n\r\n    List.prototype.handleLeftClickAsMultiSelect = function (e) {\r\n        if (this.data.selectionBehavior === 'leftclick')\r\n            return true;\r\n        return this.data.selectionBehavior === 'ctrl+leftclick'\r\n            && (e.ctrlKey || e.metaKey);\r\n    };\r\n\r\n    List.prototype.renderStyleIfEnabled = function (customState, drop) {\r\n        Style.renderStyles(drop, null, null, null, customState);\r\n    };\r\n\r\n    // used when a Pager is linked with this drop\r\n    List.prototype.openPage = function (pageNumber) {\r\n        if (this.loading)\r\n            return;\r\n\r\n        this.loading = true;\r\n\r\n        var self = this;\r\n        this.piping.queryDispatcher.backgroundDispatch(\r\n            this.data.dataSource,\r\n            function (data) {\r\n                self.page = pageNumber;\r\n                self.loadedPagesForward = pageNumber + 1;\r\n                self.totalResults = data.totalResults;\r\n                self.loadedAllData = data.totalResults < self.data.pageSize;\r\n                self.loading = false;\r\n\r\n                self.$list.empty().scrollTop(0);\r\n                self.$list.empty().scrollLeft(0);\r\n                self.pool = [];\r\n                self.$alignContainer = null;\r\n                self.nextPageItem = null;\r\n\r\n                self.renderData(data, null, true, false);\r\n                self.triggerPageOpened(data.totalResults, self.page, self.data.pageSize);\r\n            },\r\n            function (params) {\r\n                params.page = pageNumber;\r\n                params.pageSize = self.data.pageSize;\r\n                params.doNotExecuteCountQuery = false;\r\n                params.sortParameters = self.sortParameters;\r\n            },\r\n            function () {\r\n                self.loading = false;\r\n                self.addNextPageLinkIfNeeded();\r\n            });\r\n    };\r\n\r\n    List.prototype.licquidMethod_selectFirstItem = function () {\r\n        if (this.rendering) {\r\n            this.afterRendering.push(this.licquidMethod_selectFirstItem.bind(this));\r\n        } else {\r\n            var firstItem = this.getFirstListItem();\r\n            if (firstItem)\r\n                this.handleListItemClick(firstItem);\r\n        }\r\n    };\r\n\r\n    List.prototype.licquidMethod_jumpToItem = function (args) {\r\n        if (this.rendering) {\r\n            this.afterRendering.push(this.licquidMethod_jumpToItem.bind(this, args));\r\n        } else {\r\n            var listItem = _.findWhere(this.pool, { id: args.itemId });\r\n            if (listItem) {\r\n                var $liElement = listItem.$element;\r\n                var childPos = $liElement.offset();\r\n                var parentPos = this.$scrollableElement.offset();\r\n                var childOffset = {\r\n                    top: childPos.top - parentPos.top + this.$scrollableElement.scrollTop(),\r\n                    left: childPos.left - parentPos.left + this.$scrollableElement.scrollLeft()\r\n                }\r\n\r\n                if (this.data.layout === 'Horizontal') {\r\n                    this.$scrollableElement.scrollLeft(childOffset.left);\r\n                } else {\r\n                    this.$scrollableElement.scrollTop(childOffset.top);\r\n                }\r\n            }\r\n        }\r\n    };\r\n\r\n    return List;\r\n});\r\n\n","define('drops/listItem/listItem',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'when'\r\n], function ($, _, Drop, Style, util, when) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            styles: { normal: {}, enabled: true },\r\n            randomRotateOffset: 0,\r\n            conditionalRendering: false,\r\n            condition: {}\r\n        }\r\n    };\r\n\r\n    function ListItem(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.data.positioning = 'relative';\r\n        this.data.styles = util.convertListOfKeyValuesToObject(this.data.styles);\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize has-states')\r\n            .css({\r\n                whiteSpace: 'pre-wrap'\r\n            });\r\n\r\n        Style.renderStyles(this, undefined, undefined, undefined, 'normal');\r\n\r\n        this.addListener('ChildAdded', this.applyDataAndVisibilityToChild.bind(this));\r\n\r\n        this.children = [];\r\n    }\r\n\r\n    Drop.extend(ListItem);\r\n\r\n    ListItem.typeName = 'ListItem';\r\n\r\n    ListItem.prototype.applyDataAndVisibilityToChild = function (childDrop) {\r\n        if (childDrop.type === 'List' && childDrop.data.useParentGroupData && this.dataRow && this.dataRow.$groupData) {\r\n            childDrop.setData(this.dataRow.$groupData);\r\n        } else {\r\n            var self = this;\r\n            childDrop.addListener('ChildAdded',\r\n                function(childDrop) {\r\n                    self.applyDataAndVisibilityToChild(childDrop);\r\n                });\r\n\r\n            this.children.push(childDrop);\r\n\r\n            if (childDrop['licquidMethod_load'])\r\n                childDrop.licquidMethod_load();\r\n        }\r\n    };\r\n\r\n    ListItem.prototype.setData = function (outputs, dataRow) {\r\n        this.outputs = outputs;\r\n\r\n        if (this.dataRow) {\r\n            var self = this;\r\n            _.forEach(_.keys(outputs), function (output) {\r\n                self.dataRow[output] = dataRow[output];\r\n            });\r\n        } else {\r\n            this.dataRow = dataRow;\r\n        }\r\n    };\r\n\r\n    ListItem.prototype.getData = function () {\r\n        return this.dataRow;\r\n    };\r\n\r\n    ListItem.prototype.createChildren = function () {\r\n        var self = this;\r\n        var childDropsWithRootDrop = _.map(self.childDrops, function(c) {\r\n            c.rootDrop = self.rootDrop;\r\n            return c;\r\n        });\r\n        var drops = this.piping.dropFactory\r\n            .createDrops(childDropsWithRootDrop, { dynamic: true });\r\n\r\n        var self = this;\r\n        _.each(drops, function (drop) {\r\n            drop.defaultEventArg = self.defaultEventArg;\r\n            self.addDrop(drop);\r\n        });\r\n    };\r\n\r\n    ListItem.prototype.preRender = function () {\r\n        if (this.parent.data.layout === \"Horizontal\") {\r\n            this.left = undefined;\r\n            this.right = undefined;\r\n        } else if (this.parent.data.layout === \"Vertical\") {\r\n            this.top = undefined;\r\n            this.bottom = undefined;\r\n        } else {\r\n            this.left = undefined;\r\n            this.right = undefined;\r\n            this.top = undefined;\r\n            this.bottom = undefined;\r\n        }\r\n        this.applyPosition();\r\n        return this.createChildren();\r\n    };\r\n\r\n    ListItem.prototype.render = function ($element, isReversed, isUpdate) {\r\n        var self = this;\r\n\r\n        return when(self.preRender())\r\n            .then(function () {\r\n                if (self.removed)\r\n                    return;\r\n                if (isReversed && !isUpdate)\r\n                    self.$element.prependTo($element);\r\n                else\r\n                    self.$element.appendTo($element);\r\n\r\n                var renderPromises = [];\r\n\r\n                _.forEach(self.pool, function (drop) {\r\n                    renderPromises.push(self.createRenderPromiseForChild(drop));\r\n                });\r\n\r\n                return when.all(renderPromises);\r\n            })\r\n            .then(function () {\r\n                return self.postRender();\r\n            });\r\n    };\r\n\r\n    ListItem.prototype.postRender = function () {\r\n        var rotationdiff = this.data.randomRotateOffset;\r\n        if (rotationdiff) {\r\n            var rotation = 0;\r\n\r\n            var currentRotationAsMatrix = this.$element.css('transform');\r\n            if (currentRotationAsMatrix && currentRotationAsMatrix !== \"none\") {\r\n                var matrixValues = currentRotationAsMatrix.split('(')[1].split(')')[0].split(',');\r\n                rotation = Math.round(Math.atan2(matrixValues[1], matrixValues[0]) * (180 / Math.PI));\r\n            }\r\n\r\n            var randomdiff = Math.floor((Math.random() * rotationdiff * 2) - rotationdiff);\r\n            var newrotation = rotation + randomdiff;\r\n\r\n            this.$element.css('-webkit-transform', \"rotate(\" + newrotation + \"deg)\");\r\n            this.$element.css('-moz-transform', \"rotate(\" + newrotation + \"deg)\");\r\n            this.$element.css('-o-transform', \"rotate(\" + newrotation + \"deg)\");\r\n            this.$element.css('-ms-transform', \"rotate(\" + newrotation + \"deg)\");\r\n            this.$element.css('transform', \"rotate(\" + newrotation + \"deg)\");\r\n        }\r\n        this.calculateSizeBasedOnRatio();\r\n\r\n        this.reapplyData();\r\n    };\r\n\r\n    ListItem.prototype.reapplyData = function () {\r\n        if (!this.dataRow)\r\n            return;\r\n\r\n        var self = this;\r\n        _.each(this.children, function (childDrop) {\r\n            if (childDrop.setValue && self.outputs && _.has(self.dataRow, childDrop.data.name)) {\r\n                childDrop.setValue({\r\n                    type: self.outputs[childDrop.data.name],\r\n                    value: self.dataRow[childDrop.data.name]\r\n                });\r\n            }\r\n\r\n            childDrop.informListeners('DatasourceApplied', self.dataRow);\r\n        });\r\n\r\n        this.applyHandlerClassForSortable();\r\n    };\r\n\r\n    ListItem.prototype.applyPositionForChild = function (childDrop) {\r\n        if (this.parent.data.layout === 'Dynamic Vertical' && childDrop.data.isDynamiclySizedContainer) {\r\n            var css = this.getPositionCss(childDrop.data);\r\n            css.position = 'static';\r\n            childDrop.$element.css(css);\r\n        } else {\r\n            childDrop.$element.css(this.getPositionCss(childDrop.data));\r\n        }\r\n\r\n        if (this.parent.data.enableSorting && childDrop.data.name === this.parent.data.handlerDropName) {\r\n            childDrop.$element.addClass('sortable-list-handler');\r\n        }\r\n    };\r\n\r\n    ListItem.prototype.getStates = function () {\r\n        return [\r\n            { key: 'normal', value: 'Normal' },\r\n            { key: 'hover', value: 'Hover' },\r\n            { key: 'selected', value: 'Selected' }\r\n        ];\r\n    };\r\n\r\n    ListItem.prototype.calculateSizeBasedOnRatio = function () {\r\n        if (this.parent.data.isAspectRatioEnabled) {\r\n            var self = this;\r\n            setTimeout(function () {\r\n                var scrollbarWidth = 0;\r\n                var hasScrollbar = self.$element[0].parentElement.parentElement.scrollHeight > self.$element[0].parentElement.parentElement.clientHeight ? true : false;\r\n                if (hasScrollbar) {\r\n                    scrollbarWidth = self.getScrollbarWidth(self.$element[0].parentElement.parentElement);\r\n                }\r\n                var height = (self.parent.data.ratioHeight / self.parent.data.ratioWidth) * (self.$element[0].offsetWidth + scrollbarWidth);\r\n                self.$element\r\n                    .css({\r\n                        height: height\r\n                    });\r\n            }, 10);\r\n        }\r\n    };\r\n\r\n    ListItem.prototype.postWindowResize = function () {\r\n\t\tthis.calculateSizeBasedOnRatio();\r\n    };\r\n\r\n    ListItem.prototype.getScrollbarWidth = function(element) {\r\n        return element.offsetWidth\r\n        - element.clientWidth\r\n        - parseFloat(getComputedStyle(element).borderLeftWidth)\r\n        - parseFloat(getComputedStyle(element).borderRightWidth);\r\n    };\r\n\r\n    ListItem.prototype.applyHandlerClassForSortable = function () {\r\n        var self = this;\r\n\r\n        if (this.parent.data.enableSorting && this.parent.data.handlerDropName) {\r\n            var handlerDrop = this.children.find(function (children) {\r\n                return children.data.name === self.parent.data.handlerDropName;\r\n            })\r\n    \r\n            if (handlerDrop) {\r\n                handlerDrop.$element.addClass('sortable-list-handler');\r\n            }\r\n        }\r\n    };\r\n\r\n    return ListItem;\r\n});\n","define('drops/matrix/matrixTablesSynchronizer',[\r\n    'jquery'\r\n], function ($) {\r\n    \r\n    var RowSynchronizer = function($first, $second) {\r\n        this.$rowsOfFirst = $first\r\n            .find('tr');\r\n        this.$rowsOfSecond = $second\r\n            .find('tr');\r\n\r\n        this.heightOfFirst = [];\r\n        this.heightOfSecond = [];\r\n\r\n        var self = this;\r\n        this.$rowsOfFirst.each(function (i) {\r\n            self.heightOfFirst[i] = this.getBoundingClientRect().height;\r\n        });\r\n        this.$rowsOfSecond.each(function (i) {\r\n            self.heightOfSecond[i] = this.getBoundingClientRect().height;\r\n        });\r\n    };\r\n\r\n    RowSynchronizer.prototype.sync = function () {\r\n        var self = this;\r\n        this.$rowsOfFirst.each(function (i, element) {\r\n            var $firstRow = $(element);\r\n            var $secondRow = $(self.$rowsOfSecond.get(i));\r\n\r\n            var firstOuterHeight = self.heightOfFirst[i];\r\n            var secondOuterHeight = self.heightOfSecond[i];\r\n\r\n            // we have to set the width on both rows because of rounding issues (in IE and Firefox)\r\n            if (firstOuterHeight > secondOuterHeight) {\r\n                $firstRow.height(firstOuterHeight);\r\n                $secondRow.height(firstOuterHeight);\r\n            } else if (secondOuterHeight > firstOuterHeight) {\r\n                $firstRow.height(secondOuterHeight);\r\n                $secondRow.height(secondOuterHeight);\r\n            }\r\n        });\r\n    };\r\n\r\n    var ColumnSynchronizer = function ($first, $second) {\r\n        this.$columnOfFirst = $first\r\n            .find('tr:first')\r\n            .find('td, th');\r\n        this.$columnOfSecond = $second\r\n            .find('tr:first')\r\n            .find('td');\r\n\r\n        this.widthOfFirst = [];\r\n        this.widthOfSecond = [];\r\n\r\n        var self = this;\r\n        this.$columnOfFirst.each(function (i) {\r\n            self.widthOfFirst[i] = {\r\n                outerWidth: this.getBoundingClientRect().width,\r\n                width: $(this).width() + 1 // adding 1 will fix a rounding issue -> in some browsers a width like '3.43' will be rounded to '3'\r\n            };\r\n        });\r\n        this.$columnOfSecond.each(function (i) {\r\n            self.widthOfSecond[i] = {\r\n                outerWidth: this.getBoundingClientRect().width,\r\n                width: $(this).width() + 1\r\n            };\r\n        });\r\n    };\r\n\r\n    ColumnSynchronizer.prototype.sync = function () {\r\n        var self = this;\r\n        this.$columnOfFirst.each(function (i, element) {\r\n            var $firstColumn = $(element);\r\n            var $secondColumn = $(self.$columnOfSecond.get(i));\r\n\r\n            var firstWidth = self.widthOfFirst[i].width;\r\n            var secondWidth = self.widthOfSecond[i].width;\r\n\r\n            var firstOuterWidth = self.widthOfFirst[i].outerWidth;\r\n            var secondOuterWidth = self.widthOfSecond[i].outerWidth;\r\n\r\n            // we have to set the width on both columns because of rounding issues (in IE and Firefox)\r\n            if (firstOuterWidth > secondOuterWidth) {\r\n                var width = Math.ceil(firstOuterWidth - (secondOuterWidth - secondWidth));\r\n                $secondColumn.css({\r\n                    'min-width': width + 'px',\r\n                    'max-width': width + 'px'\r\n                });\r\n                $firstColumn.css({\r\n                    'min-width': width + 'px',\r\n                    'max-width': width + 'px'\r\n                });\r\n            } else if (secondOuterWidth > firstOuterWidth) {\r\n                var width = Math.ceil(secondOuterWidth - (firstOuterWidth - firstWidth));\r\n                $firstColumn.css({\r\n                    'min-width': width + 'px',\r\n                    'max-width': width + 'px'\r\n                });\r\n                $secondColumn.css({\r\n                    'min-width': width + 'px',\r\n                    'max-width': width + 'px'\r\n                });\r\n            }\r\n        });\r\n    };\r\n\r\n    return {\r\n        syncFor: function (matrix) {\r\n            var synchronizers = [\r\n                new RowSynchronizer(matrix.$fixedHeaders, matrix.$dynamicHeaders),\r\n                new RowSynchronizer(matrix.$fixedRows, matrix.$dynamicRows),\r\n                new ColumnSynchronizer(matrix.$fixedHeaders, matrix.$fixedRows),\r\n                new ColumnSynchronizer(matrix.$dynamicHeaders, matrix.$dynamicRows)\r\n            ];\r\n\r\n            _.each(synchronizers, function(synchronizer) {\r\n                synchronizer.sync();\r\n            });\r\n        }\r\n    };\r\n});\n","define('drops/matrix/matrix',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'drops/matrix/matrixTablesSynchronizer',\r\n    'lq/html',\r\n    'lq/onlongpress'\r\n], function ($, _, lq, Drop, Style, matrixTablesSynchronizer, html, OnLongPress) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            rowHeaders: [],\r\n            rowHeadersSort: [],\r\n            columnHeaders: [{}],\r\n            columnHeadersSort: [],\r\n            columnContentAlignment: 'center',\r\n            dataItems: [{}],\r\n            fixedColumnHeaderTextOrientation: 'horizontal',\r\n            columnHeaderTextOrientation: 'horizontal'\r\n        }\r\n    };\r\n\r\n    var createCol = function ($colgroup, optionalWidth) {\r\n        var $col = $('<col>')\r\n            .appendTo($colgroup);\r\n        if (optionalWidth)\r\n            $col.css('width', optionalWidth);\r\n    };\r\n\r\n    var Matrix = function (options) {\r\n        Drop.call(this, $('<div>'), defaults, options);\r\n\r\n        this.$fixedHeaders = $('<table/>')\r\n            .addClass('fixed-headers');\r\n        this.$fixedHeadersWrapper = $('<div/>')\r\n            .css({\r\n                'float': 'left',\r\n                'overflow': 'hidden'\r\n            })\r\n            .append(this.$fixedHeaders);\r\n\r\n        this.$fixedRows = $('<table/>')\r\n            .addClass('fixed-rows')\r\n            .css('margin-bottom', '100px'); // leave some space for scrollbar and 'next page'-loader at the bottom\r\n        this.$fixedRowsWrapper = $('<div/>')\r\n            .css({\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                bottom: 0,\r\n                'overflow': 'hidden'\r\n            })\r\n            .append(this.$fixedRows);\r\n\r\n        this.$dynamicHeaders = $('<table/>')\r\n            .addClass('dynamic-headers');\r\n        this.$dynamicHeadersWrapper = $('<div />')\r\n            .css('overflow', 'hidden')\r\n            .append($('<div />')\r\n                .css({\r\n                    'float': 'left',\r\n                    'padding-right': '40px' // leave some space for the scrollbar\r\n                })\r\n                .append(this.$dynamicHeaders));\r\n\r\n        this.$dynamicRows = $('<table/>')\r\n            .addClass('dynamic-rows');\r\n        this.$dynamicRowsWrapper = $('<div/>')\r\n            .css({\r\n                'overflow-x': 'auto',\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0\r\n            })\r\n            .append(this.$dynamicRows);\r\n\r\n        this.$matrix = $('<div />')\r\n            .css({\r\n                overflow: 'hidden',\r\n                width: '100%',\r\n                height: '100%'\r\n            })\r\n            .append(this.$fixedHeadersWrapper, this.$dynamicHeadersWrapper)\r\n            .append($('<div />').css('clear', 'both'))\r\n            .append(this.$fixedRowsWrapper, this.$dynamicRowsWrapper);\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize')\r\n            .append(this.$matrix);\r\n\r\n        Style.renderStyles(this, 'gridstyle-');\r\n\r\n        this.loadedPages = 0;\r\n        this.allData = null;\r\n\r\n        var self = this;\r\n        this.$dynamicRowsWrapper.on('scroll', function () {\r\n            console.log(self.$dynamicRowsWrapper.scrollTop());\r\n            self.$fixedRowsWrapper.scrollTop(self.$dynamicRowsWrapper.scrollTop());\r\n            self.$dynamicHeadersWrapper.scrollLeft(self.$dynamicRowsWrapper.scrollLeft());\r\n        });\r\n\r\n        this.update();\r\n    };\r\n\r\n    Drop.extend(Matrix);\r\n\r\n    Matrix.typeName = 'Matrix';\r\n\r\n    Matrix.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n\r\n        var self = this;\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.dataSource,\r\n            function (data) {\r\n                self.loadedPages = 1;\r\n                self.allData = data;\r\n                self.update(data);\r\n            },\r\n            function (params) {\r\n                self.decorateDataSourceData(params);\r\n            });\r\n\r\n        this.applyPosition();\r\n    };\r\n\r\n    Matrix.prototype.decorateDataSourceData = function (queryData, page) {\r\n        if (!this.data.pageSize)\r\n            return;\r\n\r\n        queryData.pageSize = this.data.pageSize;\r\n        queryData.page = page || 0;\r\n    };\r\n\r\n    Matrix.prototype.setColumnWidthBasedOnSettings = function (dynamicColumnCount) {\r\n        var visibleRowHeaders = _.reject(this.data.rowHeaders, function (header) {\r\n            return header.hide;\r\n        });\r\n\r\n        var $fixedRowsGroup = $('<colgroup>')\r\n            .appendTo(this.$fixedRows);\r\n        var $fixedHeadersGroup = $('<colgroup>')\r\n            .appendTo(this.$fixedHeaders);\r\n\r\n        _.each(visibleRowHeaders, function (rowHeader) {\r\n            createCol($fixedRowsGroup, rowHeader.width);\r\n            createCol($fixedHeadersGroup, rowHeader.width);\r\n        });\r\n\r\n        var $dynamicRowsGroup = $('<colgroup>')\r\n            .appendTo(this.$dynamicRows);\r\n        var $dynamicHeadersGroup = $('<colgroup>')\r\n            .appendTo(this.$dynamicHeaders);\r\n\r\n        var self = this;\r\n        _(dynamicColumnCount).times(function () {\r\n            createCol($dynamicRowsGroup, self.data.columnWidth);\r\n            createCol($dynamicHeadersGroup, self.data.columnWidth);\r\n        });\r\n\r\n        if (this.data.columnWidth) {\r\n            var totalWidth = {\r\n                'table-layout': 'fixed',\r\n                'width': dynamicColumnCount * this.data.columnWidth\r\n            };\r\n            this.$dynamicHeaders.css(totalWidth);\r\n            this.$dynamicRows.css(totalWidth);\r\n        } else {\r\n            var autoWidth = {\r\n                'table-layout': 'auto',\r\n                'width': 'auto'\r\n            };\r\n            this.$dynamicHeaders.css(autoWidth);\r\n            this.$dynamicRows.css(autoWidth);\r\n        }\r\n    };\r\n\r\n    Matrix.prototype.update = function (data) {\r\n        var self = this;\r\n        var settings = this.data;\r\n\r\n        data = data || {\r\n            outputs: [],\r\n            results: [],\r\n            totalResults: 0\r\n        };\r\n\r\n        this.$matrix.detach();\r\n\r\n        this.$fixedHeaders\r\n            .empty();\r\n        this.$fixedRows\r\n            .empty();\r\n        this.$dynamicHeaders\r\n            .empty();\r\n        this.$dynamicRows\r\n            .empty();\r\n\r\n        var visibleRowHeaders = _.reject(settings.rowHeaders, function (header) { return header.hide; });\r\n\r\n        // calculate unique row and column headers\r\n        var uniqueRowHeaderGroups = _.groupBy(data.results, function (dataItem) { return self.getRowKey(dataItem); });\r\n        var uniqueColumnHeaderGroups = _.groupBy(data.results, function (dataItem) { return self.getColumnKey(dataItem); });\r\n\r\n        var dynamicColumnCount = _.keys(uniqueColumnHeaderGroups).length;\r\n        self.setColumnWidthBasedOnSettings(dynamicColumnCount);\r\n\r\n        var columnHeaderOutputs = _.pluck(settings.columnHeaders, 'output');\r\n        var columnHeaderSortOutputs = _.compact(_.pluck(settings.columnHeadersSort, 'output'))\r\n            .concat(columnHeaderOutputs);\r\n        var columnKeysSorted = _.keys(uniqueColumnHeaderGroups).sort(function (key1, key2) {\r\n            var dataItem1 = uniqueColumnHeaderGroups[key1][0];\r\n            var dataItem2 = uniqueColumnHeaderGroups[key2][0];\r\n            return self.compareDataItems(dataItem1, dataItem2, columnHeaderSortOutputs);\r\n        });\r\n\r\n        // build fixed header columns\r\n        $('<tr>')\r\n            .append(_.chain(settings.rowHeaders)\r\n                .reject(function (header) {\r\n                    return header.hide;\r\n                })\r\n                .map(function (rowHeader) {\r\n                    var $label = $('<span />')\r\n                        .text(rowHeader.label);\r\n\r\n                    if (self.data.fixedColumnHeaderTextOrientation === 'vertical') {\r\n                        $label.addClass('vertical-matrix-header');\r\n\r\n                        if (self.data.enableHeadersHeight)\r\n                            $label.css('height', self.data.headersHeight + 'px');\r\n                    }\r\n\r\n\r\n                    return $('<th>')\r\n                        .append($label);\r\n                })\r\n                .value())\r\n            .appendTo(this.$fixedHeaders);\r\n\r\n        // build dynamic header columns\r\n        $('<tr>')\r\n            .append(_.map(columnKeysSorted, function(columnHeaderKey) {\r\n                var columnHeaderGroup = uniqueColumnHeaderGroups[columnHeaderKey];\r\n                var columnHeaderData = columnHeaderGroup[0];\r\n\r\n                var headerText =\r\n                    _.chain(settings.columnHeaders)\r\n                        .filter(function(columnHeaderSettings) { return !columnHeaderSettings.hide; })\r\n                        .pluck('output')\r\n                        .map(function(visibleColumnHeaderOutput) { return columnHeaderData[visibleColumnHeaderOutput]; })\r\n                        .value()\r\n                        .join(' ');\r\n\r\n                var $label = $('<span />')\r\n                    .text(headerText);\r\n\r\n                if (self.data.columnHeaderTextOrientation === 'vertical') {\r\n                    $label.addClass('vertical-matrix-header');\r\n\r\n                    if (self.data.enableHeadersHeight)\r\n                        $label.css('height', self.data.headersHeight + 'px');\r\n                }\r\n\r\n                return $('<th>')\r\n                    .append($label);\r\n            }))\r\n            .appendTo(this.$dynamicHeaders);\r\n\r\n        // build rows with data\r\n        var rowHeaderOutputs = _.pluck(settings.rowHeaders, 'output');\r\n        var rowHeaderSortOutputs = _.compact(_.pluck(settings.rowHeadersSort, 'output'))\r\n            .concat(rowHeaderOutputs);\r\n        var rowKeysSorted = _.keys(uniqueRowHeaderGroups).sort(function (key1, key2) {\r\n            var dataItem1 = uniqueRowHeaderGroups[key1][0];\r\n            var dataItem2 = uniqueRowHeaderGroups[key2][0];\r\n            return self.compareDataItems(dataItem1, dataItem2, rowHeaderSortOutputs);\r\n        });\r\n\r\n        var clickEventData = this.getEventDataFor('clicked');\r\n        var fixedColumnClickEventData = this.getEventDataFor('fixedColumnClicked');\r\n\r\n        _.each(rowKeysSorted, function (rowHeaderKey) {\r\n            var rowHeaderGroup = uniqueRowHeaderGroups[rowHeaderKey];\r\n            var firstItemInRowGroup = rowHeaderGroup[0];\r\n\r\n            // build fixed row\r\n            $('<tr>')\r\n                .append(_.map(visibleRowHeaders, function (rowHeader) {\r\n                    var fixColumnContent = firstItemInRowGroup[rowHeader.output];\r\n                    var $fixedColumnCell = $('<td>')\r\n                        .text(fixColumnContent);\r\n\r\n                    var currentFixedColumnEventArg = settings.eventArgFixedColumn ? firstItemInRowGroup[settings.eventArgFixedColumn] : null;\r\n                    self.applyEventTrigger('fixedColumnClicked', 'click', $fixedColumnCell, currentFixedColumnEventArg);\r\n\r\n                    if (fixedColumnClickEventData.enabled)\r\n                        $fixedColumnCell.addClass('clickable');\r\n\r\n                    return $fixedColumnCell;\r\n                }))\r\n                .appendTo(self.$fixedRows);\r\n\r\n            // build dynamic row\r\n            $('<tr>')\r\n                .append(_.map(columnKeysSorted, function (columnHeaderKey) {\r\n                    // TODO: check/improve performance of data item lookup\r\n                    var dataItem = _.find(rowHeaderGroup, function (rowGroupItem) { return self.getColumnKey(rowGroupItem) === columnHeaderKey; });\r\n                    var $tableCell = $('<td>')\r\n                        .css('text-align', self.data.columnContentAlignment)\r\n                        .text(dataItem && dataItem[settings.dataItems[0].output] || '');\r\n\r\n                    var currentBackgroundColor = dataItem && dataItem[settings.backgroundColorOutput];\r\n                    if (currentBackgroundColor) {\r\n                        $tableCell.css('background-color', currentBackgroundColor);\r\n                    }\r\n\r\n                    var currentTooltip = dataItem && dataItem[settings.tooltipOutput];\r\n                    if (currentTooltip)\r\n                        $tableCell.attr('title', html.strip(currentTooltip));\r\n\r\n                    var currentEventArg = dataItem && dataItem[settings.eventArg];\r\n\r\n                    new OnLongPress().applyLongPressOnElement($tableCell, self, currentEventArg);\r\n\r\n                    if (clickEventData.enabled && (currentEventArg !== undefined || !settings.eventArg) || self.isEventEnabled('onLongPress')) {\r\n                        $tableCell.addClass('clickable');\r\n                    }\r\n\r\n                    return $tableCell;\r\n                }))\r\n                .appendTo(self.$dynamicRows);\r\n        });\r\n\r\n        this.$element\r\n            .append(this.$matrix);\r\n\r\n        if (data.results.length > 0)\r\n            this.postUpdate();\r\n\r\n        if (data.totalResults > data.results.length)\r\n            this.renderLoadMoreButton(columnKeysSorted.length);\r\n    };\r\n\r\n    Matrix.prototype.postUpdate = function () {\r\n        matrixTablesSynchronizer.syncFor(this);\r\n\r\n        this.$dynamicHeadersWrapper\r\n            .css('margin-left', this.$fixedHeadersWrapper.outerWidth() + 'px');\r\n\r\n        this.$dynamicRowsWrapper\r\n            .css({\r\n                top: this.$dynamicHeadersWrapper.outerHeight() + 'px',\r\n                left: this.$fixedHeadersWrapper.outerWidth() + 'px'\r\n            });\r\n\r\n        this.$fixedRowsWrapper\r\n            .css({\r\n                top: this.$dynamicHeadersWrapper.outerHeight() + 'px',\r\n                width: this.$fixedHeadersWrapper.outerWidth() + 'px'\r\n            })\r\n            .scrollTop(0);\r\n\r\n        this.$dynamicHeadersWrapper.scrollLeft(0);\r\n    };\r\n\r\n    Matrix.prototype.renderLoadMoreButton = function (numberOfDynamicColumns) {\r\n        var self = this;\r\n        var $loadMoreRow = $('<tr>')\r\n            .appendTo(this.$dynamicRows);\r\n        var $loadMoreCell = $('<td>')\r\n            .attr('colspan', numberOfDynamicColumns)\r\n            .appendTo($loadMoreRow);\r\n        this.$loadMoreButton = $('<span>')\r\n            .addClass('paging-button clickable')\r\n            .text(this.data.nextPageText || 'Load more...')\r\n            .on('click', function () { self.loadNextPage(); })\r\n            .appendTo($loadMoreCell);\r\n        Style.renderStyles(this, null, this.$loadMoreButton, this.data.nextPageStyle);\r\n    };\r\n\r\n    Matrix.prototype.loadNextPage = function () {\r\n        if (this.loading)\r\n            return;\r\n        this.loading = true;\r\n        //self.renderPreloader(); // maybe?\r\n\r\n        var self = this;\r\n        this.piping.queryDispatcher.dispatch(\r\n            self.data.dataSource,\r\n            function (newData) {\r\n                self.loadedPages++;\r\n                self.loading = false;\r\n                //self.removePreloader(); // maybe?\r\n                var allResults = self.allData.results.concat(newData.results);\r\n                _.extend(self.allData, newData, { results: allResults });\r\n                self.update(self.allData);\r\n            },\r\n            function (params) {\r\n                self.decorateDataSourceData(params, self.loadedPages);\r\n            },\r\n            function (error) {\r\n                self.loading = false;\r\n                //self.removePreloader(); // maybe?\r\n            });\r\n    };\r\n\r\n    var KEY_SEPARATOR = '$';\r\n\r\n    var getKey = function (resultItem, fieldNames) {\r\n        var headerData = _.map(fieldNames, function(headerField) {\r\n            return resultItem[headerField];\r\n        });\r\n        return headerData.join(KEY_SEPARATOR);\r\n    };\r\n\r\n    Matrix.prototype.getRowKey = function (resultItem) {\r\n        var rowHeaderOutputs = _.pluck(this.data.rowHeaders, 'output');\r\n        return getKey(resultItem, rowHeaderOutputs);\r\n    };\r\n\r\n    Matrix.prototype.getColumnKey = function (resultItem) {\r\n        var columnHeaderOutputs = _.pluck(this.data.columnHeaders, 'output');\r\n        return getKey(resultItem, columnHeaderOutputs);\r\n    };\r\n\r\n    Matrix.prototype.compareDataItems = function (dataItem1, dataItem2, fieldsToCompare) {\r\n        return _.reduce(fieldsToCompare, function (previousResult, fieldName) {\r\n            if (previousResult !== 0)\r\n                return previousResult;\r\n\r\n            if (dataItem1[fieldName] === dataItem2[fieldName])\r\n                return 0;\r\n\r\n            return dataItem1[fieldName] < dataItem2[fieldName] ? -1 : 1;\r\n        }, 0);\r\n    };\r\n\r\n    return Matrix;\r\n});\n","define('drops/milestones/milestones',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/util'\r\n], function ($, Drop, util) {\r\n    'use strict';\r\n\r\n    var ctx;\r\n\r\n    function Milestones(options) {\r\n        Drop.call(this, $('<div/>'), options);\r\n        var self = this;\r\n\r\n        self.data.eventing = util.convertListOfKeyValuesToObject(self.data.eventing);\r\n        \r\n        self.milestonesList = [];\r\n        self.selectedDataSourceOutput = '';\r\n        self.TimeLine = new Object();\r\n        self.currentDateRec = null;\r\n        self.selectedData = null;\r\n        self.timeLineFormats = [\"Jaren\", \"Kwartalen\", \"Maanden\", \"Weken\", \"Dagen (maandbasis)\", \"Dagen (weekbasis)\"];\r\n        self.rectTopList = [];\r\n        self.rectBottomList = [];\r\n        self.beschrijvingList = [];\r\n\r\n        self.$element\r\n            .addClass('boxToBorderSize')\r\n            .css({\r\n                overflowX: 'auto',\r\n                overflowY: 'hidden',\r\n                'background-color': self.data.color\r\n            });\r\n        \r\n        self.$dropDown = $('<select />')\r\n            .on('change', function (value) {\r\n                self.data.selectedFormat = self.$dropDown.val();\r\n                self.resizeCanvas();\r\n                self.buildTimeLine();\r\n                self._render();\r\n            })\r\n            .css({\r\n                position: \"absolute\",\r\n                top: \"5px\",\r\n                left: \"20px\",\r\n                margin: 0,\r\n                padding: 0\r\n            })\r\n            .appendTo(self.$element);\r\n\r\n        self._canvas = $('<canvas />')\r\n            .appendTo(self.$element);\r\n        \r\n        for (var i = 0; i < self.timeLineFormats.length; i++) {\r\n            var $dropDown = $('<option />')\r\n                .val(self.timeLineFormats[i])\r\n                .text(self.timeLineFormats[i])\r\n                .appendTo(self.$dropDown);\r\n            if (self.data.selectedFormat === self.timeLineFormats[i]) {\r\n                $dropDown.prop('selected', true);\r\n            }\r\n        }\r\n    };\r\n\r\n    Drop.extend(Milestones, Drop);\r\n\r\n    Milestones.typeName = 'Milestones';\r\n\r\n    Milestones.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n\r\n        var self = this;\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.dataSource,\r\n            function(data) {\r\n                self.update(data);\r\n            });\r\n\r\n        this.formatter = this.piping.formatting.createFormatter();\r\n        this.applyPosition();\r\n    };\r\n\r\n    Milestones.prototype.postRender = function () {\r\n        this.buildCanvas();\r\n    };\r\n\r\n    Milestones.prototype.update = function (update) {\r\n        var self = this;\r\n        \r\n        var result = [];\r\n        for (var i = 0; i < update.results.length; i++) {\r\n            var dataItem = update.results[i];\r\n            var milestone = {\r\n                id: dataItem[self.data.idOutput],\r\n                naam: dataItem[self.data.naamOutput],\r\n                beschrijving: dataItem[self.data.beschrijvingOutput],\r\n                datumPlanning: dataItem[self.data.datumPlanningOutput] ? self.formatter.parseLicquidDate(dataItem[self.data.datumPlanningOutput]) : null,\r\n                datumWerkelijk: dataItem[self.data.datumWerkelijkOutput] ? self.formatter.parseLicquidDate(dataItem[self.data.datumWerkelijkOutput]) : null\r\n            };\r\n            result.push(milestone);\r\n        }\r\n        self.milestonesList = result;\r\n        for (var j = 0; j < self.milestonesList.length; j++) {\r\n            if (self.milestonesList[j].datumPlanning)\r\n                self.milestonesList[j].datumPlanning.setHours(12);\r\n            if (self.milestonesList[j].datumWerkelijk)\r\n                self.milestonesList[j].datumWerkelijk.setHours(12);\r\n        }\r\n\r\n        self.buildTimeLine();\r\n        self._render();\r\n    };\r\n\r\n    Milestones.prototype._getMinAndMaxDate = function () {\r\n        var self = this;\r\n        \r\n        var msl = self.milestonesList;\r\n        var smallest = Number.MAX_VALUE;\r\n        var largest = Number.MIN_VALUE;\r\n\r\n        for (var i = 0; i < msl.length; i++) {\r\n            var milestone = msl[i];\r\n\r\n            if (milestone.datumPlanning) {\r\n                smallest = Math.min(smallest, milestone.datumPlanning.getTime());\r\n                largest = Math.max(largest, milestone.datumPlanning.getTime());\r\n            }\r\n            \r\n            if (milestone.datumWerkelijk) {\r\n                smallest = Math.min(smallest, milestone.datumWerkelijk.getTime());\r\n                largest = Math.max(largest, milestone.datumWerkelijk.getTime());\r\n            }\r\n        }\r\n        return { min: new Date(smallest), max: new Date(largest) };\r\n    };\r\n\r\n    Milestones.prototype.buildTimeLine = function () {\r\n        var self = this;\r\n        var minMax = self._getMinAndMaxDate();\r\n        var smallest = minMax.min;\r\n        var largest = minMax.max;\r\n\r\n\r\n        self.TimeLine.cellText = [];\r\n        self.TimeLine.dates = [];\r\n       \r\n        switch (self.data.selectedFormat) {\r\n            case 'Jaren':\r\n                smallest = new Date(smallest.getFullYear(), 0);\r\n                l = parseInt(largest.getFullYear() + 1);\r\n                self.TimeLine.amount = l - smallest.getFullYear();\r\n                largest = new Date(l, 0);\r\n\r\n                for (var j = 0; j < self.TimeLine.amount; j++) {\r\n                    self.TimeLine.cellText[j] = smallest.getFullYear() + j;\r\n                }\r\n                break;\r\n\r\n            case 'Kwartalen':\r\n                smallest = new Date(smallest.getFullYear(), 0);\r\n                l = parseInt(largest.getFullYear() + 1);\r\n                self.getYears(smallest, l);\r\n\r\n                var l = parseInt(largest.getFullYear() + 1);\r\n                self.TimeLine.amount = (l * 4) - (smallest.getFullYear() * 4);\r\n                largest = new Date(l, 0);\r\n\r\n                var f = 0;\r\n                for (var j = 0; j < self.TimeLine.amount; j++) {\r\n                    if (f === 4)\r\n                        f = 0;\r\n                    f++;\r\n                    self.TimeLine.cellText[j] = 'Q' + (f);\r\n                }\r\n                break;\r\n\r\n            case 'Maanden':\r\n                smallest = new Date(smallest.getFullYear(), smallest.getMonth());\r\n                largest = new Date(largest.getFullYear(), largest.getMonth() + 1);\r\n                self.getYears(smallest, parseInt(largest.getFullYear() + 1), largest);\r\n\r\n                self.TimeLine.amount = (largest.getMonth() - smallest.getMonth()) + (12 * (largest.getFullYear() - smallest.getFullYear()));\r\n\r\n                for (var m = 0; m < self.TimeLine.amount; m++) {\r\n                    var monthText = self.getMonthText(new Date(smallest.getFullYear(), smallest.getMonth() + m).getMonth());\r\n\r\n                    self.TimeLine.cellText[m] = monthText.letter;\r\n                }\r\n                break;\r\n\r\n            case 'Weken':\r\n                smallest = new Date(smallest.getFullYear(), smallest.getMonth(), smallest.getDate() - smallest.getDay());\r\n                largest = new Date(largest.getFullYear(), largest.getMonth(), largest.getDate() + 7 - largest.getDay());\r\n                self.getYears(smallest, parseInt(largest.getFullYear() + 1), largest);\r\n                self.TimeLine.amount = Math.round((largest / (1000 * 60 * 60 * 24 * 7))) - Math.round((smallest / (1000 * 60 * 60 * 24 * 7)));\r\n                self.calcWeeks(smallest);\r\n                break;\r\n\r\n            case 'Dagen (maandbasis)':\r\n                smallest = new Date(smallest.getFullYear(), smallest.getMonth(), smallest.getDate());\r\n                largest = new Date(largest.getFullYear(), largest.getMonth(), largest.getDate() + 1);\r\n                self.getMonths(smallest, largest);\r\n                self.TimeLine.amount = Math.round((largest / (1000 * 60 * 60 * 24))) - Math.round((smallest / (1000 * 60 * 60 * 24)));\r\n\r\n                for (var n = 0; n < self.TimeLine.amount; n++) {\r\n                    self.TimeLine.cellText[n] = new Date(smallest.getFullYear(), smallest.getMonth(), smallest.getDate() + n).getDate();\r\n                }\r\n                break;\r\n\r\n            case 'Dagen (weekbasis)':\r\n                smallest = new Date(smallest.getFullYear(), smallest.getMonth(), smallest.getDate());\r\n                largest = new Date(largest.getFullYear(), largest.getMonth(), largest.getDate() + 1);\r\n                self.TimeLine.amount = Math.round((largest / (1000 * 60 * 60 * 24))) - Math.round((smallest / (1000 * 60 * 60 * 24)));\r\n                self.getWeeks(smallest, largest);\r\n                for (var n = 0; n < self.TimeLine.amount; n++) {\r\n                    self.TimeLine.cellText[n] = self.getWeekDayText(new Date(smallest.getFullYear(), smallest.getMonth(), (smallest.getDate() + n)).getDay());\r\n                }\r\n                break;\r\n\r\n            default:\r\n        }\r\n\r\n        self.TimeLine.largestDate = largest;\r\n        self.TimeLine.smallestDate = smallest;\r\n        self.TimeLine.lineWidth = 25;\r\n\r\n        self.buildCells();\r\n    };\r\n\r\n    Milestones.prototype.getMonths = function (smallest, largest) {\r\n        var self = this;\r\n        var months = (largest.getMonth() - smallest.getMonth()) + (12 * (largest.getFullYear() - smallest.getFullYear())) + 1;\r\n\r\n        for (var i = 0; i < months; i++) {\r\n            var low = new Date(smallest.getFullYear(), smallest.getMonth() + i);\r\n            var high = new Date(smallest.getFullYear(), smallest.getMonth() + i + 1, 0, 0, -1);\r\n\r\n            if (low.getTime() < smallest.getTime())\r\n                low = smallest;\r\n            if (largest.getTime() < high.getTime())\r\n                high = largest;\r\n\r\n            var monthText = self.getMonthText(low.getMonth());\r\n            var date = {\r\n                text: (monthText.text + ' ' + low.getFullYear()),\r\n                low: low,\r\n                high: high\r\n            };\r\n            self.TimeLine.dates[i] = date;\r\n\r\n\r\n        }\r\n    };\r\n\r\n\r\n\r\n    Milestones.prototype.getYears = function (s, l, largest) {\r\n        var self = this;\r\n        var years = l - s.getFullYear();\r\n\r\n        for (var k = 0; k < years; k++) {\r\n            var low = new Date(s.getFullYear() + k, 0);\r\n            var high = new Date(s.getFullYear() + k + 1, 0, 0, 0, -1);\r\n            if (low.getTime() < s.getTime())\r\n                low = s;\r\n\r\n            if (largest) {\r\n                if (largest.getTime() < high.getTime()) {\r\n                    high = largest;\r\n                }\r\n            }\r\n            var date = {\r\n                text: s.getFullYear() + k,\r\n                low: low,\r\n                high: high\r\n            };\r\n\r\n            self.TimeLine.dates[k] = date;\r\n        }\r\n    };\r\n\r\n    Milestones.prototype.getWeeks = function (smallest, largest) {\r\n        var self = this;\r\n\r\n        var s = new Date(smallest.getFullYear(), smallest.getMonth(), smallest.getDate() - smallest.getDay());\r\n        var day = new Date(s.getFullYear(), 0).getDay();\r\n        var year = new Date(s.getFullYear(), 0, 1 - day);\r\n        var week = Math.round(s / (1000 * 60 * 60 * 24 * 7)) - Math.round((year / (1000 * 60 * 60 * 24 * 7)));\r\n        var amount = Math.round((largest / (1000 * 60 * 60 * 24 * 7))) - Math.round((smallest / (1000 * 60 * 60 * 24 * 7))) + 1;\r\n        for (var i = 0; i < amount; i++) {\r\n            if (week > 52 || week === 0)\r\n                week = 1;\r\n            var low = new Date(s.getFullYear(), s.getMonth(), s.getDate() + (i * 7));\r\n            var high = new Date(s.getFullYear(), s.getMonth(), s.getDate() + ((i + 1) * 7));\r\n\r\n            if (low.getTime() < smallest.getTime())\r\n                low = smallest;\r\n            if (high.getTime() > largest.getTime())\r\n                high = largest;\r\n\r\n            var date = {\r\n                text: week + '/' + new Date(s.getFullYear(), s.getMonth(), s.getDate() + (i * 7)).getFullYear(),\r\n                low: low,\r\n                high: high\r\n\r\n            };\r\n            self.TimeLine.dates[i] = date;\r\n            week++;\r\n        }\r\n\r\n    };\r\n\r\n    Milestones.prototype.calcWeeks = function (smallest) {\r\n        var self = this;\r\n        var day = new Date(smallest.getFullYear(), 0).getDay();\r\n        var year = new Date(smallest.getFullYear(), 0, 1 - day);\r\n        var smallestDate = new Date(smallest.getFullYear(), smallest.getMonth(), smallest.getDate());\r\n        var week = Math.round(smallestDate / (1000 * 60 * 60 * 24 * 7)) - Math.round((year / (1000 * 60 * 60 * 24 * 7)));\r\n        for (var i = 0; i < self.TimeLine.amount; i++) {\r\n            if (week > 52 || week === 0)\r\n                week = 1;\r\n\r\n            self.TimeLine.cellText[i] = week;\r\n            week++;\r\n        }\r\n    };\r\n\r\n    Milestones.prototype.buildCells = function () {\r\n        var self = this;\r\n\r\n        self.resizeCanvas();\r\n        self.TimeLine.cells = [];\r\n        for (var i = 0; i < self.TimeLine.amount; i++) {\r\n            var cell = {\r\n                text: self.TimeLine.cellText[i],\r\n                fontSizeLimit: '12',\r\n                milestonesPlanning: [],\r\n                milestonesWerkelijk: [],\r\n                colorStroke: \"rgba(20,20,20,1)\",\r\n                colorFill: \"rgba(240,240,240,1)\"\r\n            };\r\n\r\n            self.TimeLine.cells[i] = cell;\r\n        }\r\n    };\r\n\r\n    Milestones.prototype.canvasClick = function (e) {\r\n        var self = this;\r\n        var pos = { x: e.offsetX, y: e.offsetY };\r\n        var done = false;\r\n\r\n        if (!done && self.beschrijvingList.length > 0) {\r\n            done = self.toggleDescription(self.beschrijvingList, pos, 'close');\r\n        }\r\n        if (!done && self.rectTopList.length > 0) {\r\n            done = self.toggleDescription(self.rectTopList, pos, 'build');\r\n        }\r\n        if (!done && self.rectBottomList.length > 0) {\r\n            self.toggleDescription(self.rectBottomList, pos, 'build');\r\n        }\r\n        self.drawAll();\r\n    };\r\n\r\n    Milestones.prototype.resizeCanvas = function () {\r\n        var self = this;\r\n        if (!self._canvas || self._canvas === undefined)\r\n            return;\r\n\r\n        self._canvas.width = self.data.size.x;\r\n        self._canvas.height = self.data.size.y;\r\n\r\n        var width = self.TimeLine.amount * self.canvasCellWidth(self.selectedFormat);\r\n        if (width > 14000)\r\n            width = 14000;\r\n\r\n        if (width > self.data.size.x)\r\n            self._canvas.width = width;\r\n\r\n        self._canvas.attr('height', self._canvas.height)\r\n        self._canvas.attr('width',self._canvas.width)\r\n    };\r\n\r\n    Milestones.prototype.buildCanvas = function () {\r\n        var self = this;\r\n\r\n        self._canvas.on('click', function (e) {\r\n            self.canvasClick(e);\r\n        });\r\n\r\n        self.resizeCanvas();\r\n\r\n        ctx = self._canvas[0].getContext(\"2d\");\r\n    };\r\n\r\n\r\n    Milestones.prototype._render = function () {\r\n        var self = this;\r\n        if (!self._canvas || self._canvas === undefined)\r\n            return;\r\n\r\n        var buffer = 100;\r\n        self.TimeLine.buffer = buffer;\r\n\r\n        var cellWidth = ((self._canvas.width) - (buffer * 2)) / self.TimeLine.amount;\r\n        for (var i = 0; i < self.TimeLine.amount; i++) {\r\n            self.TimeLine.cells[i].x = buffer + i * (cellWidth);\r\n            self.TimeLine.cells[i].y = self._canvas.height / 2 - self.TimeLine.lineWidth / 2;\r\n            self.TimeLine.cells[i].w = cellWidth;\r\n            self.TimeLine.cells[i].h = self.TimeLine.lineWidth;\r\n\r\n            self.TimeLine.cells[i].loc = self.TimeLine.cells[i].x + (self.TimeLine.cells[i].w / 2);\r\n\r\n        }\r\n        self.buildMilestones();\r\n        self.buildCurrentDate();\r\n        self.buildTimeLineDates();\r\n        self.drawAll();\r\n\r\n    };\r\n\r\n    Milestones.prototype.buildCurrentDate = function () {\r\n        var self = this;\r\n        var currentDate = new Date();\r\n        if (currentDate <= self.TimeLine.largestDate && currentDate >= self.TimeLine.smallestDate) {\r\n            var locCurrentDate = self.getLoc(currentDate);\r\n            var rectC = {\r\n                text: \"Current Date\",\r\n                date: currentDate.toLocaleDateString(),\r\n                x: locCurrentDate - (ctx.measureText(\"Current Date\").width / 2) - 15,\r\n                y: self._canvas.height / 2.9,\r\n                w: ctx.measureText(\"Current Date\").width + 30,\r\n                h: self._canvas.height / 12,\r\n                colorFill: \"rgba(240,240,240,1)\",\r\n                colorStroke: \"rgba(190,90,90,1)\",\r\n                fontSizeLimit: 11\r\n            };\r\n            self.currentDateRec = { rec: rectC, loc: locCurrentDate };\r\n        } else {\r\n            self.currentDateRec = null;\r\n        }\r\n    };\r\n\r\n    Milestones.prototype.buildTimeLineDates = function () {\r\n        var self = this;\r\n        if (self.TimeLine.dates[0] === undefined || self.TimeLine.dates[0] === null)\r\n            return;\r\n\r\n        for (var i = 0; i < self.TimeLine.dates.length; i++) {\r\n            var date = self.TimeLine.dates[i];\r\n            var low = self.getLoc(date.low);\r\n            var high = self.getLoc(date.high);\r\n            self.TimeLine.dates[i].loc = Math.round((low + high) / 2);\r\n        }\r\n    };\r\n\r\n    Milestones.prototype.getLoc = function (date) {\r\n        var self = this;\r\n        var loc;\r\n        var width = self._canvas.width - (self.TimeLine.buffer * 2);\r\n\r\n        loc = width / ((self.TimeLine.largestDate.getTime() - self.TimeLine.smallestDate.getTime()) / (date.getTime() - self.TimeLine.smallestDate.getTime()));\r\n        loc += self.TimeLine.buffer;\r\n        return loc;\r\n    };\r\n\r\n    Milestones.prototype.toggleDescription = function (rl, pos, action) {\r\n        var self = this;\r\n        for (var i = rl.length - 1; i >= 0; i--) {\r\n            if (pos.x >= rl[i].x && pos.x <= (rl[i].x + rl[i].w) &&\r\n\t\t\t\tpos.y >= rl[i].y && pos.y <= (rl[i].y + rl[i].h)) {\r\n\r\n                if (rl !== self.beschrijvingList) {\r\n                    var id = rl[i].id;\r\n                    self.triggerEvent(self.data.eventing.clicked.raisedEventName, id);\r\n                }\r\n\r\n                if (action === 'build') {\r\n\r\n                    for (var j = 0; j < self.beschrijvingList.length; j++) {\r\n                        if (self.beschrijvingList[j].rec === rl[i])\r\n                            return false;\r\n                    }\r\n\r\n                    if (rl[i].beschrijving === undefined || rl[i].beschrijving === \"\")\r\n                        return false;\r\n\r\n                    ctx.font = 12 + 'px Tahoma';\r\n\r\n                    var text = rl[i].beschrijving ? rl[i].beschrijving.split(/[\\n\\s]/) : '';\r\n\r\n                    var beschrijving = [];\r\n                    var maxWidth = rl[i].w + 20;\r\n                    var y = rl[i].y;\r\n                    var index = 0;\r\n\r\n                    beschrijving[index] = 'Beschrijving:';\r\n                    index++;\r\n                    beschrijving[index] = '';\r\n                    for (var k = 0; k < text.length; k++) {\r\n\r\n                        if (ctx.measureText(beschrijving[index]).width >= maxWidth) {\r\n                            index++;\r\n                            beschrijving[index] = '';\r\n                        }\r\n                        beschrijving[index] += text[k] + \" \";\r\n                    }\r\n\r\n                    var rectDescr = {\r\n                        text: beschrijving,\r\n                        x: rl[i].x - 30,\r\n                        y: y,\r\n                        w: maxWidth + 40,\r\n                        h: 25 * beschrijving.length,\r\n                        colorFill: \"rgba(240,240,240,0.95)\",\r\n                        colorStroke: \"rgba(0,0,110,1)\",\r\n                        rec: rl[i]\r\n                    };\r\n\r\n                    if (rectDescr.h + y > self._canvas.height) {\r\n\r\n                        var overflowY = (rectDescr.h + y) - self._canvas.height;\r\n                        rectDescr.y = y - overflowY;\r\n                    }\r\n\r\n                    if (rectDescr.x < 0)\r\n                        rectDescr.x = 0;\r\n\r\n                    if (rectDescr.x + rectDescr.w > self._canvas.width) {\r\n                        var overflowX = (rectDescr.w + rl[i].x) - self._canvas.width;\r\n                        rectDescr.x = rl[i].x - overflowX;\r\n                    }\r\n\r\n                    self.beschrijvingList.push(rectDescr);\r\n                    return true;\r\n                }\r\n                else if (action === 'close') {\r\n                    self.beschrijvingList.splice(i, 1);\r\n                    return true;\r\n                }\r\n            }\r\n        }\r\n        return false;\r\n    };\r\n\r\n    Milestones.prototype.buildMilestones = function () {\r\n        var self = this;\r\n        ctx.lineWidth = 1;\r\n        self.rectTopList = [];\r\n        self.milestonesList.forEach(function (milestone) {\r\n            if (milestone.datumPlanning == null)\r\n                return;\r\n\r\n            var locPlanning = self.getLoc(milestone.datumPlanning);\r\n\r\n            var w;\r\n\r\n            if (milestone.naam === \"\" || milestone.naam === undefined)\r\n                w = ctx.measureText(milestone.datumPlanning.toLocaleDateString()).width + 40;\r\n            else\r\n                w = (ctx.measureText(milestone.naam).width) + 40;\r\n\r\n\r\n            var rectPlanning = {\r\n                id: milestone.id,\r\n                text: milestone.naam,\r\n                beschrijving: milestone.beschrijving,\r\n                date: milestone.datumPlanning.toLocaleDateString(),\r\n                x: (locPlanning - w / 2),\r\n                y: self._canvas.height / 4,\r\n                w: w,\r\n                h: self._canvas.height / 12,\r\n                location: locPlanning,\r\n                colorFill: \"rgba(240,240,245,1)\",\r\n                colorStroke: \"rgba(0,0,110,1)\",\r\n                type: 'p',\r\n                fontSizeLimit: 10,\r\n                yIndex: 1\r\n            };\r\n\r\n            self.rectTopList.push(rectPlanning);\r\n            if (self.rectTopList.length > 0) {\r\n                self.detectCollision(self.rectTopList, rectPlanning);\r\n            }\r\n        });\r\n\r\n        self.rectBottomList = [];\r\n        self.milestonesList.forEach(function (milestone) {\r\n            if (milestone.datumWerkelijk == null)\r\n                return;\r\n\r\n            var locWerkelijk = self.getLoc(milestone.datumWerkelijk);\r\n\r\n            var w;\r\n\r\n            if (milestone.naam === \"\" || milestone.naam === undefined)\r\n                w = ctx.measureText(milestone.datumWerkelijk.toLocaleDateString()).width + 40;\r\n            else\r\n                w = (ctx.measureText(milestone.naam).width) + 40;\r\n\r\n\r\n\r\n            var rectWerkelijk = {\r\n                id: milestone.id,\r\n                text: milestone.naam,\r\n                beschrijving: milestone.beschrijving,\r\n                date: milestone.datumWerkelijk.toLocaleDateString(),\r\n                location: locWerkelijk,\r\n                x: (locWerkelijk - w / 2),\r\n                y: self._canvas.height - (self._canvas.height / 2.5),\r\n                w: w,\r\n                h: self._canvas.height / 12,\r\n                colorFill: \"rgba(255,245,240,1)\",\r\n                colorStroke: \"rgba(160,0,0,1)\",\r\n                type: 'w',\r\n                fontSizeLimit: 10,\r\n                yIndex: 1\r\n            };\r\n\r\n            self.rectBottomList.push(rectWerkelijk);\r\n            if (self.rectBottomList.length > 0) {\r\n                self.detectCollision(self.rectBottomList, rectWerkelijk);\r\n            }\r\n        });\r\n    };\r\n\r\n    Milestones.prototype.getMonthText = function (mnr) {\r\n        switch (mnr) {\r\n            case 0:\r\n                return { letter: 'J', text: 'Januari' };\r\n            case 1:\r\n                return { letter: 'F', text: 'Februari' };\r\n            case 2:\r\n                return { letter: 'M', text: 'Maart' };\r\n            case 3:\r\n                return { letter: 'A', text: 'April' };\r\n            case 4:\r\n                return { letter: 'M', text: 'Mei' };\r\n            case 5:\r\n                return { letter: 'J', text: 'Juni' };\r\n            case 6:\r\n                return { letter: 'J', text: 'Juli' };\r\n            case 7:\r\n                return { letter: 'A', text: 'Augustus' };\r\n            case 8:\r\n                return { letter: 'S', text: 'September' };\r\n            case 9:\r\n                return { letter: 'O', text: 'Oktober' };\r\n            case 10:\r\n                return { letter: 'N', text: 'November' };\r\n            case 11:\r\n                return { letter: 'D', text: 'December' };\r\n            default:\r\n        }\r\n    };\r\n\r\n    Milestones.prototype.getWeekDayText = function (wknr) {\r\n        switch (wknr) {\r\n            case 1:\r\n                return 'M';\r\n            case 2:\r\n                return 'D';\r\n            case 3:\r\n                return 'W';\r\n            case 4:\r\n                return 'D';\r\n            case 5:\r\n                return 'V';\r\n            default:\r\n                return 'Z';\r\n        }\r\n    };\r\n\r\n    Milestones.prototype.detectCollision = function (rectlist, rect) {\r\n        var self = this;\r\n        var y = rect.y;\r\n        for (var s = rectlist.length - 1; s >= 0; s--) {\r\n\r\n            var r2 = rectlist[s];\r\n\r\n            if ((rect.x <= (r2.x + r2.w)) && (r2.x <= (rect.x + rect.w)) && r2 !== rect) {\r\n                switch (r2.yIndex) {\r\n                    case 1:\r\n                        rect.yIndex = 2;\r\n                        if (rect.type == 'p')\r\n                            rect.y = r2.y - r2.h - (self._canvas.height / 50);\r\n\r\n                        else\r\n                            rect.y = r2.y + r2.h + (self._canvas.height / 50);\r\n                        break;\r\n                    case 2:\r\n                        rect.yIndex = 3;\r\n\r\n                        if (rect.type == 'p')\r\n                            rect.y = r2.y - r2.h - (self._canvas.height / 50);\r\n                        else\r\n                            rect.y = r2.y + r2.h + (self._canvas.height / 50);\r\n                        break;\r\n                    case 3:\r\n                        rect.yIndex = 1;\r\n                        rect.y = y;\r\n\r\n                        break;\r\n                    default:\r\n                        break;\r\n                }\r\n                break;\r\n            }\r\n        }\r\n    };\r\n\r\n\r\n    Milestones.prototype.drawAll = function () {\r\n        var self = this;\r\n        self.clearCanvas();\r\n        if (self.currentDateRec)\r\n            self.drawLine(self.currentDateRec.rec, self.currentDateRec.loc);\r\n\r\n        for (var o = 0; o < self.TimeLine.dates.length; o++) {\r\n            self.drawDate(self.TimeLine.dates[o]);\r\n        }\r\n        for (var n = 0; n < self.TimeLine.cells.length; n++) {\r\n            self.drawBox(self.TimeLine.cells[n]);\r\n        }\r\n        for (var i = 0; i < self.rectTopList.length; i++)\r\n            self.drawLine(self.rectTopList[i], self.rectTopList[i].location);\r\n\r\n        for (var j = 0; j < self.rectTopList.length; j++)\r\n            self.drawBox(self.rectTopList[j], self.rectTopList[j].location);\r\n\r\n        for (var k = 0; k < self.rectBottomList.length; k++)\r\n            self.drawLine(self.rectBottomList[k], self.rectBottomList[k].location);\r\n\r\n        for (var l = 0; l < self.rectBottomList.length; l++)\r\n            self.drawBox(self.rectBottomList[l], self.rectBottomList[l].location);\r\n\r\n        if (self.currentDateRec) {\r\n            self.drawBox(self.currentDateRec.rec, self.currentDateRec.loc);\r\n        }\r\n        for (var m = 0; m < self.beschrijvingList.length; m++)\r\n            self.drawDescription(self.beschrijvingList[m]);\r\n\r\n    };\r\n\r\n    Milestones.prototype.drawDate = function (date) {\r\n        var self = this;\r\n        ctx.fillStyle = \"rgba(20,20,20,1)\";\r\n        ctx.strokeStyle = \"rgba(20,20,20,1)\";\r\n        ctx.font = 13 + 'pt Tahoma';\r\n        ctx.textAlign = 'center';\r\n        ctx.lineWidth = 1;\r\n\r\n        var width = ctx.measureText(date.text).width;\r\n        ctx.fillText(date.text, date.loc, self._canvas.height / 2.15, width * 2);\r\n\r\n    };\r\n\r\n    Milestones.prototype.drawLine = function (rect, loc) {\r\n        var self = this;\r\n        var start = self._canvas.height / 2 + (self.TimeLine.lineWidth / 2);\r\n        if (rect.type === 'p') {\r\n            start = self._canvas.height / 2 - (self.TimeLine.lineWidth / 2);\r\n        }\r\n        ctx.lineWidth = 1;\r\n        ctx.beginPath();\r\n        ctx.strokeStyle = rect.colorStroke;\r\n        ctx.moveTo(loc, start);\r\n        ctx.lineTo(loc, rect.y);\r\n        ctx.stroke();\r\n    };\r\n\r\n    Milestones.prototype.drawDescription = function (rect) {\r\n        var self = this;\r\n\r\n        ctx.lineWidth = 1;\r\n        ctx.font = 10 + 'pt Tahoma';\r\n        ctx.fillStyle = rect.colorFill;\r\n        ctx.strokeStyle = rect.colorStroke;\r\n        ctx.strokeRect(rect.x, rect.y, rect.w, rect.h);\r\n        ctx.fillRect(rect.x, rect.y, rect.w, rect.h);\r\n        ctx.fillStyle = \"rgba(20,20,20,1)\";\r\n        ctx.textAlign = \"center\";\r\n        for (var i = 0; i < rect.text.length; i++) {\r\n            ctx.fillText(rect.text[i], rect.x + (rect.w / 2), rect.y + ((i + 1) * 20), rect.w);\r\n        }\r\n\r\n    };\r\n\r\n    Milestones.prototype.drawBox = function (rect, loc) {\r\n        var self = this;\r\n        if (!loc)\r\n            loc = rect.x + (rect.w / 2);\r\n\r\n        ctx.lineWidth = 1;\r\n        ctx.fillStyle = rect.colorFill;\r\n        ctx.strokeStyle = rect.colorStroke;\r\n        ctx.fillRect(rect.x, rect.y, rect.w, rect.h);\r\n        ctx.strokeRect(rect.x, rect.y, rect.w, rect.h);\r\n\r\n        ctx.textAlign = 'center';\r\n        var fontSize = Math.round((self.data.size.x) / 110);\r\n\r\n        if (fontSize < 10)\r\n            fontSize = 10;\r\n        if (fontSize > 16)\r\n            fontSize = 16;\r\n\r\n        if (fontSize > rect.fontSizeLimit)\r\n            fontSize = rect.fontSizeLimit;\r\n\r\n        ctx.font = fontSize + 'pt Tahoma';\r\n        ctx.fillStyle = \"rgba(20,20,20,1)\";\r\n        if (rect.date) {\r\n            ctx.fillText(rect.text, loc, rect.y + rect.h / 3, rect.w, rect.h / 3);\r\n            ctx.fillText(rect.date, loc, rect.y + rect.h - rect.h / 3, rect.w, rect.h / 3);\r\n\r\n        } else {\r\n            ctx.fillText(rect.text, loc, rect.y + rect.h - rect.h / 3, rect.w, rect.h);\r\n        }\r\n        ctx.closePath();\r\n    };\r\n\r\n    Milestones.prototype.clearCanvas = function () {\r\n        var self = this;\r\n        ctx.clearRect(0, 0, self._canvas.width, self._canvas.height);\r\n    };\r\n\r\n    Milestones.prototype.canvasCellWidth = function (format) {\r\n        switch (format) {\r\n            case \"Jaren\":\r\n                return 600;\r\n            case \"Kwartalen\":\r\n                return 150;\r\n            case \"Maanden\":\r\n                return 150;\r\n            case \"Weken\":\r\n                return 130;\r\n            default:\r\n                return 30;\r\n        }\r\n    };\r\n\r\n\r\n    Milestones.prototype.canSave = function () {\r\n        var self = this;\r\n        return self.dirtyCheck().isDirty()\r\n\t\t\t&& $.trim(self.name) != '';\r\n    };\r\n\r\n    return Milestones;\r\n});\r\n\r\n\r\n\r\n\n","define('drops/mockList/mockList',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style'\r\n], function ($, Drop, Style) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            mockData: 'Header 1, Header 2, Header 3\\nCell 1, Cell 2, Cell 3\\nCell 4, Cell 5, Cell 6\\n{1,2,1}',\r\n            size: {\r\n                x: 320,\r\n                y: 90\r\n            }\r\n        }\r\n    };\r\n\r\n    function MockList(options) {\r\n        Drop.call(this, $('<div class=\"mock-list\" />'), defaults, options);\r\n    };\r\n\r\n    Drop.extend(MockList, Drop);\r\n\r\n    MockList.typeName = 'MockList';\r\n\r\n    MockList.prototype.applyStyles = function () {\r\n        this.applyStyle(this.$element, '');\r\n        this.applyStyle(this.$element.find('thead > tr'), 'header');\r\n        this.applyStyle(this.$element.find('tbody > tr:even'), 'even');\r\n        this.applyStyle(this.$element.find('tbody > tr:odd'), 'odd');\r\n    };\r\n\r\n    MockList.prototype.applyStyle = function ($element, styleName, customStyleName) {\r\n        if (customStyleName == null)\r\n            Style.renderStyles(this, null, $element, this.data.styles, styleName);\r\n        else\r\n            Style.renderStyles(this, null, $element, this.data.styles, styleName, customStyleName);\r\n    };\r\n\r\n    MockList.prototype.postRender = function () {\r\n        this.applyPosition();\r\n        this.renderTable();\r\n        this.applyStyles();\r\n    };\r\n    \r\n    MockList.prototype.rerenderTable = function () {\r\n        this.$element.empty();\r\n        this.renderTable();\r\n        this.applyStyles();\r\n    };\r\n\r\n    MockList.prototype.renderTable = function () {\r\n        if (!this.data.mockData) return;\r\n        \r\n        var parsedMockData = this.parseMockData();\r\n        \r\n        this.$element\r\n\r\n            .append($('<table />')\r\n\r\n                .append($('<thead>')\r\n                    .append($('<tr />')\r\n                        .append(_.map(parsedMockData.headers, function (header) {\r\n                            return $('<th />')\r\n                                .text(header.text.trim())\r\n                                .css('width', header.width > 0 ? header.width + '%' : 'auto');\r\n                        }))))\r\n\r\n                .append($('<tbody>')\r\n                    .append(_.map(parsedMockData.lines,\r\n                        function (line) {\r\n                            return $('<tr />')\r\n                                .append(_.map(line,\r\n                                    function (text) {\r\n                                        return $('<td>').text(text.trim());\r\n                                    }));\r\n                        }))));\r\n    };\r\n\r\n    MockList.prototype.parseMockData = function () {\r\n        var lines = this.data.mockData.split('\\n');\r\n        var sizes = null;\r\n\r\n        if (lines.length !== 1) {\r\n            sizes = _.last(lines).match(/^\\{(.*)\\}$/) || null;\r\n\r\n            if (sizes) {\r\n                lines.pop();\r\n\r\n                sizes = _.map(sizes[1].split(','), function(size) {\r\n                    return new Number(size);\r\n                });\r\n\r\n                var totalSize = _.reduce(sizes, function (memo, size) { return memo + size; }, 0);\r\n                \r\n                sizes = _.map(sizes, function (size) {\r\n                    if (size === 0 || totalSize === 0) return 0;\r\n                    return size / totalSize * 100;\r\n                });\r\n            } else {\r\n                sizes = [];\r\n            }\r\n        }\r\n\r\n        lines = _.map(lines, function(line) {\r\n            return line.split(',');\r\n        });\r\n\r\n        var numberOfCells = _.chain(lines)\r\n            .map(function(line) {\r\n                return line.length;\r\n            })\r\n            .max(function(length) {\r\n                return length;\r\n            })\r\n            .value();\r\n\r\n        _.each(lines, function(line) {\r\n            if (line.length === numberOfCells) return;\r\n            for (var i = line.length; i < numberOfCells; i++)\r\n                line.push('');\r\n        });\r\n        \r\n        return {\r\n            headers: _.map(lines.shift(), function(text, i) {\r\n                return {\r\n                    text: text,\r\n                    width: sizes[i] || 0\r\n                };\r\n            }),\r\n            lines: lines\r\n        };\r\n    };\r\n    \r\n    return MockList;\r\n});\n","define('lq/modalblur',[\r\n    'jquery'\r\n], function ($) {\r\n\r\n    var setBlurValue = function(value) {\r\n        if (!this.data.centered)\r\n            return;\r\n\r\n        var $rootWrapper = this.piping.$app.children('.licquid-action-wrapper');\r\n\r\n        setTimeout(function () {\r\n            if (navigator.userAgent.search(\"Firefox\") > -1) {\r\n                if (value === 0) {\r\n                    $rootWrapper.css({ animation: 'zoom-out 600ms forwards' });\r\n                } else {\r\n                    $rootWrapper.css({ animation: 'zoom-in 600ms forwards' });\r\n                }\r\n            }\r\n\r\n            var cssValue = value > 0\r\n                ? 'blur(' + value + 'px)'\r\n                : 'none';\r\n\r\n            $rootWrapper.children().each(function() {\r\n                $(this).css('backdrop-filter', cssValue);\r\n\r\n                $(this).children().each(function() {\r\n                    $(this).css('filter', cssValue);\r\n                });\r\n            });\r\n        });\r\n    };\r\n\r\n    var applyBlur = function () {\r\n        if ((this.data.blur !== null && this.data.blur !== undefined) && this.data.hasBlur) {\r\n            setBlurValue.call(this, this.data.blur);\r\n        } else if (this.data.hasBlur) {\r\n            setBlurValue.call(this, 0);\r\n        }\r\n    };\r\n\r\n    var updateModalLayerHeight = function () {\r\n        if (this.$modalLayer && this.$scrollContainer) {\r\n            this.$modalLayer.css({height: this.$scrollContainer.prop('scrollHeight')});\r\n        }\r\n    };\r\n\r\n    return {\r\n        applyBlur: applyBlur,\r\n        setBlurValue: setBlurValue,\r\n        updateModalLayerHeight: updateModalLayerHeight\r\n    };\r\n});\r\n\n","define('drops/modalAction/ModalActionMpa',[\r\n    'jquery',\r\n    'lq'\r\n], function ($, lq) {\r\n    'use strict';\r\n\r\n    var dimensionsUpdateIntervalInMilliseconds = 300;\r\n\r\n    var ModalActionMpa = function (modalAction) {\r\n        this.modalAction = modalAction;\r\n\r\n        this.onMessageReceived = this.receivedMessage.bind(this);\r\n        this.sizeUpdateIntervaldId = null;\r\n    };\r\n\r\n    ModalActionMpa.prototype.setUp = function () {\r\n        this.$iframe = $('<iframe />')\r\n            .attr('scrolling', this.modalAction.data.scrolling)\r\n            .css({\r\n                width: '100%',\r\n                height: '100%',\r\n                border: 0,\r\n                display: 'none',\r\n                allowtransparency: true\r\n            })\r\n            .appendTo(this.modalAction.$element);\r\n        window.addEventListener('message', this.onMessageReceived, false);\r\n    };\r\n\r\n    ModalActionMpa.prototype.show = function (actionId) {\r\n        this.$iframe\r\n            .attr('src', this.getIframeUrl(actionId))\r\n            .css('display', 'inherit');\r\n        \r\n        if (!this.sizeUpdateIntervaldId && this.modalAction.$element.css('position') === 'relative') {\r\n            var self = this;\r\n            this.$iframe.on('load', function () {\r\n                if (self.sizeUpdateIntervaldId) return;\r\n\r\n                self.sizeUpdateIntervaldId = setInterval(function () {\r\n                    if (!self.$iframe[0].contentWindow) return;\r\n\r\n                    var nestedLicquidContainer = $(self.$iframe[0].contentWindow.document.body).find('.licquid-action-wrapper');\r\n                    nestedLicquidContainer.children(\".licquid-action-view\").css(\"min-height\", \"auto\");\r\n\r\n                    if (nestedLicquidContainer.length === 0) return;\r\n\r\n                    nestedLicquidContainer.css('overflow', 'hidden');\r\n\r\n                    self.$iframe.width(nestedLicquidContainer[0].scrollWidth);\r\n                    self.modalAction.$element.width(nestedLicquidContainer[0].scrollWidth);\r\n                    \r\n                    // find the largest scrollHeight of all child views and apply it to the iframe and its content\r\n                    var maxHeight = 0; \r\n                    nestedLicquidContainer\r\n                        .children()\r\n                        .filter(function(i, v) {\r\n                            if ($(v).hasClass('licquid-action-view')) return true; // current action's drops\r\n                            var iframe = $(v).find('iframe')[0];\r\n                            if (!iframe) return false;\r\n                            var nestedContainer = $(iframe.contentWindow.document.body).find('.licquid-action-wrapper');\r\n                            return !!nestedContainer.length;\r\n                            \r\n                        }).each(function (i, v) {\r\n                            maxHeight = Math.max(maxHeight, v.scrollHeight);\r\n                        });\r\n                    nestedLicquidContainer.css(\"height\", maxHeight + 'px');\r\n\r\n                    self.$iframe.height(nestedLicquidContainer[0].scrollHeight);\r\n                    self.modalAction.$element.height(nestedLicquidContainer[0].scrollHeight);\r\n\r\n                }, dimensionsUpdateIntervalInMilliseconds);\r\n            });\r\n        }\r\n    };\r\n\r\n    ModalActionMpa.prototype.hide = function () {\r\n        if (!this.$iframe) return;\r\n\r\n        if (this.sizeUpdateIntervaldId) {\r\n            clearInterval(this.sizeUpdateIntervaldId);\r\n            this.sizeUpdateIntervaldId = null;\r\n        }\r\n\r\n        this.$iframe\r\n            .attr('src', '')\r\n            .css('display', 'none');\r\n    };\r\n    \r\n    ModalActionMpa.prototype.getIframeUrl = function (actionId) {\r\n        if (!actionId) return 'about:blank';\r\n\r\n        var targetUrl = lq.getTenantUrl('LicquidAction/Get/' + actionId);\r\n\r\n        var params = {};\r\n\r\n        var globals = this.modalAction.piping.parameters.globals.getAll();\r\n        if (_.keys(globals).length > 0)\r\n            params.globals = JSON.stringify(globals);\r\n\r\n        var explicitlyMappedParams = this.modalAction.getParametersForIframe();\r\n        if (_.keys(explicitlyMappedParams).length > 0)\r\n            params.parameters = JSON.stringify(explicitlyMappedParams);\r\n        \r\n        return this.modalAction.piping.url.prepare(targetUrl, params);\r\n    };\r\n    \r\n    ModalActionMpa.prototype.receivedMessage = function (message) {\r\n        var eventObj = this.getEventFromMessage(message);\r\n        if (!eventObj) return;\r\n\r\n        if (eventObj.eventName === 'EmbeddedActionLoaded' && this.modalAction.data.useSelectedActionSize) {\r\n            this.modalAction.setElementSizeBasedOnAnchoring(this.modalAction.data, eventObj);\r\n        } else {\r\n            // staying backwards compatible with existing custom code\r\n            var args = eventObj.args ? eventObj.args[0] : null;\r\n            this.modalAction.triggerEvent(this.modalAction.data.id + '.' + eventObj.eventName, args);\r\n        }\r\n    };\r\n\r\n    ModalActionMpa.prototype.getEventFromMessage = function(e) {\r\n        if (e.source !== this.$iframe.get(0).contentWindow)\r\n            return undefined;\r\n\r\n        try {\r\n            var eventObj = JSON.parse(e.data);\r\n            return eventObj;\r\n        } catch (err) {\r\n            //could not parse, ignore it\r\n        }\r\n\r\n        return undefined;\r\n    }\r\n\r\n    ModalActionMpa.prototype.triggerEventForChild = function (eventObj) {\r\n        var targetOrigin = this.modalAction.rootDrop.data.embeddable\r\n            ? '*'\r\n            : window.location.protocol + '//' + window.location.host;\r\n        this.$iframe.get(0).contentWindow.postMessage(JSON.stringify(eventObj), targetOrigin);\r\n    };\r\n\r\n    ModalActionMpa.prototype.onError = $.noop;\r\n\r\n    ModalActionMpa.prototype.dispose = function() {\r\n        window.removeEventListener('message', this.onMessageReceived);\r\n    };\r\n\r\n    return ModalActionMpa;\r\n});\r\n\n","define('lq/navigationHistory',[\r\n    'lq'\r\n], function (lq) {\r\n    'use strict';\r\n\r\n    var defaultStateKey = 'trace_' + lq.getTenantName() + '_' + lq.getTenantApplicationName();\r\n\r\n    var maxHistoryPerApplication = 50;\r\n\r\n    var retrieveTraceFromLocalStorage = function (stateKey) {\r\n        try {\r\n            var state = sessionStorage.getItem(stateKey);\r\n            return state ? JSON.parse(state) : [];\r\n        }\r\n        catch (e) {\r\n            return [];\r\n        }\r\n    };\r\n\r\n    var storeTraceInLocalStorage = function (stateKey, trace) {\r\n        try {\r\n            if (trace.length > maxHistoryPerApplication)\r\n                trace.splice(maxHistoryPerApplication, maxHistoryPerApplication - trace.length);\r\n\r\n            var state = JSON.stringify(trace);\r\n            sessionStorage.setItem(stateKey, state);\r\n        }\r\n        catch (e) { }\r\n    };\r\n    \r\n    var NavigationHistory = function (traceName, storeTrace, retrieveTrace) {\r\n        this.storeTrace = storeTrace;\r\n        this.retrieveTrace = retrieveTrace;\r\n        this.stateKey = defaultStateKey + '_' + traceName;\r\n        this.trace = this.retrieveTrace(this.stateKey);\r\n    };\r\n\r\n    NavigationHistory.withLocalStorage = function (traceName) {\r\n        return new NavigationHistory(traceName, storeTraceInLocalStorage, retrieveTraceFromLocalStorage);\r\n    };\r\n\r\n    NavigationHistory.inMemory = function (traceName) {\r\n        var inMemoryTrace = [];\r\n        return new NavigationHistory(\r\n            traceName,\r\n            function(trace) {\r\n                inMemoryTrace = trace;\r\n            },\r\n            function (trace) {\r\n                return inMemoryTrace;\r\n            });\r\n    };\r\n\r\n    NavigationHistory.prototype.push = function(url) {\r\n        var index = url.indexOf('?');\r\n\r\n        if (index > -1)\r\n            url = url.substring(0, index);\r\n        \r\n        this.trace.push(url);\r\n        this.storeTrace(this.stateKey, this.trace);\r\n    };\r\n\r\n    NavigationHistory.prototype.pop = function () {\r\n        if (this.trace.length === 0)\r\n            return null;\r\n        \r\n        var previousUrl = this.trace.pop();\r\n        this.storeTrace(this.stateKey, this.trace);\r\n\r\n        return previousUrl;\r\n    };\r\n\r\n    return NavigationHistory;\r\n});\n","define('lq/navigatorSpa',[\r\n    'lq',\r\n    './navigationHistory'\r\n], function (lq, NavigationHistory) {\r\n    'use strict';\r\n    \r\n    var NavigatorSpa = function (initialActionId, url, history, onNavigate) {\r\n        this.currentActionId = initialActionId;\r\n        this.url = url;\r\n        this.onNavigate = onNavigate;\r\n        this.history = history;\r\n    };\r\n\r\n    NavigatorSpa.withLocalStorage = function (initialActionId, url, onNavigate) {\r\n        return new NavigatorSpa(initialActionId, url, NavigationHistory.withLocalStorage('spa'), onNavigate);\r\n    };\r\n\r\n    NavigatorSpa.inMemory = function (initialActionId, url, onNavigate) {\r\n        return new NavigatorSpa(initialActionId, url, NavigationHistory.inMemory('spa'), onNavigate);\r\n    };\r\n\r\n    NavigatorSpa.prototype.openAction = function (actionId, globals, locals, openBlank) {\r\n        if (openBlank) {\r\n            var url = lq.getTenantUrl('LicquidAction/Get/' + actionId);\r\n            var parameters = {};\r\n            if (_.keys(globals).length)\r\n                parameters.globals = JSON.stringify(globals);\r\n            if (_.keys(locals).length)\r\n                parameters.parameters = JSON.stringify(locals);\r\n            var targetUrl = this.url.prepare(url, parameters);\r\n            this.url.openUrl(targetUrl, openBlank);\r\n        } else {\r\n            this.history.push(this.currentActionId);\r\n            this.currentActionId = actionId;\r\n\r\n            this.onNavigate(actionId, globals, locals);\r\n        }\r\n    };\r\n    \r\n    NavigatorSpa.prototype.goToPrevious = function (globals, locals) {\r\n        var previousActionId = this.history.pop();\r\n        if (!previousActionId) return;\r\n\r\n        this.currentActionId = previousActionId;\r\n        this.onNavigate(previousActionId, globals, locals);\r\n    };\r\n\r\n    return NavigatorSpa;\r\n});\n","define('lq/validatorGateway',[\r\n    'underscore'\r\n], function (_) {\r\n\r\n    var callbacks = [];\r\n\r\n    return {\r\n\r\n        loadValidator: function () {\r\n            if (!window.validator) \r\n                postMessage({type: \"LOAD_VALIDATOR\"}, '*');;    \r\n        },\r\n\r\n        isEnabled: function () {\r\n            return !!window.validator;    \r\n        },\r\n\r\n        publishEvent: function (theEvent) {\r\n            if (!window.validator) return;\r\n            window.validator.gateway.publishEvent(theEvent);\r\n        },\r\n\r\n        registerListener: function (instanceId, callback) {\r\n            if (!window.validator) return;\r\n            window.validator.gateway.registerListener(instanceId, callback);\r\n        },\r\n\r\n        unregisterListener: function (instanceId) {\r\n            if (!window.validator) return;\r\n            window.validator.gateway.unregisterListener(instanceId);\r\n        },\r\n\r\n        whenEnabled: function (callback) {\r\n            callbacks.push(callback);\r\n        },\r\n\r\n        callCallbacks: function () {\r\n            callbacks.forEach(function (callback) {\r\n                callback();\r\n            });\r\n\r\n            callbacks = [];\r\n        },\r\n\r\n        removeCallback: function (callbackToRemove) {\r\n            callbacks = callbacks.filter(function (callback) {\r\n                return callback !== callbackToRemove;\r\n            });\r\n        },\r\n\r\n    };\r\n\r\n});\n","define('lq/actionLoader',[\r\n    'lq',\r\n    'jquery',\r\n    'underscore'\r\n], function (lq, $, _) {\r\n    \r\n    var ActionLoader = function (url) {\r\n        this.url = url;\r\n        this.requestId = 0;\r\n        this.listeners = [];\r\n    };\r\n\r\n    ActionLoader.prototype.addListener = function (callback) {\r\n        this.listeners.push(callback);\r\n    };\r\n\r\n    ActionLoader.prototype.removeListener = function (callback) {\r\n        var index = this.listeners.indexOf(callback);\r\n        if (index >= 0)\r\n            this.listeners.splice(index, 1);\r\n    };\r\n\r\n    ActionLoader.prototype.load = function (actionId, globals, locals, state, insertionPoints) {\r\n        this.requestId += 1;\r\n\r\n        $.ajax({\r\n            type: 'POST',\r\n            url: this.url.prepare(lq.getTenantUrl('LicquidAction/Navigate')),\r\n            cache: false,\r\n            data: JSON.stringify({\r\n                id: actionId,\r\n                insertionPoints: insertionPoints\r\n            }),\r\n            dataType: 'json',\r\n            contentType: \"application/json; charset=utf-8\",\r\n        })\r\n        .then(this.receivedData.bind(this, actionId, globals, locals, state, this.requestId));\r\n    };\r\n\r\n    ActionLoader.prototype.receivedData = function (actionId, globals, locals, state, requestId, data) {\r\n        if (requestId !== this.requestId) return;\r\n\r\n        if (data.requiresLogin) {\r\n            // force a redirect to make sure we don't keep any in-memory state of a previous user\r\n\r\n            var pageUrl = 'LicquidAction/Get/' + actionId;\r\n\r\n            var parameters = {};\r\n            if (_.keys(globals).length)\r\n                parameters.globals = JSON.stringify(globals);\r\n            if (_.keys(locals).length)\r\n                parameters.parameters = JSON.stringify(locals);\r\n\r\n            var currentUrl = this.url.prepare(lq.getTenantUrl(pageUrl), parameters);\r\n            this.url.openUrl(currentUrl);\r\n        } else {\r\n            _.forEach(this.listeners, function (listener) {\r\n                listener(\r\n                    data,\r\n                    {\r\n                        globals: globals,\r\n                        locals: locals,\r\n                        system: data.systemParameters\r\n                    },\r\n                    state);\r\n            });\r\n        }\r\n    };\r\n\r\n    return ActionLoader;\r\n\r\n});\n","define('lq/layouting',[],function () {\r\n    'use strict';\r\n\r\n    var cssRules = undefined;\r\n\r\n    var applyLayout = function ($target, currentLayout) {\r\n        $target\r\n            .removeClass(function (index, className) {\r\n                return className.lastIndexOf('using-layout-', 0) !== 0;\r\n            });\r\n\r\n        if (!currentLayout) return;\r\n\r\n        $target\r\n            .addClass('with-layout using-layout-' + currentLayout.id);\r\n\r\n        if (!cssRules) {\r\n            cssRules = document.createElement('style');\r\n            document.body.appendChild(cssRules);\r\n        }\r\n\r\n        cssRules.innerHTML = '.with-layout.using-layout-' + currentLayout.id + ' .layout-specific:not(.supports-layout-' + currentLayout.id + ') {' +\r\n            '   visibility: hidden !important;' +\r\n            '}';\r\n    };\r\n\r\n    return {\r\n\r\n        applyLayout: applyLayout\r\n\r\n    };\r\n\r\n});\n","define('lq/highlighter',[\r\n    'jquery'\r\n], function ($) {\r\n    'use strict';\r\n\r\n    var $highlight;\r\n\r\n    var highlight = function ($element) {\r\n        if (!$highlight) {\r\n            $highlight = $('<div />')\r\n                .addClass('highlighter')\r\n                .appendTo($('body'))\r\n        } else {\r\n            $highlight.removeClass('highlighter-flash');\r\n        }\r\n\r\n        setTimeout(function () {\r\n            var rect = $element[0].getBoundingClientRect();\r\n\r\n            $highlight\r\n                .addClass('highlighter-flash')\r\n                .css({\r\n                    top: rect.top + 'px',\r\n                    left: rect.left + 'px',\r\n                    height: rect.height + 'px',\r\n                    width: rect.width + 'px'\r\n                });\r\n        });\r\n    };\r\n\r\n    return {\r\n        highlight: highlight\r\n    };\r\n});\n","define('drops/modalAction/ModalActionSpa',[\r\n    'jquery',\r\n    'lq',\r\n    'when',\r\n    'drops/action/action',\r\n    'lq/navigatorSpa',\r\n    'lq/validatorGateway',\r\n    'lq/actionLoader',\r\n    'lq/layouting',\r\n    'lq/responsive',\r\n    'lq/highlighter'\r\n], function ($, lq, when, Action, NavigatorSpa, validatorGateway, ActionLoader, layouting, responsive, highlighter) {\r\n    'use strict';\r\n\r\n    var ModalActionSpa = function (modalAction) {\r\n        this.modalAction = modalAction;\r\n        this.onActionLoaded = this.showAction.bind(this);\r\n        this.onEventReceived = this.receiveEvent.bind(this);\r\n    };\r\n    \r\n    ModalActionSpa.prototype.setUp = function () {\r\n        this.$wrapper = $('<div class=\"licquid-action-wrapper\" />')\r\n            .appendTo(this.modalAction.$element)\r\n            .css({\r\n                width: '100%',\r\n                height: '100%',\r\n                border: 0,\r\n                display: 'none',\r\n                overflow: this.modalAction.data.scrolling === 'auto'\r\n                    ? 'auto'\r\n                    : 'hidden'\r\n            });\r\n        this.$view = $('<div class=\"licquid-action-view\" />')\r\n            .appendTo(this.$wrapper);\r\n        this.$modals = $('<div />')\r\n            .css({\r\n                width: '100%',\r\n                height: '100%'\r\n            })\r\n            .appendTo(this.modalAction.piping.$app);\r\n\r\n        if(!validatorGateway.isEnabled()) {\r\n            var self = this;\r\n            this.gatewayCallback = function() {\r\n                if (!self.action) return;\r\n                self.informValidator(self.action);\r\n            };\r\n            validatorGateway.whenEnabled(this.gatewayCallback);\r\n        }\r\n    };\r\n\r\n    ModalActionSpa.prototype.show = function (actionId) {\r\n        if (!actionId) return;\r\n\r\n        var globals = this.modalAction.piping.parameters.globals.getAll();\r\n        var locals = this.modalAction.getParametersForIframe();\r\n\r\n        this.navigator = NavigatorSpa.inMemory(actionId, this.modalAction.piping.url, this.openNewAction.bind(this));\r\n        this.actionLoader = new ActionLoader(this.modalAction.piping.url);\r\n        this.actionLoader.addListener(this.onActionLoaded);\r\n\r\n        this.openNewAction(actionId, globals, locals);\r\n    };\r\n\r\n    ModalActionSpa.prototype.showAction = function (setup, parameters) {\r\n        this.$wrapper.css('display', 'inherit');\r\n        this.$modals.css('display', 'inherit');\r\n        \r\n        if(setup.view.insertionPoint) {\r\n            var index = this.insertionPoints.indexOf(setup.view.insertionPoint);\r\n            this.insertionPoints = this.insertionPoints.slice(0, index + 1);\r\n            this.insertionPoints = this.insertionPoints\r\n                .concat(_.map(setup.view.actions, function(action) {\r\n                    return action.action.id;\r\n                }));\r\n\r\n            this.action.setContent(setup.view.actions, parameters.locals, setup.view.insertionPoint);\r\n        } else {\r\n            this.insertionPoints = _.map(setup.view.actions, function(action) {\r\n                return action.action.id;\r\n            });\r\n\r\n            var actionData = setup.view.actions[0].action;\r\n            var systemParameters = setup.view.actions[0].systemParameters;\r\n            var localParameters = setup.view.actions.length > 1 ? {} : parameters.locals;\r\n            \r\n            var action = new Action(actionData.view, this.modalAction.piping.application.options);\r\n            action.loadData(actionData);\r\n            action.piping = this.modalAction.piping.createChildPiping(actionData, action, localParameters, systemParameters, this.$wrapper, this.$view, false);\r\n            action.piping.runtime = this;\r\n            action.piping.navigator = this.navigator;\r\n            action.piping.$modals = this.$modals;\r\n            action.globals = _.clone(parameters.globals);\r\n            action.locals = _.clone(parameters.locals);\r\n\r\n            if(this.modalAction.data.enableBackwardsCompatibility) {\r\n                action.piping.eventing.addBeforeInterceptor(this.onEventReceived);                \r\n            } else {\r\n                action.piping.eventing.addAfterInterceptor(this.onEventReceived);\r\n            }\r\n            \r\n            var layout = responsive.getCurrentLayout(action);\r\n            layouting.applyLayout(this.$view, layout);\r\n            action.applyLayout(layout);\r\n\r\n            action.createAndRenderDrops($());\r\n\r\n            if(validatorGateway.isEnabled()) {\r\n                this.informValidator(action);\r\n            }\r\n\r\n            if (this.modalAction.$element.css('position') === 'relative' || this.modalAction.data.useSelectedActionSize) {\r\n                this.modalAction.$element.height('auto');\r\n\r\n                // why did we ever start using absolute positioning???\r\n                if (this.modalAction.data.useSelectedActionSize) {\r\n                    if (!action.canGrow()) {\r\n                        var height = (action.data.top || 0) + action.data.size.y + (action.data.bottom || 0);\r\n                        this.modalAction.$element.height(height);\r\n                    }\r\n\r\n                    var width = (action.data.left || 0) + action.data.size.x + (action.data.right || 0);\r\n                    this.modalAction.$element.width(width);\r\n                }\r\n\r\n                // backwards compatibility fix in case both the modal and the nested action are anchored left + right\r\n                // in the MPA we use an iframe which has (in most browsers) a default width of 300px\r\n                if ($.isNumeric(this.modalAction.data.left)\r\n                    && $.isNumeric(this.modalAction.data.right)\r\n                    && $.isNumeric(actionData.view.data.left)\r\n                    && $.isNumeric(actionData.view.data.right))\r\n                    this.modalAction.$element.css('width', '300px');\r\n                else if (!this.modalAction.data.useSelectedActionSize)\r\n                    this.modalAction.$element.width('auto');\r\n            }\r\n\r\n            this.cleanupCurrentAction();\r\n\r\n            this.action = action;\r\n\r\n            action.setContent(setup.view.actions.slice(1), parameters.locals);\r\n\r\n            this.$wrapper.scrollTop(0);\r\n        }\r\n        \r\n        this.action.piping.busyIndicator.forceHide();\r\n    };\r\n\r\n    ModalActionSpa.prototype.informValidator = function (action) {\r\n        validatorGateway.registerListener(action.instanceId, this.receiveMessage.bind(this));\r\n\r\n        validatorGateway.publishEvent({\r\n            type: 'ACTION_INSTANCE_LOADED',\r\n            action: action,\r\n            parentInstanceId: this.modalAction.rootDrop.instanceId,\r\n            canReload: true\r\n        });\r\n    };\r\n\r\n    ModalActionSpa.prototype.receiveMessage = function (message) {\r\n        switch (message.type) {\r\n\r\n            case 'RELOAD_ACTION_INSTANCE':\r\n                this.openNewAction(this.action.data.id, this.action.globals, this.action.locals);\r\n                break;\r\n\r\n            case 'HIGHLIGHT_ACTION_INSTANCE':\r\n                highlighter.highlight(this.$wrapper);\r\n                break;\r\n\r\n        }\r\n    };\r\n\r\n    ModalActionSpa.prototype.openNewAction = function(actionId, globals, locals) {\r\n        this.actionLoader.load(actionId, globals, locals, null, this.insertionPoints);\r\n    };\r\n\r\n    ModalActionSpa.prototype.hide = function () {\r\n        if (!this.$wrapper) return;\r\n\r\n        this.$wrapper.css('display', 'none');\r\n        this.$modals.css('display', 'none');\r\n\r\n        var self = this;\r\n        function waitForTaskCompletion() {\r\n            if (self.action && self.action.piping.busyIndicator.showCount !== 0) {\r\n                setTimeout(waitForTaskCompletion, 100);\r\n            } else {\r\n                self.cleanupCurrentAction();\r\n            }\r\n        }\r\n\r\n        waitForTaskCompletion();\r\n    };\r\n\r\n    ModalActionSpa.prototype.triggerEventForChild = function (eventObj) {\r\n        if (!this.action) return;\r\n\r\n        this.action.triggerEvent(eventObj.eventName, eventObj.args[0]);\r\n    };\r\n\r\n    ModalActionSpa.prototype.onError = function (errorArgs) {\r\n        if (this.action)\r\n            this.action.onError(errorArgs);\r\n    };\r\n\r\n    ModalActionSpa.prototype.receiveEvent = function (e) {\r\n        if (!this.modalAction.data.eventsToCatch || this.modalAction.data.eventsToCatch.indexOf(e.eventName) === -1)\r\n            return;\r\n\r\n        var deferred = when.defer();\r\n\r\n        var args = e.args ? e.args[0] : null;\r\n        this.modalAction.piping.eventing.publish(\r\n            this.modalAction.data.id + '.' + e.eventName,\r\n            undefined,\r\n            args,\r\n            function () {\r\n                deferred.resolve();\r\n            },\r\n            e.parentEventAction);\r\n\r\n        return deferred.promise;\r\n    };\r\n\r\n    ModalActionSpa.prototype.cleanupCurrentAction = function() {\r\n        if (!this.action) return;\r\n\r\n        if(validatorGateway.isEnabled()) {\r\n            validatorGateway.publishEvent({\r\n                type: 'ACTION_INSTANCE_UNLOADING',\r\n                action: this.action\r\n            });\r\n        }\r\n        \r\n        this.action.piping.eventing.removeInterceptor(this.onEventReceived);\r\n        this.action.piping.cleanUp();\r\n        this.action.unsubscribeEventHandlersRecursive();\r\n\r\n        if(validatorGateway.isEnabled()) {\r\n            validatorGateway.unregisterListener(this.action.instanceId);\r\n        }\r\n\r\n        this.action = null;        \r\n    };\r\n\r\n    ModalActionSpa.prototype.dispose = function () {\r\n        this.cleanupCurrentAction();\r\n\r\n        if (this.actionLoader) {\r\n            this.actionLoader.removeListener(this.onActionLoaded);\r\n            this.actionLoader = null;\r\n        }\r\n\r\n        if (this.gatewayCallback) {\r\n            validatorGateway.removeCallback(this.gatewayCallback);\r\n        }\r\n    };\r\n\r\n    return ModalActionSpa;\r\n});\r\n\n","define('drops/modalAction/modalAction',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/modalblur',\r\n    'drops/modals',\r\n    './ModalActionMpa',\r\n    './ModalActionSpa',\r\n    'lq/style'\r\n], function ($, Drop, ModalBlur, modals, ModalActionMpa, ModalActionSpa, Style) {\r\n    'use strict';\r\n\r\n    var minimumZIndexOfModalLayer = 6000;\r\n    var minimumZIndexOfPopup = 6001;\r\n\r\n    var defaults = {\r\n        data: {\r\n            size: { x: 200, y: 80 },\r\n            actionId: '',\r\n            scrolling: 'auto',\r\n            parameters: [],\r\n            eventsToCatch: [],\r\n            lightBoxOpacity: 100,\r\n            animation: 'none',\r\n            minWidth: null,\r\n            minHeight: null,\r\n            useSelectedActionSize: true,\r\n            actionSource: 'selectAction'\r\n        }\r\n    };\r\n\r\n    var ModalAction = function (options) {\r\n        Drop.call(this, $('<div class=\"modal-action\" />'), defaults, options);\r\n\r\n        if (this.data.centered) {\r\n            // We set the ModalLayer height explicitly based on the scroll height of the\r\n            // ScrollContainer, but this changes with the window resize\r\n            this.subscribeEventHandler($(window), 'resize', ModalBlur.updateModalLayerHeight.bind(this));\r\n        }\r\n\r\n        Style.renderStyles(this);\r\n    };\r\n\r\n    Drop.extend(ModalAction, Drop);\r\n\r\n    ModalAction.typeName = 'ModalAction';\r\n\r\n    ModalAction.prototype.preRender = function () {\r\n        this.implementation = this.piping.application.singlePage\r\n            ? new ModalActionSpa(this)\r\n            : new ModalActionMpa(this);\r\n        this.implementation.setUp();\r\n\r\n        this.piping.visibility.apply(this);\r\n        this.useSelectedActionSize ? this.resetMinimumDimensions() : this.applyMinimumDimensions();\r\n        this.applyPosition();\r\n        this.centerInsideParent();\r\n        this.applyZIndex();\r\n        this.applyAnimation();\r\n    };\r\n\r\n    ModalAction.prototype.setElementSizeBasedOnAnchoring = function (anchoringData, e) {\r\n        if (anchoringData.top === null ||\r\n            anchoringData.top === undefined ||\r\n            anchoringData.bottom === null ||\r\n            anchoringData.bottom === undefined) {\r\n            this.$element.height(e.sizeY);\r\n        }\r\n        if (anchoringData.left === null ||\r\n            anchoringData.left === undefined ||\r\n            anchoringData.right === null ||\r\n            anchoringData.right === undefined) {\r\n            this.$element.width(e.sizeX);\r\n        }\r\n    };\r\n\r\n    ModalAction.prototype.applyAnimation = function () {\r\n        if (this.data.animation === 'zoomin') {\r\n            this.$element.addClass('modal-animated-zoomin');\r\n        }\r\n    };\r\n\r\n    ModalAction.prototype.applyMinimumDimensions = function () {\r\n        if (this.data.minHeight) {\r\n            this.$element.css('minHeight', this.data.minHeight + 'px');\r\n        }\r\n\r\n        if (this.data.minWidth) {\r\n            this.$element.css('minWidth', this.data.minWidth + 'px');\r\n        }\r\n    };\r\n\r\n    ModalAction.prototype.resetMinimumDimensions = function () {\r\n        this.$element.css({\r\n            minHeight: '',\r\n            minWidth: ''\r\n        });\r\n    };\r\n\r\n    ModalAction.prototype.applyZIndex = function () {\r\n        this.$element.css('zIndex', minimumZIndexOfPopup + this.data.zIndex);\r\n    };\r\n\r\n    ModalAction.prototype.postRender = function () {\r\n        Drop.prototype.postRender.apply(this, arguments);\r\n        this.renderModalLayer(this.data);\r\n\r\n        if (this.isVisible()) {\r\n            this.show();\r\n        }\r\n\r\n        if (!this.designData) {\r\n            if (this.isScrollable()) {\r\n                this.$scrollContainer\r\n                    .css({\r\n                        overflow: 'auto'\r\n                    })\r\n                    .append(this.$element);\r\n            } else if (this.data.centered) {\r\n                this.$element\r\n                    .appendTo(this.piping.$modals);\r\n            }\r\n        }\r\n    };\r\n\r\n    ModalAction.prototype.centerInsideParent = function () {\r\n        if (!this.data.centered)\r\n            return;\r\n\r\n        if (this.data.top != null || this.data.bottom != null) {\r\n            this.$element\r\n                .css({\r\n                    left: null,\r\n                    right: null,\r\n                    margin: 'auto'\r\n                });\r\n\r\n            // the position in this.data is relative to the root drop, but when rendering we have\r\n            // to position the modal relative to the browser window because we're using 'position: fixed'\r\n            if (this.data.top != null)\r\n                this.$element.css('top', this.data.top + (this.getRootDrop().data.top || 0));\r\n            if (this.data.bottom != null)\r\n                this.$element.css('bottom', this.data.bottom + (this.getRootDrop().data.bottom || 0));\r\n        } else {\r\n            this.$element\r\n                .css({\r\n                    top: this.getVerticalCenterPosition() + 'px',\r\n                    bottom: null,\r\n                    left: null,\r\n                    right: null,\r\n                    margin: 'auto'\r\n                });\r\n        }\r\n    };\r\n\r\n    ModalAction.prototype.getHorizontalCenterPosition = function () {\r\n        var totalWidth = $(window).width();\r\n        return ((totalWidth - this.data.size.x) / 2) >= 0 ? (totalWidth - this.data.size.x) / 2 : 0;\r\n    };\r\n\r\n    ModalAction.prototype.getVerticalCenterPosition = function () {\r\n        var totalHeight = $(window).height();\r\n        return ((totalHeight - this.data.size.y) / 2) >= 0 ? (totalHeight - this.data.size.y) / 2 : 0;\r\n    };\r\n\r\n    ModalAction.prototype.show = function () {\r\n        var actionId = this.getActionId()\r\n        this.implementation.show(actionId);\r\n\r\n        this.$element.addClass(\"open\");\r\n\r\n        Drop.prototype.show.call(this);\r\n\r\n        if (this.$scrollContainer) {\r\n            this.updateScrollContainerZIndex();\r\n            this.$scrollContainer.show();\r\n        }\r\n        if (this.$modalLayer) {\r\n            ModalBlur.updateModalLayerHeight.call(this);\r\n            this.$modalLayer.show();\r\n            this.$modalLayer.removeClass('closed');\r\n        }\r\n        ModalBlur.applyBlur.call(this);\r\n\r\n        this.addBackgroundClickHandler();\r\n\r\n    };\r\n\r\n    ModalAction.prototype.hide = function () {\r\n        this.$element.removeClass(\"open\");\r\n\r\n        this.implementation.hide();\r\n\r\n        this.removeBackgroundClickHandler();\r\n\r\n        Drop.prototype.hide.call(this);\r\n\r\n        var self = this;\r\n        setTimeout(function () {\r\n            if (self.$modalLayer) {\r\n                self.$modalLayer.addClass('closed');\r\n                self.$modalLayer.hide();\r\n            }\r\n        });\r\n        if (this.$scrollContainer) {\r\n            this.$scrollContainer.hide();\r\n        }\r\n        if (this.data.hasBlur) {\r\n            ModalBlur.setBlurValue.call(this, 0);\r\n        }\r\n    };\r\n\r\n    ModalAction.prototype.addBackgroundClickHandler = function () {\r\n        this.removeBackgroundClickHandler();\r\n        var self = this, openTime = Date.now();\r\n        this.backgroundClickHandler = function (event) {\r\n            if (Date.now() - openTime < 50 || self.$element[0] === event.target || $.contains(self.$element[0], event.target))\r\n                return;\r\n\r\n            // e.g. the invisible input element that is used to upload files\r\n            if (!$(event.target).is(':visible'))\r\n                return;\r\n\r\n            self.removeBackgroundClickHandler();\r\n\r\n            if (self.data.closeWhenBackgroundClicked)\r\n                self.hide();\r\n            self.triggerEventIfEnabled('backgroundClicked');\r\n        };\r\n\r\n        this.piping.$app.on('click touchstart', this.backgroundClickHandler);\r\n    };\r\n\r\n    ModalAction.prototype.removeBackgroundClickHandler = function () {\r\n        if (this.backgroundClickHandler) {\r\n            this.piping.$app.off('click touchstart', this.backgroundClickHandler);\r\n            this.backgroundClickHandler = null;\r\n        }\r\n    };\r\n\r\n    ModalAction.prototype.renderModalLayer = function () {\r\n        if (this.data.hasLightBox || this.data.centered) {\r\n            this.$scrollContainer = this.$scrollContainer || $('<div />').hide();\r\n            this.$modalLayer = this.$modalLayer || $('<div />').appendTo(this.$scrollContainer);\r\n\r\n            this.applyModalLayerLayout();\r\n\r\n            if (this.data.centered) {\r\n                this.$scrollContainer.appendTo(this.piping.$modals);\r\n            } else if (this.data.toBrowser) {\r\n                this.$scrollContainer.appendTo(this.piping.$actionWrapper);\r\n            } else {\r\n                this.$scrollContainer.appendTo(this.rootDrop.$element);\r\n            }\r\n        }\r\n    };\r\n\r\n    ModalAction.prototype.applyModalLayerLayout = function () {\r\n        if (this.data.hasLightBox || this.data.centered) {\r\n            this.$scrollContainer\r\n                .css({\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    bottom: 0,\r\n                    left: 0,\r\n                    right: 0,\r\n                    zIndex: 0,\r\n                    overflowY: 'hidden'\r\n                });\r\n\r\n            this.$modalLayer\r\n                .css({\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    bottom: 0,\r\n                    left: 0,\r\n                    right: 0,\r\n                    zIndex: 0,\r\n                    backgroundColor: this.data.hasLightBox ? this.data.lightBoxColor : 'rgba(0, 0, 0, 0)',\r\n                    opacity: this.data.lightBoxOpacity / 100\r\n                });\r\n\r\n            if (this.isVisible()) {\r\n                this.updateScrollContainerZIndex();\r\n            }            \r\n\r\n            if (this.data.animation !== 'none') {\r\n                this.$modalLayer.addClass('modal-animated-modallayer closed');\r\n            }\r\n        }\r\n    };\r\n\r\n    ModalAction.prototype.updateScrollContainerZIndex = function () {\r\n        if (this.piping.application.singlePage) {\r\n            this.$scrollContainer.css('zIndex', modals.getNextZIndex());\r\n\r\n            if (!this.designData && !this.isScrollable()) {\r\n                this.$element.css('zIndex', modals.getNextZIndex());\r\n            }\r\n        } else {\r\n            this.$scrollContainer.css('zIndex', minimumZIndexOfModalLayer + this.data.zIndex);\r\n\r\n            if (this.$modalLayer) {\r\n                this.$modalLayer.css('zIndex', minimumZIndexOfModalLayer + this.data.zIndex - 1);\r\n            }\r\n        }\r\n    };\r\n\r\n    ModalAction.prototype.getActionId = function () {\r\n        if (this.data.actionSource === 'fromParameter')\r\n            return this.piping.parameters.getValue(this.data.actionIdParameter);\r\n\r\n        if (this.data.actionSource === 'selectAction')\r\n            return this.data.actionId;\r\n\r\n        if (this.data.actionSource === 'fromMapping')\r\n            return this.mappedActionId;\r\n\r\n        return undefined;\r\n    };\r\n\r\n    ModalAction.prototype.getParametersForIframe = function () {\r\n        if (!this.data.parameters)\r\n            return {};\r\n\r\n        var self = this;\r\n        var parametersForIframe = {};\r\n        _.each(this.data.parameters, function (parameterName) {\r\n            parametersForIframe[parameterName] = self.piping.parameters.getValue(parameterName);\r\n        });\r\n\r\n        return parametersForIframe;\r\n    };\r\n\r\n    ModalAction.prototype.triggerEventForChild = function (eventObj) {\r\n        this.implementation.triggerEventForChild(eventObj);\r\n    };\r\n\r\n    ModalAction.prototype.isScrollable = function () {\r\n        return this.data.centered && this.$scrollContainer;\r\n    };\r\n\r\n    ModalAction.prototype.onError = function (errorArgs) {\r\n        this.implementation.onError(errorArgs);\r\n    };\r\n\r\n    ModalAction.prototype.unsubscribeEventHandlers = function () {\r\n        this.removeBackgroundClickHandler();\r\n        ModalBlur.setBlurValue.call(this, 0);\r\n\r\n        if (this.implementation)\r\n            this.implementation.dispose();\r\n\r\n        if (this.$scrollContainer)\r\n            this.$scrollContainer.remove();\r\n    };\r\n\r\n    ModalAction.prototype.setValue = function (update) {\r\n        if (update.value && this.data.actionSource === 'fromMapping') {\r\n            this.mappedActionId = update.value;\r\n            if(this.isVisible()) this.show();\r\n        }\r\n    };\r\n\r\n    ModalAction.prototype.getDefaultEventArg = function () {\r\n        return undefined;\r\n    };\r\n\r\n    ModalAction.prototype.clearValue = $.noop;\r\n\r\n    return ModalAction;\r\n});\r\n\n","define('drops/modalPopup/modalPopup',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/modalblur',\r\n    'drops/modals',\r\n    'lq/style'\r\n], function ($, Drop, ModalBlur, modals, Style) {\r\n    'use strict';\r\n\r\n    var minimumZIndexOfModalLayer = 6000;\r\n    var minimumZIndexOfPopup = 6001;\r\n\r\n    var defaults = {\r\n        data: {\r\n            size: { x: 200, y: 80 },\r\n            lightBoxOpacity: 100,\r\n            hasBlur: false,\r\n            blur: 0,\r\n            scrolling: 'auto',\r\n            boxShadow: {\r\n                enabled: false,\r\n                color: 'rgb(136, 136, 136)',\r\n                x: 0,\r\n                y: 0,\r\n                blur: 0,\r\n                spread: 0\r\n            },\r\n            roundedCorners: {\r\n                enabled: false,\r\n                leftTopRadius: 0,\r\n                rightTopRadius: 0,\r\n                rightBottomRadius: 0,\r\n                leftBottomRadius: 0\r\n            },\r\n            initialVisibility: false,\r\n            initialVisibilityOption: \"Hard Coded\"\r\n        }\r\n    };\r\n\r\n    var ModalPopup = function (options) {\r\n        Drop.call(this, $('<div />'), defaults, options);\r\n\r\n        if (this.data.centered) {\r\n            // We set the ModalLayer height explicitly based on the scroll height of the\r\n            // ScrollContainer, but this changes with the window resize\r\n            this.subscribeEventHandler($(window), 'resize', ModalBlur.updateModalLayerHeight.bind(this));\r\n        }\r\n\r\n        Style.renderStyles(this);\r\n    };\r\n\r\n    Drop.extend(ModalPopup, Drop);\r\n\r\n    ModalPopup.typeName = 'ModalPopup';\r\n\r\n    ModalPopup.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n        this.centerInsideParent();\r\n        this.applyZIndex();\r\n    };\r\n\r\n    ModalPopup.prototype.applyZIndex = function () {\r\n        this.$element.css('zIndex', minimumZIndexOfPopup + this.data.zIndex);\r\n    };\r\n\r\n    ModalPopup.prototype.postRender = function () {\r\n        Drop.prototype.postRender.apply(this, arguments);\r\n        this.renderModalLayer(this.data);\r\n    };\r\n\r\n    ModalPopup.prototype.centerInsideParent = function () {\r\n        if (!this.data.centered)\r\n            return;\r\n\r\n        if ((this.data.top !== null && this.data.top !== undefined) || (this.data.bottom !== null && this.data.bottom !== undefined)) {\r\n            this.$element\r\n                .css({\r\n                    left: null,\r\n                    right: null,\r\n                    margin: 'auto'\r\n                });\r\n\r\n            if (!this.renderInBackground) {\r\n                // the position in this.data is relative to the root drop, but when rendering we have\r\n                // to position the modal relative to the browser window because we're using 'position: fixed'\r\n\r\n                if (this.data.top !== null)\r\n                    this.$element.css('top', this.data.top + (this.getRootDrop().data.top || 0));\r\n\r\n                if (this.data.bottom !== null)\r\n                    this.$element.css('bottom', this.data.bottom + (this.getRootDrop().data.bottom || 0));\r\n            }\r\n        } else {\r\n            this.$element\r\n                .css({\r\n                    top: this.getVerticalCenterPosition() + 'px',\r\n                    bottom: null,\r\n                    left: null,\r\n                    right: null,\r\n                    margin: 'auto'\r\n                });\r\n        }\r\n    };\r\n\r\n    ModalPopup.prototype.getHorizontalCenterPosition = function() {\r\n        var totalWidth = $(window).width();\r\n        return ((totalWidth - this.data.size.x) / 2) >= 0 ? (totalWidth - this.data.size.x) / 2 : 0;\r\n    };\r\n\r\n    ModalPopup.prototype.getVerticalCenterPosition = function () {\r\n        var totalHeight = $(window).height();\r\n        return ((totalHeight - this.data.size.y) / 2) >= 0 ? (totalHeight - this.data.size.y) / 2 : 0;\r\n    };\r\n\r\n    ModalPopup.prototype.autoPositionAt = function (targetPosition) {\r\n        this.$element\r\n            .css({\r\n                left: targetPosition.left === null ? 'auto' : (targetPosition.left + 'px'),\r\n                top: targetPosition.top === null ? 'auto' : (targetPosition.top + 'px'),\r\n                right: targetPosition.right === null ? 'auto' : (targetPosition.right + 'px'),\r\n                bottom: targetPosition.bottom === null ? 'auto' : (targetPosition.bottom + 'px')\r\n            });\r\n\r\n        if (!this.$scrollContainer) {\r\n            this.$element.appendTo($('body'))\r\n        }\r\n    };\r\n\r\n    ModalPopup.prototype.show = function () {\r\n        Drop.prototype.show.call(this);\r\n\r\n        if (this.$scrollContainer) {\r\n            this.$scrollContainer.css({\r\n                height: '100%',\r\n                overflow: this.isScrollable() ? 'auto' : ''\r\n            });\r\n            this.updateScrollContainerZIndex();\r\n            this.$scrollContainer.show();\r\n        }\r\n        if (this.$modalLayer) {\r\n            ModalBlur.updateModalLayerHeight.call(this);\r\n            this.$modalLayer.show();\r\n        }\r\n        ModalBlur.applyBlur.call(this);\r\n\r\n        this.addBackgroundClickHandler();\r\n    };\r\n\r\n    ModalPopup.prototype.hide = function () {\r\n        this.removeBackgroundClickHandler();\r\n\r\n        Drop.prototype.hide.call(this);\r\n\r\n        var self = this;\r\n        setTimeout(function () {\r\n            if (self.$modalLayer) {\r\n                self.$modalLayer.hide();\r\n            }\r\n        });\r\n        if (this.$scrollContainer) {\r\n            this.$scrollContainer.hide();\r\n        }\r\n        if (this.data.hasBlur) {\r\n            ModalBlur.setBlurValue.call(this, 0);\r\n        }\r\n    };\r\n\r\n    ModalPopup.prototype.addBackgroundClickHandler = function () {\r\n        this.removeBackgroundClickHandler();\r\n        var self = this, openTime = Date.now();\r\n        this.backgroundClickHandler = function (event) {\r\n            if (Date.now() - openTime < 50 || self.$element[0] === event.target || $.contains(self.$element[0], event.target))\r\n                return;\r\n\r\n            // e.g. the invisible input element that is used to upload files\r\n            if (!$(event.target).is(':visible'))\r\n                return;\r\n\r\n            self.removeBackgroundClickHandler();\r\n\r\n            if (self.data.closeWhenBackgroundClicked)\r\n                self.hide();\r\n\r\n            self.triggerEventIfEnabled('backgroundClicked');\r\n        };\r\n        this.piping.$app.on('click touchstart', this.backgroundClickHandler);\r\n    };\r\n\r\n    ModalPopup.prototype.removeBackgroundClickHandler = function () {\r\n        if (this.backgroundClickHandler) {\r\n            this.piping.$app.off('click touchstart', this.backgroundClickHandler);\r\n            this.backgroundClickHandler = null;\r\n        }\r\n    };\r\n\r\n    ModalPopup.prototype.renderModalLayer = function () {\r\n        if (this.data.hasLightBox || this.data.centered) {\r\n            this.$scrollContainer = this.$scrollContainer || $('<div />').hide();\r\n            this.$modalLayer = this.$modalLayer || $('<div />').appendTo(this.$scrollContainer);\r\n\r\n            this.applyModalLayerLayout();\r\n\r\n            if (this.data.centered || (this.data.autoPosition && this.data.autoPosition.enabled)) {\r\n                this.$scrollContainer.appendTo(this.piping.$modals);\r\n            } else if (this.data.toBrowser) {\r\n                this.$scrollContainer.appendTo(this.piping.$actionWrapper);\r\n            } else {\r\n                this.$scrollContainer.appendTo(this.rootDrop.$element);\r\n            }\r\n\r\n            this.$scrollContainer.append(this.$element);\r\n        }\r\n    };\r\n\r\n    ModalPopup.prototype.applyModalLayerLayout = function () {\r\n        if (this.data.hasLightBox || this.data.centered) {\r\n            this.$scrollContainer\r\n                .css({\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    bottom: 0,\r\n                    left: 0,\r\n                    right: 0,\r\n                    zIndex: 0,\r\n                    overflowY: 'hidden'\r\n                });\r\n\r\n            this.$modalLayer\r\n                .css({\r\n                    position: 'absolute',\r\n                    top: 0,\r\n                    bottom: 0,\r\n                    left: 0,\r\n                    right: 0,\r\n                    zIndex: 0,\r\n                    backgroundColor: this.data.hasLightBox ? this.data.lightBoxColor : 'rgba(0, 0, 0, 0)',\r\n                    opacity: this.data.lightBoxOpacity / 100\r\n                });\r\n\r\n            if (this.isVisible()) {\r\n                this.updateScrollContainerZIndex();\r\n            }   \r\n        }\r\n    };\r\n\r\n    ModalPopup.prototype.updateScrollContainerZIndex = function () {\r\n        if (this.piping.application.singlePage) {\r\n            this.$scrollContainer.css('zIndex', modals.getNextZIndex());\r\n        } else {\r\n            this.$scrollContainer.css('zIndex', minimumZIndexOfModalLayer + this.data.zIndex);\r\n\r\n            if (this.$modalLayer) {\r\n                this.$modalLayer.css('zIndex', minimumZIndexOfModalLayer + this.data.zIndex - 1);\r\n            }\r\n        }\r\n    };\r\n\r\n    ModalPopup.prototype.render = function ($element) {\r\n        var self = this;\r\n        return this.createAndRenderDrops($element)\r\n            .then(function () {\r\n                if (self.isVisible()) {\r\n                    self.show();\r\n                }\r\n            });\r\n    };\r\n\r\n    ModalPopup.prototype.isScrollable = function () {\r\n        return this.data.centered && this.$scrollContainer;\r\n    };\r\n\r\n    ModalPopup.prototype.unsubscribeEventHandlers = function () {\r\n        this.removeBackgroundClickHandler();\r\n        ModalBlur.setBlurValue.call(this, 0);\r\n        \r\n        if (this.$scrollContainer) {\r\n            this.$scrollContainer.remove();\r\n        }\r\n    };\r\n\r\n    return ModalPopup;\r\n});\r\n\n","define('drops/multiSelect/checkboxList',[\r\n    'jquery',\r\n    'underscore'\r\n], function($, _) {\r\n    'use strict';\r\n\r\n    var CheckboxList = function (drop) {\r\n        this.drop = drop;\r\n\r\n        this.$el = $('<div />')\r\n            .addClass('multi-checkbox')\r\n            .appendTo(drop.$element);\r\n    };\r\n\r\n    CheckboxList.prototype.render = $.noop;\r\n\r\n    CheckboxList.prototype.setItems = function (items) {\r\n        this.createAllOption();\r\n        this.createCells(items);\r\n        this.fillList();\r\n        this.updateSelection();\r\n        this.setTabIndex();\r\n    };\r\n\r\n    CheckboxList.prototype.createCells = function (items) {\r\n        var self = this;\r\n        this.cells = _.chain(items)\r\n            .map(function (item) {\r\n                return {\r\n                    id: item[self.drop.data.idOutput],\r\n                    label: item[self.drop.data.displayedOutput]\r\n                };\r\n            })\r\n            .map(function (item) {\r\n                return self.createCell(item);\r\n            })\r\n            .value();\r\n    };\r\n\r\n    CheckboxList.prototype.createCell = function(item) {\r\n        var $checkbox = $('<input type=\"checkbox\" id=\"' + _.uniqueId('multiselect_') + '\" />')\r\n            .prop('checked', this.drop.data.selectAllByDefault);\r\n\r\n        if (this.drop.data.selectAllByDefault) {\r\n            $checkbox.addClass('multi-checkbox-checked');\r\n        }\r\n\r\n        var rowModel = {\r\n            id: item.id,\r\n            checked: !!this.drop.data.selectAllByDefault,\r\n            $el: $('<div class=\"multi-checkbox-option\" />'),\r\n            check: function () {\r\n                rowModel.checked = true;\r\n                $checkbox\r\n                    .prop('checked', true)\r\n                    .addClass('multi-checkbox-checked');\r\n            },\r\n            uncheck: function () {\r\n                rowModel.checked = false;\r\n                $checkbox\r\n                    .prop('checked', false)\r\n                    .addClass('multi-checkbox-unchecked');\r\n            }\r\n        };\r\n\r\n        if (this.drop.data.readOnly)\r\n            $checkbox.prop('disabled', true);\r\n\r\n        var self = this;\r\n        $checkbox\r\n            .on('change', function () {\r\n                rowModel.$el.toggleClass('multi-checkbox-checked');\r\n                rowModel.checked = $checkbox.prop('checked');\r\n\r\n                self.drop.updateRequiredIndicator();\r\n                self.drop.triggerEventIfEnabled('changed');\r\n\r\n                if (rowModel.checked)\r\n                    self.drop.triggerEventIfEnabled('itemSelected', rowModel.id);\r\n                else\r\n                    self.drop.triggerEventIfEnabled('itemDeselected', rowModel.id);\r\n\r\n                self.updateAllOption();\r\n            });\r\n\r\n       this.buildItemTable($checkbox, item.label)\r\n            .appendTo(rowModel.$el);\r\n\r\n        return rowModel;\r\n    };\r\n\r\n    CheckboxList.prototype.buildItemTable = function ($checkbox, label) {\r\n        var $ticker = this.drop.data.useBuiltInStyle\r\n            ? $('<div class=\"custom-icon\" />')\r\n                    .append($checkbox)\r\n                    .on(\"click\", function (e) {\r\n                        if (e.target === this)\r\n                        $checkbox.trigger('click');\r\n                    })\r\n            : $('<label class=\"customCheckState\" />')\r\n                .append($checkbox)\r\n                .append($('<div class=\"drop-text-content customCheckState-tick\"></div>')\r\n                .append($('<div>&#x2714</div>')));\r\n\r\n        var $outermostDiv = $('<div />')\r\n            .css({\r\n                display: 'flex',\r\n                whiteSpace: 'pre-wrap'\r\n            });\r\n\r\n        var $innerDiv = $('<div />')\r\n            .css({\r\n                display: 'flex',\r\n                flexFlow: 'row'\r\n            })\r\n            .appendTo($outermostDiv);\r\n\r\n        $('<div />')\r\n            .css({\r\n                display: 'flex',\r\n                flexDirection: 'column',\r\n                alignItems: 'flex-start',\r\n                justifyContent: 'center'\r\n            })\r\n            .append($ticker)\r\n            .appendTo($innerDiv);\r\n\r\n        var $labelWrapper = $('<div />')\r\n            .css({\r\n                display: 'flex',\r\n                flexDirection: 'column'\r\n            })\r\n            .addClass('drop-text-content')\r\n            .appendTo($innerDiv);\r\n\r\n        $('<label for=\"' + $checkbox.attr('id') + '\" />')\r\n            .text(label)\r\n            .appendTo($labelWrapper)\r\n\r\n        return $outermostDiv;\r\n    };\r\n\r\n    CheckboxList.prototype.updateAllOption = function() {\r\n        if (!this.$all)\r\n            return;\r\n\r\n        var $allCheckbox = this.$all.find('input');\r\n\r\n        if (!_.findWhere(this.cells, { checked: false }))\r\n            $allCheckbox.prop('checked', true);\r\n        else\r\n            $allCheckbox.prop('checked', false);\r\n    };\r\n\r\n    CheckboxList.prototype.fillList = function () {\r\n        var drop = this.drop;\r\n\r\n        var cells = _.pluck(this.cells, '$el');\r\n        if (this.$all)\r\n            cells = [this.$all].concat(cells);\r\n\r\n        var $rows = _.chain(cells)\r\n            .groupBy(function (cell, index) {\r\n                return Math.floor(index/drop.data.numberOfColumns);\r\n            })\r\n            .map(function(row) {\r\n                return $('<div />').css({\r\n                    width: '100%',\r\n                    display: 'table',\r\n                    tableLayout: 'fixed'}).append(row);\r\n            })\r\n            .value();\r\n        this.$el.empty();\r\n\r\n        var leftover = cells.length % this.drop.data.numberOfColumns;\r\n        var numOfBlankElements = this.drop.data.numberOfColumns - leftover;\r\n        for (var i = 0; i < numOfBlankElements && leftover > 0; i++) {\r\n            $rows[$rows.length - 1].append($('<div />'));\r\n        }\r\n\r\n        this.$el\r\n            .append($('<div />').addClass('multi-checkbox-options').append($rows));\r\n    };\r\n\r\n    CheckboxList.prototype.clear = function() {\r\n        _.each(this.cells, function (cell) {\r\n            cell.uncheck();\r\n        });\r\n\r\n        this.drop.updateRequiredIndicator();\r\n        this.updateAllOption();\r\n    };\r\n\r\n    CheckboxList.prototype.setTabIndex = function() {\r\n        this.$el.find('input')\r\n            .first()\r\n            .attr('tabindex', this.drop.data.tabIndex);\r\n    };\r\n\r\n    CheckboxList.prototype.setValue = function (selection) {\r\n        this.selection = selection;\r\n        this.updateSelection();\r\n    };\r\n\r\n    CheckboxList.prototype.createAllOption = function () {\r\n        if (this.drop.data.addAllOption) {\r\n            var self = this;\r\n\r\n            var $checkbox = $('<input type=\"checkbox\" id=\"' + _.uniqueId('multiselect_') + '\" />')\r\n                .prop('checked', this.drop.data.selectAllByDefault)\r\n                .on('change', function() {\r\n                    var $this = $(this);\r\n\r\n                    var checked = $this.prop('checked');\r\n\r\n                    _.each(self.cells, function(cell) {\r\n                        if (checked && !cell.checked) {\r\n                            cell.check();\r\n                            self.drop.triggerEventIfEnabled('itemSelected', cell.id);\r\n                        } else if (!checked && cell.checked) {\r\n                            cell.uncheck();\r\n                            self.drop.triggerEventIfEnabled('itemDeselected', cell.id);\r\n                        }\r\n                    });\r\n\r\n                    self.drop.updateRequiredIndicator();\r\n                    self.drop.triggerEventIfEnabled('changed');\r\n                });\r\n\r\n            if (this.drop.data.readOnly)\r\n                $checkbox.prop('disabled', true);\r\n\r\n            this.$all = this.buildItemTable($checkbox, this.drop.data.allOptionLabel);\r\n        }\r\n    };\r\n\r\n    CheckboxList.prototype.updateSelection = function () {\r\n        if (!this.selection)\r\n            return;\r\n\r\n        var self = this;\r\n        _.each(this.cells, function (cell) {\r\n            var selected = self.selection.indexOf(cell.id) !== -1;\r\n            if (selected)\r\n                cell.check();\r\n            else\r\n                cell.uncheck();\r\n        });\r\n\r\n        this.drop.updateRequiredIndicator();\r\n        this.updateAllOption();\r\n    };\r\n\r\n    CheckboxList.prototype.getValue = function () {\r\n        return _.chain(this.cells)\r\n            .where({ checked: true })\r\n            .map(function (cell) {\r\n                return cell.id;\r\n            })\r\n            .value();\r\n    };\r\n\r\n    CheckboxList.prototype.dispose = $.noop;\r\n\r\n    return CheckboxList;\r\n});\n","define('drops/multiSelect/dropdownitem',[\r\n    'jquery',\r\n    'underscore'\r\n], function ($, _) {\r\n    'use strict';\r\n\r\n    var DropDownItem = function (\r\n            list,\r\n            id,\r\n            label,\r\n            checked) {\r\n        this.list = list;\r\n\r\n        this.id = id;\r\n        this.label = label;\r\n        this.checked = !!checked;\r\n\r\n        this.$checkbox = $('<input type = \"checkbox\" />')\r\n            .addClass('userstyle-' + list.drop.data.styles)\r\n            .prop('checked', this.checked)\r\n            .on('change', this.onCheckboxToggled.bind(this));\r\n\r\n        var $checkboxWrapper = $('<label class=\"checkbox-wrapper\" />')\r\n            .css(\"position\", \"relative\")\r\n            .append(this.$checkbox)\r\n            .append($('<div class=\"custom-icon\" />').css(\"display\", \"none\"));\r\n\r\n        this.$element = $('<tr />')\r\n            .addClass('tableData')\r\n            .append($('<td />')\r\n                .append($checkboxWrapper));\r\n    };\r\n\r\n    DropDownItem.prototype.setReadOnly = function () {\r\n        this.$checkbox.prop('disabled', true);\r\n    };\r\n\r\n    DropDownItem.prototype.addExtraColumns = function (values) {\r\n        this.$element\r\n            .append(_.map(values, this.createExtraColumn.bind(this)));\r\n    };\r\n\r\n    DropDownItem.prototype.createExtraColumn = function(value) {\r\n        return $('<td />')\r\n            .text(value)\r\n            .on('click', this.onRowClicked.bind(this));\r\n    };\r\n\r\n    DropDownItem.prototype.onCheckboxToggled = function () {\r\n        this.toggle();\r\n        this.updated();\r\n        this.triggerEvents();\r\n    };\r\n\r\n    DropDownItem.prototype.onRowClicked = function () {\r\n        this.toggle();\r\n        this.updated();\r\n        this.triggerEvents();\r\n    };\r\n\r\n    DropDownItem.prototype.triggerEvents = function () {\r\n        this.list.triggerEventIfEnabled('changed');\r\n\r\n        if (this.checked)\r\n            this.list.triggerEventIfEnabled('itemSelected', this.id);\r\n        else\r\n            this.list.triggerEventIfEnabled('itemDeselected', this.id);\r\n    };\r\n\r\n    DropDownItem.prototype.updated = function () {\r\n        this.checked = this.$checkbox.is(\":checked\");\r\n\r\n        this.list.updateSummary();\r\n        this.list.updateRequiredIndicator();\r\n    };\r\n\r\n    DropDownItem.prototype.toggle = function () {\r\n        if (this.checked)\r\n            this.uncheck();\r\n        else\r\n            this.check();\r\n    };\r\n\r\n    DropDownItem.prototype.uncheck = function () {\r\n        this.$element.removeClass('selected');\r\n        this.$checkbox.prop('checked', false);\r\n        this.updated();\r\n    };\r\n\r\n    DropDownItem.prototype.check = function () {\r\n        this.$element.addClass('selected');\r\n        this.$checkbox.prop('checked', true);\r\n        this.updated();\r\n    };\r\n\r\n    return DropDownItem;\r\n});\n","define('drops/multiSelect/dropDownMultiSelect',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/style',\r\n    './dropdownitem',\r\n    'drops/modals'\r\n], function ($, _, Style, DropDownItem, modals) {\r\n    'use strict';\r\n\r\n    var arrowDownKey = 40;\r\n    var arrowUpKey = 38;\r\n\r\n    var DropDownMultiSelect = function (drop) {\r\n        this.drop = drop;\r\n        this.$el = $('<div />');\r\n        this.$list = $('<div />');\r\n\r\n        this.$placeholder = $('<div />')\r\n            .addClass('drop-text-content multiselect-placeholder')\r\n            .text(drop.data.placeholder || '')\r\n        this.$el.prepend(this.$placeholder);\r\n    };\r\n\r\n    DropDownMultiSelect.prototype.render = function () {\r\n        this.$el\r\n            .addClass('multi-drop-down collapsed');\r\n\r\n        this.$label = $('<div />')\r\n            .addClass('multi-drop-down-label drop-text-content');\r\n\r\n        var self = this;\r\n\r\n        this.$buttonWrapper = $('<div/>')\r\n            .addClass(\"multi-drop-down-button-wrapper\");\r\n\r\n        if (!this.drop.data.readOnly) {\r\n            this.$button = $('<div />')\r\n                .addClass('multi-drop-down-button')\r\n                .attr('tabindex', this.drop.data.tabIndex)\r\n                .on('keydown', function (e) {\r\n                    if (e.which === arrowDownKey && !self.isOpen()) {\r\n                        self.open();\r\n                        e.preventDefault();\r\n                    } else if (e.which === arrowUpKey && self.isOpen()) {\r\n                        self.close();\r\n                        e.preventDefault();\r\n                    }\r\n                });\r\n\r\n            this.$el\r\n                .on('click', function () {\r\n                    if (self.isOpen())\r\n                        self.close();\r\n                    else\r\n                        self.open();\r\n                });\r\n        }\r\n\r\n        this.$button\r\n            .appendTo(this.$buttonWrapper);\r\n\r\n        this.$el\r\n            .append(this.$label, this.$buttonWrapper)\r\n            .appendTo(this.drop.$element);\r\n\r\n        this.$list\r\n            .hide()\r\n            .addClass('multi-drop-down-list')\r\n            .addClass('prevent-hover')\r\n            .addClass('prevent-normal')\r\n            .appendTo(this.drop.piping.$app);\r\n\r\n        if (typeof this.drop.data.styles === 'string') {\r\n            Style.renderStyles(this.drop, null, this.$list);\r\n        }\r\n\r\n        if (this.drop.data.gridStyleId)\r\n            this.$list.addClass(this.getGridStyleClassName());\r\n\r\n        this.onClicked = this.handleClickOnDocument.bind(this);\r\n        this.onScrolled = this.scrolledInApp.bind(this);\r\n\r\n        $(document).on('click', this.onClicked);\r\n        this.drop.piping.$actionWrapper.on('scroll', this.onScrolled);\r\n        this.togglePlaceholder(true);\r\n    };\r\n\r\n    DropDownMultiSelect.prototype.handleClickOnDocument = function (e) {\r\n        if (!this.isOpen())\r\n            return;\r\n\r\n        var targetWasNotThisDrop = $(e.target).closest(this.drop.$element).length === 0;\r\n        var targetWasNotThisList = $(e.target).closest(this.$list).length === 0;\r\n\r\n        if (targetWasNotThisDrop && targetWasNotThisList)\r\n            this.close();\r\n    };\r\n\r\n    DropDownMultiSelect.prototype.scrolledInApp = function() {\r\n        this.$list.hide();\r\n    };\r\n\r\n    DropDownMultiSelect.prototype.getGridStyleClassName = function () {\r\n        return Style.getClassNameFromStyleId('gridstyle-', this.drop.data.gridStyleId);\r\n    };\r\n\r\n    DropDownMultiSelect.prototype.isOpen = function () {\r\n        return this.$list.is(':visible');\r\n    };\r\n\r\n    DropDownMultiSelect.prototype.open = function () {\r\n        this.$el\r\n            .removeClass('collapsed')\r\n            .addClass('expanded');\r\n\r\n        var $parent = this.drop.$element;\r\n        var $app = this.drop.piping.$app;\r\n        var top = $parent.offset().top - $app.offset().top + $parent.outerHeight() + 4; // 4px offset\r\n        var left = $parent.offset().left - $app.offset().left;\r\n\r\n        var maxHeight = $app.height() - top;\r\n\r\n        var borderWidthOfList = this.$list.outerWidth() - this.$list.innerWidth();\r\n        this.$list\r\n            .css({\r\n                top: top,\r\n                left: left,\r\n                maxHeight: (maxHeight > 100 ? maxHeight : '100') + 'px',\r\n                width: $parent.outerWidth() - borderWidthOfList,\r\n                zIndex: modals.getZIndexForPopups()\r\n            })\r\n            .show();\r\n    };\r\n\r\n    DropDownMultiSelect.prototype.close = function () {\r\n        this.$el\r\n            .removeClass('expanded')\r\n            .addClass('collapsed');\r\n        this.$list.hide();\r\n        this.drop.triggerEventIfEnabled('collapsed');\r\n    };\r\n\r\n    DropDownMultiSelect.prototype.updateRequiredIndicator = function() {\r\n        this.drop.updateRequiredIndicator();\r\n    };\r\n\r\n    DropDownMultiSelect.prototype.triggerEventIfEnabled = function (eventName, eventArg) {\r\n        this.drop.triggerEventIfEnabled(eventName, eventArg);\r\n    };\r\n\r\n    DropDownMultiSelect.prototype.setItems = function (items, columns) {\r\n        this.$list.empty();\r\n\r\n        var self = this;\r\n\r\n        if (this.drop.data.addAllOption) {\r\n            var id = _.uniqueId('select_all_');\r\n            var $allDiv = $('<div />')\r\n                .addClass('all-option')\r\n                .css({\r\n                    display: 'flex',\r\n                    flexFlow: 'row'\r\n                })\r\n                .append($('<label class=\"checkbox-wrapper\" />')\r\n                .css('padding', '1px')\r\n                .append($('<input type=\"checkbox\" id=\"' + id + '\" />')\r\n                    .addClass('userstyle-' + self.drop.data.styles)\r\n                    .prop('checked', this.drop.data.selectAllByDefault)\r\n                    .on('change', function () {\r\n                        var $this = $(this);\r\n\r\n                        if ($this.prop('checked'))\r\n                            self.selectAll();\r\n                        else\r\n                            self.clear();\r\n\r\n                        self.drop.triggerEventIfEnabled('changed');\r\n                    }))\r\n                    .append($('<div class=\"custom-icon\" />').css(\"display\", \"none\")))\r\n                .append($('<label for=\"' + id + '\" />').addClass('all-label').text(this.drop.data.allOptionLabel))\r\n            this.$list.append($allDiv);\r\n\r\n            if (typeof this.drop.data.styles !== 'string') {\r\n                Style.renderStyles(this.drop, null, $allDiv, null, 'all');\r\n            }\r\n        }\r\n\r\n        columns = _.difference(columns, _.union(this.drop.data.hiddenColumns, [ this.drop.data.idOutput ]));\r\n\r\n        // using <table /> because we are reusing the Grid styles here\r\n        var $table = $('<table />');\r\n\r\n        if (columns.length > 1) {\r\n            var $checkboxHeader = $('<th />')\r\n                .addClass('checkbox-column')\r\n                .addClass('gridHeader');\r\n\r\n            var $headers = _.map(columns, function (column) {\r\n                return $('<th />')\r\n                    .addClass('gridHeader')\r\n                    .text(column);\r\n            });\r\n            var $trh = $('<tr />')\r\n                .addClass('tableHeader')\r\n                .append($checkboxHeader)\r\n                .append($headers);\r\n            $table.append($trh);\r\n\r\n            if (typeof this.drop.data.styles !== 'string') {\r\n                Style.renderStyles(this.drop, null, $trh, null, 'header');\r\n            }\r\n        }\r\n\r\n        var textOutput = columns[0];\r\n        var idOutput = this.drop.data.idOutput;\r\n\r\n        this.rows = _.map(items, function (item) {\r\n            var row = new DropDownItem(self, item[idOutput], item[textOutput], self.drop.selectAllByDefault);\r\n\r\n            row.addExtraColumns(_.map(columns, function (column) {\r\n                return item[column];\r\n            }));\r\n\r\n            return row;\r\n        });\r\n\r\n        if (this.drop.data.selectAllByDefault) {\r\n            _.each(this.rows, function (row) {\r\n                row.check();\r\n            });\r\n        }\r\n\r\n        var $rows = _.pluck(this.rows, '$element');\r\n        $table.append($rows);\r\n\r\n        this.$list.append($table);\r\n\r\n        this.updateUi();\r\n    };\r\n\r\n    DropDownMultiSelect.prototype.clear = function () {\r\n        var self = this;\r\n        _.each(this.rows, function(row) {\r\n            if(row.checked) {\r\n                row.uncheck();\r\n                self.drop.triggerEventIfEnabled('itemDeselected', row.id);\r\n            }\r\n        });\r\n    };\r\n\r\n    DropDownMultiSelect.prototype.selectAll = function () {\r\n        var self = this;\r\n        _.each(this.rows, function (row) {\r\n            if(!row.checked) {\r\n                row.check();\r\n                self.drop.triggerEventIfEnabled('itemSelected', row.id);\r\n            }\r\n        });\r\n    };\r\n\r\n    DropDownMultiSelect.prototype.setValue = function (selection) {\r\n        this.selection = selection;\r\n        this.updateUi();\r\n    };\r\n\r\n    DropDownMultiSelect.prototype.updateUi = function () {\r\n        if (!this.selection)\r\n            return;\r\n\r\n        var self = this;\r\n        _.each(this.rows, function (row) {\r\n            var selected = self.selection.indexOf(row.id) !== -1;\r\n            if (selected)\r\n                row.check();\r\n            else\r\n                row.uncheck();\r\n        });\r\n    };\r\n\r\n    DropDownMultiSelect.prototype.updateSummary = function () {\r\n        var selectNames = _.chain(this.rows)\r\n            .where({ checked: true })\r\n            .pluck('label')\r\n            .value();\r\n        var summary = selectNames.join(', ');\r\n\r\n        this.togglePlaceholder(!summary);\r\n        this.$label.text(summary);\r\n    };\r\n\r\n    DropDownMultiSelect.prototype.getValue = function () {\r\n        return _.chain(this.rows)\r\n            .where({ checked: true })\r\n            .pluck('id')\r\n            .value();\r\n    };\r\n\r\n    DropDownMultiSelect.prototype.togglePlaceholder = function (isVisible) {\r\n        this.$placeholder.toggle(!!isVisible);\r\n        this.$label.toggle(!isVisible);\r\n\r\n        if (!!isVisible && this.drop.$element) {\r\n            this.drop.$element.addClass('multiselect-dropdown-placeholder');\r\n        } else if (this.drop.$element) {\r\n            this.drop.$element.removeClass('multiselect-dropdown-placeholder');\r\n        }\r\n\r\n        this.$el\r\n            .append(this.$label, this.$buttonWrapper)\r\n    };\r\n\r\n    DropDownMultiSelect.prototype.dispose = function () {\r\n        this.$list.remove();\r\n        $(document).off('click', this.onClicked);\r\n        this.drop.piping.$actionWrapper.off('scroll', this.onScrolled);\r\n    };\r\n\r\n    return DropDownMultiSelect;\r\n});\n","define('drops/multiSelect/multiSelect',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'underscore',\r\n    'drops/multiSelect/checkboxList',\r\n    'drops/multiSelect/dropDownMultiSelect',\r\n    'lq/required'\r\n], function ($, Drop, Style, util, _, Checkboxlist, DropDownMultiSelect, Required) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            hiddenColumns: [],\r\n            idOutput: 'Id',\r\n            numberOfColumns: 1,\r\n            addAllOption: false,\r\n            allOptionLabel: 'All',\r\n            useBuiltInStyle: true,\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded'\r\n            },\r\n            selectAllByDefault: false,\r\n            placeholder: ''\r\n        }\r\n    };\r\n\r\n    function MultiSelect(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.defaultStyleSettings = {\r\n            text: { verticalAlign: 'middle' }\r\n        };\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing);\r\n\r\n        this.checkedItemIds = [];\r\n        this.items = null;\r\n        this.columns = null;\r\n\r\n        this.$element\r\n\t        .addClass('boxToBorderSize drop-text-container')\r\n\t        .css({\r\n\t            whiteSpace: 'pre-wrap'\r\n\t        });\r\n\r\n        this.createControl();\r\n        this.renderStyles();\r\n    };\r\n\r\n    Drop.extend(MultiSelect, Drop);\r\n\r\n    MultiSelect.typeName = 'MultiSelect';\r\n\r\n    MultiSelect.prototype.supportsManyToManyData = function () {\r\n        return true;\r\n    };\r\n\r\n    MultiSelect.prototype.createControl = function () {\r\n        if (this.data.isNormalDropdown)\r\n            this.control = new DropDownMultiSelect(this);\r\n        else\r\n            this.control = new Checkboxlist(this);\r\n    };\r\n\r\n    MultiSelect.prototype.renderStyles = function () {\r\n        Style.renderStyles(this, null, this.$element);\r\n    };\r\n\r\n    MultiSelect.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.piping.required.apply(this);\r\n\r\n        var self = this;\r\n        this.piping.datasources.registerDatasourceListener(this.data.dataSource, function (data) {\r\n            self.control.setItems(data.results, _.keys(data.outputs));\r\n        });\r\n        Required.prototype.addRemoveRequiredIndicator(self);\r\n        this.applyPosition();\r\n    };\r\n\r\n    MultiSelect.prototype.postRender = function () {\r\n        this.renderControl();\r\n    };\r\n\r\n    MultiSelect.prototype.renderControl = function () {\r\n        this.control.render();\r\n    };\r\n\r\n    MultiSelect.prototype.getValue = function () {\r\n        return this.control.getValue();\r\n    };\r\n\r\n    MultiSelect.prototype.clearValue = function () {\r\n        this.control.clear();\r\n    };\r\n\r\n    MultiSelect.prototype.setValue = function (update) {\r\n        this.control.setValue(update.value);\r\n    };\r\n\r\n    MultiSelect.prototype.unsubscribeEventHandlers = function () {\r\n        this.control.dispose();\r\n    };\r\n\r\n    return MultiSelect;\r\n});\n","// todo svb this was copied from BNH, but might need some cleaning up\r\ndefine('lq/numeric',[\r\n    'jquery'\r\n], function ($) {\r\n\r\n    var numericInputConfig = {\r\n        minValue: null,\r\n        maxValue: null,\r\n        valueChanged: $.noop,\r\n        valid: $.noop,\r\n        invalid: $.noop,\r\n        decimalSeperator: '.',\r\n        groupSeperator: ','\r\n    };\r\n\r\n    $.fn.numericVal = function (value) {\r\n        if (!arguments.length) {\r\n            if ($(this).val() === null || $(this).val() === undefined || $(this).val() === '')\r\n                return null;\r\n            return new Number($(this).val());\r\n        } else {\r\n            return this.each(function () {\r\n                var $this = $(this);\r\n                $this.val(value.toString());\r\n            });\r\n        }\r\n    };\r\n\r\n    $.fn.numericInput = function (config) {\r\n        config = $.extend({}, numericInputConfig, config);\r\n\r\n        return this.each(function () {\r\n            var $this = $(this);\r\n            var lastValidValue = $this.val();\r\n            var valueChanged = config.valueChanged;\r\n            var valid = config.valid;\r\n            var invalid = config.invalid;\r\n            var decimalSeperator = config.decimalSeperator;\r\n            var groupSeperator = config.groupSeperator;\r\n\r\n            $this\r\n                .on('keydown', function (e) {\r\n\t\t\t\t    // backspace, delete, tab, escape, enter, comma and all forms of .\r\n\t\t\t\t    if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 188, 110, 190, 109, 189]) !== -1 ||\r\n\t\t\t\t        // Ctrl+A\r\n\t\t\t\t\t\t(e.keyCode == 65 && e.ctrlKey === true) ||\r\n\t\t\t\t        // Ctrl+C\r\n\t\t\t\t\t\t(e.keyCode == 67 && e.ctrlKey === true) ||\r\n\t\t\t\t        // Ctrl+V\r\n\t\t\t\t\t\t(e.keyCode == 86 && e.ctrlKey === true) ||\r\n\t\t\t\t        // home, end, left, right\r\n\t\t\t\t\t\t(e.keyCode >= 35 && e.keyCode <= 39)) {\r\n\t\t\t\t        return;\r\n\t\t\t\t    }\r\n\r\n\t\t\t\t    // check for numbers\r\n\t\t\t\t    if ((e.shiftKey && (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105))\r\n\t\t\t\t        e.preventDefault();\r\n\t\t\t\t})\r\n                .on('keyup', function () {\r\n                    var rawValue = $this.val()\r\n                        .replace(groupSeperator, \"\")\r\n                        .replace(decimalSeperator, \".\");\r\n\t\t\t\t    if (rawValue === '' || rawValue === '-') {\r\n\t\t\t\t        lastValidValue = rawValue;\r\n\t\t\t\t        valueChanged(null);\r\n\t\t\t\t        if (rawValue === '')\r\n\t\t\t\t            valid();\r\n\t\t\t\t        else\r\n\t\t\t\t            invalid();\r\n\t\t\t\t        return;\r\n\t\t\t\t    }\r\n\r\n\t\t\t\t    if (!$.isNumeric(rawValue)) {\r\n\t\t\t\t        $this.val(lastValidValue);\r\n\t\t\t\t        valid();\r\n\t\t\t\t        return;\r\n\t\t\t\t    }\r\n\r\n\t\t\t\t    var numericValue = new Number(rawValue);\r\n\r\n                    // note you can only check the lower boundary after the text field has lost the focus\r\n\t\t\t\t    if (config.minValue != null && numericValue < config.minValue) {\r\n\t\t\t\t        lastValidValue = numericValue;\r\n\t\t\t\t        valueChanged(null);\r\n\t\t\t\t        invalid();\r\n\t\t\t\t    } else if (config.maxValue != null && numericValue > config.maxValue) {\r\n\t\t\t\t        lastValidValue = config.maxValue;\r\n\t\t\t\t        $this.val(config.maxValue);\r\n\t\t\t\t        valueChanged(config.maxValue);\r\n\t\t\t\t        valid();\r\n\t\t\t\t    } else {\r\n\t\t\t\t        lastValidValue = numericValue;\r\n\t\t\t\t        valueChanged(numericValue);\r\n\t\t\t\t        valid();\r\n\t\t\t\t    }\r\n\t\t\t\t})\r\n                .on('blur', function () {\r\n                    var rawValue = $this.val()\r\n                        .replace(groupSeperator, \"\")\r\n                        .replace(decimalSeperator, \".\");\r\n\r\n\t                if (rawValue && isNaN(rawValue)) {\r\n\t                    $this.val('');\r\n\t                    valueChanged(null);\r\n\t                    valid();\r\n\t                } else if (config.minValue != null && rawValue) {\r\n\t                    var numericValue = new Number(rawValue);\r\n\t                    if (numericValue < config.minValue) {\r\n\t                        lastValidValue = config.minValue;\r\n\t                        $this.val(config.minValue);\r\n\t                        valueChanged(config.minValue);\r\n\t                    }\r\n\t                    valid();\r\n\t                }\r\n\t            });\r\n        });\r\n    };\r\n});\n","define('drops/numericInput/numericInput',[\r\n    'jquery',\r\n    'lq',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'jquery.numpadDecSeparator',\r\n    'lq/util',\r\n    'lq/constants',\r\n    'lq/tooltip',\r\n    'lq/numeric',\r\n    'lq/required'\r\n], function($, lq, Drop, Style, numpadDecSeparator, util, constants, Tooltip, numeric, Required) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            title: {\r\n                option: Tooltip.hardcoded\r\n            },\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded',\r\n                autocomplete: 'on'\r\n            },\r\n            changedDelay: 500\r\n        }\r\n    };\r\n\r\n    function NumericInput(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing) || {};\r\n\r\n        this.typeOfCurrentValue = constants.valueTypes.decimal;\r\n    }\r\n\r\n    Drop.extend(NumericInput, Drop);\r\n\r\n    NumericInput.typeName = 'NumericInput';\r\n\r\n    NumericInput.prototype.hasMaxValue = function() {\r\n        return this.data.hasMaxValue || this.data.hasMaxLength;\r\n    };\r\n\r\n    NumericInput.prototype.hasMinValue = function () {\r\n        return !!this.data.hasMinValue;\r\n    };\r\n\r\n    NumericInput.prototype.getMaxLength = function () {\r\n        if (this.data.hasMaxLength)\r\n            return this.data.maxLength;\r\n        return this.data.maxValue.toString().length;\r\n    };\r\n\r\n    NumericInput.prototype.getMinValue = function () {\r\n        return this.data.minValue;\r\n    };\r\n\r\n    NumericInput.prototype.getMaxValue = function () {\r\n        if (this.data.hasMaxValue)\r\n            return this.data.maxValue;\r\n        return Math.pow(10, new Number(this.data.maxLength)) - 1;\r\n    };\r\n\r\n    NumericInput.prototype.updatePrefix = function() {\r\n        if (this.data.prefix !== null || this.data.prefix !== '')\r\n            this.$prefix.text(this.data.prefix);\r\n        else\r\n            this.$prefix.text('');\r\n    };\r\n\r\n    NumericInput.prototype.renderStyles = function () {\r\n        Style.renderStyles(this, null, this.$input);\r\n    };\r\n\r\n    NumericInput.prototype.createInput = function () {\r\n        if (this.data.enableNumericKeypad === true) {\r\n            var $numeric = $('<input type=\"number\" />');\r\n\r\n            if (this.hasMaxValue())\r\n                $numeric.attr('max', this.getMaxValue());\r\n\r\n            if (this.hasMinValue())\r\n                $numeric.attr('min', this.getMinValue());\r\n\r\n            return $numeric;\r\n        }\r\n\r\n        var inputType = this.data.maskedInput ? 'password' : 'text';  //type needs to be set before creating, because it cannot be changed\r\n        var $input = $('<input type=' + inputType + ' />')\r\n            .numericInput({\r\n                maxValue: this.hasMaxValue() ? this.getMaxValue() : undefined,\r\n                minValue: this.hasMinValue() ? this.getMinValue() : undefined,\r\n                groupSeperator: this.formatter.groupSeperator,\r\n                decimalSeperator: this.formatter.decimalSeperator\r\n            })\r\n            .numpadDecSeparator({\r\n                separator: this.formatter.decimalSeperator\r\n            });\r\n\r\n        if (this.hasMaxValue())\r\n            $input.attr('max', this.getMaxLength());\r\n\r\n        return $input;\r\n    };\r\n\r\n    NumericInput.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.piping.required.apply(this);\r\n        this.formatter = this.piping.formatting.createFormatter(this.data.formatting);\r\n        Required.prototype.addRemoveRequiredIndicator(this);\r\n\r\n        this.$prefix = $('<span />')\r\n            .css({\r\n                'float': 'left',\r\n                paddingRight: '4px',\r\n                fontFamily: 'Verdana, Geneva, sans-serif',\r\n                fontSize: '14px',\r\n                lineHeight: '1'\r\n            })\r\n            .appendTo(this.$element);\r\n\r\n        this.$span = $('<span />')\r\n            .css({\r\n                display: 'block'\r\n            })\r\n            .appendTo(this.$element);\r\n\r\n        this.$input = this.createInput()\r\n            .attr('name', this.data.name)\r\n            .attr('id', this.rootDrop.instanceId + '_' + this.data.id)\r\n            .attr('tabindex', this.data.tabIndex)\r\n            .attr('placeholder', this.data.watermark)\r\n            .attr('autocomplete', this.data.autocomplete)\r\n            .addClass('boxToBorderSize')\r\n            .css({\r\n                width: '100%',\r\n                height: this.data.size.y + 'px'\r\n            })\r\n            .appendTo(this.$span);\r\n\r\n        if (this.data.maskedInput) {\r\n            this.addTogglePassword();\r\n            this.changeOpenEyeIcon();\r\n        } else {\r\n            this.removeTogglePassword();\r\n        }\r\n\r\n\r\n        this.tooltip = new Tooltip(this, this.data.title, this.$input);\r\n        this.tooltip.update();\r\n\r\n        this.applyEventTrigger('focusLost', 'blur', this.$input);\r\n\r\n        var self = this;\r\n        var changedEvent = this.getEventDataFor('changed');\r\n        if (changedEvent.enabled) {\r\n            this.subscribeEventHandler(this.$input, 'keydown', function () {\r\n                if (!_.has(self, 'lastChangedEventValue'))\r\n                    self.lastChangedEventValue = self.getValue();\r\n            });\r\n            this.subscribeEventHandler(this.$input, 'keypress input', _.debounce(function () {\r\n                if (self.lastChangedEventValue !== self.getValue()) {\r\n                    self.lastChangedEventValue = self.getValue();\r\n                    self.triggerEvent(changedEvent.raisedEventName);\r\n                }\r\n            }, this.data.changedDelay));\r\n        }\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize')\r\n            .css({\r\n                whiteSpace: 'pre-wrap',\r\n                width: this.data.size.x + 'px',\r\n                height: this.data.size.y + 'px'\r\n            });\r\n\r\n        this.renderStyles();\r\n\r\n        this.$input.on('keyup', function (e) {\r\n            self.cutDecimals();\r\n            self.updateRequiredIndicator();\r\n\r\n            if (e.keyCode === 13)\r\n                self.triggerEventIfEnabled('enterPressed');\r\n        });\r\n\r\n        if (this.data.readOnly)\r\n            this.$input.prop('readonly', true);\r\n\r\n        this.updatePrefix();\r\n\r\n        this.applyPosition();\r\n    };\r\n\r\n    NumericInput.prototype.focus = function () {\r\n        this.$input.trigger('focus');\r\n    };\r\n\r\n    NumericInput.prototype.getDefaultEventArg = function () {\r\n        return this.getValue();\r\n    };\r\n\r\n    NumericInput.prototype.getValue = function () {\r\n        if (this.$input.val() === '')\r\n            return null;\r\n\r\n        // when using <input type=\"number\"> we cannot control the formatting of numbers\r\n        if (this.data.enableNumericKeypad === true)\r\n            return this.$input.val();\r\n\r\n        return this.formatter.convertToLicquidFormat(this.typeOfCurrentValue, this.$input.val());\r\n    };\r\n\r\n    NumericInput.prototype.clearValue = function () {\r\n        this.$input.val('');\r\n        this.updateRequiredIndicator();\r\n        this.lastChangedEventValue = this.getValue();\r\n    };\r\n\r\n    NumericInput.prototype.setValue = function (update) {\r\n        if (update.type === constants.valueTypes.string || !update.type) {\r\n            this.typeOfCurrentValue = constants.valueTypes.decimal;\r\n        } else {\r\n            this.typeOfCurrentValue = update.type;\r\n        }\r\n\r\n        // when using <input type=\"number\"> we cannot control the formatting of numbers\r\n        if (this.data.enableNumericKeypad === true) {\r\n            this.$input.val(update.value);\r\n            this.lastChangedEventValue = update.value;\r\n        } else {\r\n            var text = this.formatter.convertFromLicquidFormat(this.typeOfCurrentValue, update.value);\r\n            this.$input.val(text);\r\n            this.lastChangedEventValue = this.getValue();\r\n        }\r\n\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    NumericInput.prototype.hasValue = function () {\r\n        var value = this.getValue();\r\n\r\n        if (value === undefined || value === null) {\r\n            return false;\r\n        }\r\n\r\n        if (value.length === 0) {\r\n            return false;\r\n        }\r\n\r\n        if ($.isNumeric(value)) {\r\n            return true;\r\n        }\r\n\r\n        return false;\r\n    };\r\n\r\n    NumericInput.prototype.addTogglePassword = function () {\r\n        var self = this;\r\n        this.$togglePassword = $('<div class = \"input-fa input-fa-eye\">')\r\n            .prop('title', 'Show password')\r\n            .css({\r\n                position: 'relative',\r\n                top: '-50%',\r\n                left: '-5px',\r\n                marginTop: '-8px',\r\n                float: 'right'\r\n            })\r\n            .on('click', function () {\r\n                if (self.$input[0].type === \"password\") {\r\n                    self.changeClosedEyeIcon();\r\n                } else {\r\n                    self.changeOpenEyeIcon();\r\n                }\r\n            })\r\n            .appendTo(this.$element);\r\n    };\r\n\r\n    NumericInput.prototype.removeTogglePassword = function () {\r\n        if (this.$togglePassword) {\r\n            this.$togglePassword.remove();\r\n            delete this.$togglePassword;\r\n        }\r\n    };\r\n\r\n    NumericInput.prototype.getOpenEyeImagePath = function () {\r\n        if (this.data.physicalFileOpenEye)\r\n            return lq.getTenantUploads(this.data.physicalFileOpenEye);\r\n\r\n        return null;\r\n    };\r\n\r\n    NumericInput.prototype.getClosedEyeImagePath = function () {\r\n        if (this.data.physicalFileClosedEye)\r\n            return lq.getTenantUploads(this.data.physicalFileClosedEye);\r\n\r\n        return null;\r\n    };\r\n\r\n    NumericInput.prototype.changeOpenEyeIcon = function () {\r\n        if (!this.$togglePassword) {\r\n            this.addTogglePassword();\r\n        }\r\n        var type = 'open';\r\n        var imagePath = this.getOpenEyeImagePath();\r\n        if (imagePath && this.data.maskedInput && this.data.useCustomImage) {\r\n            this.setCustomEyeImage(imagePath, type);\r\n        } else if (this.data.maskedInput) {\r\n            this.clearCustomEyeImage(type);\r\n        }\r\n        this.$input[0].type = \"password\";\r\n    }\r\n\r\n    NumericInput.prototype.changeClosedEyeIcon = function () {\r\n        if (!this.$togglePassword) {\r\n            this.addTogglePassword();\r\n        }\r\n        var type = 'closed';\r\n        var imagePath = this.getClosedEyeImagePath();\r\n        if (imagePath && this.data.maskedInput && this.data.useCustomImage) {\r\n            this.setCustomEyeImage(imagePath, type);\r\n        } else if (this.data.maskedInput) {\r\n            this.clearCustomEyeImage(type);\r\n        }\r\n\r\n        this.$input[0].type = \"text\";\r\n    }\r\n\r\n    NumericInput.prototype.setCustomEyeImage = function (image, type) {\r\n        this.$togglePassword\r\n            .css({\r\n                width: '16px',\r\n                height: '16px',\r\n                backgroundImage: 'url(' + require.toUrl(image) + ')',\r\n                backgroundSize: '100% 100%'\r\n            })\r\n            .removeClass('input-fa-eye input-fa-eye-slash');\r\n\r\n        if (type === 'closed') {\r\n            $(this.$togglePassword)\r\n                .prop('title', 'Hide password');\r\n        }\r\n        else if (type === 'open') {\r\n            $(this.$togglePassword)\r\n                .prop('title', 'Show password');\r\n        }\r\n    };\r\n\r\n    NumericInput.prototype.clearCustomEyeImage = function (type) {\r\n        $(this.$togglePassword)\r\n            .css({\r\n                width: '',\r\n                height: '',\r\n                backgroundImage: '',\r\n                backgroundSize: ''\r\n            });\r\n        if (type === 'closed') {\r\n            $(this.$togglePassword)\r\n                .prop('title', 'Hide password')\r\n                .addClass('input-fa-eye-slash')\r\n                .removeClass('input-fa-eye');\r\n        }\r\n        else if (type === 'open') {\r\n            $(this.$togglePassword)\r\n                .prop('title', 'Show password')\r\n                .addClass('input-fa-eye')\r\n                .removeClass('input-fa-eye-slash');\r\n        }\r\n    };\r\n\r\n    NumericInput.prototype.cutDecimals = function () {\r\n        if (this.$input.val() && this.data.hasMaxDecimals) {\r\n            var prec = parseInt(this.formatter.decimalPrecision);\r\n            var splited = this.$input.val().split(this.formatter.decimalSeperator);\r\n            if (typeof(prec) === 'number' && prec > -1) {\r\n                if (splited.length > 1 && splited[1].length > prec) {\r\n                    this.$input.val(splited[0] + this.formatter.decimalSeperator + splited[1].substring(0, prec));\r\n                } else if (prec === 0) {\r\n                    this.$input.val(splited[0]);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    return NumericInput;\r\n});\n","define('drops/pagination/pagination',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style'\r\n], function ($, Drop, Style) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            showFirst: true,\r\n            firstLabel: '❮❮',\r\n            showPrevious: true,\r\n            previousLabel: '❮',\r\n            showNext: true,\r\n            nextLabel: '❯',\r\n            showLast: true,\r\n            lastLabel: '❯❯',\r\n            showLabel: true,\r\n            labelTemplate: '${currentPage}/${totalNumberOfPages}',\r\n            verticalAlignment: 'top'\r\n        }\r\n    };\r\n\r\n    function Pagination(options) {\r\n        Drop.call(this, $('<div class=\"pagination-drop boxToBorderSize\" />'), defaults, options);\r\n\r\n        Style.renderStyles(this);\r\n    }\r\n\r\n    Drop.extend(Pagination, Drop);\r\n\r\n    Pagination.typeName = 'Pagination';\r\n\r\n    Pagination.prototype.postRender = function () {\r\n        this.piping.visibility.apply(this);\r\n\r\n        this.applyPosition();\r\n\r\n        this.targetDrop = this.piping.dropFactory.findDropByName(this.data.targetDrop);\r\n        if (this.targetDrop)\r\n            this.targetDrop.withOnPageOpened(this.pageOpened.bind(this));\r\n    };\r\n\r\n    Pagination.prototype.createPager = function () {\r\n        this.$pager = $('<div class=\"pager-container\" />');\r\n\r\n        if (this.data.showFirst || this.data.showPrevious) {\r\n            var $back = $('<div class=\"back-buttons\" />');\r\n\r\n            if (this.data.showFirst) {\r\n                this.$first = $('<span class=\"show-first clickable\" />')\r\n                    .text(this.data.firstLabel)\r\n                    .on('click', this.goToFirstPage.bind(this))\r\n                    .appendTo($back);\r\n                Style.renderStyles(this, null, this.$first, this.data.styles, 'navigation', 'navigationHover');\r\n            }\r\n\r\n            if (this.data.showPrevious) {\r\n                this.$previous = $('<span class=\"show-previous clickable\" />')\r\n                    .text(this.data.previousLabel)\r\n                    .on('click', this.goToPreviousPage.bind(this))\r\n                    .appendTo($back);\r\n                Style.renderStyles(this, null, this.$previous, this.data.styles, 'navigation', 'navigationHover');\r\n            }\r\n\r\n            this.$pager.append($back);\r\n        }\r\n\r\n        if (this.data.showLabel) {\r\n            this.$label = $('<div class=\"paging-info\" />')\r\n                .appendTo(this.$pager);\r\n            Style.renderStyles(this, null, this.$label, this.data.styles, 'label', '');\r\n        }\r\n\r\n        if (this.data.showLast || this.data.showNext) {\r\n            var $forward = $('<div class=\"forward-buttons\" />');\r\n\r\n            if (this.data.showNext) {\r\n                this.$next = $('<span class=\"show-next clickable\" />')\r\n                    .text(this.data.nextLabel)\r\n                    .on('click', this.goToNextPage.bind(this))\r\n                    .appendTo($forward);\r\n                Style.renderStyles(this, null, this.$next, this.data.styles, 'navigation', 'navigationHover');\r\n            }\r\n\r\n            if (this.data.showLast) {\r\n                this.$last = $('<span class=\"show-last clickable\" />')\r\n                    .text(this.data.lastLabel)\r\n                    .on('click', this.goToLastPage.bind(this))\r\n                    .appendTo($forward);\r\n                Style.renderStyles(this, null, this.$last, this.data.styles, 'navigation', 'navigationHover');\r\n            }\r\n\r\n            this.$pager.append($forward);\r\n        }\r\n\r\n        if (this.data.verticalAlignment === 'middle') {\r\n            this.$element.css({\r\n                display: 'flex',\r\n                flexDirection: 'column',\r\n                justifyContent: 'center'\r\n            });\r\n        } else if (this.data.verticalAlignment === 'bottom') {\r\n            this.$element.css({\r\n                display: 'flex',\r\n                flexDirection: 'column',\r\n                justifyContent: 'flex-end'\r\n            });\r\n        } else {\r\n            this.$element.css({\r\n                display: 'inherit',\r\n                flexDirection: '',\r\n                justifyContent: ''\r\n            });\r\n        }\r\n\r\n        this.$pager.appendTo(this.$element);\r\n    };\r\n\r\n    Pagination.prototype.goToFirstPage = function () {\r\n        if (this.targetDrop)\r\n            this.targetDrop.openPage(0);\r\n    };\r\n\r\n    Pagination.prototype.goToPreviousPage = function () {\r\n        if (this.targetDrop)\r\n            this.targetDrop.openPage(this.currentPage - 1);\r\n    };\r\n\r\n    Pagination.prototype.goToNextPage = function () {\r\n        if (this.targetDrop)\r\n            this.targetDrop.openPage(this.currentPage + 1);\r\n    };\r\n\r\n    Pagination.prototype.goToLastPage = function () {\r\n        if (this.targetDrop)\r\n            this.targetDrop.openPage(this.totalNumberOfPages);\r\n    };\r\n\r\n    Pagination.prototype.pageOpened = function (totalNumberOfResults, currentPage, sizeOfPage) {\r\n        this.totalNumberOfResults = totalNumberOfResults;\r\n        this.currentPage = currentPage;\r\n        this.sizeOfPage = sizeOfPage;\r\n        this.totalNumberOfPages = Math.floor(totalNumberOfResults / sizeOfPage - 0.01);\r\n\r\n        if (!this.$pager)\r\n            this.createPager();\r\n\r\n        var isFirstPage = currentPage === 0;\r\n        var isLastPage = currentPage === this.totalNumberOfPages;\r\n\r\n        var firstRecordCurrentPage = (currentPage * sizeOfPage) + 1;\r\n        var lastRecordCurrentPage = isLastPage ? firstRecordCurrentPage + (totalNumberOfResults % sizeOfPage) - 1 : (currentPage + 1) * sizeOfPage;\r\n\r\n        if (this.$first) this.$first.toggleClass('not-visible', isFirstPage);\r\n        if (this.$previous) this.$previous.toggleClass('not-visible', isFirstPage);\r\n        if (this.$next) this.$next.toggleClass('not-visible', isLastPage);\r\n        if (this.$last) this.$last.toggleClass('not-visible', isLastPage);\r\n\r\n        if (this.$label) {\r\n            this.$label.text(this.data.labelTemplate\r\n                .replace(/\\${currentPage}/g, currentPage + 1)\r\n                .replace(/\\${totalNumberOfPages}/g, this.totalNumberOfPages + 1)\r\n                .replace(/\\${firstRecordCurrentPage}/g, firstRecordCurrentPage)\r\n                .replace(/\\${lastRecordCurrentPage}/g, lastRecordCurrentPage)\r\n                .replace(/\\${totalNumberOfRecords}/g, totalNumberOfResults));\r\n        }\r\n    };\r\n\r\n    return Pagination;\r\n});\n","define('drops/pattern/pattern',[\r\n    'jquery',\r\n    'lq/drop'\r\n], function ($, Drop) {\r\n\t'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            selectedPattern: 'weave'\r\n        }\r\n    };\r\n    \r\n    function Pattern(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n        this.$element.addClass(this.data.selectedPattern);\r\n\t};\r\n\r\n    Drop.extend(Pattern, Drop);\r\n\r\n    Pattern.typeName = 'Pattern';\r\n\r\n    Pattern.prototype.preRender = function () {\r\n        this.applyPosition();\r\n    };\r\n\r\n    return Pattern;\r\n});\n","define('drops/payment/payment',[\r\n    'jquery',\r\n    'lq',\r\n    'lq/drop'\r\n], function ($, lq, Drop) {\r\n    'use strict';\r\n\r\n    function Payment(options) {\r\n        var $elem =  $('<form method=\"post\" action=\"https://secure.ogone.com/ncol/prod/orderstandard.asp\" id=\"paymentform\" name=\"paymentform\"></form>');\r\n        Drop.call(this, $($elem), options);\r\n    };\r\n\r\n    Drop.extend(Payment);\r\n\r\n    Payment.typeName = 'Payment';\r\n\r\n    // note: building and submitting the form after doing an aynchronous call to fetch the data is blocked by most browsers\r\n    // so instead we prefetch the data and build the form on page load\r\n    Payment.prototype.preRender = function () {\r\n        var data = {\r\n            actionId: this.parent.data.id,\r\n            morphId: this.data.id,\r\n            parameters: this.piping.parameters.getNonSystemParameters()\r\n        };\r\n\r\n        var self = this;\r\n\r\n        this.piping.dispatcher.dispatch('Query/GetPaymentInfo', data)\r\n            .done(function (result) {\r\n                var form = $('#paymentform');\r\n                $('<input type=\"hidden\" id=\"PSPID\" name=\"PSPID\">').val(result[\"OGONE_PSPID\"]).appendTo(form);\r\n                $('<input type=\"hidden\" id=\"ORDERID\" name=\"ORDERID\">').val(result[\"OGONE_ORDERID\"]).appendTo(form);\r\n                $('<input type=\"hidden\" id=\"AMOUNT\" name=\"AMOUNT\">').val(result[\"OGONE_AMOUNT\"]).appendTo(form);\r\n                $('<input type=\"hidden\" id=\"CURRENCY\" name=\"CURRENCY\">').val(result[\"OGONE_CURRENCY\"]).appendTo(form);\r\n                $('<input type=\"hidden\" id=\"LANGUAGE\" name=\"LANGUAGE\">').val(result[\"OGONE_LANGUAGE\"]).appendTo(form);\r\n\r\n                var acceptUrl = location.protocol + \"//\" + location.host + lq.getTenantUrl('LicquidAction/AcceptPayment/') + self.data.id + '?ORDERID=' + result[\"OGONE_ORDERID\"];\r\n                $('<input type=\"hidden\" id=\"ACCEPTURL\" name=\"ACCEPTURL\">').val(acceptUrl).appendTo(form);\r\n\r\n                var cancelUrl = location.protocol + \"//\" + location.host + lq.getTenantUrl('LicquidAction/Get/') + self.data.cancelRedirect;\r\n                $('<input type=\"hidden\" id=\"DECLINEURL\" name=\"DECLINEURL\">').val(cancelUrl).appendTo(form);\r\n                $('<input type=\"hidden\" id=\"EXCEPTIONURL\" name=\"EXCEPTIONURL\">').val(cancelUrl).appendTo(form);\r\n                $('<input type=\"hidden\" id=\"CANCELURL\" name=\"CANCELURL\">').val(cancelUrl).appendTo(form);\r\n            });\r\n    };\r\n\r\n    Payment.prototype.executePayment = function () {\r\n        $('#paymentform').submit();\r\n    };\r\n\r\n    return Payment;\r\n});\r\n    \r\n    \r\n\r\n\r\n\r\n\r\n\n","define('lq/dayTime',[\r\n    'jquery'\r\n], function ($) {\r\n    'use strict';\r\n    \r\n    var fixBetween = function (value, min, max) {\r\n        return Math.max(min, Math.min(value, max));\r\n    };\r\n\r\n    var getHoursAndMinutes = function (dayTimeString) {\r\n        dayTimeString = dayTimeString || null;\r\n        if (dayTimeString == null) {\r\n            return null;\r\n        }\r\n\r\n        var parts = dayTimeString.split(':', 2);\r\n        var hourPart;\r\n        var minutePart;\r\n        if (parts.length == 1) {\r\n            hourPart = dayTimeString.substr(0, Math.min(dayTimeString.length, 2));\r\n            minutePart = dayTimeString.length > 2 ? dayTimeString.substr(2, Math.min(dayTimeString.length - 2, 2)) : '00';\r\n        } else {\r\n            hourPart = parts[0];\r\n            minutePart = parts[1];\r\n        }\r\n\r\n        if ($.isNumeric(hourPart)) {\r\n        } else if (hourPart.length == 0) {\r\n            hourPart = 0;\r\n        } else {\r\n            return null;\r\n        }\r\n\r\n        if ($.isNumeric(minutePart)) {\r\n        } else if (minutePart.length == 0) {\r\n            minutePart = 0;\r\n        } else {\r\n            return null;\r\n        }\r\n\r\n        hourPart = $.isNumeric(hourPart) ? hourPart : 0;\r\n        minutePart = $.isNumeric(minutePart) ? minutePart : 0;\r\n\r\n        return {\r\n            hours: hourPart,\r\n            minutes: minutePart\r\n        }\r\n    };\r\n\r\n    var toTimeString = function(hours, minutes) {\r\n        var stringSingsTwo = function (val) {\r\n            var result = val.toString();\r\n            while (result.length < 2) {\r\n                result = '0' + result;\r\n            }\r\n            return result;\r\n        };\r\n        return stringSingsTwo(hours) + ':' + stringSingsTwo(minutes);\r\n    };\r\n\r\n    return {\r\n        fromTicks: function (ticks) {\r\n            if (!ticks && ticks !== 0) {\r\n                return '--:--';\r\n            }\r\n            var hours = Math.floor(ticks / 3600);\r\n            var minutes = Math.floor((ticks - hours * 3600) / 60);\r\n            return toTimeString(hours, minutes);\r\n        },\r\n\r\n        fromDate: function (piping, dateString) {\r\n            if (!dateString) {\r\n                return '--:--';\r\n            }\r\n            var date = piping.formatting.createFormatter().parseLicquidDate(dateString);\r\n            if (date == null) {\r\n                throw \"The value '\" + dateString + \"' is not a valid date/time\";\r\n            }\r\n            return toTimeString(date.getHours(), date.getMinutes());\r\n        },\r\n\r\n        toTicks: function (dayTimeString) {\r\n            var hoursAndMinutes = getHoursAndMinutes(dayTimeString);\r\n            if (hoursAndMinutes == null) return null; \r\n            return fixBetween(hoursAndMinutes.hours, 0, 23) * 3600 + fixBetween(hoursAndMinutes.minutes, 0, 59) * 60;\r\n        },\r\n\r\n        toDate: function (piping, dayTimeString) {\r\n            var hoursAndMinutes = getHoursAndMinutes(dayTimeString);\r\n            if (hoursAndMinutes == null) return null;\r\n            var date = new Date(1753, 1, 1, hoursAndMinutes.hours, hoursAndMinutes.minutes, 0);\r\n            return piping.formatting.createFormatter().formatLicquidDate(date);\r\n        }\r\n    };\r\n});\n","define('drops/planningGraph/planninggraphimpl',[\r\n    'jquery',\r\n    'lq/dayTime'\r\n], function ($, dayTime) {\r\n    'use strict';\r\n\r\n    function PlanningGraphImpl(container, piping) {\r\n        this.container = container;\r\n        this.graphData = {};\r\n        this.system = {};\r\n        this.parameters = piping.parameters;\r\n        this.formatter = piping.formatting.createFormatter();\r\n    };\r\n\r\n    PlanningGraphImpl.prototype.planningGraphMouseUp = function () {\r\n        $(document).off('mousemove');\r\n        $(document).off('touchmove');\r\n        $(\"body\").css('cursor', 'default');\r\n    };\r\n\r\n    PlanningGraphImpl.prototype.planningGraphMouseDown = function (e) {\r\n        this.system.cursorX = e.clientX;\r\n\r\n        var self = this;\r\n        var clickedDiv = $($(e.target || e.srcElement)[0]);\r\n        if (!clickedDiv.hasClass(\"selected\") && !clickedDiv.parent().hasClass(\"selected\")) return;\r\n        var type = clickedDiv.attr('barType');\r\n        var resizeDirection = clickedDiv.attr('resizeDirection');\r\n        this.system.draggingDiv = $(e.target || e.srcElement)[0];\r\n\r\n        \r\n        switch (type) {\r\n            case 'dragHandle':\r\n                this.system.currentLeft = parseFloat(this.system.draggingDiv.style.left);\r\n                this.system.currentRight = parseFloat(this.system.draggingDiv.style.right);\r\n\r\n                $(document).on('mousemove', function (e) {\r\n                    self.divMove(e);\r\n                });\r\n                $(document).on('touchmove',function (e) {\r\n                    if (e.originalEvent.touches) e = e.originalEvent.touches[0];\r\n                    self.divMove(e);\r\n                });\r\n\r\n                break;\r\n            case 'resizeHandle':\r\n                $(\"body\").css('cursor', $(this.system.draggingDiv).css('cursor'));\r\n\r\n                this.system.currentLeft = parseFloat($(this.system.draggingDiv).parent()[0].style.left);\r\n                this.system.currentRight = parseFloat($(this.system.draggingDiv).parent()[0].style.right);\r\n\r\n                if (resizeDirection == 'left') {\r\n                    $(document).on('mousemove', function (e) {\r\n                        self.divResizeLeft(e);\r\n                    });\r\n                    $(document).on('touchmove',function (e) {\r\n                        if (e.originalEvent.touches) e = e.originalEvent.touches[0];\r\n                        self.divResizeLeft(e);\r\n                    });\r\n                    break;\r\n                }\r\n                if (resizeDirection == 'right') {\r\n                    $(document).on('mousemove', function (e) {\r\n                        self.divResizeRight(e);\r\n                    });\r\n                    $(document).on('touchmove',function (e) {\r\n                        if (e.originalEvent.touches) e = e.originalEvent.touches[0];\r\n                        self.divResizeRight(e);\r\n                    });\r\n                }\r\n                break;\r\n        }\r\n    };\r\n\r\n    PlanningGraphImpl.prototype.getLeftLimit = function (rowArId, planArId) {\r\n        var minLeft = this.graphData.rangeMin; //this.graphData.barValues[rowArId].Start;\r\n        var myStart = this.graphData.barValues[rowArId].Plannings[planArId].Start;\r\n\r\n        for (var i = 0; i < this.graphData.barValues[rowArId].Plannings.length; i++) {\r\n            if (i != planArId) {\r\n                var end = this.graphData.barValues[rowArId].Plannings[i].End;\r\n\r\n                if (end > minLeft && end <= (myStart + (this.graphData.interval * 0.5))) {\r\n                    minLeft = end;\r\n                }\r\n            }\r\n        }\r\n\r\n        minLeft = (minLeft - this.graphData.rangeMin);\r\n        return minLeft * this.system.itemWidth;\r\n    };\r\n\r\n    PlanningGraphImpl.prototype.getRightLimit = function (rowArId, planArId) {\r\n        var minRight = this.graphData.rangeMax; //this.graphData.barValues[rowArId].End;\r\n        var myEnd = this.graphData.barValues[rowArId].Plannings[planArId].End;\r\n\r\n        for (var i = 0; i < this.graphData.barValues[rowArId].Plannings.length; i++) {\r\n            if (i != planArId) {\r\n                var start = this.graphData.barValues[rowArId].Plannings[i].Start;\r\n\r\n                if (start < minRight && start >= (myEnd - (this.graphData.interval * 0.5))) {\r\n                    minRight = start;\r\n                }\r\n            }\r\n        }\r\n\r\n        minRight = (this.graphData.rangeMax - minRight);\r\n        return minRight * this.system.itemWidth;\r\n    };\r\n\r\n    PlanningGraphImpl.prototype.divResizeLeft = function (e) {\r\n        var plannerAvailableWidth = $(this.container).find(\".colPlanner\").width();\r\n        var rowArId = $(this.system.draggingDiv).parent().parent().parent().attr('arId');\r\n        var planArId = $(this.system.draggingDiv).parent().attr('arId');\r\n\r\n        var offSet = (e.clientX - this.system.cursorX) / plannerAvailableWidth * 100;\r\n        offSet = Math.round(offSet / (this.system.itemWidth * this.graphData.interval)) * (this.system.itemWidth * this.graphData.interval);\r\n\r\n        var minLeft = this.getLeftLimit(rowArId, planArId);\r\n        var maxLeft = 100 - parseFloat($(this.system.draggingDiv).parent()[0].style.right) - (this.system.itemWidth * this.graphData.interval);\r\n\r\n        if (minLeft < 0) minLeft = 0;\r\n        if (maxLeft > 100) maxLeft = 100;\r\n\r\n        var newLeft = this.system.currentLeft + offSet;\r\n\r\n        if (newLeft < minLeft) newLeft = minLeft;\r\n        if (newLeft > maxLeft) newLeft = maxLeft;\r\n\r\n        $(this.system.draggingDiv).parent()[0].style.left = newLeft + '%';\r\n\r\n        this.setNewTotal($(this.system.draggingDiv).parent());\r\n    };\r\n\r\n    PlanningGraphImpl.prototype.divResizeRight = function (e) {\r\n        var plannerAvailableWidth = $(this.container).find(\".colPlanner\").width();\r\n        var rowArId = $(this.system.draggingDiv).parent().parent().parent().attr('arId');\r\n        var planArId = $(this.system.draggingDiv).parent().attr('arId');\r\n\r\n        var offSet = (e.clientX - this.system.cursorX) / plannerAvailableWidth * 100;\r\n        offSet = Math.round(offSet / (this.system.itemWidth * this.graphData.interval)) * (this.system.itemWidth * this.graphData.interval);\r\n\r\n        var minRight = this.getRightLimit(rowArId, planArId);\r\n        var maxRight = 100 - parseFloat($(this.system.draggingDiv).parent()[0].style.left) - (this.system.itemWidth * this.graphData.interval);\r\n\r\n        if (minRight < 0) minRight = 0;\r\n        if (maxRight > 100) maxRight = 100;\r\n\r\n        var newRight = this.system.currentRight - offSet;\r\n\r\n        if (newRight < minRight) newRight = minRight;\r\n        if (newRight > maxRight) newRight = maxRight;\r\n\r\n        $(this.system.draggingDiv).parent()[0].style.right = newRight + '%';\r\n\r\n        this.setNewTotal($(this.system.draggingDiv).parent());\r\n    };\r\n\r\n    PlanningGraphImpl.prototype.divMove = function (e) {\r\n        var plannerAvailableWidth = $(this.container).find(\".colPlanner\").width();\r\n        var rowArId = $(this.system.draggingDiv).parent().parent().attr('arId');\r\n        var planArId = $(this.system.draggingDiv).attr('arId');\r\n\r\n        var offSet = (e.clientX - this.system.cursorX) / plannerAvailableWidth * 100;\r\n        offSet = Math.round(offSet / (this.system.itemWidth * this.graphData.interval)) * (this.system.itemWidth * this.graphData.interval);\r\n\r\n        var minRight = this.getRightLimit(rowArId, planArId);\r\n        var minLeft = this.getLeftLimit(rowArId, planArId);\r\n\r\n        if (minLeft < 0) minLeft = 0;\r\n        if (minRight < 0) minRight = 0;\r\n\r\n        var originalDD = $(this.system.draggingDiv);\r\n\r\n        if ((this.round(this.system.currentLeft + offSet) < this.round(minLeft))\r\n\t\t || (this.round(this.system.currentRight - offSet) < this.round(minRight)))\r\n            return;\r\n\r\n        this.system.draggingDiv = originalDD.find('[resizeDirection=right]')[0];\r\n        this.divResizeRight(e);\r\n\r\n        this.system.draggingDiv = originalDD.find('[resizeDirection=left]')[0];\r\n        this.divResizeLeft(e);\r\n\r\n        this.system.draggingDiv = originalDD[0];\r\n    };\r\n\r\n    PlanningGraphImpl.prototype.round = function (floatingPercent) {\r\n        var plannerAvailableWidth = $(this.container).find(\".colPlanner\").width();\r\n        var x = (this.system.itemWidth * this.graphData.interval);\r\n\r\n        var pix = Math.round(floatingPercent / 100 * plannerAvailableWidth);\r\n        var res = pix / plannerAvailableWidth * 100;\r\n        res = Math.round(res / x) * x;\r\n\r\n        return res;\r\n    };\r\n\r\n    PlanningGraphImpl.prototype.setNewTotal = function (barDiv) {\r\n        var start = (((parseFloat(barDiv[0].style.left)) / this.system.itemWidth) + this.graphData.rangeMin).toFixed(this.graphData.decimalPrecision);\r\n        var end = (((100 - parseFloat(barDiv[0].style.right)) / this.system.itemWidth) + this.graphData.rangeMin).toFixed(this.graphData.decimalPrecision);\r\n\r\n        start = Math.round(start / this.graphData.interval) * this.graphData.interval;\r\n        end = Math.round(end / this.graphData.interval) * this.graphData.interval;\r\n\r\n        var rowArId = $(barDiv).parent().parent().attr('arId');\r\n        var planArId = $(barDiv).attr('arId');\r\n\r\n        this.graphData.barValues[rowArId].Plannings[planArId].Start = this.system.usingDateTime ? this.gridLinePosToDate(start) : start;\r\n        this.graphData.barValues[rowArId].Plannings[planArId].End = this.system.usingDateTime ? this.gridLinePosToDate(end) : end;\r\n\r\n        var total = this.graphData.barValues[rowArId].Total();\r\n\r\n        var totalValue;\r\n        if (this.graphData.showAsTime == 1) {\r\n            totalValue = dayTime.fromTicks(total);\r\n        } else {\r\n            totalValue = total;\r\n        }\r\n\r\n        $(barDiv).parent().parent().find('.itemTotal').text(totalValue);\r\n    };\r\n\r\n    PlanningGraphImpl.prototype.deleteGraph = function () {\r\n        $(this.container).children().remove();\r\n    };\r\n\r\n    PlanningGraphImpl.prototype.createGraph = function () {\r\n        var graph = \"<div class='header row'>\"\r\n             + \"<div class='itemName descriptionHeader'>\" + this.graphData.descriptionLabel + \"</div><div class='itemPlanningBar colPlanner'></div>\"\r\n             + \"<div class='itemTotal totalHeader'>\" + this.graphData.totalLabel + \"</div></div>\"\r\n             + \"<div class='tablePlanningItems'>\"\r\n            + \"<div class='tablePlanningGridLabels tablePlanningGrid' style='margin-left:-8px; margin-right:30px;'></div>\"\r\n            + \"<div class='rowItems'><div class='rowitms' style='Position:relative;min-height:100%;'><div class='tablePlanningGridLines tablePlanningGrid'></div></div></div></div>\";\r\n\r\n        $(this.container).append(graph);\r\n\r\n        for (var i = 0; i < this.graphData.barValues.length; i++) {\r\n            this.addRow(this.graphData.barValues[i], i);\r\n        }\r\n\r\n        if (this.graphData.showGrid == true) {\r\n            this.drawLines();\r\n        }\r\n\r\n        var self = this;\r\n        $(document).on('mouseup', function () {\r\n            self.planningGraphMouseUp();\r\n        });\r\n        $(document).on('touchend', function () {\r\n            self.planningGraphMouseUp();\r\n        });\r\n    };\r\n\r\n    PlanningGraphImpl.prototype.addRow = function (planningItem, arId) {\r\n        \r\n        var totalValue;\r\n        if (this.graphData.showAsTime) {\r\n            totalValue = dayTime.fromTicks(planningItem.Total().toFixed(this.graphData.decimalPrecision));\r\n        } else {\r\n            totalValue = planningItem.Total().toFixed(this.graphData.decimalPrecision);\r\n        }\r\n        var optionalColor = '';\r\n        if (planningItem.SelectedTextColor != null) {\r\n            optionalColor = optionalColor + \" color:\" + planningItem.SelectedTextColor + \"; \";\r\n        }\r\n\r\n        var newRowContent = \"<div class='row' arId='\" + arId + \"'><div class='scrollable'></div>\"\r\n            + \"<div class='itemName' style='z-index:4; \" + optionalColor +\"' itemId='\" + planningItem.Id + \"' title='\" + planningItem.SelectedToolTip + \"'>\" + planningItem.SelectedName + \"</div>\"\r\n            + \"<div class='itemPlanningBar' id='\" + planningItem.Id + \"'>\";\r\n\r\n        if (planningItem.Boundary1start != null && planningItem.Boundary1stop != null) {\r\n            var boundary1PositionLeft = (planningItem.Boundary1start - this.graphData.rangeMin) * this.system.itemWidth;\r\n            var boundary1PositionRight = 100 - ((planningItem.Boundary1stop - this.graphData.rangeMin) * this.system.itemWidth);\r\n            newRowContent += \"<div class='planningPeriodBoundary1Start' style='left:0;width:\" + boundary1PositionLeft.toString() + \"%;'></div>\";\r\n            newRowContent += \"<div class='planningPeriodBoundary1Start' style='right:0;width:\" + boundary1PositionRight.toString() + \"%;'></div>\";\r\n        }\r\n\r\n        if (planningItem.Boundary2start != null && planningItem.Boundary2stop != null) {\r\n            var boundary2PositionLeft = (planningItem.Boundary2start - this.graphData.rangeMin) * this.system.itemWidth;\r\n            var boundary2PositionRight = 100 - ((planningItem.Boundary2stop - this.graphData.rangeMin) * this.system.itemWidth);\r\n            newRowContent += \"<div class='planningPeriodBoundary2Start' style='left:0;width:\" + boundary2PositionLeft.toString() + \"%;'></div>\";\r\n            newRowContent += \"<div class='planningPeriodBoundary2Start' style='right:0;width:\" + boundary2PositionRight.toString() + \"%;'></div>\";\r\n        }\r\n\r\n        for (var i = 0; i < this.system.diffInDays ; i++) {\r\n            var startDay = this.system.oneDayRange * i;\r\n            var endDay = this.system.oneDayRange * (i + 1);\r\n            var unavailableStartLeft = startDay * this.system.itemWidth;\r\n            var unavailableStartRight = 100 - (startDay + (planningItem.Start - this.graphData.rangeMin)) * this.system.itemWidth;\r\n            var unavailableEndLeft = (startDay + (planningItem.End - this.graphData.rangeMin)) * this.system.itemWidth;\r\n            var unavailableEndRight = 100 - (endDay * this.system.itemWidth);\r\n\r\n            newRowContent += \"<div class='planningPeriodUnavailableStart' style='left:\"+unavailableStartLeft.toString()+\"%;right:\"+unavailableStartRight.toString()+\"%;'></div>\";\r\n            newRowContent += \"<div class='planningPeriodUnavailableEnd' style='left:\" + unavailableEndLeft.toString() + \"%;right:\" + unavailableEndRight.toString() + \"%;'></div>\";\r\n        }\r\n\r\n        for (var i = 0; i < planningItem.Plannings.length; i++) {\r\n            if (planningItem.Plannings[i].Start != null) {\r\n\r\n                var start = this.getGridLinePos(planningItem.Plannings[i].Start);\r\n                var end = this.getGridLinePos(planningItem.Plannings[i].End);\r\n                if (start === end) continue;\r\n\r\n                var selectedPositionLeft = start * this.system.itemWidth;\r\n                var selectedPositionRight = (this.system.range - end) * this.system.itemWidth;\r\n                var id = planningItem.Plannings[i].Id;\r\n                var additionalClass = '';\r\n\r\n                if (planningItem.Plannings[i].isPreference) {\r\n                    additionalClass = ' isPreferenceBar';\r\n                }\r\n\r\n                if (planningItem.Plannings[i].isSpecial) {\r\n                    additionalClass = ' specialBar';\r\n                }\r\n\r\n                if (planningItem.Plannings[i].isFlagged) {\r\n                    additionalClass = ' flaggedBar';\r\n                }\r\n\r\n                if (id == this.morph.selectedBarId) {\r\n                    additionalClass += ' selected';\r\n                }\r\n\r\n                var optionalColor = '';\r\n                if (planningItem.Plannings[i].dynamicBarColor != null) {\r\n                    optionalColor = optionalColor + \" background:\" + planningItem.Plannings[i].dynamicBarColor + \"; \";\r\n                    //Perhaps: add auto-gradient if works in all browsers\r\n                    //optionalColor = optionalColor + \" background:-webkit-linear-gradient(top, rgba(0, 0, 0, 0) 20%, rgba(0, 0, 0, 0.2) 100%); \";\r\n                    //optionalColor = optionalColor + \" background-color: \" + planningItem.Plannings[i].dynamicBarColor + \"; \";\r\n                }\r\n                if (planningItem.Plannings[i].dynamicTextColor != null) {\r\n                    optionalColor = optionalColor + \" color:\" + planningItem.Plannings[i].dynamicTextColor + \"; \";\r\n                }\r\n\r\n                newRowContent += \"<div unselectable='on' barType='dragHandle' class='planningPeriodActual\" + additionalClass + \"' \"\r\n                    + \"arId='\" + i + \"' \"\r\n                    + \"itemId='\" + id + \"' \"\r\n                    + \"total='\" + planningItem.Total() + \"' \"\r\n                    + \"style='left:\" + selectedPositionLeft.toString() + \"%; \"\r\n                    + optionalColor\r\n                    + \" right:\" + selectedPositionRight.toString() + \"%;' \"\r\n                    + \"title='\" + planningItem.Plannings[i].Tooltip + \"' \"\r\n                    + \"alt='\" + planningItem.Plannings[i].Tooltip + \"'>\"\r\n                    + \"<div barType='resizeHandle' resizeDirection='left'  class='resizeHandleLeft' parentId='\" + planningItem.Id + \"'></div>\"\r\n                    + planningItem.Plannings[i].Text\r\n                    + \"<div barType='resizeHandle' resizeDirection='right' class='resizeHandleRight' parentId='\" + planningItem.Id + \"'></div>\"\r\n                    + \"</div>\";\r\n            }\r\n        }\r\n\r\n        newRowContent += \"</div><div class='itemTotal'>\" + totalValue + \"</div></div>\";\r\n\r\n        var newRow = $(newRowContent);\r\n        $(this.container).find(\".rowitms\").append(newRow);\r\n        \r\n        if (this.graphData.readOnly !== true) {\r\n            var self = this;\r\n            newRow.on('mousedown', function (e) {\r\n                self.planningGraphMouseDown(e);\r\n            });\r\n            newRow.on('touchstart', function (e) {\r\n                if (e.originalEvent.touches) e = e.originalEvent.touches[0];\r\n                self.planningGraphMouseDown(e);\r\n            });\r\n            \r\n            newRow.find(\".planningPeriodActual\").on('click', function () {\r\n                self.clickedSelection($(this).attr('itemId'));\r\n            });\r\n            newRow.find(\".planningPeriodActual\").on('touchend', function () {\r\n                self.clickedSelection($(this).attr('itemId'));\r\n            });\r\n            \r\n            newRow.find(\".itemName\").on('click', function () {\r\n                self.clickedOnDescription($(this).attr('itemId'));\r\n            });\r\n            \r\n        }\r\n    };\r\n\r\n    PlanningGraphImpl.prototype.getGridLinePos = function (dateOrGridLinePos) {\r\n        var value = (this.system.usingDateTime) ? this.dateToGridLinePos(dateOrGridLinePos) : dateOrGridLinePos;\r\n        var pos = value - this.graphData.rangeMin;\r\n        if (pos < 0) return 0;\r\n        if (pos > this.system.range) return this.system.range;\r\n        return pos;\r\n    }\r\n   \r\n    PlanningGraphImpl.prototype.dateToGridLinePos = function (date) {\r\n        return (new Date(date) - this.system.fromDate) / 1000;\r\n    }\r\n\r\n    PlanningGraphImpl.prototype.gridLinePosToDate = function (gridLinePos) {\r\n        var date = new Date(this.system.fromDate);\r\n        date.setSeconds(date.getSeconds() + gridLinePos);\r\n        return date;\r\n    }\r\n\r\n    PlanningGraphImpl.prototype.drawLines = function () {\r\n        for (var i = 0; i <= ((this.system.range / this.graphData.intervalGrid)) ; i++) {\r\n            var left = this.round((this.system.itemWidth * this.graphData.intervalGrid) * i);\r\n            var right = this.round((this.system.itemWidth * this.graphData.intervalGrid) * (((this.system.range / this.graphData.intervalGrid) - i) - 1));\r\n\r\n            var gridLine = \"<div class='gridLine' style='left:\" + left + \"%; right:\" + right + \"%'>\";\r\n            if (i % this.graphData.intervalGridMajor == 0) {\r\n                gridLine = gridLine.replace(\"'gridLine'\", \"'gridLine mainInterval'\");\r\n            }\r\n            gridLine += \"</div>\";\r\n            $(this.container).find(\".tablePlanningGridLines\").append(gridLine);\r\n\r\n\r\n            var gridLineLabel = \"\";\r\n            if (this.graphData.showAxisLabels || this.graphData.showAxisLabelsTop) {\r\n                if (this.graphData.showAsTime == 1) {\r\n                    if (i % this.graphData.intervalGridLabel == 0) {\r\n                        var labelValue = this.graphData.rangeMin + ((i) * this.graphData.intervalGrid);\r\n                        while (labelValue >= this.system.oneDayRange) {\r\n                            labelValue = labelValue - this.system.oneDayRange;\r\n                        }\r\n                        gridLineLabel += \"<span class='gridLabel gridLabelBottom'>\" + dayTime.fromTicks(labelValue) + \"</span>\";\r\n                    }\r\n\r\n                } else {\r\n                    gridLineLabel += \"<span class='gridLabel gridLabelBottom'>\" + (this.graphData.rangeMin + ((i) * this.graphData.intervalGrid)) + \"</span>\";\r\n                }\r\n            } else {\r\n                if (this.graphData.showAsTime == 1) {\r\n                    if ((this.graphData.rangeMin + ((i) * this.graphData.intervalGrid)) % 3600 == 0) {\r\n                        gridLineLabel += \"<span class='gridLabel gridLabelBottom'></span>\";\r\n                    }\r\n                }\r\n            }\r\n            if (gridLineLabel !== \"\" && this.graphData.showAxisLabels) $(this.container).find(\".tablePlanningGridLabels\").append(\"<div class='gridLineLabelBox' style='left:\" + left + \"%; right:\" + right + \"%'>\" + gridLineLabel + \"</div>\");\r\n            if (gridLineLabel !== \"\" && this.graphData.showAxisLabelsTop) $(this.container).find(\".tablePlanningGridLabels\").append(\"<div class='gridLineLabelBox' style='left:\" + left + \"%; right:\" + right + \"%'>\" + gridLineLabel.replace(\"gridLabelBottom\",\"gridLabelTop\") + \"</div>\");\r\n        }\r\n\r\n        $(this.container).find(\".gridLine .gridLabel\").each(function () {\r\n            var v = $(this);\r\n            v.css('left', ((v.width() / 2) * -1) + \"px\");\r\n        });\r\n\r\n        if (this.graphData.showAsTime == 1) {\r\n            for (var i = 0; i < this.system.diffInDays ; i++) {\r\n                var left = this.round((this.system.itemWidth * this.system.oneDayRange) * i);\r\n                var right = this.round((this.system.itemWidth * this.system.oneDayRange) * (((this.system.range / this.system.oneDayRange) - i) - 1));\r\n                var gridLine = \"<div class='gridLine dailyInterval' style='left:\" + left + \"%; right:\" + right + \"%;'></div>\";\r\n                $(this.container).find(\".tablePlanningGridLines\").append(gridLine);\r\n                var gridLineLabel = \"<div class='gridLineLabelBox' style='left:\" + left + \"%; right:\" + right + \"%;'><span class='gridLabel gridLabelBottom Day'>\" + this.getDateLabel(i) + \"</span></div>\";\r\n                if (this.graphData.showAxisLabels) $(this.container).find(\".tablePlanningGridLabels\").append(gridLineLabel);\r\n                if (this.graphData.showAxisLabelsTop) $(this.container).find(\".tablePlanningGridLabels\").append(gridLineLabel.replace(\"gridLabelBottom\",\"gridLabelTop\"));\r\n            }\r\n            var left = this.round((this.system.itemWidth * this.system.oneDayRange) * i);\r\n            var gridLine = \"<div class='gridLine dailyInterval' style='left:\" + left + \"%; width:1px;'></div>\";\r\n            $(this.container).find(\".tablePlanningGridLines\").append(gridLine);\r\n        }\r\n\r\n        for (var j = 0; j < this.graphData.gridLines.length; j++) {\r\n            var i = this.graphData.gridLines[j].Value / this.graphData.intervalGrid;\r\n            var left = this.round((this.system.itemWidth * this.graphData.intervalGrid) * i);\r\n            var right = this.round((this.system.itemWidth * this.graphData.intervalGrid) * (((this.system.range / this.graphData.intervalGrid) - i) - 1));\r\n            var gridLine = \"<div class='gridLine customInterval' style='left:\" + left + \"%; right:\" + right + \"%;'></div>\";\r\n            $(this.container).find(\".tablePlanningGridLines\").append(gridLine);\r\n            var gridLineLabel = \"<div class='gridLineLabelBox' style='left:\" + left + \"%; right:\" + right + \"%;'><span class='gridLabel gridLabelBottom custom'>\" + dayTime.fromTicks(this.graphData.gridLines[j].Value) + \"</span></div>\";\r\n            if (this.graphData.showAxisLabels) $(this.container).find(\".tablePlanningGridLabels\").append(gridLineLabel);\r\n            if (this.graphData.showAxisLabelsTop) $(this.container).find(\".tablePlanningGridLabels\").append(gridLineLabel.replace(\"gridLabelBottom\", \"gridLabelTop\"));\r\n        }\r\n    };\r\n\r\n    PlanningGraphImpl.prototype.getDateLabel = function (offset) {\r\n        if (!this.system.usingDateTime) return \"\";\r\n        if (isNaN(this.system.fromDate)) return \"\";\r\n        var date = new Date(this.system.fromDate);\r\n        date.setDate(this.system.fromDate.getDate() + offset);\r\n        return this.formatter.formatDate(date);\r\n    }\r\n\r\n    PlanningGraphImpl.prototype.clickedSelection = function (id) {\r\n        //should be implemented to catch event\r\n    };\r\n    \r\n    PlanningGraphImpl.prototype.clickedOnDescription = function (id) {\r\n        //should be implemented to catch event\r\n    };\r\n\r\n    PlanningGraphImpl.prototype.hasUnsavedChanges = function () {\r\n        for (var i = 0; i < this.graphData.barValues.length ; i++) {\r\n            for (var j = 0; j < this.graphData.barValues[i].Plannings.length; j++) {\r\n\r\n                var startNew = this.graphData.barValues[i].Plannings[j].Start;\r\n                var startOld = this.graphData.barValues[i].Plannings[j]._origStart;\r\n                var endNew = this.graphData.barValues[i].Plannings[j].End;\r\n                var endOld = this.graphData.barValues[i].Plannings[j]._origEnd;\r\n                \r\n                if(startNew !== null && startNew instanceof Date) startNew = startNew.toISOString();\r\n                if(startOld !== null && startOld instanceof Date) startOld = startOld.toISOString();\r\n                if(endNew !== null && endNew instanceof Date) endNew = endNew.toISOString();\r\n                if(endOld !== null && endOld instanceof Date) endOld = endOld.toISOString();\r\n\r\n                if (startNew !== startOld || endNew !== endOld) return true;\r\n            }\r\n        }\r\n        return false;\r\n    };\r\n\r\n    PlanningGraphImpl.prototype.getOutputData = function () {\r\n        var data = [];\r\n        if (this.graphData == undefined || this.graphData.barValues == undefined) return data;\r\n\r\n        for (var i = 0; i < this.graphData.barValues.length ; i++) {\r\n            for (var j = 0; j < this.graphData.barValues[i].Plannings.length; j++) {\r\n                if (this.graphData.barValues[i].Plannings[j].Start != this.graphData.barValues[i].Plannings[j]._origStart || this.graphData.barValues[i].Plannings[j].End != this.graphData.barValues[i].Plannings[j]._origEnd) {\r\n                    var plan = {\r\n                        Id: this.graphData.barValues[i].Plannings[j].Id,\r\n                        Start: this.system.usingDateTime ? this.formatter.formatLicquidDate(this.graphData.barValues[i].Plannings[j].Start) : this.graphData.barValues[i].Plannings[j].Start,\r\n                        End: this.system.usingDateTime ? this.formatter.formatLicquidDate(this.graphData.barValues[i].Plannings[j].End) : this.graphData.barValues[i].Plannings[j].End\r\n                    };\r\n\r\n                    this.graphData.barValues[i].Plannings[j]._origStart = this.graphData.barValues[i].Plannings[j].Start;\r\n                    this.graphData.barValues[i].Plannings[j]._origEnd = this.graphData.barValues[i].Plannings[j].End;\r\n                    \r\n                    data.push(plan);\r\n                }\r\n            }\r\n        }\r\n        return data;\r\n    };\r\n\r\n    PlanningGraphImpl.prototype.draw = function (morph, selectedGraphData) {\r\n        this.deleteGraph();\r\n\r\n        this.system.range = 0;\r\n        this.system.oneDayRange = 0;\r\n        this.system.diffInDays = 1;\r\n        this.system.itemWidth = 0;\r\n        this.system.cursorX = null;\r\n        this.system.draggingDiv = null;\r\n        this.system.currentLeft = null;\r\n        this.system.currentRight = null;\r\n\r\n        this.graphData = selectedGraphData;\r\n        this.morph = morph;\r\n        this.system.usingDateTime = this.graphData.usingDateTime;\r\n\r\n        this.system.oneDayRange = (this.graphData.rangeMax - this.graphData.rangeMin);\r\n        this.system.fromDate = this.formatter.parseLicquidDate(this.parameters.getValue(this.graphData.fromDateParameter));\r\n        this.system.toDate = this.formatter.parseLicquidDate(this.parameters.getValue(this.graphData.toDateParameter));\r\n        if (isNaN(this.system.toDate)) this.system.toDate = this.formatter.parseLicquidDate(this.parameters.getValue(this.graphData.fromDateParameter));\r\n        \r\n        this.system.diffInDays = Math.round(((this.system.toDate - this.system.fromDate) / 86400000) + 1);\r\n        if (isNaN(this.system.diffInDays)) this.system.diffInDays = 1;\r\n        this.system.range = this.system.oneDayRange * this.system.diffInDays;\r\n        \r\n        this.system.itemWidth = 100 / this.system.range;\r\n\r\n        this.createGraph(selectedGraphData);\r\n    };\r\n\r\n    return PlanningGraphImpl;\r\n\r\n});\n","define('drops/planningGraph/planningGraph',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'drops/planningGraph/planninggraphimpl',\r\n    'underscore',\r\n    'lq/util',\r\n    'lq/style'\r\n], function ($, Drop, PlanningGraphImpl, _, util, Style) {\r\n    'use strict';\r\n\r\n    function PlanningGraph(options) {\r\n        Drop.call(this, $('<div/>'), options);\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing);\r\n\r\n        this.$element\r\n\t        .addClass('boxToBorderSize');\r\n\r\n        this.boundaries1 = [];\r\n        this.boundaries2 = [];\r\n\r\n        Style.renderStyles(this, 'planninggraph-');\r\n    };\r\n\r\n    Drop.extend(PlanningGraph, Drop);\r\n\r\n    PlanningGraph.typeName = 'PlanningGraph';\r\n\r\n    PlanningGraph.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.formatter = this.piping.formatting.createFormatter();\r\n\r\n        var self = this;\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.dataSource,\r\n            function (rdata) {\r\n                if (self.data.selectedBoundary1DataSource != undefined) {\r\n                    self.piping.queryDispatcher.dispatch(\r\n                        self.data.selectedBoundary1DataSource,\r\n                        function (data) {\r\n                            self.boundaries1 = data.results;\r\n                            self.update(rdata);\r\n                        },\r\n                        function (queryData) {\r\n                            queryData.pageSize = 1024;\r\n                        });\r\n                }\r\n\r\n                if (self.data.selectedBoundary1DataSource != undefined) {\r\n                    self.piping.queryDispatcher.dispatch(\r\n                        self.data.selectedBoundary2DataSource,\r\n                        function (data) {\r\n                            self.boundaries2 = data.results;\r\n                            self.update(rdata);\r\n                        },\r\n                        function (queryData) {\r\n                            queryData.pageSize = 1024;\r\n                        });\r\n                }\r\n\r\n                self.update(rdata);\r\n            });\r\n\r\n        this.prepareUi();\r\n        this.applyPosition();\r\n    };\r\n\r\n    PlanningGraph.prototype.prepareUi = function () {\r\n        var $container = $('<div />')\r\n            .addClass('planningGraphContainer')\r\n            .appendTo(this.$element);\r\n        this.graph = new PlanningGraphImpl($container[0], this.piping);\r\n    };\r\n\r\n    PlanningGraph.prototype.getBatchOfCommands = function () {\r\n        if (!this.graph) return [];\r\n\r\n        var self = this;\r\n        return {\r\n            eventActionType: 'Batch',\r\n            command: self.data.id,\r\n            batch: _.map(this.graph.getOutputData(), function (barValue) {\r\n                var data = {};\r\n                data[self.data.startAttribute] = barValue.Start;\r\n                data[self.data.stopAttribute] = barValue.End;\r\n\r\n                return {\r\n                    entityId: barValue.Id,\r\n                    data: data\r\n                };\r\n            })\r\n        };\r\n    };\r\n\r\n    PlanningGraph.prototype.update = function (data) {\r\n        var self = this;\r\n        var result = _.chain(data.results)\r\n            .groupBy(function(item) {\r\n                return item[self.data.beschrijvingIdOutput];\r\n            })\r\n            .map(function (items) {\r\n                var firstItem = items[0];\r\n                var bound1 = _.find(self.boundaries1, function (bound) { return bound[self.data.boundary1idOutput] == firstItem[self.data.beschrijvingIdOutput]; });\r\n                var bound2 = _.find(self.boundaries2, function (bound) { return bound[self.data.boundary2idOutput] == firstItem[self.data.beschrijvingIdOutput]; });\r\n                return {\r\n                    Id: firstItem[self.data.idOutput],\r\n                    Start: firstItem[self.data.beginOutput],\r\n                    End: firstItem[self.data.eindeOutput],\r\n                    SelectedTextColor: firstItem[self.data.beschrijvingTextColorOutput],\r\n                    SelectedToolTip: firstItem[self.data.beschrijvingTooltipOutput] || firstItem[self.data.beschrijvingOutput],\r\n                    SelectedName: firstItem[self.data.beschrijvingOutput],\r\n                    SelectedId: firstItem[self.data.beschrijvingIdOutput],\r\n                    SelectedDescription: firstItem[self.data.naamOutput],\r\n                    Boundary1start: bound1 ==null ? null : bound1[self.data.boundary1startOutput],\r\n                    Boundary1stop: bound1 == null ? null : bound1[self.data.boundary1stopOutput],\r\n                    Boundary2start: bound2 == null ? null : bound2[self.data.boundary2startOutput],\r\n                    Boundary2stop: bound2 == null ? null : bound2[self.data.boundary2stopOutput],\r\n                    Plannings: _.map(items, function (item) {\r\n                        return {\r\n                            Id: item[self.data.idSelectieOutput],\r\n                            Text: item[self.data.naamOutput],\r\n                            _origStart: self.data.usingDateTime ? self.formatter.parseLicquidDate(item[self.data.startSelectieOutput]) : item[self.data.startSelectieOutput],\r\n                            _origEnd: self.data.usingDateTime ? self.formatter.parseLicquidDate(item[self.data.stopSelectieOutput]) : item[self.data.stopSelectieOutput],\r\n                            isPreference: item[self.data.isPreference],\r\n                            isFlagged: item[self.data.isFlagged],\r\n                            isSpecial: item[self.data.isSpecial],\r\n                            dynamicBarColor: item[self.data.dynamicBarColor],\r\n                            dynamicTextColor: item[self.data.dynamicTextColor],\r\n                            Tooltip: self.data.tooltip === undefined ? \"\" : item[self.data.tooltip],\r\n                            Start: self.data.usingDateTime ? self.formatter.parseLicquidDate(item[self.data.startSelectieOutput]) : item[self.data.startSelectieOutput],\r\n                            End: self.data.usingDateTime ? self.formatter.parseLicquidDate(item[self.data.stopSelectieOutput]) : item[self.data.stopSelectieOutput],\r\n                            EventArgument: item[self.data.eventArgument]\r\n                        };\r\n                    }),\r\n                    Total: function () {\r\n                        return _.reduce(this.Plannings, function (total, planning) {\r\n                            var newTotal = total + planning.End - planning.Start;\r\n                            if (isNaN(newTotal)) return total + ((new Date(planning.End) - new Date(planning.Start)) / 1000);\r\n                            return newTotal;\r\n                        }, 0);\r\n                    }\r\n                };\r\n            })\r\n            .value();\r\n\r\n        this.planningList = result;\r\n\r\n        if ($(this.graph.container).find(\".rowItems\").length == 1) {\r\n            var prevScrollPosition = $(this.graph.container).find(\".rowItems\")[\"0\"].scrollTop;\r\n        }\r\n\r\n        this.drawPlanningGraph();\r\n\r\n        if (prevScrollPosition != undefined) {\r\n            $(this.graph.container).find(\".rowItems\")[\"0\"].scrollTop = prevScrollPosition;\r\n        }\r\n    };\r\n\r\n    PlanningGraph.prototype.drawPlanningGraph = function () {\r\n        this.graph.draw(this, this.retrievePlanningGraphData());\r\n\r\n        if (this.data.eventing && this.data.eventing.clicked && this.data.eventing.clicked.enabled === true) {\r\n            var self = this;\r\n                \r\n            this.graph.clickedSelection = function (id) {\r\n                var scheduleUnit = _.chain(self.planningList)\r\n                    .map(function (s) {\r\n                        return s.Plannings;\r\n                    })\r\n                    .flatten()\r\n                    .find(function (su) {\r\n                        return su.Id === id;\r\n                    })\r\n                    .value();\r\n\r\n                if (self.graph.hasUnsavedChanges()) {\r\n                    if (self.data.eventing && self.data.eventing.changed && self.data.eventing.changed.enabled === true)\r\n                        self.triggerEvent(self.data.eventing.changed.raisedEventName, scheduleUnit.EventArgument);\r\n                } else {\r\n                    if (self.data.eventing && self.data.eventing.clicked && self.data.eventing.clicked.enabled === true)\r\n                        self.triggerEvent(self.data.eventing.clicked.raisedEventName, scheduleUnit.EventArgument);\r\n                }\r\n                \r\n                self.selectedBarId = id;\r\n                $(\".planningPeriodActual.selected\").removeClass(\"selected\");\r\n                $(\".planningPeriodActual[itemid='\" + id + \"']\").addClass(\"selected\");\r\n            };\r\n        }\r\n        if (this.data.eventing && this.data.eventing.clickedOnDescription && this.data.eventing.clickedOnDescription.enabled === true) {\r\n            var self = this;\r\n            this.graph.clickedOnDescription = function (id) {\r\n                var scheduleUnit = _.chain(self.planningList)\r\n                            .find(function (su) { return su.Id == id; })\r\n                            .value();\r\n\r\n                self.triggerEvent(self.data.eventing.clickedOnDescription.raisedEventName, scheduleUnit.SelectedId);\r\n            };\r\n        }\r\n\r\n        this.fixHeight();\r\n    };\r\n        \r\n    PlanningGraph.prototype.fixHeight = function () {\r\n        var rowHeight = parseInt(this.$element.find('.row').css('height'));\r\n        var height;\r\n\r\n        if (this.data.visibleRows > 0) {\r\n            height = this.data.visibleRows * (rowHeight + 1);\r\n        } else {\r\n            var legendFontSize = this.$element\r\n                .find('.gridLabel')\r\n                .css('font-size');\r\n\r\n            height = this.data.size.y - rowHeight - 1;\r\n            height -= 2 * parseInt(legendFontSize); //hour labels\r\n            height -= 2 * parseInt(legendFontSize); //day labels\r\n            height = Math.floor(height / (rowHeight)) * (rowHeight + 1);\r\n        }\r\n            \r\n        this.$element\r\n            .find('.tablePlanningItems')\r\n            .css({\r\n                'height': height + 'px'\r\n            });\r\n    };\r\n\r\n    PlanningGraph.prototype.convertToNumber = function (string) {\r\n        if (typeof string == 'number') {\r\n            return string;\r\n        } else {\r\n            return parseFloat(string);\r\n        }\r\n    };\r\n\r\n    PlanningGraph.prototype.convertToBoolean = function (string) {\r\n        if (typeof string == 'boolean') {\r\n            return string;\r\n        } else {\r\n            return string == 'true';\r\n        }\r\n    };\r\n\r\n    PlanningGraph.prototype.retrievePlanningGraphData = function () {\r\n        return {\r\n            readOnly: this.data.readOnly,\r\n            testData: this.convertToBoolean(this.data.testData),\r\n            showAsTime: this.convertToBoolean(this.data.showAsTime),\r\n            usingDateTime: this.data.usingDateTime,\r\n            fromDateParameter: this.data.fromDateParameter,\r\n            toDateParameter: this.data.toDateParameter,\r\n            rangeMin: this.convertToNumber(this.data.rangeMin),\r\n            rangeMax: this.convertToNumber(this.data.rangeMax),\r\n            interval: this.convertToNumber(this.data.interval),\r\n            intervalGrid: this.convertToNumber(this.data.intervalGrid),\r\n            intervalGridMajor: this.convertToNumber(this.data.intervalGridMajor),\r\n            intervalGridLabel: this.convertToNumber(this.data.intervalGridLabel),\r\n            decimalPrecision: this.convertToNumber(this.data.decimalPrecision),\r\n            descriptionLabel: this.data.descriptionLabel,\r\n            totalLabel: this.data.totalLabel,\r\n            visibleRows: this.convertToNumber(this.data.visibleRows),\r\n\r\n            barValues: this.getPlanningData(),\r\n\r\n            gridLines: this.getGridData(this.data.intervalRedGrid),\r\n            showGrid: this.convertToBoolean(this.data.showGrid),\r\n            showAxisLabels: this.convertToBoolean(this.data.showAxisLabels),\r\n            showAxisLabelsTop: this.convertToBoolean(this.data.showAxisLabelsTop),\r\n            isWithPreferredValues: this.convertToBoolean(this.data.isWithPreferredValues)\r\n        };\r\n    };\r\n\r\n    PlanningGraph.prototype.getGridData = function (values) {\r\n        var gridData = [];\r\n        try {\r\n            var val = values.split(\";\");\r\n            for (var i = 0; i < val.length; i++) {\r\n                gridData[i] = JSON.parse(JSON.stringify({ Value: 3600 * this.convertToNumber(val[i]) }));\r\n            }\r\n        } catch (exception) { }\r\n        return gridData;\r\n    };\r\n\r\n    PlanningGraph.prototype.getPlanningData = function () {\r\n        var planningItems = [];\r\n\r\n        if (!this.data.testData || this.data.testData.length === 0) {\r\n            return this.planningList;\r\n        }\r\n\r\n        var pi_plan_1 = {\r\n            Id: \"\\\\plan\\\\01\",\r\n            Text: \"Item\",\r\n            _origStart: 8 * 3600,\r\n            _origEnd: 11 * 3600,\r\n            Start: 8 * 3600,\r\n            End: 11 * 3600\r\n        };\r\n\r\n        var pi_plan_2 = {\r\n            Id: \"\\\\plan\\\\02\",\r\n            Text: \"Niet Item\",\r\n            _origStart: 13 * 3600,\r\n            _origEnd: 17 * 3600,\r\n            Start: 13 * 3600,\r\n            End: 17 * 3600\r\n        };\r\n\r\n        var pi = {\r\n            Id: \"test\\\\0\",\r\n            Start: 8 * 3600,\r\n            End: 18 * 3600,\r\n            SelectedName: \"John. \",\r\n            SelectedDescription: \"Item\",\r\n            Plannings: new Array(),\r\n        };\r\n\r\n        pi.Plannings[0] = pi_plan_1;\r\n        pi.Plannings[1] = pi_plan_2;\r\n\r\n        for (var i = 10 ; i < 25; i++) {\r\n            var planning = JSON.parse(JSON.stringify(pi));\r\n\r\n            planning.Total = function () {\r\n                var total = 0;\r\n                for (var i = 0; i < this.Plannings.length; i++) {\r\n                    total += this.Plannings[i].End - this.Plannings[i].Start;\r\n                }\r\n                return total;\r\n            };\r\n\r\n            if (i % 5 == 0) {\r\n                planning.Plannings[0].isFlagged = 1;\r\n            }\r\n\r\n            planning.Id += i;\r\n            planning.SelectedName += i - 9;\r\n            planningItems[i - 10] = planning;\r\n\r\n            planning.Plannings[0].Id = planning.Id + planning.Plannings[0].Id;\r\n            planning.Plannings[1].Id = planning.Id + planning.Plannings[1].Id;\r\n        }\r\n\r\n        return planningItems;\r\n    };\r\n\r\n    return PlanningGraph;\r\n});\n","define('drops/progressBar/progressBar',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style'\r\n], function ($, Drop, Style) {\r\n\t'use strict';\r\n\r\n\tvar defaults = {\r\n\t    data: {\r\n\t        minValue: 0,\r\n\t        maxValue: 100\r\n\t    }\r\n\t};\r\n\r\n    function ProgressBar(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n       \r\n        this.$element.addClass('boxToBorderSize');\r\n\r\n        this.$progress = $('<div />')\r\n           .addClass('boxToBorderSize')\r\n           .css({\r\n               height: '100%'\r\n           })\r\n           .appendTo(this.$element);\r\n\r\n        Style.renderStyles(this);\r\n        Style.renderStyles(this, null, this.$progress, null, 'progress');\r\n\r\n        this.$progress.css({ width: 0 + '%' });\r\n    };\r\n    \r\n    Drop.extend(ProgressBar, Drop);\r\n\r\n    ProgressBar.typeName = 'ProgressBar';\r\n\r\n    ProgressBar.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n\t    this.applyPosition();\r\n    };\r\n\r\n    ProgressBar.prototype.setValue = function (update) {\r\n        this.setProgress(update.value);\r\n    };\r\n\r\n    ProgressBar.prototype.clearValue = function () {\r\n        this.setProgress(0);\r\n    };\r\n\r\n    ProgressBar.prototype.setProgress = function (newValue) {\r\n        var value = Math.max(this.data.minValue, Math.min(parseFloat(newValue), this.data.maxValue));\r\n        var percentage = ((value - this.data.minValue) / (this.data.maxValue - this.data.minValue)) * 100;\r\n        this.$progress.css({ width: percentage + '%' });\r\n    };\r\n\r\n    return ProgressBar;\r\n});\n","define('lq/webPushNotifications',[\r\n    'underscore',\r\n    'lq/main',\r\n    'lq/dispatcher'\r\n], function(_, main, dispatcher) {\r\n    'use strict';\r\n\r\n    var currentTokenKey = 'notifications.firebase_token';\r\n    var currentRegistrationUserIdKey = 'notifications.user_id';\r\n\r\n    var listeners = [];\r\n    var notificationPermissionCallbacks = [];\r\n    var receivedNotifications = [];\r\n\r\n    var messaging;\r\n    var swRegistration;\r\n    var notificationsBroadcast;\r\n\r\n    if (main.areWebNotificationsEnabled()) {\r\n        var firebaseConfig = {\r\n            apiKey: main.getFirebaseApiKey(),\r\n            projectId: main.getFirebaseProjectId(),\r\n            messagingSenderId: main.getFirebaseSenderId(),\r\n            appId: main.getFirebaseAppId()\r\n        };\r\n\r\n        firebase.initializeApp(firebaseConfig);\r\n\r\n        navigator.serviceWorker.getRegistration().then(function (registration) {\r\n            swRegistration = registration;\r\n            messaging = firebase.messaging();\r\n\r\n            if (swRegistration && swRegistration.active) {\r\n                swRegistration.active.postMessage({\r\n                    type: 'FIREBASE_CONFIG',\r\n                    config: firebaseConfig,\r\n                    icon: main.getNotificationIcon(),\r\n                    url: main.getNotificationsEntryPage()\r\n                });\r\n            }\r\n        });\r\n    }\r\n\r\n    var callNotificationPermissionCallbacks = function (deviceId) {\r\n        _.each(notificationPermissionCallbacks, function (callback) {\r\n            callback(Notification.permission, deviceId)\r\n        });\r\n        notificationPermissionCallbacks = [];\r\n    };\r\n\r\n    var startReceiver = function (userId) {\r\n        notificationsBroadcast = new BroadcastChannel('notifications');\r\n\r\n        notificationsBroadcast.onmessage = function (e) {\r\n            var message = e.data;\r\n\r\n            receivedNotifications.push(message);\r\n\r\n            _.each(listeners, function (listener) {\r\n                listener(message);\r\n            });\r\n        }\r\n\r\n        // Get registration token. Initially this makes a network call, once retrieved\r\n        // subsequent calls to getToken will return from cache.\r\n        messaging.getToken({\r\n            serviceWorkerRegistration: swRegistration,\r\n            vapidKey: main.getFirebaseWPCert()\r\n        }).then(function (newToken) {\r\n            var currentToken = localStorage.getItem(currentTokenKey);\r\n            var registeredUserId = localStorage.getItem(currentRegistrationUserIdKey);\r\n\r\n            if (currentToken !== newToken || registeredUserId !== userId) {\r\n                dispatcher.dispatch('LicquidAction/RegisterMobileDevice',\r\n                    {\r\n                        deviceId: newToken,\r\n                        messenger: \"fcm\",\r\n                        platform: \"web\"\r\n                    })\r\n                    .done(function () {\r\n                        localStorage.setItem(currentTokenKey, newToken)\r\n                        localStorage.setItem(currentRegistrationUserIdKey, userId);\r\n\r\n                        callNotificationPermissionCallbacks(newToken);\r\n                    }, $.noop);\r\n            } else {\r\n                callNotificationPermissionCallbacks(newToken);\r\n            }\r\n        }).catch(function (err) {\r\n            if (err.code === 'messaging/permission-blocked' && notificationPermissionCallbacks.length > 0)\r\n                callNotificationPermissionCallbacks();\r\n            else\r\n                console.error(err);\r\n        });\r\n\r\n        // Handle incoming messages. Called when:\r\n        // - a message is received while the app has focus\r\n        // - the user clicks on an app notification created by a service worker\r\n        //   `messaging.onBackgroundMessage` handler.\r\n        messaging.onMessage(function (payload) {\r\n            var message = payload.data;\r\n\r\n            message.foreground = true;\r\n\r\n            receivedNotifications.push(message);\r\n\r\n            _.each(listeners, function (listener) {\r\n                listener(message);\r\n            });\r\n        });\r\n    };\r\n\r\n    return {\r\n\r\n        enableNotifications: function (userId, notificationPermissionCallback) {\r\n            if (!messaging || !('Notification' in window)) return;\r\n            notificationPermissionCallbacks.push(notificationPermissionCallback);\r\n            startReceiver();\r\n        },\r\n\r\n        startReceivingNotifications: function (userId, notificationPermissionCallback) {\r\n            if (!messaging || !('Notification' in window))\r\n                return;\r\n\r\n            notificationPermissionCallbacks.push(notificationPermissionCallback);\r\n\r\n            if (Notification.permission !== \"granted\")\r\n                return;\r\n\r\n            startReceiver(userId);\r\n        },\r\n\r\n        hasReceivedNotifications: function () {\r\n            return receivedNotifications.length > 0;\r\n        },\r\n\r\n        getAllReceivedNotifications: function () {\r\n            return receivedNotifications;\r\n        },\r\n\r\n        addListener: function (callback) {\r\n            listeners.push(callback);\r\n        },\r\n\r\n        removeListener: function (callback) {\r\n            listeners = _.filter(listeners, function (otherCallback) {\r\n                return otherCallback !== callback;\r\n            });\r\n        }\r\n\r\n    };\r\n});\n","define('drops/pushNotificationReceiver/pushNotificationReceiver',[\r\n    'jquery', \r\n    'underscore',\r\n    'lq/main',\r\n    'lq/drop',\r\n    'lq/webPushNotifications'\r\n], function ($, _, main, Drop, webPushNotifications) {\r\n    'use strict';\r\n    \r\n    function PushNotificationReceiver(options) {\r\n        Drop.call(this, $('<div />'), options);\r\n        this.listener = this.handleNotification.bind(this, false);\r\n    };\r\n\r\n    Drop.extend(PushNotificationReceiver);\r\n\r\n    PushNotificationReceiver.typeName = 'PushNotificationReceiver';\r\n\r\n    PushNotificationReceiver.prototype.postRender = function() {\r\n        if (main.areWebNotificationsEnabled())\r\n            this.piping.eventing.onPageLoad(this.initializeForWeb.bind(this));\r\n    };\r\n\r\n    PushNotificationReceiver.prototype.initializeForWeb = function (continuation) {\r\n        var self = this;\r\n        webPushNotifications.startReceivingNotifications(this.piping.application.userId, function (permissionType, deviceId) {\r\n            if (permissionType === 'granted')\r\n                self.triggerEventIfEnabled('receiverLoaded', deviceId);\r\n        });\r\n\r\n        if (webPushNotifications.hasReceivedNotifications()) {\r\n            var notifications = webPushNotifications.getAllReceivedNotifications();\r\n\r\n            // wait until all drops are loaded before we trigger this event\r\n            this.piping.eventing.onPageLoad(this.handleNotifications.bind(this, true, notifications));\r\n        }\r\n\r\n        webPushNotifications.addListener(this.listener);\r\n\r\n        continuation();\r\n    };\r\n\r\n    PushNotificationReceiver.prototype.handleNotifications = function (isBackground, notifications, continuation) {\r\n        _.each(notifications, this.handleNotification.bind(this, isBackground));\r\n        continuation();\r\n    };\r\n\r\n    PushNotificationReceiver.prototype.handleNotification = function (isBackground, notification) {\r\n        var self = this;\r\n        _.each(_.keys(notification), function (prop) {\r\n            self.piping.parameters.locals.setValue(prop, notification[prop]);\r\n        });\r\n\r\n        if (isBackground)\r\n            this.triggerEventIfEnabled('backgroundNotificationReceived');\r\n        else\r\n            this.triggerEventIfEnabled('foregroundNotificationReceived');\r\n\r\n    };\r\n\r\n    PushNotificationReceiver.prototype.unsubscribeEventHandlers = function () {\r\n        webPushNotifications.removeListener(this.listener);\r\n    };\r\n\r\n    return PushNotificationReceiver;\r\n});\n","define('drops/qrCode/qrCode',[\r\n    'jquery',\r\n    'lq',\r\n    'lq/drop'\r\n], function ($, lq, Drop) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            contentType: 'applicationUrl',\r\n            content: {}\r\n        }\r\n    };\r\n\r\n    function QrCode(options) {\r\n        Drop.call(this, $('<div />'), defaults, options);\r\n\r\n        this.$element\r\n\t        .addClass('boxToBorderSize')\r\n            .css({\r\n                'background-repeat': 'no-repeat',\r\n                'background-size': 'contain'\r\n            });\r\n    };\r\n\r\n    Drop.extend(QrCode, Drop);\r\n\r\n    QrCode.typeName = 'QrCode';\r\n\r\n    QrCode.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n        this.setImage(this.getImageUrl());\r\n    };\r\n\r\n    QrCode.prototype.setImage = function (url) {\r\n        this.$element.css('background-image', 'url(' + url + ')');\r\n    };\r\n\r\n    QrCode.prototype.getImageUrl = function () {\r\n        return lq.getTenantUrl('GeneratedContent/QrCode/'\r\n            + '?actionId=' + this.rootDrop.data.id\r\n            + '&qrCodeId=' + this.data.id\r\n            + '&parameters=' + encodeURIComponent(JSON.stringify(this.piping.parameters.getNonSystemParameters()))\r\n            + '&width=' + this.data.size.x\r\n            + '&height=' + this.data.size.y);\r\n    };\r\n\r\n    return QrCode;\r\n});\n","define('drops/radioButton/radioButton',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style'\r\n], function ($, Drop, Style) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            useBuiltInStyle: true\r\n        }\r\n    };\r\n\r\n    function RadioButton(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.renderRadioButton();\r\n\r\n        this.$element\r\n\t        .addClass('boxToBorderSize')\r\n\t        .css({\r\n\t            whiteSpace: 'pre-wrap'\r\n\t        });\r\n\r\n        Style.renderStyles(this);\r\n    };\r\n\r\n    Drop.extend(RadioButton, Drop);\r\n\r\n    RadioButton.typeName = 'RadioButton';\r\n\r\n    RadioButton.prototype.renderRadioButton = function () {\r\n        var self = this;\r\n        this.$input = $('<input type = \"radio\" />')\r\n            .attr('value', this.data.value)\r\n            .attr('tabindex', this.data.tabIndex)\r\n            .on('change', function () {\r\n                self.updateParent();\r\n\r\n                if ($(this).is(':checked'))\r\n                    self.triggerSelectedEvent();\r\n            });\r\n\r\n        if (this.data.useBuiltInStyle) {\r\n            this.$input\r\n                .appendTo(this.$element);\r\n        } else {\r\n            this.$wrapper = $('<label class=\"customCheckState\" />')\r\n                .append(this.$input)\r\n                .append($('<div class=\"customCheckState-tick\"></div>'))\r\n                .appendTo(this.$element);\r\n        }\r\n\r\n        this.$label = $('<span />')\r\n            .text(this.data.text)\r\n            .appendTo(this.$element);\r\n    };\r\n\r\n    RadioButton.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n\r\n        this.applyPosition();\r\n\r\n        // note: append defaultEventArg to the name when used in for instance a list,\r\n        // making the radio button group unique for each list-item\r\n        var defaultEventArg = this.getDefaultEventArg();\r\n        this.$input.attr('name', defaultEventArg ? this.parent.data.id + '_' + defaultEventArg : this.parent.data.id);\r\n        \r\n        if (this.parent.value === this.data.value)\r\n            this.$input.prop('checked', true);\r\n\r\n        if (this.parent.data.readOnly) {\r\n            this.$input.prop('disabled', true);\r\n        } else {\r\n            var self = this;\r\n            this.$label\r\n                .on('click', function () {\r\n                    self.select();\r\n                    self.updateParent();\r\n                });\r\n        }\r\n    };\r\n\r\n    RadioButton.prototype.triggerSelectedEvent = function () {\r\n        // note: don't send the value as the parameter for the event \r\n        // currently these events are used in lists and current implementations\r\n        // assume the parameter will contain the id of the row\r\n        if (this.data.eventing && this.data.eventing.selected && this.data.eventing.selected.enabled === true)\r\n            this.triggerEvent(this.data.eventing.selected.raisedEventName);\r\n    };\r\n\r\n    RadioButton.prototype.updateParent = function () {\r\n        var value = this.data.value;\r\n        this.parent.radioButtonSelectionChanged(value);\r\n    };\r\n\r\n    RadioButton.prototype.select = function () {\r\n        if (this.$input.is(':checked'))\r\n            return;\r\n\r\n        this.$input.prop('checked', true);\r\n        this.triggerSelectedEvent();\r\n    };\r\n\r\n    RadioButton.prototype.unselect = function () {\r\n        this.$input.prop('checked', false);\r\n    };\r\n    \r\n    return RadioButton;\r\n});\n","define('drops/radioButtonGroup/radioButtonGroup',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/util',\r\n    'underscore'\r\n], function ($, Drop, util, _) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded'\r\n            }\r\n        }\r\n    };\r\n\r\n    function RadioButtonGroup(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing);\r\n        this.value = this.data.value;\r\n    };\r\n\r\n    Drop.extend(RadioButtonGroup, Drop);\r\n\r\n    RadioButtonGroup.typeName = 'RadioButtonGroup';\r\n\r\n    // WHY: The old morph code didn't apply the position correctly\r\n    // and we need to stay compatible with actions that were created in the\r\n    // old morphs designer. This means there's actually a discrepancy\r\n    // between the position of radiobuttons and all other drops.\r\n    RadioButtonGroup.prototype.applyPosition = $.noop;\r\n\r\n    RadioButtonGroup.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.piping.required.apply(this);\r\n        this.$element\r\n            .css({\r\n                position: 'absolute',\r\n                zIndex: this.getZIndex()\r\n            });\r\n    };\r\n\r\n    RadioButtonGroup.prototype.postRender = function () {\r\n        this.addRequiredIndicator();\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    RadioButtonGroup.prototype.addRequiredIndicator = function () {\r\n        if (this.pool.length === 0)\r\n            return;\r\n\r\n        if (this.data.required)\r\n            this.pool[0].$element.addClass('isRequiredField');\r\n        else\r\n            this.pool[0].$element.removeClass('isRequiredField');\r\n    };\r\n\r\n    RadioButtonGroup.prototype.updateRequiredIndicator = function () {\r\n        if (this.pool.length === 0)\r\n            return;\r\n\r\n        if (this.isValid())\r\n            this.pool[0].$element.addClass('hasValidValue');\r\n        else\r\n            this.pool[0].$element.removeClass('hasValidValue');\r\n    };\r\n\r\n    RadioButtonGroup.prototype.render = function ($element) {\r\n    \treturn this.createAndRenderDrops($element);\r\n    };\r\n\r\n    RadioButtonGroup.prototype.radioButtonSelectionChanged = function (valueOfSelection) {\r\n        if (this.value === valueOfSelection)\r\n            return;\r\n\r\n        this.value = valueOfSelection;\r\n\r\n        // for now both events trigger are always triggered together\r\n        this.triggerEventIfEnabled('selected', valueOfSelection);\r\n        this.triggerEventIfEnabled('changed', valueOfSelection);\r\n\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    RadioButtonGroup.prototype.getValue = function () {\r\n        return this.value;\r\n    };\r\n\r\n    RadioButtonGroup.prototype.setValue = function (update) {\r\n        var value = update.value === null || update.value === undefined ? update.value : update.value.toString();\r\n        var radioButton = _.find(this.pool, function(drop) {\r\n            return drop.data.value === value;\r\n        });\r\n        if (radioButton) {\r\n            this.value = value;\r\n            radioButton.select();\r\n        } else {\r\n            this.clearValue();\r\n        }\r\n\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    RadioButtonGroup.prototype.clearValue = function () {\r\n        this.value = null;\r\n\r\n        _.each(this.pool, function (drop) {\r\n            drop.unselect();\r\n        });\r\n\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    return RadioButtonGroup;\r\n});\n","define('drops/radioButtonGroupV2/radioButtonGroupV2',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/util',\r\n    'underscore',\r\n    'lq/style'\r\n], function ($, Drop, util, _, Style) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded'\r\n            },\r\n            top: 0,\r\n            left: 0\r\n        }\r\n    };\r\n\r\n    function RadioButtonGroupV2(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing);\r\n        this.value = this.data.value;\r\n    };\r\n\r\n    Drop.extend(RadioButtonGroupV2, Drop);\r\n\r\n    RadioButtonGroupV2.typeName = 'RadioButtonGroupV2';\r\n\r\n    RadioButtonGroupV2.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.piping.required.apply(this);\r\n        this.applyPosition();\r\n    };\r\n    \r\n    RadioButtonGroupV2.prototype.postRender = function () {\r\n        this.addRequiredIndicator();\r\n        this.updateRequiredIndicator();\r\n\r\n        if (this.pool[0])\r\n            Style.renderStyles(this, null, this.pool[0].$element, null, null, null, this.pool[0].$element);\r\n    };\r\n\r\n    RadioButtonGroupV2.prototype.addRequiredIndicator = function () {\r\n        if (this.pool.length === 0)\r\n            return;\r\n\r\n        if (this.data.required && this.data.required.isRequired)\r\n            this.pool[0].$element.addClass('isRequiredField');\r\n        else\r\n            this.pool[0].$element.removeClass('isRequiredField');\r\n    };\r\n\r\n    RadioButtonGroupV2.prototype.updateRequiredIndicator = function () {\r\n        if (this.pool.length === 0)\r\n            return;\r\n\r\n        if (this.isValid())\r\n            this.pool[0].$element.addClass('hasValidValue');\r\n        else\r\n            this.pool[0].$element.removeClass('hasValidValue');\r\n    };\r\n\r\n    RadioButtonGroupV2.prototype.render = function ($element) {\r\n    \treturn this.createAndRenderDrops($element);\r\n    };\r\n\r\n    RadioButtonGroupV2.prototype.radioButtonSelectionChanged = function (valueOfSelection) {\r\n        if (this.value === valueOfSelection)\r\n            return;\r\n\r\n        this.value = valueOfSelection;\r\n\r\n        // for now both events trigger are always triggered together\r\n        this.triggerEventIfEnabled('selected', valueOfSelection);\r\n        this.triggerEventIfEnabled('changed', valueOfSelection);\r\n\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    RadioButtonGroupV2.prototype.getValue = function () {\r\n        return this.value;\r\n    };\r\n\r\n    RadioButtonGroupV2.prototype.setValue = function (update) {\r\n        var value = update.value === null || update.value === undefined ? update.value : update.value.toString();\r\n        var radioButton = _.find(this.pool, function(drop) {\r\n            return drop.data.value === value;\r\n        });\r\n        if (radioButton) {\r\n            this.value = value;\r\n            radioButton.select();\r\n        } else {\r\n            this.clearValue();\r\n        }\r\n\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    RadioButtonGroupV2.prototype.clearValue = function () {\r\n        this.value = null;\r\n\r\n        _.each(this.pool, function (drop) {\r\n            drop.unselect();\r\n        });\r\n\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    return RadioButtonGroupV2;\r\n});\r\n\n","define('drops/radioButtonList/radioButtonList',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/required'\r\n], function ($, Drop, Style, Required) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            layout: 'horizontal',\r\n            useBuiltInStyle: true,\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded'\r\n            }\r\n        }\r\n    };\r\n\r\n    function RadioButtonList(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.value = null;\r\n\r\n        this.$radiobuttons = $('<span />');\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize')\r\n\r\n            // note: we have to wrap the radio buttons in a another div.\r\n            // If not wrapped, using \"overflow: 'auto'\" will actually\r\n            // cause a scrollbar to appear when the required indicator is enabled\r\n            .append($('<div />')\r\n                .css({\r\n                    whiteSpace: 'pre-wrap',\r\n                    overflow: 'auto',\r\n                    width: '100%',\r\n                    height: '100%'\r\n                })\r\n                .append(this.$radiobuttons));\r\n\r\n        Style.renderStyles(this);\r\n    };\r\n\r\n    Drop.extend(RadioButtonList, Drop);\r\n\r\n    RadioButtonList.typeName = 'RadioButtonList';\r\n\r\n    RadioButtonList.prototype.preRender = function () {\r\n        var self = this;\r\n        this.piping.visibility.apply(this);\r\n        this.piping.required.apply(this);\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.dataSource,\r\n            function (data) {\r\n                self.update(data);\r\n            });\r\n        Required.prototype.addRemoveRequiredIndicator(self);\r\n        this.applyPosition();\r\n    };\r\n\r\n    RadioButtonList.prototype.update = function (data) {\r\n        this.$radiobuttons.empty();\r\n\r\n        if (!data)\r\n            return;\r\n\r\n        var self = this;\r\n        $.each(data.results, function (key, result) {\r\n            var elementId = self.data.id + '_' + result[self.data.keyOutput];\r\n\r\n            var $radioButton = $('<input type=\"radio\" />')\r\n                .attr('name', self.data.id)\r\n                .attr('id', elementId)\r\n                .attr('value', result[self.data.keyOutput])\r\n                .on('change', function () {\r\n                    self.data.value = $radioButton.val();\r\n                    self.updateRequiredIndicator();\r\n                    self.triggerEventIfEnabled('selected', self.data.value);\r\n                    self.triggerEventIfEnabled('changed', self.data.value);\r\n                });\r\n\r\n            var $indicator = self.data.useBuiltInStyle\r\n                ? $radioButton\r\n                : $('<label class=\"customCheckState\" />')\r\n                    .append($radioButton)\r\n                    .append($('<div class=\"customCheckState-tick\"></div>'));\r\n\r\n            var $label = $('<label />')\r\n                .attr('for', elementId)\r\n                .text(result[self.data.labelOutput]);\r\n            var $element = $('<span />')\r\n                .css({\r\n                    display: 'inline-block'\r\n                })\r\n                .append($indicator)\r\n                .append($label);\r\n\r\n            if (self.data.layout === 'horizontal') {\r\n                self.$radiobuttons.append($element);\r\n            } else {\r\n                self.$radiobuttons.append($('<div />').append($element));\r\n            }\r\n        });\r\n\r\n        this._updateRadioButtonSelection(this.data.value);\r\n    };\r\n\r\n    RadioButtonList.prototype.getValue = function () {\r\n        return this.data.value;\r\n    };\r\n\r\n    RadioButtonList.prototype.clearValue = function () {\r\n        this._updateRadioButtonSelection(null);\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    RadioButtonList.prototype.setValue = function (update) {\r\n        this._updateRadioButtonSelection(update.value);\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    RadioButtonList.prototype._updateRadioButtonSelection = function (value) {\r\n        this.data.value = value;\r\n\r\n        if (value) {\r\n            this.$radiobuttons\r\n                .children()\r\n                .find('input[value=\"' + value + '\"]')\r\n                .prop('checked', true);\r\n        } else {\r\n            this.$radiobuttons\r\n                .children()\r\n                .find('input[type=\"radio\"]:checked')\r\n                .prop('checked', false);\r\n        }\r\n    };\r\n\r\n    return RadioButtonList;\r\n});\r\n\r\n\r\n\r\n\n","define('drops/rectangle/rectangle',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/tooltip'\r\n], function ($, Drop, Style, Tooltip) {\r\n\t'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            title: {\r\n                option: Tooltip.hardcoded\r\n            },\r\n        }\r\n    }\r\n\r\n    function Rectangle(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n       \r\n        this.$element.addClass('boxToBorderSize');\r\n        this.tooltip = new Tooltip(this, this.data.title, this.$element);\r\n\r\n        Style.renderStyles(this);\r\n    }\r\n    \r\n    Drop.extend(Rectangle, Drop);\r\n\r\n    Rectangle.typeName = 'Rectangle';\r\n\r\n    Rectangle.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n        this.tooltip.update();\r\n    };\r\n\r\n    Rectangle.prototype.setValue = function (update) {\r\n        this.setBackgroundColor(update.value);\r\n    };\r\n    \r\n    Rectangle.prototype.clearValue = function () {\r\n        this.setBackgroundColor('');\r\n    };\r\n\r\n    Rectangle.prototype.setBackgroundColor = function (color) {\r\n        this.$element.css('background-color', color);\r\n    };\r\n\r\n\treturn Rectangle;\r\n});\n","define('drops/requirementsGraph/monotoniccubicspline',[],function() {\r\n    'use strict';\r\n\r\n    function MonotonicCubicSpline(x, y) {\r\n        var alpha, beta, delta, dist, i, m, n, tau, to_fix, _i, _j, _len, _len2, _ref, _ref2, _ref3, _ref4;\r\n        n = x.length;\r\n        delta = [];\r\n        m = [];\r\n        alpha = [];\r\n        beta = [];\r\n        dist = [];\r\n        tau = [];\r\n        for (i = 0, _ref = n - 1; (0 <= _ref ? i < _ref : i > _ref) ; (0 <= _ref ? i += 1 : i -= 1)) {\r\n            delta[i] = (y[i + 1] - y[i]) / (x[i + 1] - x[i]);\r\n            if (i > 0) {\r\n                m[i] = (delta[i - 1] + delta[i]) / 2;\r\n            }\r\n        }\r\n        m[0] = delta[0];\r\n        m[n - 1] = delta[n - 2];\r\n        to_fix = [];\r\n        for (i = 0, _ref2 = n - 1; (0 <= _ref2 ? i < _ref2 : i > _ref2) ; (0 <= _ref2 ? i += 1 : i -= 1)) {\r\n            if (delta[i] === 0) {\r\n                to_fix.push(i);\r\n            }\r\n        }\r\n        for (_i = 0, _len = to_fix.length; _i < _len; _i++) {\r\n            i = to_fix[_i];\r\n            m[i] = m[i + 1] = 0;\r\n        }\r\n        for (i = 0, _ref3 = n - 1; (0 <= _ref3 ? i < _ref3 : i > _ref3) ; (0 <= _ref3 ? i += 1 : i -= 1)) {\r\n            alpha[i] = m[i] / delta[i];\r\n            beta[i] = m[i + 1] / delta[i];\r\n            dist[i] = Math.pow(alpha[i], 2) + Math.pow(beta[i], 2);\r\n            tau[i] = 3 / Math.sqrt(dist[i]);\r\n        }\r\n        to_fix = [];\r\n        for (i = 0, _ref4 = n - 1; (0 <= _ref4 ? i < _ref4 : i > _ref4) ; (0 <= _ref4 ? i += 1 : i -= 1)) {\r\n            if (dist[i] > 9) {\r\n                to_fix.push(i);\r\n            }\r\n        }\r\n        for (_j = 0, _len2 = to_fix.length; _j < _len2; _j++) {\r\n            i = to_fix[_j];\r\n            m[i] = tau[i] * alpha[i] * delta[i];\r\n            m[i + 1] = tau[i] * beta[i] * delta[i];\r\n        }\r\n        this.x = x.slice(0, n);\r\n        this.y = y.slice(0, n);\r\n        this.m = m;\r\n    }\r\n\r\n    MonotonicCubicSpline.prototype.interpolate = function (x) {\r\n        var h, h00, h01, h10, h11, i, t, t2, t3, y, _ref;\r\n        for (i = _ref = this.x.length - 2; (_ref <= 0 ? i <= 0 : i >= 0) ; (_ref <= 0 ? i += 1 : i -= 1)) {\r\n            if (this.x[i] <= x) {\r\n                break;\r\n            }\r\n        }\r\n        h = this.x[i + 1] - this.x[i];\r\n        t = (x - this.x[i]) / h;\r\n        t2 = Math.pow(t, 2);\r\n        t3 = Math.pow(t, 3);\r\n        h00 = 2 * t3 - 3 * t2 + 1;\r\n        h10 = t3 - 2 * t2 + t;\r\n        h01 = -2 * t3 + 3 * t2;\r\n        h11 = t3 - t2;\r\n        y = h00 * this.y[i] + h10 * h * this.m[i] + h01 * this.y[i + 1] + h11 * h * this.m[i + 1];\r\n        return y;\r\n    };\r\n\r\n    return MonotonicCubicSpline;\r\n});\n","define('drops/requirementsGraph/barvalue',[],function() {\r\n    'use strict';\r\n\r\n    function BarValue(id, xValue, selectedValue, preferredValue) {\r\n        this.id = id;\r\n        this.xValue = xValue;\r\n        this.selectedValue = selectedValue;\r\n        this.preferredValue = preferredValue === undefined ? selectedValue : preferredValue;\r\n\r\n        this.originalSelectedValue = this.selectedValue;\r\n        this.originalPreferredValue = this.preferredValue;\r\n    };\r\n\r\n    BarValue.prototype.hasChanged = function() {\r\n        if (this.originalSelectedValue != this.selectedValue) {\r\n            return true;\r\n        }\r\n\r\n        if (this.originalPreferredValue != this.preferredValue) {\r\n            return true;\r\n        }\r\n\r\n        return false;\r\n    };\r\n\r\n    return BarValue;\r\n});\n","define('drops/requirementsGraph/requirementsgraphimpl',['jquery', 'underscore', 'drops/requirementsGraph/monotoniccubicspline', 'lq/dayTime', 'drops/requirementsGraph/barvalue'],\r\n    function ($, _, MonotonicCubicSpline, dayTime, BarValue) {\r\n        'use strict';\r\n        \r\n        function RequirementsGraphImpl(container) {\r\n            this.container = container;\r\n            this.isMouseDown = false;\r\n            this.previousMouseMovePosition = undefined;\r\n            this.graphData = null;\r\n            this.graphModel = null;\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.roundFloat = function(x) {\r\n            return (Math.round(x * 100) / 100);\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.compareFloats = function(x, y) {\r\n            return (Math.round(x * 100) / 100) == (Math.round(y * 100) / 100);\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.getYPosition = function(realYValue) {\r\n            return _.find(this.graphModel.yIntervals, function (yInterval) {\r\n                return yInterval.real == realYValue;\r\n            }).percentual;\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.getXPosition = function(realXValue) {\r\n            return _.find(this.graphModel.xIntervals, function (xInterval) {\r\n                return xInterval.real == realXValue;\r\n            }).percentual;\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.getRealYPosition = function (percentualYValue) {\r\n            var self = this;\r\n            return _.find(self.graphModel.yIntervals, function (yInterval) {\r\n                return self.compareFloats(yInterval.percentual, percentualYValue);\r\n            }).real;\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.getRealXPosition = function (percentualXValue) {\r\n            var self = this;\r\n            return _.find(self.graphModel.xIntervals, function (xInterval) {\r\n                return self.compareFloats(xInterval.percentual, percentualXValue);\r\n            }).real;\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.calculateYPosition = function(value) {\r\n            return (value - this.graphData.yAxisFrom) / (this.graphData.yAxisTo - this.graphData.yAxisFrom) * 100;\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.calculateXPosition = function(value) {\r\n            return (value - this.graphData.xAxisFrom) / (this.graphData.xAxisTo - this.graphData.xAxisFrom) * 100;\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.getBarValue = function(realXValue) {\r\n            return _.find(this.graphModel.barValues, function (barValue) {\r\n                return barValue.xValue == realXValue;\r\n            });\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.createGraphModel = function() {\r\n            this.graphModel = {\r\n                xSubIntervalWidth: this.calculateXPosition(this.graphData.xAxisFrom + this.graphData.xAxisSubInterval),\r\n                xIntervalWidth: this.calculateXPosition(this.graphData.xAxisFrom + this.graphData.xAxisInterval),\r\n                ySubIntervalWidth: this.calculateYPosition(this.graphData.yAxisFrom + this.graphData.yAxisSubInterval),\r\n                yIntervalWidth: this.calculateYPosition(this.graphData.yAxisFrom + this.graphData.yAxisInterval),\r\n                xIntervals: this.generateXIntervals(),\r\n                yIntervals: this.generateYIntervals(),\r\n                barValues: this.graphData.barValues == undefined ? [] : this.graphData.barValues\r\n            };\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.generateXIntervals = function() {\r\n            var xIntervals = [];\r\n\r\n            for (var x = this.graphData.xAxisFrom; x <= this.graphData.xAxisTo; x = x + this.graphData.xAxisSubInterval) {\r\n                xIntervals.push({\r\n                    real: x,\r\n                    percentual: this.calculateXPosition(x)\r\n                });\r\n            }\r\n\r\n            return xIntervals;\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.generateYIntervals = function() {\r\n            var yIntervals = [];\r\n\r\n            for (var y = this.graphData.yAxisFrom; y <= this.graphData.yAxisTo; y = y + this.graphData.yAxisSubInterval) {\r\n                yIntervals.push({\r\n                    real: y,\r\n                    percentual: this.calculateYPosition(y)\r\n                });\r\n            }\r\n\r\n            return yIntervals;\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.createGraph = function() {\r\n            var graph = $('<div>', {\r\n                'class': 'graph'\r\n            });\r\n\r\n            this.createGraphContainer(graph);\r\n\r\n            if (this.graphData.showAxisLabels) {\r\n                this.createXAxis(graph);\r\n                this.createYAxis(graph);\r\n            }\r\n\r\n            graph.appendTo($(this.container));\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.createXAxis = function(graph) {\r\n            var xAxis = $('<ul>').\r\n                addClass('xAxis');\r\n\r\n            for (var x = this.graphData.xAxisFrom; x < this.graphData.xAxisTo; x = x + this.graphData.xAxisInterval) {\r\n                $('<li>', {\r\n                    css: {\r\n                        width: this.graphModel.xIntervalWidth + '%',\r\n                        'margin-left': -this.graphModel.xIntervalWidth / 2 + '%',\r\n                        'margin-right': this.graphModel.xIntervalWidth / 2 + '%'\r\n                    },\r\n                    text: this.graphData.xAxisShowAsTime ? dayTime.fromTicks(x) : x\r\n                }).appendTo(xAxis);\r\n            }\r\n\r\n            graph.append(xAxis);\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.createYAxis = function(graph) {\r\n            var yAxis = $('<ul>').\r\n                addClass('yAxis');\r\n\r\n            for (var y = this.graphData.yAxisTo; y >= this.graphData.yAxisFrom; y = y - this.graphData.yAxisInterval) {\r\n                $('<li>', {\r\n                    css: {\r\n                        height: this.graphModel.yIntervalWidth + '%'\r\n                    },\r\n                    text: this.graphData.yAxisShowAsTime ? dayTime.fromTicks(y) : y\r\n                }).appendTo(yAxis);\r\n            }\r\n\r\n            graph.append(yAxis);\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.createGraphContainer = function(graph) {\r\n            var outerGraphContainer = $('<div>')\r\n                .addClass('graphContainer')\r\n                .addClass('outerGraphContainer')\r\n                .css({\r\n                    width: '100%',\r\n                    height: '100%'\r\n                })\r\n                .appendTo(graph);\r\n\r\n            var graphContainer = $('<div>')\r\n                .addClass('graphContainer')\r\n                .addClass('innerGraphContainer')\r\n                .css({\r\n                    width: '100%',\r\n                    height: '100%',\r\n                    cursor: this.graphData.readOnly ? 'default' : 'pointer'\r\n                });\r\n\r\n            if (!this.graphData.readOnly) {\r\n                this.addChangeBarListeners(graphContainer);\r\n            }\r\n\r\n            this.createGridLines(graphContainer);\r\n            this.createGraphBars(graphContainer);\r\n\r\n            graphContainer.appendTo(outerGraphContainer);\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.createGridLines = function(graphContainer) {\r\n            for (var x = this.graphData.xAxisFrom; x < this.graphData.xAxisTo; x = x + this.graphData.xAxisSubInterval) {\r\n                if ((x + this.graphData.xAxisSubInterval) % this.graphData.xAxisInterval == 0) {\r\n                    this.createVerticalGridDiv(graphContainer, x)\r\n                        .addClass('intervalGrid');\r\n                }\r\n                else {\r\n                    this.createVerticalGridDiv(graphContainer, x)\r\n                        .addClass('subIntervalGrid');\r\n                }\r\n            }\r\n            for (var y = this.graphData.yAxisFrom; y < this.graphData.yAxisTo; y = y + this.graphData.yAxisSubInterval) {\r\n                if ((y + this.graphData.yAxisSubInterval) % this.graphData.yAxisInterval == 0) {\r\n                    this.createHorizontalGridDiv(graphContainer, y)\r\n                        .addClass('intervalGrid');\r\n                }\r\n                else {\r\n                    this.createHorizontalGridDiv(graphContainer, y)\r\n                        .addClass('subIntervalGrid');\r\n                }\r\n            }\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.createHorizontalGridDiv = function(graphContainer, yValue) {\r\n            return this.createGridDiv(graphContainer, 100 - this.getYPosition(yValue + this.graphData.yAxisSubInterval), 0, this.getYPosition(yValue), 0);\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.createVerticalGridDiv = function(graphContainer, xValue) {\r\n            var gridDiv = this.createGridDiv(graphContainer, 0, 100 - this.getXPosition(xValue + this.graphData.xAxisSubInterval), 0, this.getXPosition(xValue));\r\n            return gridDiv.addClass('vertical');\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.createGridDiv = function(graphContainer, top, right, bottom, left) {\r\n            return $('<div>', {\r\n                'class': 'gridBar',\r\n                css: {\r\n                    top: top + '%',\r\n                    right: right + '%',\r\n                    left: left + '%',\r\n                    bottom: bottom + '%'\r\n                }\r\n            }).appendTo(graphContainer);\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.addChangeBarListeners = function(graphContainer) {\r\n            var self = this;\r\n            graphContainer.on('mousedown', function (e) {\r\n                self.onMouseMoveStart(e, this);\r\n            });\r\n            graphContainer.on('mouseleave', function (e) {\r\n                self.onMouseMoveEnd(e, this);\r\n            });\r\n            graphContainer.on('mouseup', function (e) {\r\n                self.onMouseMoveEnd(e, this);\r\n            });\r\n            graphContainer.on('mousemove', function (e) {\r\n                self.onMouseMove(e, this);\r\n            });\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.onMouseMove = function (e, handler) {\r\n            if (this.isMouseDown) {\r\n                this.locateAndChangeBar({ x: e.pageX, y: e.pageY }, handler);\r\n            }\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.onMouseMoveEnd = function (e, handler) {\r\n            if (this.isMouseDown) {\r\n                this.locateAndChangeBar({ x: e.pageX, y: e.pageY }, handler);\r\n            }\r\n\r\n            this.isMouseDown = false;\r\n            this.previousMouseMovePosition = undefined;\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.onMouseMoveStart = function (e, handler) {\r\n            this.isMouseDown = true;\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.calculateRelativeMousePosition = function(mousePosition, graphContainer) {\r\n            var point = { x: 0, y: 0 };\r\n\r\n            var offset = $(graphContainer).offset();\r\n            point.x = (mousePosition.x - offset.left) / graphContainer.scrollWidth * 100;\r\n            var limitedMousePositionY = mousePosition.y < offset.top\r\n                ? offset.top\r\n                : mousePosition.y > offset.top + graphContainer.scrollHeight\r\n                ? offset.top + graphContainer.scrollHeight\r\n                : mousePosition.y;\r\n\r\n            point.y = Math.abs((limitedMousePositionY - offset.top) / graphContainer.scrollHeight * 100 - 100);\r\n\r\n            return point;\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.locateAndChangeBar = function(mousePosition, graphContainer) {\r\n            var relativeMousePosition = this.calculateRelativeMousePosition(mousePosition, graphContainer);\r\n\r\n            if (this.previousMouseMovePosition != undefined) {\r\n                var amountOfIntervalsBetweenPositions = Math.round(Math.abs(relativeMousePosition.x - this.previousMouseMovePosition.x) / this.graphModel.xSubIntervalWidth);\r\n                if (amountOfIntervalsBetweenPositions > 0) {\r\n                    var cubicSpline;\r\n                    var positivity;\r\n                    if (relativeMousePosition.x - this.previousMouseMovePosition.x <= 0) {\r\n                        cubicSpline = new MonotonicCubicSpline([relativeMousePosition.x, this.previousMouseMovePosition.x],\r\n                                                               [relativeMousePosition.y, this.previousMouseMovePosition.y]);\r\n                        positivity = -1;\r\n                    }\r\n                    else {\r\n                        cubicSpline = new MonotonicCubicSpline([this.previousMouseMovePosition.x, relativeMousePosition.x],\r\n                                                               [this.previousMouseMovePosition.y, relativeMousePosition.y]);\r\n                        positivity = 1;\r\n                    }\r\n                    for (var i = 1; i <= amountOfIntervalsBetweenPositions; i++) {\r\n                        var simulatedXPosition = this.previousMouseMovePosition.x + (i * positivity * this.graphModel.xSubIntervalWidth);\r\n                        var simulatedYPosition = cubicSpline.interpolate(simulatedXPosition);\r\n                        if (!isNaN(simulatedYPosition)) {\r\n                            var simulatedMousePosition = {\r\n                                x: this.snapXCoordinateToLowestSubInterval(simulatedXPosition),\r\n                                y: this.snapYCoordinateToClosestSubInterval(simulatedYPosition)\r\n                            };\r\n                            this.renderBarChange(graphContainer, simulatedMousePosition.x, simulatedMousePosition.y);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            this.previousMouseMovePosition = {\r\n                x: relativeMousePosition.x,\r\n                y: relativeMousePosition.y\r\n            };\r\n\r\n            var snappedX = this.snapXCoordinateToLowestSubInterval(relativeMousePosition.x);\r\n            var snappedY = this.snapYCoordinateToClosestSubInterval(relativeMousePosition.y);\r\n\r\n            this.renderBarChange(graphContainer, snappedX, snappedY);\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.snapXCoordinateToLowestSubInterval = function (x) {\r\n            var self = this;\r\n            var test = _.find(this.graphModel.xIntervals, function (xInterval) {\r\n                var difference = self.roundFloat(x - xInterval.percentual);\r\n                return difference >= 0 && difference < self.graphModel.xSubIntervalWidth;\r\n            });\r\n\r\n            if (!test) {\r\n                if (x > 100) return 100;\r\n                if (x < 0) return 0;\r\n            }\r\n\r\n            return test.percentual;\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.snapYCoordinateToClosestSubInterval = function (y) {\r\n            var self = this;\r\n            var closestYIntervals = _.filter(this.graphModel.yIntervals, function (yInterval) {\r\n                var difference = self.roundFloat(y - yInterval.percentual);\r\n                if (difference >= 0 && difference < self.graphModel.ySubIntervalWidth) return true;\r\n                if (difference <= 0 && difference > -self.graphModel.ySubIntervalWidth) return true;\r\n                return false;\r\n            });\r\n\r\n            if (closestYIntervals.length == 0) {\r\n                if (y > 100) return 100;\r\n                if (y < 0) return 0;\r\n            }\r\n            if (closestYIntervals.length == 1) return closestYIntervals[0].percentual;\r\n\r\n            if (Math.abs(closestYIntervals[0].percentual - y) < Math.abs(closestYIntervals[1].percentual - y)) {\r\n                return closestYIntervals[0].percentual;\r\n            } else {\r\n                return closestYIntervals[1].percentual;\r\n            }\r\n\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.renderBarChange = function(graphContainer, snappedX, snappedY) {\r\n            if (!this.graphData.isWithPreferredValues) {\r\n                this.changeBarSize(graphContainer, snappedX, snappedY);\r\n            } else {\r\n                this.changePreferredBarSize(graphContainer, snappedX, snappedY);\r\n            }\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.changeBarSize = function(graphContainer, x, y) {\r\n            var xValue = this.getRealXPosition(x);\r\n            var barValue = this.getBarValue(xValue);\r\n            var bar = $(graphContainer).children(\"div.bar.selected[data-xvalue='\" + xValue + \"']\");\r\n            var barsContainer = $(graphContainer).children(\"div.barsContainer[data-xvalue='\" + xValue + \"']\");\r\n\r\n            if (bar[0] == undefined || barsContainer[0] == undefined) return;\r\n\r\n            barValue.selectedValue = this.getRealYPosition(y);\r\n            barsContainer.prop('title', this.createGraphBarTitle(barValue));\r\n\r\n            bar.animate({ top: 100 - y + '%' }, { duration: 150, easing: 'swing', queue: false });\r\n            barsContainer.animate({ top: 100 - y + '%' }, { duration: 150, easing: 'swing', queue: false });\r\n\r\n            if (y != 0) {\r\n                bar.removeClass('collapsed');\r\n            } else {\r\n                bar.addClass('collapsed');\r\n            }\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.changePreferredBarSize = function(graphContainer, x, y) {\r\n            var xValue = this.getRealXPosition(x);\r\n            var barValue = this.getBarValue(xValue);\r\n\r\n            var selectedBar = $(graphContainer).children(\"div.bar.selected[data-xvalue='\" + xValue + \"']\");\r\n            var preferredBar = $(graphContainer).children(\"div.bar.preferred[data-xvalue='\" + xValue + \"']\");\r\n            var barsContainer = $(graphContainer).children(\"div.barsContainer[data-xvalue='\" + xValue + \"']\");\r\n\r\n            barValue.preferredValue = this.getRealYPosition(y);\r\n            barsContainer.prop('title', this.createGraphBarTitle(barValue));\r\n\r\n            preferredBar.removeClass('plus');\r\n            preferredBar.removeClass('minus');\r\n            preferredBar.removeClass('collapsed');\r\n\r\n            var selectedBarHeight = this.getYPosition(barValue.selectedValue);\r\n            if (y < selectedBarHeight) {\r\n                preferredBar.addClass('minus');\r\n                this.switchToMinusColor(preferredBar);\r\n                preferredBar.animate({ top: 100 - selectedBarHeight + '%', bottom: y + '%' }, { duration: 250, easing: 'swing', queue: false });\r\n                barsContainer.animate({ top: 100 - selectedBarHeight + '%' }, { duration: 250, easing: 'swing', queue: false });\r\n            }\r\n            else if (y > selectedBarHeight) {\r\n                preferredBar.addClass('plus');\r\n                this.switchToPlusColor(preferredBar);\r\n                preferredBar.animate({ top: 100 - y + '%', bottom: selectedBarHeight + '%' }, { duration: 250, easing: 'swing', queue: false });\r\n                barsContainer.animate({ top: 100 - y + '%' }, { duration: 250, easing: 'swing', queue: false });\r\n            }\r\n            else {\r\n                preferredBar.addClass('collapsed');\r\n                preferredBar.animate({ top: 100 - selectedBarHeight + '%', bottom: selectedBarHeight + '%' }, { duration: 250, easing: 'swing', queue: false });\r\n                barsContainer.animate({ top: 100 - selectedBarHeight + '%' }, { duration: 250, easing: 'swing', queue: false });\r\n            }\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.createGraphBars = function(graphContainer) {\r\n            for (var i = this.graphData.xAxisFrom; i < this.graphData.xAxisTo; i = i + this.graphData.xAxisSubInterval) {\r\n                if (i < this.graphData.xAxisMin || i >= this.graphData.xAxisMax) {\r\n                    this.createInvalidGraphBar(graphContainer, new BarValue(null, i, this.graphData.yAxisTo));\r\n                }\r\n                if (_.any(this.graphModel.barValues, function (barValue) { return barValue.xValue == i; })) {\r\n                    var barValue = _.find(this.graphModel.barValues, function (barValue) { return barValue.xValue == i; });\r\n                    this.createGraphBar(graphContainer, barValue);\r\n                }\r\n                else {\r\n                    var newBarValue = new BarValue(null, i, this.graphData.yAxisFrom);\r\n                    this.graphModel.barValues.push(newBarValue);\r\n                    this.createGraphBar(graphContainer, newBarValue);\r\n                }\r\n            }\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.createGraphBarTitle = function(barValue) {\r\n            var selectedString = 'Planning: ' + barValue.selectedValue;\r\n            if (this.graphData.isWithPreferredValues) {\r\n                return selectedString + '\\nSchedule: ' + barValue.preferredValue;\r\n            }\r\n            return selectedString;\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.createGraphBar = function(graphContainer, barValue) {\r\n            var xPosition = this.getXPosition(barValue.xValue);\r\n            var xPlusOnePosition = this.getXPosition(barValue.xValue + this.graphData.xAxisSubInterval);\r\n            var yPosition = this.getYPosition(barValue.selectedValue);\r\n\r\n            var barsContainer = $('<div>', {\r\n                'class': 'verticalBar barsContainer',\r\n                'data-xvalue': barValue.xValue,\r\n                'title': this.createGraphBarTitle(barValue),\r\n                css: {\r\n                    left: xPosition + '%',\r\n                    right: 100 - xPlusOnePosition + '%',\r\n                    top: 100 - yPosition + '%',\r\n                    bottom: 0 + '%'\r\n                }\r\n            }).appendTo(graphContainer);\r\n\r\n            barsContainer\r\n                .on('mouseenter', function () {\r\n                    barsContainer.addClass('barSelector');\r\n                })\r\n                .on('mouseleave', function () {\r\n                    barsContainer.removeClass('barSelector');\r\n                });\r\n\r\n            $('<div>', {\r\n                'class': 'verticalBar bar selected' + (yPosition != 0 ? '' : ' collapsed'),\r\n                'data-xvalue': barValue.xValue,\r\n                css: {\r\n                    left: xPosition + '%',\r\n                    right: 100 - xPlusOnePosition + '%',\r\n                    top: 100 - yPosition + '%',\r\n                    bottom: 0 + '%'\r\n                }\r\n            }).appendTo(graphContainer);\r\n\r\n            if (this.graphData.isWithPreferredValues) {\r\n                var yPositionOfPreferredValue = this.getYPosition(barValue.preferredValue);\r\n                var isPreferredPlus = yPositionOfPreferredValue > yPosition;\r\n\r\n                var topLocation = isPreferredPlus ? 100 - yPositionOfPreferredValue : 100 - yPosition;\r\n                var bottomLocation = isPreferredPlus ? yPosition : yPositionOfPreferredValue;\r\n                var preferredBar = $('<div>', {\r\n                    'class': 'verticalBar bar preferred ' + (isPreferredPlus ? 'plus' : 'minus') + (yPositionOfPreferredValue != yPosition ? '' : ' collapsed'),\r\n                    'data-xvalue': barValue.xValue,\r\n                    css: {\r\n                        left: xPosition + '%',\r\n                        right: 100 - xPlusOnePosition + '%',\r\n                        top: topLocation + '%',\r\n                        bottom: bottomLocation + '%',\r\n                    }\r\n                }).appendTo(graphContainer);\r\n\r\n                if (isPreferredPlus) {\r\n                    barsContainer.css({ top: 100 - yPositionOfPreferredValue + '%' });\r\n                }\r\n                if (isPreferredPlus) {\r\n                    preferredBar.addClass('plusPreferred');\r\n                } else {\r\n                    preferredBar.addClass('minusPreferred');\r\n                }\r\n            }\r\n        };\r\n        \r\n        RequirementsGraphImpl.prototype.createInvalidGraphBar = function(graphContainer, barValue) {\r\n            var xPosition = this.getXPosition(barValue.xValue);\r\n            var xPlusOnePosition = this.getXPosition(barValue.xValue + this.graphData.xAxisSubInterval);\r\n            var yPosition = this.getYPosition(barValue.selectedValue);\r\n\r\n            $('<div>', {\r\n                'class': 'verticalBar bar invalid',\r\n                css: {\r\n                    left: xPosition + '%',\r\n                    right: 100 - xPlusOnePosition + '%',\r\n                    top: 100 - yPosition + '%',\r\n                    bottom: 0 + '%'\r\n\r\n                }\r\n            }).appendTo(graphContainer);\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.deleteGraph = function() {\r\n            $(this.container).children().remove();\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.getBarValues = function () {\r\n            return this.graphModel.barValues;\r\n        };\r\n\r\n        RequirementsGraphImpl.prototype.draw = function (selectedGraphData) {\r\n            this.deleteGraph();\r\n\r\n            this.graphData = selectedGraphData;\r\n\r\n            this.createGraphModel();\r\n            this.createGraph();\r\n        };\r\n\r\n        return RequirementsGraphImpl;\r\n    });\n","define('drops/requirementsGraph/requirementsGraph',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/drop',\r\n    'drops/requirementsGraph/requirementsgraphimpl',\r\n    'drops/requirementsGraph/barvalue',\r\n    'lq/style'\r\n], function ($, _, Drop, RequirementsGraphImpl, BarValue, Style) {\r\n    'use strict';\r\n\r\n    function RequirementsGraph(options) {\r\n        Drop.call(this, $('<div/>'), options);\r\n\r\n        this.data.styles = this.data.styleId;\r\n\r\n        var $container = $('<div />')\r\n            .addClass('requirementsGraphContainer')\r\n            .css({\r\n                width: '100%',\r\n                height: '100%'\r\n            })\r\n            .appendTo(this.$element);\r\n\r\n        this.graph = new RequirementsGraphImpl($container[0]);\r\n        this.limits = [];\r\n        this.planningUnits = [];\r\n        this.scheduleUnits = [];\r\n        this.barValues = [];\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize');\r\n\r\n        Style.renderStyles(this, 'requirementgraph-', $container);\r\n    };\r\n\r\n    Drop.extend(RequirementsGraph, Drop);\r\n\r\n    RequirementsGraph.typeName = 'RequirementsGraph';\r\n        \r\n    RequirementsGraph.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n    };\r\n\r\n    RequirementsGraph.prototype.licquidMethod_load = function () {\r\n        var self = this;\r\n        if (this.data.isWithPreferredValues) {\r\n            this.piping.queryDispatcher.dispatch(\r\n                this.data.selectedScheduleDataSource,\r\n                function (data) {\r\n                    self.scheduleUnits = data.results;\r\n\r\n                    self.piping.queryDispatcher.dispatch(\r\n                        self.data.selectedLimitsDataSource,\r\n                        function (data) {\r\n                            self.limits = data.results;\r\n                            self.mergeData();\r\n                        },\r\n                        function (queryData) {\r\n                            queryData.pageSize = 1024;\r\n                        });\r\n\r\n                    self.piping.queryDispatcher.dispatch(\r\n                        self.data.selectedPlanningDataSource,\r\n                        function (data) {\r\n                            self.planningUnits = data.results;\r\n                            self.mergeData();\r\n                        },\r\n                        function (queryData) {\r\n                            queryData.pageSize = 1024;\r\n                        });\r\n                },\r\n                function (queryData) {\r\n                    queryData.pageSize = 1024;\r\n                });\r\n        } else {\r\n            this.piping.queryDispatcher.dispatch(\r\n                this.data.selectedPlanningDataSource,\r\n                function (data) {\r\n                    self.planningUnits = data.results;\r\n\r\n                    self.piping.queryDispatcher.dispatch(\r\n                        self.data.selectedLimitsDataSource,\r\n                        function (data) {\r\n                            self.limits = data.results;\r\n                            self.mergeData();\r\n                        }, function (queryData) {\r\n                            queryData.pageSize = 1024;\r\n                        });\r\n                }, function (queryData) {\r\n                    queryData.pageSize = 1024;\r\n                });\r\n        }\r\n    };\r\n\r\n    RequirementsGraph.prototype.mergeData = function () {\r\n        var self = this;\r\n\r\n        if (self.limits.length > 0 && self.planningUnits != undefined && (self.data.isWithPreferredValues ? self.scheduleUnits != undefined : true)) {\r\n            if (self.limits.length > 1) {\r\n                alert('Multiple axis-limits found, only using first.');//TODO JHU: handle too much limits\r\n            }\r\n\r\n            self.data.xAxisMin = self.limits[0][self.data.xAxisMinOutput];\r\n            self.data.xAxisMax = self.limits[0][self.data.xAxisMaxOutput];\r\n\r\n            self.barValues = [];\r\n\r\n            var quarter = self.data.xAxisSubInterval;\r\n            var barUnit = 0;\r\n            while (barUnit < self.data.xAxisInterval * 24) {\r\n                var scheduledAmount = 0;\r\n                var planningUnit = _.find(self.planningUnits, function (unit) { return unit[self.data.xValueOutput] == barUnit; });\r\n                _.each(self.scheduleUnits, function(scheduleUnit) {\r\n                    if (scheduleUnit[self.data.xValueStartOutput] <= barUnit && scheduleUnit[self.data.xValueStopOutput] > barUnit) {\r\n                        scheduledAmount++;\r\n                    }\r\n                });\r\n                var plannedAmount = planningUnit == undefined ? 0 : parseInt(planningUnit[self.data.yValueOutput]);\r\n                var planningId = planningUnit == undefined ? 0 : planningUnit[self.data.barIdOutput];\r\n                var barval = new BarValue(planningId, barUnit, plannedAmount, scheduledAmount);\r\n                self.barValues.push(barval);\r\n                barUnit += quarter;\r\n            }\r\n                \r\n            self.graph.draw(self.retrieveRequirementsGraphData());\r\n        }\r\n    };\r\n        \r\n    RequirementsGraph.prototype.convertToNumber = function (string) {\r\n        if (typeof string === 'number') {\r\n            return string;\r\n        } else {\r\n            return parseFloat(string);\r\n        }\r\n    };\r\n\r\n    RequirementsGraph.prototype.convertToBoolean = function (string) {\r\n        if (typeof string === 'boolean') {\r\n            return string;\r\n        } else {\r\n            return string === 'true';\r\n        }\r\n    };\r\n\r\n    RequirementsGraph.prototype.retrieveRequirementsGraphData = function () {\r\n        var maxY = this.convertToNumber(this.data.yAxisTo);\r\n\r\n        var self = this;\r\n        this.barValues.forEach(function (bar) {\r\n            if (self.convertToNumber(bar.preferredValue) >= maxY) maxY = self.convertToNumber(bar.preferredValue) + 1;\r\n            if (self.convertToNumber(bar.selectedValue) >= maxY) maxY = self.convertToNumber(bar.selectedValue) + 1;\r\n        });\r\n\r\n\r\n        return {\r\n            readOnly: this.data.readOnly,\r\n\r\n            xAxisLabel: this.data.xAxisLabel,\r\n            xAxisFrom: this.convertToNumber(this.data.xAxisFrom),\r\n            xAxisTo: this.convertToNumber(this.data.xAxisTo),\r\n            xAxisInterval: this.convertToNumber(this.data.xAxisInterval),\r\n            xAxisSubInterval: this.convertToNumber(this.data.xAxisSubInterval),\r\n            xAxisMin: this.convertToNumber(this.data.xAxisMin),\r\n            xAxisMax: this.convertToNumber(this.data.xAxisMax),\r\n            xAxisShowAsTime: this.convertToBoolean(this.data.xAxisShowAsTime),\r\n\r\n            yAxisLabel: this.data.yAxisLabel,\r\n            yAxisFrom: this.convertToNumber(this.data.yAxisFrom),\r\n            yAxisTo: maxY,\r\n            yAxisInterval: this.convertToNumber(this.data.yAxisInterval),\r\n            yAxisSubInterval: this.convertToNumber(this.data.yAxisSubInterval),\r\n            yAxisShowAsTime: this.convertToBoolean(this.data.yAxisShowAsTime),\r\n\r\n            showAxisLabels: this.convertToBoolean(this.data.showAxisLabels),\r\n            isWithPreferredValues: this.convertToBoolean(this.data.isWithPreferredValues),\r\n\r\n            barValues: this.barValues\r\n        };\r\n    };\r\n\r\n    RequirementsGraph.prototype.getBatchOfCommands = function () {\r\n        if (!this.graph) return [];\r\n        if (!this.data.parentIdParameter) return [];\r\n\r\n        var parentId = this.piping.parameters.getValue(this.data.parentIdParameter);\r\n\r\n        var self = this;\r\n        return {\r\n            eventActionType: 'Batch',\r\n            command: this.data.id,\r\n            batch: _.map(this.graph.getBarValues(), function (barValue) {\r\n                var data = {};\r\n                data[self.data.xValueAttribute] = barValue.xValue;\r\n                data[self.data.yValueAttribute] = barValue.selectedValue;\r\n                data[self.data.parentIdAttribute] = parentId;\r\n\r\n                return {\r\n                    entityId: barValue.id ? barValue.id : null,\r\n                    data: data\r\n                };\r\n            })\r\n        };\r\n\r\n    };\r\n\r\n    return RequirementsGraph;\r\n});\n","define('lq/fileUtil',[],function() {\r\n\r\n    return {\r\n\r\n        dataUrlToBlob: function (dataUrl) {\r\n            var byteString = atob(dataUrl.split(',')[1]);\r\n            var mimeString = dataUrl.split(',')[0].split(':')[1].split(';')[0];\r\n\r\n            var ab = new ArrayBuffer(byteString.length);\r\n            var ia = new Uint8Array(ab);\r\n            for (var i = 0; i < byteString.length; i++) {\r\n                ia[i] = byteString.charCodeAt(i);\r\n            }\r\n\r\n            return new Blob([ab], { type: mimeString });\r\n        }\r\n\r\n    };\r\n\r\n});\n","define('lq/fileUpload',[\r\n    'jquery',\r\n    'underscore',\r\n    'when',\r\n    './fileUtil'\r\n], function ($, _, when, fileUtil) {\r\n\r\n    var defaults = {\r\n        action: undefined,\r\n        accept: undefined,\r\n        maxFileSizeInKb: undefined,\r\n        maxImageDimensions: undefined,\r\n        params: {},\r\n        multiple: false,\r\n        onMaxFileSizeExceeded: $.noop,\r\n        onInvalidFileExtension: $.noop,\r\n        onStart: $.noop,\r\n        onUploadingFile: $.noop,\r\n        onFileUploading: $.noop,\r\n        onFileUploaded: $.noop,\r\n        onFinished: $.noop,\r\n        onFilesSelected: null\r\n    };\r\n\r\n    var FileUpload = function(config) {\r\n        this.config = $.extend({}, defaults, config || {});\r\n    };\r\n\r\n    FileUpload.prototype.do = function() {\r\n        var $input = $('<input type=\"file\" />')\r\n            .hide();\r\n\r\n        if (this.config.multiple)\r\n            $input.attr('multiple', 'multiple');\r\n\r\n        if (this.config.accept)\r\n            $input.attr('accept', this.config.accept);\r\n        \r\n        $input\r\n            .on('change', this.onFilesSelected.bind(this))\r\n            .appendTo($('body'))\r\n            .trigger('click');\r\n    };\r\n\r\n    FileUpload.prototype.onFilesSelected = function(e) {\r\n        var files = Array.prototype.slice.call(e.target.files);\r\n\r\n        var largeFile = this.tryToFindFileThatExceedsMaxFileSize(files);\r\n        var invalidFile = this.isAllowedExtension(files);\r\n\r\n        if (largeFile) {\r\n            this.config.onMaxFileSizeExceeded(largeFile.name);\r\n        } else if (invalidFile) {\r\n            this.config.onInvalidFileExtension(invalidFile.name, this.config.accept);\r\n        } else if (this.config.onFilesSelected) {\r\n            this.config.onFilesSelected(files);\r\n        } else {\r\n            this.config.onStart();\r\n\r\n            var self = this;\r\n            files.reduce(function (previous, file, i) {\r\n                return previous\r\n                    .then(function() {\r\n                        self.config.onUploadingFile(files.length, i);\r\n                        return self.getDataToSend(file);\r\n                    })\r\n                    .then(function (data) {\r\n                        return self.sendFile(data, file.name);\r\n                    })\r\n                    .then(function (response) {\r\n                        self.config.onFileUploaded(response);\r\n                    });\r\n                }, when.resolve())\r\n                .then(function () {\r\n                    self.config.onFinished();\r\n                });\r\n        }\r\n    };\r\n\r\n    FileUpload.prototype.tryToFindFileThatExceedsMaxFileSize = function(files) {\r\n        if (!this.config.maxFileSizeInKb)\r\n            return undefined;\r\n\r\n        var maxFilesSizeInBytes = this.config.maxFileSizeInKb * 1024;\r\n        return _.find(files, function(f) {\r\n            return f.size > maxFilesSizeInBytes;\r\n        });\r\n    };\r\n\r\n    FileUpload.prototype.isAllowedExtension = function(files) {\r\n        if (!this.config.accept)\r\n            return undefined;\r\n\r\n        var extList = this.config.accept.split(',').map(function(ext) {\r\n            return ext.replace('/*', '').trim().toLowerCase();\r\n        });\r\n\r\n        return _.find(files, function(f) {\r\n            var filename = f.name;\r\n            var ext = (-1 !== filename.indexOf('.')) ? filename.replace(/^.*(\\.[^.]+)$/, '$1').toLowerCase() : '';\r\n            var type = f.type.split('/')[0];\r\n            return !_.contains(extList, ext) && !_.contains(extList, type);\r\n        });\r\n    };\r\n\r\n    FileUpload.prototype.sendFile = function (data, filename) {\r\n        var deferred = when.defer();\r\n        var self = this;\r\n\r\n        var params = $.extend({}, this.config.params);\r\n        params.qqfile = filename; // stay backwards compatible until qqfileuploader is removed everywhere\r\n\r\n        var url = this.config.action + '?' + $.param(params);\r\n\r\n        var xhr = new XMLHttpRequest();\r\n        xhr.onload = function () {\r\n            var jsonResponse = JSON.parse(xhr.responseText);\r\n            deferred.resolve(jsonResponse);\r\n        };\r\n        xhr.upload.onprogress = function (event) {\r\n            self.config.onFileUploading(Math.round(event.loaded / event.total * 100));\r\n        };\r\n        xhr.open('POST', url, true);\r\n        xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n        xhr.setRequestHeader(\"X-File-Name\", encodeURIComponent(filename));\r\n        xhr.setRequestHeader(\"Content-Type\", \"application/octet-stream\");\r\n        xhr.send(data);\r\n\r\n        return deferred.promise;\r\n    };\r\n\r\n    FileUpload.prototype.getDataToSend = function (file) {\r\n        if (!this.shouldTryToResize(file))\r\n            return file;\r\n        \r\n        var deferred = when.defer();\r\n\r\n        var maxWidth = this.config.maxImageDimensions.x;\r\n        var maxHeight = this.config.maxImageDimensions.y;\r\n\r\n        var reader = new FileReader();\r\n        reader.onload = function (readerEvent) {\r\n            var image = new Image();\r\n            image.onload = function () {\r\n                var canvas = document.createElement('canvas');\r\n\r\n                if (image.width <= maxWidth && image.height <= maxHeight) {\r\n                    deferred.resolve(file);\r\n                } else {\r\n                    var targetWidth = image.width;\r\n                    var targetHeight = image.height;\r\n\r\n                    if (targetWidth > maxWidth) {\r\n                        targetWidth = maxWidth;\r\n                        targetHeight = image.height / image.width * maxWidth;\r\n                    }\r\n\r\n                    if (targetHeight > maxHeight) {\r\n                        targetHeight = maxHeight;\r\n                        targetWidth = image.width / image.height * maxHeight;\r\n                    }\r\n\r\n                    canvas.width = targetWidth;\r\n                    canvas.height = targetHeight;\r\n                    canvas.getContext('2d').drawImage(image, 0, 0, targetWidth, targetHeight);\r\n\r\n                    var dataUrl = canvas.toDataURL(file.type);\r\n                    var blob = fileUtil.dataUrlToBlob(dataUrl);\r\n\r\n                    deferred.resolve(blob);\r\n                }\r\n            }\r\n            image.src = readerEvent.target.result;\r\n        }\r\n        reader.readAsDataURL(file);\r\n\r\n        return deferred.promise;\r\n    };\r\n\r\n    FileUpload.prototype.shouldTryToResize = function(file) {\r\n        return this.config.maxImageDimensions && file.type.match(/image.*/);\r\n    };\r\n\r\n    return FileUpload;\r\n});\n","define('lq/uploader',[\r\n    'jquery',\r\n    'lq',\r\n    'lq/fileUpload'\r\n], function ($, lq, FileUpload) {\r\n\r\n\r\n    function Uploader(piping) {\r\n        this.piping = piping;\r\n        this.targetDiv = $('<div />')\r\n            .hide()\r\n            .appendTo($('body'));\r\n        this.onStartingUploadCallback = $.noop;\r\n        this.onFileUploadedCallback = $.noop;\r\n        this.onUploadFinishedCallback = $.noop;\r\n    };\r\n\r\n    Uploader.prototype.withParameters = function (params) {\r\n        this.params = params;\r\n        return this;\r\n    };\r\n\r\n    Uploader.prototype.toTenantUrl = function (path) {\r\n        this.url = lq.getTenantUrl(path);\r\n        return this;\r\n    };\r\n\r\n    Uploader.prototype.withFileFilter = function (filter) {\r\n        this.filter = filter;\r\n        return this;\r\n    };\r\n\r\n    Uploader.prototype.withMaxFileSize = function (maxFileSizeInKb) {\r\n        this.maxFileSizeInKb = maxFileSizeInKb;\r\n        return this;\r\n    };\r\n\r\n    Uploader.prototype.withSmartphoneMode = function (mode) {\r\n        this.smartphoneMode = mode;\r\n        return this;\r\n    };\r\n\r\n    Uploader.prototype.withPhotoQuality = function (value) {\r\n        this.photoQuality = value;\r\n        return this;\r\n    };\r\n\r\n    Uploader.prototype.withMaxImageDimensions = function (maxImageDimensions) {\r\n        this.maxImageDimensions = maxImageDimensions;\r\n        return this;\r\n    };\r\n\r\n    Uploader.prototype.onMaxFileSizeExceeded = function (onMaxFileSizeExceededCallback) {\r\n        this.onMaxFileSizeExceededCallback = onMaxFileSizeExceededCallback;\r\n        return this;\r\n    };\r\n\r\n    Uploader.prototype.onInvalidFileExtension = function (onInvalidFileExtensionCallback) {\r\n        this.onInvalidFileExtensionCallback = onInvalidFileExtensionCallback;\r\n        return this;\r\n    }\r\n\r\n    Uploader.prototype.onStartingUpload = function (onStartingUploadCallback) {\r\n        this.onStartingUploadCallback = onStartingUploadCallback;\r\n        return this;\r\n    };\r\n\r\n    Uploader.prototype.onFileUploaded = function (onFileUploadedCallback) {\r\n        this.onFileUploadedCallback = onFileUploadedCallback;\r\n        return this;\r\n    };\r\n\r\n    Uploader.prototype.onUploadFinished = function (onUploadFinishedCallback) {\r\n        this.onUploadFinishedCallback = onUploadFinishedCallback;\r\n        return this;\r\n    };\r\n\r\n    Uploader.prototype.uploadSingleFile = function () {\r\n        this._doUpload(false);\r\n    };\r\n\r\n    Uploader.prototype.uploadMultipleFiles = function () {\r\n        this._doUpload(true);\r\n    };\r\n\r\n    Uploader.prototype._doUpload = function (allowMultipleUploads) {\r\n        if (navigator.camera)\r\n            this._doSmartphoneUpload(allowMultipleUploads);\r\n        else\r\n            this._doNormalUpload(allowMultipleUploads);\r\n    };\r\n\r\n    Uploader.prototype._doSmartphoneUpload = function (allowMultipleUploads) {\r\n        if (!navigator.camera) return;\r\n\r\n        var self = this;\r\n        var counter = 0;\r\n        this.piping.busyIndicator.showWithCount(counter);\r\n        this.piping.busyIndicator.showText('Uploading...');\r\n\r\n        self.onStartingUploadCallback();\r\n\r\n        var sourceType = (this.smartphoneMode === 'PHOTOLIBRARY')\r\n            ? Camera.PictureSourceType.PHOTOLIBRARY\r\n            : Camera.PictureSourceType.CAMERA;\r\n\r\n        navigator.camera.getPicture(\r\n            function onSuccess(imageUrl) {\r\n                uploadSmartphoneFile(imageUrl);\r\n            }, function onFail(message) {\r\n                //alert('Failed launching Photo App: ' + message);\r\n                self.piping.busyIndicator.forceHide();\r\n            }, {\r\n                destinationType: Camera.DestinationType.FILE_URI,\r\n                sourceType: sourceType,\r\n                encodingType: Camera.EncodingType.JPEG,\r\n                quality: self.photoQuality || 50,\r\n                correctOrientation: true\r\n            });\r\n\r\n        function uploadSmartphoneFile(imageURI) {\r\n            var options = new FileUploadOptions();\r\n            options.fileKey = \"file\";\r\n            // always assuming jpg for now. note that on Android we can't ask for the original name of the file\r\n            options.fileName = new Date().valueOf() + \".jpg\";\r\n            options.mimeType = \"text/plain\";\r\n            options.httpMethod = \"POST\";\r\n\r\n            var uri = encodeURI(location.protocol + \"//\" + location.host + self.url + \"Smartphone\"); //DynamicContentController/AddTempFileSmartphone\r\n\r\n            self.onStartingUploadCallback();\r\n\r\n            var ft = new FileTransfer();\r\n            ft.upload(imageURI, uri,\r\n                function win(r) {\r\n                    self.onFileUploadedCallback(JSON.parse(r.response));\r\n                    self.onUploadFinishedCallback();\r\n                }, function fail(error) {\r\n                    //alert(JSON.stringify(error));\r\n                    self.piping.busyIndicator.forceHide();\r\n                }, options);\r\n        };\r\n    };\r\n\r\n    Uploader.prototype._doNormalUpload = function (allowMultipleUploads) {\r\n        var self = this;\r\n\r\n        var counter = 0;\r\n\r\n        var upload = new FileUpload({\r\n            action: this.url,\r\n            params: this.params,\r\n            maxFileSizeInKb: this.maxFileSizeInKb,\r\n            maxImageDimensions: this.maxImageDimensions,\r\n            accept: this.filter,\r\n            multiple: allowMultipleUploads,\r\n            onMaxFileSizeExceeded: function (filename) {\r\n                if (!self.onMaxFileSizeExceededCallback) {\r\n                    alert(filename + ' is too large, maximum file size is  ' + self.maxFileSizeInKb + 'KB');\r\n                } else {\r\n                    self.onMaxFileSizeExceededCallback();\r\n                }\r\n            },\r\n            onInvalidFileExtension: function (filename, extensions) {\r\n                if (!self.onInvalidFileExtensionCallback) {\r\n                    alert(filename + ' has invalid extension. Only ' + extensions + ' files are allowed.')\r\n                }  else {\r\n                    self.onInvalidFileExtensionCallback();\r\n                }\r\n            },\r\n            onStart: function () {\r\n                self.piping.busyIndicator.showWithCount(counter);\r\n\r\n                self.$label = $('<span />')\r\n                    .text('Uploading');\r\n                self.$percentage = $('<span />')\r\n                    .text('0%');    \r\n                self.$progressBar = $('<div class=\"uploader-progress-foreground\" />')\r\n                    .css('width', '0%');                    ;\r\n\r\n                self.piping.busyIndicator.showElement($('<div class=\"uploader-progress-indicator\" />')\r\n                    .append($('<div class=\"uploader-progress-label\" />')\r\n                        .append(self.$label)\r\n                        .append(self.$percentage))\r\n                    .append($('<div />')\r\n                        .append($('<div class=\"uploader-progress-background\" />')\r\n                            .append(self.$progressBar))));\r\n\r\n                self.onStartingUploadCallback(upload);\r\n            },\r\n            onUploadingFile: function (total, uploaded) {\r\n                if (total > 1) {\r\n                    self.$label.text(`Uploading (${uploaded + 1}/${total})`);\r\n                }\r\n                self.$progressBar.css('width', '0%');\r\n            },\r\n            onFileUploading: function (percentage) {\r\n                self.$percentage.text(`${percentage}%`);\r\n                self.$progressBar.css('width', `${percentage}%`);\r\n            },\r\n            onFileUploaded: function (response) {\r\n                self.onFileUploadedCallback(response);\r\n            },\r\n            onFinished: function () {\r\n                self.piping.busyIndicator.removeElement();\r\n                self.onUploadFinishedCallback();\r\n            }\r\n        });\r\n\r\n        counter = this.piping.busyIndicator.forceHide();\r\n\r\n        upload.do();\r\n    };\r\n\r\n    return Uploader;\r\n});\n","define('drops/richTextEditor/richTextEditor',[\r\n    'jquery',\r\n    'when',\r\n    'lq/drop',\r\n    'lq/uploader',\r\n    'lq/style',\r\n    'lq',\r\n    'lq/required'\r\n], function ($, when, Drop, Uploader, Style, lq, Required) {\r\n    'use strict';\r\n\r\n    var tinymce = null;\r\n\r\n    var tenantUrlPlaceholder = '{{{TenantUrl}}}';\r\n\r\n    var supportedLanguages = [\"ar\", \"ar_SA\", \"hy\", \"az\", \"eu\", \"be\", \"bn_BD\", \"bs\", \"bg_BG\", \"ca\", \"zh_CN\", \"zh_TW\", \"hr\", \"cs\", \"da\", \"dv\", \"nl\",\r\n        \"en_CA\", \"en_GB\", \"et\", \"fo\", \"fi\", \"fr_FR\", \"gd\", \"gl\", \"ka_GE\", \"de\", \"de_AT\", \"el\", \"he_IL\", \"hi_IN\", \"hu_HU\", \"is_IS\", \"id\", \"it\", \"ja\",\r\n        \"kab\", \"kk\", \"km_KH\", \"ko_KR\", \"ku\", \"ku_IQ\", \"lv\", \"lt\", \"lb\", \"ml\", \"ml_IN\", \"mn_MN\", \"nb_NO\", \"fa\", \"fa_IR\", \"pl\", \"pt_BR\", \"pt_PT\", \"ro\",\r\n        \"ru\", \"sr\", \"si_LK\", \"sk\", \"sl_SI\", \"es\", \"es_MX\", \"sv_SE\", \"tg\", \"ta\", \"ta_IN\", \"tt\", \"th_TH\", \"tr\", \"tr_TR\", \"ug\", \"uk\", \"uk_UA\", \"vi\", \"vi_VN\", \"cy\"];\r\n    var licquidLanguageMap = {\r\n        \"zh\": \"zh_CN\",\r\n        \"en-GB\": \"en_GB\",\r\n        \"fr\": \"fr_FR\",\r\n        \"hu\": \"hu_HU\",\r\n        \"ko\": \"ko_KR\",\r\n        \"nb\": \"nb_NO\",\r\n        \"pt\": \"pt_PT\",\r\n        \"sv\": \"sv_SE\",\r\n        \"tr\": \"tr_TR\"\r\n    };\r\n\r\n    var defaults = {\r\n        data: {\r\n            readonly: false,\r\n            undoRedoEnabled: true,\r\n            boldEnabled: true,\r\n            italicEnabled: true,\r\n            underlineEnabled: true,\r\n            stripFormattingOnPaste: true,\r\n            spellcheckerEnabled: false,\r\n            strikethroughEnabled: false,\r\n            formatselectEnabled: false,\r\n            removeformatEnabled: false,\r\n            fullscreenEnabled: false,\r\n            previewEnabled: false,\r\n            printEnabled: false,\r\n            anchorEnabled: false,\r\n            cutEnabled: false,\r\n            copyEnabled: false,\r\n            pasteEnabled: false,\r\n            selectallEnabled: false,\r\n            searchreplaceEnabled: false,\r\n            superscriptEnabled: false,\r\n            subscriptEnabled: false,\r\n            lineheightEnabled: false,\r\n            wordcountEnabled: false,\r\n            runtimeResizeEnabled: false,\r\n            size: {\r\n                x: 400,\r\n                y: 250\r\n            },\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded'\r\n            },\r\n            skin: 'tinymce-5',\r\n            watermark: ''\r\n        }\r\n    };\r\n\r\n    function RichTextEditor(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        var self = this;\r\n        this.$element\r\n            .addClass('boxToBorderSize rich-text-editor')\r\n            .css({\r\n                whiteSpace: 'pre-wrap'\r\n            })\r\n            .attr('tabindex', this.data.tabIndex)\r\n            .on('focus', function() {\r\n                self.focus();\r\n            });\r\n        this.elementId = _.uniqueId('rte_');\r\n        this.initialUpdate = null;\r\n\r\n        this.$textarea = $('<textarea id=\"' + this.elementId + '\" />')\r\n            .css({\r\n                width: '100%',\r\n                height: '100%'\r\n            })\r\n            .appendTo(this.$element);\r\n\r\n        Style.renderStyles(this);\r\n\r\n        this.triggerChangedEvent = _.debounce(this.triggerEventIfEnabled.bind(this, 'changed'), 200);\r\n    };\r\n\r\n    Drop.extend(RichTextEditor, Drop);\r\n\r\n    RichTextEditor.typeName = 'RichTextEditor';\r\n\r\n    RichTextEditor.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.piping.required.apply(this);\r\n        Required.prototype.addRemoveRequiredIndicator(this);\r\n        this.applyPosition();\r\n\r\n        if (!tinymce) {\r\n            var deferred = when.defer();\r\n            require([\r\n                'tinymce'\r\n            ],\r\n                function (lazyLoadedTinymce) {\r\n                    tinymce = lazyLoadedTinymce;\r\n                    deferred.resolve();\r\n                });\r\n\r\n            return deferred.promise;\r\n        }\r\n    };\r\n\r\n    RichTextEditor.prototype.postRender = function () {\r\n        this.createRichTextEditor();\r\n    };\r\n\r\n    RichTextEditor.prototype.createRichTextEditor = function () {\r\n        this.toolbar = this.buildToolbar();\r\n\r\n        if (this.toolbar)\r\n            this.$element.addClass('with-toolbar');\r\n\r\n        var self = this;\r\n\r\n        var configuration = {\r\n            selector: 'textarea#' + this.elementId,\r\n            body_class: this.getCssClassNameForStyling(),\r\n            width: '100%',\r\n            height: '100%',\r\n            menubar: false,\r\n            statusbar: this.data.runtimeResizeEnabled,\r\n            plugins: this.buildPluginsList(),\r\n            toolbar: this.toolbar ? this.toolbar : false,\r\n            paste_as_text: this.data.stripFormattingOnPaste,\r\n            paste_data_images: this.data.imagesEnabled,\r\n            images_upload_handler: this.imageUploadHandler,\r\n            image_dimensions: !this.data.containImagesEnabled,\r\n            content_style: this.buildContentStyles(),\r\n            relative_urls: false,\r\n            remove_script_host: false,\r\n            readonly: this.data.readonly,\r\n            browser_spellcheck: this.data.spellcheckerEnabled,\r\n            file_browser_callback: this.openFileBrowser.bind(this),\r\n            cache_suffix: require_config.urlArgs(null, ''),\r\n            setup: function(ed) {\r\n                if (self.isEventEnabled('changed')) {\r\n                    ed.on('change', self.contentChanged.bind(self));\r\n                    ed.on('keyup', self.contentChanged.bind(self));\r\n                }\r\n\r\n                ed.on('init', function() {\r\n                    self.editor = ed;\r\n\r\n                    if (self.initialUpdate) {\r\n                        self.setValue(self.initialUpdate);\r\n                        self.initialUpdate = null;\r\n                    }\r\n                });\r\n\r\n                if (self.data.disableParagraphs) {\r\n                    ed.on('keydown', function (event) {\r\n                        if (event.keyCode !== 13 || !event.shiftKey)\r\n                            return true;\r\n                        event.preventDefault();\r\n                        event.stopPropagation();\r\n                        return false;\r\n                    });\r\n                }\r\n\r\n                if (self.data.hasMaxLength) {\r\n                    var allowedKeys = [8, 35, 36, 37, 38, 39, 40, 46];\r\n\r\n                    ed.on('keydown', function(e) {\r\n                        if (allowedKeys.indexOf(e.keyCode) !== -1)\r\n                            return true;\r\n\r\n                        if (self.getLengthOfContent() + 1 <= self.data.maxLength)\r\n                            return true;\r\n\r\n                        e.preventDefault();\r\n                        e.stopPropagation();\r\n                        return false;\r\n                    });\r\n                }\r\n            },\r\n            styles: {\r\n                bold: { inline: 'b' },\r\n                italic: { inline: 'i' },\r\n                underline: { inline: 'u' }\r\n            },\r\n            text_patterns: [\r\n                { start: '*', end: '*', format: 'italic' },\r\n                { start: '**', end: '**', format: 'bold' },\r\n            ],\r\n            extended_valid_elements: 'b,i,u',\r\n            content_css: lq.getTenantUrl('StyleSheet/Get?v=' + lq.getStylesVersion()),\r\n            urlconverter_callback: function(url, node, on_save, name) {\r\n                // note: replace with placeholder only for images. Other links are beyond our control.\r\n                return node === 'img' ? url.replace(origin + lq.getTenantUrl(''), tenantUrlPlaceholder) : url;\r\n            },\r\n            file_picker_callback: this.openFileBrowser.bind(this),\r\n            language: self.getLanguage.call(this) || \"en_GB\",\r\n            elementpath: false,\r\n            skin: this.getSkin(),\r\n            content_css: this.getSkin(),\r\n            placeholder: this.data.watermark\r\n        };\r\n\r\n        if (this.data.disableParagraphs)\r\n            configuration.newline_behavior = 'linebreak';\r\n\r\n        if (this.data.hasMaxLength) {\r\n            configuration.paste_preprocess = function(plugin, args) {\r\n                var newLength = self.getLengthOfContent() + args.content.length;\r\n\r\n                if (newLength > self.data.maxLength)\r\n                    args.content = '';\r\n            };\r\n        }\r\n\r\n        if (this.data.stripFormattingOnPaste) {\r\n            configuration.paste_postprocess  = function(plugin, args) {\r\n                var value = args.node.innerHTML;\r\n                if (value && value.match(/\\&nbsp;/g)) {\r\n                    args.node.innerHTML = value.replace(/\\&nbsp;/g, '');\r\n                }\r\n            };\r\n        }\r\n\r\n        // for some reason this is needed when running an SPA\r\n        setTimeout(function () {\r\n            tinymce.init(configuration);\r\n        }, 0);\r\n    };\r\n\r\n    RichTextEditor.prototype.buildContentStyles = function () {\r\n        var contentStyles = \"\";\r\n\r\n        if (this.data.containImagesEnabled) {\r\n            contentStyles += \"img { width: 100% !important; height: auto !important; } \";\r\n        }\r\n\r\n        if (this.data.removeMarginAndPadding) {\r\n            contentStyles += \"p { margin: 0; padding: 0; } \";\r\n        }\r\n\r\n        return contentStyles;\r\n    };\r\n\r\n    RichTextEditor.prototype.getSkin = function () {\r\n        if (this.data.skin === 'tinymce-6') return undefined;\r\n        else return this.data.skin;\r\n    };\r\n\r\n    RichTextEditor.prototype.imageUploadHandler = function (blobInfo, progress) {\r\n        return new Promise(function(resolve, reject) {\r\n            const xhr = new XMLHttpRequest();\r\n            xhr.withCredentials = false;\r\n\r\n            xhr.open('POST', lq.getTenantUrl('DynamicContent/AddPermanentFile?qqfile=' + blobInfo.filename()));\r\n            xhr.setRequestHeader(\"x-file-name\", encodeURIComponent(blobInfo.filename()));\r\n\r\n            xhr.upload.onprogress = function (e) {\r\n                progress(e.loaded / e.total * 100);\r\n            };\r\n\r\n            xhr.onload = function () {\r\n                if (xhr.status === 403) {\r\n                    reject({ message: 'HTTP Error: ' + xhr.status, remove: true });\r\n                    return;\r\n                }\r\n\r\n                if (xhr.status < 200 || xhr.status >= 300) {\r\n                    reject('HTTP Error: ' + xhr.status);\r\n                    return;\r\n                }\r\n\r\n                const json = JSON.parse(xhr.responseText);\r\n\r\n                if (!json || typeof json.url != 'string') {\r\n                    reject('Invalid JSON: ' + xhr.responseText);\r\n                    return;\r\n                }\r\n\r\n                resolve(lq.getTenantUrl('DynamicContent/File/' + json.url));\r\n            };\r\n\r\n            xhr.onerror = function () {\r\n                reject('Image upload failed due to a XHR Transport error. Code: ' + xhr.status);\r\n            };\r\n\r\n            xhr.send(blobInfo.blob());\r\n        });\r\n    };\r\n\r\n    RichTextEditor.prototype.getLengthOfContent = function() {\r\n        return this.editor\r\n            .getContent({ format: 'text' })\r\n            .replace(/(\\r\\n\\t|\\n|\\r\\t)/gm, '')\r\n            .length;\r\n    };\r\n\r\n    RichTextEditor.prototype.contentChanged = function () {\r\n        var value = this.editor.getContent();\r\n\r\n        if (value === this.lastChange)\r\n            return;\r\n\r\n        this.lastChange = value;\r\n\r\n        if (this.data.required)\r\n            this.updateRequiredIndicator();\r\n\r\n        this.triggerChangedEvent();\r\n    };\r\n\r\n    RichTextEditor.prototype.getCssClassNameForStyling = function() {\r\n        var actualStyle = this.data.styles;\r\n        var prefix = 'userstyle-';\r\n\r\n        if (!actualStyle) {\r\n            var styleId = Style.getDefaultStyleIdByDropType(this);\r\n            if (styleId) return Style.getClassNameFromStyleId(prefix, styleId);\r\n        } else if (typeof actualStyle === 'string') {\r\n            return Style.getClassNameFromStyleId(prefix, actualStyle);\r\n        }\r\n\r\n        return '';\r\n    };\r\n\r\n    RichTextEditor.prototype.buildPluginsList = function () {\r\n        var plugins = '';\r\n        if (this.data.insertLinkEnabled)\r\n            plugins += ' link';\r\n        if (this.data.imagesEnabled)\r\n            plugins += ' image';\r\n        if (this.data.insertListEnabled)\r\n            plugins += ' lists';\r\n        if (this.data.tablesEnabled)\r\n            plugins += ' table';\r\n        if (this.data.fullscreenEnabled)\r\n            plugins += ' fullscreen';\r\n        if (this.data.previewEnabled)\r\n            plugins += ' preview';\r\n        if (this.data.anchorEnabled)\r\n            plugins += ' anchor';\r\n        if (this.data.searchreplaceEnabled)\r\n            plugins += ' searchreplace';\r\n        if (this.data.wordcountEnabled)\r\n            plugins += ' wordcount';\r\n\r\n        return plugins;\r\n    };\r\n\r\n    RichTextEditor.prototype.buildToolbar = function () {\r\n        var toolbar = '';\r\n\r\n        if (this.data.undoRedoEnabled)\r\n            toolbar += ' undo redo';\r\n\r\n        if (toolbar)\r\n            toolbar += ' |';\r\n\r\n        if (this.data.boldEnabled)\r\n            toolbar += ' bold';\r\n        if (this.data.italicEnabled)\r\n            toolbar += ' italic';\r\n        if (this.data.underlineEnabled)\r\n            toolbar += ' underline';\r\n        if (this.data.strikethroughEnabled)\r\n            toolbar += ' strikethrough';\r\n\r\n        if (toolbar)\r\n            toolbar += ' |';\r\n\r\n        if (this.data.fontFamilyEnabled)\r\n            toolbar += ' fontfamily';\r\n        if (this.data.fontSizeEnabled)\r\n            toolbar += ' fontsize';\r\n        if (this.data.fontForegroundEnabled)\r\n            toolbar += ' forecolor';\r\n        if (this.data.fontBackgroundEnabled)\r\n            toolbar += ' backcolor';\r\n\r\n        if (toolbar)\r\n            toolbar += ' |';\r\n\r\n        if (this.data.textAlignEnabled)\r\n            toolbar += ' alignleft aligncenter alignright alignjustify';\r\n\r\n        if (toolbar)\r\n            toolbar += ' |';\r\n\r\n        if (this.data.insertLinkEnabled)\r\n            toolbar += ' link unlink';\r\n\r\n        if (toolbar)\r\n            toolbar += ' |';\r\n\r\n        if (this.data.insertListEnabled)\r\n            toolbar += ' bullist numlist';\r\n\r\n        if (toolbar)\r\n            toolbar += ' |';\r\n\r\n        if (this.data.indentationEnabled)\r\n            toolbar += ' outdent indent';\r\n\r\n        if (toolbar)\r\n            toolbar += ' |';\r\n\r\n        if (this.data.tablesEnabled)\r\n            toolbar += ' table';\r\n\r\n        if (toolbar)\r\n            toolbar += ' |';\r\n\r\n        if (this.data.imagesEnabled)\r\n            toolbar += ' image';\r\n\r\n        if (this.data.formatselectEnabled)\r\n            toolbar += ' blocks';\r\n\r\n        if (this.data.removeformatEnabled)\r\n            toolbar += ' removeformat';\r\n\r\n        if (this.data.fullscreenEnabled)\r\n            toolbar += ' fullscreen';\r\n\r\n        if (this.data.previewEnabled)\r\n            toolbar += ' preview';\r\n\r\n        if (this.data.printEnabled)\r\n            toolbar += ' print';\r\n\r\n        if (this.data.anchorEnabled)\r\n            toolbar += ' anchor';\r\n\r\n        if (this.data.cutEnabled)\r\n            toolbar += ' cut';\r\n\r\n        if (this.data.copyEnabled)\r\n            toolbar += ' copy';\r\n\r\n        if (this.data.pasteEnabled)\r\n            toolbar += ' paste';\r\n\r\n        if (this.data.selectallEnabled)\r\n            toolbar += ' selectall';\r\n\r\n        if (this.data.searchreplaceEnabled)\r\n            toolbar += ' searchreplace';\r\n\r\n        if (this.data.superscriptEnabled)\r\n            toolbar += ' superscript';\r\n\r\n        if (this.data.subscriptEnabled)\r\n            toolbar += ' subscript';\r\n\r\n        if (this.data.lineheightEnabled)\r\n            toolbar += ' lineheight';\r\n\r\n        if (this.data.wordcountEnabled)\r\n            toolbar += ' wordcount';\r\n\r\n        return toolbar;\r\n    };\r\n\r\n    RichTextEditor.prototype.focus = function () {\r\n        if (this.editor) {\r\n            this.editor.focus();\r\n        } else {\r\n            var self = this;\r\n            _.defer(function () {\r\n                self.focus();\r\n            });\r\n        }\r\n    };\r\n\r\n    RichTextEditor.prototype.getValue = function () {\r\n        if (!this.editor) return null;\r\n        var content = this.editor.getContent();\r\n        return this.data.disableParagraphs ? content.replace(/(^<p>)|(<\\/p>$)/g, '') : content;\r\n    };\r\n\r\n    RichTextEditor.prototype.clearValue = function () {\r\n        if (!this.editor) return;\r\n\r\n        this.editor.setContent('');\r\n        this.lastChange = '';\r\n    };\r\n\r\n    RichTextEditor.prototype.setValue = function (update) {\r\n        if (this.editor) {\r\n            if (update.value) {\r\n                var regex = new RegExp(tenantUrlPlaceholder, 'g');\r\n                var content = update.value.replace(regex, lq.getTenantUrl(''));\r\n                this.editor.setContent(content);\r\n                this.lastChange = content;\r\n            } else {\r\n                // note Tinymce doesn't handle 'null' very well\r\n                this.editor.setContent('');\r\n                this.lastChange = '';\r\n            }\r\n            \r\n            this.updateRequiredIndicator();\r\n        } else {\r\n            this.initialUpdate = update;\r\n        }\r\n    };\r\n\r\n    RichTextEditor.prototype.hasValue = function () {\r\n        if (!this.editor) return false;\r\n        return $.trim(this.editor.getContent({ format: 'text' })) !== '';\r\n    };\r\n\r\n    RichTextEditor.prototype.openFileBrowser = function (cb, value, meta) {\r\n        var self = this;\r\n        var uploader = new Uploader(this.piping)\r\n            .toTenantUrl(\"DynamicContent/AddPermanentFile\")\r\n            .withFileFilter('image/*')\r\n            .onFileUploaded(function (uploadResponse) {\r\n                if (!uploadResponse.success)\r\n                    throw new Error('Upload failed.');\r\n\r\n                var imageUrl = lq.getTenantUrl('DynamicContent/File'\r\n                    + '?id=' + encodeURIComponent(uploadResponse.url)\r\n                    + '&filename=' + encodeURIComponent(uploadResponse.filename));\r\n\r\n                cb((window.location.origin + (imageUrl.charAt(0) === '/' ? imageUrl : '/' + imageUrl)), { title: uploadResponse.filename});\r\n            })\r\n            .onUploadFinished(function() {\r\n                self.piping.busyIndicator.hide();\r\n            });\r\n\r\n        uploader.uploadSingleFile();\r\n    };\r\n\r\n    RichTextEditor.prototype.getLanguage = function () {\r\n        var sysParams = this.piping.parameters.systems.getAll();\r\n        var runtimeLanguage = sysParams['CurrentLanguageISOCode'];\r\n        if (runtimeLanguage) {\r\n            var licquidLanguage = licquidLanguageMap[runtimeLanguage] || runtimeLanguage;\r\n            if (supportedLanguages.indexOf(licquidLanguage) !== -1)\r\n                return licquidLanguage;\r\n        } \r\n\r\n        var browserLanguages = navigator.languages || (navigator.userLanguage ? [navigator.userLanguage] : []);\r\n        for (var i = 0; i < browserLanguages.length; i++) {\r\n            var lang = browserLanguages[i].replace('-', '_');\r\n            if (supportedLanguages.indexOf(lang)!== -1)\r\n                return lang;\r\n        }\r\n    }\r\n\r\n    RichTextEditor.prototype.unsubscribeEventHandlers = function () {\r\n        if (!this.editor) return;\r\n        tinymce.remove('#' + this.elementId);\r\n    };\r\n\r\n    return RichTextEditor;\r\n});\n","define('drops/richTextTemplateEditor/richTextTemplateEditor',['jquery', 'lq', 'lq/drop', 'lq/style', 'lq/dispatcher', 'lq/richText', 'underscore'], function ($, lq, Drop, Style, dispatcher, richText, _) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            entity: \"RichTextTemplate\",\r\n            nameColumn: \"Name\",\r\n            categoryColumn: \"Category\",\r\n            modelColumn: \"Model\",\r\n            size: {\r\n                x: 450,\r\n                y: 330\r\n            }\r\n        }\r\n    };\r\n\r\n    var TemplateSelector = function (richTextTemplateEditor) {\r\n        var self = this;\r\n\r\n        self.richTextTemplateEditor = richTextTemplateEditor;\r\n        self.data = richTextTemplateEditor.data;\r\n        self.templates = [];\r\n        \r\n        self.$element = $('<div />');\r\n\r\n        $('<span />')\r\n            .text('Templates: ')\r\n            .appendTo(this.$element);\r\n\r\n        self.$templates = $('<select />')\r\n            .on('change', function () {\r\n                var buttonDisabled = self.$templates.prop(\"selectedIndex\") === 0;\r\n                self.$load.prop('disabled', buttonDisabled);\r\n                self.$delete.prop('disabled', buttonDisabled);\r\n            })\r\n            .append($('<option />', { value: null, text: 'Choose a template ...' }))\r\n            .appendTo(this.$element);\r\n\r\n        self.$load = $('<button />')\r\n            .text('Load')\r\n            .prop('disabled', true)\r\n            .on('click', function() {\r\n                if (!confirm('Are you sure you want to load the selected template?\\nYour current unsaved changes will be lost!')) {\r\n                    return;\r\n                }\r\n\r\n                dispatcher.dispatch(\r\n                    'Entity/LoadRichTextTemplate',\r\n                    {\r\n                        actionId: self.piping.actionId,\r\n                        morphId: self.data.id,\r\n                        id: self.$templates.val()\r\n                    },\r\n                    function (data) {\r\n                        richTextTemplateEditor.openTemplate(data.Values);\r\n                    });\r\n            })\r\n            .appendTo(self.$element);\r\n\r\n        self.$delete = $('<button />')\r\n            .text('Delete')\r\n            .prop('disabled', true)\r\n            .on('click', function () {\r\n                if (!confirm('Are you sure you want to delete this template?')) {\r\n                    return;\r\n                }\r\n                \r\n                dispatcher.dispatch(\r\n                    'Entity/DeleteRichTextTemplate',\r\n                    {\r\n                        actionId: self.piping.actionId,\r\n                    \tmorphId: self.data.id,\r\n                        id: self.$templates.val()\r\n                    },\r\n\t\t\t        function () {\r\n\t\t\t            self.loadTemplates();\r\n\t\t\t        });\r\n            })\r\n            .appendTo(self.$element);\r\n\r\n        self.loadTemplates();\r\n    };\r\n\r\n    TemplateSelector.prototype.loadTemplates = function(activeTemplateSelector) {\r\n        var self = this;\r\n\r\n        this.piping.queryDispatcher.dispatch(\r\n            self.data.dataSource,\r\n\t\t\tfunction (data) {\r\n\t\t\t    self.templates = data.results; // TODO: map fields here so different attribute names can be used\r\n\r\n\t\t\t    self.$templates\r\n\t\t\t        .empty()\r\n\t\t\t        .append($('<option />', { value: null, text: 'Choose a template ...' }));\r\n\r\n\t\t\t    $.each(self.templates, function (key, template) {\r\n\t\t\t        self.$templates\r\n\t\t\t            .append($('<option />', {\r\n\t\t\t                value: template.Id,\r\n\t\t\t                text: template[self.data.nameColumn]\r\n\t\t\t            }));\r\n\t\t\t    });\r\n\r\n\t\t\t    var disableButtons = !self.tryToSelectItem(activeTemplateSelector);\r\n\t\t\t    self.$load.prop('disabled', disableButtons);\r\n\t\t\t    self.$delete.prop('disabled', disableButtons);\r\n\t\t\t});\r\n    };\r\n\r\n    TemplateSelector.prototype.tryToSelectItem = function (selector) {\r\n        if (selector) {\r\n            var foundTemplate = _.find(this.templates, selector);\r\n            \r\n            if (foundTemplate) {\r\n                this.$templates.val(foundTemplate.Id);\r\n                return true;\r\n            }\r\n        }\r\n\r\n        return false;\r\n    };\r\n    \r\n    TemplateSelector.prototype.findTemplateWithName = function (name) {\r\n    \tvar self = this;\r\n        return _.find(this.templates, function (t) {\r\n        \treturn t[self.data.nameColumn] === name;\r\n        });\r\n    };\r\n\r\n    TemplateSelector.prototype.clearSelection = function () {\r\n        this.$templates.val(null);\r\n    };\r\n\r\n    var TemplateSaver = function (richTextTemplateEditor) {\r\n        var self = this;\r\n\r\n        self.richTextTemplateEditor = richTextTemplateEditor;\r\n        self.data = richTextTemplateEditor.data;\r\n        self.$element = $('<div />');\r\n\r\n        $('<span />')\r\n            .text('Save as template: ')\r\n            .appendTo(this.$element);\r\n\r\n        self.$name = $('<input />')\r\n            .on('keyup', function () {\r\n                self.updateButton();\r\n            })\r\n            .appendTo(this.$element);\r\n\r\n        self.$button = $('<button />')\r\n            .text(' Save ')\r\n            .prop('disabled', true)\r\n            .on('click', function() {\r\n                self.save();\r\n            })\r\n            .appendTo(this.$element);\r\n    };\r\n\r\n    TemplateSaver.prototype.save = function () {\r\n        var self = this;\r\n        var name = self.$name.val();\r\n        var existingTemplate = self.richTextTemplateEditor.findTemplateWithName(name);\r\n\r\n        if (existingTemplate) {\r\n            if (!confirm('Are you sure you want to overwrite the existing template \"' + name + '\" ?')) {\r\n                return;\r\n            }\r\n        }\r\n\r\n        var model = self.richTextTemplateEditor.richTextEditor.toModel();\r\n\r\n        var data = {\r\n            actionId: self.piping.actionId,\r\n        \tmorphId: self.data.id,\r\n\t\t\tid: existingTemplate ? existingTemplate.Id : null,\r\n\t\t\t\"Values[0].Key\": self.data.categoryColumn,\r\n\t\t\t\"Values[0].Value\": self.richTextTemplateEditor.getCategory(),\r\n\t\t\t\"Values[1].Key\": self.data.nameColumn,\r\n\t\t\t\"Values[1].Value\": name,\r\n\t\t\t\"Values[2].Key\": self.data.modelColumn,\r\n\t\t\t\"Values[2].Value\": JSON.stringify(model)\r\n        };\r\n\r\n        dispatcher.dispatch(\r\n           'Entity/SaveRichTextTemplate',\r\n           data,\r\n           function () {\r\n               self.richTextTemplateEditor.templateSelector.loadTemplates(function(t) {\r\n                   return t[self.data.nameColumn] === name;\r\n               });\r\n           });\r\n    };\r\n\r\n    TemplateSaver.prototype.setCurrentTemplate = function(name) {\r\n        this.$name.val(name);\r\n        this.updateButton();\r\n    };\r\n\r\n    TemplateSaver.prototype.updateButton = function () {\r\n        if (this.$name.val()) {\r\n            this.$button.prop('disabled', false);\r\n        } else {\r\n            this.$button.prop('disabled', true);\r\n        }\r\n    };\r\n\r\n    TemplateSaver.prototype.clearName = function () {\r\n        this.$name.val('');\r\n        this.updateButton();\r\n    };\r\n\r\n    function RichTextTemplateEditor(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n        var self = this;\r\n\r\n        self.templateSelector = new TemplateSelector(self);\r\n        self.templateSaver = new TemplateSaver(self);\r\n\r\n        self.$element\r\n\t        .addClass('boxToBorderSize')\r\n\t        .css({\r\n\t            whiteSpace: 'pre-wrap'\r\n\t        });\r\n\r\n        Style.renderStyles(self);\r\n\r\n        var $editor = $('<div />')\r\n            .appendTo(self.$element);\r\n\r\n        $('<div />')\r\n            .css({\r\n                position: 'absolute',\r\n                top: '10px',\r\n                right: '10px'\r\n            })\r\n            .append(self.templateSelector.$element)\r\n            .appendTo($editor);\r\n\r\n        var $richTextEditor = $('<div />')\r\n            .css({\r\n                position: 'absolute',\r\n                top: '40px',\r\n                bottom: '0',\r\n                left: '0',\r\n                right: '0'\r\n            })\r\n            .appendTo($editor);\r\n\r\n        self.richTextEditor = new richText.RichTextEditor({\r\n            parentElement: $richTextEditor,\r\n            sections: this.data.sections,\r\n            placeholder: this.data.placeholder,\r\n            addDefaultEmptyRow: false,\r\n            editable: true\r\n        });\r\n        \r\n        $('<div />')\r\n            .css({\r\n                position: 'absolute',\r\n                bottom: '10px',\r\n                right: '10px'\r\n            })\r\n            .append(self.templateSaver.$element)\r\n            .appendTo($editor);\r\n    }\r\n\r\n    Drop.extend(RichTextTemplateEditor, Drop);\r\n\r\n    RichTextTemplateEditor.typeName = 'RichTextTemplateEditor';\r\n\r\n    RichTextTemplateEditor.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n    };\r\n\r\n    RichTextTemplateEditor.prototype.findTemplateWithName = function (name) {\r\n        return this.templateSelector.findTemplateWithName(name);\r\n    };\r\n\r\n    RichTextTemplateEditor.prototype.openTemplate = function (template) {\r\n    \tthis.richTextEditor.fromModel(JSON.parse(template[this.data.modelColumn]));\r\n        this.templateSaver.setCurrentTemplate(template[this.data.nameColumn]);\r\n    };\r\n\r\n    RichTextTemplateEditor.prototype.getCategory = function () {\r\n        if (!this.data.categoryIsParameter) {\r\n            return this.data.category;\r\n        }\r\n\r\n        return this.piping.parameters.getValue(this.data.category);\r\n    };\r\n\r\n    RichTextTemplateEditor.prototype.getValue = function () {\r\n        if (!this.richTextEditor)\r\n            return null;\r\n\r\n        return this.richTextEditor.toString();\r\n    };\r\n\r\n    RichTextTemplateEditor.prototype.setValue = function (update) {\r\n        this.templateSelector.clearSelection();\r\n        this.templateSaver.clearName();\r\n        this.richTextEditor.fromString(update.value);\r\n    };\r\n\r\n    RichTextTemplateEditor.prototype.clearValue = function (update) { };\r\n    \r\n    return RichTextTemplateEditor;\r\n});\n","define('drops/runtimeQueryBuilder/runtimeQueryBuilder',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq',\r\n    'lq/frontendModules',\r\n    'lq/drop',\r\n], function ($, _, lq, FrontendModules, Drop) {\r\n    'use strict';\r\n\r\n    var builderData = null;\r\n\r\n    var RuntimeQueryBuilder = function (options) {\r\n        Drop.call(this, $('<div>'), options);\r\n    };\r\n\r\n    Drop.extend(RuntimeQueryBuilder, Drop);\r\n\r\n    RuntimeQueryBuilder.typeName = 'RuntimeQueryBuilder';\r\n\r\n    RuntimeQueryBuilder.prototype.preRender = function () {\r\n        this.applyPosition();\r\n    };\r\n\r\n    RuntimeQueryBuilder.prototype.postRender = function () {\r\n        if (this.data.showEmptyQueryOnPageLoad) {\r\n            this.setValue({\r\n                value: \"{}\"\r\n            });\r\n        }\r\n    };\r\n\r\n    RuntimeQueryBuilder.prototype.getValue = function () {\r\n        return this.lastDesignState;\r\n    };\r\n\r\n    RuntimeQueryBuilder.prototype.clearValue = $.noop;\r\n\r\n    RuntimeQueryBuilder.prototype.setValue = function (update) {\r\n        var designData = update.value;\r\n\r\n        FrontendModules.load('runtimeQueryBuilder', true)\r\n            .then(this.showComponent.bind(this, designData));\r\n    };\r\n\r\n    RuntimeQueryBuilder.prototype.showComponent = function (designData, QueryBuilder) {\r\n        if (!builderData) {\r\n            var self = this;\r\n            $.get(lq.getTenantUrl('Query/BuilderData'),\r\n                function (data) {\r\n                    builderData = data;\r\n                    self.showQueryBuilder(designData, QueryBuilder);\r\n                });\r\n        } else {\r\n            this.showQueryBuilder(designData, QueryBuilder);\r\n        }\r\n    };\r\n\r\n    RuntimeQueryBuilder.prototype.showQueryBuilder = function (designState, QueryBuilder) {\r\n        this.lastDesignState = designState;\r\n\r\n        var self = this;\r\n        QueryBuilder.default({\r\n            baseUrl: lq.getBaseUrl(''),\r\n            tenant: lq.getTenantName(),\r\n            application: lq.getTenantApplicationName(),\r\n            state: designState ? JSON.parse(designState) : {},\r\n            componentName: lq.getNameOfComponent(),\r\n            ravenLogger: lq.getRavenLogger(),\r\n            frontEndUrl: lq.getFrontEndUrl(''),\r\n            tenantUrl: lq.getTenantUrl(''),\r\n            entities: builderData.entities,\r\n            externalData: {\r\n                availableQueries: []\r\n            },\r\n            save: function (query, designData) {\r\n                self.lastDesignState = JSON.stringify(designData);\r\n                self.triggerEventIfEnabled('saveClicked');\r\n            },\r\n            cancel: function () {\r\n                self.triggerEventIfEnabled('cancelClicked');\r\n            }\r\n        }, this.$element.get(0));\r\n    };\r\n\r\n    return RuntimeQueryBuilder;\r\n});\n","define('drops/simpleSpreadsheet/simpleSpreadsheetRow',[\r\n    'jquery',\r\n    'lq/constants',\r\n    'lq/style',\r\n    'jquery.numpadDecSeparator'\r\n], function ($, constants, Style, numpadDecSeparator) {\r\n    'use strict';\r\n    \r\n    function SimpleSpreadsheetRow(spreadsheet) {\r\n        this.spreadsheet = spreadsheet;\r\n\r\n        this.$cells = _(spreadsheet.data.columns.length).times(this.createCell.bind(this));\r\n\r\n        this.$element = $('<div />')\r\n            .on('click', this.rowClicked.bind(this))\r\n            .append(_.map(this.$cells, function($cell, i) {\r\n                return $('<div />')\r\n                    .append($cell);\r\n            }));\r\n    }\r\n\r\n    SimpleSpreadsheetRow.prototype.createCell = function (i) {\r\n        var $input = $('<input type=\"text\" />')\r\n            .on('change', this.columnUpdated.bind(this, i))\r\n            .on('input', this.columnUpdated.bind(this, i))\r\n            .on('keypress', this.keyPressed.bind(this, i))\r\n            .on('focus', this.focusReceived.bind(this))\r\n            .on('blur', this.focusLost.bind(this));\r\n\r\n        if (this.isNumberColumn(i)) {\r\n            $input\r\n                .numpadDecSeparator({\r\n                    separator: this.spreadsheet.formatter.decimalSeperator\r\n                });\r\n        }\r\n\r\n        Style.renderStyles(this.spreadsheet, null, $input, this.spreadsheet.data.styles, 'input');\r\n\r\n        // overwrite whatever value text-align was set to by Style.renderStyles\r\n        $input.css('text-align', this.spreadsheet.data.columns[i].alignment);\r\n\r\n        return $input;\r\n    };\r\n\r\n    SimpleSpreadsheetRow.prototype.isNumberColumn = function(i) {\r\n        return this.spreadsheet.data.columns[i].type === 'number';\r\n    };\r\n\r\n    SimpleSpreadsheetRow.prototype.rowClicked = function (event) {\r\n        if (event.ctrlKey)\r\n            this.spreadsheet.updateSelectedRows(this);\r\n        else\r\n            this.spreadsheet.setSelectedRow(this);\r\n    };\r\n\r\n    SimpleSpreadsheetRow.prototype.focusReceived = function (event) {\r\n        Style.renderStyles(this, null, $(event.target), this.spreadsheet.data.styles, 'input selected');\r\n    };\r\n\r\n    SimpleSpreadsheetRow.prototype.focusLost = function (event) {\r\n        Style.renderStyles(this, null, $(event.target), this.spreadsheet.data.styles, 'input');\r\n    };\r\n\r\n    SimpleSpreadsheetRow.prototype.columnUpdated = function (indexOfColumn) {\r\n        this.spreadsheet.columnUpdated(indexOfColumn);\r\n    };\r\n\r\n    SimpleSpreadsheetRow.prototype.keyPressed = function(indexOfColumn, e) {\r\n        if (e.keyCode !== 13)\r\n            return;\r\n        this.spreadsheet.moveToNextRow(this, indexOfColumn);\r\n    };\r\n\r\n    SimpleSpreadsheetRow.prototype.highlight = function() {\r\n        this.$element.addClass('active-row');\r\n    };\r\n\r\n    SimpleSpreadsheetRow.prototype.isEmpty = function () {\r\n        var self = this;\r\n        return _.every(this.spreadsheet.data.columns, function (column, i) {\r\n            return !self.$cells[i].val();\r\n        });\r\n    };\r\n\r\n    SimpleSpreadsheetRow.prototype.dehighlight = function () {\r\n        this.$element.removeClass('active-row');\r\n    };\r\n\r\n    SimpleSpreadsheetRow.prototype.paste = function (content) {\r\n        var values = content.split(';');\r\n        for (var i = 0; i < values.length && i < this.$cells.length; i++) {\r\n            var value = values[i];\r\n            var $cell = this.$cells[i];\r\n            $cell.val(value);\r\n        }\r\n    };\r\n    \r\n    SimpleSpreadsheetRow.prototype.setValueOf = function (indexOfColumn, value) {\r\n        if (this.isNumberColumn(indexOfColumn))\r\n            value = this.convertToNumericValue(value);\r\n\r\n        var $cell = this.$cells[indexOfColumn];\r\n        $cell.val(value);\r\n    };\r\n\r\n    SimpleSpreadsheetRow.prototype.convertToNumericValue = function (value) {\r\n        return this.spreadsheet.formatter.convertFromLicquidFormat(constants.valueTypes.decimal, value);\r\n    };\r\n    \r\n    SimpleSpreadsheetRow.prototype.getNumericValueOf = function (indexOfColumn) {\r\n        var value = this.$cells[indexOfColumn].val();\r\n        var numericValue = this.spreadsheet.formatter.convertToLicquidFormat(constants.valueTypes.decimal, value);\r\n        return numericValue === NaN ? null : numericValue;\r\n    };\r\n    \r\n    SimpleSpreadsheetRow.prototype.setData = function (data) {\r\n        var self = this;\r\n        _.each(this.spreadsheet.data.columns, function (column, i) {\r\n            var value = data[column.attribute];\r\n            self.setValueOf(i, value);\r\n        });\r\n    };\r\n\r\n    SimpleSpreadsheetRow.prototype.getData = function () {\r\n        var data = {};\r\n\r\n        var self = this;\r\n        _.each(this.spreadsheet.data.columns, function (column, i) {\r\n            data[column.attribute] = self.isNumberColumn(i) ?\r\n                self.getNumericValueOf(i)\r\n                : self.$cells[i].val();\r\n        });\r\n\r\n        return data;\r\n    };\r\n\r\n    SimpleSpreadsheetRow.prototype.focusFirstInputField = function () {\r\n        this.focusInputField(0);\r\n    };\r\n\r\n    SimpleSpreadsheetRow.prototype.focusInputField = function(index) {\r\n        this.$element.find('input')\r\n            .eq(index)\r\n            .trigger('focus');\r\n    };\r\n\r\n    return SimpleSpreadsheetRow;\r\n});\n","define('drops/simpleSpreadsheet/simpleSpreadsheet',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'drops/simpleSpreadsheet/simpleSpreadsheetRow'\r\n], function ($, Drop, Style, SimpleSpreadsheetRow) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            defaultNumberOfRows: 100,\r\n            columns: []\r\n        }\r\n    };\r\n\r\n    function SimpleSpreadsheet(options) {\r\n        Drop.call(this, $('<div class=\"simple-spreadsheet\"/>'), defaults, options);\r\n\r\n        this.selectedRows = [];\r\n        this.lastTotal = null;\r\n        this.deletedRowIds = [];\r\n\r\n        this.$rows = $('<div class=\"spreadsheet-table\" />')\r\n            .appendTo(this.$element);\r\n\r\n        Style.renderStyles(this);\r\n\r\n        var self = this;\r\n        this.columnUpdated = _.debounce(function (indexOfColumn) {\r\n            if (indexOfColumn !== Number(self.data.eventArgumentColumn))\r\n                return;\r\n            self.triggerUpdated();\r\n        }, 500);\r\n    };\r\n\r\n    Drop.extend(SimpleSpreadsheet, Drop);\r\n\r\n    SimpleSpreadsheet.typeName = 'SimpleSpreadsheet';\r\n    \r\n    SimpleSpreadsheet.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.datasource,\r\n            this.loadDataFromDatasource.bind(this),\r\n            $.noop);\r\n\r\n        this.formatter = this.piping.formatting.createFormatter(this.data.formatting);\r\n\r\n        this.applyPosition();\r\n        \r\n        this.createDefaultNumberOfRows();\r\n\r\n        if (this.rows.length > 0)\r\n            this.setSelectedRow(this.rows[0]);\r\n    };\r\n    \r\n    SimpleSpreadsheet.prototype.createDefaultNumberOfRows = function () {\r\n        this.rows = _(this.data.defaultNumberOfRows).times(this.createRow.bind(this));\r\n        this.$rows.append(_.pluck(this.rows, '$element'));\r\n    };\r\n\r\n    SimpleSpreadsheet.prototype.createRow = function () {\r\n        var row = new SimpleSpreadsheetRow(this);\r\n\r\n        _.each(this.data.columns, function (column, i) {\r\n            if (column.width === null || column.width === undefined)\r\n                return;\r\n\r\n            var $cell = row.$element\r\n                .children(':eq(' + i + ')');\r\n\r\n            // note: setting width to 0 does not work in every browser\r\n            if (column.width === 0)\r\n                $cell.css('display', 'none');\r\n            else\r\n                $cell.css('width', column.width + 'px');\r\n        });\r\n\r\n        return row;\r\n    };\r\n\r\n    SimpleSpreadsheet.prototype.loadDataFromDatasource = function (data) {\r\n        this.deletedRowIds = [];\r\n\r\n        var numberOfRequiredLines = this.getNumberOfRequiredLines(data);\r\n\r\n        if (this.rows.length < numberOfRequiredLines) {\r\n            var extraRows = _(numberOfRequiredLines - this.rows.length).times(this.createRow.bind(this));\r\n            this.rows.push.apply(this.rows, extraRows);\r\n            this.$rows.append(_.pluck(extraRows, '$element'));\r\n        } else if (this.rows.length > numberOfRequiredLines) {\r\n            this.rows.splice(numberOfRequiredLines);\r\n            this.$rows\r\n                .children()\r\n                .filter(\":gt(\" + (numberOfRequiredLines-1) + \")\")\r\n                .remove();\r\n        }\r\n\r\n        var rows = this.rows;\r\n        var rowNumberOutput = this.data.rowNumberOutput;\r\n        var idOutput = this.data.idOutput;\r\n        var sortedResults = _.sortBy(data.results, rowNumberOutput);\r\n\r\n        _.each(sortedResults, function (result, i) {\r\n            rows[i].setData(result);\r\n            rows[i].rowId = result[idOutput];\r\n        });\r\n\r\n        var rowToFocus = _.find(rows, function(row) {\r\n            return row.isEmpty();\r\n        });\r\n        if (!rowToFocus)\r\n            rowToFocus = rows[0];\r\n\r\n        this.setSelectedRow(rowToFocus);\r\n\r\n        this.triggerUpdated();\r\n    };\r\n\r\n    SimpleSpreadsheet.prototype.getNumberOfRequiredLines = function(data) {\r\n        return data.results.length === 0 ? this.data.defaultNumberOfRows : data.results.length;\r\n    };\r\n\r\n    SimpleSpreadsheet.prototype.setSelectedRow = function (row) {\r\n        if (this.selectedRows.length === 1 && this.selectedRows[0] === row) return;\r\n\r\n        _.each(this.selectedRows, function(row) {\r\n            row.dehighlight();\r\n        }); \r\n\r\n        this.selectedRows = [row];\r\n\r\n        this.updateRowIndexParameter(row);\r\n\r\n        row.highlight();\r\n        \r\n        var rowToScrollTo = _.first(this.rows) === row ? row : this.rows[_.indexOf(this.rows, row) - 1];\r\n        var scrollTop = this.$element.scrollTop() + rowToScrollTo.$element.position().top;\r\n        \r\n        if (this.$element.scrollTop() > scrollTop || scrollTop > this.$element.scrollTop() + this.$element.height())\r\n            this.$element.scrollTop(scrollTop);\r\n    };\r\n\r\n    SimpleSpreadsheet.prototype.updateSelectedRows = function(row) {\r\n        if (this.isRowSelected(row)) {\r\n            this.selectedRows = _.reject(this.selectedRows, function(selectedRow) {\r\n                return selectedRow === row;\r\n            });\r\n            row.dehighlight();\r\n        } else {\r\n            this.selectedRows.push(row);\r\n            row.highlight();\r\n            this.updateRowIndexParameter(row);\r\n        }\r\n    };\r\n\r\n    SimpleSpreadsheet.prototype.isRowSelected = function(row) {\r\n        return _.indexOf(this.selectedRows, row) !== -1;\r\n    };\r\n\r\n    SimpleSpreadsheet.prototype.updateRowIndexParameter = function (row) {\r\n        if (!this.data.currentRowParameter)\r\n            return;\r\n\r\n        this.piping.parameters.locals.setValue(this.data.currentRowParameter, _.indexOf(this.rows, row));\r\n    };\r\n\r\n    SimpleSpreadsheet.prototype.triggerUpdated = function () {\r\n        if (!this.isEventEnabled('updated'))\r\n            return;\r\n\r\n        var newTotal = this.getTotalForEvent();\r\n        if (this.lastTotal === newTotal)\r\n            return;\r\n\r\n        this.triggerEvent(this.data.eventing['updated'].raisedEventName, newTotal);\r\n        this.lastTotal = newTotal;\r\n    };\r\n\r\n    SimpleSpreadsheet.prototype.getTotalForEvent = function () {\r\n        var eventArgumentColumn = this.data.eventArgumentColumn;\r\n\r\n        if (this.data.eventArgumentFunction === 'sum') {\r\n            var precision = Math.pow(10, this.formatter.decimalPrecision);\r\n            var total = _.reduce(this.rows, function (acc, row) {\r\n                return acc + (row.getNumericValueOf(eventArgumentColumn) * precision || 0);\r\n            }, 0);\r\n            total = Math.round(total);\r\n            total = total / precision;\r\n            return total;\r\n        }\r\n\r\n        throw new Error('Invalid function');\r\n    };\r\n    \r\n    SimpleSpreadsheet.prototype.setValue = function (update) {\r\n        if (!update.value) return;\r\n\r\n        var startRowIndex = this.selectedRows.length > 0 ? this.getFirstSelectedIndex() : 0;\r\n        var lines = update.value.split('\\n');\r\n        var requiredLength = startRowIndex + lines.length;\r\n\r\n        if (requiredLength > this.rows.length)\r\n            this.addExtraRows(requiredLength - this.rows.length);\r\n\r\n        for (var i = 0; i < lines.length; i++) {\r\n            var line = lines[i];\r\n            var row = this.rows[i + startRowIndex];\r\n            if(row) row.paste(line);\r\n        }\r\n\r\n        var nextSelectedRow = this.rows[startRowIndex + lines.length];\r\n        if (nextSelectedRow)\r\n            this.setSelectedRow(nextSelectedRow);\r\n        else\r\n            this.setSelectedRow(_.last(this.rows));\r\n\r\n        this.triggerUpdated();\r\n    };\r\n\r\n    SimpleSpreadsheet.prototype.getFirstSelectedIndex = function() {\r\n        return _.chain(this.selectedRows)\r\n            .map(this.getIndexOfRow.bind(this))\r\n            .min()\r\n            .value();\r\n    };\r\n\r\n    SimpleSpreadsheet.prototype.addExtraRows = function(numberOfExtraRows) {\r\n        var self = this;\r\n        _.each(_.range(numberOfExtraRows), function () {\r\n            var row = self.createRow();\r\n            self.rows.push(row);\r\n            self.$rows.append(row.$element);\r\n        });\r\n    };\r\n\r\n    SimpleSpreadsheet.prototype.getBatchOfCommands = function () {\r\n        if (!this.rows) return [];\r\n\r\n        var rowNumberAttribute = this.data.rowNumberAttribute;\r\n        var parentAttribute = this.data.parentAttribute;\r\n        var parentIdParameter = this.data.parentIdParameter;\r\n        var parameters = this.piping.parameters;\r\n        return {\r\n            eventActionType: 'Batch',\r\n            command: this.data.id,\r\n            batch: _.map(this.rows, function (row, i) {\r\n                var data = row.getData();\r\n                data[rowNumberAttribute] = i;\r\n\r\n                if (!row.rowId)\r\n                    data[parentAttribute] = parameters.getValue(parentIdParameter);\r\n\r\n                return {\r\n                    entityId: row.rowId,\r\n                    data: data\r\n                };\r\n            }),\r\n            deletes: this.deletedRowIds\r\n        };\r\n    };\r\n\r\n    SimpleSpreadsheet.prototype.receiveBatchOfCommandsResult = function (identifiers) {\r\n        var rows = this.rows;\r\n        _.each(identifiers, function(identifier, i) {\r\n            rows[i].rowId = identifier;\r\n        });\r\n    };\r\n    \r\n    SimpleSpreadsheet.prototype.moveToNextRow = function(triggerRow, indexOfColumn) {\r\n        var indexOfTrigger = this.getIndexOfRow(triggerRow);\r\n\r\n        if (indexOfTrigger === this.rows.length - 1)\r\n            return;\r\n\r\n        var nextRow = this.rows[indexOfTrigger + 1];\r\n        this.setSelectedRow(nextRow);\r\n\r\n        nextRow.focusInputField(indexOfColumn);\r\n    };\r\n\r\n    SimpleSpreadsheet.prototype.licquidMethod_insertRow = function() {\r\n        var oneOrMoreRowsAreSelected = this.selectedRows.length > 0;\r\n        var index = oneOrMoreRowsAreSelected\r\n            ? this.getIndexOfRow(this.selectedRows[0])\r\n            : 0;\r\n\r\n        var newRow = this.createRow();\r\n\r\n        if (oneOrMoreRowsAreSelected && this.selectedRows[0] === _.last(this.rows)) {\r\n            this.rows.push(newRow);\r\n\r\n            this.$rows.children().eq(index)\r\n                .after(newRow.$element);\r\n        } else {\r\n            this.rows.splice(index, 0, newRow);\r\n\r\n            if (index === 0)\r\n                this.$rows.prepend(newRow.$element);\r\n            else\r\n                this.$rows.children().eq(index)\r\n                    .before(newRow.$element);\r\n        }\r\n\r\n        this.setSelectedRow(newRow);\r\n        newRow.focusFirstInputField();\r\n    };\r\n\r\n    SimpleSpreadsheet.prototype.licquidMethod_deleteRow = function () {\r\n        if (this.selectedRows.length === 0)\r\n            return;\r\n\r\n        var lastSelectedIndex = this.getLastSelectedIndex();\r\n        \r\n        _.each(this.selectedRows, this.deleteRow.bind(this));\r\n\r\n        if (this.rows.length !== 0) {\r\n            var nextIndexToFocus = this.rows.length > lastSelectedIndex ? lastSelectedIndex : this.rows.length - 1;\r\n            var newRowToFocus = this.rows[nextIndexToFocus];\r\n            this.setSelectedRow(newRowToFocus);\r\n            newRowToFocus.focusFirstInputField();\r\n        } else {\r\n            this.selectedRow = [];\r\n        }\r\n\r\n        this.triggerUpdated();\r\n    };\r\n\r\n    SimpleSpreadsheet.prototype.getLastSelectedIndex = function() {\r\n        return _.chain(this.selectedRows)\r\n            .map(this.getIndexOfRow.bind(this))\r\n            .max()\r\n            .value();\r\n    };\r\n\r\n    SimpleSpreadsheet.prototype.deleteRow = function(row) {\r\n        row.$element.remove();\r\n        \r\n        if (row.rowId)\r\n            this.deletedRowIds.push(row.rowId);\r\n\r\n        var index = this.getIndexOfRow(row);\r\n        this.rows.splice(index, 1);\r\n    };\r\n\r\n    SimpleSpreadsheet.prototype.getIndexOfRow = function(row) {\r\n        return this.rows.indexOf(row);\r\n    };\r\n\r\n    SimpleSpreadsheet.prototype.clearValue = $.noop;\r\n\r\n    return SimpleSpreadsheet;\r\n});\n","define('drops/sketchPad/canvasMorph',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq',\r\n    'lq/util'\r\n], function ($, _, lq, util) {\r\n    'use strict';\r\n\r\n    function CanvasMorph(model, $canvas, $toolbar, $stylePickerContainer, parameters, reqDataFromParent, $actionWrapper) {\r\n        var self = this;\r\n        self.$canvas = $canvas;\r\n        self.$stylePickerContainer = $stylePickerContainer;\r\n        self.reqDataFromParent = reqDataFromParent;\r\n        self.parameters = parameters;\r\n        self.$actionWrapper = $actionWrapper;\r\n        self._isUndoShown = false;\r\n        self.showUndo = function () {\r\n            self._isUndoShown = true;\r\n            setButtonImage(self.btnUndo, true, false);\r\n        };\r\n        self.hideUndo = function () {\r\n            self._isUndoShown = false;\r\n            setButtonImage(self.btnUndo, false, false);\r\n        };\r\n\r\n        self._isRedoShown = false;\r\n        self.showRedo = function () {\r\n            self._isRedoShown = true;\r\n            setButtonImage(self.btnRedo, true, false);\r\n        };\r\n        self.hideRedo = function () {\r\n            self._isRedoShown = false;\r\n            setButtonImage(self.btnRedo, false, false);\r\n        };\r\n\r\n        self._isGridShown = model.showGridInitially;\r\n        self.showGrid = function () {\r\n            self._isGridShown = true;\r\n            setButtonImage(self.btnGrid, true, true);\r\n            if (self.gridOnTop) {\r\n                setButtonImage(self.btnOnTop, true, true);\r\n            } else {\r\n                setButtonImage(self.btnOnTop, true, false);\r\n            }\r\n        };\r\n        self.hideGrid = function () {\r\n            self._isGridShown = false;\r\n            setButtonImage(self.btnGrid, true, false);\r\n            if (self.gridOnTop) {\r\n                setButtonImage(self.btnOnTop, false, true);\r\n            } else {\r\n                setButtonImage(self.btnOnTop, false, false);\r\n            }\r\n        };\r\n\r\n        self.gridSize = model.startingGridSize || 3;\r\n\r\n        self.realCurZoom = 0;\r\n        self.curZoom = self.realCurZoom;\r\n        self.setCurZoom = function (val) {\r\n            self.lastX = self.canvas.width / 2;\r\n            self.lastY = self.canvas.height / 2;\r\n            if (val > self.realCurZoom) {\r\n                zoom(Math.abs(val - self.realCurZoom));\r\n            } else {\r\n                zoom(-Math.abs(val - self.realCurZoom));\r\n            }\r\n        };\r\n\r\n        self.clicks = new Array();\r\n        self.undoneStrokes = new Array();\r\n\r\n        self.startingLineSize = model.startingLineSize;\r\n        if (model.startingLineSize) {\r\n            self.lineSize = parseInt(model.startingLineSize);\r\n        } else {\r\n            self.lineSize = 3;\r\n        }\r\n\r\n        self.startingLineSizeMarker = model.startingLineSizeMarker;\r\n        if (model.startingLineSizeMarker) {\r\n            self.lineSizeMarker = parseInt(model.startingLineSizeMarker);\r\n        } else {\r\n            self.lineSizeMarker = 15;\r\n        }\r\n\r\n        self.curColor = model.defaultPenColor;\r\n        self.curColorMarker = model.defaultMarkerColor;\r\n        self.lastColor = \"#000000\";\r\n\r\n        self.showPen = model.showPen;\r\n        self.showMarker = model.showMarker;\r\n        self.showMove = model.showMove;\r\n        self.showDelete = model.showDelete;\r\n        self.showClear = model.showClear;\r\n        self.showLineSlider = model.showLineSlider;\r\n        self.showGridSlider = model.showGridSlider;\r\n        self.showScrollSlider = model.showScrollSlider;\r\n        self.showGridOnTop = model.showGridOnTop;\r\n        self.showUndoRedo = model.showUndoRedo;\r\n        self.showGridInitially = model.showGridInitially;\r\n        self.useGraphPaper = model.useGraphPaper;\r\n        self.useGraphPaperScale = model.useGraphPaperScale;\r\n        self.enablePinchMove = model.enablePinchMove;\r\n        self.graphPaperScaleParameter = model.graphPaperScaleParameter;\r\n        self.gridOnTop = model.gridOnTop;\r\n        self.disableZooming = model.disableZooming;\r\n        self.startingGridSize = model.startingGridSize;\r\n        self.startingSensitivity = model.startingSensitivity;\r\n        self.useBackImage = model.useBackImage;\r\n        self.backImage = model.backImage;\r\n        self.backImageOnTop = model.backImageOnTop;\r\n        self.defaultMarkerColor = model.defaultMarkerColor;\r\n        self.defaultPenColor = model.defaultPenColor;\r\n        self.colorIndicesToAllow = model.colorIndicesToAllow;\r\n        self.hasBgImage = model.useBackImage && model.backImage;\r\n        self.disableMovingBg = model.disableMovingBg;\r\n\r\n        self.hasHeader = self.showUndoRedo ||\r\n            self.showGridOnTop ||\r\n            self.showClear ||\r\n            self.showDelete ||\r\n            self.showMove ||\r\n            self.showMarker ||\r\n            self.showPen ||\r\n            self.showGridInitially;\r\n\r\n        self.penOpenedEvent = new CustomEvent('penOpened');\r\n        self.markOpenedEvent = new CustomEvent('markOpened');\r\n\r\n        self.paint = null;\r\n        self.filenameToLoad = \"\";\r\n        self.context = null;\r\n        self.canvas = null;\r\n\r\n        if (model.showPen) {\r\n            self.curMode = \"paint\";\r\n        } else if (model.showMarker) {\r\n            self.curMode = \"mark\";\r\n        } else if (!model.readOnly) {\r\n            self.curMode = \"paint\";\r\n        } else {\r\n            self.curMode = \"\";\r\n        }\r\n\r\n        self.lastX = null;\r\n        self.lastY = null;\r\n        self.dragStart = null;\r\n        self.dragged = null;\r\n        self.scaleFactor = 1.1;\r\n        self.pt = null;\r\n        self.svg = null;\r\n        self.lastTouchDistance = 0;\r\n        self.deleteFromIndex = 0;\r\n        self.deleteToIndex = 0;\r\n        self.originalColorSelection = \"\";\r\n        self.strokeSelected = false;\r\n        self.moveCounter = 0;\r\n        self.strokeSelectionSensitivity = 50;\r\n\r\n        self.lastStrokeEndInd = 0;\r\n        self.completedStrokesInd = new Array();\r\n\r\n        self.btnDraw = { id: \"imgDrawObj\", srcActOn: \"Drops/SketchPad/icons/draw-on.svg\" };\r\n        self.btnMarker = { id: \"imgMarkerObj\", srcActOn: \"Drops/SketchPad/icons/marker-on.svg\" };\r\n        self.btnDelete = { id: \"imgDeleteObj\", srcActOn: \"Drops/SketchPad/icons/erase-on.svg\" };\r\n        self.btnGrab = { id: \"imgGrab\", srcActOn: \"Drops/SketchPad/icons/grab-on.png\", srcActOff: \"Drops/SketchPad/icons/grab-off.png\" };\r\n        self.btnClear = { id: \"imgClear\", srcActOn: \"Drops/SketchPad/icons/clear-on.png\", srcActOff: \"Drops/SketchPad/icons/clear-on.png\" };\r\n        self.btnUndo = {\r\n            id: \"imgUndo\", srcActOn: \"Drops/SketchPad/icons/undo-act-on.png\", srcActOff: \"Drops/SketchPad/icons/undo-act-on.png\",\r\n            srcDeactOff: \"Drops/SketchPad/icons/undo-deact.png\"\r\n        };\r\n        self.btnRedo = {\r\n            id: \"imgRedo\", srcActOn: \"Drops/SketchPad/icons/redo-act-on.png\", srcActOff: \"Drops/SketchPad/icons/redo-act-on.png\",\r\n            srcDeactOff: \"Drops/SketchPad/icons/redo-deact.png\"\r\n        };\r\n        self.btnGrid = { id: \"imgGrid\", srcActOn: \"/Drops/SketchPad/icons/grid-on.png\", srcActOff: \"Drops/SketchPad/icons/grid-off.png\" };\r\n        self.btnOnTop = {\r\n            id: \"imgOnTop\", srcActOn: \"Drops/SketchPad/icons/ontop-act-on.png\", srcActOff: \"Drops/SketchPad/icons/ontop-act-off.png\",\r\n            srcDeactOn: \"Drops/SketchPad/icons/ontop-act-on.png\", srcDeactOff: \"Drops/SketchPad/icons/ontop-act-off.png\"\r\n        };\r\n\r\n        self.mousedown = function (e) {\r\n            //Firefox doesn't have e.offsetX\r\n            self.lastX = (e.offsetX || e.layerX - e.currentTarget.offsetLeft);\r\n            self.lastY = (e.offsetY || e.layerY - e.currentTarget.offsetTop);\r\n\r\n            mousedownAction(e);\r\n\r\n            e.preventDefault();\r\n        };\r\n\r\n        self.mousemove = function (e) {\r\n            self.lastX = (e.offsetX || e.layerX - e.currentTarget.offsetLeft);\r\n            self.lastY = (e.offsetY || e.layerY - e.currentTarget.offsetTop);\r\n\r\n            mousemoveAction(e);\r\n        };\r\n\r\n        self.mouseup = function (e) {\r\n\r\n            mouseupAction(e);\r\n        };\r\n\r\n        self.mouseout = function (e) {\r\n            self.paint = false;\r\n            self.dragStart = false;\r\n            redraw();\r\n        };\r\n\r\n        self.mousewheel = function (e) {\r\n            var delta = e.wheelDelta ? e.wheelDelta / 120 : e.detail ? -e.detail : 0;\r\n            if (delta) {\r\n                zoom(delta);\r\n            }\r\n            return e.preventDefault() && false;\r\n        };\r\n\r\n        self.touchstart = function (e) {\r\n            e.preventDefault();\r\n\r\n            if (e.touches.length < 2) {\r\n                self.lastX = getTouchPoint(e.touches[0]).x;\r\n                self.lastY = getTouchPoint(e.touches[0]).y;\r\n\r\n                mousedownAction(e);\r\n            }\r\n\r\n            if (e.touches.length === 2) {\r\n                cancelDelete();\r\n                self.lastTouchDistance = getDistance(getTouchPoint(e.touches[0]), getTouchPoint(e.touches[1]));\r\n                self.lastX = (getTouchPoint(e.touches[0]).x + getTouchPoint(e.touches[1]).x) / 2;\r\n                self.lastY = (getTouchPoint(e.touches[0]).y + getTouchPoint(e.touches[1]).y) / 2;\r\n                self.dragStart = self.context.transformedPoint(self.lastX, self.lastY);\r\n                self.dragged = false;\r\n            }\r\n        };\r\n\r\n        self.touchmove = function (e) {\r\n            e.preventDefault();\r\n\r\n            if (e.touches.length < 2) {\r\n                self.lastX = getTouchPoint(e.touches[0]).x;\r\n                self.lastY = getTouchPoint(e.touches[0]).y;\r\n\r\n                mousemoveAction(e);\r\n            }\r\n\r\n            if (e.touches.length === 2) {\r\n                cancelDelete();\r\n\r\n                if (getDistance(getTouchPoint(e.touches[0]), getTouchPoint(e.touches[1])) > self.lastTouchDistance) {\r\n                    zoom(1);\r\n                } else if (getDistance(getTouchPoint(e.touches[0]), getTouchPoint(e.touches[1])) < self.lastTouchDistance) {\r\n                    zoom(-1);\r\n                }\r\n\r\n                self.lastTouchDistance = getDistance(getTouchPoint(e.touches[0]), getTouchPoint(e.touches[1]));\r\n                self.lastX = (getTouchPoint(e.touches[0]).x + getTouchPoint(e.touches[1]).x) / 2;\r\n                self.lastY = (getTouchPoint(e.touches[0]).y + getTouchPoint(e.touches[1]).y) / 2;\r\n                self.dragged = true;\r\n\r\n                if (self.dragStart && self.enablePinchMove) {\r\n                    var pt = self.context.transformedPoint(self.lastX, self.lastY);\r\n                    self.context.translate(pt.x - self.dragStart.x, pt.y - self.dragStart.y);\r\n                    redraw();\r\n                }\r\n            }\r\n        };\r\n\r\n        self.touchend = function (e) {\r\n            e.preventDefault();\r\n\r\n            if (e.touches.length < 2) {\r\n                mouseupAction(e);\r\n            }\r\n\r\n            self.dragStart = null;\r\n            self.paint = false;\r\n        };\r\n\r\n        self.touchColorpicker = function (e) {\r\n            return false;\r\n        };\r\n\r\n        self.selectDraw = function (e) {\r\n            if (is_touch_device() == true && e.type === 'click') { return };\r\n            self.curMode = \"paint\";\r\n\r\n            setButtonSvg(self.btnDraw, true);\r\n            setButtonSvg(self.btnMarker, false);\r\n            setButtonSvg(self.btnDelete, false);\r\n            setButtonImage(self.btnGrab, true, false);\r\n            setButtonImage(self.btnClear, true, false);\r\n\r\n            self.$penTool[0].dispatchEvent(self.penOpenedEvent);\r\n        };\r\n\r\n        self.selectGrab = function () {\r\n            self.curMode = \"grab\";\r\n\r\n            setButtonSvg(self.btnDraw, false);\r\n            setButtonSvg(self.btnMarker, false);\r\n            setButtonSvg(self.btnDelete, false);\r\n            setButtonImage(self.btnGrab, true, true);\r\n            setButtonImage(self.btnClear, true, false);\r\n        };\r\n\r\n        self.selectDelete = function () {\r\n            self.curMode = \"delete\";\r\n\r\n            setButtonSvg(self.btnDraw, false);\r\n            setButtonSvg(self.btnMarker, false);\r\n            setButtonSvg(self.btnDelete, true);\r\n            setButtonImage(self.btnGrab, true, false);\r\n            setButtonImage(self.btnClear, true, false);\r\n        };\r\n\r\n        self.selectMarker = function (e) {\r\n            if (is_touch_device() == true && e.type === 'click') { return };\r\n            self.curMode = \"mark\";\r\n\r\n            setButtonSvg(self.btnDraw, false);\r\n            setButtonSvg(self.btnMarker, true);\r\n            setButtonSvg(self.btnDelete, false);\r\n            setButtonImage(self.btnGrab, true, false);\r\n            setButtonImage(self.btnClear, true, false);\r\n\r\n            self.$markerTool[0].dispatchEvent(self.markOpenedEvent);\r\n        };\r\n\r\n        self.clearDrawing = function () {\r\n            if (self.context) {\r\n                clearEverything();\r\n            } else {\r\n                const canvas = $canvas[0];\r\n                self.context = canvas.getContext('2d');\r\n                clearEverything();\r\n            }\r\n\r\n            self.lastStrokeEndInd = 0;\r\n            self.completedStrokesInd = new Array();\r\n            self.clicks = new Array();\r\n        };\r\n\r\n        self.selectClear = function () {\r\n            setButtonImage(self.btnClear, true, true);\r\n\r\n            if (!self.reqDataFromParent.isClearEventEnabled) {\r\n                self.clearDrawing();\r\n                redraw();\r\n            }\r\n            self.reqDataFromParent.triggerClearEventFunction();\r\n\r\n            setTimeout(function () {\r\n                setButtonImage(self.btnClear, true, false);\r\n            }, 100);\r\n        };\r\n\r\n        self.toggleGrid = function (e) {\r\n            if (is_touch_device() == true && e.type === 'click') { return };\r\n            if (self._isGridShown) {\r\n                self.hideGrid();\r\n            } else {\r\n                self.showGrid();\r\n            }\r\n            redraw();\r\n        };\r\n\r\n        self.toggleOnTop = function (e) {\r\n            if (is_touch_device() == true && e.type === 'click') { return };\r\n            if (self._isGridShown) {\r\n                if (self.gridOnTop) {\r\n                    self.gridOnTop = false;\r\n                    setButtonImage(self.btnOnTop, true, false);\r\n                } else {\r\n                    self.gridOnTop = true;\r\n                    setButtonImage(self.btnOnTop, true, true);\r\n                }\r\n                redraw();\r\n            }\r\n        };\r\n\r\n        self.undo = function () {\r\n            if (self._isUndoShown) {\r\n\r\n                selectStroke(self.clicks.length - 1);\r\n                deleteStroke();\r\n\r\n                self.showRedo();\r\n\r\n                if (self.clicks.length === 0) {\r\n                    self.hideUndo();\r\n                }\r\n                redraw();\r\n\r\n                if (self.reqDataFromParent.isOnUndoEventEnabled) {\r\n                    self.reqDataFromParent.triggerOnUndoEventFunction();\r\n                }\r\n            }\r\n        };\r\n\r\n        self.undoMouseDown = function () {\r\n            if (self._isUndoShown) {\r\n                setButtonImage(self.btnUndo, true, true);\r\n            }\r\n        };\r\n\r\n        self.undoMouseUpOrOut = function () {\r\n            if (self._isUndoShown) {\r\n                setButtonImage(self.btnUndo, true, false);\r\n            }\r\n        };\r\n\r\n        self.undoTouch = function () {\r\n            self.undo();\r\n            self.undoMouseDown();\r\n        };\r\n\r\n        self.redo = function () {\r\n            if (self._isRedoShown) {\r\n\r\n                while (self.undoneStrokes[self.undoneStrokes.length - 1].length > 0) {\r\n                    self.clicks.push(self.undoneStrokes[self.undoneStrokes.length - 1].shift());\r\n                }\r\n\r\n                self.undoneStrokes.pop();\r\n\r\n                self.showUndo();\r\n\r\n                if (self.undoneStrokes.length === 0) {\r\n                    self.hideRedo();\r\n                }\r\n                redraw();\r\n\r\n                if (self.reqDataFromParent.isOnRedoEventEnabled) {\r\n                    self.reqDataFromParent.triggerOnRedoEventFunction();\r\n                }\r\n            }\r\n        };\r\n\r\n        self.redoMouseDown = function () {\r\n            if (self._isRedoShown) {\r\n                setButtonImage(self.btnRedo, true, true);\r\n            }\r\n        };\r\n\r\n        self.redoMouseUpOrOut = function () {\r\n            if (self._isRedoShown) {\r\n                setButtonImage(self.btnRedo, true, false);\r\n            }\r\n        };\r\n\r\n        self.redoTouch = function () {\r\n            self.redo();\r\n            self.redoMouseDown();\r\n        };\r\n\r\n        self.redraw = function (bgImgSrc, isNewBgImg, isClearBg) {\r\n            redraw(bgImgSrc, isNewBgImg, isClearBg);\r\n        };\r\n\r\n        self.prevFuncCallWhileTouchScroll = function (functionCallback, e) {\r\n            if (!self.scrolling) {\r\n                functionCallback(e);\r\n            }\r\n        };\r\n\r\n        function mousedownAction(e) {\r\n            if (model.readOnly)\r\n                return;\r\n            if (self.curMode === \"paint\" || self.curMode === \"mark\") {\r\n                self.paint = true;\r\n                addClick(false);\r\n                redraw();\r\n            } else if (self.curMode === \"grab\") {\r\n                self.dragStart = self.context.transformedPoint(self.lastX, self.lastY);\r\n                self.dragged = false;\r\n            } else if (self.curMode === \"delete\") {\r\n                findStroke();\r\n            }\r\n        }\r\n\r\n        function mousemoveAction(e) {\r\n            if (self.paint && (self.curMode === \"paint\" || self.curMode === \"mark\")) {\r\n                addClick(true);\r\n                redraw();\r\n            } else if (self.curMode === \"grab\") {\r\n                self.dragged = true;\r\n                if (self.dragStart) {\r\n                    var pt = self.context.transformedPoint(self.lastX, self.lastY);\r\n                    self.context.translate(pt.x - self.dragStart.x, pt.y - self.dragStart.y);\r\n                    refreshLayers();\r\n                    redraw();\r\n                }\r\n            } else if (self.curMode === \"delete\") {\r\n                self.moveCounter += 1;\r\n                if (self.moveCounter > 5) {\r\n                    cancelDelete();\r\n                }\r\n            }\r\n        }\r\n\r\n        function mouseupAction(e) {\r\n            if (self.curMode === \"paint\" || self.curMode === \"mark\") {\r\n                self.paint = false;\r\n            } else if (self.curMode === \"grab\") {\r\n                self.dragStart = null;\r\n                if (!self.dragged) {\r\n                    zoom(e.shiftKey ? -1 : 1);\r\n                }\r\n            } else if (self.curMode === \"delete\") {\r\n                if (self.strokeSelected) {\r\n                    deleteStroke();\r\n                }\r\n                self.moveCounter = 0;\r\n            }\r\n\r\n            if (self.clicks.length > 0 && !self.clicks[self.clicks.length - 1].drag) {\r\n                self.clicks.pop();\r\n            }\r\n\r\n            var lastStrokeEndIndOld = self.lastStrokeEndInd;\r\n\r\n            redraw();\r\n\r\n            if (self.reqDataFromParent.isOnReleaseEnabled && lastStrokeEndIndOld - self.lastStrokeEndInd !== 0) {\r\n                self.reqDataFromParent.triggerOnReleaseEventFunction();\r\n            }\r\n        }\r\n\r\n        function buildCanvas() {\r\n            self.canvas = $canvas[0];\r\n            self.canvas.height = self.canvas.clientHeight;\r\n            self.canvas.width = self.canvas.clientWidth;\r\n\r\n            self.context = self.canvas.getContext(\"2d\");\r\n            trackTransforms(self.context);\r\n\r\n            createLayers();\r\n\r\n            self.lastX = self.canvas.width / 2;\r\n            self.lastY = self.canvas.height / 2;\r\n\r\n            self.canvas.addEventListener(\"touchstart\", self.touchstart);\r\n            self.canvas.addEventListener(\"touchmove\", self.touchmove);\r\n            self.canvas.addEventListener(\"touchend\", self.touchend);\r\n            self.canvas.addEventListener(\"touchcancel\", self.touchcancel);\r\n\r\n            self.canvas.addEventListener(\"mousedown\", self.mousedown);\r\n            self.canvas.addEventListener(\"mousemove\", self.mousemove);\r\n            self.canvas.addEventListener(\"mouseup\", self.mouseup);\r\n            self.canvas.addEventListener(\"mouseout\", self.mouseout);\r\n            self.canvas.addEventListener(\"mousewheel\", self.mousewheel);\r\n\r\n            buildToolbar();\r\n\r\n            var startPosition = self.context.transformedPoint(self.lastX, self.lastY);\r\n            var pt = self.context.transformedPoint(self.lastX, self.lastY);\r\n            self.context.translate(pt.x - startPosition.x, pt.y - startPosition.y);\r\n\r\n            redraw();\r\n        }\r\n        self.buildCanvas = buildCanvas;\r\n\r\n        function resizerRedraw(newWidth, newHeight) {\r\n            self.$canvas.width(newWidth);\r\n            self.$canvas.height(newHeight);\r\n            self.canvas.height = self.canvas.clientHeight;\r\n            self.canvas.width = self.canvas.clientWidth;\r\n            if (self.$toolbarButtons)\r\n                self.$toolbarButtons.width(newWidth);\r\n\r\n            _.forEach(layers, function (layer) {\r\n                layer.isInitialized = false;\r\n            });\r\n            redraw();\r\n        }\r\n\r\n        self.resizerRedraw = resizerRedraw;\r\n\r\n        function buildToolbar() {\r\n            var $toolbarButtons = $('<td id=\"canvas-morph-toolbar\">')\r\n                .css({\r\n                    padding: '0px',\r\n                    height: self.hasHeader ? '69px' : '',\r\n                    textAlign: 'left',\r\n                    verticalAlign: 'bottom',\r\n\r\n                    whiteSpace: 'nowrap',\r\n                    width: self.canvas.width,\r\n                    overflowX: 'auto',\r\n                    overflowY: 'hidden',\r\n                    position: 'relative',\r\n\r\n                    display: 'flex',\r\n                    flexWrap: 'nowrap',\r\n                    alignContent: 'space-between',\r\n                    justifyContent: 'flex-start',\r\n                    alignItems: 'flex-end',\r\n                }).on('scroll', function () {\r\n                    self.scrolling = true;\r\n                }).on('touchend', function () {\r\n                    self.scrolling = false;\r\n                });\r\n\r\n            self.$toolbarButtons = $toolbarButtons;\r\n            var $undoButton = $('<img id=\"imgUndo\" />')\r\n                .on('click', self.undo)\r\n                .on('mousedown', self.undoMouseDown)\r\n                .on('mouseup', self.undoMouseUpOrOut)\r\n                .on('mouseout', self.undoMouseUpOrOut)\r\n                .appendTo($toolbarButtons);\r\n            var $redoButton = $('<img id=\"imgRedo\" />')\r\n                .on('click', self.redo)\r\n                .on('mousedown', self.redoMouseDown)\r\n                .on('mouseup', self.redoMouseUpOrOut)\r\n                .on('mouseout', self.redoMouseUpOrOut)\r\n                .appendTo($toolbarButtons);\r\n\r\n            var $penTool =\r\n                $('<div id=\"imgDraw\" style=\"display: inline-block; position: relative;\">'\r\n                    + '<object id=\"imgDrawObj\" />'\r\n                    + '</div>')\r\n                    .appendTo($toolbarButtons);\r\n            $penTool\r\n                .on('click', self.selectDraw.bind(self))\r\n                .on('touchend', self.prevFuncCallWhileTouchScroll.bind(self, self.selectDraw));\r\n            if (!self.showPen) {\r\n                $penTool.hide();\r\n            }\r\n            self.$penTool = $penTool;\r\n            $('<div id=\"pickDraw\" class=\"sketchStylePicker sketchStylePickerPencil\">'\r\n                + '<input id=\"colPicker\" type=\"hidden\" />'\r\n                + '<input type=\"hidden\" name=\"lineSize\" min=\"1\" max=\"15\" value=\"3\"/>'\r\n                + '</div>')\r\n                .appendTo(self.$stylePickerContainer);\r\n\r\n            var $markerTool =\r\n                $('<div id=\"imgMarker\" style=\"display: inline-block; position: relative;\">'\r\n                    + '<object id=\"imgMarkerObj\" />'\r\n                    + '</div>')\r\n                    .appendTo($toolbarButtons);\r\n            $markerTool\r\n                .on('click', self.selectMarker.bind(self))\r\n                .on('touchend', self.prevFuncCallWhileTouchScroll.bind(self, self.selectMarker));\r\n            self.$markerTool = $markerTool;\r\n            $('<div id=\"pickMark\" class=\"sketchStylePicker sketchStylePickerMarker\">'\r\n                + '<input id=\"colPicker\" type=\"hidden\" />'\r\n                + '<input type=\"hidden\" name=\"lineSize\" min=\"1\" max=\"15\" value=\"3\"/>'\r\n                + '</div>')\r\n                .appendTo(self.$stylePickerContainer);\r\n\r\n            var $deleteButton =\r\n                $('<div id=\"imgDelete\" style=\"display: inline-block; position: relative;\">'\r\n                    + '<object id=\"imgDeleteObj\" />'\r\n                    + '</div>')\r\n                    .on('click', self.selectDelete)\r\n                    .on('touchend', self.prevFuncCallWhileTouchScroll.bind(self, self.selectDelete))\r\n                    .appendTo($toolbarButtons);\r\n            var $moveButton = $('<img id=\"imgGrab\" />')\r\n                .on('click', self.selectGrab)\r\n                .on('touchend', self.prevFuncCallWhileTouchScroll.bind(self, self.selectGrab))\r\n                .appendTo($toolbarButtons);\r\n            var $clearButton = $('<img id=\"imgClear\" />')\r\n                .on('click', self.selectClear)\r\n                .on('touchend', self.prevFuncCallWhileTouchScroll.bind(self, self.selectClear))\r\n                .appendTo($toolbarButtons);\r\n            if (!self.showDelete) {\r\n                $deleteButton.hide();\r\n            }\r\n            if (!self.showMove) {\r\n                $moveButton.hide();\r\n            }\r\n            if (!self.showMarker) {\r\n                $markerTool.hide();\r\n            }\r\n            if (!self.showClear) {\r\n                $clearButton.hide();\r\n            }\r\n            if (!self.showUndoRedo) {\r\n                var hiddenStyle = { 'display': 'none' }\r\n                $undoButton.css(hiddenStyle);\r\n                $redoButton.css(hiddenStyle);\r\n            }\r\n\r\n            $toolbarButtons.hide();\r\n\r\n            var $toggleGridButton = $('<img id=\"imgGrid\" />')\r\n                .on('click', self.toggleGrid.bind(self))\r\n                .on('touchend', self.prevFuncCallWhileTouchScroll.bind(self, self.toggleGrid))\r\n                .appendTo($toolbarButtons);\r\n            var $toggleOnTopButton = $('<img id=\"imgOnTop\" />')\r\n                .on('click', self.toggleOnTop.bind(self))\r\n                .on('touchend', self.prevFuncCallWhileTouchScroll.bind(self, self.toggleOnTop))\r\n                .appendTo($toolbarButtons);\r\n            if (!self.showGridInitially) {\r\n                $toggleGridButton.hide();\r\n            }\r\n            if (!self.showGridOnTop) {\r\n                $toggleOnTopButton.hide();\r\n            }\r\n\r\n            $('<tr />')\r\n                .append($toolbarButtons)\r\n                .append($toolbarButtons)\r\n                .append($toolbarButtons)\r\n                .appendTo($toolbar);\r\n\r\n            setButtonSvg(self.btnDraw, self.showPen, model.defaultPenColor);\r\n            setButtonSvg(self.btnMarker, !self.showPen, model.defaultMarkerColor);\r\n            setButtonImage(self.btnGrab, true, false);\r\n            setButtonSvg(self.btnDelete, false);\r\n            setButtonImage(self.btnClear, true, false);\r\n            setButtonImage(self.btnUndo, false, false);\r\n            setButtonImage(self.btnRedo, false, false);\r\n            setButtonImage(self.btnGrid, true, model.showGridInitially);\r\n\r\n            if (self.gridOnTop) {\r\n                setButtonImage(self.btnOnTop, true, true);\r\n            } else {\r\n                setButtonImage(self.btnOnTop, true, false);\r\n            }\r\n\r\n            if (self.startingLineSize) {\r\n                self.lineSize = self.startingLineSize;\r\n            }\r\n\r\n            if (self.startingLineSizeMarker) {\r\n                self.lineSizeMarker = self.startingLineSizeMarker;\r\n            }\r\n\r\n            if (self.startingGridSize) {\r\n                self.gridSize = self.startingGridSize;\r\n            }\r\n\r\n            if (self.startingSensitivity) {\r\n                self.strokeSelectionSensitivity = self.startingSensitivity;\r\n            }\r\n\r\n            if (self.filenameToLoad) {\r\n                loadSvgFile(self.filenameToLoad);       //if value fired first\r\n            }\r\n\r\n            insertStylePicker();\r\n\r\n            setTimeout(function () {\r\n                $toolbarButtons.show();\r\n            }, 100);\r\n        }\r\n\r\n        function setButtonImage(button, active, on) {\r\n            var selector = '#' + button.id;\r\n            if (active && on) {\r\n                self.$toolbarButtons.find(selector)[0].src = lq.getCdnUrl(button.srcActOn);\r\n            } else if (active) {\r\n                self.$toolbarButtons.find(selector)[0].src = lq.getCdnUrl(button.srcActOff);\r\n            } else if (on) {\r\n                self.$toolbarButtons.find(selector)[0].src = lq.getCdnUrl(button.srcDeactOn);\r\n            } else {\r\n                self.$toolbarButtons.find(selector)[0].src = lq.getCdnUrl(button.srcDeactOff);\r\n            }\r\n        }\r\n\r\n        function setButtonSvg(button, on, defaultColor) {\r\n            var selector = '#' + button.id;\r\n            var toogleSvg = function () {\r\n                if (on) {\r\n                    self.$toolbarButtons.find(selector).parent().css('top', '0px');\r\n                } else {\r\n                    self.$toolbarButtons.find(selector).parent().css('top', '17.5px');\r\n                }\r\n            };\r\n            if (!self.$toolbarButtons.find(selector)[0].contentDocument) {\r\n                self.$toolbarButtons.find(selector).on('load', function () {\r\n                    $(self.$toolbarButtons.find(selector)[0].contentDocument.getElementsByClassName(\"color\")).attr(\"fill\", defaultColor ? defaultColor : '');\r\n                    toogleSvg();\r\n                });\r\n                self.$toolbarButtons.find(selector)[0].data = lq.getCdnUrl(button.srcActOn);\r\n            } else {\r\n                toogleSvg();\r\n            }\r\n        }\r\n\r\n        function getOffsetLeft(elem) {\r\n            var offsetLeft = 0;\r\n            do {\r\n                if (!isNaN(elem.offsetLeft)) {\r\n                    offsetLeft += elem.offsetLeft;\r\n                }\r\n            } while (elem = elem.offsetParent);\r\n            return offsetLeft;\r\n        }\r\n\r\n        function getOffsetTop(elem) {\r\n            var offsetTop = 0;\r\n            do {\r\n                if (!isNaN(elem.offsetTop)) {\r\n                    offsetTop += elem.offsetTop;\r\n                }\r\n            } while (elem = elem.offsetParent);\r\n            return offsetTop;\r\n        }\r\n\r\n        function getTouchPoint(touch) {\r\n            var scrollTop = parseFloat(self.$actionWrapper.scrollTop());\r\n            var scrollLeft = parseFloat(self.$actionWrapper.scrollLeft());\r\n            var borderLeft = parseFloat(self.$canvas.css('border-left-width'));\r\n            var borderTop = parseFloat(self.$canvas.css('border-top-width'));\r\n            return { x: touch.pageX - getOffsetLeft(self.canvas) + scrollLeft - (borderLeft ? borderLeft : 0),\r\n                     y: touch.pageY - getOffsetTop(self.canvas) + scrollTop - (borderTop ? borderTop : 0)};\r\n        }\r\n\r\n        function getDistance(pt1, pt2) {\r\n            var xs = pt2.x - pt1.x;\r\n            xs = xs * xs;\r\n            var ys = pt2.y - pt1.y;\r\n            ys = ys * ys;\r\n\r\n            return Math.sqrt(xs + ys);\r\n        }\r\n\r\n        function zoom(clicks) {\r\n            if (!self.disableZooming) {\r\n                if (self.realCurZoom + clicks < 16 && self.realCurZoom + clicks > -16) {\r\n                    self.realCurZoom = self.realCurZoom + clicks;\r\n                    var pt = self.context.transformedPoint(self.lastX, self.lastY);\r\n                    self.context.translate(pt.x, pt.y);\r\n                    var factor = Math.pow(self.scaleFactor, clicks);\r\n                    self.context.scale(factor, factor);\r\n                    self.context.translate(-pt.x, -pt.y);\r\n\r\n                    refreshLayers();\r\n\r\n                    redraw();\r\n                }\r\n            }\r\n        }\r\n\r\n        function addClick(dragging) {\r\n            self.pt = self.context.transformedPoint(self.lastX, self.lastY);\r\n            self.context.translate(self.pt.x, self.pt.y);\r\n\r\n            if (self.clicks.length > 0 && !dragging && !self.clicks[self.clicks.length - 1].drag) {\r\n                self.clicks.pop();\r\n            }\r\n\r\n            if (self.curMode === \"mark\") {\r\n                self.clicks.push({ x: self.pt.x, y: self.pt.y, drag: dragging, size: self.lineSizeMarker, color: self.curColorMarker });\r\n            }\r\n            if (self.curMode === \"paint\") {\r\n                self.clicks.push({ x: self.pt.x, y: self.pt.y, drag: dragging, size: self.lineSize, color: self.curColor });\r\n            }\r\n\r\n            self.showUndo();\r\n            self.undoneStrokes.length = 0;\r\n            self.hideRedo();\r\n            self.context.translate(-self.pt.x, -self.pt.y);\r\n        }\r\n\r\n        function findStroke() {\r\n            var i;\r\n\r\n            self.pt = self.context.transformedPoint(self.lastX, self.lastY);\r\n\r\n            var indexOfNearest = -1;\r\n\r\n            for (i = 0; i < self.clicks.length; i++) {\r\n                if ((getDistance({ x: self.clicks[i].x, y: self.clicks[i].y }, self.pt) < self.strokeSelectionSensitivity)\r\n                    && (indexOfNearest < 0\r\n                        || getDistance({ x: self.clicks[i].x, y: self.clicks[i].y }, self.pt)\r\n                        < getDistance({ x: self.clicks[indexOfNearest].x, y: self.clicks[indexOfNearest].y }, self.pt))) {\r\n\r\n                    indexOfNearest = i;\r\n                }\r\n            }\r\n\r\n            selectStroke(indexOfNearest);\r\n        }\r\n\r\n        function selectStroke(indexOfNearest) {\r\n            var i;\r\n\r\n            if (indexOfNearest >= 0) {\r\n                self.deleteFromIndex = indexOfNearest;\r\n                self.deleteToIndex = indexOfNearest;\r\n                for (i = indexOfNearest; self.clicks[i] && i >= 0 && self.clicks[i].drag; i--) {\r\n                    self.deleteFromIndex = i - 1;\r\n                }\r\n                for (i = indexOfNearest; self.clicks[i + 1] && self.clicks[i + 1].drag; i++) {\r\n                    self.deleteToIndex = i + 1;\r\n                }\r\n                self.originalColorSelection = self.clicks[indexOfNearest].color;\r\n                var selectionColor = colorLuminance(self.clicks[indexOfNearest].color, 0.4);\r\n                for (i = self.deleteFromIndex; self.clicks[i] && i < self.deleteToIndex + 1; i++) {\r\n                    self.clicks[i].color = selectionColor;\r\n                }\r\n                self.strokeSelected = true;\r\n                redraw();\r\n            }\r\n        }\r\n\r\n        function cancelDelete() {\r\n            var i;\r\n\r\n            if (self.strokeSelected) {\r\n                for (i = self.deleteFromIndex; self.clicks[i] && i < self.deleteToIndex + 1; i++) {\r\n                    self.clicks[i].color = self.originalColorSelection;\r\n                }\r\n                self.strokeSelected = false;\r\n                redraw();\r\n            }\r\n        }\r\n\r\n        function deleteStroke() {\r\n            var i;\r\n\r\n            self.undoneStrokes.push(self.clicks.splice(self.deleteFromIndex, self.deleteToIndex - self.deleteFromIndex + 1));\r\n            for (i = 0; i < self.undoneStrokes[self.undoneStrokes.length - 1].length; i++) {\r\n                self.undoneStrokes[self.undoneStrokes.length - 1][i].color = self.originalColorSelection;\r\n            }\r\n            self.showRedo(true);\r\n            self.strokeSelected = false;\r\n            self.completedStrokesInd.length = 0;\r\n            self.lastStrokeEndInd = 0;\r\n            redraw();\r\n        }\r\n\r\n        function colorLuminance(hex, lum) {\r\n            if (hex === \"#000000\") {\r\n                return \"#848484\";\r\n            } else if (hex === \"#ffffff\") {\r\n                return \"#E6E6E6\";\r\n            } else {\r\n                // validate hex string\r\n                hex = String(hex).replace(/[^0-9a-f]/gi, '');\r\n                if (hex.length < 6) {\r\n                    hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\r\n                }\r\n                lum = lum || 0;\r\n\r\n                // convert to decimal and change luminosity\r\n                var rgb = \"#\", c, i;\r\n                for (i = 0; i < 3; i++) {\r\n                    c = parseInt(hex.substr(i * 2, 2), 16);\r\n                    c = Math.round(Math.min(Math.max(0, c + (c * lum)), 255)).toString(16);\r\n                    rgb += (\"00\" + c).substr(c.length);\r\n                }\r\n\r\n                return rgb;\r\n            }\r\n        }\r\n\r\n        function loadSvgFile(filenameToLoad) {\r\n            var xmlhttp = new XMLHttpRequest;\r\n\r\n            xmlhttp.open(\"GET\", lq.getTenantUrl('DynamicContent/File/' + filenameToLoad), false);\r\n            xmlhttp.send();\r\n\r\n            var xmlDoc = xmlhttp.responseXML;\r\n\r\n            var svgElement = xmlDoc.firstChild;\r\n            var pathElements = svgElement.childNodes;\r\n            for (var i = 0; i < pathElements.length; i++) {\r\n                var path = pathElements[i];\r\n\r\n                if (path.nodeName !== 'path') {\r\n                    continue;\r\n                }\r\n\r\n                var strokeOpacity = path.getAttribute(\"stroke-opacity\");\r\n                var pathColor = path.getAttribute(\"stroke\");\r\n                var pathColor = combineColorWithOpacityToRgba(pathColor, strokeOpacity);\r\n                var pathSize = path.getAttribute(\"stroke-width\");\r\n                var dAttArr = path.getAttribute(\"d\").replace(/([^a-z])\\s([^a-z])/gi, '$1,$2').replace(/([A-Z])\\s/gi, '$1').split(\" \");\r\n                var xyArr = dAttArr[0].slice(1).split(\",\");\r\n\r\n                self.clicks.push({ x: parseFloat(xyArr[0]), y: parseFloat(xyArr[1]), drag: false, size: pathSize, color: pathColor });\r\n\r\n                if (path.getAttribute(\"class\") === \"line\") {\r\n                    xyArr = dAttArr[1].slice(1).split(\",\");\r\n                    self.clicks.push({ x: parseFloat(xyArr[0]), y: parseFloat(xyArr[1]), drag: true, size: pathSize, color: pathColor });\r\n                } else if (path.getAttribute(\"class\") === \"curve\") {\r\n                    for (var j = 1; j < dAttArr.length; j++) {\r\n                        if (dAttArr[j].indexOf(\"Q\") === 0) {\r\n                            xyArr = dAttArr[j].slice(1).split(\",\");\r\n                            self.clicks.push({ x: parseFloat(xyArr[0]), y: parseFloat(xyArr[1]), drag: true, size: pathSize, color: pathColor });\r\n                            if (j === dAttArr.length - 1 && xyArr.length === 4) {\r\n                                self.clicks.push({ x: parseFloat(xyArr[2]), y: parseFloat(xyArr[3]), drag: true, size: pathSize, color: pathColor });\r\n                            }\r\n                        } else if (j === dAttArr.length - 1) {\r\n                            xyArr = dAttArr[j].split(\",\");\r\n                            self.clicks.push({ x: parseFloat(xyArr[0]), y: parseFloat(xyArr[1]), drag: true, size: pathSize, color: pathColor });\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (self.hasBgImage) {\r\n                var bgdata = svgElement.childNodes[0];\r\n                self.sizeAtTheTimeOfLoading = null;\r\n                if (bgdata.nodeName === 'bgData') {\r\n\r\n                    var bgWidth = bgdata.getAttribute(\"bgWidth\");\r\n                    var bgHeight = bgdata.getAttribute(\"bgHeight\");\r\n                    var cvWidth = bgdata.getAttribute(\"cvWidth\");\r\n                    var cvHeight = bgdata.getAttribute(\"cvHeight\");\r\n                    var bgLeft = bgdata.getAttribute(\"bgLeft\");\r\n                    var bgTop = bgdata.getAttribute(\"bgTop\");\r\n\r\n                    self.sizeAtTheTimeOfLoading = {\r\n                        bgWidth: bgWidth,\r\n                        bgHeight: bgHeight,\r\n                        cvWidth: cvWidth,\r\n                        cvHeight: cvHeight,\r\n                        bgLeft: bgLeft,\r\n                        bgTop: bgTop\r\n                    };\r\n                }\r\n            }\r\n\r\n            if (svgElement.getAttribute(\"class\")) {\r\n                var gridInfo = svgElement.getAttribute(\"class\");\r\n\r\n                if (gridInfo.indexOf(\"ontop=true\") >= 0 && !self.gridOnTop) {\r\n                    self.toggleOnTop();\r\n                }\r\n\r\n                self.gridSize = parseInt(gridInfo.replace(/^\\D+/g, ''));\r\n                redraw();\r\n\r\n                if (gridInfo.indexOf(\"grid=true\") >= 0) {\r\n                    self._isGridShown = true;\r\n                } else {\r\n                    self._isGridShown = false;\r\n                }\r\n            }\r\n            redraw();\r\n        }\r\n\r\n        function createSvg() {\r\n            var svgns = \"http://www.w3.org/2000/svg\";\r\n            var xlinkns = \"http://www.w3.org/1999/xlink\";\r\n\r\n            self.svg = document.createElementNS(svgns, \"svg\");\r\n\r\n            if (self.sizeAtTheTimeOfSaving && self.hasBgImage) {\r\n                var bgPositionData = document.createElementNS(svgns, 'bgData');\r\n                bgPositionData.setAttribute(\"bgWidth\", self.sizeAtTheTimeOfSaving.bgWidth);\r\n                bgPositionData.setAttribute(\"bgHeight\", self.sizeAtTheTimeOfSaving.bgHeight);\r\n                bgPositionData.setAttribute(\"cvWidth\", self.sizeAtTheTimeOfSaving.cvWidth);\r\n                bgPositionData.setAttribute(\"cvHeight\", self.sizeAtTheTimeOfSaving.cvHeight);\r\n                bgPositionData.setAttribute(\"bgLeft\", self.sizeAtTheTimeOfSaving.bgLeft);\r\n                bgPositionData.setAttribute(\"bgTop\", self.sizeAtTheTimeOfSaving.bgTop);\r\n                self.svg.appendChild(bgPositionData);\r\n            }\r\n\r\n            if (window.navigator.userAgent.indexOf(\"MSIE \") < 0) {\r\n                self.svg.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns', svgns);\r\n            }\r\n            self.svg.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xlink', xlinkns);\r\n            self.svg.setAttribute(\"width\", self.canvas.width);\r\n            self.svg.setAttribute(\"height\", self.canvas.height);\r\n\r\n            var hasDrawings = (self.clicks.length > 0);\r\n\r\n            if (hasDrawings) {\r\n                if (self.clicks[self.clicks.length - 1] && !self.clicks[self.clicks.length - 1].drag) {\r\n                    self.clicks.pop();\r\n                }\r\n\r\n                var minX = Array.minProp(self.clicks, \"x\");\r\n                var maxX = Array.maxProp(self.clicks, \"x\");\r\n                var boxWidth = getBoxDimension(minX, maxX);\r\n                var minY = Array.minProp(self.clicks, \"y\");\r\n                var maxY = Array.maxProp(self.clicks, \"y\");\r\n                var boxHeight = getBoxDimension(minY, maxY);\r\n\r\n                self.svg.setAttribute(\"class\", \"grid=\" + self._isGridShown + \", ontop=\" + self.gridOnTop + \", size=\" + self.gridSize);\r\n\r\n                if (self._isGridShown && !self.gridOnTop) {\r\n                    drawGridLayer(null, minX, minY, maxX, maxY);\r\n                    self.svg.setAttribute(\"viewBox\", (minX - 10) + \" \" + (minY - 10) + \" \" + (boxWidth + 20) + \" \" + (boxHeight + 20));\r\n                    self.svg.setAttribute(\"width\", boxWidth + 20);\r\n                    self.svg.setAttribute(\"height\", boxHeight + 20);\r\n                    drawGridToSvg();\r\n                }\r\n            }\r\n\r\n            if (self.uploadedImgBase64 && !self.backImageOnTop) {\r\n                drawImageToSvg();\r\n            }\r\n\r\n            if (hasDrawings) {\r\n                for (var i = 0; i < self.completedStrokesInd.length; i++) {\r\n\r\n                    var path = document.createElementNS(svgns, \"path\");\r\n\r\n                    var beg = self.completedStrokesInd[i].beg;\r\n                    var end = self.completedStrokesInd[i].end;\r\n                    var stroke = new Array();\r\n\r\n                    for (var j = beg; j < end + 1; j++) {\r\n                        stroke.push(self.clicks[j]);\r\n                    }\r\n\r\n                    path.setAttribute(\"stroke\", getHexColorWithoutAlpha(stroke[0].color));\r\n                    path.setAttribute(\"stroke-opacity\", getColorAlpha(stroke[0].color));\r\n                    path.setAttribute(\"stroke-width\", stroke[0].size);\r\n                    path.setAttribute(\"stroke-linejoin\", \"round\");\r\n                    path.setAttribute(\"stroke-linecap\", \"round\");\r\n                    path.setAttribute(\"fill\", \"none\");\r\n\r\n                    var dAtt = \"M \" + stroke[0].x + \" \" + stroke[0].y;\r\n\r\n                    if (stroke.length < 3) {\r\n                        dAtt += \" L \" + stroke[1].x + \" \" + stroke[1].y;\r\n                        path.setAttribute(\"class\", \"line\");\r\n                    } else {\r\n                        for (var k = 1; k < stroke.length - 2; k++) {\r\n                            dAtt += \" Q \" + stroke[k].x + \" \" + stroke[k].y + \" \" + (stroke[k].x + stroke[k + 1].x) / 2 + \" \" + (stroke[k].y + stroke[k + 1].y) / 2;\r\n                        }\r\n                        dAtt += \" Q \" + stroke[k].x + \" \" + stroke[k].y + \" \" + stroke[k + 1].x + \" \" + stroke[k + 1].y;\r\n                        path.setAttribute(\"class\", \"curve\");\r\n                    }\r\n                    path.setAttribute(\"d\", dAtt);\r\n                    self.svg.appendChild(path);\r\n                }\r\n\r\n                if (self._isGridShown && self.gridOnTop) {\r\n                    drawGridLayer(null, minX, minY, maxX, maxY);\r\n                    self.svg.setAttribute(\"viewBox\", (minX - 10) + \" \" + (minY - 10) + \" \" + (boxWidth + 20) + \" \" + (boxHeight + 20));\r\n                    self.svg.setAttribute(\"width\", boxWidth + 20);\r\n                    self.svg.setAttribute(\"height\", boxHeight + 20);\r\n                    drawGridToSvg();\r\n                }\r\n            }\r\n\r\n            if (self.uploadedImgBase64 && self.backImageOnTop) {\r\n                drawImageToSvg();\r\n            }\r\n\r\n            function drawImageToSvg() {\r\n                var image = document.createElementNS(svgns, \"image\");\r\n                image.setAttributeNS(xlinkns, \"xlink:href\", self.uploadedImgBase64);\r\n                image.setAttribute(\"x\", 0);\r\n                image.setAttribute(\"y\", 0);\r\n\r\n                var layer = getLayer('uploaded-image');\r\n                image.setAttribute(\"width\", layer.uploadedImg.width);\r\n                image.setAttribute(\"height\", layer.uploadedImg.height);\r\n\r\n                self.svg.appendChild(image);\r\n            }\r\n\r\n            function drawGridToSvg() {\r\n                for (var l = 0; l < self.gridLines.length; l++) {\r\n                    self.svg.appendChild(self.gridLines[l]);\r\n                }\r\n            }\r\n\r\n            return (new XMLSerializer).serializeToString(self.svg);\r\n        }\r\n        self.createSvg = createSvg;\r\n\r\n        function createImage(exportCrop, imageType) {\r\n            if (!exportCrop || !self.sizeAtTheTimeOfSaving)\r\n                return $canvas[0].toDataURL(imageType);\r\n\r\n            var cropX = self.sizeAtTheTimeOfSaving.bgLeft;\r\n            var cropY = self.sizeAtTheTimeOfSaving.bgTop;\r\n            var cropWidth = self.sizeAtTheTimeOfSaving.cvWidth;\r\n            var cropHeight = self.sizeAtTheTimeOfSaving.cvHeight;\r\n\r\n            var canvasHeight = $canvas[0].getBoundingClientRect().height;\r\n            var canvasWidth = $canvas[0].getBoundingClientRect().width;\r\n\r\n            // Without clamping the values the exported image is transparent in Safari\r\n            if (cropX < 0) cropX = 0;\r\n            if (cropY < 0) cropY = 0;\r\n            if (cropHeight > canvasHeight) cropHeight = canvasHeight;\r\n            if (cropWidth > canvasWidth) cropHeight = canvasWidth;\r\n\r\n            var exportCanvas = document.createElement('canvas');\r\n            var exportCanvasCtx = exportCanvas.getContext('2d');\r\n            exportCanvas.width = cropWidth;\r\n            exportCanvas.height = cropHeight;\r\n            exportCanvasCtx.drawImage($canvas[0], cropX, cropY, cropWidth, cropHeight, 0, 0, cropWidth, cropHeight);\r\n\r\n            return exportCanvas.toDataURL(imageType);\r\n        }\r\n        self.createImage = createImage;\r\n\r\n        function setValue(value) {\r\n            refreshLayers();\r\n\r\n            if (!value) {\r\n                return;\r\n            }\r\n\r\n            value = util.convertListOfKeyValuesToObject(value);\r\n            if (typeof value.Url !== \"undefined\") {\r\n                if (value.Url.length === 0) return;\r\n                self.filenameToLoad = value.Url;\r\n                loadSvgFile(self.filenameToLoad);\r\n            } else if (typeof value.url !== \"undefined\") {\r\n                if (value.url.length === 0) return;\r\n                self.filenameToLoad = value.url;\r\n                loadSvgFile(self.filenameToLoad);\r\n            } else if (value.substring(value.length - 4, value.length).toLowerCase() === '.svg') {\r\n                self.filenameToLoad = value;\r\n                loadSvgFile(self.filenameToLoad);\r\n            }\r\n        }\r\n        self.setValue = setValue;\r\n\r\n        Array.minProp = function (array, prop) {\r\n            var el = _.min(array, function (el) {\r\n                return el[prop];\r\n            });\r\n            return el[prop];\r\n        };\r\n\r\n        Array.maxProp = function (array, prop) {\r\n            var el = _.max(array, function (el) {\r\n                return el[prop];\r\n            });\r\n            return el[prop];\r\n        };\r\n\r\n        function getBoxDimension(min, max) {\r\n            if (min < 0) {\r\n                if (max < 0) {\r\n                    return Math.abs(min) - Math.abs(max);\r\n                } else {\r\n                    return Math.abs(min) + Math.abs(max);\r\n                }\r\n            } else {\r\n                return max - min;\r\n            }\r\n        }\r\n\r\n        function updateRequiredIndicator() {\r\n            if (self.clicks.length !== 0)\r\n                $($canvas[0].parentElement).addClass('hasValidValue');\r\n            else\r\n                $($canvas[0].parentElement).removeClass('hasValidValue');\r\n        }\r\n\r\n        self.updateRequiredIndicator = updateRequiredIndicator;\r\n\r\n        function redraw(bgImgSrc, isNewBgImg, isClearBg) {\r\n            if (self.context) {\r\n                clearEverything();\r\n                initializeLayers();\r\n                drawBgImageAndContent(bgImgSrc, isNewBgImg, isClearBg);\r\n                updateRequiredIndicator();\r\n            }\r\n        }\r\n\r\n        function drawBgImageAndContent(bgImgSrc, isNewBgImg, isClearBg) {\r\n            if ((!self.cachedBgImg || isNewBgImg) && bgImgSrc) {\r\n                var img = new Image();\r\n                img.onload = function() {\r\n                    drawBgImageWithSize(this);\r\n                    self.cachedBgImg = this;\r\n                    redrawContent();\r\n                };\r\n                img.src = bgImgSrc;\r\n            } else if (self.cachedBgImg && !isClearBg) {\r\n                drawBgImageWithSize(self.cachedBgImg);\r\n                redrawContent();\r\n            } else {\r\n                redrawContent();\r\n                self.cachedBgImg = null;\r\n            }\r\n        }\r\n\r\n        function clearEverything() {\r\n            var p1 = self.context.transformedPoint(0, 0);\r\n            var p2 = self.context.transformedPoint(self.canvas.width, self.canvas.height);\r\n            self.context.clearRect(p1.x, p1.y, p2.x - p1.x, p2.y - p1.y);\r\n        }\r\n\r\n        function redrawContent() {\r\n            if (self._isGridShown && !self.gridOnTop) {\r\n                drawLayerToMainContext('grid');\r\n            }\r\n\r\n            if (self.useBackImage && !self.backImageOnTop && self.backImage) {\r\n                drawLayerToMainContext('uploaded-image');\r\n            }\r\n\r\n            self.context.lineJoin = \"round\";\r\n            self.context.lineCap = \"round\";\r\n\r\n            for (i = self.lastStrokeEndInd; i < self.clicks.length; i++) {\r\n                if ((typeof self.clicks[i + 1] !== 'undefined' && self.clicks[i + 1].drag === false) || (!self.paint && i === self.clicks.length - 1)) {\r\n                    self.completedStrokesInd.push({ beg: self.lastStrokeEndInd, end: i });\r\n                    self.lastStrokeEndInd = i + 1;\r\n                }\r\n            }\r\n\r\n            for (i = 0; i < self.completedStrokesInd.length; i++) {\r\n                drawProperStroke(self.clicks.slice(self.completedStrokesInd[i].beg, self.completedStrokesInd[i].end + 1));\r\n\r\n            }\r\n\r\n            for (var i = self.lastStrokeEndInd; i < self.clicks.length; i++) {\r\n                self.context.beginPath();\r\n                if (self.clicks[i].drag && i) {\r\n                    self.context.moveTo(self.clicks[i - 1].x, self.clicks[i - 1].y);\r\n                } else {\r\n                    self.context.moveTo(self.clicks[i].x, self.clicks[i].y);\r\n                }\r\n                self.context.lineTo(self.clicks[i].x, self.clicks[i].y);\r\n                self.context.moveTo(self.clicks[i].x, self.clicks[i].y);    //for linejoin & -cap in safari\r\n                self.context.closePath();\r\n                self.context.strokeStyle = hex2rgba(self.clicks[i].color);\r\n                self.context.lineWidth = self.clicks[i].size;\r\n                self.context.stroke();\r\n            }\r\n\r\n            if (self._isGridShown && self.gridOnTop) {\r\n                drawLayerToMainContext('grid');\r\n            }\r\n\r\n            if (self.useBackImage && self.backImageOnTop && self.backImage) {\r\n                drawLayerToMainContext('uploaded-image');\r\n            }\r\n        }\r\n\r\n        function drawBgImageWithSize(img, layer) {\r\n            self.sizeAtTheTimeOfSaving = null;\r\n            var actualContext = self.context;\r\n            if (!img) {\r\n                return;\r\n            }\r\n            if (layer)\r\n                actualContext = layer.context;\r\n\r\n            if (self.sizeAtTheTimeOfLoading && self.hasBgImage) {\r\n                actualContext.drawImage(img, 0, 0,  self.sizeAtTheTimeOfLoading.bgWidth, self.sizeAtTheTimeOfLoading.bgHeight, // source rectangle\r\n                    self.sizeAtTheTimeOfLoading.bgLeft, self.sizeAtTheTimeOfLoading.bgTop, self.sizeAtTheTimeOfLoading.cvWidth, self.sizeAtTheTimeOfLoading.cvHeight);\r\n\r\n                self.sizeAtTheTimeOfSaving = self.sizeAtTheTimeOfLoading;\r\n                return;\r\n            }\r\n\r\n            if (self.disableMovingBg) {\r\n                setupNonMovinBackground($(self.canvas), img.src);\r\n                return;\r\n            }\r\n\r\n            // Stretch Image\r\n            if (self.reqDataFromParent.selectedResizeOption === 'Stretch Image') {\r\n                actualContext.drawImage(img, 0, 0,  img.width,    img.height,     // source rectangle\r\n                    0, 0, self.canvas.width, self.canvas.height);\r\n                self.sizeAtTheTimeOfSaving = {\r\n                    bgWidth: img.width,\r\n                    bgHeight: img.height,\r\n                    cvWidth: self.canvas.width,\r\n                    cvHeight: self.canvas.height,\r\n                    bgLeft: 0,\r\n                    bgTop: 0\r\n                };\r\n                return;\r\n            }\r\n            // No-Resize\r\n            else if (self.reqDataFromParent.selectedResizeOption === 'No-Resize') {\r\n                actualContext.drawImage(img, 0, 0);\r\n                self.sizeAtTheTimeOfSaving = {\r\n                    bgWidth: img.width,\r\n                    bgHeight: img.height,\r\n                    cvWidth: img.width,\r\n                    cvHeight: img.height,\r\n                    bgLeft: 0,\r\n                    bgTop: 0\r\n                };\r\n                return;\r\n            }\r\n\r\n            var condition = false;\r\n            var ratio1 = img.width/img.height;\r\n            var newWidth = ratio1 * self.canvas.height;\r\n\r\n            var ratio2 = img.height/img.width;\r\n            var newHeight = ratio2 * self.canvas.width;\r\n\r\n            if ((newHeight > self.canvas.height && self.reqDataFromParent.selectedResizeOption === 'Keep Ratio, Show Complete Image')\r\n                || (newWidth > self.canvas.width && self.reqDataFromParent.selectedResizeOption === 'fillKeepRatio')) {\r\n                condition = true;\r\n            }\r\n\r\n            // Keep Ratio, Show Complete Image OR Fill, keep ratio, depending on condition\r\n            if (condition) {\r\n                var offsetForCentering = (self.canvas.width - newWidth) / 2;\r\n\r\n                actualContext.drawImage(img, 0, 0,  img.width,    img.height,     // source rectangle\r\n                    offsetForCentering, 0, newWidth, self.canvas.height);\r\n                self.sizeAtTheTimeOfSaving = {\r\n                    bgWidth: img.width,\r\n                    bgHeight: img.height,\r\n                    cvWidth: newWidth,\r\n                    cvHeight: self.canvas.height,\r\n                    bgLeft: offsetForCentering,\r\n                    bgTop: 0\r\n                };\r\n\r\n            } else {\r\n                var offsetForCentering = (self.canvas.height - newHeight) / 2;\r\n\r\n                actualContext.drawImage(img, 0, 0,  img.width,    img.height,     // source rectangle\r\n                    0, offsetForCentering, self.canvas.width, newHeight);\r\n                self.sizeAtTheTimeOfSaving = {\r\n                    bgWidth: img.width,\r\n                    bgHeight: img.height,\r\n                    cvWidth: self.canvas.width,\r\n                    cvHeight: newHeight,\r\n                    bgLeft: 0,\r\n                    bgTop: offsetForCentering\r\n                };\r\n            }\r\n        }\r\n\r\n        function setupNonMovinBackground ($canvas, src) {\r\n            $canvas\r\n                .css('background-image', 'url(' + src + ')');\r\n\r\n            if (self.reqDataFromParent.selectedResizeOption === 'Stretch Image')\r\n                $canvas.css('background-size', '100% 100%');\r\n            else if (self.reqDataFromParent.selectedResizeOption === 'Keep Ratio, Show Complete Image')\r\n                $canvas.css({\r\n                    'background-size': 'contain',\r\n                    'background-repeat': 'no-repeat',\r\n                    'background-position': 'center center'\r\n                });\r\n            else if (self.reqDataFromParent.selectedResizeOption === 'No-Resize')\r\n                $canvas.css({\r\n                    'background-size': 'auto',\r\n                    'background-repeat': 'no-repeat'\r\n                });\r\n            else if (self.reqDataFromParent.selectedResizeOption === 'fillKeepRatio')\r\n                $canvas.css({\r\n                    'background-size': 'cover',\r\n                    'background-repeat': 'no-repeat',\r\n                    'background-position': 'center center'\r\n                });\r\n        }\r\n\r\n        var layers = [];\r\n        function createLayers() {\r\n            if (self._isGridShown) {\r\n                createGridLayer();\r\n            }\r\n\r\n            if (self.useBackImage) {\r\n                createUploadedImageLayer();\r\n            }\r\n        }\r\n\r\n        function drawLayer(layer) {\r\n            if (self.canvas) {\r\n                layer.canvas.width = self.canvas.clientWidth; //clears the current canvas\r\n                layer.canvas.height = self.canvas.clientHeight; //clears the current canvas\r\n            } else {\r\n                layer.canvas.width = layer.canvas.width;\r\n                layer.canvas.height = layer.canvas.height;\r\n            }\r\n            self.context.applyTransformTo(layer.context);\r\n            layer.draw();\r\n        }\r\n\r\n        function refreshLayers() {\r\n            _.forEach(layers, function (layer) {\r\n                if (layer.currentTimeoutId) {\r\n                    window.clearTimeout(layer.currentTimeoutId);\r\n                }\r\n                if (layer.drawInterval) {\r\n                    layer.currentTimeoutId = window.setTimeout(function () {\r\n                        drawLayer(layer);\r\n                        redraw(); //if needed for performance, layers with the same interval could be batched with a single redraw (of course this function 'refreshLayers' needs to be changed then)\r\n                    }, layer.drawInterval);\r\n                } else {\r\n                    drawLayer(layer);\r\n                }\r\n            });\r\n        }\r\n\r\n        function initializeLayers() {\r\n            _.forEach(layers, function (layer) {\r\n                if (!layer.isInitialized) {\r\n                    if (typeof layer.initialize === \"function\") {\r\n                        layer.initialize();\r\n                    }\r\n                    drawLayer(layer);\r\n                    layer.isInitialized = true;\r\n                }\r\n            });\r\n        }\r\n\r\n        function getLayer(layerName) {\r\n            return _.find(layers, function (layer) {\r\n                return layer.name == layerName;\r\n            });\r\n        }\r\n\r\n        function drawLayerToMainContext(layerName) {\r\n            var layer = getLayer(layerName);\r\n\r\n            if (!layer && layerName === 'grid') {\r\n                createGridLayer();\r\n                layer = getLayer(layerName);\r\n                drawLayer(layer);\r\n            }\r\n\r\n            self.context.save();\r\n            var transformMatrix = self.context.getTransformMatrix();\r\n            var layerMatrix = layer.context.getTransformMatrix();\r\n            var layerScale = transformMatrix.a / layerMatrix.a;\r\n            var newTranslateX = ((transformMatrix.e) - (layerMatrix.e * layerScale));\r\n            var newTranslateY = ((transformMatrix.f) - (layerMatrix.f * layerScale));\r\n\r\n            self.context.setTransform(layerScale, 0, 0, layerScale, newTranslateX, newTranslateY);\r\n            self.context.drawImage(layer.canvas, 0, 0);\r\n            self.context.restore();\r\n        }\r\n\r\n        function createLayer(layerName) {\r\n            var layerCanvas = document.createElement('canvas');\r\n            layerCanvas.height = self.canvas.height;\r\n            layerCanvas.width = self.canvas.width;\r\n\r\n            var layerContext = layerCanvas.getContext('2d');\r\n            trackTransforms(layerContext);\r\n            layerCanvas.width = layerCanvas.width;\r\n\r\n            var layer = {\r\n                name: layerName,\r\n                canvas: layerCanvas,\r\n                context: layerContext\r\n            };\r\n\r\n            layers.push(layer);\r\n\r\n            return layer;\r\n        }\r\n\r\n        function createGridLayer() {\r\n            var layer = createLayer('grid');\r\n            layer.drawInterval = 300; //could be set to 0 for fast machines (= no delay), for iPad 300 is recommended\r\n            layer.draw = function () { drawGridLayer(layer); };\r\n        }\r\n\r\n        function drawGridLayer(layer, p1x, p1y, p2x, p2y) {\r\n            var svgns = \"http://www.w3.org/2000/svg\";\r\n            self.gridLines = [];\r\n            var drawGridLinesToSvg = false;\r\n            var xSpacing;\r\n            var ySpacing;\r\n            var i, j;\r\n            var p1 = self.context.transformedPoint(0, 0);\r\n            var p2 = self.context.transformedPoint(self.canvas.width, self.canvas.height);\r\n\r\n            if (p1x && p1y && p2x && p2y) {\r\n                p1.x = p1x - 20;\r\n                p1.y = p1y - 20;\r\n                p2.x = p2x + 20;\r\n                p2.y = p2y + 20;\r\n                drawGridLinesToSvg = true;\r\n            }\r\n            var lineWidth = 1;\r\n            var lineColor = \"#000000\";\r\n            var lineOpacity = 1;\r\n\r\n            if (self.useGraphPaper == true) {\r\n                xSpacing = 3;\r\n                ySpacing = 3;\r\n                if (layer) {\r\n                    layer.context.lineWidth = 0.5;\r\n                }\r\n                lineWidth = 0.5;\r\n            } else {\r\n                xSpacing = 10;\r\n                ySpacing = 10;\r\n                if (layer) {\r\n                    layer.context.lineWidth = 1;\r\n                    layer.context.strokeStyle = hex2rgba(\"#E6E6E6\");\r\n                }\r\n                lineWidth = 1;\r\n                lineColor = \"#E6E6E6\";\r\n                lineOpacity = 1;\r\n            }\r\n\r\n            if (self.useGraphPaper == false) {\r\n                for (i = p1.x - (p1.x % (self.gridSize * xSpacing)) ; i < p2.x; i += self.gridSize * xSpacing) {     //i = edge - offset\r\n                    if (drawGridLinesToSvg) {\r\n                        var gridLine = document.createElementNS(svgns, \"line\");\r\n                        gridLine.setAttribute(\"class\", \"gridline\");\r\n                        gridLine.setAttribute(\"stroke\", lineColor);\r\n                        gridLine.setAttribute(\"stroke-width\", lineWidth);\r\n                        gridLine.setAttribute(\"stroke-opacity\", lineOpacity);\r\n                        gridLine.setAttribute(\"x1\", i);\r\n                        gridLine.setAttribute(\"y1\", p1.y);\r\n                        gridLine.setAttribute(\"x2\", i);\r\n                        gridLine.setAttribute(\"y2\", p2.y);\r\n                        self.gridLines.push(gridLine);\r\n                    } else {\r\n                        layer.context.beginPath();\r\n                        layer.context.moveTo(i, p1.y);\r\n                        layer.context.lineTo(i, p2.y);\r\n                        layer.context.closePath();\r\n                        layer.context.stroke();\r\n                    }\r\n                }\r\n                for (i = p1.y - (p1.y % (self.gridSize * ySpacing)) ; i < p2.y; i += self.gridSize * ySpacing) {\r\n                    if (drawGridLinesToSvg) {\r\n                        var gridLine = document.createElementNS(svgns, \"line\");\r\n                        gridLine.setAttribute(\"class\", \"gridline\");\r\n                        gridLine.setAttribute(\"stroke\", lineColor);\r\n                        gridLine.setAttribute(\"stroke-width\", lineWidth);\r\n                        gridLine.setAttribute(\"stroke-opacity\", lineOpacity);\r\n                        gridLine.setAttribute(\"x1\", p1.x);\r\n                        gridLine.setAttribute(\"y1\", i);\r\n                        gridLine.setAttribute(\"x2\", p2.x);\r\n                        gridLine.setAttribute(\"y2\", i);\r\n                        self.gridLines.push(gridLine);\r\n                    } else {\r\n                        layer.context.beginPath();\r\n                        layer.context.moveTo(p1.x, i);\r\n                        layer.context.lineTo(p2.x, i);\r\n                        layer.context.closePath();\r\n                        layer.context.stroke();\r\n                    }\r\n                }\r\n            } else {\r\n                for (var thickness = 1; thickness <= 3; thickness++) {\r\n                    //written with a minimum of context changes -> for performance\r\n                    switch (thickness) {\r\n                        case 1:\r\n                            if (layer) {\r\n                                layer.context.strokeStyle = hex2rgba(\"#FFE1BDBB\");\r\n                            }\r\n                            lineColor = \"#FFE1BD\";\r\n                            lineOpacity = 0.74;\r\n                            break;\r\n                        case 2:\r\n                            if (layer) {\r\n                                layer.context.strokeStyle = hex2rgba(\"#FFC682BB\");\r\n                            }\r\n                            lineColor = \"#FFC682\";\r\n                            lineOpacity = 0.74;\r\n                            break;\r\n                        case 3:\r\n                            if (layer) {\r\n                                layer.context.strokeStyle = hex2rgba(\"#D67C11BB\");\r\n                            }\r\n                            lineColor = \"#D67C11\";\r\n                            lineOpacity = 0.74;\r\n                            break;\r\n                    }\r\n\r\n                    var start = {\r\n                        x: p1.x - 80,\r\n                        y: p1.y - 80\r\n                    };\r\n                    var end = {\r\n                        x: p2.x + 80,\r\n                        y: p2.y + 80\r\n                    };\r\n\r\n                    for (i = start.x - (start.x % (self.gridSize * xSpacing)) ; i < end.x; i += self.gridSize * xSpacing) {     //i = edge - offset\r\n                        if (!(thickness == 3 && i % ((self.gridSize * 10 * xSpacing)) == 0)\r\n                            && !(thickness == 2 && i % ((self.gridSize * 10 * xSpacing) / 2) == 0)\r\n                            && !(thickness == 1)) {\r\n                            continue;\r\n                        }\r\n\r\n                        if (drawGridLinesToSvg) {\r\n                            var gridLine = document.createElementNS(svgns, \"line\");\r\n                            gridLine.setAttribute(\"class\", \"gridline\");\r\n                            gridLine.setAttribute(\"stroke\", lineColor);\r\n                            gridLine.setAttribute(\"stroke-width\", lineWidth);\r\n                            gridLine.setAttribute(\"stroke-opacity\", lineOpacity);\r\n                            gridLine.setAttribute(\"x1\", i);\r\n                            gridLine.setAttribute(\"y1\", start.y);\r\n                            gridLine.setAttribute(\"x2\", i);\r\n                            gridLine.setAttribute(\"y2\", end.y);\r\n                            self.gridLines.push(gridLine);\r\n                        } else {\r\n                            layer.context.beginPath();\r\n                            layer.context.moveTo(i, start.y);\r\n                            layer.context.lineTo(i, end.y);\r\n                            layer.context.closePath();\r\n                            layer.context.stroke();\r\n                        }\r\n                    }\r\n                    for (i = start.y - (start.y % (self.gridSize * ySpacing)) ; i < end.y; i += self.gridSize * ySpacing) {\r\n                        if (!(thickness == 3 && i % ((self.gridSize * 10 * ySpacing)) == 0)\r\n                            && !(thickness == 2 && i % ((self.gridSize * 10 * ySpacing) / 2) == 0)\r\n                            && !(thickness == 1)) {\r\n                            continue;\r\n                        }\r\n\r\n                        if (drawGridLinesToSvg) {\r\n                            var gridLine = document.createElementNS(svgns, \"line\");\r\n                            gridLine.setAttribute(\"class\", \"gridline\");\r\n                            gridLine.setAttribute(\"stroke\", lineColor);\r\n                            gridLine.setAttribute(\"stroke-width\", lineWidth);\r\n                            gridLine.setAttribute(\"stroke-opacity\", lineOpacity);\r\n                            gridLine.setAttribute(\"x1\", start.x);\r\n                            gridLine.setAttribute(\"y1\", i);\r\n                            gridLine.setAttribute(\"x2\", end.x);\r\n                            gridLine.setAttribute(\"y2\", i);\r\n                            self.gridLines.push(gridLine);\r\n                        } else {\r\n                            layer.context.beginPath();\r\n                            layer.context.moveTo(start.x, i);\r\n                            layer.context.lineTo(end.x, i);\r\n                            layer.context.closePath();\r\n                            layer.context.stroke();\r\n                        }\r\n                    }\r\n                }\r\n\r\n                if (self.useGraphPaperScale && self.graphPaperScaleParameter) {\r\n                    var scale = parseInt(self.parameters.getValue(self.graphPaperScaleParameter));\r\n                    if (layer) {\r\n                        layer.context.strokeStyle = \"#000000\";\r\n                        layer.context.lineWidth = 1;\r\n                    }\r\n\r\n                    lineColor = \"#000000\";\r\n                    lineOpacity = 1;\r\n                    lineWidth = 1;\r\n\r\n                    var offset = -(self.gridSize * 10 * xSpacing); //don't start drawing scrale from x: 0, y:0\r\n\r\n                    if (!isNaN(scale)) {\r\n                        var startX = p1.x - 10,\r\n                            startY = p1.y - 10,\r\n                            stopX = p2.x + 10,\r\n                            stopY = p2.y + 10;\r\n\r\n                        for (i = startX - (startX % (self.gridSize * xSpacing)) ; i < (stopX) ; i += self.gridSize * xSpacing) {     //i = edge - offset\r\n                            if ((i + offset) % ((self.gridSize * 10 * xSpacing) * scale) != 0) {\r\n                                continue;\r\n                            }\r\n\r\n                            for (j = startY - (startY % (self.gridSize * ySpacing)) ; j < (stopY) ; j += self.gridSize * ySpacing) {\r\n                                if ((j + offset) % ((self.gridSize * 10 * ySpacing) * scale) != 0) {\r\n                                    continue;\r\n                                }\r\n\r\n                                if (drawGridLinesToSvg) {\r\n                                    var gridLine = document.createElementNS(svgns, \"line\");\r\n                                    gridLine.setAttribute(\"class\", \"gridline\");\r\n                                    gridLine.setAttribute(\"stroke\", lineColor);\r\n                                    gridLine.setAttribute(\"stroke-width\", lineWidth);\r\n                                    gridLine.setAttribute(\"stroke-opacity\", lineOpacity);\r\n                                    gridLine.setAttribute(\"x1\", i - 5);\r\n                                    gridLine.setAttribute(\"y1\", j);\r\n                                    gridLine.setAttribute(\"x2\", i + 5);\r\n                                    gridLine.setAttribute(\"y2\", j);\r\n                                    self.gridLines.push(gridLine);\r\n\r\n                                    gridLine = document.createElementNS(svgns, \"line\");\r\n                                    gridLine.setAttribute(\"class\", \"gridline\");\r\n                                    gridLine.setAttribute(\"stroke\", lineColor);\r\n                                    gridLine.setAttribute(\"stroke-width\", lineWidth);\r\n                                    gridLine.setAttribute(\"stroke-opacity\", lineOpacity);\r\n                                    gridLine.setAttribute(\"x1\", i);\r\n                                    gridLine.setAttribute(\"y1\", j - 5);\r\n                                    gridLine.setAttribute(\"x2\", i);\r\n                                    gridLine.setAttribute(\"y2\", j + 5);\r\n                                    self.gridLines.push(gridLine);\r\n                                } else {\r\n                                    layer.context.beginPath();\r\n                                    layer.context.moveTo(i - 5, j);\r\n                                    layer.context.lineTo(i + 5, j);\r\n                                    layer.context.closePath();\r\n                                    layer.context.stroke();\r\n\r\n                                    layer.context.beginPath();\r\n                                    layer.context.moveTo(i, j - 5);\r\n                                    layer.context.lineTo(i, j + 5);\r\n                                    layer.context.closePath();\r\n                                    layer.context.stroke();\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        function endsWith(str, suffix) {\r\n            return str.indexOf(suffix, str.length - suffix.length) !== -1;\r\n        }\r\n\r\n        function createUploadedImageLayer() {\r\n            if (!self.backImage)\r\n                return;\r\n            var layer = createLayer('uploaded-image');\r\n            layer.drawInterval = 300; //could be set to 0 for fast machines (= no delay), for iPad 300 is recommended\r\n            layer.initialize = function () {\r\n                layer.uploadedImg = new Image();\r\n                layer.uploadedImg.onload = function () {\r\n                    layer.canvas.width = layer.canvas.width; //clear canvas\r\n                    layer.draw();\r\n                    redraw();\r\n                    $.ajax(lq.getTenantUploads(self.backImage), {\r\n                        success: function (r, textStatus, jqXHR) {\r\n                            if (endsWith(self.backImage, '.svg')) {\r\n                                var data = btoa(jqXHR.responseText);\r\n                                data = 'data:image/svg+xml;base64,' + data;\r\n                                self.uploadedImgBase64 = data;\r\n                            }\r\n                        },\r\n                        mimeType: \"text/plain; charset=x-user-defined\"\r\n                    });\r\n                };\r\n                layer.uploadedImg.src = lq.getTenantUploads(self.backImage);\r\n            };\r\n            layer.draw = function () {\r\n                drawBgImageWithSize(layer.uploadedImg, layer);\r\n            };\r\n        }\r\n\r\n        function drawProperStroke(stroke) {\r\n\r\n            if (stroke.length < 3) {\r\n                self.context.beginPath();\r\n                self.context.moveTo(stroke[0].x, stroke[0].y);\r\n                self.context.lineTo(stroke[1].x, stroke[1].y);\r\n                self.context.moveTo(stroke[1].x, stroke[1].y);      //for linejoin & -cap in safari\r\n                self.context.closePath();\r\n                self.context.strokeStyle = hex2rgba(stroke[0].color);\r\n                self.context.lineWidth = stroke[0].size;\r\n                self.context.stroke();\r\n\r\n                return;\r\n            }\r\n\r\n            self.context.beginPath();\r\n            self.context.moveTo(stroke[0].x, stroke[0].y);\r\n\r\n            for (var i = 1; i < stroke.length - 2; i++) {\r\n                self.context.quadraticCurveTo(stroke[i].x, stroke[i].y, (stroke[i].x + stroke[i + 1].x) / 2, (stroke[i].y + stroke[i + 1].y) / 2);\r\n            }\r\n\r\n            self.context.quadraticCurveTo(stroke[i].x, stroke[i].y, stroke[i + 1].x, stroke[i + 1].y);      //last 2 points\r\n\r\n            self.context.strokeStyle = hex2rgba(stroke[0].color);\r\n            self.context.lineWidth = stroke[0].size;\r\n            self.context.stroke();\r\n        }\r\n\r\n        function adjustStrokeForSafari(stroke) {\r\n            var adjustment = 0.001;\r\n\r\n            for (i = 0; i < stroke.length; i++) {\r\n                if (typeof stroke[i + 1] !== 'undefined') {\r\n                    if (stroke[i].x === stroke[i + 1].x) {\r\n                        //stroke[i].x += (Math.random() / 10);\r\n                        stroke[i].x += adjustment;\r\n                    }\r\n                    if (stroke[i].y === stroke[i + 1].y) {\r\n                        //stroke[i].y += (Math.random() / 10);\r\n                        stroke[i].y += adjustment;\r\n                    }\r\n                }\r\n            }\r\n\r\n            return stroke;\r\n        }\r\n\r\n        function trackTransforms(ctx) {\r\n            var svg = document.createElementNS(\"http://www.w3.org/2000/svg\", 'svg');\r\n            var xform = svg.createSVGMatrix();\r\n\r\n            var scale = ctx.scale;\r\n            ctx.scale = function (sx, sy) {\r\n                xform = xform.scaleNonUniform(sx, sy);\r\n                return scale.call(ctx, sx, sy);\r\n            };\r\n\r\n            var translate = ctx.translate;\r\n            ctx.translate = function (dx, dy) {\r\n                xform = xform.translate(dx, dy);\r\n                return translate.call(ctx, dx, dy);\r\n            };\r\n\r\n            var pt = svg.createSVGPoint();\r\n            ctx.transformedPoint = function (x, y) {\r\n                pt.x = x;\r\n                pt.y = y;\r\n                return pt.matrixTransform(xform.inverse());\r\n            };\r\n\r\n            ctx.setXForm = function (xf) {\r\n                xform = xf;\r\n            };\r\n\r\n            ctx.resetTracking = function () {\r\n                xform = svg.createSVGMatrix();\r\n            };\r\n\r\n            ctx.applyTransformTo = function (otherCtx) {\r\n                otherCtx.setTransform(xform.a, xform.b, xform.c, xform.d, xform.e, xform.f);\r\n                if (otherCtx.setXForm) {\r\n                    otherCtx.setXForm(xform);\r\n                }\r\n            };\r\n\r\n            ctx.getTransformMatrix = function () {\r\n                return xform;\r\n            };\r\n        }\r\n\r\n        function insertStylePicker() {\r\n        var colors = new Array('#F5D870', '#EE9F39', '#DD6655', '#E76FA0'\r\n                             , '#A872D5', '#6151C8', '#2A99EA', '#0674BC'\r\n                             , '#A8D26E', '#60A55A', '#3F7451', '#304388'\r\n                             , '#FFFFFF', '#969696', '#333333', '#A47D46');\r\n\r\n            var colorIndices = new Array();\r\n            if (self.colorIndicesToAllow) {\r\n                var indices = self.colorIndicesToAllow.split(',');\r\n                _.each(indices, function (index) {\r\n                    colorIndices.push(parseInt(index.trim()));\r\n                });\r\n            }\r\n            if (colorIndices.length === 0) {\r\n                colorIndices = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);\r\n            }\r\n\r\n            var sizesMark = new Array(4, 5, 6, 7, 8, 9, 10, 12, 15, 20, 25, 30);\r\n            var sizesDraw = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 15);\r\n\r\n            self.$stylePickerContainer.find(\".sketchStylePicker\").each(function () {\r\n                var $picker = $(this);\r\n                var id = $picker.attr('id');\r\n\r\n                var sizes;\r\n                var img;\r\n\r\n                if (id === 'pickMark') {\r\n                    sizes = sizesMark;\r\n                    img = '#imgMarker';\r\n                }\r\n                else {\r\n                    sizes = sizesDraw;\r\n                    img = '#imgDraw';\r\n                }\r\n\r\n                $picker.find('.sketchStylePopup').remove();\r\n\r\n                var div = \"\";\r\n\r\n                if (id === 'pickMark') {\r\n                    div = \"<div class='sketchStylePopup sketchStylePopupMarker'>\"\r\n                        + \" <div class = 'centerBorder'></div>\"\r\n                        + \" <div class='sketchStyleThickness'>\";\r\n                } else {\r\n                    div = \"<div class='sketchStylePopup sketchStylePopupPencil'>\"\r\n                        + \" <div class = 'centerBorder'></div>\"\r\n                        + \" <div class='sketchStyleThickness'>\";\r\n                }\r\n\r\n                //SIZES\r\n                for (var i = 0; i < sizes.length; i++) {\r\n                    div += \"<input type='radio' id='size_radio\" + i + id + \"' name='radioSizes\" + id + \"' value='\" + sizes[i] + \"'\";\r\n\r\n                    if (id === 'pickDraw' && sizes[i] == self.lineSize) {\r\n                        div += \" checked\";\r\n                    } else if (id === 'pickMark' && sizes[i] == self.lineSizeMarker) {\r\n                        div += \" checked\";\r\n                    }\r\n\r\n                    div += \"><label for='size_radio\" + i + id + \"'><div class='style-thickness_\" + sizes[i] + \"'></div></label>\";\r\n                }\r\n\r\n                div += \"</div>\"\r\n                        + \"<div class='sketchStyleColors'>\";\r\n\r\n                //COLORS\r\n                for (var i = 0; i < colors.length; i++) {\r\n                    if (_.find(colorIndices, function (colorI) { return colorI == i; }) === undefined) {\r\n                        continue;\r\n                    }\r\n\r\n                    if (id === 'pickMark') { colors[i] += '99'; }\r\n                    else if (colors[i].substring(colors[i].length - 2, colors[i].length) === '99') {\r\n                        colors[i] = colors[i].substring(0, colors[i].length - 2);\r\n                    }\r\n\r\n                    div += \"<div class='colorRadio'><input type='radio' id='color_radio\" + i + id + \"' name='radioColors\" + id + \"' value='\" + colors[i] + \"'\";\r\n\r\n                    if (id === 'pickMark' && model.defaultMarkerColor) {\r\n                        if (hex2rgba(colors[i]) === model.defaultMarkerColor) {\r\n                            div += \" checked\";\r\n                        }\r\n                    } else if (id !== 'pickMark' && model.defaultPenColor) {\r\n                        if (hex2rgba(colors[i]) === model.defaultPenColor) {\r\n                            div += \" checked\";\r\n                        }\r\n                    } else {\r\n                        if (colors[i] === '#000000' || colors[i] === '#00000099') {\r\n                            div += \" checked\";\r\n                        }\r\n                    }\r\n\r\n                    div += \"><label for='color_radio\" + i + id + \"' style='background-color:\" + hex2rgba(colors[i] !== \"#FFFFFF\" ? colors[i] : \"#ECECED\") + \"'></label></div>\";\r\n                }\r\n\r\n                div += \"</div>\"\r\n                        + \"<div class='clear'></div>\"\r\n                        + \"</div>\";\r\n\r\n                $(this).append(div);\r\n\r\n                /* event to push changed radiobutton*/\r\n                /* size */\r\n                $picker.find(\"input:radio[name*='radioSizes']\").on('change',\r\n                function () {\r\n                    var selectedValue = $picker.find(\"input[type='radio'][name*='radioSizes']:checked\").val();\r\n                    var slider = $picker.find('input[name*=\"lineSize\"]');\r\n\r\n                    slider.val(selectedValue);\r\n                    slider.change();\r\n\r\n                    if (id === 'pickMark') {\r\n                        self.lineSizeMarker = selectedValue;\r\n                    } else {\r\n                        self.lineSize = selectedValue;\r\n                    }\r\n                });\r\n\r\n                /* color */\r\n                $picker.find(\"input:radio[name*='radioColors']\").on('change',\r\n                function () {\r\n                    var selectedValue = $picker.find(\"input[type='radio'][name*='radioColors']:checked\").val();\r\n                    var colorInput = $picker.find('input[id*=\"colPicker\"]');\r\n\r\n                    colorInput.val(selectedValue);\r\n                    colorInput.change();\r\n\r\n                    if (id === 'pickMark') {\r\n                        self.curColorMarker = selectedValue;\r\n                        $(self.$toolbarButtons.find(\"#\" + self.btnMarker.id)[0].contentDocument.getElementsByClassName(\"color\")).attr(\"fill\", hex2rgba(selectedValue !== \"#FFFFFF99\" ? selectedValue : \"#ECECED99\"));\r\n                    } else {\r\n                        self.curColor = selectedValue;\r\n                        $(self.$toolbarButtons.find(\"#\" + self.btnDraw.id)[0].contentDocument.getElementsByClassName(\"color\")).attr(\"fill\", hex2rgba(selectedValue !== \"#FFFFFF\" ? selectedValue : \"#ECECED\"));\r\n                    }\r\n                });\r\n\r\n                /* events to show/hide style picker */\r\n                if (id === 'pickMark') {\r\n                    self.$markerTool[0].addEventListener('markOpened', function (e) {\r\n                        if (is_touch_device() == true && e.type === 'click') { return };\r\n                        self.$markerTool.find('.sketchStylePopupMarker').closest('div[id!=' + id + '][id*=pick]').find('.sketchStylePopup').hide();\r\n                        self.$stylePickerContainer.find('.sketchStylePopupMarker').toggle();\r\n                    }, false);\r\n                    self.$markerTool.parents('table:eq(0)').parent().on('mousedown touchstart', function (e) {\r\n                        if (!e.target.isSameNode(self.$markerTool[0]))\r\n                            self.$stylePickerContainer.find('.sketchStylePopupMarker').hide();\r\n                    }).find('.sketchStylePickerMarker').on('mousedown touchstart', function (e) { e.stopPropagation(); });\r\n                } else {\r\n                    self.$penTool[0].addEventListener('penOpened', function (e) {\r\n                        if (is_touch_device() == true && e.type === 'click') { return };\r\n                        self.$penTool.find('.sketchStylePopupPencil').closest('div[id!=' + id + '][id*=pick]').find('.sketchStylePopup').hide();\r\n                        self.$stylePickerContainer.find('.sketchStylePopupPencil').toggle();\r\n                    }, false);\r\n                    self.$penTool.parents('table:eq(0)').parent().on('mousedown touchstart', function (e) {\r\n                        if (!e.target.isSameNode(self.$penTool[0]))\r\n                            self.$stylePickerContainer.find('.sketchStylePopupPencil').hide();\r\n                    }).find('.sketchStylePickerPencil').on('mousedown touchstart', function (e) { e.stopPropagation(); });\r\n                }\r\n            });\r\n        };\r\n\r\n        function hex2rgba(hexStr) {\r\n            if (typeof hexStr === 'undefined') { return; };\r\n\r\n            if (hexStr.substr(0, 3) === 'rgb') {\r\n                return hexStr;\r\n            }\r\n\r\n            if (hexStr.length == 7) {\r\n                hexStr += 'ff';\r\n            }\r\n\r\n            var hex = parseInt(hexStr.substring(1, 7), 16);\r\n            var r = (hex & 0xff0000) >> 16;\r\n            var g = (hex & 0x00ff00) >> 8;\r\n            var b = hex & 0x0000ff;\r\n\r\n            var hex = parseInt(hexStr.substring(7), 16);\r\n            var a = hex & 0xff;\r\n\r\n            var rgba = \"rgba(\" + r + \", \" + g + \", \" + b + \", \" + (a / 255) + \")\";\r\n\r\n            return rgba;\r\n        }\r\n\r\n        function getColorAlpha(color) {\r\n            if (typeof color === 'undefined') { return 0; };\r\n\r\n            if (color.substr(0, 4) === 'rgba') {\r\n                return parseFloat(color.split(',')[3].replace(')', ''));\r\n            } else if (color.substr(0, 3) === 'rgb') {\r\n                return 1;\r\n            }\r\n\r\n            if (color.length === 7) {\r\n                return 1;\r\n            }\r\n\r\n            var hex = parseInt(color.substring(7), 16);\r\n            var a = hex & 0xff;\r\n            return (a / 255);\r\n        }\r\n\r\n        function getHexColorWithoutAlpha(color) {\r\n            if (typeof color === 'undefined') { return; };\r\n\r\n            if (color.substr(0, 3) === 'rgb') {\r\n                color = color.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\r\n                return (color && color.length === 4) ? \"#\" +\r\n                    (\"0\" + parseInt(color[1], 10).toString(16)).slice(-2) +\r\n                    (\"0\" + parseInt(color[2], 10).toString(16)).slice(-2) +\r\n                    (\"0\" + parseInt(color[3], 10).toString(16)).slice(-2) : '';\r\n            }\r\n\r\n            return '#' + color.substring(1, 7);\r\n        }\r\n\r\n        function combineColorWithOpacityToRgba(color, opacity) {\r\n            if (color.substr(0, 1) === '#') {\r\n                color = hex2rgba(color);\r\n            }\r\n\r\n            if (opacity == undefined) {\r\n                return color;\r\n            }\r\n\r\n            var colorParts = color.split(',');\r\n            var r = parseInt(colorParts[0].replace('rgba(', ''));\r\n            var g = parseInt(colorParts[1]);\r\n            var b = parseInt(colorParts[2]);\r\n            return \"rgba(\" + r + \",\" + g + \",\" + b + \",\" + opacity + \")\";\r\n        }\r\n\r\n        /*credit: http://stackoverflow.com/questions/4817029/whats-the-best-way-to-detect-a-touch-screen-device-using-javascript\r\n            fixed: http://stackoverflow.com/questions/4817029/whats-the-best-way-to-detect-a-touch-screen-device-using-javascript#comment18446405_4819886\r\n        */\r\n\r\n        function is_touch_device() {\r\n            return 'ontouchstart' in window || !!(window.navigator.msMaxTouchPoints);\r\n        };\r\n\r\n        return self;\r\n    }\r\n\r\n    return CanvasMorph;\r\n});\n","define('drops/sketchPad/sketchPad',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'drops/sketchPad/canvasMorph',\r\n    'lq/util',\r\n    'lq/dynamicContentImage',\r\n    'lq/required'\r\n], function ($, Drop, style, CanvasMorph, util, dynamicContentImage, Required) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            selectedResizeOption: 'Stretch Image',\r\n            defaultMarkerColor: 'rgba(51, 51, 51, 0.6)',\r\n            defaultPenColor: 'rgba(51, 51, 51, 1)',\r\n            showUndoRedo: true,\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded'\r\n            },\r\n            disableZooming: false,\r\n            enablePinchMove: false,\r\n            disableMovingBg: false,\r\n            exportType: 'sketchpad',\r\n            exportCrop: false\r\n        }\r\n    };\r\n\r\n    function SketchPad(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n        var self = this;\r\n\r\n        self.$toolbar = $('<table />');\r\n        self.$toolbar.css({\r\n            width: 'auto'\r\n        });\r\n\r\n        self.$canvas = $('<canvas />');\r\n        self.$canvas.addClass('boxToBorderSize');\r\n        self.$canvas.css({\r\n            width: (self.data.size.x) + 'px',\r\n            height: (self.data.size.y - 90) + 'px',\r\n            zIndex: self.data.zIndex,\r\n            position: 'relative'\r\n        });\r\n        self.$stylePickerContainer = $('<div id=\"stylePickerContainer\" />').css({\r\n            position: 'absolute',\r\n            top: '77px',\r\n            left: '3px',\r\n            zIndex: self.data.zIndex + 1\r\n        });\r\n\r\n        style.renderStyles(self, null, self.$canvas);\r\n        self.$toolbar.appendTo(self.$element);\r\n        self.$stylePickerContainer.appendTo(self.$element);\r\n        self.$canvas.appendTo(self.$element);\r\n    };\r\n\r\n    Drop.extend(SketchPad, Drop);\r\n\r\n    SketchPad.typeName = 'SketchPad';\r\n\r\n    SketchPad.prototype.onResizeOptions = [\r\n        { key: 'Stretch Image', value: 'Stretch Image' },\r\n        { key: 'No-Resize', value: 'No-Resize' },\r\n        { key: 'Keep Ratio, Show Complete Image', value: 'Keep Ratio, Show Complete Image' },\r\n        { key: 'fillKeepRatio', value: 'Fill, keep ratio' }\r\n    ];\r\n\r\n    SketchPad.prototype.renderStyles = function () {\r\n        style.renderStyles(this, null, this.$canvas);\r\n        this.$canvas.css('padding-top', '55px');\r\n    };\r\n\r\n    SketchPad.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n        this.piping.required.apply(this);\r\n        Required.prototype.addRemoveRequiredIndicator(this);\r\n    };\r\n\r\n    SketchPad.prototype.postRender = function () {\r\n        var self = this;\r\n        //setTimeout solves render exception in chrome\r\n        setTimeout(function () {\r\n            var selectedResizeOption = self.data.selectedResizeOption;\r\n            var isClearEventEnabled = self.isEventEnabled('clearClicked');\r\n            var triggerClearEventFunction = function () {\r\n                self.triggerEventIfEnabled('clearClicked');\r\n            };\r\n            var isOnReleaseEnabled = self.isEventEnabled('onRelease');\r\n            var triggerOnReleaseEventFunction = function () {\r\n                self.triggerEventIfEnabled('onRelease');\r\n            };\r\n            var isOnUndoEventEnabled = self.isEventEnabled('onUndo');\r\n            var triggerOnUndoEventFunction = function () {\r\n                self.triggerEventIfEnabled('onUndo');\r\n            };\r\n            var isOnRedoEventEnabled = self.isEventEnabled('onRedo');\r\n            var triggerOnRedoEventFunction = function () {\r\n                self.triggerEventIfEnabled('onRedo');\r\n            };\r\n\r\n            self.canvasMorph = new CanvasMorph(\r\n                self.data,\r\n                self.$canvas,\r\n                self.$toolbar,\r\n                self.$stylePickerContainer,\r\n                self.piping.parameters,\r\n                {\r\n                    selectedResizeOption: selectedResizeOption,\r\n                    isClearEventEnabled: isClearEventEnabled,\r\n                    triggerClearEventFunction: triggerClearEventFunction,\r\n                    isOnReleaseEnabled: isOnReleaseEnabled,\r\n                    triggerOnReleaseEventFunction: triggerOnReleaseEventFunction,\r\n                    isOnUndoEventEnabled: isOnUndoEventEnabled,\r\n                    triggerOnUndoEventFunction: triggerOnUndoEventFunction,\r\n                    isOnRedoEventEnabled: isOnRedoEventEnabled,\r\n                    triggerOnRedoEventFunction: triggerOnRedoEventFunction\r\n                },\r\n                self.piping.$actionWrapper\r\n                );\r\n\r\n            self.canvasMorph.buildCanvas();\r\n\r\n            setTimeout(function () { // We have to wait till the toolbar gets fully rendered\r\n                self.adjustCanvasSize();\r\n            }, 101);\r\n        }, 0);\r\n    };\r\n\r\n    SketchPad.prototype.clearValue = function () {\r\n        var self = this;\r\n        // because the creating of canvasMorph is in a setTimeout as well\r\n        setTimeout(function () {\r\n            self.canvasMorph.setValue();\r\n            self.canvasMorph.updateRequiredIndicator();\r\n        }, 0);\r\n    };\r\n\r\n    SketchPad.prototype.setValue = function (update) {\r\n        var self = this;\r\n        // because the creating of canvasMorph is in a setTimeout as well\r\n        setTimeout(function () {\r\n            self.canvasMorph.setValue(update.value);\r\n            self.canvasMorph.updateRequiredIndicator();\r\n        }, 0);\r\n    };\r\n\r\n    SketchPad.prototype.getValue = function () {\r\n        var svg = this.canvasMorph.createSvg();\r\n        return 'data:image/svg+xml;base64,' + btoa(svg);\r\n    };\r\n\r\n    SketchPad.prototype.getFile = function () {\r\n        return this.data.exportType === 'sketchpad'\r\n            ? this.getValue()\r\n            : this.canvasMorph.createImage(this.data.exportCrop, 'image/png');\r\n    };\r\n\r\n    SketchPad.prototype.hasValue = function () {\r\n        if (this.canvasMorph.clicks.length !== 0)\r\n            return true;\r\n        else\r\n            return false;\r\n    };\r\n\r\n    SketchPad.prototype.clearBackground = function () {\r\n        // redraw(img, isNewBgImg, isClearBg)\r\n        this.canvasMorph.redraw(null, true, true);\r\n        this.canvasMorph.hasBgImage = false;\r\n    };\r\n\r\n    SketchPad.prototype.updateImage = function(src, alt) {\r\n        // redraw(img, isNewBgImg, isClearBg)\r\n        this.canvasMorph.redraw(src, true);\r\n        this.canvasMorph.hasBgImage = true;\r\n    };\r\n\r\n    SketchPad.prototype.getPathFromSrcString = function (src) {\r\n        return dynamicContentImage.getPath({\r\n            imageName: src,\r\n            useThumbnail: false,\r\n            resizeOption: this.data.selectedResizeOption,\r\n            size: this.data.size\r\n        });\r\n    };\r\n\r\n    SketchPad.prototype.licquidMethod_setBackgroundImage = function (args) {\r\n        var value = util.convertListOfKeyValuesToObject(args.document);\r\n\r\n        if (!value) {\r\n            this.clearBackground();\r\n        } else if ($.type(value) === 'string') {\r\n            var srcPath = this.getPathFromSrcString(value);\r\n            this.updateImage(srcPath, '');\r\n        } else {\r\n            var url = args.document.url || args.document.Url;\r\n\r\n            if (url) {\r\n                var documentPath = this.getPathFromSrcString(url);\r\n\r\n                if (documentPath)\r\n                    this.updateImage(documentPath, args.document.filename || args.document.Filename);\r\n                else\r\n                    this.clearBackground();\r\n            }\r\n        }\r\n    };\r\n\r\n    SketchPad.prototype.licquidMethod_clearDrawing = function () {\r\n        this.canvasMorph.clearDrawing();\r\n        this.canvasMorph.setValue();\r\n        this.canvasMorph.redraw();\r\n    };\r\n\r\n    SketchPad.prototype.postWindowResize = function () {\r\n        if (this.canvasMorph && this.designData) {\r\n            this.adjustCanvasSize();\r\n        }\r\n    };\r\n\r\n    SketchPad.prototype.adjustCanvasSize = function () {\r\n        var borderLeft = parseFloat(this.$canvas.css('border-left-width'));\r\n        var borderTop = parseFloat(this.$canvas.css('border-top-width'));\r\n        var borderRight = parseFloat(this.$canvas.css('border-right-width'));\r\n        var borderBottom = parseFloat(this.$canvas.css('border-bottom-width'));\r\n\r\n        var dropWidth = this.$element.width() - (borderLeft ? borderLeft : 0) - (borderRight ? borderRight : 0);\r\n        var dropHeight = this.$element.height() - (borderTop ? borderTop : 0) - (borderBottom ? borderBottom : 0);\r\n\r\n        var toolbarHeight = this.$toolbar.height();\r\n\r\n        if (dropWidth < 1 || dropHeight - toolbarHeight < 1) {\r\n            this.$toolbar.width(54);\r\n            this.canvasMorph.resizerRedraw(1, 1);\r\n        } else {\r\n            this.$toolbar.width(dropWidth);\r\n            this.canvasMorph.resizerRedraw(dropWidth, dropHeight - toolbarHeight);\r\n        }\r\n    };\r\n\r\n    return SketchPad;\r\n});\n","/*! nouislider - 10.0.0 - 2017-05-28 14:52:48 */\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('nouislider',[], 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\tvar VERSION = '10.0.0';\r\n\r\n\r\n\tfunction isValidFormatter ( entry ) {\r\n\t\treturn typeof entry === 'object' && typeof entry.to === 'function' && typeof entry.from === 'function';\r\n\t}\r\n\r\n\tfunction removeElement ( el ) {\r\n\t\tel.parentElement.removeChild(el);\r\n\t}\r\n\r\n\t// Bindable version\r\n\tfunction preventDefault ( e ) {\r\n\t\te.preventDefault();\r\n\t}\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, orientation ) {\r\n\r\n\t\tvar rect = elem.getBoundingClientRect();\r\n\t\tvar doc = elem.ownerDocument;\r\n\t\tvar docElem = doc.documentElement;\r\n\t\tvar pageOffset = getPageOffset(doc);\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 orientation ? (rect.top + pageOffset.y - docElem.clientTop) : (rect.left + pageOffset.x - docElem.clientLeft);\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\tif (duration > 0) {\r\n\t\taddClass(element, className);\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tremoveClass(element, className);\r\n\t\t\t}, duration);\r\n\t\t}\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\t// Note that an input array is returned by reference!\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\tnumStr = String(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 ( doc ) {\r\n\r\n\t\tvar supportPageOffset = window.pageXOffset !== undefined;\r\n\t\tvar isCSS1Compat = ((doc.compatMode || \"\") === \"CSS1Compat\");\r\n\t\tvar x = supportPageOffset ? window.pageXOffset : isCSS1Compat ? doc.documentElement.scrollLeft : doc.body.scrollLeft;\r\n\t\tvar y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? doc.documentElement.scrollTop : doc.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\t// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\r\n\t// Issue #785\r\n\tfunction getSupportsPassive ( ) {\r\n\r\n\t\tvar supportsPassive = false;\r\n\r\n\t\ttry {\r\n\r\n\t\t\tvar opts = Object.defineProperty({}, 'passive', {\r\n\t\t\t\tget: function() {\r\n\t\t\t\t\tsupportsPassive = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\twindow.addEventListener('test', null, opts);\r\n\r\n\t\t} catch (e) {}\r\n\r\n\t\treturn supportsPassive;\r\n\t}\r\n\r\n\tfunction getSupportsTouchActionNone ( ) {\r\n\t\treturn window.CSS && CSS.supports && CSS.supports('touch-action', 'none');\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 (\" + VERSION + \"): '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 (\" + VERSION + \"): '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\r\n\t\tthat.xHighestCompleteStep.push(0);\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\r\n\t\tvar totalSteps = (that.xVal[i+1] - that.xVal[i]) / that.xNumSteps[i];\r\n\t\tvar highestStep = Math.ceil(Number(totalSteps.toFixed(3)) - 1);\r\n\t\tvar step = that.xVal[i] + (that.xNumSteps[i] * highestStep);\r\n\r\n\t\tthat.xHighestCompleteStep[i] = step;\r\n\t}\r\n\r\n\r\n// Interface\r\n\r\n\tfunction Spectrum ( entry, snap, 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\t\tthis.xHighestCompleteStep = [];\r\n\r\n\t\tthis.snap = snap;\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\r\n\t\tvar step = this.xNumSteps[0];\r\n\r\n\t\tif ( step && ((value / step) % 1) !== 0 ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'limit', 'margin' and 'padding' must be divisible by step.\");\r\n\t\t}\r\n\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\treturn value;\r\n\t};\r\n\r\n\tSpectrum.prototype.fromStepping = function ( value ) {\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\tvalue = getStep(this.xPct, this.xSteps, this.snap, value );\r\n\r\n\t\treturn value;\r\n\t};\r\n\r\n\tSpectrum.prototype.getNearbySteps = function ( value ) {\r\n\r\n\t\tvar j = getJ(value, this.xPct);\r\n\r\n\t\treturn {\r\n\t\t\tstepBefore: { startValue: this.xVal[j-2], step: this.xNumSteps[j-2], highestStep: this.xHighestCompleteStep[j-2] },\r\n\t\t\tthisStep: { startValue: this.xVal[j-1], step: this.xNumSteps[j-1], highestStep: this.xHighestCompleteStep[j-1] },\r\n\t\t\tstepAfter: { startValue: this.xVal[j-0], step: this.xNumSteps[j-0], highestStep: this.xHighestCompleteStep[j-0] }\r\n\t\t};\r\n\t};\r\n\r\n\tSpectrum.prototype.countStepDecimals = function () {\r\n\t\tvar stepDecimals = this.xNumSteps.map(countDecimals);\r\n\t\treturn Math.max.apply(null, stepDecimals);\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 validateFormat ( entry ) {\r\n\r\n\t\t// Any object with a to and from method is supported.\r\n\t\tif ( isValidFormatter(entry) ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'format' requires 'to' and 'from' methods.\");\r\n\t}\r\n\r\n\tfunction testStep ( parsed, entry ) {\r\n\r\n\t\tif ( !isNumeric( entry ) ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): '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 (\" + VERSION + \"): '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 (\" + VERSION + \"): 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 (\" + VERSION + \"): 'range' 'min' and 'max' cannot be equal.\");\r\n\t\t}\r\n\r\n\t\tparsed.spectrum = new Spectrum(entry, parsed.snap, 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 ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): '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 (\" + VERSION + \"): '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 (\" + VERSION + \"): '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 (\" + VERSION + \"): '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\tvar connect = [false];\r\n\t\tvar i;\r\n\r\n\t\t// Map legacy options\r\n\t\tif ( entry === 'lower' ) {\r\n\t\t\tentry = [true, false];\r\n\t\t}\r\n\r\n\t\telse if ( entry === 'upper' ) {\r\n\t\t\tentry = [false, true];\r\n\t\t}\r\n\r\n\t\t// Handle boolean options\r\n\t\tif ( entry === true || entry === false ) {\r\n\r\n\t\t\tfor ( i = 1; i < parsed.handles; i++ ) {\r\n\t\t\t\tconnect.push(entry);\r\n\t\t\t}\r\n\r\n\t\t\tconnect.push(false);\r\n\t\t}\r\n\r\n\t\t// Reject invalid input\r\n\t\telse if ( !Array.isArray( entry ) || !entry.length || entry.length !== parsed.handles + 1 ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'connect' option doesn't match handle count.\");\r\n\t\t}\r\n\r\n\t\telse {\r\n\t\t\tconnect = entry;\r\n\t\t}\r\n\r\n\t\tparsed.connect = connect;\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 (\" + VERSION + \"): '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 (\" + VERSION + \"): '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 (\" + VERSION + \"): '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 (\" + VERSION + \"): '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 || parsed.handles < 2 ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'limit' option is only supported on linear sliders with 2 or more handles.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testPadding ( parsed, entry ) {\r\n\r\n\t\tif ( !isNumeric(entry) ){\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'padding' option must be numeric.\");\r\n\t\t}\r\n\r\n\t\tif ( entry === 0 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tparsed.padding = parsed.spectrum.getMargin(entry);\r\n\r\n\t\tif ( !parsed.padding ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'padding' option is only supported on linear sliders.\");\r\n\t\t}\r\n\r\n\t\tif ( parsed.padding < 0 ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'padding' option must be a positive number.\");\r\n\t\t}\r\n\r\n\t\tif ( parsed.padding >= 50 ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'padding' option must be less than half the range.\");\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\tbreak;\r\n\t\t  default:\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): '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 (\" + VERSION + \"): '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\tvar drag = entry.indexOf('drag') >= 0;\r\n\t\tvar fixed = entry.indexOf('fixed') >= 0;\r\n\t\tvar snap = entry.indexOf('snap') >= 0;\r\n\t\tvar hover = entry.indexOf('hover') >= 0;\r\n\r\n\t\tif ( fixed ) {\r\n\r\n\t\t\tif ( parsed.handles !== 2 ) {\r\n\t\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'fixed' behaviour must be used with 2 handles\");\r\n\t\t\t}\r\n\r\n\t\t\t// Use margin to enforce fixed state\r\n\t\t\ttestMargin(parsed, parsed.start[1] - parsed.start[0]);\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\tif ( entry === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\telse if ( entry === true ) {\r\n\r\n\t\t\tparsed.tooltips = [];\r\n\r\n\t\t\tfor ( var i = 0; i < parsed.handles; i++ ) {\r\n\t\t\t\tparsed.tooltips.push(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\telse {\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 (\" + VERSION + \"): 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 (\" + VERSION + \"): '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 testAriaFormat ( parsed, entry ) {\r\n\t\tparsed.ariaFormat = entry;\r\n\t\tvalidateFormat(entry);\r\n\t}\r\n\r\n\tfunction testFormat ( parsed, entry ) {\r\n\t\tparsed.format = entry;\r\n\t\tvalidateFormat(entry);\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 (\" + VERSION + \"): '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 (\" + VERSION + \"): '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\tfunction testUseRaf ( parsed, entry ) {\r\n\t\tif ( entry === true || entry === false ) {\r\n\t\t\tparsed.useRequestAnimationFrame = entry;\r\n\t\t} else {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'useRequestAnimationFrame' option should be true (default) or false.\");\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\tpadding: 0,\r\n\t\t\tanimate: true,\r\n\t\t\tanimationDuration: 300,\r\n\t\t\tariaFormat: defaultFormatter,\r\n\t\t\tformat: defaultFormatter\r\n\t\t};\r\n\r\n\t\t// Tests are executed in the order they are presented here.\r\n\t\tvar tests = {\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'padding': { r: false, t: testPadding },\r\n\t\t\t'behaviour': { r: true, t: testBehaviour },\r\n\t\t\t'ariaFormat': { r: false, t: testAriaFormat },\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\t'useRequestAnimationFrame': { r: false, t: testUseRaf }\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\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\t'useRequestAnimationFrame': true\r\n\t\t};\r\n\r\n\t\t// AriaFormat defaults to regular format, if any.\r\n\t\tif ( options.format && !options.ariaFormat ) {\r\n\t\t\toptions.ariaFormat = options.format;\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 (\" + VERSION + \"): '\" + 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\tvar styles = [['left', 'top'], ['right', 'bottom']];\r\n\r\n\t\t// Pre-define the styles.\r\n\t\tparsed.style = styles[parsed.dir][parsed.ort];\r\n\t\tparsed.styleOposite = styles[parsed.dir?0:1][parsed.ort];\r\n\r\n\t\treturn parsed;\r\n\t}\r\n\r\n\r\nfunction closure ( target, options, originalOptions ){\r\n\r\n\tvar actions = getActions();\r\n\tvar supportsTouchActionNone = getSupportsTouchActionNone();\r\n\tvar supportsPassive = supportsTouchActionNone && getSupportsPassive();\r\n\r\n\t// All variables local to 'closure' are prefixed with 'scope_'\r\n\tvar scope_Target = target;\r\n\tvar scope_Locations = [];\r\n\tvar scope_Base;\r\n\tvar scope_Handles;\r\n\tvar scope_HandleNumbers = [];\r\n\tvar scope_ActiveHandle = false;\r\n\tvar scope_Connects;\r\n\tvar scope_Spectrum = options.spectrum;\r\n\tvar scope_Values = [];\r\n\tvar scope_Events = {};\r\n\tvar scope_Self;\r\n\tvar scope_Pips;\r\n\tvar scope_Listeners = null;\r\n\tvar scope_Document = target.ownerDocument;\r\n\tvar scope_DocumentElement = scope_Document.documentElement;\r\n\tvar scope_Body = scope_Document.body;\r\n\r\n\r\n\t// Creates a node, adds it to target, returns the new node.\r\n\tfunction addNodeTo ( target, className ) {\r\n\r\n\t\tvar div = scope_Document.createElement('div');\r\n\r\n\t\tif ( className ) {\r\n\t\t\taddClass(div, className);\r\n\t\t}\r\n\r\n\t\ttarget.appendChild(div);\r\n\r\n\t\treturn div;\r\n\t}\r\n\r\n\t// Append a origin to the base\r\n\tfunction addOrigin ( base, handleNumber ) {\r\n\r\n\t\tvar origin = addNodeTo(base, options.cssClasses.origin);\r\n\t\tvar handle = addNodeTo(origin, options.cssClasses.handle);\r\n\r\n\t\thandle.setAttribute('data-handle', handleNumber);\r\n\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex\r\n\t\t// 0 = focusable and reachable\r\n\t\thandle.setAttribute('tabindex', '0');\r\n\t\thandle.setAttribute('role', 'slider');\r\n\t\thandle.setAttribute('aria-orientation', options.ort ? 'vertical' : 'horizontal');\r\n\r\n\t\tif ( handleNumber === 0 ) {\r\n\t\t\taddClass(handle, options.cssClasses.handleLower);\r\n\t\t}\r\n\r\n\t\telse if ( handleNumber === options.handles - 1 ) {\r\n\t\t\taddClass(handle, options.cssClasses.handleUpper);\r\n\t\t}\r\n\r\n\t\treturn origin;\r\n\t}\r\n\r\n\t// Insert nodes for connect elements\r\n\tfunction addConnect ( base, add ) {\r\n\r\n\t\tif ( !add ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn addNodeTo(base, options.cssClasses.connect);\r\n\t}\r\n\r\n\t// Add handles to the slider base.\r\n\tfunction addElements ( connectOptions, base ) {\r\n\r\n\t\tscope_Handles = [];\r\n\t\tscope_Connects = [];\r\n\r\n\t\tscope_Connects.push(addConnect(base, connectOptions[0]));\r\n\r\n\t\t// [::::O====O====O====]\r\n\t\t// connectOptions = [0, 1, 1, 1]\r\n\r\n\t\tfor ( var i = 0; i < options.handles; i++ ) {\r\n\t\t\t// Keep a list of all added handles.\r\n\t\t\tscope_Handles.push(addOrigin(base, i));\r\n\t\t\tscope_HandleNumbers[i] = i;\r\n\t\t\tscope_Connects.push(addConnect(base, connectOptions[i + 1]));\r\n\t\t}\r\n\t}\r\n\r\n\t// Initialize a single slider.\r\n\tfunction addSlider ( 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 ( options.dir === 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 ( options.ort === 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\tscope_Base = addNodeTo(target, options.cssClasses.base);\r\n\t}\r\n\r\n\r\n\tfunction addTooltip ( handle, handleNumber ) {\r\n\r\n\t\tif ( !options.tooltips[handleNumber] ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn addNodeTo(handle.firstChild, options.cssClasses.tooltip);\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\t// Tooltips are added with options.tooltips in original order.\r\n\t\tvar tips = scope_Handles.map(addTooltip);\r\n\r\n\t\tbindEvent('update', function(values, handleNumber, unencoded) {\r\n\r\n\t\t\tif ( !tips[handleNumber] ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar formattedValue = values[handleNumber];\r\n\r\n\t\t\tif ( options.tooltips[handleNumber] !== true ) {\r\n\t\t\t\tformattedValue = options.tooltips[handleNumber].to(unencoded[handleNumber]);\r\n\t\t\t}\r\n\r\n\t\t\ttips[handleNumber].innerHTML = formattedValue;\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tfunction aria ( ) {\r\n\r\n\t\tbindEvent('update', function ( values, handleNumber, unencoded, tap, positions ) {\r\n\r\n\t\t\t// Update Aria Values for all handles, as a change in one changes min and max values for the next.\r\n\t\t\tscope_HandleNumbers.forEach(function( handleNumber ){\r\n\r\n\t\t\t\tvar handle = scope_Handles[handleNumber];\r\n\r\n\t\t\t\tvar min = checkHandlePosition(scope_Locations, handleNumber, 0, true, true, true);\r\n\t\t\t\tvar max = checkHandlePosition(scope_Locations, handleNumber, 100, true, true, true);\r\n\r\n\t\t\t\tvar now = positions[handleNumber];\r\n\t\t\t\tvar text = options.ariaFormat.to(unencoded[handleNumber]);\r\n\r\n\t\t\t\thandle.children[0].setAttribute('aria-valuemin', min.toFixed(1));\r\n\t\t\t\thandle.children[0].setAttribute('aria-valuemax', max.toFixed(1));\r\n\t\t\t\thandle.children[0].setAttribute('aria-valuenow', now.toFixed(1));\r\n\t\t\t\thandle.children[0].setAttribute('aria-valuetext', text);\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\tif ( !values ) {\r\n\t\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'values' required for mode 'count'.\");\r\n\t\t\t}\r\n\r\n\t\t\t// Divide 0 - 100 in 'count' parts.\r\n\t\t\tvar spread = ( 100 / (values - 1) );\r\n\t\t\tvar v;\r\n\t\t\tvar i = 0;\r\n\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 indexes = {};\r\n\t\tvar firstInRange = scope_Spectrum.xVal[0];\r\n\t\tvar lastInRange = scope_Spectrum.xVal[scope_Spectrum.xVal.length-1];\r\n\t\tvar ignoreFirst = false;\r\n\t\tvar ignoreLast = false;\r\n\t\tvar prevPct = 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;\r\n\t\t\tvar i;\r\n\t\t\tvar q;\r\n\t\t\tvar low = current;\r\n\t\t\tvar high = group[index+1];\r\n\t\t\tvar newPct;\r\n\t\t\tvar pctDifference;\r\n\t\t\tvar pctPos;\r\n\t\t\tvar type;\r\n\t\t\tvar steps;\r\n\t\t\tvar realSteps;\r\n\t\t\tvar 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// Make sure step isn't 0, which would cause an infinite loop (#654)\r\n\t\t\tstep = Math.max(step, 0.0000001);\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\treturn indexes;\r\n\t}\r\n\r\n\tfunction addMarking ( spread, filterFunc, formatter ) {\r\n\r\n\t\tvar element = scope_Document.createElement('div');\r\n\r\n\t\tvar valueSizeClasses = [\r\n\t\t\toptions.cssClasses.valueNormal,\r\n\t\t\toptions.cssClasses.valueLarge,\r\n\t\t\toptions.cssClasses.valueSub\r\n\t\t];\r\n\t\tvar markerSizeClasses = [\r\n\t\t\toptions.cssClasses.markerNormal,\r\n\t\t\toptions.cssClasses.markerLarge,\r\n\t\t\toptions.cssClasses.markerSub\r\n\t\t];\r\n\t\tvar valueOrientationClasses = [\r\n\t\t\toptions.cssClasses.valueHorizontal,\r\n\t\t\toptions.cssClasses.valueVertical\r\n\t\t];\r\n\t\tvar markerOrientationClasses = [\r\n\t\t\toptions.cssClasses.markerHorizontal,\r\n\t\t\toptions.cssClasses.markerVertical\r\n\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\tvar orientationClasses = a ? valueOrientationClasses : markerOrientationClasses;\r\n\t\t\tvar sizeClasses = 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 addSpread ( offset, values ){\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\tvar node = addNodeTo(element, false);\r\n\t\t\t\tnode.className = getClasses(values[1], options.cssClasses.marker);\r\n\t\t\t\tnode.style[options.style] = offset + '%';\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\tnode = addNodeTo(element, false);\r\n\t\t\t\tnode.className = getClasses(values[1], options.cssClasses.value);\r\n\t\t\t\tnode.style[options.style] = offset + '%';\r\n\t\t\t\tnode.innerText = formatter.to(values[0]);\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\treturn element;\r\n\t}\r\n\r\n\tfunction removePips ( ) {\r\n\t\tif ( scope_Pips ) {\r\n\t\t\tremoveElement(scope_Pips);\r\n\t\t\tscope_Pips = null;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction pips ( grid ) {\r\n\r\n\t\t// Fix #669\r\n\t\tremovePips();\r\n\r\n\t\tvar mode = grid.mode;\r\n\t\tvar density = grid.density || 1;\r\n\t\tvar filter = grid.filter || false;\r\n\t\tvar values = grid.values || false;\r\n\t\tvar stepped = grid.stepped || false;\r\n\t\tvar group = getGroup( mode, values, stepped );\r\n\t\tvar spread = generateSpread( density, mode, group );\r\n\t\tvar format = grid.format || {\r\n\t\t\tto: Math.round\r\n\t\t};\r\n\r\n\t\tscope_Pips = 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\r\n\t\treturn scope_Pips;\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// Handler for attaching events trough a proxy.\r\n\tfunction attachEvent ( 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// Handle reject of multitouch\r\n\t\t\tif ( !e ) {\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 ( 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\t// 'supportsPassive' is only true if a browser also supports touch-action: none in CSS.\r\n\t\t\t// iOS safari does not, so it doesn't get to benefit from passive scrolling. iOS does support\r\n\t\t\t// touch-action: manipulation, but that allows panning, which breaks\r\n\t\t\t// sliders after zooming/on non-responsive pages.\r\n\t\t\t// See: https://bugs.webkit.org/show_bug.cgi?id=133112\r\n\t\t\tif ( !supportsPassive ) {\r\n\t\t\t\te.preventDefault();\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\t\t};\r\n\r\n\t\tvar 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, supportsPassive ? { passive: true } : 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// Provide a clean event with standardized offset values.\r\n\tfunction fixEvent ( e, pageOffset ) {\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\tvar mouse = e.type.indexOf('mouse') === 0;\r\n\t\tvar pointer = e.type.indexOf('pointer') === 0;\r\n\r\n\t\tvar x;\r\n\t\tvar y;\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\r\n\t\t\t// Fix bug when user touches with two or more fingers on mobile devices.\r\n\t\t\t// It's useful when you have two or more sliders on one page,\r\n\t\t\t// that can be touched simultaneously.\r\n\t\t\t// #649, #663, #668\r\n\t\t\tif ( e.touches.length > 1 ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\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(scope_Document);\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\te.pageOffset = pageOffset;\r\n\t\te.points = [x, y];\r\n\t\te.cursor = mouse || pointer; // Fix #435\r\n\r\n\t\treturn e;\r\n\t}\r\n\r\n\t// Translate a coordinate in the document to a percentage on the slider\r\n\tfunction calcPointToPercentage ( calcPoint ) {\r\n\t\tvar location = calcPoint - offset(scope_Base, options.ort);\r\n\t\tvar proposal = ( location * 100 ) / baseSize();\r\n\t\treturn options.dir ? 100 - proposal : proposal;\r\n\t}\r\n\r\n\t// Find handle closest to a certain percentage on the slider\r\n\tfunction getClosestHandle ( proposal ) {\r\n\r\n\t\tvar closest = 100;\r\n\t\tvar handleNumber = false;\r\n\r\n\t\tscope_Handles.forEach(function(handle, index){\r\n\r\n\t\t\t// Disabled handles are ignored\r\n\t\t\tif ( handle.hasAttribute('disabled') ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar pos = Math.abs(scope_Locations[index] - proposal);\r\n\r\n\t\t\tif ( pos < closest ) {\r\n\t\t\t\thandleNumber = index;\r\n\t\t\t\tclosest = pos;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn handleNumber;\r\n\t}\r\n\r\n\t// Moves handle(s) by a percentage\r\n\t// (bool, % to move, [% where handle started, ...], [index in scope_Handles, ...])\r\n\tfunction moveHandles ( upward, proposal, locations, handleNumbers ) {\r\n\r\n\t\tvar proposals = locations.slice();\r\n\r\n\t\tvar b = [!upward, upward];\r\n\t\tvar f = [upward, !upward];\r\n\r\n\t\t// Copy handleNumbers so we don't change the dataset\r\n\t\thandleNumbers = handleNumbers.slice();\r\n\r\n\t\t// Check to see which handle is 'leading'.\r\n\t\t// If that one can't move the second can't either.\r\n\t\tif ( upward ) {\r\n\t\t\thandleNumbers.reverse();\r\n\t\t}\r\n\r\n\t\t// Step 1: get the maximum percentage that any of the handles can move\r\n\t\tif ( handleNumbers.length > 1 ) {\r\n\r\n\t\t\thandleNumbers.forEach(function(handleNumber, o) {\r\n\r\n\t\t\t\tvar to = checkHandlePosition(proposals, handleNumber, proposals[handleNumber] + proposal, b[o], f[o], false);\r\n\r\n\t\t\t\t// Stop if one of the handles can't move.\r\n\t\t\t\tif ( to === false ) {\r\n\t\t\t\t\tproposal = 0;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tproposal = to - proposals[handleNumber];\r\n\t\t\t\t\tproposals[handleNumber] = to;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// If using one handle, check backward AND forward\r\n\t\telse {\r\n\t\t\tb = f = [true];\r\n\t\t}\r\n\r\n\t\tvar state = false;\r\n\r\n\t\t// Step 2: Try to set the handles with the found percentage\r\n\t\thandleNumbers.forEach(function(handleNumber, o) {\r\n\t\t\tstate = setHandle(handleNumber, locations[handleNumber] + proposal, b[o], f[o]) || state;\r\n\t\t});\r\n\r\n\t\t// Step 3: If a handle moved, fire events\r\n\t\tif ( state ) {\r\n\t\t\thandleNumbers.forEach(function(handleNumber){\r\n\t\t\t\tfireEvent('update', handleNumber);\r\n\t\t\t\tfireEvent('slide', handleNumber);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t// External event handling\r\n\tfunction fireEvent ( eventName, handleNumber, tap ) {\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 ( eventName === 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\tscope_Values.map(options.format.to),\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\tscope_Values.slice(),\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.slice()\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\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\teventEnd (event, data);\r\n\t\t}\r\n\t}\r\n\r\n\t// Handle movement on document for handle and range drag.\r\n\tfunction eventMove ( 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 eventEnd(event, data);\r\n\t\t}\r\n\r\n\t\t// Check if we are moving up or down\r\n\t\tvar movement = (options.dir ? -1 : 1) * (event.calcPoint - data.startCalcPoint);\r\n\r\n\t\t// Convert the movement into a percentage of the slider width/height\r\n\t\tvar proposal = (movement * 100) / data.baseSize;\r\n\r\n\t\tmoveHandles(movement > 0, proposal, data.locations, data.handleNumbers);\r\n\t}\r\n\r\n\t// Unbind move events on document, call callbacks.\r\n\tfunction eventEnd ( event, data ) {\r\n\r\n\t\t// The handle is no longer active, so remove the class.\r\n\t\tif ( scope_ActiveHandle ) {\r\n\t\t\tremoveClass(scope_ActiveHandle, options.cssClasses.active);\r\n\t\t\tscope_ActiveHandle = false;\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\tscope_Body.style.cursor = '';\r\n\t\t\tscope_Body.removeEventListener('selectstart', preventDefault);\r\n\t\t}\r\n\r\n\t\t// Unbind the move and end events, which are added on 'start'.\r\n\t\tscope_Listeners.forEach(function( c ) {\r\n\t\t\tscope_DocumentElement.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\tsetZindex();\r\n\r\n\t\tdata.handleNumbers.forEach(function(handleNumber){\r\n\t\t\tfireEvent('change', handleNumber);\r\n\t\t\tfireEvent('set', handleNumber);\r\n\t\t\tfireEvent('end', handleNumber);\r\n\t\t});\r\n\t}\r\n\r\n\t// Bind move events on document.\r\n\tfunction eventStart ( event, data ) {\r\n\r\n\t\tif ( data.handleNumbers.length === 1 ) {\r\n\r\n\t\t\tvar handle = scope_Handles[data.handleNumbers[0]];\r\n\r\n\t\t\t// Ignore 'disabled' handles\r\n\t\t\tif ( handle.hasAttribute('disabled') ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Mark the handle as 'active' so it can be styled.\r\n\t\t\tscope_ActiveHandle = handle.children[0];\r\n\t\t\taddClass(scope_ActiveHandle, options.cssClasses.active);\r\n\t\t}\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 = attachEvent(actions.move, scope_DocumentElement, eventMove, {\r\n\t\t\tstartCalcPoint: event.calcPoint,\r\n\t\t\tbaseSize: baseSize(),\r\n\t\t\tpageOffset: event.pageOffset,\r\n\t\t\thandleNumbers: data.handleNumbers,\r\n\t\t\tbuttonsProperty: event.buttons,\r\n\t\t\tlocations: scope_Locations.slice()\r\n\t\t});\r\n\r\n\t\tvar endEvent = attachEvent(actions.end, scope_DocumentElement, eventEnd, {\r\n\t\t\thandleNumbers: data.handleNumbers\r\n\t\t});\r\n\r\n\t\tvar outEvent = attachEvent(\"mouseout\", scope_DocumentElement, documentLeave, {\r\n\t\t\thandleNumbers: data.handleNumbers\r\n\t\t});\r\n\r\n\t\tscope_Listeners = 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\tscope_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\t// Prevent text selection when dragging the handles.\r\n\t\t\t// In noUiSlider <= 9.2.0, this was handled by calling preventDefault on mouse/touch start/move,\r\n\t\t\t// which is scroll blocking. The selectstart event is supported by FireFox starting from version 52,\r\n\t\t\t// meaning the only holdout is iOS Safari. This doesn't matter: text selection isn't triggered there.\r\n\t\t\t// The 'cursor' flag is false.\r\n\t\t\t// See: http://caniuse.com/#search=selectstart\r\n\t\t\tscope_Body.addEventListener('selectstart', preventDefault, false);\r\n\t\t}\r\n\r\n\t\tdata.handleNumbers.forEach(function(handleNumber){\r\n\t\t\tfireEvent('start', handleNumber);\r\n\t\t});\r\n\t}\r\n\r\n\t// Move closest handle to tapped location.\r\n\tfunction eventTap ( event ) {\r\n\r\n\t\t// The tap event shouldn't propagate up\r\n\t\tevent.stopPropagation();\r\n\r\n\t\tvar proposal = calcPointToPercentage(event.calcPoint);\r\n\t\tvar handleNumber = getClosestHandle(proposal);\r\n\r\n\t\t// Tackle the case that all handles are 'disabled'.\r\n\t\tif ( handleNumber === false ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Flag the slider as it is now in a transitional state.\r\n\t\t// Transition takes a configurable amount of ms (default 300). Re-enable the slider after that.\r\n\t\tif ( !options.events.snap ) {\r\n\t\t\taddClassFor(scope_Target, options.cssClasses.tap, options.animationDuration);\r\n\t\t}\r\n\r\n\t\tsetHandle(handleNumber, proposal, true, true);\r\n\r\n\t\tsetZindex();\r\n\r\n\t\tfireEvent('slide', handleNumber, true);\r\n\t\tfireEvent('update', handleNumber, true);\r\n\t\tfireEvent('change', handleNumber, true);\r\n\t\tfireEvent('set', handleNumber, true);\r\n\r\n\t\tif ( options.events.snap ) {\r\n\t\t\teventStart(event, { handleNumbers: [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 eventHover ( event ) {\r\n\r\n\t\tvar proposal = calcPointToPercentage(event.calcPoint);\r\n\r\n\t\tvar to = scope_Spectrum.getStep(proposal);\r\n\t\tvar value = 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 bindSliderEvents ( 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\tattachEvent ( actions.start, handle.children[0], eventStart, {\r\n\t\t\t\t\thandleNumbers: [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\t\t\tattachEvent (actions.start, scope_Base, eventTap, {});\r\n\t\t}\r\n\r\n\t\t// Fire hover events\r\n\t\tif ( behaviour.hover ) {\r\n\t\t\tattachEvent (actions.move, scope_Base, eventHover, { 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\tscope_Connects.forEach(function( connect, index ){\r\n\r\n\t\t\t\tif ( connect === false || index === 0 || index === scope_Connects.length - 1 ) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar handleBefore = scope_Handles[index - 1];\r\n\t\t\t\tvar handleAfter = scope_Handles[index];\r\n\t\t\t\tvar eventHolders = [connect];\r\n\r\n\t\t\t\taddClass(connect, options.cssClasses.draggable);\r\n\r\n\t\t\t\t// When the range is fixed, the entire range can\r\n\t\t\t\t// be dragged by the handles. The handle in the first\r\n\t\t\t\t// origin will propagate the start event upward,\r\n\t\t\t\t// but it needs to be bound manually on the other.\r\n\t\t\t\tif ( behaviour.fixed ) {\r\n\t\t\t\t\teventHolders.push(handleBefore.children[0]);\r\n\t\t\t\t\teventHolders.push(handleAfter.children[0]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\teventHolders.forEach(function( eventHolder ) {\r\n\t\t\t\t\tattachEvent ( actions.start, eventHolder, eventStart, {\r\n\t\t\t\t\t\thandles: [handleBefore, handleAfter],\r\n\t\t\t\t\t\thandleNumbers: [index - 1, index]\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\r\n\t// Split out the handle positioning logic so the Move event can use it, too\r\n\tfunction checkHandlePosition ( reference, handleNumber, to, lookBackward, lookForward, getValue ) {\r\n\r\n\t\t// For sliders with multiple handles, 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\r\n\t\t\tif ( lookBackward && handleNumber > 0 ) {\r\n\t\t\t\tto = Math.max(to, reference[handleNumber - 1] + options.margin);\r\n\t\t\t}\r\n\r\n\t\t\tif ( lookForward && handleNumber < scope_Handles.length - 1 ) {\r\n\t\t\t\tto = Math.min(to, reference[handleNumber + 1] - options.margin);\r\n\t\t\t}\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.\r\n\t\tif ( scope_Handles.length > 1 && options.limit ) {\r\n\r\n\t\t\tif ( lookBackward && handleNumber > 0 ) {\r\n\t\t\t\tto = Math.min(to, reference[handleNumber - 1] + options.limit);\r\n\t\t\t}\r\n\r\n\t\t\tif ( lookForward && handleNumber < scope_Handles.length - 1 ) {\r\n\t\t\t\tto = Math.max(to, reference[handleNumber + 1] - options.limit);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// The padding option keeps the handles a certain distance from the\r\n\t\t// edges of the slider. Padding must be > 0.\r\n\t\tif ( options.padding ) {\r\n\r\n\t\t\tif ( handleNumber === 0 ) {\r\n\t\t\t\tto = Math.max(to, options.padding);\r\n\t\t\t}\r\n\r\n\t\t\tif ( handleNumber === scope_Handles.length - 1 ) {\r\n\t\t\t\tto = Math.min(to, 100 - options.padding);\r\n\t\t\t}\r\n\t\t}\r\n\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 === reference[handleNumber] && !getValue ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn to;\r\n\t}\r\n\r\n\tfunction toPct ( pct ) {\r\n\t\treturn pct + '%';\r\n\t}\r\n\r\n\t// Updates scope_Locations and scope_Values, updates visual state\r\n\tfunction updateHandlePosition ( handleNumber, to ) {\r\n\r\n\t\t// Update locations.\r\n\t\tscope_Locations[handleNumber] = to;\r\n\r\n\t\t// Convert the value to the slider stepping/range.\r\n\t\tscope_Values[handleNumber] = scope_Spectrum.fromStepping(to);\r\n\r\n\t\t// Called synchronously or on the next animationFrame\r\n\t\tvar stateUpdate = function() {\r\n\t\t\tscope_Handles[handleNumber].style[options.style] = toPct(to);\r\n\t\t\tupdateConnect(handleNumber);\r\n\t\t\tupdateConnect(handleNumber + 1);\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 performace improvements.\r\n\t\t// Option to disable is useful for unit tests, and single-step debugging.\r\n\t\tif ( window.requestAnimationFrame && options.useRequestAnimationFrame ) {\r\n\t\t\twindow.requestAnimationFrame(stateUpdate);\r\n\t\t} else {\r\n\t\t\tstateUpdate();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setZindex ( ) {\r\n\r\n\t\tscope_HandleNumbers.forEach(function(handleNumber){\r\n\t\t\t// Handles before the slider middle are stacked later = higher,\r\n\t\t\t// Handles after the middle later is lower\r\n\t\t\t// [[7] [8] .......... | .......... [5] [4]\r\n\t\t\tvar dir = (scope_Locations[handleNumber] > 50 ? -1 : 1);\r\n\t\t\tvar zIndex = 3 + (scope_Handles.length + (dir * handleNumber));\r\n\t\t\tscope_Handles[handleNumber].childNodes[0].style.zIndex = zIndex;\r\n\t\t});\r\n\t}\r\n\r\n\t// Test suggested values and apply margin, step.\r\n\tfunction setHandle ( handleNumber, to, lookBackward, lookForward ) {\r\n\r\n\t\tto = checkHandlePosition(scope_Locations, handleNumber, to, lookBackward, lookForward, false);\r\n\r\n\t\tif ( to === false ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tupdateHandlePosition(handleNumber, to);\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t// Updates style attribute for connect nodes\r\n\tfunction updateConnect ( index ) {\r\n\r\n\t\t// Skip connects set to false\r\n\t\tif ( !scope_Connects[index] ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar l = 0;\r\n\t\tvar h = 100;\r\n\r\n\t\tif ( index !== 0 ) {\r\n\t\t\tl = scope_Locations[index - 1];\r\n\t\t}\r\n\r\n\t\tif ( index !== scope_Connects.length - 1 ) {\r\n\t\t\th = scope_Locations[index];\r\n\t\t}\r\n\r\n\t\tscope_Connects[index].style[options.style] = toPct(l);\r\n\t\tscope_Connects[index].style[options.styleOposite] = toPct(100 - h);\r\n\t}\r\n\r\n\t// ...\r\n\tfunction setValue ( to, handleNumber ) {\r\n\r\n\t\t// Setting with null indicates an 'ignore'.\r\n\t\t// Inputting 'false' is invalid.\r\n\t\tif ( to === null || to === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If a formatted number was passed, attemt to decode it.\r\n\t\tif ( typeof to === 'number' ) {\r\n\t\t\tto = String(to);\r\n\t\t}\r\n\r\n\t\tto = options.format.from(to);\r\n\r\n\t\t// Request an update for all links if the value was invalid.\r\n\t\t// Do so too if setting the handle fails.\r\n\t\tif ( to !== false && !isNaN(to) ) {\r\n\t\t\tsetHandle(handleNumber, scope_Spectrum.toStepping(to), false, false);\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 values = asArray(input);\r\n\t\tvar isInit = scope_Locations[0] === undefined;\r\n\r\n\t\t// Event fires by default\r\n\t\tfireSetEvent = (fireSetEvent === undefined ? true : !!fireSetEvent);\r\n\r\n\t\tvalues.forEach(setValue);\r\n\r\n\t\t// Animation is optional.\r\n\t\t// Make sure the initial values were set before using animated placement.\r\n\t\tif ( options.animate && !isInit ) {\r\n\t\t\taddClassFor(scope_Target, options.cssClasses.tap, options.animationDuration);\r\n\t\t}\r\n\r\n\t\t// Now that all base values are set, apply constraints\r\n\t\tscope_HandleNumbers.forEach(function(handleNumber){\r\n\t\t\tsetHandle(handleNumber, scope_Locations[handleNumber], true, false);\r\n\t\t});\r\n\r\n\t\tsetZindex();\r\n\r\n\t\tscope_HandleNumbers.forEach(function(handleNumber){\r\n\r\n\t\t\tfireEvent('update', handleNumber);\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[handleNumber] !== null && fireSetEvent ) {\r\n\t\t\t\tfireEvent('set', handleNumber);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// Reset slider to initial values\r\n\tfunction valueReset ( fireSetEvent ) {\r\n\t\tvalueSet(options.start, fireSetEvent);\r\n\t}\r\n\r\n\t// Get the slider value.\r\n\tfunction valueGet ( ) {\r\n\r\n\t\tvar values = scope_Values.map(options.format.to);\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\treturn values;\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\treturn scope_Locations.map(function( location, index ){\r\n\r\n\t\t\tvar nearbySteps = scope_Spectrum.getNearbySteps( location );\r\n\t\t\tvar value = scope_Values[index];\r\n\t\t\tvar increment = nearbySteps.thisStep.step;\r\n\t\t\tvar decrement = null;\r\n\r\n\t\t\t// If the next value in this step moves into the next step,\r\n\t\t\t// the increment is the start of the next step - the current value\r\n\t\t\tif ( increment !== false ) {\r\n\t\t\t\tif ( value + increment > nearbySteps.stepAfter.startValue ) {\r\n\t\t\t\t\tincrement = nearbySteps.stepAfter.startValue - value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// If the value is beyond the starting point\r\n\t\t\tif ( value > nearbySteps.thisStep.startValue ) {\r\n\t\t\t\tdecrement = nearbySteps.thisStep.step;\r\n\t\t\t}\r\n\r\n\t\t\telse if ( nearbySteps.stepBefore.step === false ) {\r\n\t\t\t\tdecrement = false;\r\n\t\t\t}\r\n\r\n\t\t\t// If a handle is at the start of a step, it always steps back into the previous step first\r\n\t\t\telse {\r\n\t\t\t\tdecrement = value - nearbySteps.stepBefore.highestStep;\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// Now, if at the slider edges, there is not in/decrement\r\n\t\t\tif ( location === 100 ) {\r\n\t\t\t\tincrement = null;\r\n\t\t\t}\r\n\r\n\t\t\telse if ( location === 0 ) {\r\n\t\t\t\tdecrement = null;\r\n\t\t\t}\r\n\r\n\t\t\t// As per #391, the comparison for the decrement step can have some rounding issues.\r\n\t\t\tvar stepDecimals = scope_Spectrum.countStepDecimals();\r\n\r\n\t\t\t// Round per #391\r\n\t\t\tif ( increment !== null && increment !== false ) {\r\n\t\t\t\tincrement = Number(increment.toFixed(stepDecimals));\r\n\t\t\t}\r\n\r\n\t\t\tif ( decrement !== null && decrement !== false ) {\r\n\t\t\t\tdecrement = Number(decrement.toFixed(stepDecimals));\r\n\t\t\t}\r\n\r\n\t\t\treturn [decrement, increment];\r\n\t\t});\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\tvar namespace = 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, padding, 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.\r\n\t\t// If 'snap' and 'step' are not passed, they should remain unchanged.\r\n\t\tvar v = valueGet();\r\n\r\n\t\tvar updateAble = ['margin', 'limit', 'padding', 'range', 'animate', 'snap', 'step', 'format'];\r\n\r\n\t\t// Only change options that we're actually passed to update.\r\n\t\tupdateAble.forEach(function(name){\r\n\t\t\tif ( optionsToUpdate[name] !== undefined ) {\r\n\t\t\t\toriginalOptions[name] = optionsToUpdate[name];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar newOptions = testOptions(originalOptions);\r\n\r\n\t\t// Load new options into the slider state\r\n\t\tupdateAble.forEach(function(name){\r\n\t\t\tif ( optionsToUpdate[name] !== undefined ) {\r\n\t\t\t\toptions[name] = newOptions[name];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tscope_Spectrum = newOptions.spectrum;\r\n\r\n\t\t// Limit, margin and padding depend on the spectrum but are stored outside of it. (#677)\r\n\t\toptions.margin = newOptions.margin;\r\n\t\toptions.limit = newOptions.limit;\r\n\t\toptions.padding = newOptions.padding;\r\n\r\n\t\t// Update pips, removes existing.\r\n\t\tif ( options.pips ) {\r\n\t\t\tpips(options.pips);\r\n\t\t}\r\n\r\n\t\t// Invalidate the current positioning so valueSet forces an update.\r\n\t\tscope_Locations = [];\r\n\t\tvalueSet(optionsToUpdate.start || v, fireSetEvent);\r\n\t}\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(\"noUiSlider (\" + VERSION + \"): 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 connect elements.\r\n\taddSlider(scope_Target);\r\n\taddElements(options.connect, scope_Base);\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\treset: valueReset,\r\n\t\t// Exposed for unit testing, don't use this in your application.\r\n\t\t__moveHandles: function(a, b, c) { moveHandles(a, b, scope_Locations, c); },\r\n\t\toptions: originalOptions, // Issue #600, #678\r\n\t\tupdateOptions: updateOptions,\r\n\t\ttarget: scope_Target, // Issue #597\r\n\t\tremovePips: removePips,\r\n\t\tpips: pips // Issue #594\r\n\t};\r\n\r\n\t// Attach user events.\r\n\tbindSliderEvents(options.events);\r\n\r\n\t// Use the public value method to set the start values.\r\n\tvalueSet(options.start);\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\taria();\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 || !target.nodeName ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): create requires a single element, got: \" + target);\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\tvar api = closure( target, options, originalOptions );\r\n\r\n\t\ttarget.noUiSlider = api;\r\n\r\n\t\treturn api;\r\n\t}\r\n\r\n\t// Use an object instead of a function for future expansibility;\r\n\treturn {\r\n\t\tversion: VERSION,\r\n\t\tcreate: initialize\r\n\t};\r\n\r\n}));\n","define('drops/slider/slider',[\r\n    'jquery',\r\n    'nouislider',\r\n    'lq/drop',\r\n    'lq/style'\r\n], function ($, noUiSlider, Drop, Style) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            initialValue: 5,\r\n            minValue: 0,\r\n            maxValue: 10,\r\n            stepSize: 1,\r\n            orientation: 'horizontal',\r\n            handleSize: {\r\n                width: 15,\r\n                height: 15\r\n            },\r\n            barSize: 8\r\n        }\r\n    };\r\n\r\n    function Slider(options) {\r\n        Drop.call(this, $('<div class=\"slider-drop\"/>'), defaults, options);\r\n\r\n        this.$slider = $('<div/>')\r\n            .appendTo(this.$element);\r\n\r\n        this.createSlider();\r\n        this.renderStyles();\r\n    }\r\n\r\n    Drop.extend(Slider, Drop);\r\n\r\n    Slider.typeName = 'Slider';\r\n    \r\n    Slider.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n    };\r\n\r\n    Slider.prototype.createSlider = function () {\r\n        // note: the library throws an error when passing in boxed numbers...\r\n        noUiSlider.create(this.$slider[0], {\r\n            start: Number(this.data.initialValue).valueOf(),\r\n            step: Number(this.data.stepSize).valueOf(),\r\n            orientation: this.data.orientation,\r\n            range: {\r\n                'min': Number(this.data.minValue).valueOf(),\r\n                'max': Number(this.data.maxValue).valueOf()\r\n            }\r\n        });\r\n\r\n        var self = this;\r\n        var changedEvent = this.getEventDataFor('changed');\r\n        if (changedEvent.enabled) {\r\n            this.$slider[0].noUiSlider.on('change', function () {\r\n                var value = self.$slider[0].noUiSlider.get();\r\n                self.triggerEvent(changedEvent.raisedEventName, value);\r\n            });\r\n        }\r\n\r\n        var slideEvent = this.getEventDataFor('slide');\r\n        if (slideEvent.enabled) {\r\n            this.$slider[0].noUiSlider.on('slide', function () {\r\n                var value = self.$slider[0].noUiSlider.get();\r\n                self.triggerEvent(slideEvent.raisedEventName, value);\r\n            });\r\n        }\r\n\r\n        if (this.data.readOnly)\r\n            this.$slider[0].setAttribute('disabled', true);\r\n    };\r\n\r\n    Slider.prototype.renderStyles = function () {\r\n        Style.renderStyles(this);\r\n\r\n        var $handle = this.$slider.find('.noUi-handle');\r\n\r\n        Style.renderStyles(this, null, $handle, this.data.styles, 'sliderHandle');\r\n        Style.renderStyles(this, null, this.$slider.find('.noUi-base'), this.data.styles, 'sliderBar');\r\n\r\n        if (this.data.orientation === 'horizontal') {\r\n            this.$slider.css({\r\n                width: '100%',\r\n                height: this.data.barSize\r\n            });\r\n\r\n            $handle.css({\r\n                width: this.data.handleSize.width,\r\n                height: this.data.handleSize.height,\r\n                top: (this.data.barSize - this.data.handleSize.height) / 2,\r\n                left: -1 * (this.data.handleSize.width / 2)\r\n            });\r\n        } else {\r\n            this.$slider.css({\r\n                width: this.data.barSize,\r\n                height: '100%'\r\n            });\r\n\r\n            $handle.css({\r\n                width: this.data.handleSize.width,\r\n                height: this.data.handleSize.height,\r\n                left: (this.data.barSize - this.data.handleSize.width) / 2,\r\n                top: -1 * (this.data.handleSize.height / 2)\r\n            });\r\n        }\r\n    };\r\n\r\n    Slider.prototype.getValue = function () {\r\n        return Number(this.$slider[0].noUiSlider.get());\r\n    };\r\n\r\n    Slider.prototype.clearValue = function () {\r\n        return this.$slider[0].noUiSlider.set(Number(this.data.initialValue).valueOf());\r\n    };\r\n\r\n    Slider.prototype.setValue = function (update) {\r\n        return this.$slider[0].noUiSlider.set(Number(update.value).valueOf());\r\n    };\r\n\r\n    return Slider;\r\n});\n","define('drops/stack/stack',[\r\n    'jquery',\r\n    'underscore',\r\n    'when',\r\n    'lq/drop',\r\n    'lq/style'\r\n], function ($, _, when, Drop, Style) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            orientation: 'vertical',\r\n            childIdsByPosition: [],\r\n            useDynamicWidth: true,\r\n            useDynamicHeight: true,\r\n            isDynamiclySizedContainer: true\r\n        }\r\n    };\r\n\r\n    var base = Drop;\r\n\r\n    var Stack = function (options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n        var self = this;\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize stacklayout has-states');\r\n\r\n        self.determineAutoLayout();\r\n\r\n        Style.renderStyles(this);\r\n    };\r\n\r\n    Drop.extend(Stack);\r\n\r\n    Stack.typeName = 'Stack';\r\n\r\n    Stack.prototype.determineAutoLayout = function() {\r\n        if (this.data.orientation === 'vertical') {\r\n            this.data.autoHeight = true;\r\n            this.data.autoWidth = false;\r\n        } else {\r\n            this.data.autoHeight = false;\r\n            this.data.autoWidth = true;\r\n        }\r\n\r\n        if (this.data.orientation === 'vertical') {\r\n            this.$element\r\n                .removeClass('horizontal')\r\n                .addClass('vertical');\r\n        } else {\r\n            this.$element\r\n                .removeClass('vertical')\r\n                .addClass('horizontal');\r\n        }\r\n    };\r\n\r\n    Stack.prototype.applyPositionForChild = function (childDrop) {\r\n        this.resetPositioningForChild(childDrop);\r\n\r\n        if (childDrop.applyRelativePositioning)\r\n            childDrop.applyRelativePositioning();\r\n\r\n        childDrop.$wrapper.css(this.getPositionCss(childDrop.data));\r\n\r\n        var sizeCss = {};\r\n\r\n        if (this.shouldStretchHorizontally() || childDrop.data.useDynamicWidth || childDrop.data.autoWidth) {\r\n            sizeCss.width = 'auto';\r\n        } else {\r\n            sizeCss.width = childDrop.data.size.x + 'px';\r\n        }\r\n\r\n        if (!childDrop.data.useDynamicHeight && !childDrop.data.autoHeight) {\r\n            sizeCss.height = childDrop.data.size.y + 'px';\r\n        } else {\r\n            sizeCss.height = 'auto';\r\n        }\r\n\r\n        childDrop.$element.css(sizeCss);\r\n    };\r\n\r\n    Stack.prototype.getChildElementForVisibility = function (childDrop) {\r\n        return childDrop.$wrapper;\r\n    };\r\n\r\n    Stack.prototype.resetPositioningForChild = function(childDrop) {\r\n        childDrop.$element.css({\r\n            left: 'auto',\r\n            right: 'auto',\r\n            top: 'auto',\r\n            bottom: 'auto',\r\n            position: 'relative'\r\n        });\r\n    };\r\n\r\n    Stack.prototype.shouldStretchHorizontally = function () {\r\n        return this.data.orientation === 'vertical'\r\n            && this.data.right !== null && this.data.right !== undefined\r\n            && this.data.left !== null && this.data.left !== undefined;\r\n    };\r\n\r\n    Stack.prototype.getPositionCss = function(data) { //Gets position-css for a childDrop\r\n        var css = {\r\n            zIndex: data.zIndex\r\n        };\r\n\r\n        if (this.data.orientation === 'vertical') {\r\n            this.applyHorizontalAlignmentCss(css, data);\r\n        } else {\r\n            this.applyVerticalAlignmentCss(css, data);\r\n        }\r\n\r\n        css.paddingLeft = 0;\r\n        css.paddingRight = 0;\r\n        css.paddingTop = 0;\r\n        css.paddingBottom = 0;\r\n\r\n        if (data.margin) {\r\n            if (data.margin.left)\r\n                css.paddingLeft = data.margin.left + \"px\";\r\n            if (data.margin.right)\r\n                css.paddingRight = data.margin.right + \"px\";\r\n            if (data.margin.top)\r\n                css.paddingTop = data.margin.top + \"px\";\r\n            if (data.margin.bottom)\r\n                css.paddingBottom = data.margin.bottom + \"px\";\r\n        }\r\n\r\n        return css;\r\n    };\r\n\r\n    Stack.prototype.applyVerticalAlignmentCss = function (css, data) {\r\n        css.verticalAlign = 'top';\r\n\r\n        if (data.stack_verticalAlignment) {\r\n            if (data.stack_verticalAlignment === \"bottom\") {\r\n                css.verticalAlign = 'bottom';\r\n            } else if (data.stack_verticalAlignment === \"center\") {\r\n                css.verticalAlign = 'middle';\r\n            }\r\n        }\r\n    };\r\n\r\n    Stack.prototype.applyHorizontalAlignmentCss = function (css, data) {\r\n        css.marginLeft = 'initial';\r\n        css.marginRight = 'initial';\r\n\r\n        if (this.shouldStretchHorizontally()) {\r\n            css.width = '100%';\r\n        } else if (data.stack_horizontalAlignment) {\r\n            if (data.stack_horizontalAlignment === \"right\") {\r\n                css.marginLeft = 'auto';\r\n            } else if (data.stack_horizontalAlignment === \"center\") {\r\n                css.marginLeft = 'auto';\r\n                css.marginRight = 'auto';\r\n            }\r\n        }\r\n    };\r\n\r\n    Stack.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n\r\n        // if the stack is the only drop in a list item => switch to relative positioning\r\n        if ((this.parent.data.type === 'ListItem' || (this.parent.data.type === 'ModalPopup' && this.parent.data.autoPosition)) && this.parent.childDrops.length === 1) {\r\n            var elementCss = {\r\n                position: 'relative',\r\n                inset: ''\r\n            };\r\n            this.data.positioning = 'relative';\r\n            this.data.position = {x: 0, y: 0};\r\n\r\n            var parentElementCss = {\r\n            };\r\n\r\n            if (this.data.useDynamicWidth) {\r\n                elementCss.width = 'auto';\r\n                parentElementCss.width = 'auto';\r\n            }\r\n\r\n            if (this.data.useDynamicHeight) {\r\n                elementCss.height = 'auto';\r\n                parentElementCss.height = 'auto';\r\n            }\r\n\r\n            this.$element.css(elementCss);\r\n            this.parent.$element.css(parentElementCss);\r\n        } else {\r\n            this.data.positioning = 'absolute';\r\n            this.applyPosition();\r\n        }\r\n    };\r\n\r\n    Stack.prototype.render = function ($element) {\r\n        return this.createAndRenderDrops($element);\r\n    };\r\n\r\n    Stack.prototype.postRender = function () {\r\n        if (this.data.centered && this.data.useDynamicWidth) {\r\n            this.applyCentering();\r\n        }\r\n    };\r\n\r\n    Stack.prototype.applyCentering = function () {\r\n        this.$element.css({\r\n            width: 'fit-content'\r\n        });\r\n    };\r\n\r\n    Stack.prototype.addDrop = function (drop) {\r\n        var $wrapper = $('<div/>')\r\n            .addClass('stack-child');\r\n\r\n        drop.$wrapper = $wrapper;\r\n        if (this.designData) {\r\n            $wrapper.css('pointer-events', 'none'); //disable pointer/mouse-events; hard to select Stack in designer otherwise\r\n            drop.$element.css('pointer-events', 'auto');\r\n        }\r\n\r\n        return base.prototype.addDrop.apply(this, arguments);\r\n    };\r\n\r\n    Stack.prototype.createRenderPromisesForChildren = function (drops) {\r\n        var self = this;\r\n        var renderPromises = [];\r\n        var repositionedDrops = [];\r\n        _.each(this.data.childIdsByPosition, function(dropId) {\r\n            var drop = _.find(drops, function(drop) { return drop.data.id === dropId; });\r\n            if (drop) {\r\n                repositionedDrops.push(drop);\r\n            }\r\n        });\r\n\r\n        //add drops that are somehow missing from the 'childIdsByPosition' array to the end of the stack\r\n        _.each(drops, function (drop) {\r\n            var foundDrop = _.find(repositionedDrops, function (repositionedDrop) { return repositionedDrop.data.id === drop.data.id; });\r\n            if (!foundDrop) {\r\n                repositionedDrops.push(drop);\r\n            }\r\n        });\r\n\r\n        _.each(repositionedDrops, function (drop) {\r\n            self.addDrop(drop);\r\n            renderPromises.push(self.createRenderPromiseForChild(drop));\r\n        });\r\n\r\n        return renderPromises;\r\n    };\r\n\r\n    Stack.prototype.createRenderPromiseForChild = function (drop) {\r\n        var self = this;\r\n\r\n        return when()\r\n            .then(function () {\r\n                if (drop.isHidden) { //parent is not yet set in constructor when calling the visibility stuff, correcting visibility here\r\n                    drop.$wrapper.addClass('drop-hidden');\r\n                    drop.$element.removeClass('drop-hidden');\r\n                }\r\n\r\n                drop.$wrapper.appendTo(self.$element);\r\n                return drop.render(drop.$wrapper)\r\n            });\r\n    };\r\n\r\n    Stack.prototype.getStates = function () {\r\n        return [\r\n            { key: 'normal', value: 'Normal' },\r\n            { key: 'hover', value: 'Hover' },\r\n        ];\r\n    };\r\n\r\n    return Stack;\r\n});\r\n\r\n\n","define('drops/taskProgress/taskProgress',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'underscore'\r\n], function ($, Drop, Style, _) {\r\n    'use strict';\r\n\r\n    var TaskProgress = function(options) {\r\n        Drop.call(this, $('<div/>'), options);\r\n        var self = this;\r\n\r\n        self.$element\r\n            .addClass('boxToBorderSize')\r\n            .addClass('taskprogress')\r\n            .addClass('taskprogress-' + (self.data.styleId ? self.data.styleId.split('/')[1] : 'default'));\r\n\r\n        self.$canvas = $('<canvas />')\r\n            .attr('height', self.data.size.y + 'px')\r\n            .attr('width', self.data.size.x + 'px')\r\n            .appendTo(self.$element);\r\n        // FIXME: crashes in IE8, no canvas\r\n        self.ctx = self.$canvas\r\n            .get(0)\r\n            .getContext('2d');\r\n    };\r\n\r\n    Drop.extend(TaskProgress, Drop);\r\n\r\n    TaskProgress.typeName = 'TaskProgress';\r\n\r\n    TaskProgress.prototype.preRender = function () {\r\n        var self = this;\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.dataSource,\r\n            function (data) {\r\n                self.update(data);\r\n            });\r\n\r\n        this.applyPosition();\r\n    };\r\n\r\n    TaskProgress.prototype.postRender = function () {\r\n        this.buildLinks();\r\n        this.drawAllLinks();\r\n\r\n        this.borderPadding = parseInt(this.$element.css('border-width'), 10);\r\n        // this is a hack for passing the line width to the drop through our stylesheet\r\n        this.lineWidth = parseInt(this.$canvas.css('line-height'), 10);\r\n    };\r\n\r\n    TaskProgress.prototype.render = function ($element) {\r\n    \treturn this.createAndRenderDrops($element);\r\n    };\r\n\r\n    TaskProgress.prototype.buildLinks = function () {\r\n        var self = this;\r\n\r\n        self.links = _.map(self.data.links, function (link) {\r\n            return {\r\n                drop1: _.find(self.pool, function (drop) {\r\n                    return drop.data.id === link.morph1;\r\n                }),\r\n                drop2: _.find(self.pool, function (drop) {\r\n                    return drop.data.id === link.morph2;\r\n                })\r\n            };\r\n        });\r\n    };\r\n\r\n    TaskProgress.prototype.clearCanvas = function () {\r\n        this.ctx.clearRect(0, 0, this.$canvas.width(), this.$canvas.height());\r\n    };\r\n\r\n    TaskProgress.prototype.drawAllLinks = function () {\r\n        var self = this;\r\n\r\n        self.clearCanvas();\r\n        \r\n        for (var i = 0; i < this.links.length; i++) {\r\n            var link = this.links[i];\r\n\r\n            if (this.checkLinkCanBuild(link))\r\n                this.drawOneLink(link.drop1, link.drop2);\r\n            else {\r\n                this.links.splice(i, 1);\r\n            }\r\n        }\r\n    };\r\n\r\n    TaskProgress.prototype.checkLinkCanBuild = function (link) {\r\n        return $.inArray(link.drop1, this.pool) != -1 && $.inArray(link.drop2, this.pool) != -1;\r\n    };\r\n\r\n    TaskProgress.prototype.drawOneLink = function (drop1, drop2) {\r\n        var point1 = {\r\n            x: drop1.data.position.x + this.borderPadding + (drop1.data.size.x / 2),\r\n            y: drop1.data.position.y + this.borderPadding + (drop1.data.size.y / 2)\r\n        };\r\n        var point2 = {\r\n            x: drop2.data.position.x + this.borderPadding + (drop2.data.size.x / 2),\r\n            y: drop2.data.position.y + this.borderPadding + (drop2.data.size.y / 2)\r\n        };\r\n\r\n        this.ctx.beginPath();\r\n\r\n        if (drop2.completionPercentage < 50) {\r\n            this.ctx.strokeStyle = drop2.$element\r\n                .find('.incomplete')\r\n                .css('background-color');\r\n        } else {\r\n            this.ctx.strokeStyle = drop2.$element\r\n                .css('background-color');\r\n        }\r\n\r\n        this.ctx.moveTo(point1.x, point1.y);\r\n        this.ctx.lineTo(point2.x, point2.y);\r\n        this.ctx.lineWidth = this.lineWidth;\r\n        this.ctx.closePath();\r\n        this.ctx.stroke();\r\n    };\r\n\r\n    TaskProgress.prototype.update = function (data) {\r\n        _.forEach(this.pool, function (task) {\r\n            var completionStatus = data.results[0][task.data.dataSourceOutput];\r\n            task.setCompletionPercentage(completionStatus);\r\n        });\r\n\r\n        this.drawAllLinks();\r\n    };\r\n\r\n    return TaskProgress;\r\n});\n","define('drops/text/text',[\r\n    'jquery',\r\n    'lq',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'lq/html',\r\n    'lq/tooltip',\r\n    'lq/onlongpress'\r\n], function ($, lq, Drop, Style, util, html, Tooltip, OnLongPress) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            text: 'New Text',\r\n            useDynamicWidth: true,\r\n            useDynamicHeight: true,\r\n            openInline: false,\r\n            scrollbarOnOverflow: false,\r\n            title: {\r\n                option: Tooltip.hardcoded\r\n            },\r\n            renderAsHtml: false,\r\n            role: 'default'\r\n        }\r\n    };\r\n\r\n    function Text(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing);\r\n\r\n        this.$element\r\n            .addClass('text-drop');\r\n\r\n        if (this.data.scrollbarOnOverflow)\r\n            this.$element.css('overflow-y', 'auto');\r\n\r\n        Style.renderStyles(this);\r\n\r\n        new OnLongPress().applyLongPressOnElement(this.$element, this);\r\n        if (!this.designData && this.isEventEnabled('onLongPress')) {\r\n            this.$element.addClass('clickable');\r\n        }\r\n        if (this.data.eventing && this.data.eventing.clicked && this.data.eventing.clicked.enabled === true) {\r\n            this.$element.addClass('clickable');\r\n        }\r\n\r\n        this.applyEventTrigger('mouseEnter', 'mouseenter');\r\n        this.applyEventTrigger('mouseLeave', 'mouseleave');\r\n\r\n        this.tooltip = new Tooltip(this, this.data.title, this.$element);\r\n    }\r\n\r\n    Drop.extend(Text, Drop);\r\n\r\n    Text.typeName = 'Text';\r\n\r\n    Text.prototype.preRender = function () {\r\n        this.rerenderText();\r\n    };\r\n\r\n    Text.prototype.rerenderText = function () {\r\n        this.$text = this.createTextElement();\r\n        this.$element.empty();\r\n        this.$element\r\n            .addClass('boxToBorderSize drop-text-container')\r\n            // WHY setting 'display: table' on $element would break centered anchoring, so we have to add a wrapper\r\n            .append($('<div />')\r\n                .css({\r\n                    display: 'flex',\r\n                    whiteSpace: 'pre-wrap',\r\n                    position: 'relative',\r\n                    height: '100%',\r\n                    width: '100%'\r\n                })\r\n                .append(this.$text));\r\n\r\n        this.$text\r\n            .addClass('drop-text-content')\r\n            .css({\r\n                display: 'flex',\r\n                flexDirection: 'column',\r\n                flex: '1 1 100%'\r\n            });\r\n\r\n        Style.renderStyles(this);\r\n    };\r\n\r\n    Text.prototype.createTextElement = function () {\r\n        var text = this.data.text;\r\n        var $textElement;\r\n\r\n        if (this.data.role === 'title') {\r\n            $textElement = $('<h1/>')\r\n                .addClass('ignore-default-headings')\r\n                .css({\r\n                    height: '100%'\r\n                });\r\n        } else if (this.data.role === 'subtitle') {\r\n            $textElement = $('<h2/>')\r\n                .addClass('ignore-default-headings')\r\n                .css({\r\n                    height: '100%'\r\n                });\r\n        } else if (this.data.role === 'label') {\r\n            $textElement = $('<label/>')\r\n            .css({\r\n                height: '100%'\r\n            });\r\n\r\n            if (!this.designData)\r\n                $textElement.attr('for', this.rootDrop.instanceId + '_' + this.data.labelForDropId)\r\n        } else if (this.data.hyperlink && !this.designData) {\r\n            $textElement = $('<a/>')\r\n                .prop('href', util.convertRelativeHyperlinkToHostName(this.data.hyperlink))\r\n                .prop('target', this.data.openInline ? '_self' : '_blank')\r\n                .css({\r\n                    height: '100%'\r\n                });\r\n        } else {\r\n           $textElement = $('<div/>')\r\n                .css({\r\n                    height: '100%'\r\n                });\r\n        }\r\n\r\n        if (this.data.renderAsHtml) {\r\n            if (text) {\r\n                var regex = new RegExp('{{{TenantUrl}}}', 'g');\r\n                text = text.replace(regex, lq.getTenantUrl(''));\r\n            }\r\n\r\n            var $htmlWrapper = $('<div />')\r\n                .html(html.sanitize(text) || '');\r\n\r\n            return $textElement\r\n                .append($htmlWrapper)\r\n                .css('whiteSpace', 'normal');\r\n        } else {\r\n            return $textElement.text(text);\r\n        }\r\n    };\r\n\r\n    Text.prototype.postRender = function () {\r\n        this.tooltip.update();\r\n        this.piping.visibility.apply(this);\r\n\r\n        this.applyPosition();\r\n\r\n        if (this.data.applyBestFontFit || false) {\r\n            Style.bestFontSize(this.$element[0], this.$text);\r\n        }\r\n    };\r\n\r\n    Text.prototype.postWindowResize = function () {\r\n        if (this.data.applyBestFontFit || false) {\r\n            Style.bestFontSize(this.$element[0], this.$text);\r\n        }\r\n    };\r\n\r\n    return Text;\r\n});\n","define('drops/textArea/textArea',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/richText',\r\n    'lq/required'\r\n], function ($, Drop, Style, richText, Required) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded'\r\n            }\r\n        }\r\n    };\r\n\r\n    var isMaxLengthSupported = 'maxLength' in document.createElement('textarea');\r\n\r\n    function TextArea(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.$element\r\n\t        .addClass('boxToBorderSize')\r\n\t        .css({\r\n\t            whiteSpace: 'pre-wrap'\r\n\t        });\r\n    };\r\n\r\n    Drop.extend(TextArea);\r\n\r\n    TextArea.typeName = 'TextArea';\r\n\r\n    TextArea.prototype.preRender = function () {\r\n        if (!this.data.richText)\r\n            this.createSimpleTextEditor();\r\n        else\r\n            this.createRichTextEditor();\r\n\r\n        this.piping.visibility.apply(this);\r\n        this.piping.required.apply(this);\r\n        Required.prototype.addRemoveRequiredIndicator(this);\r\n        this.applyPosition();\r\n    };\r\n\r\n    TextArea.prototype.focus = function () {\r\n        //hack to set focus at end of textarea\r\n        var value = this.$textArea.val();\r\n        this.$textArea.val(\"\");\r\n        this.$textArea.trigger('focus');\r\n        this.$textArea.val(value);\r\n    };\r\n\r\n    TextArea.prototype.getValue = function () {\r\n        if (this.richTextEditor)\r\n            return this.richTextEditor.toString();\r\n        return this.$textArea.val();\r\n    };\r\n\r\n    TextArea.prototype.clearValue = function () {\r\n        if (this.$textArea) {\r\n            this.$textArea.val('');\r\n            this.$textArea[0].setAttribute('value', '');\r\n        }\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    TextArea.prototype.isInRichTextMode = function () {\r\n        return this.richTextEditor !== undefined && this.richTextEditor !== null;\r\n    };\r\n\r\n    TextArea.prototype.switchToRichText = function () {\r\n        if (!this.richTextEditor) {\r\n            this.$textArea.remove();\r\n            this.$textArea = null;\r\n\r\n            this.createRichTextEditor();\r\n        }\r\n    };\r\n\r\n    TextArea.prototype.switchToSimpleText = function () {\r\n        if (this.richTextEditor) {\r\n            this.richTextEditor.close();\r\n            this.richTextEditor = null;\r\n\r\n            this.createSimpleTextEditor();\r\n        }\r\n    };\r\n\r\n    TextArea.prototype.setValue = function (update) {\r\n        if (this.data.richText || richText.isRichTextString(update.value)) {\r\n            this.switchToRichText();\r\n            this.richTextEditor.fromString(update.value);\r\n        } else {\r\n            this.switchToSimpleText();\r\n            if (update.value !== null && update.value !== undefined) {\r\n                this.$textArea.val(update.value);\r\n                this.$textArea[0].setAttribute('value', update.value);\r\n            } else {\r\n                this.$textArea.val('');\r\n                this.$textArea[0].setAttribute('value', '');\r\n            }\r\n        }\r\n\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    TextArea.prototype.createSimpleTextEditor = function () {\r\n        this.$textArea = $('<textarea />')\r\n\t        .addClass('boxToBorderSize not-resizable')\r\n            .attr('id', this.rootDrop.instanceId + '_' + this.data.id)\r\n            .attr('tabindex', this.data.tabIndex)\r\n\t\t\t.attr('placeholder', this.data.watermark)\r\n            .css({\r\n                width: '100%',\r\n                height: '100%',\r\n                overflowX: 'hidden'\r\n            })\r\n            .val(this.data.defaultValue || '')\r\n            .appendTo(this.$element);\r\n\r\n        this.$textArea[0].setAttribute('value', '');\r\n\r\n        var self = this;\r\n        var cutToMaxLengthIfOver = function () {\r\n            if (self.$textArea.val().length > self.data.maxLength)\r\n                self.$textArea.val(self.$textArea.val().substr(0, self.data.maxLength));\r\n        };\r\n\r\n        if (this.data.hasMaxLength) {\r\n            // note: the 'maxlength' attribute is not supported by all browsers (e.g. IE9 and lower)\r\n            if (isMaxLengthSupported)\r\n                this.$textArea.attr('maxLength', this.data.maxLength);\r\n            else\r\n                this.$textArea\r\n                    .on('keypress paste change compositionupdate', function () {\r\n                        _.defer(cutToMaxLengthIfOver);\r\n                    });\r\n        }\r\n\r\n        this.$textArea.on('keyup', function () {\r\n            self.updateRequiredIndicator();\r\n            $(this)[0].setAttribute('value', $(this).val());\r\n        });\r\n\r\n        if (this.data.readOnly)\r\n            this.$textArea.prop('readonly', true);\r\n\r\n        this.applyEventTrigger('focusLost', 'blur', this.$textArea);\r\n\r\n        var changedEvent = this.getEventDataFor('changed');\r\n        if (changedEvent.enabled) {\r\n            this.subscribeEventHandler(this.$textArea, 'keydown', function () {\r\n                if (!_.has(self, 'lastChangedEventValue'))\r\n                    self.lastChangedEventValue = self.getValue();\r\n            });\r\n            this.subscribeEventHandler(this.$textArea, 'keypress input', _.debounce(function () {\r\n                if (self.lastChangedEventValue !== self.getValue()) {\r\n                    self.lastChangedEventValue = self.getValue();\r\n                    self.triggerEvent(changedEvent.raisedEventName);\r\n                }\r\n            }, 300));\r\n        }\r\n\r\n        var enterPressedEvent = this.getEventDataFor('enterPressed');\r\n        if (enterPressedEvent.enabled) {\r\n            this.$textArea.on('keyup', function (event) {\r\n                if (event.keyCode === 13) {\r\n                    self.triggerEvent(enterPressedEvent.raisedEventName);\r\n                }\r\n            });\r\n        }\r\n\r\n        Style.renderStyles(self, null, self.$textArea);\r\n    };\r\n\r\n    TextArea.prototype.createRichTextEditor = function () {\r\n        this.richTextEditor = new richText.RichTextEditor({\r\n            parentElement: this.$element,\r\n            sections: this.data.sections,\r\n            editable: this.data.readOnly !== true,\r\n            simpleRichTextEditor: this.data.simpleRichTextEditor,\r\n            placeholder: this.data.richTextPlaceholder\r\n        });\r\n        Style.renderStyles(this, null, this.richTextEditor.$element);\r\n\r\n        var eventData = this.getEventDataFor('focusLost');\r\n        var self = this;\r\n        if (eventData.enabled) {\r\n            this.richTextEditor.withOnFocusLost(function () {\r\n                self.triggerEvent(eventData.raisedEventName);\r\n            });\r\n        }\r\n    };\r\n\r\n    TextArea.prototype.setPlaceholder = function (val) {\r\n        if (this.$textArea) this.$textArea.attr('placeholder', val);\r\n    };\r\n\r\n    return TextArea;\r\n});\n","define('drops/timeInput/timeInput',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'lq/dayTime',\r\n    'jquery.timepicker',\r\n    'lq/required',\r\n    'drops/modals'\r\n], function ($, _, Drop, Style, util, dayTime, timepicker, Required, modals) {\r\n    'use strict';\r\n\r\n    TimeInput.NATURAL_NUMBER = 'naturalnumber';\r\n    TimeInput.DATE_TIME = 'datetime';\r\n\r\n    var defaults = {\r\n        data: {\r\n            storageType: TimeInput.NATURAL_NUMBER,\r\n            withDropDown: false,\r\n            step: 30,\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded'\r\n            },\r\n            changedDelay: 500,\r\n        }\r\n    };\r\n\r\n    var placeholder = '--:--';\r\n\r\n    function TimeInput(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing) || {};\r\n\r\n        this.data.eventing.focusLost = this.data.eventing.focusLost || this.data.eventing.focuslost; // old broken reference\r\n        delete this.data.eventing.focuslost;\r\n\r\n        var self = this;\r\n        this.$input = $('<input />')\r\n            .attr('name', this.data.name)\r\n            .attr('tabindex', this.data.tabIndex)\r\n            .css({\r\n                width: '100%',\r\n                height: '100%'\r\n            })\r\n            .val(placeholder)\r\n            .on('blur', function() {\r\n                self.displayValue(self.getValue());\r\n            })\r\n            .on('focus', function() {\r\n                if (self.$input.val() === placeholder)\r\n                    self.$input.val('');\r\n            })\r\n            .on('showTimepicker', function() {\r\n                $(this)\r\n                    .data('timepicker-list')\r\n                    .css('z-index', modals.getZIndexForPopups());\r\n            })\r\n            .addClass('boxToBorderSize')\r\n            .appendTo(this.$element);\r\n\r\n        if (this.data.eventing.focusLost && this.data.eventing.focusLost.enabled === true) {\r\n            this.$input.on('blur', function () {\r\n                self.triggerEvent(self.data.eventing.focusLost.raisedEventName, self.getValue());\r\n            });\r\n        }\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize')\r\n            .css({ whiteSpace: 'pre-wrap' });\r\n\r\n        Style.renderStyles(this, null, this.$input);\r\n\r\n        this.$input.on('keyup', function () {\r\n            self.updateRequiredIndicator();\r\n        });\r\n\r\n        if (this.data.readOnly)\r\n            this.$input.prop('readonly', true);\r\n\r\n        var changedEvent = this.getEventDataFor('changed');\r\n        if (changedEvent.enabled) {\r\n            this.subscribeEventHandler(this.$input, 'keydown', function () {\r\n                if (!_.has(self, 'lastChangedEventValue'))\r\n                    self.lastChangedEventValue = self.getValue();\r\n            });\r\n            this.subscribeEventHandler(this.$input, 'keypress input', _.debounce(function () {\r\n                self.triggerChangeEvent();\r\n            }, this.data.changedDelay));\r\n        }\r\n    };\r\n\r\n    Drop.extend(TimeInput, Drop);\r\n\r\n    TimeInput.typeName = 'TimeInput';\r\n\r\n    TimeInput.prototype.triggerChangeEvent = function () {\r\n        if (this.lastChangedEventValue !== this.getValue()) {\r\n            this.lastChangedEventValue = this.getValue();\r\n            this.triggerEventIfEnabled('changed');\r\n        }\r\n    };\r\n\r\n    TimeInput.prototype.preRender = function () {\r\n        this.$input\r\n            .attr('id', this.rootDrop.instanceId + '_' +this.data.id)\r\n\r\n        this.piping.visibility.apply(this);\r\n        this.piping.required.apply(this);\r\n        Required.prototype.addRemoveRequiredIndicator(this);\r\n        this.applyPosition();\r\n    };\r\n\r\n    TimeInput.prototype.postRender = function () {\r\n        if (this.data.withDropDown) {\r\n            var self = this;\r\n            this.$input\r\n                .timepicker({\r\n                    timeFormat: 'H:i',\r\n                    scrollDefault: 'now',\r\n                    step: this.data.step\r\n                })\r\n                .on('changeTime', function () {\r\n                    self.triggerEventIfEnabled('selected', self.getValue());\r\n                    self.$input.timepicker('hide');\r\n                })\r\n                .on('change', function () {\r\n                    var value = self.getValue();\r\n\r\n                    if (this.lastChangedEventValue === value)\r\n                        return;\r\n\r\n                    self.triggerChangeEvent();\r\n\r\n                    self.$input.timepicker('hide');\r\n                });\r\n        }\r\n    };\r\n\r\n    TimeInput.prototype.focus = function () {\r\n        this.$input.trigger('focus');\r\n    };\r\n\r\n    TimeInput.prototype.getValue = function () {\r\n        var value = this.$input.val();\r\n        if (this.data.storageType === TimeInput.NATURAL_NUMBER) {\r\n            return dayTime.toTicks(value);\r\n        } else {\r\n            return dayTime.toDate(this.piping, value);\r\n        }\r\n    };\r\n\r\n    TimeInput.prototype.clearValue = function () {\r\n        this.$input.val(null);\r\n        this.updateRequiredIndicator();\r\n        this.lastChangedEventValue = '';\r\n    };\r\n\r\n    TimeInput.prototype.setValue = function (update) {\r\n        this.displayValue(update.value);\r\n        this.lastChangedEventValue = update.value;\r\n    };\r\n\r\n    TimeInput.prototype.displayValue = function (val) {\r\n        var stringValue;\r\n        if (this.data.storageType === TimeInput.NATURAL_NUMBER) {\r\n            stringValue = dayTime.fromTicks(val);\r\n        } else {\r\n            stringValue = dayTime.fromDate(this.piping, val);\r\n        }\r\n\r\n        this.$input.val(stringValue);\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    return TimeInput;\r\n});\n","define('drops/timer/timer',[\r\n    'jquery',\r\n    'lq/drop'\r\n], function ($, Drop) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            intervalOption: 'Hard Coded',\r\n            autoStart: true\r\n        }\r\n    };\r\n\r\n    function Timer(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.timer = 1000 * 60;\r\n    };\r\n\r\n    Drop.extend(Timer);\r\n\r\n    Timer.typeName = 'Timer';\r\n\r\n    Timer.prototype.postRender = function () {\r\n        if (this.data.autoStart)\r\n            this.piping.eventing.onPageLoad(this.startTimer.bind(this));\r\n    };\r\n\r\n    Timer.prototype.startTimer = function (continuation) {\r\n        var self = this;\r\n        var timerElapsedEvent = self.getEventDataFor('timerElapsed');\r\n        if (timerElapsedEvent.enabled) {\r\n            if (self.data.intervalOption === \"Hard Coded\") {\r\n                self.timer = 1000 * self.data.interval;\r\n                setTimeout(function () {\r\n                    self.triggerEvent(timerElapsedEvent.raisedEventName);\r\n                }, self.timer);\r\n            }\r\n            else {\r\n                this.piping.datasources.registerDatasourceListener(self.data.dataSourceForInterval, function (data) {\r\n                    self.timer = 1000 * data.results[0][self.data.dataSourceOutputForInterval];\r\n                    setTimeout(function () {\r\n                        self.triggerEvent(timerElapsedEvent.raisedEventName);\r\n                    }, self.timer);\r\n                });\r\n            }\r\n        }\r\n\r\n        continuation();\r\n    };\r\n    \r\n    return Timer;\r\n});\n","define('drops/treeView/singleSelection',[\r\n    'jquery',\r\n    'underscore'\r\n], function ($, _) {\r\n    'use strict';\r\n\r\n    var SingleSelection = function (drop) {\r\n        this.idOfSelectedNode = null;\r\n\r\n        this.drop = drop;\r\n\r\n        var self = this;\r\n        this.drop.$tree.bind(\r\n            'tree.select',\r\n            function (e) {\r\n                self.selectNode(e.node);\r\n            }\r\n        );\r\n    };\r\n\r\n    SingleSelection.prototype.onCreateLi = $.noop;\r\n    \r\n    SingleSelection.prototype.getSelection = function() {\r\n        return this.idOfSelectedNode;\r\n    };\r\n\r\n    SingleSelection.prototype.replaceWith = function (idOfNode) {\r\n        var node = this.drop.$tree.tree('getNodeById', idOfNode);\r\n        this.drop.$tree.tree('selectNode', node);\r\n\r\n        this.selectNode(node);\r\n        this.drop.$tree.tree('addToSelection', node);\r\n        this.drop.$tree.tree('scrollToNode', node);\r\n    };\r\n\r\n    SingleSelection.prototype.selectNode = function (node) {\r\n        this.deselect();\r\n\r\n        if (node) {\r\n            this.idOfSelectedNode = node.id;\r\n            this.drop.showAsSelected(node);\r\n            this.drop.$tree.tree('openNode', node);\r\n            this.drop.triggerEventIfEnabled('selected', node.id);\r\n        } else if (this.idOfSelectedNode) {\r\n            this.drop.triggerEventIfEnabled('deselected', this.idOfSelectedNode);\r\n            this.idOfSelectedNode = null;\r\n        }\r\n\r\n        this.drop.updateRequiredIndicator();\r\n    };\r\n\r\n    SingleSelection.prototype.reset = function () {\r\n        this.deselect();\r\n        this.idOfSelectedNode = null;\r\n    };\r\n\r\n    SingleSelection.prototype.deselect = function () {\r\n        if (this.idOfSelectedNode) {\r\n            var currentNode = this.drop.$tree.tree('getNodeById', this.idOfSelectedNode);\r\n            this.drop.showAsDeselected(currentNode);\r\n        }\r\n    };\r\n\r\n    SingleSelection.prototype.reselect = function () {\r\n        if (!this.idOfSelectedNode) return;\r\n\r\n        var node = this.drop.$tree.tree('getNodeById', this.idOfSelectedNode);\r\n\r\n        if (node) {\r\n            this.drop.$tree.tree('clear');\r\n            this.drop.$tree.tree('addToSelection', node);\r\n            this.drop.showAsSelected(node);\r\n        } else {\r\n            this.idOfSelectedNode = null;\r\n        }\r\n    };\r\n\r\n    return SingleSelection;\r\n});\n","define('drops/treeView/multiSelection',[\r\n    'jquery',\r\n    'underscore'\r\n], function ($, _) {\r\n    'use strict';\r\n\r\n    var MultiSelection = function (drop) {\r\n        this.idsOfSelectedNodes = [];\r\n\r\n        this.drop = drop;\r\n    };\r\n\r\n    MultiSelection.prototype.onCreateLi = function (node, $element) {\r\n        var checkbox = $('<input type=\"checkbox\" />')\r\n            .on('change', this.onCheckboxToggled.bind(this, node, $element));\r\n\r\n        if (!node.children.length)\r\n            checkbox.addClass('leaf-node');\r\n\r\n        $element\r\n            .find('.jqtree-title')\r\n            .before(checkbox);\r\n    };\r\n\r\n    MultiSelection.prototype.onCheckboxToggled = function(node, $element, e) {\r\n        if ($(e.srcElement).prop('checked')) {\r\n            this.drop.$tree.tree('addToSelection', node);\r\n\r\n            this.idsOfSelectedNodes.push(node.id);\r\n\r\n            this.drop.showAsSelected(node);\r\n            this.drop.triggerEventIfEnabled('selected', node.id);\r\n        } else {\r\n            this.drop.$tree.tree('removeFromSelection', node);\r\n\r\n            this.idsOfSelectedNodes = _.reject(this.idsOfSelectedNodes, function (idOfSelectedNode) {\r\n                return idOfSelectedNode === node.id;\r\n            });\r\n\r\n            this.drop.showAsDeselected(node);\r\n            this.drop.triggerEventIfEnabled('deselected', node.id);\r\n        }\r\n\r\n        this.drop.updateRequiredIndicator();\r\n    };\r\n\r\n    MultiSelection.prototype.getSelection = function () {\r\n        return this.idsOfSelectedNodes;\r\n    };\r\n\r\n    MultiSelection.prototype.replaceWith = function (idsOfNodes) {\r\n        this.deselectAll();\r\n\r\n        this.idsOfSelectedNodes = $.isArray(idsOfNodes) ? idsOfNodes : [idsOfNodes];\r\n\r\n        this.reselect();\r\n    };\r\n\r\n    MultiSelection.prototype.reset = function () {\r\n        this.deselectAll();\r\n        this.idsOfSelectedNodes = [];\r\n    };\r\n\r\n    MultiSelection.prototype.deselectAll = function () {\r\n        var self = this;\r\n        _.each(this.idsOfSelectedNodes, function (idOfSelectedNode) {\r\n            var node = self.drop.$tree.tree('getNodeById', idOfSelectedNode);\r\n\r\n            $(node.element).find('> .jqtree-element input[type=checkbox]').prop('checked', false);\r\n\r\n            self.drop.$tree.tree('removeFromSelection', node);\r\n            self.drop.showAsDeselected(node);\r\n        });\r\n    };\r\n\r\n    MultiSelection.prototype.reselect = function() {\r\n        var self = this;\r\n        var nodes = _.chain(this.idsOfSelectedNodes)\r\n            .map(function(idOfNode) {\r\n                return self.drop.$tree.tree('getNodeById', idOfNode);\r\n            })\r\n            .filter(function(node) {\r\n                return !!node\r\n            })\r\n            .value();\r\n\r\n        _.each(nodes, function (node) {\r\n            $(node.element).find('> .jqtree-element input[type=checkbox]').prop('checked', true);\r\n\r\n            self.drop.$tree.tree('addToSelection', node);\r\n            self.drop.showAsSelected(node);\r\n        });\r\n\r\n        this.idsOfSelectedNodes = _.pluck(nodes, 'id');\r\n    };\r\n\r\n    return MultiSelection;\r\n});\n","define('drops/treeView/treeView',[\r\n    'lq',\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'underscore',\r\n    './singleSelection',\r\n    './multiSelection',\r\n    'jqTree/tree.jquery',\r\n    'lq/required'\r\n], function (lq, $, Drop, Style, util,  _, SingleSelection, MultiSelection, jqTree, Required) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            expandTreeOnLoad: true,\r\n            multiselect: false,\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded'\r\n            }\r\n}\r\n    };\r\n\r\n    function TreeView(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n        var self = this;\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing) || {};\r\n\r\n        this.$tree = $('<div/>');\r\n\r\n        var $overflowElement = $('<div/>');\r\n        $overflowElement.css({ 'overflow': 'auto', 'height': '100%', 'width': '100%' });\r\n        $overflowElement.append(this.$tree);\r\n        this.$element.append($overflowElement);\r\n\r\n        this.initializeTree();\r\n\r\n        if (this.data.useCustomNodeImages)\r\n            this.$element.addClass('leaf-nodes-have-icons');\r\n    };\r\n\r\n    Drop.extend(TreeView, Drop);\r\n\r\n    TreeView.typeName = 'TreeView';\r\n\r\n    TreeView.prototype.initializeTree = function () {\r\n        var self = this;\r\n\r\n        var config = {\r\n            data: [],\r\n            autoOpen: this.data.expandTreeOnLoad,\r\n            dragAndDrop: false,\r\n            onCreateLi: function (node, $li) {\r\n                var $element = $li.find('.jqtree-element').first();\r\n\r\n                Style.renderStyles(self, null, $element);\r\n                self.renderCustomColors($element, node);\r\n\r\n                if (self.data.useCustomNodeImages) {\r\n                    $element\r\n                        .prepend($('<a class=\"default-leaf-node\"></a>')\r\n                            .append($('<img />').attr('src', lq.getTenantUploads(self.data.defaultLeafNodeImage)).css({verticalAlign: 'middle'})))\r\n                        .prepend($('<a class=\"selected-leaf-node\"></a>')\r\n                            .append($('<img />').attr('src', lq.getTenantUploads(self.data.selectedLeafNodeImage)).css({verticalAlign: 'middle'})));\r\n                }\r\n\r\n                self.selection.onCreateLi(node, $element);\r\n\r\n                $element.append(_.map(self.data.nodeActions, function (nodeAction, index) {\r\n                    var $action = $('<img class=\"tree-node-action\" />')\r\n                        .addClass(nodeAction.visibility + '-visibility')\r\n                        .attr('src', lq.getTenantUploads(nodeAction.image))\r\n                        .attr('title', nodeAction.tooltip)\r\n                        .css({verticalAlign: 'middle'});\r\n\r\n                    if (nodeAction.resizeImage)\r\n                        $action\r\n                            .width(nodeAction.imageWidth + 'px')\r\n                            .height(nodeAction.imageHeight + 'px');\r\n\r\n                    if (self.data.nodeActionSpacing && index !== self.data.nodeActions.length - 1)\r\n                        $action.css('margin-right', self.data.nodeActionSpacing + 'px');\r\n\r\n                    if (nodeAction.enableDynamicVisibility && node.actionData != null && node.actionData.length > 0) {\r\n                        var data = node.actionData[index];\r\n                        if (!data.show) {\r\n                            $action.hide();\r\n                        }\r\n                    }\r\n\r\n                    if (nodeAction.eventing.clicked.enabled) {\r\n                        $action.on('click', function () {\r\n                            self.triggerEvent(nodeAction.eventing.clicked.raisedEventName, node.id, $action);\r\n                            return false;\r\n                        });\r\n                    }\r\n\r\n                    return $action;\r\n                }).reverse());\r\n            }\r\n        };\r\n\r\n        if (!this.isEventEnabled('deselected')) {\r\n            config.onCanSelectNode = function (node) {\r\n                return node.id !== self.idOfSelectedNode;\r\n            };\r\n        }\r\n\r\n        if (this.data.useCustomNodeImages) {\r\n            config.closedIcon = $('<img />').attr('src', lq.getTenantUploads(this.data.collapsedNodeImage)).css({verticalAlign: 'middle'});\r\n            config.openedIcon = $('<img />').attr('src', lq.getTenantUploads(this.data.expandedNodeImage)).css({verticalAlign: 'middle'});\r\n        }\r\n\r\n        this.$tree.tree(config);\r\n    };\r\n\r\n    TreeView.prototype.renderNormalStyleForNode = function ($element, data) {\r\n        Style.renderStyles(this, null, $element);\r\n        this.overrideStylingIfNeeded($element, data);\r\n    };\r\n\r\n    TreeView.prototype.showAsDeselected = function (node) {\r\n        var $element = $(node.element).find('.jqtree-element').first();\r\n        $element.removeClass('selected');\r\n\r\n        this.renderStyleIfEnabled('normal', $element, node);\r\n    };\r\n\r\n    TreeView.prototype.showAsSelected = function (node) {\r\n        var $element = $(node.element).find('.jqtree-element').first();\r\n        $element.addClass('selected');\r\n\r\n        this.renderStyleIfEnabled('selected', $element, node);\r\n\r\n    };\r\n\r\n    TreeView.prototype.preRender = function () {\r\n        var self = this;\r\n        this.piping.visibility.apply(this);\r\n        this.piping.required.apply(this);\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.dataSource,\r\n            function (data) { self._update(data); },\r\n            function (params) { }\r\n        );\r\n        Required.prototype.addRemoveRequiredIndicator(self);\r\n        this.applyPosition();\r\n\r\n        this.selection = this.data.multiselect ? new MultiSelection(this) : new SingleSelection(this);\r\n    };\r\n\r\n    TreeView.prototype.postRender = $.noop;\r\n\r\n    TreeView.prototype.renderStyleIfEnabled = function (styleName, $element, node) {\r\n        var styleData = this.data.styles && this.data.styles[styleName];\r\n\r\n        if (styleData && styleData.enabled === true) {\r\n            Style.renderStyle(styleData, this, $element);\r\n            this.renderCustomColors($element, node);\r\n        }\r\n    };\r\n\r\n    TreeView.prototype.renderCustomColors = function($element, node) {\r\n        if (node.textColor)\r\n            $element.css('color', node.textColor);\r\n\r\n        if (node.backgroundColor)\r\n            $element.css('background', node.backgroundColor);\r\n    };\r\n\r\n    TreeView.prototype._update = function (data) {\r\n        var state = this.$tree.tree('getState');\r\n\r\n        var idProperty = this.data.idProperty;\r\n        var parentIdProperty = this.data.parentIdProperty;\r\n        var textProperty = this.data.textProperty;\r\n\r\n        var treeViewItems = [];\r\n        var treeViewItemsById = {}\r\n        var rootTreeViewItems = [];\r\n\r\n        var self = this;\r\n\r\n        _.each(data.results, function (row) {\r\n            var treeViewItem = {\r\n                id: row[idProperty],\r\n                label: row[textProperty],\r\n                parentId: row[parentIdProperty],\r\n                actionData: _.map(self.data.nodeActions, function (na) {\r\n                        return {\r\n                            'show': row[na['dynamicVisibility']]\r\n                        };\r\n                }),\r\n                children: []\r\n            };\r\n\r\n            if (self.data.textColorProperty && row[self.data.textColorProperty])\r\n                treeViewItem.textColor = row[self.data.textColorProperty];\r\n\r\n            if (self.data.backgroundColorProperty && row[self.data.backgroundColorProperty])\r\n                treeViewItem.backgroundColor = row[self.data.backgroundColorProperty];\r\n\r\n            treeViewItems.push(treeViewItem);\r\n            treeViewItemsById[treeViewItem.id] = treeViewItem;\r\n\r\n            if (treeViewItem.parentId == null) {\r\n                rootTreeViewItems.push(treeViewItem);\r\n            }\r\n        });\r\n\r\n        _.each(treeViewItems, function (treeViewItem) {\r\n            if (treeViewItem.parentId != null) {\r\n                var parentTreeViewItem = treeViewItemsById[treeViewItem.parentId];\r\n                parentTreeViewItem.children.push(treeViewItem);\r\n            }\r\n        });\r\n\r\n        this.$tree.tree('loadData', rootTreeViewItems);\r\n\r\n        // this should only happen the first time\r\n        // after subsequent updates we will restore the previous set with 'setState'\r\n        this.$tree.tree('setOption', 'autoOpen', false);\r\n\r\n        _.defer(function() {\r\n            self.selection.reselect();\r\n        });\r\n\r\n        this.$tree.tree('setState', state);\r\n    };\r\n\r\n    TreeView.prototype.getValue = function () {\r\n        return this.selection.getSelection();\r\n    };\r\n\r\n    TreeView.prototype.clearValue = function () {\r\n        this.value = null;\r\n        this.$tree.tree('clear');\r\n        this.selection.reset();\r\n    };\r\n\r\n    TreeView.prototype.setValue = function (update) {\r\n        this.selection.replaceWith(update.value);\r\n    };\r\n\r\n    TreeView.prototype.supportsManyToManyData = function() {\r\n        return this.data.multiselect;\r\n    };\r\n\r\n    return TreeView;\r\n});\r\n\n","define('drops/tweetDrop/tweetDrop',[\r\n    'jquery',\r\n    'lq/drop'\r\n], function ($, Drop) {\r\n    'use strict';\r\n\r\n    function Twitter(options) {\r\n        Drop.call(this, $('<div/>'), options);\r\n\r\n        this.$element\r\n\t        .addClass('boxToBorderSize tweet-drop')\r\n\t        .css({\r\n\t            whiteSpace: 'pre-wrap'\r\n\t        });\r\n    };\r\n\r\n    Drop.extend(Twitter, Drop);\r\n\r\n    Twitter.typeName = 'Twitter';\r\n\r\n    Twitter.prototype.preRender = function () {\r\n        this.applyPosition();\r\n    };\r\n\r\n    Twitter.prototype.postRender = function () {\r\n        this.renderTwitter();\r\n    };\r\n\r\n    Twitter.prototype.renderTwitter = function () {\r\n        this.$element.empty();\r\n\r\n        $('<a />')\r\n            .addClass('twitter-timeline')\r\n            .attr('href', this.data.username ? 'http://twitter.com/' + this.data.username : '#')\r\n            .attr('data-widget-id', this.data.widgetId)\r\n            .text('Tweets by @' + this.data.username)\r\n            .prependTo(this.$element);\r\n\r\n        (function (d, s, id) {\r\n            var js, fjs = d.getElementsByTagName(s)[0], p = /^http:/.test(d.location) ? 'http' : 'https';\r\n            js = d.createElement(s);\r\n            js.id = id;\r\n            js.src = p + \"://platform.twitter.com/widgets.js\";\r\n            fjs.parentNode.insertBefore(js, fjs);\r\n        }(document, \"script\", \"twitter-wjs\"));\r\n    };\r\n    \r\n    return Twitter;\r\n});\n","define('drops/video/video',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/videoPlayer'\r\n], function ($, Drop, Style, VideoPlayer) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            value: '',\r\n            loop: false,\r\n            controls: true\r\n        }\r\n    };\r\n\r\n    function Video(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.player = new VideoPlayer(this.$element);\r\n\r\n        if (this.data.size.x < 200)\r\n            this.data.size.x = 200;\r\n        if (this.data.size.y < 100)\r\n            this.data.size.y = 100;\r\n\r\n        this.$element\r\n\t        .addClass('boxToBorderSize')\r\n\t        .css({\r\n\t            whiteSpace: 'pre-wrap',\r\n\t            overflow: 'hidden'\r\n\t        });\r\n\r\n        Style.renderStyles(this);\r\n\r\n        return this;\r\n    };\r\n\r\n    Drop.extend(Video, Drop);\r\n\r\n    Video.typeName = 'Video';\r\n\r\n    Video.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n    };\r\n\r\n    Video.prototype.postRender = function () {\r\n        if(this.isVisible())\r\n            this.openVideoPlayer();\r\n    };\r\n\r\n    Video.prototype.afterShown = function () {\r\n        this.openVideoPlayer();\r\n    };\r\n\r\n    Video.prototype.afterHidden = function () {\r\n        this.player.close();\r\n    };\r\n\r\n    Video.prototype.openVideoPlayer = function () {\r\n        var config = {\r\n            url: this.data.value,\r\n            autoPlay: this.data.autoPlay,\r\n            poster: this.data.poster,\r\n            loop: this.data.loop,\r\n            controls: this.data.controls\r\n        };\r\n\r\n        if (this.isEventEnabled('videoEnded'))\r\n            config.onEnded = this.triggerEventIfEnabled.bind(this, 'videoEnded');\r\n\r\n        this.player.open(config);\r\n    };\r\n\r\n    return Video;\r\n});\r\n\r\n\r\n\r\n\n","define('drops/documentPreviewer/documentPreviewer',[\r\n    'jquery',\r\n    'lq',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util'\r\n], function ($, lq, Drop, Style, util) {\r\n    'use strict';\r\n\r\n    var filenameEndsWith = function(filename, suffixes) {\r\n        if (!filename) return false;\r\n        return _.some(suffixes, function (suffix) {\r\n            return filename.toLowerCase().indexOf(suffix, filename.length - suffix.length) !== -1;\r\n        });\r\n    };\r\n\r\n    function DocumentPreviewer(options) {\r\n        Drop.call(this, $('<div/>'), options);\r\n        Style.renderStyles(this);\r\n    }\r\n\r\n    Drop.extend(DocumentPreviewer, Drop);\r\n\r\n    DocumentPreviewer.typeName = 'DocumentPreviewer';\r\n\r\n    DocumentPreviewer.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n    };\r\n\r\n    DocumentPreviewer.prototype.setValue = function (update) {\r\n        var value = util.convertListOfKeyValuesToObject(update.value);\r\n\r\n        var documentUrl;\r\n\r\n        if (!value) {\r\n            this.clearValue();\r\n        } else if ($.type(value) === 'string') {\r\n            documentUrl = value;\r\n        } else {\r\n            documentUrl = update.value.url || update.value.Url;\r\n        }\r\n\r\n        this.$element.empty();\r\n\r\n        if (this.isImage(documentUrl)) {\r\n            this.$element\r\n                .append($('<img src=\"' + this.getFullDocumentUrl(documentUrl) + '\" />')\r\n                    .css({\r\n                        'display': 'block',\r\n                        'max-width': '100%',\r\n                        'max-height': '100%',\r\n                        'width': 'auto',\r\n                        'height': 'auto',\r\n                        'margin': '0 auto'\r\n                    }));\r\n        } else {\r\n            var url = this.getEmbeddedUrl(documentUrl);\r\n\r\n            this.$element\r\n                .append($('<iframe src=\"' + url + '\" width=\"100%\" height=\"100%\" frameborder=\"0\" />'));\r\n        }\r\n    };\r\n\r\n    DocumentPreviewer.prototype.clearValue = function () {\r\n        this.$element.empty();\r\n    };\r\n\r\n    DocumentPreviewer.prototype.getEmbeddedUrl = function (documentUrl) {\r\n        var fullDocumentUrl = this.getFullDocumentUrl(documentUrl);\r\n\r\n        if (this.isOfficeFile(documentUrl))\r\n            return 'https://view.officeapps.live.com/op/embed.aspx?src=' + encodeURIComponent(fullDocumentUrl);\r\n\r\n        if (this.isPdfFile(documentUrl))\r\n            return lq.getCdnUrl('drops/DocumentPreviewer/view/viewer.html?file=' + encodeURIComponent(fullDocumentUrl) + '&bust=v2023');\r\n\r\n        return 'https://docs.google.com/viewer?url=' + encodeURIComponent(fullDocumentUrl) + '&embedded=true';\r\n    };\r\n\r\n    DocumentPreviewer.prototype.getFullDocumentUrl = function (documentUrl) {\r\n        return lq.getFullUrl(lq.getTenantUrl('DynamicContent/DownloadFile?url=' + documentUrl + '&openInBrowser=true'));\r\n    };\r\n\r\n    DocumentPreviewer.prototype.isPdfFile = function (filename) {\r\n        return filenameEndsWith(filename, ['.pdf']);\r\n    };\r\n\r\n    DocumentPreviewer.prototype.isOfficeFile = function (filename) {\r\n        return filenameEndsWith(filename, ['.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx']);\r\n    };\r\n\r\n    DocumentPreviewer.prototype.isImage = function (filename) {\r\n        return filenameEndsWith(filename, ['.bmp', '.jpg', '.jpeg', '.png', '.gif']);\r\n    };\r\n\r\n    return DocumentPreviewer;\r\n});\n","define('drops/googlePlaces/googlePlaces',[\r\n    'jquery',\r\n    'when',\r\n    'lq',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'lq/frontendModules',\r\n], function ($, when, lq, Drop, Style, util, FrontendModules) {\r\n    'use strict';\r\n\r\n    function GooglePlaces(options) {\r\n        Drop.call(this, $('<div/>'), options);\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing);\r\n\r\n        this.$input = $('<input type=text/>')\r\n            .addClass('boxToBorderSize')\r\n            .attr('name', this.data.name)\r\n            .attr('tabindex', this.data.tabIndex)\r\n\t\t\t.attr('placeholder', this.data.watermark)\r\n            .val(this.data.defaultValue || '')\r\n            .css({\r\n                width: '100%',\r\n                height: '100%'\r\n            })\r\n            .appendTo(this.$element);\r\n\r\n        Style.renderStyles(this, null, this.$input);\r\n\r\n    };\r\n\r\n    Drop.extend(GooglePlaces, Drop);\r\n\r\n    GooglePlaces.typeName = 'GooglePlaces';\r\n\r\n    GooglePlaces.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n        this.formatter = this.piping.formatting.createFormatter(this.data.formatting);\r\n\r\n        var deferred = when.defer();\r\n        this.loadModule(deferred);\r\n        return deferred.promise;\r\n    };\r\n\r\n    GooglePlaces.prototype.loadModule = function (deferred) {\r\n        var self = this;\r\n\r\n        FrontendModules.load(\"googleMap\", true).then(function (module) {\r\n            module\r\n                .loadGoogleMapsLibraries({\r\n                    libraryNames: [\"places\"],\r\n                    url: lq.getTenantUrl(\"GoogleMaps/FetchApiKey\"),\r\n                    actionId: self.piping.actionId,\r\n                    dropId: self.data.id,\r\n                })\r\n                .then(function () {\r\n                    // Libraries are loaded resolve the defer\r\n                    deferred.resolve();\r\n                });\r\n        });\r\n    };\r\n\r\n    GooglePlaces.prototype.postRender = function () {\r\n        var searchBox = new google.maps.places.SearchBox(this.$input[0]);\r\n        var self = this;\r\n        var mapDrop = this.piping.dropFactory.findDropByName(this.data.targetDrop);\r\n        if (mapDrop) {\r\n            mapDrop.getMap().then(function(result) {\r\n                if (result) {\r\n                    result.addListener(\"bounds_changed\", function() {\r\n                        searchBox.setBounds(result.getBounds());\r\n                    });\r\n                }\r\n            });\r\n        }\r\n        searchBox.addListener(\"places_changed\", function() {\r\n            var places = searchBox.getPlaces();\r\n            if (places.length == 0) {\r\n                return;\r\n            }\r\n            self.triggerEventIfEnabled('selected', places[0].formatted_address);\r\n        });\r\n    };\r\n\r\n    GooglePlaces.prototype.getValue = function () {\r\n        return this.$input.val();\r\n    };\r\n\r\n    GooglePlaces.prototype.clearValue = function () {\r\n        this.$input.val('');\r\n    };\r\n\r\n    GooglePlaces.prototype.setValue = function (update) {\r\n        var text = this.formatter.convertFromLicquidFormat(update.type, update.value);\r\n        this.$input.val(text);\r\n    };\r\n\r\n    return GooglePlaces;\r\n});\n","(function webpackUniversalModuleDefinition(root, factory) {\r\n\tif(typeof exports === 'object' && typeof module === 'object')\r\n\t\tmodule.exports = factory();\r\n\telse if(typeof define === 'function' && define.amd)\r\n\t\tdefine('drops/dropDown_v2/dropkick',[], factory);\r\n\telse if(typeof exports === 'object')\r\n\t\texports[\"dropkickjs\"] = factory();\r\n\telse\r\n\t\troot[\"dropkickjs\"] = factory();\r\n})(typeof self !== 'undefined' ? self : this, function() {\r\nreturn /******/ (function(modules) { // webpackBootstrap\r\n/******/ \t// The module cache\r\n/******/ \tvar installedModules = {};\r\n/******/\r\n/******/ \t// The require function\r\n/******/ \tfunction __webpack_require__(moduleId) {\r\n/******/\r\n/******/ \t\t// Check if module is in cache\r\n/******/ \t\tif(installedModules[moduleId]) {\r\n/******/ \t\t\treturn installedModules[moduleId].exports;\r\n/******/ \t\t}\r\n/******/ \t\t// Create a new module (and put it into the cache)\r\n/******/ \t\tvar module = installedModules[moduleId] = {\r\n/******/ \t\t\ti: moduleId,\r\n/******/ \t\t\tl: false,\r\n/******/ \t\t\texports: {}\r\n/******/ \t\t};\r\n/******/\r\n/******/ \t\t// Execute the module function\r\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\r\n/******/\r\n/******/ \t\t// Flag the module as loaded\r\n/******/ \t\tmodule.l = true;\r\n/******/\r\n/******/ \t\t// Return the exports of the module\r\n/******/ \t\treturn module.exports;\r\n/******/ \t}\r\n/******/\r\n/******/\r\n/******/ \t// expose the modules object (__webpack_modules__)\r\n/******/ \t__webpack_require__.m = modules;\r\n/******/\r\n/******/ \t// expose the module cache\r\n/******/ \t__webpack_require__.c = installedModules;\r\n/******/\r\n/******/ \t// define getter function for harmony exports\r\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\r\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\r\n/******/ \t\t\tObject.defineProperty(exports, name, {\r\n/******/ \t\t\t\tconfigurable: false,\r\n/******/ \t\t\t\tenumerable: true,\r\n/******/ \t\t\t\tget: getter\r\n/******/ \t\t\t});\r\n/******/ \t\t}\r\n/******/ \t};\r\n/******/\r\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\r\n/******/ \t__webpack_require__.n = function(module) {\r\n/******/ \t\tvar getter = module && module.__esModule ?\r\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\r\n/******/ \t\t\tfunction getModuleExports() { return module; };\r\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\r\n/******/ \t\treturn getter;\r\n/******/ \t};\r\n/******/\r\n/******/ \t// Object.prototype.hasOwnProperty.call\r\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\r\n/******/\r\n/******/ \t// __webpack_public_path__\r\n/******/ \t__webpack_require__.p = \"\";\r\n/******/\r\n/******/ \t// Load entry module and return exports\r\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\r\n/******/ })\r\n/************************************************************************/\r\n/******/ ([\r\n/* 0 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n  value: true\r\n});\r\n\r\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nvar _utils = __webpack_require__(1);\r\n\r\nvar _utils2 = _interopRequireDefault(_utils);\r\n\r\nvar _defaults = __webpack_require__(2);\r\n\r\nvar _defaults2 = _interopRequireDefault(_defaults);\r\n\r\nvar _customEvent = __webpack_require__(3);\r\n\r\nvar _customEvent2 = _interopRequireDefault(_customEvent);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\nvar isIframe = window.parent !== window.self;\r\nvar noop = function noop() {};\r\nvar _docListener = void 0;\r\n\r\n/**\r\n * GITHUB: https://github.com/redLeR1st/DropKick\r\n * # Getting started\r\n * After you've cloned the repo you will need to add the library to your page. In the `build/js` folder use\r\n * one of the two DropKick files given. One has a version number in the file name and the other is a version\r\n * number-less version. You will also need to grab the css from `build/css` and load it on the page.\r\n *\r\n * Once those files are imported into the page you can call DropKick on any HTMLSelectElement:\r\n * `new Dropkick( HTMLSelectElement, Options );` or `new Dropkick( \"ID\", Options );`. This returns the dropkick\r\n * object to you. It may be useful for you to store this in a var to reference later.\r\n *\r\n * If you're using jQuery you can do this instead:\r\n * `$('#select').dropkick( Options );`\r\n *\r\n *\r\n * @class Dropkick\r\n * @return { object } DropKick Object for that select. You can call your methods on this if stored in a var\r\n * @param {elem} sel HTMLSelect Element being passed.\r\n * @param {opts} options See list of [properties you can pass in here](#list_of_properties)\r\n * @constructor\r\n * @example\r\n * // Pure JS\r\n * var select = new Dropkick(\"#select\");\r\n * @example\r\n * // jQuery\r\n * $(\"#select\").dropkick();\r\n */\r\n\r\nvar Dropkick = function () {\r\n  function Dropkick(select, options) {\r\n    _classCallCheck(this, Dropkick);\r\n\r\n    this.sel = select;\r\n    var i = void 0,\r\n        dk = void 0;\r\n    var globalDK = window.Dropkick;\r\n\r\n    if (typeof this.sel === \"string\" && this.sel[0] === \"#\") {\r\n      this.sel = document.getElementById(select.substr(1));\r\n    }\r\n\r\n    // Check if select has already been DK'd and return the DK Object\r\n    for (i = 0; i < globalDK.uid; i++) {\r\n      dk = globalDK.cache[i];\r\n\r\n      if (dk instanceof Dropkick && dk.data.select === this.sel) {\r\n        _utils2.default.extend(dk.data.settings, options);\r\n        return dk;\r\n      }\r\n    }\r\n\r\n    if (!this.sel) {\r\n      throw \"You must pass a select to DropKick\";\r\n      return false;\r\n    }\r\n\r\n    if (this.sel.length < 1) {\r\n      throw 'You must have options inside your <select>: ' + select;\r\n      return false;\r\n    }\r\n\r\n    if (this.sel.nodeName === \"SELECT\") {\r\n      return this.init(this.sel, options);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Initializes the DK Object\r\n   *\r\n   * @method init\r\n   * @private\r\n   * @param  {Node}   sel  [description]\r\n   * @param  {Object} opts Options to override defaults\r\n   * @return {Object}      The DK Object\r\n   */\r\n\r\n\r\n  _createClass(Dropkick, [{\r\n    key: 'init',\r\n    value: function init(sel, opts) {\r\n      var globalDK = window.Dropkick;\r\n      var i,\r\n          dk = Dropkick.build(sel, \"dk\" + globalDK.uid);\r\n\r\n      // Set some data on the DK Object\r\n      this.data = {};\r\n      this.data.select = sel;\r\n      this.data.elem = dk.elem;\r\n      this.data.optList = dk.optList;\r\n      this.data.settings = _utils2.default.extend({}, _defaults2.default, opts);\r\n      this.funcs = {};\r\n      this.funcs.close = this.close;\r\n\r\n      var self = this;\r\n      //$(this.data.optList).on('click keydown keypress mouseover reset change', this.handleEvent.apply(this)); \r\n      $(this.data.optList).on('click keydown keypress mouseover reset change', function (e) {\r\n        self.handleEvent(e);\r\n      });\r\n\r\n      // Emulate some of HTMLSelectElement's properties\r\n\r\n      /**\r\n       * Whether the form is currently disabled or not\r\n       *\r\n       * @property {boolean} disabled\r\n       * @example\r\n       * var select = new Dropkick(\"#select\");\r\n       *\r\n       * select.disabled;\r\n       */\r\n      this.disabled = sel.disabled;\r\n\r\n      /**\r\n       * The form associated with the select\r\n       *\r\n       * @property {node} form\r\n       * @example\r\n       * var select = new Dropkick(\"#select\");\r\n       *\r\n       * select.form;\r\n       */\r\n      this.form = sel.form;\r\n\r\n      /**\r\n       * The number of options in the select\r\n       *\r\n       * @property {integer} length\r\n       * @example\r\n       * var select = new Dropkick(\"#select\");\r\n       *\r\n       * select.length;\r\n       */\r\n      this.length = sel.length;\r\n\r\n      /**\r\n       * If this select is a multi-select\r\n       *\r\n       * @property {boolean} multiple\r\n       * @example\r\n       * var select = new Dropkick(\"#select\");\r\n       *\r\n       * select.multiple;\r\n       */\r\n      this.multiple = sel.multiple;\r\n\r\n      /**\r\n       * An array of Dropkick options\r\n       *\r\n       * @property {array} options\r\n       * @example\r\n       * var select = new Dropkick(\"#select\");\r\n       *\r\n       * select.options;\r\n       */\r\n      this.options = dk.options.slice(0);\r\n\r\n      /**\r\n       * An index of the first selected option\r\n       *\r\n       * @property {integer} selectedIndex\r\n       * @example\r\n       * var select = new Dropkick(\"#select\");\r\n       *\r\n       * select.selectedIndex;\r\n       */\r\n      this.selectedIndex = sel.selectedIndex;\r\n\r\n      /**\r\n       * An array of selected Dropkick options\r\n       *\r\n       * @property {array} selectedOptions\r\n       * @example\r\n       * var select = new Dropkick(\"#select\");\r\n       *\r\n       * select.selectedOptions;\r\n       */\r\n      this.selectedOptions = dk.selected.slice(0);\r\n\r\n      /**\r\n       * The current value of the select\r\n       *\r\n       * @property {string} value\r\n       * @example\r\n       * var select = new Dropkick(\"#select\");\r\n       *\r\n       * select.value;\r\n       */\r\n      this.value = sel.value;\r\n\r\n      // Add the DK Object to the cache\r\n      this.data.cacheID = globalDK.uid;\r\n      globalDK.cache[this.data.cacheID] = this;\r\n\r\n      // Call the optional initialize function\r\n      this.data.settings.initialize.call(this);\r\n\r\n      // Increment the index\r\n      globalDK.uid += 1;\r\n\r\n      // Add the change listener to the select\r\n      if (!this._changeListener) {\r\n        sel.addEventListener(\"change\", this);\r\n        this._changeListener = true;\r\n      }\r\n\r\n      // Don't continue if we're not rendering on mobile\r\n      if (!(isMobile && !this.data.settings.mobile)) {\r\n\r\n        // Insert the DK element before the original select\r\n        sel.parentNode.insertBefore(this.data.elem, sel);\r\n        sel.setAttribute(\"data-dkCacheId\", this.data.cacheID);\r\n\r\n        // Bind events\r\n        this.data.elem.addEventListener(\"click\", this);\r\n        this.data.elem.addEventListener(\"keydown\", this);\r\n        this.data.elem.addEventListener(\"keypress\", this);\r\n\r\n        if (this.form) {\r\n          this.form.addEventListener(\"reset\", this);\r\n        }\r\n\r\n        if (!this.multiple) {\r\n          for (i = 0; i < this.options.length; i++) {\r\n            this.options[i].addEventListener(\"mouseover\", this);\r\n          }\r\n        }\r\n\r\n        if (!_docListener) {\r\n          document.addEventListener(\"click\", Dropkick.onDocClick);\r\n\r\n          if (isIframe) {\r\n            parent.document.addEventListener(\"click\", Dropkick.onDocClick);\r\n          }\r\n\r\n          _docListener = true;\r\n        }\r\n      }\r\n\r\n      return this;\r\n    }\r\n    // Emulate some of HTMLSelectElement's methods\r\n\r\n    /**\r\n     * Adds an element to the select. This option will not only add it to the original\r\n     * select, but create a Dropkick option and add it to the Dropkick select.\r\n     *\r\n     * @method add\r\n     * @param {string} elem   HTMLOptionElement\r\n     * @param {Node/Integer} before HTMLOptionElement/Index of Element\r\n     * @example\r\n     * var select = new Dropkick(\"#select\");\r\n     *\r\n     * select.add(\"New option\", 5);\r\n     */\r\n\r\n  }, {\r\n    key: 'add',\r\n    value: function add(elem, before) {\r\n      var text, option, i;\r\n\r\n      if (typeof elem === \"string\") {\r\n        text = elem;\r\n        elem = document.createElement(\"option\");\r\n        elem.text = text;\r\n      }\r\n\r\n      if (elem.nodeName === \"OPTION\") {\r\n        option = _utils2.default.create(\"li\", {\r\n          \"class\": \"dk-option\",\r\n          \"data-value\": elem.value,\r\n          \"text\": elem.text,\r\n          \"innerHTML\": elem.innerHTML,\r\n          \"role\": \"option\",\r\n          \"aria-selected\": \"false\",\r\n          \"id\": \"dk\" + this.data.cacheID + \"-\" + (elem.id || elem.value.replace(\" \", \"-\"))\r\n        });\r\n\r\n        _utils2.default.addClass(option, elem.className);\r\n        this.length += 1;\r\n\r\n        if (elem.disabled) {\r\n          _utils2.default.addClass(option, \"dk-option-disabled\");\r\n          option.setAttribute(\"aria-disabled\", \"true\");\r\n        }\r\n\r\n        if (elem.hidden) {\r\n          _utils2.default.addClass(option, \"dk-option-hidden\");\r\n          option.setAttribute(\"aria-hidden\", \"true\");\r\n        }\r\n\r\n        this.data.select.add(elem, before);\r\n\r\n        if (typeof before === \"number\") {\r\n          before = this.item(before);\r\n        }\r\n\r\n        i = this.options.indexOf(before);\r\n\r\n        if (i > -1) {\r\n          before.parentNode.insertBefore(option, before);\r\n          this.options.splice(i, 0, option);\r\n        } else {\r\n          this.data.optList.appendChild(option);\r\n          this.options.push(option);\r\n        }\r\n\r\n        option.addEventListener(\"mouseover\", this);\r\n\r\n        if (elem.selected) {\r\n          this.select(i);\r\n        }\r\n      }\r\n    }\r\n\r\n    /**\r\n     * Selects an option in the list at the desired index (negative numbers select from the end).\r\n     *\r\n     * @method item\r\n     * @param  {Integer} index Index of element (positive or negative)\r\n     * @return {Node}          The DK option from the list, or null if not found\r\n     * @example\r\n     * var select = new Dropkick(\"#select\");\r\n     *\r\n     * select.item(4); //returns DOM node of index\r\n     */\r\n\r\n  }, {\r\n    key: 'item',\r\n    value: function item(index) {\r\n      index = index < 0 ? this.options.length + index : index;\r\n      return this.options[index] || null;\r\n    }\r\n\r\n    /**\r\n     * Removes the option (from both the select and Dropkick) at the given index.\r\n     *\r\n     * @method  remove\r\n     * @param  {Integer} index Index of element (positive or negative)\r\n     * @example\r\n     * var select = new Dropkick(\"#select\");\r\n     *\r\n     * select.remove(4);\r\n     */\r\n\r\n  }, {\r\n    key: 'remove',\r\n    value: function remove(index) {\r\n      var dkOption = this.item(index);\r\n      dkOption.parentNode.removeChild(dkOption);\r\n      this.options.splice(index, 1);\r\n      this.data.select.remove(index);\r\n      this.select(this.data.select.selectedIndex);\r\n      this.length -= 1;\r\n    }\r\n\r\n    /**\r\n     * Closes the DK dropdown\r\n     *\r\n     * @method close\r\n     * @example\r\n     * var select = new Dropkick(\"#select\");\r\n     *\r\n     * select.close(); //closes dk dropdown\r\n     */\r\n\r\n  }, {\r\n    key: 'close',\r\n    value: function close() {\r\n      var i,\r\n          dk = this.data.elem,\r\n          dkOptsList = this.data.optList;\r\n\r\n      if (!this.isOpen || this.multiple) {\r\n        return false;\r\n      }\r\n\r\n      for (i = 0; i < this.options.length; i++) {\r\n        _utils2.default.removeClass(this.options[i], \"dk-option-highlight\");\r\n      }\r\n\r\n      dkOptsList.setAttribute(\"aria-expanded\", \"false\");\r\n      _utils2.default.removeClass(dkOptsList, \"dk-select-options-highlight\");\r\n      _utils2.default.removeClass(dk, \"dk-select-open-(up|down)\");\r\n      this.isOpen = false;\r\n      $(dk).append(dkOptsList);\r\n      this.data.settings.close.call(this);\r\n    }\r\n\r\n    /**\r\n     * Opens the DK dropdown\r\n     *\r\n     * @method open\r\n     * @example\r\n     * var select = new Dropkick(\"#select\");\r\n     *\r\n     * select.open(); //Opens the dk dropdown\r\n     */\r\n    // TODO: This used to run with the deffered util method\r\n    // is that needed? What problem was that solving?\r\n    // to make sure this runs in the next animation tick?\r\n\r\n  }, {\r\n    key: 'open',\r\n    value: function open() {\r\n      var dropHeight = void 0,\r\n          above = void 0,\r\n          below = void 0,\r\n          direction = void 0,\r\n          dkTop = void 0,\r\n          dkBottom = void 0;\r\n      var dk = this.data.elem;\r\n      var dkOptsList = this.data.optList;\r\n      // Using MDNs suggestion for crossbrowser scrollY:\r\n      // https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY\r\n      var supportPageOffset = window.pageXOffset !== undefined;\r\n      var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\r\n      var scrollY = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\r\n\r\n      dkTop = _utils2.default.offset(dk).top - scrollY;\r\n      dkBottom = window.innerHeight - (dkTop + dk.offsetHeight);\r\n\r\n      if (this.isOpen || this.multiple) {\r\n        return false;\r\n      }\r\n\r\n      dkOptsList.style.display = \"block\";\r\n      dropHeight = dkOptsList.offsetHeight;\r\n      dkOptsList.style.display = \"\";\r\n\r\n      above = dkTop > dropHeight;\r\n      below = dkBottom > dropHeight;\r\n      direction = above && !below ? \"-up\" : \"-down\";\r\n\r\n      this.isOpen = true;\r\n      _utils2.default.addClass(dk, \"dk-select-open\" + direction);\r\n      dkOptsList.setAttribute(\"aria-expanded\", \"true\");\r\n      $(dkOptsList).css({\r\n        zIndex: 7001,\r\n        position: 'absolute',\r\n        width: parseInt($($(this.data.elem)[0].parentNode).css('width')) - 2 + 'px',\r\n        left: $($(this.data.elem)[0].parentNode).offset().left,\r\n        top: $($(this.data.elem)[0].parentNode).offset().top + $($(this.data.elem)[0].parentNode).height()\r\n      });\r\n\r\n      $('#theBody').append(dkOptsList);\r\n      this._scrollTo(this.options.length - 1);\r\n      this._scrollTo(this.selectedIndex);\r\n\r\n      this.data.settings.open.call(this);\r\n    }\r\n\r\n    /**\r\n     * Disables or enables an option; if only a boolean is passed (or nothing),\r\n     * then the entire Dropkick will be disabled or enabled.\r\n     *\r\n     * @method disable\r\n     * @param  {Integer} elem     The element or index to disable\r\n     * @param  {Boolean}      disabled Value of disabled\r\n     * @example\r\n     * var select = new Dropkick(\"#select\");\r\n     *\r\n     * // To disable the entire select\r\n     * select.disable();\r\n     *\r\n     * // To disable just an option with an index\r\n     * select.disable(4, true);\r\n     *\r\n     * // To re-enable the entire select\r\n     * select.disable(false);\r\n     *\r\n     * // To re-enable just an option with an index\r\n     * select.disable(4, false);\r\n     */\r\n\r\n  }, {\r\n    key: 'disable',\r\n    value: function disable(elem, disabled) {\r\n      var disabledClass = \"dk-option-disabled\";\r\n\r\n      if (arguments.length === 0 || typeof elem === \"boolean\") {\r\n        disabled = elem === undefined ? true : false;\r\n        elem = this.data.elem;\r\n        disabledClass = \"dk-select-disabled\";\r\n        this.disabled = disabled;\r\n      }\r\n\r\n      if (disabled === undefined) {\r\n        disabled = true;\r\n      }\r\n\r\n      if (typeof elem === \"number\") {\r\n        elem = this.item(elem);\r\n      }\r\n\r\n      if (disabled) {\r\n        elem.setAttribute('aria-disabled', true);\r\n        _utils2.default.addClass(elem, disabledClass);\r\n      } else {\r\n        elem.setAttribute('aria-disabled', false);\r\n        _utils2.default.removeClass(elem, disabledClass);\r\n      }\r\n    }\r\n\r\n    /**\r\n     * Hides or shows an option.\r\n     *\r\n     * @method hide\r\n     * @param  {Integer} elem     The element or index to hide\r\n     * @param  {Boolean} hidden   Whether or not to hide the element\r\n     * @example\r\n     * var select = new Dropkick(\"#select\");\r\n     *\r\n     * // To hide an option with an index\r\n     * select.hide(4, true);\r\n     *\r\n     * // To make an option visible with an index\r\n     * select.hide(4, false);\r\n     */\r\n\r\n  }, {\r\n    key: 'hide',\r\n    value: function hide(elem, hidden) {\r\n      var hiddenClass = \"dk-option-hidden\";\r\n\r\n      if (hidden === undefined) {\r\n        hidden = true;\r\n      }\r\n\r\n      elem = this.item(elem);\r\n\r\n      if (hidden) {\r\n        elem.setAttribute('aria-hidden', true);\r\n        _utils2.default.addClass(elem, hiddenClass);\r\n      } else {\r\n        elem.setAttribute('aria-hidden', false);\r\n        _utils2.default.removeClass(elem, hiddenClass);\r\n      }\r\n    }\r\n\r\n    /**\r\n     * Selects an option from the list\r\n     *\r\n     * @method select\r\n     * @param  {String} elem     The element, index, or value to select\r\n     * @param  {Boolean}             disabled Selects disabled options\r\n     * @return {Node}                         The selected element\r\n     * @example\r\n     * var elm = new Dropkick(\"#select\");\r\n     *\r\n     * // Select by index\r\n     * elm.select(4); //selects & returns 5th item in the list\r\n     *\r\n     * // Select by value\r\n     * elm.select(\"AL\"); // selects & returns option with the value \"AL\"\r\n     */\r\n\r\n  }, {\r\n    key: 'select',\r\n    value: function select(elem, disabled) {\r\n      var i,\r\n          index,\r\n          option,\r\n          combobox,\r\n          select = this.data.select;\r\n\r\n      if (typeof elem === \"number\") {\r\n        elem = this.item(elem);\r\n      }\r\n\r\n      if (typeof elem === \"string\") {\r\n        for (i = 0; i < this.length; i++) {\r\n          if (this.options[i].getAttribute(\"data-value\") === elem) {\r\n            elem = this.options[i];\r\n          }\r\n        }\r\n      }\r\n\r\n      // No element or enabled option\r\n      if (!elem || typeof elem === \"string\" || !disabled && _utils2.default.hasClass(elem, \"dk-option-disabled\")) {\r\n        return false;\r\n      }\r\n\r\n      if (_utils2.default.hasClass(elem, \"dk-option\")) {\r\n        index = this.options.indexOf(elem);\r\n        option = select.options[index];\r\n\r\n        if (this.multiple) {\r\n          _utils2.default.toggleClass(elem, \"dk-option-selected\");\r\n          option.selected = !option.selected;\r\n\r\n          if (_utils2.default.hasClass(elem, \"dk-option-selected\")) {\r\n            elem.setAttribute(\"aria-selected\", \"true\");\r\n            this.selectedOptions.push(elem);\r\n          } else {\r\n            elem.setAttribute(\"aria-selected\", \"false\");\r\n            index = this.selectedOptions.indexOf(elem);\r\n            this.selectedOptions.splice(index, 1);\r\n          }\r\n        } else {\r\n          combobox = this.data.elem.firstChild;\r\n\r\n          if (this.selectedOptions.length) {\r\n            _utils2.default.removeClass(this.selectedOptions[0], \"dk-option-selected\");\r\n            this.selectedOptions[0].setAttribute(\"aria-selected\", \"false\");\r\n          }\r\n\r\n          _utils2.default.addClass(elem, \"dk-option-selected\");\r\n          elem.setAttribute(\"aria-selected\", \"true\");\r\n\r\n          combobox.setAttribute(\"aria-activedescendant\", elem.id);\r\n          combobox.className = \"dk-selected \" + option.className;\r\n          combobox.innerHTML = option.innerHTML;\r\n\r\n          this.selectedOptions[0] = elem;\r\n          option.selected = true;\r\n        }\r\n\r\n        this.selectedIndex = select.selectedIndex;\r\n        this.value = select.value;\r\n\r\n        if (!disabled) {\r\n          this.data.select.dispatchEvent(new _customEvent2.default(\"change\", { bubbles: this.data.settings.bubble }));\r\n        }\r\n\r\n        return elem;\r\n      }\r\n    }\r\n\r\n    /**\r\n     * Selects a single option from the list and scrolls to it (if the select is open or on multi-selects).\r\n     * Useful for selecting an option after a search by the user. Important to note: this doesn't close the\r\n     * dropdown when selecting. It keeps the dropdown open and scrolls to proper position.\r\n     *\r\n     * @method selectOne\r\n     * @param  {Integer} elem     The element or index to select\r\n     * @param  {Boolean}      disabled Selects disabled options\r\n     * @return {Node}                  The selected element\r\n     * @example\r\n     * var select = new Dropkick(\"#select\");\r\n     *\r\n     * select.selectOne(4);\r\n     */\r\n\r\n  }, {\r\n    key: 'selectOne',\r\n    value: function selectOne(elem, disabled) {\r\n      this.reset(true);\r\n      this._scrollTo(elem);\r\n      return this.select(elem, disabled);\r\n    }\r\n\r\n    /**\r\n     * Finds all options who's text matches a pattern (strict, partial, or fuzzy)\r\n     *\r\n     * `\"strict\"` - The search string matches exactly from the beginning of the\r\n     * option's text value (case insensitive).\r\n     *\r\n     * `\"partial\"` - The search string matches part of the option's text value\r\n     * (case insensitive).\r\n     *\r\n     * `\"fuzzy\"` - The search string matches the characters in the given order (not\r\n     * exclusively). The strongest match is selected first. (case insensitive).\r\n     *\r\n     * @method search\r\n     * @param  {String} string  The string to search for\r\n     * @param  {Integer} mode   How to search; \"strict\", \"partial\", or \"fuzzy\"\r\n     * @return {Boolean}  An Array of matched elements\r\n     */\r\n\r\n  }, {\r\n    key: 'search',\r\n    value: function search(pattern, mode) {\r\n      var i,\r\n          tokens,\r\n          str,\r\n          tIndex,\r\n          sIndex,\r\n          cScore,\r\n          tScore,\r\n          reg,\r\n          options = this.data.select.options,\r\n          matches = [];\r\n\r\n      if (!pattern) {\r\n        return this.options;\r\n      }\r\n\r\n      // Fix Mode\r\n      mode = mode ? mode.toLowerCase() : \"strict\";\r\n      mode = mode === \"fuzzy\" ? 2 : mode === \"partial\" ? 1 : 0;\r\n\r\n      reg = new RegExp((mode ? \"\" : \"^\") + pattern, \"i\");\r\n\r\n      for (i = 0; i < options.length; i++) {\r\n        str = options[i].text.toLowerCase();\r\n\r\n        // Fuzzy\r\n        if (mode == 2) {\r\n          tokens = pattern.toLowerCase().split(\"\");\r\n          tIndex = sIndex = cScore = tScore = 0;\r\n\r\n          while (sIndex < str.length) {\r\n            if (str[sIndex] === tokens[tIndex]) {\r\n              cScore += 1 + cScore;\r\n              tIndex++;\r\n            } else {\r\n              cScore = 0;\r\n            }\r\n\r\n            tScore += cScore;\r\n            sIndex++;\r\n          }\r\n\r\n          if (tIndex === tokens.length) {\r\n            matches.push({ e: this.options[i], s: tScore, i: i });\r\n          }\r\n\r\n          // Partial or Strict (Default)\r\n        } else {\r\n          reg.test(str) && matches.push(this.options[i]);\r\n        }\r\n      }\r\n\r\n      // Sort fuzzy results\r\n      if (mode === 2) {\r\n        matches = matches.sort(function (a, b) {\r\n          return b.s - a.s || a.i - b.i;\r\n        }).reduce(function (p, o) {\r\n          p[p.length] = o.e;\r\n          return p;\r\n        }, []);\r\n      }\r\n\r\n      return matches;\r\n    }\r\n\r\n    /**\r\n     * Brings focus to the proper DK element\r\n     *\r\n     * @method focus\r\n     * @example\r\n     * var select = new Dropkick(\"#select\");\r\n     *\r\n     * $(\"#some_elm\").on(\"click\", function() {\r\n     *   select.focus();\r\n     * });\r\n     */\r\n\r\n  }, {\r\n    key: 'focus',\r\n    value: function focus() {\r\n      if (!this.disabled) {\r\n        (this.multiple ? this.data.elem : this.data.elem.children[0]).focus();\r\n      }\r\n    }\r\n\r\n    /**\r\n     * Resets the Dropkick and select to it's original selected options; if `clear` is `true`,\r\n     * It will select the first option by default (or no options for multi-selects).\r\n     *\r\n     * @method reset\r\n     * @param  {Boolean} clear Defaults to first option if true\r\n     * @example\r\n     * var select = new Dropkick(\"#select\");\r\n     *\r\n     * // Reset to originally `selected` option\r\n     * select.reset();\r\n     *\r\n     * // Reset to first option in select\r\n     * select.reset(true);\r\n     */\r\n\r\n  }, {\r\n    key: 'reset',\r\n    value: function reset(clear) {\r\n      var i,\r\n          select = this.data.select;\r\n\r\n      this.selectedOptions.length = 0;\r\n\r\n      for (i = 0; i < select.options.length; i++) {\r\n        select.options[i].selected = false;\r\n        _utils2.default.removeClass(this.options[i], \"dk-option-selected\");\r\n        this.options[i].setAttribute(\"aria-selected\", \"false\");\r\n        if (!clear && select.options[i].defaultSelected) {\r\n          this.select(i, true);\r\n        }\r\n      }\r\n\r\n      if (!this.selectedOptions.length && !this.multiple) {\r\n        this.select(0, true);\r\n      }\r\n    }\r\n\r\n    /**\r\n     * Rebuilds the DK Object\r\n     * (use if HTMLSelectElement has changed)\r\n     *\r\n     * @method refresh\r\n     * @example\r\n     * var select = new Dropkick(\"#select\");\r\n     *\r\n     * //... [change original select] ...\r\n     *\r\n     * select.refresh();\r\n     */\r\n\r\n  }, {\r\n    key: 'refresh',\r\n    value: function refresh() {\r\n      if (Object.keys(this).length > 0 && !(isMobile && !this.data.settings.mobile)) {\r\n        this.dispose().init(this.data.select, this.data.settings);\r\n      }\r\n    }\r\n\r\n    /**\r\n     * Removes the DK Object from the cache and the element from the DOM\r\n     *\r\n     * @method dispose\r\n     * @example\r\n     * var select = new Dropkick(\"#select\");\r\n     *\r\n     * select.dispose();\r\n     */\r\n\r\n  }, {\r\n    key: 'dispose',\r\n    value: function dispose() {\r\n      var globalDK = window.Dropkick;\r\n\r\n      if (Object.keys(this).length > 0 && !(isMobile && !this.data.settings.mobile)) {\r\n        delete globalDK.cache[this.data.cacheID];\r\n        this.data.elem.parentNode.removeChild(this.data.elem);\r\n        this.data.select.removeAttribute(\"data-dkCacheId\");\r\n      }\r\n\r\n      return this;\r\n    }\r\n\r\n    // Private Methods\r\n\r\n    /**\r\n     * @method handleEvent\r\n     * @private\r\n     */\r\n\r\n  }, {\r\n    key: 'handleEvent',\r\n    value: function handleEvent(event) {\r\n      if (this.disabled) {\r\n        return;\r\n      }\r\n\r\n      switch (event.type) {\r\n        case \"click\":\r\n          this._delegate(event);\r\n          break;\r\n        case \"keydown\":\r\n          this._keyHandler(event);\r\n          break;\r\n        case \"keypress\":\r\n          this._searchOptions(event);\r\n          break;\r\n        case \"mouseover\":\r\n          this._highlight(event);\r\n          break;\r\n        case \"reset\":\r\n          this.reset();\r\n          break;\r\n        case \"change\":\r\n          this.data.settings.change.call(this);\r\n          break;\r\n      }\r\n    }\r\n\r\n    /**\r\n     * @method delegate\r\n     * @private\r\n     */\r\n\r\n  }, {\r\n    key: '_delegate',\r\n    value: function _delegate(event) {\r\n      var selection,\r\n          index,\r\n          firstIndex,\r\n          lastIndex,\r\n          target = event.target;\r\n\r\n      if (_utils2.default.hasClass(target, \"dk-option-disabled\")) {\r\n        return false;\r\n      }\r\n\r\n      if (!this.multiple) {\r\n        this[this.isOpen ? \"close\" : \"open\"]();\r\n        if (_utils2.default.hasClass(target, \"dk-option\")) {\r\n          this.select(target);\r\n        }\r\n      } else {\r\n        if (_utils2.default.hasClass(target, \"dk-option\")) {\r\n          selection = window.getSelection();\r\n          if (selection.type === \"Range\") selection.collapseToStart();\r\n\r\n          if (event.shiftKey) {\r\n            firstIndex = this.options.indexOf(this.selectedOptions[0]);\r\n            lastIndex = this.options.indexOf(this.selectedOptions[this.selectedOptions.length - 1]);\r\n            index = this.options.indexOf(target);\r\n\r\n            if (index > firstIndex && index < lastIndex) index = firstIndex;\r\n            if (index > lastIndex && lastIndex > firstIndex) lastIndex = firstIndex;\r\n\r\n            this.reset(true);\r\n\r\n            if (lastIndex > index) {\r\n              while (index < lastIndex + 1) {\r\n                this.select(index++);\r\n              }\r\n            } else {\r\n              while (index > lastIndex - 1) {\r\n                this.select(index--);\r\n              }\r\n            }\r\n          } else if (event.ctrlKey || event.metaKey) {\r\n            this.select(target);\r\n          } else {\r\n            this.reset(true);\r\n            this.select(target);\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    /**\r\n     * @method highlight\r\n     * @private\r\n     */\r\n\r\n  }, {\r\n    key: '_highlight',\r\n    value: function _highlight(event) {\r\n      var i,\r\n          option = event.target;\r\n\r\n      if (!this.multiple) {\r\n        for (i = 0; i < this.options.length; i++) {\r\n          _utils2.default.removeClass(this.options[i], \"dk-option-highlight\");\r\n        }\r\n\r\n        _utils2.default.addClass(this.data.optList, \"dk-select-options-highlight\");\r\n        _utils2.default.addClass(option, \"dk-option-highlight\");\r\n      }\r\n    }\r\n\r\n    /**\r\n     * @method keyHandler\r\n     * @private\r\n     */\r\n\r\n  }, {\r\n    key: '_keyHandler',\r\n    value: function _keyHandler(event) {\r\n      var lastSelected,\r\n          j,\r\n          selected = this.selectedOptions,\r\n          options = this.options,\r\n          i = 1,\r\n          keys = {\r\n        tab: 9,\r\n        enter: 13,\r\n        esc: 27,\r\n        space: 32,\r\n        up: 38,\r\n        down: 40\r\n      };\r\n\r\n      switch (event.keyCode) {\r\n        case keys.up:\r\n          i = -1;\r\n        // deliberate fallthrough\r\n        case keys.down:\r\n          event.preventDefault();\r\n          lastSelected = selected[selected.length - 1];\r\n\r\n          if (_utils2.default.hasClass(this.data.optList, \"dk-select-options-highlight\")) {\r\n            _utils2.default.removeClass(this.data.optList, \"dk-select-options-highlight\");\r\n            for (j = 0; j < options.length; j++) {\r\n              if (_utils2.default.hasClass(options[j], \"dk-option-highlight\")) {\r\n                _utils2.default.removeClass(options[j], \"dk-option-highlight\");\r\n                lastSelected = options[j];\r\n              }\r\n            }\r\n          }\r\n\r\n          i = options.indexOf(lastSelected) + i;\r\n\r\n          if (i > options.length - 1) {\r\n            i = options.length - 1;\r\n          } else if (i < 0) {\r\n            i = 0;\r\n          }\r\n\r\n          if (!this.data.select.options[i].disabled) {\r\n            this.reset(true);\r\n            this.select(i);\r\n            this._scrollTo(i);\r\n          }\r\n          break;\r\n        case keys.space:\r\n          if (!this.isOpen) {\r\n            event.preventDefault();\r\n            this.open();\r\n            break;\r\n          }\r\n        // deliberate fallthrough\r\n        case keys.tab:\r\n        case keys.enter:\r\n          for (i = 0; i < options.length; i++) {\r\n            if (_utils2.default.hasClass(options[i], \"dk-option-highlight\")) {\r\n              this.select(i);\r\n            }\r\n          }\r\n        // deliberate fallthrough\r\n        case keys.esc:\r\n          if (this.isOpen) {\r\n            event.preventDefault();\r\n            this.close();\r\n          }\r\n          break;\r\n      }\r\n    }\r\n\r\n    /**\r\n     * @method searchOptions\r\n     * @private\r\n     */\r\n\r\n  }, {\r\n    key: '_searchOptions',\r\n    value: function _searchOptions(event) {\r\n      var results,\r\n          self = this,\r\n          keyChar = String.fromCharCode(event.keyCode || event.which),\r\n          waitToReset = function waitToReset() {\r\n        if (self.data.searchTimeout) {\r\n          clearTimeout(self.data.searchTimeout);\r\n        }\r\n\r\n        self.data.searchTimeout = setTimeout(function () {\r\n          self.data.searchString = \"\";\r\n        }, 1000);\r\n      };\r\n\r\n      if (this.data.searchString === undefined) {\r\n        this.data.searchString = \"\";\r\n      }\r\n\r\n      waitToReset();\r\n\r\n      this.data.searchString += keyChar;\r\n      results = this.search(this.data.searchString, this.data.settings.search);\r\n\r\n      if (results.length) {\r\n        if (!_utils2.default.hasClass(results[0], \"dk-option-disabled\")) {\r\n          this.selectOne(results[0]);\r\n        }\r\n      }\r\n    }\r\n\r\n    /**\r\n     * @method scrollTo\r\n     * @private\r\n     */\r\n\r\n  }, {\r\n    key: '_scrollTo',\r\n    value: function _scrollTo(option) {\r\n      var optPos,\r\n          optTop,\r\n          optBottom,\r\n          dkOpts = this.data.optList;\r\n\r\n      if (option === -1 || typeof option !== \"number\" && !option || !this.isOpen && !this.multiple) {\r\n        return false;\r\n      }\r\n\r\n      if (typeof option === \"number\") {\r\n        option = this.item(option);\r\n      }\r\n\r\n      optPos = _utils2.default.position(option, dkOpts).top;\r\n      optTop = optPos - dkOpts.scrollTop;\r\n      optBottom = optTop + option.offsetHeight;\r\n\r\n      if (optBottom > dkOpts.offsetHeight) {\r\n        optPos += option.offsetHeight;\r\n        dkOpts.scrollTop = optPos - dkOpts.offsetHeight;\r\n      } else if (optTop < 0) {\r\n        dkOpts.scrollTop = optPos;\r\n      }\r\n    }\r\n  }]);\r\n\r\n  return Dropkick;\r\n}();\r\n\r\n;\r\n\r\n// Cache of DK Objects\r\n// currently can't think of a way to do this not in the global space\r\n// since DK isn't a singleton.\r\n\r\n// is this cache a must have?\r\nwindow.Dropkick = Dropkick;\r\nwindow.Dropkick.cache = {};\r\nwindow.Dropkick.uid = 0;\r\n\r\n// Static Methods\r\n\r\n/**\r\n * Builds the Dropkick element from a select element\r\n *\r\n * @method  build\r\n * @private\r\n * @param  {Node} sel The HTMLSelectElement\r\n * @return {Object}   An object containing the new DK element and it's options\r\n */\r\nDropkick.build = function (sel, idpre) {\r\n  var selOpt,\r\n      optList,\r\n      i,\r\n      options = [],\r\n      ret = {\r\n    elem: null,\r\n    optList: null,\r\n    options: [],\r\n    selected: []\r\n  },\r\n      addOption = function addOption(node) {\r\n    var option,\r\n        optgroup,\r\n        optgroupList,\r\n        i,\r\n        children = [];\r\n\r\n    switch (node.nodeName) {\r\n      case \"OPTION\":\r\n        option = _utils2.default.create(\"li\", {\r\n          \"class\": \"dk-option \",\r\n          \"data-value\": node.value,\r\n          \"text\": node.text,\r\n          \"innerHTML\": node.innerHTML,\r\n          \"role\": \"option\",\r\n          \"aria-selected\": \"false\",\r\n          \"id\": idpre + \"-\" + (node.id || node.value.replace(\" \", \"-\"))\r\n        });\r\n\r\n        _utils2.default.addClass(option, node.className);\r\n\r\n        if (node.disabled) {\r\n          _utils2.default.addClass(option, \"dk-option-disabled\");\r\n          option.setAttribute(\"aria-disabled\", \"true\");\r\n        }\r\n\r\n        if (node.hidden) {\r\n          _utils2.default.addClass(option, \"dk-option-hidden\");\r\n          option.setAttribute(\"aria-hidden\", \"true\");\r\n        }\r\n\r\n        if (node.selected) {\r\n          _utils2.default.addClass(option, \"dk-option-selected\");\r\n          option.setAttribute(\"aria-selected\", \"true\");\r\n          ret.selected.push(option);\r\n        }\r\n\r\n        ret.options.push(this.appendChild(option));\r\n        break;\r\n      case \"OPTGROUP\":\r\n        optgroup = _utils2.default.create(\"li\", { \"class\": \"dk-optgroup\" });\r\n\r\n        if (node.label) {\r\n          optgroup.appendChild(_utils2.default.create(\"div\", {\r\n            \"class\": \"dk-optgroup-label\",\r\n            \"innerHTML\": node.label\r\n          }));\r\n        }\r\n\r\n        optgroupList = _utils2.default.create(\"ul\", {\r\n          \"class\": \"dk-optgroup-options\"\r\n        });\r\n\r\n        for (i = node.children.length; i--; children.unshift(node.children[i])) {}\r\n\r\n        if (node.disabled) {\r\n          optgroup.classList.add('dk-optgroup-disabled');\r\n\r\n          children.forEach(function (option) {\r\n            option.disabled = node.disabled;\r\n          });\r\n        }\r\n\r\n        children.forEach(addOption, optgroupList);\r\n\r\n        this.appendChild(optgroup).appendChild(optgroupList);\r\n        break;\r\n    }\r\n  };\r\n\r\n  ret.elem = _utils2.default.create(\"div\", {\r\n    \"class\": \"dk-select\" + (sel.multiple ? \"-multi\" : \"\")\r\n  });\r\n\r\n  optList = _utils2.default.create(\"ul\", {\r\n    \"class\": \"dk-select-options\",\r\n    \"id\": idpre + \"-listbox\",\r\n    \"role\": \"listbox\"\r\n  });\r\n\r\n  if (sel.disabled) {\r\n    _utils2.default.addClass(ret.elem, \"dk-select-disabled\");\r\n    ret.elem.setAttribute('aria-disabled', true);\r\n  }\r\n  ret.elem.id = idpre + (sel.id ? \"-\" + sel.id : \"\");\r\n  _utils2.default.addClass(ret.elem, sel.className);\r\n\r\n  if (!sel.multiple) {\r\n    selOpt = sel.options[sel.selectedIndex];\r\n    ret.elem.appendChild(_utils2.default.create(\"div\", {\r\n      \"class\": \"dk-selected \" + (selOpt ? selOpt.className : \"\"),\r\n      \"tabindex\": sel.tabindex || 0,\r\n      \"innerHTML\": selOpt ? selOpt.text : '&nbsp;',\r\n      \"id\": idpre + \"-combobox\",\r\n      \"aria-live\": \"assertive\",\r\n      \"aria-owns\": optList.id,\r\n      \"role\": \"combobox\"\r\n    }));\r\n    optList.setAttribute(\"aria-expanded\", \"false\");\r\n  } else {\r\n    ret.elem.setAttribute(\"tabindex\", sel.getAttribute(\"tabindex\") || \"0\");\r\n    optList.setAttribute(\"aria-multiselectable\", \"true\");\r\n  }\r\n\r\n  for (i = sel.children.length; i--; options.unshift(sel.children[i])) {}\r\n  options.forEach(addOption, ret.elem.appendChild(optList));\r\n\r\n  ret.optList = optList;\r\n\r\n  return ret;\r\n};\r\n\r\n/**\r\n * Focus DK Element when corresponding label is clicked; close all other DK's\r\n *\r\n * @method  onDocClick\r\n * @private\r\n * @param {Object} event  Event from document click\r\n */\r\nDropkick.onDocClick = function (event) {\r\n  var tId, i;\r\n  var globalDK = window.Dropkick;\r\n\r\n  if (event.target.nodeType !== 1) {\r\n    return false;\r\n  }\r\n\r\n  if ((tId = event.target.getAttribute(\"data-dkcacheid\")) !== null) {\r\n    globalDK.cache[tId].focus();\r\n  }\r\n\r\n  for (i in globalDK.cache) {\r\n    if (!_utils2.default.closest(event.target, globalDK.cache[i].data.elem) && i !== tId) {\r\n      globalDK.cache[i].disabled || globalDK.cache[i].close();\r\n    }\r\n  }\r\n};\r\n\r\n// Add jQuery method\r\nif (window.jQuery !== undefined) {\r\n  window.jQuery.fn.dropkick = function () {\r\n    var args = Array.prototype.slice.call(arguments);\r\n    return jQuery(this).each(function () {\r\n      if (!args[0] || _typeof(args[0]) === 'object') {\r\n        new Dropkick(this, args[0] || {});\r\n      } else if (typeof args[0] === 'string') {\r\n        Dropkick.prototype[args[0]].apply(new Dropkick(this), args.slice(1));\r\n      }\r\n    });\r\n  };\r\n}\r\n\r\nexports.default = Dropkick;\r\n\r\n/***/ }),\r\n/* 1 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n  value: true\r\n});\r\nvar isIE = navigator.appVersion.indexOf(\"MSIE\") !== -1;\r\nvar Utils = {\r\n  hasClass: function hasClass(elem, classname) {\r\n    var reg = new RegExp(\"(^|\\\\s+)\" + classname + \"(\\\\s+|$)\");\r\n\r\n    return elem && reg.test(elem.className);\r\n  },\r\n  addClass: function addClass(elem, classname) {\r\n    if (elem && !this.hasClass(elem, classname)) {\r\n      elem.className += \" \" + classname;\r\n    }\r\n  },\r\n  removeClass: function removeClass(elem, classname) {\r\n    var reg = new RegExp(\"(^|\\\\s+)\" + classname + \"(\\\\s+|$)\");\r\n\r\n    elem && (elem.className = elem.className.replace(reg, \" \"));\r\n  },\r\n  toggleClass: function toggleClass(elem, classname) {\r\n    var fn = this.hasClass(elem, classname) ? \"remove\" : \"add\";\r\n\r\n    this[fn + \"Class\"](elem, classname);\r\n  },\r\n\r\n\r\n  // Shallow object extend\r\n  extend: function extend(obj) {\r\n    Array.prototype.slice.call(arguments, 1).forEach(function (source) {\r\n      if (source) {\r\n        for (var prop in source) {\r\n          obj[prop] = source[prop];\r\n        }\r\n      }\r\n    });\r\n\r\n    return obj;\r\n  },\r\n\r\n\r\n  // Returns the top and left offset of an element\r\n  offset: function offset(elem) {\r\n    var box = elem.getBoundingClientRect() || { top: 0, left: 0 };\r\n    var docElem = document.documentElement;\r\n    var offsetTop = isIE ? docElem.scrollTop : window.pageYOffset;\r\n    var offsetLeft = isIE ? docElem.scrollLeft : window.pageXOffset;\r\n\r\n    return {\r\n      top: box.top + offsetTop - docElem.clientTop,\r\n      left: box.left + offsetLeft - docElem.clientLeft\r\n    };\r\n  },\r\n\r\n\r\n  // Returns the top and left position of an element relative to an ancestor\r\n  position: function position(elem, relative) {\r\n    var pos = { top: 0, left: 0 };\r\n\r\n    while (elem && elem !== relative) {\r\n      pos.top += elem.offsetTop;\r\n      pos.left += elem.offsetLeft;\r\n      elem = elem.parentNode;\r\n    }\r\n\r\n    return pos;\r\n  },\r\n\r\n\r\n  // Returns the closest ancestor element of the child or false if not found\r\n  closest: function closest(child, ancestor) {\r\n    while (child) {\r\n      if (child === ancestor) {\r\n        return child;\r\n      }\r\n      child = child.parentNode;\r\n    }\r\n\r\n    return false;\r\n  },\r\n\r\n\r\n  // Creates a DOM node with the specified attributes\r\n  create: function create(name, attrs) {\r\n    var a = void 0;\r\n    var node = document.createElement(name);\r\n\r\n    if (!attrs) {\r\n      attrs = {};\r\n    }\r\n\r\n    for (a in attrs) {\r\n      if (attrs.hasOwnProperty(a)) {\r\n        if (a === \"innerHTML\") {\r\n          node.innerHTML = attrs[a];\r\n        } else {\r\n          node.setAttribute(a, attrs[a]);\r\n        }\r\n      }\r\n    }\r\n\r\n    return node;\r\n  },\r\n  deferred: function deferred(fn) {\r\n    return function () {\r\n      var _this = this,\r\n          _arguments = arguments;\r\n\r\n      window.setTimeout(function () {\r\n        fn.apply(_this, _arguments);\r\n      }, 1);\r\n    };\r\n  }\r\n};\r\n\r\nexports.default = Utils;\r\n\r\n/***/ }),\r\n/* 2 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n  value: true\r\n});\r\nvar defaults = {\r\n  /**\r\n   * Called once after the DK element is inserted into the DOM.\r\n   * The value of `this` is the Dropkick object itself.\r\n   *\r\n   * @config initialize\r\n   * @type Function\r\n   *\r\n   */\r\n  initialize: function initialize() {},\r\n\r\n\r\n  /**\r\n   * Whether or not you would like Dropkick to render on mobile devices.\r\n   *\r\n   * @default false\r\n   * @property {boolean} mobile\r\n   * @type boolean\r\n   *\r\n   */\r\n  mobile: true,\r\n\r\n  /**\r\n   * Called whenever the value of the Dropkick select changes (by user action or through the API).\r\n   * The value of `this` is the Dropkick object itself.\r\n   *\r\n   * @config change\r\n   * @type Function\r\n   *\r\n   */\r\n  change: function change() {},\r\n\r\n\r\n  /**\r\n   * Called whenever the Dropkick select is opened. The value of `this` is the Dropkick object itself.\r\n   *\r\n   * @config open\r\n   * @type Function\r\n   *\r\n   */\r\n  open: function open() {},\r\n\r\n\r\n  /**\r\n   * Called whenever the Dropkick select is closed. The value of `this` is the Dropkick object itself.\r\n   *\r\n   * @config close\r\n   * @type Function\r\n   *\r\n   */\r\n  close: function close() {},\r\n\r\n\r\n  // Search method; \"strict\", \"partial\", or \"fuzzy\"\r\n  /**\r\n   * `\"strict\"` - The search string matches exactly from the beginning of the option's text value (case insensitive).\r\n   *\r\n   * `\"partial\"` - The search string matches part of the option's text value (case insensitive).\r\n   *\r\n   * `\"fuzzy\"` - The search string matches the characters in the given order (not exclusively).\r\n   * The strongest match is selected first. (case insensitive).\r\n   *\r\n   * @default \"strict\"\r\n   * @config search\r\n   * @type string\r\n   *\r\n   */\r\n  search: \"strict\",\r\n\r\n  /**\r\n   * Bubble up the custom change event attached to Dropkick to the original element (select).\r\n   */\r\n  bubble: true\r\n};\r\n\r\nexports.default = defaults;\r\n\r\n/***/ }),\r\n/* 3 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n/* WEBPACK VAR INJECTION */(function(global) {\r\nvar NativeCustomEvent = global.CustomEvent;\r\n\r\nfunction useNative () {\r\n  try {\r\n    var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });\r\n    return  'cat' === p.type && 'bar' === p.detail.foo;\r\n  } catch (e) {\r\n  }\r\n  return false;\r\n}\r\n\r\n/**\r\n * Cross-browser `CustomEvent` constructor.\r\n *\r\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\r\n *\r\n * @public\r\n */\r\n\r\nmodule.exports = useNative() ? NativeCustomEvent :\r\n\r\n// IE >= 9\r\n'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {\r\n  var e = document.createEvent('CustomEvent');\r\n  if (params) {\r\n    e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\r\n  } else {\r\n    e.initCustomEvent(type, false, false, void 0);\r\n  }\r\n  return e;\r\n} :\r\n\r\n// IE <= 8\r\nfunction CustomEvent (type, params) {\r\n  var e = document.createEventObject();\r\n  e.type = type;\r\n  if (params) {\r\n    e.bubbles = Boolean(params.bubbles);\r\n    e.cancelable = Boolean(params.cancelable);\r\n    e.detail = params.detail;\r\n  } else {\r\n    e.bubbles = false;\r\n    e.cancelable = false;\r\n    e.detail = void 0;\r\n  }\r\n  return e;\r\n}\r\n\r\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))\r\n\r\n/***/ }),\r\n/* 4 */\r\n/***/ (function(module, exports) {\r\n\r\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\r\n\r\n/***/ })\r\n/******/ ]);\r\n});\n","define('drops/dropDown_v2/dropDown_v2',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/util',\r\n    'underscore',\r\n    'lq/tooltip',\r\n    'lq/html',\r\n    'lq/required',\r\n    'drops/modals',\r\n    './dropkick'\r\n], function ($, Drop, Style, util, _, Tooltip, html, Required, modals) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            showEmptyItem: true,\r\n            hideEmptyItemInList: false,\r\n            title: {\r\n                option: Tooltip.hardcoded\r\n            },\r\n            required: {\r\n                initialVisibility: true,\r\n                isRequired: false,\r\n                valueSource: 'hardcoded'\r\n            }\r\n        }\r\n    };\r\n\r\n    function Dropdown(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.data.eventing = util.convertListOfKeyValuesToObject(this.data.eventing);\r\n        this.loaded = false;\r\n        this.value = null;\r\n        this.valueIsNumber = false;\r\n\r\n        this.$element\r\n            .addClass('boxToBorderSize')\r\n            .css({\r\n                whiteSpace: 'pre-wrap'\r\n            });\r\n\r\n        var self = this;\r\n        this.$dropDown = $('<select />')\r\n            .css({\r\n                width: '100%',\r\n                height: '100%'\r\n            })\r\n            .on('change', this.valueChanged.bind(this))\r\n            .attr('tabindex', self.data.tabIndex)\r\n            .append($('<option>'))\r\n            .appendTo(self.$element);\r\n\r\n        if (this.data.readOnly)\r\n            this.$dropDown.prop('disabled', true);\r\n\r\n        this.subscribeEventHandler(this.$dropDown, 'change', this.handleChange.bind(this));\r\n\r\n        this.tooltip = new Tooltip(this, this.data.title, this.$dropDown);\r\n    };\r\n\r\n    Drop.extend(Dropdown, Drop);\r\n\r\n    Dropdown.typeName = 'Dropdown_v2';\r\n\r\n    Dropdown.prototype.handleChange = function() {\r\n        if (this.$dropDown.val()) {\r\n            var arg = this.$dropDown.val();\r\n            this.triggerEventIfEnabled('selected', arg);\r\n            this.triggerEventIfEnabled('changed', arg);\r\n        } else {\r\n            this.triggerEventIfEnabled('deselected', null);\r\n            this.triggerEventIfEnabled('changed', null);\r\n        }\r\n\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    Dropdown.prototype.preRender = function () {\r\n        var self = this;\r\n        this.tooltip.update();\r\n        this.piping.visibility.apply(this);\r\n        this.piping.required.apply(this);\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.dataSource,\r\n            function (data) { self._update(data); },\r\n            function (params) {\r\n                if (self.data.pageSize) {\r\n                    params.pageSize = self.data.pageSize;\r\n                }\r\n            });\r\n        Required.prototype.addRemoveRequiredIndicator(self);\r\n\r\n        this.applyPosition();\r\n        this.renderMockData();\r\n    };\r\n\r\n    Dropdown.prototype.postRender = function() {\r\n        var self = this;\r\n        this.dropKickObject = new Dropkick(this.$dropDown[0],\r\n            {\r\n                initialize: function () {\r\n                    var $oList = $(this.data.optList)\r\n                    if (typeof self.data.styles === 'string') {\r\n                        Style.renderStyles(self, null, $oList);\r\n                    }\r\n                    $oList.addClass('prevent-hover');\r\n                    $oList.addClass('prevent-normal');\r\n                },\r\n                mobile: true,\r\n                change: $.noop,\r\n                open: function () {\r\n                    var css = {};\r\n                    css.zIndex = modals.getZIndexForPopups();\r\n\r\n                    if (self.data.listMaxHeight)\r\n                        css.maxHeight = self.data.listMaxHeight + 'px';\r\n\r\n                    var $oList = $(self.dropKickObject.data.optList);\r\n\r\n                    $oList\r\n                        .css(css);\r\n\r\n                    if ($(window).height() < (parseInt($oList.css('top')) + $oList.outerHeight())) {\r\n                        $oList.css({top: (parseInt($oList.css('top')) - self.$dropDown.outerHeight() - $oList.outerHeight()\r\n                            - 4) // 4px offset\r\n                            + 'px'});\r\n                        self.listPosition = 'Top';\r\n                    } else {\r\n                        $oList.css({top: (parseInt($oList.css('top'))\r\n                            + 4) // 4px offset\r\n                            + 'px'});\r\n                        self.listPosition = 'Bottom';\r\n                    }\r\n                    self.setupCorrectWidthOfList($oList);\r\n                    self.$dropDownButton.addClass('open');\r\n                    self.$dropDownButton.removeClass('close');\r\n                    self.$dropdownButtonWrapper.addClass('open');\r\n                    self.$dropdownButtonWrapper.removeClass('close');\r\n                },\r\n                close: function () {\r\n                    self.$dropDownButton.removeClass('open');\r\n                    self.$dropDownButton.addClass('close');\r\n                    self.$dropdownButtonWrapper.removeClass('open');\r\n                    self.$dropdownButtonWrapper.addClass('close');\r\n                },\r\n                search: \"strict\",\r\n                bubble: true\r\n            });\r\n        this.$dkSelected = this.$element.find('.dk-selected');\r\n        this.togglePlaceholder(true);\r\n\r\n        if (this.data.hideEmptyItemInList && this.data.showEmptyItem)\r\n            $(this.dropKickObject.data.optList).addClass('empty-item-hidden');\r\n\r\n        this.subscribeEventHandler(this.piping.$actionWrapper, 'scroll', this.handleScroll.bind(this));\r\n\r\n        this.subscribeEventHandler($(window), 'resize', function () {\r\n            var $oList = $(self.dropKickObject.data.optList);\r\n            var top = $oList.css('top');\r\n            if (($(window).height() < ($(self.$dropDown[0].parentNode).offset().top + $(self.$dropDown[0].parentNode).height() + $oList.outerHeight()) && self.listPosition === 'Bottom')) {\r\n                self.listPosition = 'Top';\r\n                top = (parseInt($oList.css('top')) - self.$dropDown.outerHeight() - $oList.outerHeight()) + 'px';\r\n            } else if (($(window).height() > ($(self.$dropDown[0].parentNode).offset().top + $(self.$dropDown[0].parentNode).height() + $oList.outerHeight()) && self.listPosition === 'Top')) {\r\n                self.listPosition = 'Bottom';\r\n                top = $(self.$dropDown[0].parentNode).offset().top + $(self.$dropDown[0].parentNode).height();\r\n            }\r\n            self.setupCorrectWidthOfList($oList);\r\n            $oList.css({\r\n                zIndex: 7001,\r\n                position: 'absolute',\r\n                left: $(self.$dropDown[0].parentNode).offset().left,\r\n                top: top\r\n              });\r\n        });\r\n\r\n        Style.renderStyles(this, null, this.$dkSelected);\r\n        this.ensureRightPadding();\r\n\r\n        this.addButton();\r\n    };\r\n\r\n    Dropdown.prototype.setupCorrectWidthOfList = function ($oList) {\r\n        var borderWidthOfList = $oList.outerWidth() - $oList.innerWidth();\r\n        $oList.css({\r\n            width: (parseInt($(this.$dropDown[0].parentNode).css('width')) - borderWidthOfList) + 'px'\r\n        });\r\n    };\r\n\r\n    Dropdown.prototype.addButton = function () {\r\n        var self = this;\r\n        this.$dropdownButtonWrapper = $('<div/>')\r\n            .addClass(\"dropdown-button-wrapper\")\r\n            .addClass(\"close\")\r\n            .appendTo(this.$dkSelected);\r\n\r\n        this.$dropDownButton = $('<div/>')\r\n            .addClass(\"dropdown-button\")\r\n            .addClass(\"close\")\r\n            .on('click', function (e) {\r\n                e.stopPropagation()\r\n                if (!self.dropKickObject.isOpen) {\r\n                    self.dropKickObject.open();\r\n                } else {\r\n                    self.dropKickObject.close();\r\n                }\r\n            })\r\n            .appendTo(this.$dropdownButtonWrapper);\r\n    };\r\n\r\n    Dropdown.prototype.handleScroll = function () {\r\n        this.dropKickObject.funcs.close.apply(this.dropKickObject);\r\n    };\r\n\r\n    Dropdown.prototype.valueChanged = function() {\r\n        var val = this.$dropDown.val();\r\n        this.value = val === '' ? null : val;\r\n\r\n        Style.renderStyles(this, null, this.$dkSelected);\r\n        this.addButton();\r\n        this.ensureRightPadding();\r\n\r\n        this.togglePlaceholder(!this.value);\r\n    };\r\n\r\n    Dropdown.prototype.createEmptyItem = function() {\r\n        return $('<option />', { value: '', text: this.data.emptyItemText || '...' })\r\n            .css({display: 'none'});\r\n    };\r\n\r\n    Dropdown.prototype.renderMockData = function () {\r\n        if (this.data.showEmptyItem)\r\n            this.$dropDown.append(this.createEmptyItem());\r\n\r\n        if (!this.data.mockData) return;\r\n        this.$dropDown.children(':first').remove();\r\n        this.$dropDown.append(_.map(this.data.mockData.split('\\n'), function(item) {\r\n            return $('<option />', {\r\n                value: item,\r\n                text: item\r\n            });\r\n        }));\r\n    };\r\n\r\n    Dropdown.prototype._update = function (data) {\r\n        this.loaded = true;\r\n\r\n        this.$dropDown\r\n            .find('option')\r\n            .remove()\r\n            .end();\r\n\r\n        if (this.data.showEmptyItem)\r\n            this.$dropDown.append(this.createEmptyItem());\r\n\r\n        var self = this;\r\n        $.each(data.results, function (key, result) {\r\n            var val = result[self.data.selectedKeyColumn || 'Id'];\r\n            self.valueIsNumber = (typeof val === 'number');\r\n            $('<option />', {\r\n                value: val,\r\n                text: html.strip(self.getDisplayStringFromResult(result))\r\n            })\r\n            .appendTo(self.$dropDown);\r\n        });\r\n\r\n        this.dropKickObject.refresh();\r\n\r\n        this.$dkSelected = this.$element.find('.dk-selected');\r\n\r\n        if (this.data.hideEmptyItemInList && this.data.showEmptyItem)\r\n            $(this.dropKickObject.data.optList).addClass('empty-item-hidden');\r\n\r\n        Style.renderStyles(this, null, this.$dkSelected);\r\n        this.addButton();\r\n        this.ensureRightPadding();\r\n\r\n        if (this.value)\r\n            this.setValue({ value: this.value });\r\n        else if (this.data.showEmptyItem) {\r\n            this.togglePlaceholder(true);\r\n        } else {\r\n            this.selectFirstItem();\r\n        }\r\n    };\r\n\r\n    Dropdown.prototype.getDisplayStringFromResult = function (result) {\r\n        var column = this.getNameOfDisplayedColumn(result);\r\n        return result[column];\r\n    };\r\n\r\n    Dropdown.prototype.getNameOfDisplayedColumn = function (result) {\r\n        var keys = Object.keys(result);\r\n        if (keys.length === 1) {\r\n            return keys[0];\r\n        }\r\n        if (keys.indexOf(this.data.selectedColumnToShow) !== -1) {\r\n            return this.data.selectedColumnToShow;\r\n        }\r\n        if (keys[0].toUpperCase() !== \"ID\") {\r\n            return keys[0];\r\n        }\r\n        return keys[1];\r\n    };\r\n\r\n    Dropdown.prototype.focus = function () {\r\n        this.$dropDown.trigger('focus');\r\n    };\r\n\r\n    Dropdown.prototype.getValue = function () {\r\n        if (this.valueIsNumber && this.value !== null)\r\n            return parseInt(this.value);\r\n        return this.value === undefined\r\n            ? null\r\n            : this.value;\r\n    };\r\n\r\n    Dropdown.prototype.clearValue = function () {\r\n        if (this.data.showEmptyItem) {\r\n            this.value = null;\r\n        }\r\n        this.selectFirstItem();\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    Dropdown.prototype.selectFirstItem = function () {\r\n        this.dropKickObject.select(0);\r\n        this.valueChanged();\r\n    };\r\n\r\n    Dropdown.prototype.setValue = function (update) {\r\n        if (!this.loaded) {\r\n            this.value = update.value;\r\n        } else {\r\n            if (update.value !== null && update.value !== undefined) {\r\n                var option = _.find(this.$dropDown.children(), function(option) {\r\n                    return option.value === update.value.toString();\r\n                });\r\n\r\n                if (option) {\r\n                    this.value = update.value;\r\n                    this.dropKickObject.select(update.value.toString());\r\n                    this.updateRequiredIndicator();\r\n                } else {\r\n                    this.triggerEventIfEnabled('valueNotFound', update.value);\r\n                    if(!this.isEventEnabled('valueNotFound')) {\r\n                        alert('A value was mapped onto a drop down list, but the corresponding item was not found in the list. Saving this form will cause you to lose this information.');\r\n                    }\r\n\r\n                    this.clearValue();\r\n                }\r\n            } else {\r\n                this.clearValue();\r\n            }\r\n        }\r\n        this.updateRequiredIndicator();\r\n    };\r\n\r\n    Dropdown.prototype.ensureRightPadding = function () {\r\n        this.$dkSelected.css('padding-right', 'max(23px, ' + this.$dkSelected.css('padding-right') + ')');\r\n    }\r\n\r\n    Dropdown.prototype.togglePlaceholder = function (isVisible) {\r\n        if (!!isVisible) {\r\n            this.$dkSelected.addClass('dropdown-stylable-placeholder');\r\n        } else {\r\n            this.$dkSelected.removeClass('dropdown-stylable-placeholder');\r\n        }\r\n    };\r\n\r\n    return Dropdown;\r\n});\n","define('drops/dynamicGridLayout/dynamicGridLayout',[\r\n    'jquery',\r\n    'lq/drop',\r\n    'lq/style'\r\n], function ($, Drop, Style) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            rows: [\r\n                { value: 1, unit: 'fr' }\r\n            ],\r\n            columns: [\r\n                { value: 1, unit: 'fr' }\r\n            ],\r\n            spaceBetweenRows: { value: 0, unit: 'px' },\r\n            spaceBetweenColumns: { value: 0, unit: 'px' },\r\n            isDynamiclySizedContainer: false,\r\n            useDynamicWidth: false,\r\n            useDynamicHeight: false\r\n        }\r\n    };\r\n\r\n    function DynamicGridLayout(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        this.cellElements = [];\r\n\r\n        this.initCellsVisibsWithVal(false);\r\n        this.initDropsInCells();\r\n\r\n        Style.renderStyles(this);\r\n\r\n        this.$element.addClass('has-states');\r\n    };\r\n\r\n    Drop.extend(DynamicGridLayout, Drop);\r\n\r\n    DynamicGridLayout.typeName = 'DynamicGridLayout';\r\n\r\n    DynamicGridLayout.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n\r\n        // if the DynamicGridLayout is the only drop in a list item => switch to relative positioning\r\n        if ((this.parent.data.type === 'ListItem'\r\n            || (this.parent.data.type === 'ModalPopup'\r\n            && this.parent.data.autoPosition))\r\n            && this.parent.childDrops.length === 1\r\n            && (this.data.useDynamicWidth || this.data.useDynamicHeight)) {\r\n            var elementCss = {\r\n                position: 'relative'\r\n            };\r\n\r\n            var parentElementCss = {\r\n            };\r\n\r\n            if (this.data.useDynamicWidth) {\r\n                elementCss.width = 'auto';\r\n                parentElementCss.width = 'auto';\r\n            }\r\n\r\n            if (this.data.useDynamicHeight) {\r\n                elementCss.height = 'auto';\r\n                parentElementCss.height = 'auto';\r\n            }\r\n\r\n            this.$element.css(elementCss);\r\n            this.parent.$element.css(parentElementCss);\r\n        } else {\r\n            this.applyPosition();\r\n        }\r\n\r\n        this.createCells();\r\n    };\r\n\r\n    DynamicGridLayout.prototype.render = function ($element) {\r\n        return this.createAndRenderDrops($element);\r\n    };\r\n\r\n    DynamicGridLayout.prototype.postRender = function () {\r\n        this.setupDynamicCells();\r\n        this.setupCellsVisibilities();\r\n        if (this.data.centered) {\r\n            this.applyCentering();\r\n        }\r\n    };\r\n\r\n    DynamicGridLayout.prototype.applyCentering = function () {\r\n        this.$element.css({\r\n            marginLeft: 'auto',\r\n            marginRight: 'auto'\r\n        });\r\n        if (this.data.useDynamicWidth) {\r\n            this.$element.css({\r\n                width: 'fit-content'\r\n            });\r\n        }\r\n    };\r\n\r\n    DynamicGridLayout.prototype.createCells = function () {\r\n        var self = this;\r\n        this.cellElements = [];\r\n\r\n        _.each(self.data.rows, function (row, rowIndex) {\r\n            var rowElements = [];\r\n\r\n            _.each(self.data.columns, function (column, columnIndex) {\r\n                var $cellElement = self.easyCell(rowIndex, columnIndex);\r\n\r\n                rowElements.push($cellElement);\r\n            });\r\n\r\n            self.cellElements.push(rowElements);\r\n        });\r\n    };\r\n\r\n    DynamicGridLayout.prototype.easyCell = function (i, j) {\r\n        var $cell = $('<div/>')\r\n            .addClass('dynamic-grid-cell')\r\n            .css({\r\n                top: '',\r\n                left: '',\r\n                height: this.data.rows[i].unit === 'px' ? this.data.rows[i].value + 'px' : '',\r\n                width: this.data.columns[j].unit === 'px' ? this.data.columns[j].value + 'px' : ''\r\n            })\r\n            .appendTo(this.$element);\r\n\r\n        var isTopAndBottmAnchored =\r\n            this.data.top !== undefined &&\r\n            this.data.top !== null &&\r\n            this.data.bottom !== undefined &&\r\n            this.data.bottom !== null;\r\n\r\n        var isLefAndRightAnchored =\r\n            this.data.left !== undefined &&\r\n            this.data.left !== null &&\r\n            this.data.right !== undefined &&\r\n            this.data.right !== null;\r\n\r\n        if ((this.data.columns[j].unit === 'auto'|| this.data.columns[j].unit === 'fr') &&\r\n            (this.data.rows[i].unit === 'auto' || this.data.rows[i].unit === 'fr') &&\r\n            !this.data.useDynamicHeight &&\r\n            !this.data.useDynamicWidth &&\r\n            isTopAndBottmAnchored &&\r\n            isLefAndRightAnchored) {\r\n            $cell\r\n                .css({\r\n                    overflowY: 'auto',\r\n                    overflowX: 'auto'\r\n                });\r\n        } else if ((this.data.rows[i].unit === 'auto' || this.data.rows[i].unit === 'fr') &&\r\n            !this.data.useDynamicHeight &&\r\n            isTopAndBottmAnchored &&\r\n            ((this.data.columns[j].unit !== 'auto' || this.data.columns[j].unit !== 'fr') || this.data.useDynamicWidth)) {\r\n            $cell\r\n                .css({\r\n                    overflowY: 'auto',\r\n                    overflowX: 'hidden'\r\n                });\r\n        } else if ((this.data.columns[j].unit === 'auto' || this.data.columns[j].unit === 'fr') &&\r\n            !this.data.useDynamicWidth &&\r\n            isLefAndRightAnchored &&\r\n            ((this.data.rows[i].unit !== 'auto' || this.data.rows[i].unit !== 'fr') || this.data.useDynamicHeight)) {\r\n            $cell\r\n                .css({\r\n                    overflowY: 'hidden',\r\n                    overflowX: 'auto'\r\n                });\r\n        }\r\n\r\n        return $cell;\r\n    };\r\n\r\n    DynamicGridLayout.prototype.createRenderPromiseForChild = function (drop) {\r\n        var $wrapper = this.getWrapperForDrop(drop);\r\n        return drop.render($wrapper);\r\n    };\r\n\r\n    DynamicGridLayout.prototype.getWrapperForDrop = function (drop) {\r\n        var cellElementData = this.getCellElementForChild(drop);\r\n        var $cellElement = cellElementData.cellElement;\r\n        var $wrapper = $cellElement.find('.grid-wrapper');\r\n        if ($wrapper.length === 0) {\r\n            $wrapper = $('<div class = \"grid-wrapper\"></div>')\r\n                .css({\r\n                    position: 'relative',\r\n                    width: '100%',\r\n                    height: '100%'\r\n                });\r\n            $wrapper.appendTo($cellElement);\r\n        }\r\n\r\n        var i = cellElementData.rowIndex;\r\n        var j = cellElementData.columnIndex;\r\n\r\n        this.dropsInCells[i][j].push(drop);\r\n\r\n        if (drop.data.initialVisibility) {\r\n            this.cellsContentVisibilities[i][j] = true;\r\n        }\r\n\r\n        drop.afterHidden = this.hideCellsIfNeeded.bind(this, i, j);\r\n        drop.afterShown =  this.showCellsIfNeeded.bind(this, i, j);\r\n\r\n        return $($wrapper[0]);\r\n    };\r\n\r\n    DynamicGridLayout.prototype.setupPosForDropInDynCell = function (drop) {\r\n        var cellElementData = this.getCellElementForChild(drop);\r\n        var $cellElement = cellElementData.cellElement;\r\n        var $wrapper = $cellElement.children('.grid-wrapper');\r\n        if (!$wrapper.length > 0)\r\n            return;\r\n        if (this.data.columns[cellElementData.columnIndex].unit === 'auto') {\r\n            if (drop.data.left !== null && drop.data.left >= 0 && drop.data.right !== null && drop.data.right >= 0) {\r\n                $($wrapper.parent()).css({\r\n                    paddingLeft: drop.data.left + 'px',\r\n                    paddingRight: drop.data.right + 'px'\r\n                });\r\n\r\n                drop.$element.css({\r\n                    width: '100%'\r\n                });\r\n            } else if (drop.data.left !== null && drop.data.left >= 0) {\r\n                $($wrapper.parent()).css({\r\n                    paddingLeft: drop.data.left + 'px'\r\n                });\r\n            } else if (drop.data.right !== null && drop.data.right >= 0) {\r\n                $($wrapper.parent()).css({\r\n                    paddingRight: drop.data.right + 'px'\r\n                });\r\n            } else if (drop.data.useDynamicWidth || drop.data.autoWidth) {\r\n                drop.$element.css({\r\n                    width: 'auto'\r\n                });\r\n            }\r\n\r\n            if (drop.data.top !== null && drop.data.top >= 0 && drop.data.bottom !== null && drop.data.bottom >= 0) {\r\n                $wrapper.css({\r\n                    boxSizing: 'border-box',\r\n                    paddingTop: drop.data.top + 'px',\r\n                    paddingBottom: drop.data.bottom + 'px'\r\n                });\r\n\r\n                drop.$element.css({\r\n                    height: '100%'\r\n                });\r\n            } else if (drop.data.top !== null && drop.data.top >= 0) {\r\n                $wrapper.css({\r\n                    boxSizing: 'border-box',\r\n                    paddingTop: drop.data.top + 'px'\r\n                });\r\n            } else if (drop.data.bottom !== null && drop.data.bottom >= 0) {\r\n                $wrapper.css({\r\n                    boxSizing: 'border-box',\r\n                    paddingBottom: drop.data.bottom + 'px'\r\n                });\r\n            }\r\n\r\n            if (!(drop.data.left !== null && drop.data.left >= 0) && drop.data.right !== null && drop.data.right >= 0) {\r\n                $($wrapper.parent()).css({\r\n                    marginLeft: 'auto'\r\n                });\r\n            }\r\n\r\n            if (!(drop.data.top !== null && drop.data.top >= 0) && drop.data.bottom !== null && drop.data.bottom >= 0) {\r\n                $($wrapper.parent()).css({\r\n                    marginTop: 'auto'\r\n                });\r\n            }\r\n\r\n            if (drop.data.centered) {\r\n                $($wrapper.parent()).css({\r\n                    marginTop: 'auto',\r\n                    marginBottom: 'auto'\r\n                });\r\n            }\r\n\r\n            var isLefAndRightAnchored =\r\n                drop.data.left !== undefined &&\r\n                drop.data.left !== null &&\r\n                drop.data.right !== undefined &&\r\n                drop.data.right !== null;\r\n\r\n            if (!isLefAndRightAnchored) {\r\n                $($wrapper.parent()).css({\r\n                    width : 'fit-content'\r\n                });\r\n            }\r\n        }\r\n        if (this.data.rows[cellElementData.rowIndex].unit === 'auto') {\r\n            if (drop.data.top !== null && drop.data.top >= 0 && drop.data.bottom !== null && drop.data.bottom >= 0) {\r\n                $($wrapper.parent()).css({\r\n                    paddingTop: drop.data.top + 'px',\r\n                    paddingBottom: drop.data.bottom + 'px'\r\n\r\n                });\r\n\r\n                drop.$element.css({\r\n                    height: '100%'\r\n                });\r\n            } else if (drop.data.top !== null && drop.data.top >= 0) {\r\n                $($wrapper.parent()).css({\r\n                    paddingTop: drop.data.top + 'px'\r\n                });\r\n            } else if (drop.data.bottom !== null && drop.data.bottom >= 0) {\r\n                $($wrapper.parent()).css({\r\n                    paddingBottom: drop.data.bottom + 'px'\r\n                });\r\n            } else if (drop.data.useDynamicHeight || drop.data.autoHeight) {\r\n                drop.$element.css({\r\n                    height: 'auto'\r\n                });\r\n            }\r\n\r\n            if (drop.data.left !== null && drop.data.left >= 0 && drop.data.right !== null && drop.data.right >= 0) {\r\n                $wrapper.css({\r\n                    boxSizing: 'border-box',\r\n                    paddingLeft: drop.data.left + 'px',\r\n                    paddingRight: drop.data.right + 'px'\r\n                });\r\n\r\n                drop.$element.css({\r\n                    width: '100%'\r\n                });\r\n            } else if (drop.data.left !== null && drop.data.left >= 0) {\r\n                $wrapper.css({\r\n                    boxSizing: 'border-box',\r\n                    paddingLeft: drop.data.left + 'px'\r\n                });\r\n            } else if (drop.data.right !== null && drop.data.right >= 0) {\r\n                $wrapper.css({\r\n                    boxSizing: 'border-box',\r\n                    paddingRight: drop.data.right + 'px'\r\n                });\r\n            }\r\n\r\n            if (!(drop.data.top !== null && drop.data.top >= 0) && drop.data.bottom !== null && drop.data.bottom >= 0) {\r\n                $($wrapper.parent()).css({\r\n                    marginTop: 'auto'\r\n                });\r\n            }\r\n\r\n            if (!(drop.data.left !== null && drop.data.left >= 0) && drop.data.right !== null && drop.data.right >= 0) {\r\n                $($wrapper.parent()).css({\r\n                    marginLeft: 'auto'\r\n                });\r\n            }\r\n\r\n            if (drop.data.centered) {\r\n                $($wrapper.parent()).css({\r\n                    marginLeft: 'auto',\r\n                    marginRight: 'auto'\r\n                });\r\n            }\r\n\r\n            var isTopAndBottmAnchored =\r\n                drop.data.top !== undefined &&\r\n                drop.data.top !== null &&\r\n                drop.data.bottom !== undefined &&\r\n                drop.data.bottom !== null;\r\n\r\n            if (!isTopAndBottmAnchored) {\r\n                $($wrapper.parent()).css({\r\n                    height: 'fit-content'\r\n                });\r\n            }\r\n        }\r\n    };\r\n\r\n    DynamicGridLayout.prototype.applyPositionForChild = function (childDrop) {\r\n        Drop.prototype.applyPositionForChild.call(this, childDrop);\r\n        var cellElementData = this.getCellElementForChild(childDrop);\r\n        if (this.data.columns[cellElementData.columnIndex].unit === 'auto' || this.data.rows[cellElementData.rowIndex].unit === 'auto') {\r\n            if (childDrop.applyRelativePositioning)\r\n                childDrop.applyRelativePositioning();\r\n            childDrop.$element.css({\r\n                position: 'relative',\r\n                inset: ''\r\n            });\r\n            var margin = childDrop.data.margin;\r\n            if (margin) {\r\n                margin.top ? childDrop.$element.css({marginTop: margin.top + 'px'}) : childDrop.$element.css({marginTop: ''});\r\n                margin.right ? childDrop.$element.css({marginRight: margin.right + 'px'}) : childDrop.$element.css({marginRight: ''});\r\n                margin.bottom ? childDrop.$element.css({marginBottom: margin.bottom + 'px'}) : childDrop.$element.css({marginBottom: ''});\r\n                margin.left ? childDrop.$element.css({marginLeft: margin.left + 'px'}) : childDrop.$element.css({marginLeft: ''});\r\n            }\r\n        }\r\n        this.setupPosForDropInDynCell(childDrop);\r\n    };\r\n\r\n    DynamicGridLayout.prototype.getCellElementForChild = function (drop) {\r\n        var rowIndex = Math.max(Math.min((drop.data.gridlayout_row || 1) - 1, this.data.rows.length - 1), 0);\r\n        var columnIndex = Math.max(Math.min((drop.data.gridlayout_column || 1) - 1, this.data.columns.length - 1), 0);\r\n        if (rowIndex === this.cellElements.length ) { // This part is needed, when nesting is happening, and cells don't exist yet\r\n            var rowElements = [];\r\n            var self = this;\r\n            _.each(self.data.columns, function (column, columnIndexAll) {\r\n                var $cellElement = self.easyCell(\r\n                    rowIndex,\r\n                    columnIndexAll);\r\n                rowElements.push($cellElement);\r\n            });\r\n            this.cellElements.push(rowElements);\r\n        }\r\n        return {cellElement: this.cellElements[rowIndex][columnIndex], rowIndex: rowIndex, columnIndex: columnIndex};\r\n    };\r\n\r\n    DynamicGridLayout.prototype.getPropertyEditor = function (drop, editorName) {\r\n        for (var key in drop.currentPropertyEditors) {\r\n            for (var i = 0; i < drop.currentPropertyEditors[key].length; i++) {\r\n                var propEditor = drop.currentPropertyEditors[key][i];\r\n                if (propEditor.constructor.propertyEditorName === editorName) {\r\n                    return propEditor;\r\n                } else if (propEditor.constructor.propertyEditorName === 'CombinedEditor') {\r\n                    for (var j = 0; j < propEditor.editors.length; j++) {\r\n                        var propEditor2 = propEditor.editors[j];\r\n                        if (propEditor2.constructor.propertyEditorName === editorName) {\r\n                            return propEditor2;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return null;\r\n    };\r\n\r\n    DynamicGridLayout.prototype.setupDynamicCells = function () {\r\n        if (this.data.useDynamicHeight || this.data.useDynamicWidth) {\r\n            this.data.isDynamiclySizedContainer = true;\r\n        }\r\n\r\n        var gridTemplate = this.generateGridTemplate();\r\n\r\n        this.$element.css({\r\n            display: window.document.documentMode ? '-ms-grid' : 'grid',\r\n            gridTemplateColumns: gridTemplate.gridTemplateColumns,\r\n            gridTemplateRows: gridTemplate.gridTemplateRows,\r\n            rowGap: this.data.spaceBetweenRows.value + this.data.spaceBetweenRows.unit,\r\n            columnGap: this.data.spaceBetweenColumns.value + this.data.spaceBetweenColumns.unit\r\n        });\r\n\r\n        if (this.data.useDynamicHeight) {\r\n            this.$element.css({\r\n                height: ''\r\n            });\r\n        } else if (this.$element.css('height') === '') {\r\n            this.$element.css({\r\n                height: this.data.size.x + 'px'\r\n            });\r\n        }\r\n\r\n        if (this.data.useDynamicWidth) {\r\n            this.$element.css({\r\n                width: ''\r\n            });\r\n        } else if (this.$element.css('width') === '') {\r\n            this.$element.css({\r\n                width: this.data.size.y + 'px'\r\n            });\r\n        }\r\n    };\r\n\r\n    DynamicGridLayout.prototype.generateGridTemplate = function () {\r\n        var concat = function (first, second) {\r\n            return first === '' ? second : first + ' ' + second;\r\n        };\r\n\r\n        var self = this;\r\n\r\n        var gridTemplateRows = '';\r\n        var gridTemplateColumns = '';\r\n\r\n        for (var i = 0; i < this.cellsContentVisibilities.length; i++ ) {\r\n            if (this.hasTrue(this.cellsContentVisibilities[i])) {\r\n                switch (self.data.rows[i].unit) {\r\n                    case 'auto':\r\n                        gridTemplateRows = concat(gridTemplateRows, 'auto');\r\n                        break;\r\n\r\n                    case 'fr':\r\n                        gridTemplateRows = concat(gridTemplateRows, self.data.rows[i].value + 'fr');\r\n                        break;\r\n\r\n                    case 'px':\r\n                        gridTemplateRows = concat(gridTemplateRows, self.data.rows[i].value + 'px');\r\n                        break;\r\n\r\n                    default:\r\n                        break;\r\n                }\r\n            }\r\n        }\r\n\r\n        for (var j = 0; j < this.data.columns.length; j++ ) {\r\n            var columnArray = self.cellsContentVisibilities.map(function(v) { return v[j]; });\r\n            if (this.hasTrue(columnArray)) {\r\n                switch (self.data.columns[j].unit) {\r\n                    case 'auto':\r\n                        gridTemplateColumns = concat(gridTemplateColumns, 'auto');\r\n                        break;\r\n\r\n                    case 'fr':\r\n                        gridTemplateColumns = concat(gridTemplateColumns, self.data.columns[j].value + 'fr');\r\n                        break;\r\n\r\n                    case 'px':\r\n                        gridTemplateColumns = concat(gridTemplateColumns, self.data.columns[j].value + 'px');\r\n                        break;\r\n\r\n                    default:\r\n                        break;\r\n                }\r\n            }\r\n        }\r\n\r\n        return {\r\n            gridTemplateRows,\r\n            gridTemplateColumns\r\n        };\r\n    };\r\n\r\n    DynamicGridLayout.prototype.isAllFalse = function (array) {\r\n        return _.every(array, function (a) { return !a} );\r\n    };\r\n\r\n    DynamicGridLayout.prototype.hasTrue = function (array) {\r\n        return !this.isAllFalse(array);\r\n    };\r\n\r\n    DynamicGridLayout.prototype.hideCellsIfNeeded = function (i, j) {\r\n        if (_.all(this.dropsInCells[i][j], function (d) {\r\n            return d.isHidden;\r\n        })) {\r\n            this.cellsContentVisibilities[i][j] = false;\r\n\r\n            var columnArray = this.cellsContentVisibilities.map(function(v) { return v[j]; });\r\n            if (this.isAllFalse(this.cellsContentVisibilities[i])) {\r\n                for (var k = 0; k < this.cellsContentVisibilities[i].length; k++) {\r\n                    this.cellElements[i][k].hide();\r\n                }\r\n                this.$element.css('grid-template-rows', this.generateGridTemplate().gridTemplateRows);\r\n            }\r\n\r\n            if (this.isAllFalse(columnArray)) {\r\n                for (var k = 0; k < columnArray.length; k++) {\r\n                    this.cellElements[k][j].hide();\r\n                }\r\n                this.$element.css('grid-template-columns', this.generateGridTemplate().gridTemplateColumns);\r\n            }\r\n        }\r\n    };\r\n\r\n    DynamicGridLayout.prototype.showCellsIfNeeded = function (i, j) {\r\n        this.cellsContentVisibilities[i][j] = true;\r\n        this.setupCellsVisibilities();\r\n    };\r\n\r\n    DynamicGridLayout.prototype.setupCellsVisibilities = function () {\r\n        for (var i = 0; i < this.cellsContentVisibilities.length; i++) {\r\n            for (var j = 0; j < this.cellsContentVisibilities[i].length; j++) {\r\n                if (!this.cellsContentVisibilities[i][j]) {\r\n                   var columnArray = this.cellsContentVisibilities.map(function(v) { return v[j]; });\r\n                    if (this.isAllFalse(this.cellsContentVisibilities[i]) || this.isAllFalse(columnArray)) {\r\n                        this.cellElements[i][j].hide();\r\n                    } else {\r\n                        this.cellElements[i][j].show();\r\n                    }\r\n                } else {\r\n                    this.cellElements[i][j].show();\r\n                }\r\n            }\r\n        }\r\n\r\n        var gridTemplate = this.generateGridTemplate();\r\n\r\n        this.$element.css('grid-template-rows', gridTemplate.gridTemplateRows);\r\n        this.$element.css('grid-template-columns', gridTemplate.gridTemplateColumns);\r\n    };\r\n\r\n    DynamicGridLayout.prototype.initCellsVisibsWithVal = function (val) {\r\n        const R = this.data.rows.length;\r\n        const C = this.data.columns.length;\r\n\r\n        this.cellsContentVisibilities = Array(R);\r\n        for (var i = 0; i < R; i++) {\r\n            this.cellsContentVisibilities[i] = Array(C).fill(val || false);\r\n        }\r\n    };\r\n\r\n    // We store the actual drop objects in a two dimensional array structure\r\n    // that represents the Dynamic Grid Layout\r\n    DynamicGridLayout.prototype.initDropsInCells = function () {\r\n        const R = this.data.rows.length;\r\n        const C = this.data.columns.length;\r\n        this.dropsInCells = [];\r\n\r\n        for (var i = 0; i < R; i++) {\r\n            this.dropsInCells.push([]);\r\n\r\n            for (var j = 0; j < C; j++) {\r\n            // Fill each element with an empty array\r\n                this.dropsInCells[i].push([]);\r\n            }\r\n        }\r\n    };\r\n\r\n    DynamicGridLayout.prototype.reInitDropsInCells = function () {\r\n        this.initDropsInCells();\r\n    };\r\n\r\n    DynamicGridLayout.prototype.getStates = function () {\r\n        return [\r\n            { key: 'normal', value: 'Normal' },\r\n            { key: 'hover', value: 'Hover' },\r\n        ];\r\n    };\r\n\r\n    return DynamicGridLayout;\r\n});\r\n\n","define('lq/types',[\r\n    'globalize',\r\n    'underscore',\r\n    'lq/constants'\r\n], function (globalize, _, constants) {\r\n\r\n    var yyyy_mm_dd = /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/;\r\n\r\n    var isDate = function (value) {\r\n        return value != null &&\r\n            (_.isDate(value) || (value.constructor === String && value.match(yyyy_mm_dd) != null));\r\n    };\r\n\r\n    var isString = function (value) {\r\n        return typeof (value) === 'string';\r\n    };\r\n\r\n    var isBoolean = function (value) {\r\n        return typeof (value) === 'boolean';\r\n    };\r\n\r\n    var parseBoolean = function (value) {\r\n        value = value.toLowerCase();\r\n\r\n        if (value === 'true')\r\n            return true;\r\n\r\n        if (value === 'false')\r\n            return false;\r\n\r\n        throw new Error('The value \"' + value + '\" cannot be converted to a boolean.');\r\n    };\r\n\r\n    var parseDate = function (value) {\r\n        if (_.isDate(value))\r\n            return value;\r\n\r\n        return globalize.parseDate(value, constants.licquidDateFormat);\r\n    };\r\n\r\n    return {\r\n        isDate: isDate,\r\n        isString: isString,\r\n        isBoolean: isBoolean,\r\n        parseBoolean: parseBoolean,\r\n        parseDate: parseDate\r\n    };\r\n});\n","define('drops/ganttChart/ganttChart',[\r\n    'jquery',\r\n    'globalize',\r\n    'lq/frontendModules',\r\n    'lq/drop',\r\n    'lq/style',\r\n    'lq/constants',\r\n    'lq/types',\r\n], function ($, globalize, FrontendModules, Drop, Style, constants, types) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            // Dependencies\r\n            dependenciesEnabled: false,\r\n            dependencyArrowRemoverEnabled: true,\r\n\r\n            // Holidays\r\n            holidaysEnabled: false,\r\n\r\n            // Grid\r\n            scrollbarVisible: true,\r\n            defaultZoomLevel: 0,\r\n\r\n            // Header \r\n            headerHeight: 80,\r\n            strongYearFormat: \"numeric\",\r\n            strongMonthFormat: \"long\",\r\n            strongWeekDayFormat: \"narrow\",\r\n            mediumMonthFormat: \"long\",\r\n            lightMonthFormat: \"short\",\r\n\r\n            // Bar\r\n            barLabelPosition: \"before\",\r\n            \r\n            // Styling\r\n            boxShadowColor: \"#000000\",\r\n            toolbarIconHoverColor: \"#2a84bf\",\r\n\r\n            headerFill: \"#ffffff\",\r\n            headerRowWrapperLineColor: \"#a6a6a6\",\r\n            headerRowLineColor: \"#b8b8b8\",\r\n            headerRowCellLineColor: \"#c7c7c7\",\r\n            headerHorizontalLineColor: \"#c7c7c7\",\r\n\r\n            cellFill: \"#ffffff\",\r\n            weekendFill: \"#ebe9eb\",\r\n            holidayFill: \"#a6d1ed\",\r\n            horizontalGridLinesColor: \"#c7c7c7\",\r\n            dayLinesColor: \"#c7c7c7\",\r\n            monthLinesColor: \"#b8b8b8\",\r\n            yearLinesColor: \"#a6a6a6\",\r\n        }\r\n    };\r\n\r\n    function GanttChart(options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n\r\n        Style.renderStyles(this);\r\n\r\n        this.bindings = undefined;\r\n    };\r\n\r\n    Drop.extend(GanttChart, Drop);\r\n\r\n    GanttChart.typeName = 'GanttChart';\r\n\r\n    GanttChart.prototype.preRender = function () {\r\n        this.GanttChartComponent = null;\r\n\r\n        this.applyPosition();\r\n\r\n        var self = this;\r\n\r\n        this.tasksDataSourceListenerId = this.piping.datasources.registerDatasourceListener(\r\n            this.data.tasksDataSource,\r\n            function (data) {\r\n                self.taskData = data.results.map(function (result) {\r\n                    return {\r\n                        id: result[self.data.taskId],\r\n                        name: result[self.data.taskName],\r\n                        start: result[self.data.taskStart].substring(0, 10),\r\n                        end: result[self.data.taskEnd].substring(0, 10),\r\n                        position: result[self.data.taskPosition],\r\n                        color: result[self.data.taskColor],\r\n                        textColor: result[self.data.textColor],\r\n                    };\r\n                });\r\n\r\n                if (self.GanttChartComponent) {\r\n                    self.GanttChartComponent.setTasksL(self.taskData);\r\n                }\r\n            });\r\n\r\n        if (this.data.dependenciesEnabled) {\r\n            this.dependenciesDataSourceListenerId = this.piping.datasources.registerDatasourceListener(\r\n                this.data.dependenciesDataSource,\r\n                function (data) {\r\n                    self.dependencyData = data.results.map(function (result) {\r\n                        return {\r\n                            id: result[self.data.dependencyId],\r\n                            fromTaskId: result[self.data.dependencyFromTaskId],\r\n                            toTaskId: result[self.data.dependencyToTaskId]\r\n                        };\r\n                    });\r\n\r\n                    if (self.GanttChartComponent) {\r\n                        self.GanttChartComponent.setDependenciesL(self.dependencyData);\r\n                    }\r\n                }\r\n            );\r\n        }\r\n\r\n        if (this.data.holidaysEnabled) {\r\n            this.holidaysDataSourceListenerId = this.piping.datasources.registerDatasourceListener(\r\n                this.data.holidaysDataSource,\r\n                function (data) {\r\n                    self.holidaysData = data.results.map(function (result) {\r\n                        return {\r\n                            id: result[self.data.holidayId],\r\n                            date: result[self.data.holidayDate].substring(0, 10),\r\n                        };\r\n                    });\r\n\r\n                    if (self.GanttChartComponent) {\r\n                        self.GanttChartComponent.setHolidaysL(self.holidaysData);\r\n                    }\r\n                }\r\n            );\r\n        }\r\n\r\n        FrontendModules.load('ganttChart', true)\r\n            .then(this.showComponent.bind(this));\r\n    };\r\n\r\n    GanttChart.prototype.showComponent = function (GanttChartComponentRendered) {\r\n        var self = this;\r\n\r\n        GanttChartComponentRendered.default({\r\n            changeTask: function (taskId, newStartDate, newEndDate) {\r\n                self.piping.parameters.locals.setValue(self.data.taskIdParameter, taskId);\r\n                self.piping.parameters.locals.setValue(self.data.taskStartParameter, globalize.format(new Date(newStartDate), constants.licquidDateFormat));\r\n                self.piping.parameters.locals.setValue(self.data.taskEndParameter, globalize.format(new Date(newEndDate), constants.licquidDateFormat));\r\n\r\n                self.triggerEventIfEnabled('taskChanged');\r\n            },\r\n            taskClicked: function (taskId, startDate, endDate) {\r\n                self.piping.parameters.locals.setValue(self.data.taskIdParameter, taskId);\r\n                self.piping.parameters.locals.setValue(self.data.taskStartParameter, globalize.format(new Date(startDate), constants.licquidDateFormat));\r\n                self.piping.parameters.locals.setValue(self.data.taskEndParameter, globalize.format(new Date(endDate), constants.licquidDateFormat));\r\n\r\n                self.triggerEventIfEnabled('taskClicked');\r\n            },\r\n            taskHovered: function (taskId, startDate, endDate) {\r\n                self.piping.parameters.locals.setValue(self.data.taskIdParameter, taskId);\r\n                self.piping.parameters.locals.setValue(self.data.taskStartParameter, globalize.format(new Date(startDate), constants.licquidDateFormat));\r\n                self.piping.parameters.locals.setValue(self.data.taskEndParameter, globalize.format(new Date(endDate), constants.licquidDateFormat));\r\n\r\n                self.triggerEventIfEnabled('taskHovered');\r\n            },\r\n            zoomLevelChanged: function (zoomLevel) {\r\n                self.piping.parameters.locals.setValue(self.data.currentZoomLevelParameter, zoomLevel);\r\n\r\n                self.triggerEventIfEnabled('zoomLevelChanged', zoomLevel);\r\n            },\r\n            focusedDateChanged: function (focusedDate) {\r\n                var formattedFocusedDate = globalize.format(new Date(focusedDate), constants.licquidDateFormat);\r\n\r\n                self.piping.parameters.locals.setValue(self.data.currentFocusedDateParameter, formattedFocusedDate);\r\n\r\n                self.triggerEventIfEnabled('focusedDateChanged', formattedFocusedDate);\r\n            },\r\n            addDependency: function (dependencyId, fromTaskId, toTaskId) {\r\n                self.piping.parameters.locals.setValue(self.data.dependencyIdParameter, dependencyId);\r\n                self.piping.parameters.locals.setValue(self.data.dependencyFromTaskIdParameter, fromTaskId);\r\n                self.piping.parameters.locals.setValue(self.data.dependencyToTaskIdParameter, toTaskId);\r\n\r\n                self.triggerEventIfEnabled('dependencyAdded');\r\n            },\r\n            deleteDependency: function (dependencyId) {\r\n                self.piping.parameters.locals.setValue(self.data.dependencyIdParameter, dependencyId);\r\n\r\n                self.triggerEventIfEnabled('dependencyDeleted');\r\n            },\r\n            dependencyClicked: function (dependencyId, fromTaskId, toTaskId) {\r\n                self.piping.parameters.locals.setValue(self.data.dependencyIdParameter, dependencyId);\r\n                self.piping.parameters.locals.setValue(self.data.dependencyFromTaskIdParameter, fromTaskId);\r\n                self.piping.parameters.locals.setValue(self.data.dependencyToTaskIdParameter, toTaskId);\r\n\r\n                self.triggerEventIfEnabled('dependencyClicked');\r\n            },\r\n\r\n        }, this.$element.get(0));\r\n\r\n        if (this.taskData) {\r\n            GanttChartComponentRendered.setTasksL(this.taskData);\r\n        }\r\n\r\n        if (this.dependencyData) {\r\n            GanttChartComponentRendered.setDependenciesL(this.dependencyData);\r\n        }\r\n\r\n        if (this.holidaysData) {\r\n            GanttChartComponentRendered.setHolidaysL(this.holidaysData);\r\n        }\r\n\r\n        if (this.data.useFocusedDateParameter && this.data.focusedDateParameterIsBound) {\r\n            var binding = this.piping.parameters.subscribeForUpdates(this.data.focusedDateParameter, this.updateFocusedDateParameter.bind(this), true);\r\n\r\n            if (!this.bindings) this.bindings = [];\r\n\r\n            this.bindings.push(binding);\r\n        }\r\n\r\n        if (this.data.useStartDateParameter && this.data.viewStartParameterIsBound) {\r\n            var binding = this.piping.parameters.subscribeForUpdates(this.data.viewStart, this.updateViewStartParameter.bind(this), true);\r\n\r\n            if (!this.bindings) this.bindings = [];\r\n\r\n            this.bindings.push(binding);\r\n        }\r\n\r\n        if (this.data.useEndDateParameter && this.data.viewEndParameterIsBound) {\r\n            var binding = this.piping.parameters.subscribeForUpdates(this.data.viewEnd, this.updateViewEndParameter.bind(this), true);\r\n\r\n            if (!this.bindings) this.bindings = [];\r\n\r\n            this.bindings.push(binding);\r\n        }\r\n\r\n        if (this.data.useReadOnlyParameter && this.data.readOnlyParameterIsBound) {\r\n            var binding = this.piping.parameters.subscribeForUpdates(this.data.readOnlyParameter, this.updateReadOnlyParameter.bind(this), true);\r\n\r\n            if (!this.bindings) this.bindings = [];\r\n\r\n            this.bindings.push(binding);\r\n        }\r\n\r\n        GanttChartComponentRendered.configureGanttChart({\r\n            cellHeight: this.data.cellHeight,\r\n            barHeight: this.data.barHeight,\r\n            barLabelPosition: this.data.barLabelPosition,\r\n            toolbarHeight: this.data.toolbarHeight,\r\n            scrollbarVisible: this.data.scrollbarVisible,\r\n            dependenciesEnabled: this.data.dependenciesEnabled,\r\n            dependencyArrowRemoverEnabled: this.data.dependenciesEnabled && this.data.dependencyArrowRemoverEnabled,\r\n            focusedDate: this.data.useFocusedDateParameter ? this.piping.parameters.getValue(this.data.focusedDateParameter) : undefined,\r\n            defaultZoomLevel: this.data.defaultZoomLevel,\r\n            viewStart: this.data.useStartDateParameter ? this.piping.parameters.getValue(this.data.startDateParameter) : undefined,\r\n            viewEnd: this.useEndDateParameter ? this.piping.parameters.getValue(this.data.endDateParameter) : undefined,\r\n            readOnly: this.useReadOnlyParameter ? this.piping.parameters.getValue(this.data.readOnlyParameter) : undefined,\r\n            boxShadowColor: this.data.boxShadowColor,\r\n            toolbarIconHoverColor: this.data.toolbarIconHoverColor,\r\n        });\r\n\r\n        GanttChartComponentRendered.configureHeader({\r\n            languageCode: this.piping.parameters.getValue('CurrentLanguageISOCode'),\r\n            headerHeight: this.data.headerHeight,\r\n            strongYearFormat: this.data.strongYearFormat,\r\n            strongMonthFormat: this.data.strongMonthFormat,\r\n            strongWeekDayFormat: this.data.strongWeekDayFormat,\r\n            mediumMonthFormat: this.data.mediumMonthFormat,\r\n            lightMonthFormat: this.data.lightMonthFormat,\r\n            headerFill: this.data.headerFill,\r\n            headerRowWrapperLineColor: this.data.headerRowWrapperLineColor,\r\n            headerRowLineColor: this.data.headerRowLineColor,\r\n            headerRowCellLineColor: this.data.headerRowCellLineColor,\r\n            headerHorizontalLineColor: this.data.headerHorizontalLineColor,\r\n        });\r\n\r\n        GanttChartComponentRendered.configureCells({\r\n            cellFill: this.data.cellFill,\r\n            weekendFill: this.data.weekendFill,\r\n            holidayFill: this.data.holidayFill,\r\n            horizontalGridLinesColor: this.data.horizontalGridLinesColor,\r\n            dayLinesColor: this.data.dayLinesColor,\r\n            monthLinesColor: this.data.monthLinesColor,\r\n            yearLinesColor: this.data.yearLinesColor,\r\n        });\r\n\r\n        this.GanttChartComponent = GanttChartComponentRendered;\r\n    };\r\n\r\n    GanttChart.prototype.updateFocusedDateParameter = function (focusedDate) {\r\n        if (focusedDate !== undefined && focusedDate !== null)\r\n            this.GanttChartComponent.updateFocusedDateParameter(types.parseDate(focusedDate));\r\n    };\r\n\r\n    GanttChart.prototype.updateViewStartParameter = function (startDate) {\r\n        if (startDate !== undefined && startDate !== null)\r\n            this.GanttChartComponent.updateViewStartParameter(types.parseDate(startDate));\r\n    };\r\n\r\n    GanttChart.prototype.updateViewEndParameter = function (endDate) {\r\n        if (endDate !== undefined && endDate !== null)\r\n            this.GanttChartComponent.updateViewEndParameter(types.parseDate(endDate));\r\n    };\r\n\r\n    GanttChart.prototype.updateReadOnlyParameter = function (readOnly) {\r\n        if (readOnly !== undefined && readOnly !== null)\r\n            this.GanttChartComponent.updateReadOnlyParameter(types.parseBoolean(readOnly));\r\n    };\r\n\r\n    GanttChart.prototype.unsubscribeEventHandlers = function () {\r\n        if (this.tasksDataSourceListenerId) {\r\n            this.piping.datasources.unregisterDatasourceListener(this.tasksDataSourceListenerId);\r\n        }\r\n\r\n        if (this.dependenciesDataSourceListenerId) {\r\n            this.piping.datasources.unregisterDatasourceListener(this.dependenciesDataSourceListenerId);\r\n        }\r\n\r\n        if (this.holidaysDataSourceListenerId) {\r\n            this.piping.datasources.unregisterDatasourceListener(this.holidaysDataSourceListenerId);\r\n        }\r\n\r\n        _.each(this.bindings, function (binding) {\r\n            binding.dispose();\r\n        });\r\n\r\n        this.bindings = undefined;\r\n    };\r\n\r\n    return GanttChart;\r\n});\n","define('drops/normalDistribution/normalDistributionDefaults',[], function () {\r\n    var dropDefaults = {\r\n        data: {\r\n            size: {\r\n                x: 400,\r\n                y: 300,\r\n            },\r\n\r\n            chosenValueDataType: \"unlabeled\", // \"unlabeled\", \"labeled\"\r\n            methodType: \"meanAndSTD\", // \"meanAndSTD\", \"numericDataset\"\r\n            numericIsPopulation: true,\r\n            enableZoom: true,\r\n\r\n            showLegend: true,\r\n            showChosenLegend: false,\r\n            showLowestLegend: true,\r\n            showLowerLegend: true,\r\n            showAverageLegend: true,\r\n            showHigherLegend: true,\r\n            showHighestLegend: true,\r\n            legendPosition: \"bottom\",\r\n\r\n            showTooltip: true,\r\n            maxTooltips: 5,\r\n\r\n            showChosenBars: true,\r\n            barWidth: 5,\r\n            valueRadius: 5,\r\n\r\n            chosenLabel: \"Your Data\",\r\n            lowestLabel: \"Very Low\",\r\n            lowerLabel: \"Below Average\",\r\n            averageLabel: \"Average\",\r\n            higherLabel: \"Above Average\",\r\n            highestLabel: \"Outstanding\",\r\n\r\n            chosenColor: \"rgba(255,0,0,1)\",\r\n            lowestColor: \"rgba(253,1,2,1)\",\r\n            lowerColor: \"rgba(255,149,55,1)\",\r\n            averageColor: \"rgba(252,255,60,1)\",\r\n            higherColor: \"rgba(107,254,41,1)\",\r\n            highestColor: \"rgba(52,49,255,1)\",\r\n\r\n            showXAxis: true,\r\n            axisXLabel: \"\",\r\n            axisXLabelPosition: \"outer-center\",\r\n            axisXPrecision: 2,\r\n\r\n            showYAxis: false,\r\n            axisYLabel: \"\",\r\n            axisYLabelPosition: \"outer-middle\",\r\n            axisYPrecision: 2,\r\n            axisXRemovePadding: false,\r\n            axisXLimit: false,\r\n\r\n            showGridX: false,\r\n            showGridY: false,\r\n\r\n            emptyText: \"No data\",\r\n        },\r\n    };\r\n    return dropDefaults;\r\n});\r\n\n","define('drops/normalDistribution/normalDistribution',[\"jquery\", \"when\", \"lq\", \"lq/drop\", \"lq/cssutil\", \"drops/normalDistribution/normalDistributionDefaults\"], function (\r\n    $,\r\n    when,\r\n    lq,\r\n    Drop,\r\n    cssUtil,\r\n    dropDefaults\r\n) {\r\n    \"use strict\";\r\n\r\n    var d3 = null;\r\n    var c3 = null;\r\n\r\n    var NormalDistribution = function (options) {\r\n        Drop.call(this, $(\"<div/>\"), dropDefaults, options);\r\n\r\n        this.$chart = $(\"<div>\").appendTo(this.$element);\r\n    };\r\n\r\n    Drop.extend(NormalDistribution);\r\n\r\n    NormalDistribution.typeName = \"NormalDistribution\";\r\n\r\n    NormalDistribution.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n\r\n        var deferred = when.defer();\r\n        require([\"d3\", \"c3\"], function (lazyLoadedD3, lazyLoadedC3) {\r\n            cssUtil.requireCss(\"c3.min.css\");\r\n            cssUtil.requireCss(\"drops/normalDistribution/normalDistribution.css\");\r\n\r\n            d3 = lazyLoadedD3;\r\n            c3 = lazyLoadedC3;\r\n            deferred.resolve();\r\n        });\r\n\r\n        this.applyPosition();\r\n\r\n        var self = this;\r\n\r\n        // always needed, but can be empty\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.chosenValueDataSource,\r\n            function (chosen) { \r\n                self.chosenData = chosen;\r\n                self.checkUpdate(); \r\n            }\r\n        );\r\n        \r\n        // numeric approach\r\n        if (self.data.methodType === \"numericDataset\"){\r\n            this.piping.datasources.registerDatasourceListener(\r\n                this.data.numericDatasetDataSource,\r\n                function (numeric) { \r\n                    self.numericData = numeric;\r\n                    self.checkUpdate(); \r\n                }\r\n            );\r\n        }\r\n\r\n        // parametric approach\r\n        if (self.data.methodType === \"meanAndSTD\"){\r\n            this.piping.datasources.registerDatasourceListener(\r\n                this.data.meanAndStdDataSource,\r\n                function (meanAndStd) {              \r\n                    self.meanAndStdData = meanAndStd;\r\n                    self.checkUpdate(); \r\n                }\r\n            );\r\n        }\r\n            \r\n        return deferred.promise;\r\n    };\r\n\r\n    NormalDistribution.prototype.postRender = function () {\r\n        \r\n        this.generateEmptyChart();\r\n    \r\n    };\r\n\r\n    var calcMean = function (arr) {\r\n        var sum = arr.reduce(function (acc, val) {\r\n            return acc + val;\r\n        }, 0);\r\n        return sum / arr.length;\r\n    };\r\n    var calcStandardDeviation = function (arr, sample) {\r\n        var avg = calcMean(arr);\r\n        var squaredDiffs = arr.map(function (val) {\r\n            return Math.pow(val - avg, 2);\r\n        });\r\n        var avgSquaredDiffs;\r\n        if (sample) {\r\n            avgSquaredDiffs = calcMean(squaredDiffs) * (arr.length / (arr.length - 1));\r\n        } else {\r\n            avgSquaredDiffs = calcMean(squaredDiffs);\r\n        }\r\n        return Math.sqrt(avgSquaredDiffs);\r\n    };\r\n    var calcPdf = function (x, mean, stdDeviation) {\r\n        var coefficient = 1 / (stdDeviation * Math.sqrt(2 * Math.PI));\r\n        var exponent = -Math.pow(x - mean, 2) / (2 * Math.pow(stdDeviation, 2));\r\n        return 100 * coefficient * Math.exp(exponent); // in percentages\r\n    };\r\n    var calcCdf = function (x, mean, std) {\r\n        var x = (x - mean) / std;\r\n        var t = 1 / (1 + 0.2315419 * Math.abs(x));\r\n        var d = 0.3989423 * Math.exp((-x * x) / 2);\r\n        var prob = d * t * (0.3193815 + t * (-0.3565638 + t * (1.781478 + t * (-1.821256 + t * 1.330274))));\r\n        if (x > 0) prob = 1 - prob;\r\n        return 100 * prob; // in percentages\r\n    };\r\nvar arrayRange = function (start, stop, count) {\r\n        var step = (stop - start) / count;\r\n        return Array.from({ length: count + 1 }, function (value, index) {\r\n            return start + index * step;\r\n        });\r\n    };\r\nvar generateDataPointsForRange = function (start, end, mean, std, numPoints) {\r\n        var xRange = arrayRange(start, end, numPoints);\r\n        return xRange.map(function (x) {\r\n            return calcPdf(x, mean, std);\r\n        });\r\n    };\r\n    var cleanArray = function (arr, x) {\r\n        arr.sort(function (a, b) {\r\n            return a - b;\r\n        });\r\n        var cleanedArray = [arr[0]];\r\n\r\n        // lower values get priority\r\n        for (var i = 1; i < arr.length; i++) {\r\n            if (arr[i] - cleanedArray[cleanedArray.length - 1] >= x) {\r\n                cleanedArray.push(arr[i]);\r\n            }\r\n        }\r\n\r\n        return cleanedArray;\r\n    };\r\n    NormalDistribution.prototype.generateTooltipPercentile = function (val, mean, std){\r\n        var self = this;\r\n        var tooltipHtml = \"\";\r\n        var val = val.toFixed(self.data.axisXPrecision)\r\n        var percentile = calcCdf(val, mean, std);\r\n        if (percentile > 50) percentile = \"Top \" + (100 - percentile).toFixed(2) + \"%\";\r\n        else percentile = \"Bottom \" + percentile.toFixed(2) + \"%\";\r\n        tooltipHtml += \"<tr><td> \" + ((self.showXAxis && self.data.axisXLabel) || self.valueColumn || \"Value\") + \" </td><td>\" + val + \"</td></tr>\";\r\n        tooltipHtml += '<tr><td colspan=\"2\"><b>' + percentile + \"</b></td></tr>\";\r\n        return tooltipHtml\r\n    }\r\n\r\n    NormalDistribution.prototype.update = function () {\r\n        var self = this;\r\n\r\n        var mean, std;\r\n\r\n        if (self.data.methodType === \"numericDataset\") {\r\n            var population = [];\r\n            if (self.numericData.totalResults) {\r\n                var keys = Object.keys(self.numericData.outputs);\r\n                if (keys.length > 1) return self.generateEmptyChart(\"Too many columns in numeric dataset.\");\r\n                var arrKey = keys[0];\r\n                population = self.numericData.results.map(function (obj) {\r\n                    return obj[arrKey];\r\n                });\r\n\r\n                mean = calcMean(population);\r\n                std = calcStandardDeviation(population, !self.data.numericIsPopulation);\r\n            }\r\n            if (!population.length) return self.generateEmptyChart(); // have to handle this separately\r\n        } else {\r\n            var datarow = self.meanAndStdData.results[0]\r\n            mean = datarow[self.data.meanDataSourceColumn]\r\n            std = datarow[self.data.stdDataSourceColumn]\r\n        }\r\n\r\n        var chosenValues = [];\r\n        if (self.data.chosenValueDataType == \"labeled\") {\r\n            var errors = \"\";\r\n            if (!self.data.valuesDataLabelColumn) {\r\n                errors += \"No label column selected.\\n\";\r\n            }\r\n            if (!self.data.valuesDataValueColumn) {\r\n                errors += \"No value column selected.\\n\";\r\n            }\r\n            if (errors) return self.generateEmptyChart(errors);\r\n\r\n            self.labelColumn = self.data.valuesDataLabelColumn;\r\n            self.valueColumn = self.data.valuesDataValueColumn;\r\n            self.chosenValueNamePairs = self.chosenData.results.reduce(function (acc, obj) {\r\n                acc[obj[self.labelColumn]] = obj[self.valueColumn];\r\n                return acc;\r\n            }, {});\r\n            chosenValues = Object.values(self.chosenValueNamePairs);\r\n        } else {\r\n            self.chosenData = self.chosenData || {\r\n                outputs: [],\r\n                results: [],\r\n                totalResults: 0,\r\n            };\r\n            if (self.chosenData.totalResults) {\r\n                var keys = Object.keys(self.chosenData.outputs)\r\n                if (keys.length > 1) \r\n                    return self.generateEmptyChart(\"Too many columns in chosen dataset.\");\r\n                var chosenKey = Object.keys(self.chosenData.outputs)[0]\r\n                chosenValues = self.chosenData.results.map(function (obj) {\r\n                    return obj[chosenKey];\r\n                });\r\n            }\r\n        }\r\n\r\n        var height = calcPdf(mean, mean, std);\r\n\r\n        var start = mean - 3 * std;\r\n        var end = mean + 3 * std;\r\n        var deviationFragments = 35;\r\n\r\n        var xFarBelowAvg = arrayRange(start, mean - 2 * std, Math.floor(deviationFragments / 6));\r\n        var farBelowAvg = generateDataPointsForRange(start, mean - 2 * std, mean, std, Math.floor(deviationFragments / 6));\r\n\r\n        var xBelowAvg = arrayRange(mean - 2 * std, mean - std, Math.floor(deviationFragments / 6));\r\n        var belowAvg = generateDataPointsForRange(mean - 2 * std, mean - std, mean, std, Math.floor(deviationFragments / 6));\r\n\r\n        var xAvg = arrayRange(mean - std, mean + std, Math.floor(deviationFragments / 3));\r\n        var avg = generateDataPointsForRange(mean - std, mean + std, mean, std, Math.floor(deviationFragments / 3));\r\n\r\n        var xAboveAvg = arrayRange(mean + std, mean + 2 * std, Math.floor(deviationFragments / 6));\r\n        var aboveAvg = generateDataPointsForRange(mean + std, mean + 2 * std, mean, std, Math.floor(deviationFragments / 6));\r\n\r\n        var xFarAboveAvg = arrayRange(mean + 2 * std, end, Math.floor(deviationFragments / 6));\r\n        var farAboveAvg = generateDataPointsForRange(mean + 2 * std, end, mean, std, Math.floor(deviationFragments / 6));\r\n\r\n        var chartSettings = {\r\n            bindto: self.$chart[0],\r\n            size: {\r\n                height: this.data.top != null || this.data.bottom != null ? undefined : self.data.size.y,\r\n            },\r\n            transition: {\r\n                duration: 0,\r\n            },\r\n            data: {\r\n                xs: {\r\n                    farBelowAverage: \"xfba\",\r\n                    belowAverage: \"xba\",\r\n                    average: \"xa\",\r\n                    aboveAverage: \"xaa\",\r\n                    farAboveAverage: \"xfaa\",\r\n                },\r\n                columns: [\r\n                    [\"xfba\", ...xFarBelowAvg],\r\n                    [\"farBelowAverage\", ...farBelowAvg],\r\n                    [\"xba\", ...xBelowAvg],\r\n                    [\"belowAverage\", ...belowAvg],\r\n                    [\"xa\", ...xAvg],\r\n                    [\"average\", ...avg],\r\n                    [\"xaa\", ...xAboveAvg],\r\n                    [\"aboveAverage\", ...aboveAvg],\r\n                    [\"xfaa\", ...xFarAboveAvg],\r\n                    [\"farAboveAverage\", ...farAboveAvg],\r\n                ],\r\n                types: {\r\n                    farBelowAverage: \"area-spline\",\r\n                    belowAverage: \"area-spline\",\r\n                    average: \"area-spline\",\r\n                    aboveAverage: \"area-spline\",\r\n                    farAboveAverage: \"area-spline\",\r\n                },\r\n                names: {\r\n                    farBelowAverage: (self.data.customLabelNames && self.data.lowestLabel) || dropDefaults.data.lowestLabel,\r\n                    belowAverage: (self.data.customLabelNames && self.data.lowerLabel) || dropDefaults.data.lowerLabel,\r\n                    average: (self.data.customLabelNames && self.data.averageLabel) || dropDefaults.data.averageLabel,\r\n                    aboveAverage: (self.data.customLabelNames && self.data.higherLabel) || dropDefaults.data.higherLabel,\r\n                    farAboveAverage: (self.data.customLabelNames && self.data.highestLabel) || dropDefaults.data.highestLabel,\r\n                },\r\n                colors: {\r\n                    farBelowAverage: (self.data.customColors && self.data.lowestColor) || dropDefaults.data.lowestColor,\r\n                    belowAverage: (self.data.customColors && self.data.lowerColor) || dropDefaults.data.lowerColor,\r\n                    average: (self.data.customColors && self.data.averageColor) || dropDefaults.data.averageColor,\r\n                    aboveAverage: (self.data.customColors && self.data.higherColor) || dropDefaults.data.higherColor,\r\n                    farAboveAverage: (self.data.customColors && self.data.highestColor) || dropDefaults.data.highestColor,\r\n                },\r\n            },\r\n            grid: {\r\n                x: {\r\n                    show: self.data.showGridX,\r\n                },\r\n                y: {\r\n                    show: self.data.showGridY,\r\n                },\r\n            },\r\n            bar: {\r\n                width: self.data.barWidth,\r\n            },\r\n            tooltip: {\r\n                show: self.data.showTooltip,\r\n                contents: function (d) {\r\n                    var tooltipHtml = '<div class=\"c3-tooltip-container\">';\r\n                    tooltipHtml += '<table class=\"c3-tooltip\">';\r\n                    tooltipHtml += \"<tbody>\";\r\n\r\n                    var zoomDomain = self.chart ? self.chart.zoom() : [-3 * sigma, 3 * sigma];\r\n                    var joinThreshold = (zoomDomain[1] - zoomDomain[0]) / 80;\r\n                    \r\n                    var count = 0;\r\n                    if (self.chosenPoints) {\r\n                        if (self.data.chosenValueDataType == \"unlabeled\") {\r\n                            var appendAfterCount = \"\";\r\n                            self.chosenPoints.toSorted().forEach(function (p) {\r\n                                if (Math.abs(p - d[0].x) < joinThreshold) {\r\n                                    if (count < self.data.maxTooltips)\r\n                                        appendAfterCount += self.generateTooltipPercentile(p, mean, std)\r\n                                    count++;\r\n                                }\r\n                            });\r\n                            if (appendAfterCount) {\r\n                                tooltipHtml += '<tr><th colspan=\"2\">' + self.data.chosenLabel + \"</th></tr>\";\r\n                                if (count > 1) tooltipHtml += \"<tr><th> Count: </th><th>\" + count + \"</th></tr>\";\r\n                                tooltipHtml += appendAfterCount;\r\n                            }\r\n                        } else {\r\n                            for (var key in self.chosenValueNamePairs) {\r\n                                var val = self.chosenValueNamePairs[key];\r\n                                if (Math.abs(val - d[0].x) < joinThreshold) {\r\n                                    if (count < self.data.maxTooltips) {\r\n                                        tooltipHtml += '<tr><th colspan=\"2\"><b>' + key + \"</b></th></tr>\";\r\n                                        tooltipHtml += self.generateTooltipPercentile(val, mean, std)\r\n                                    }\r\n                                    count++;\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                    if (!count) tooltipHtml += self.generateTooltipPercentile(d[0].x, mean, std)\r\n                    else if (count > self.data.maxTooltips) tooltipHtml += '<tr><td colspan=\"2\"><b> . . . </b></td></tr>';\r\n\r\n                    tooltipHtml += \"</tbody>\";\r\n                    tooltipHtml += \"</table>\";\r\n                    tooltipHtml += \"</div>\";\r\n                    return tooltipHtml;\r\n                },\r\n            },\r\n            axis: {\r\n                x: {\r\n                    show: self.data.showXAxis,\r\n                    label: {\r\n                        text: self.data.axisXLabel,\r\n                        position: self.data.axisXLabelPosition,\r\n                    },\r\n                    tick: {\r\n                        format: d3.format('.' + self.data.axisXPrecision + 'f'),\r\n                        values: [ \r\n                            ...arrayRange(\r\n                                self.data.axisXLimit && self.data.axisXLimitMin ? self.data.axisXLimitMin : start,\r\n                                self.data.axisXLimit && self.data.axisXLimitMax ? self.data.axisXLimitMax : end,\r\n                                6).map(function (n) {\r\n                                return n\r\n                            }),\r\n                        ],\r\n                        multiline: true,\r\n                    },\r\n                    min: self.data.axisXLimit ? self.data.axisXLimitMin : undefined,\r\n                    max: self.data.axisXLimit ? self.data.axisXLimitMax : undefined\r\n                },\r\n                y: {\r\n                    show: self.data.showYAxis,\r\n                    label: {\r\n                        text: self.data.axisYLabel,\r\n                        position: self.data.axisYLabelPosition,\r\n                    },\r\n                    tick: {\r\n                        format: d3.format('.' + self.data.axisYPrecision + 'f'),\r\n                        values: [\r\n                            0,\r\n                            ...arrayRange(start + std, mean, 2).map(function (n) {\r\n                                return calcPdf(n, mean, std)\r\n                            }),\r\n                        ],\r\n                    },\r\n                },\r\n            },\r\n            point: {\r\n                r: self.data.valueRadius,\r\n            },\r\n            legend: {\r\n                show: false, // legends are added later for modularity\r\n                position: self.data.legendPosition\r\n            },\r\n            padding: {\r\n                right: 5 + 5 * self.data.axisXPrecision, // make sure largest x value doens't get cut off\r\n            },\r\n            zoom: {\r\n                enabled: self.data.enableZoom,\r\n            },\r\n        };\r\n\r\n        if (self.data.axisXRemovePadding){\r\n            chartSettings.axis.x.padding = {\r\n                left: 0,\r\n                right: 0,\r\n            }\r\n        }\r\n\r\n        // render only the curve if no value was chosen\r\n        if (chosenValues.length) {\r\n            self.chosenPoints = chosenValues;\r\n            var chosenPdfs = self.chosenPoints.map(function (point) {\r\n                return calcPdf(point, mean, std).toFixed(self.data.axisYPrecision);\r\n            });\r\n\r\n            chartSettings.data.xs.chosenPoints = \"xChosen\";\r\n            chartSettings.data.columns.push([\"xChosen\", ...self.chosenPoints]);\r\n            chartSettings.data.columns.push([\"chosenPoints\", ...chosenPdfs]);\r\n            chartSettings.data.types.chosenPoints = \"scatter\";\r\n\r\n            if (self.data.showChosenBars) {\r\n                chartSettings.data.xs.chosenPointBars = \"xChosen\";\r\n                chartSettings.data.columns.push([\"chosenPointBars\", ...Array(self.chosenPoints.length).fill(height)]);\r\n                chartSettings.data.types.chosenPointBars = \"bar\";\r\n                chartSettings.data.colors.chosenPointBars = (self.data.customColors && self.data.chosenColor) || self.data.chosenColor;\r\n            }\r\n\r\n            chartSettings.data.names.chosenPoints = (self.data.customLabelNames && self.data.chosenLabel) || dropDefaults.data.chosenLabel;\r\n            chartSettings.data.colors.chosenPoints = (self.data.customColors && self.data.chosenColor) || self.data.chosenColor;\r\n\r\n            var chosenPointsPlucked = cleanArray(self.chosenPoints, std / 3);\r\n            chartSettings.axis.x.tick.values = chartSettings.axis.x.tick.values.filter(function (n) {\r\n                return !chosenPointsPlucked.some(function (cp) {\r\n                    return Math.abs(cp - n) < std / 3;\r\n                });\r\n            });\r\n            Array.prototype.push.call(chartSettings.axis.x.tick.values, ...chosenPointsPlucked);\r\n\r\n            var chosenPdfsPlucked = cleanArray(chosenPdfs, height / 18);\r\n            chartSettings.axis.y.tick.values = chartSettings.axis.y.tick.values.filter(function (n) {\r\n                return !chosenPdfsPlucked.some(function (cp) {\r\n                    return Math.abs(cp - n) < height / 18;\r\n                });\r\n            });\r\n            Array.prototype.push.call(chartSettings.axis.y.tick.values, ...chosenPdfs);\r\n            chartSettings.axis.y.tick.values = cleanArray(chartSettings.axis.y.tick.values, height / 18);\r\n        }\r\n\r\n        if (self.chart) {\r\n            self.chart.destroy();\r\n        }\r\n        self.chart = c3.generate(chartSettings);\r\n        if (self.data.showLegend) {\r\n            var toShow = [];\r\n            if (self.data.showChosenLegend && self.chosenPoints) toShow.push(\"chosenPoints\");\r\n            if (self.data.showLowestLegend) toShow.push(\"farBelowAverage\");\r\n            if (self.data.showLowerLegend) toShow.push(\"belowAverage\");\r\n            if (self.data.showAverageLegend) toShow.push(\"average\");\r\n            if (self.data.showHigherLegend) toShow.push(\"aboveAverage\");\r\n            if (self.data.showHighestLegend) toShow.push(\"farAboveAverage\");\r\n            self.chart.legend.show(toShow);\r\n\r\n        }\r\n    };\r\n\r\n    NormalDistribution.prototype.generateEmptyChart = function (text) {\r\n        if (this.chart) {\r\n            this.chart.destroy();\r\n        }\r\n        this.chart = c3.generate({\r\n            bindto: this.$chart[0],\r\n            data: {\r\n                columns: [],\r\n                type: \"line\",\r\n                empty: {\r\n                    label: {\r\n                        text: text || this.data.emptyText,\r\n                    },\r\n                },\r\n            },\r\n        });\r\n    };\r\n\r\n    NormalDistribution.prototype.checkUpdate = function () {\r\n        if (this.chosenData){\r\n            if (this.data.methodType === \"numericDataset\" && this.numericData) {\r\n                this.update()\r\n            } else\r\n            if (this.data.methodType === \"meanAndSTD\" && this.meanAndStdData) {\r\n                this.update()\r\n            } \r\n        }\r\n    }\r\n\r\n    return NormalDistribution;\r\n});\r\n\n","define('drops/contentRegion/contentRegion',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/style',\r\n    'drops/action/action',\r\n    'lq/layouting',\r\n    'lq/responsive',\r\n    'lq/validatorGateway',\r\n    'lq/drop',\r\n    'when',\r\n    'lq/highlighter'\r\n], function ($, _, Style, Action, layouting, responsive, validatorGateway, Drop, when, highlighter) {\r\n    'use strict';\r\n\r\n    var defaults = {\r\n        data: {\r\n            sharedParameters: []\r\n        }\r\n    };\r\n\r\n    var ContentRegion = function (options) {\r\n        Drop.call(this, $('<div/>'), defaults, options);\r\n        Style.renderStyles(this);\r\n\r\n        this.$wrapper = $('<div class=\"licquid-action-wrapper\" />')\r\n            .css({\r\n                width: '100%',\r\n                height: '100%'\r\n            })\r\n            .appendTo(this.$element);\r\n        this.$view = $('<div class=\"licquid-action-view\" />')\r\n            .appendTo(this.$wrapper);\r\n\r\n        this.onEventReceived = this.receiveEvent.bind(this);\r\n\r\n        this.bindingsOfThisAction = undefined;\r\n        this.bindingsOfChildAction = undefined;\r\n    };\r\n\r\n    Drop.extend(ContentRegion, Drop);\r\n\r\n    ContentRegion.typeName = 'ContentRegion';\r\n\r\n    ContentRegion.prototype.preRender = function () {\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n\r\n        if (!validatorGateway.isEnabled()) {\r\n            var self = this;\r\n            this.gatewayCallback = function () {\r\n                if (!self.action) return;\r\n                self.informValidator(self.action, false);\r\n            };\r\n            validatorGateway.whenEnabled(this.gatewayCallback);\r\n        }\r\n    };\r\n\r\n    ContentRegion.prototype.copyParameterToChild = function (sharedParameter, newValue, parameterType) {\r\n        if (!this.action) return;\r\n        this.copyParameterToPiping(this.action.piping, sharedParameter, newValue, parameterType);\r\n    };\r\n\r\n    ContentRegion.prototype.copyParameterFromChild = function (sharedParameter, newValue, parameterType) {\r\n        this.copyParameterToPiping(this.piping, sharedParameter, newValue, parameterType);\r\n    };\r\n\r\n    ContentRegion.prototype.copyParameterToPiping = function (targetPiping, sharedParameter, newValue, parameterType) {\r\n        if (this.updating) return;\r\n\r\n        this.updating = true;\r\n\r\n        if (parameterType === 'local')\r\n            targetPiping.parameters.locals.setValue(sharedParameter, newValue);\r\n\r\n        if (parameterType === 'global')\r\n            targetPiping.parameters.globals.setValue(sharedParameter, newValue);\r\n\r\n        this.updating = false;\r\n    };\r\n\r\n    ContentRegion.prototype.setContent = function (contentArray, locals, insertionPoint) {\r\n        if (!this.bindingsOfThisAction) {\r\n            var self = this;\r\n            this.bindingsOfThisAction = _.map(this.data.sharedParameters, function (sharedParameter) {\r\n                return self.piping.parameters.subscribeForUpdates(sharedParameter, self.copyParameterToChild.bind(self, sharedParameter));\r\n            });\r\n        }\r\n\r\n        if (insertionPoint && insertionPoint !== this.rootDrop.data.id) {\r\n            this.action.setContent(contentArray, locals, insertionPoint);\r\n        } else {\r\n            var self = this;\r\n            var actionData = contentArray[0].action;\r\n\r\n            this.triggerEventIfEnabled('contentLoading', actionData.id);\r\n\r\n            var systemParameters = contentArray[0].systemParameters;\r\n            var localParameters = contentArray.length > 1 ? {} : locals;\r\n\r\n            var action = new Action(actionData.view, this.piping.application.options);\r\n            action.loadData(actionData);\r\n            action.piping = this.piping.createChildPiping(actionData, action, localParameters, systemParameters, this.$wrapper, this.$view, false);\r\n            action.piping.eventing.addAfterInterceptor(this.onEventReceived);\r\n\r\n            action.globals = _.clone(this.piping.parameters.globals.getAll());\r\n            action.locals = _.clone(locals);\r\n\r\n\r\n            var layout = responsive.getCurrentLayout(action);\r\n            layouting.applyLayout(this.$view, layout);\r\n            action.applyLayout(layout);\r\n\r\n            action.createAndRenderDrops($())\r\n                .done(function () {\r\n                    self.triggerEventIfEnabled('contentLoaded', actionData.id);\r\n                });\r\n\r\n            if (validatorGateway.isEnabled()) {\r\n                var canReload = contentArray.length === 1; // only the inner-most action can be reloaded\r\n                this.informValidator(action, canReload);\r\n            }\r\n\r\n            if (contentArray.length > 1) {\r\n                action.setContent(contentArray.slice(1), locals);\r\n            }\r\n\r\n            _.each(this.data.sharedParameters, function (sharedParameter) {\r\n                if (action.piping.parameters.locals.parameterExists(sharedParameter))\r\n                    self.piping.parameters.locals.setValue(sharedParameter, action.piping.parameters.locals.getValue(sharedParameter));\r\n                if (action.piping.parameters.globals.parameterExists(sharedParameter))\r\n                    self.piping.parameters.globals.setValue(sharedParameter, action.piping.parameters.globals.getValue(sharedParameter));\r\n            });\r\n\r\n            var bindingsOfChildAction = _.map(this.data.sharedParameters, function (sharedParameter) {\r\n                return action.piping.parameters.subscribeForUpdates(sharedParameter, self.copyParameterFromChild.bind(self, sharedParameter));\r\n            });\r\n\r\n            if (this.$element.css('position') === 'relative') {\r\n                if (action.data.makeItGrow) {\r\n                    this.$element.css('height', 'auto');\r\n                } else if (isNaN(action.data.top) || isNaN(action.data.height)) {\r\n                    this.$element.css('height', action.data.size.y + 'px');\r\n                } else {\r\n                    this.$element.css('height', '20px');\r\n                }\r\n            }\r\n\r\n            this.cleanupCurrentAction();\r\n\r\n            this.action = action;\r\n            this.bindingsOfChildAction = bindingsOfChildAction;\r\n\r\n            this.piping.busyIndicator.forceHide();\r\n        }\r\n    };\r\n\r\n    ContentRegion.prototype.receiveMessage = function (message) {\r\n        switch (message.type) {\r\n\r\n            case 'RELOAD_ACTION_INSTANCE':\r\n                this.piping.runtime.actionLoader.load(this.action.data.id, this.action.globals, this.action.locals, { ignoreHistory: true }, []);\r\n                break;\r\n\r\n            case 'HIGHLIGHT_ACTION_INSTANCE':\r\n                highlighter.highlight(this.$wrapper);\r\n                break;\r\n\r\n        }\r\n    };\r\n\r\n    ContentRegion.prototype.informValidator = function (action, canReload) {\r\n        validatorGateway.registerListener(action.instanceId, this.receiveMessage.bind(this));\r\n\r\n        validatorGateway.publishEvent({\r\n            type: 'ACTION_INSTANCE_LOADED',\r\n            action: action,\r\n            parentInstanceId: this.rootDrop.instanceId,\r\n            canReload: canReload\r\n        });\r\n    };\r\n\r\n    ContentRegion.prototype.cleanupCurrentAction = function () {\r\n        if (!this.action) return;\r\n\r\n        if (validatorGateway.isEnabled()) {\r\n            validatorGateway.publishEvent({\r\n                type: 'ACTION_INSTANCE_UNLOADING',\r\n                action: this.action\r\n            });\r\n        }\r\n\r\n        this.action.piping.eventing.removeInterceptor(this.onEventReceived);\r\n        this.action.piping.cleanUp();\r\n        this.action.unsubscribeEventHandlersRecursive();\r\n\r\n        if (validatorGateway.isEnabled()) {\r\n            validatorGateway.unregisterListener(this.action.instanceId);\r\n        }\r\n\r\n        this.disposeBindings(this.bindingsOfChildAction);\r\n\r\n        this.action = null;\r\n    };\r\n\r\n    ContentRegion.prototype.disposeBindings = function (bindings) {\r\n        _.each(bindings, function (binding) {\r\n            binding.dispose();\r\n        });\r\n    };\r\n\r\n    ContentRegion.prototype.unsubscribeEventHandlers = function () {\r\n        this.cleanupCurrentAction();\r\n\r\n        if (this.gatewayCallback) {\r\n            validatorGateway.removeCallback(this.gatewayCallback);\r\n        }\r\n\r\n        this.disposeBindings(this.bindingsOfThisAction);\r\n    };\r\n\r\n    ContentRegion.prototype.receiveEvent = function (e) {\r\n        if (!this.data.eventsToCatch || this.data.eventsToCatch.indexOf(e.eventName) === -1)\r\n            return;\r\n\r\n        var deferred = when.defer();\r\n\r\n        var args = e.args ? e.args[0] : null;\r\n        this.piping.eventing.publish(\r\n            this.data.id + '.' + e.eventName,\r\n            undefined,\r\n            args,\r\n            function () {\r\n                deferred.resolve();\r\n            },\r\n            e.parentEventAction);\r\n\r\n        return deferred.promise;\r\n    };\r\n\r\n    return ContentRegion;\r\n});\n","define('drops/scrollSync/scrollSync',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/drop'\r\n], function ($, _, Drop) {\r\n    'use strict';\r\n\r\n    function ScrollSync(options) {\r\n        Drop.call(this, $('<div/>'), options);\r\n\r\n        this.$element.css({\r\n            display: \"none\",\r\n            pointerEvents: \"none\",\r\n        });\r\n    };\r\n\r\n    Drop.extend(ScrollSync, Drop);\r\n\r\n    ScrollSync.typeName = 'ScrollSync';\r\n\r\n    ScrollSync.prototype.postRender = function () {\r\n        var self = this;\r\n\r\n        if (!this.data.syncedDrops) return;\r\n\r\n        this.allScrollableElements = [];\r\n\r\n        this.data.syncedDrops.map(function (syncedDrop) {\r\n            let drop = self.piping.dropFactory.findDropByName(syncedDrop.dropName);\r\n\r\n            switch (drop.type) {\r\n                case \"List\":\r\n                    self.allScrollableElements.push(drop.$scrollableElement);\r\n\r\n                    if (syncedDrop.hideScrollbar) {\r\n                        drop.$scrollableElement.addClass(\"scrollbar-hidden\");\r\n                    }\r\n\r\n                    break;\r\n            }\r\n        })\r\n\r\n        this.allScrollableElements.forEach(function (scrollableElement) {\r\n            self.syncScroll(scrollableElement, self.allScrollableElements);\r\n        });\r\n\r\n        this.attachObserver();\r\n    };\r\n\r\n\r\n    ScrollSync.prototype.syncScroll = function ($element, allElements) {\r\n        this.subscribeEventHandler($element, 'scroll', function () {\r\n            var scrollTop = $element.scrollTop();\r\n            allElements.forEach(function ($otherElement) {\r\n                $otherElement.scrollTop(scrollTop);\r\n            });\r\n        });\r\n    }\r\n\r\n    ScrollSync.prototype.attachObserver = function () {\r\n        /* \r\n            Observe changes to the DOM to handle dynamically added elements\r\n            As of now this is specifically for the Gantt Chart drop, that is rendered later using React\r\n        */\r\n        var self = this;\r\n\r\n        var observer = new MutationObserver(function (mutations) {\r\n            mutations.forEach(function (mutation) {\r\n                if (mutation.type === 'childList') {\r\n                    $(mutation.addedNodes).each(function () {\r\n                        var $newElements = $(this).find('[class*=\"ganttGridContentContainer\"]');\r\n\r\n                        if ($newElements.length > 0) {\r\n                            $newElements.each(function () {\r\n                                self.allScrollableElements.push($(this));\r\n                                self.syncScroll($(this), self.allScrollableElements);\r\n                            });\r\n                        }\r\n                    });\r\n                }\r\n            });\r\n        });\r\n\r\n        observer.observe(document.body, {\r\n            childList: true,\r\n            subtree: true\r\n        });\r\n    }\r\n\r\n    return ScrollSync;\r\n});\r\n\n","define('drops/documentIntelligencePreviewer/documentIntelligencePreviewer',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq',\r\n    'lq/drop',\r\n    'lq/frontendModules',\r\n], function ($, _, lq, Drop, FrontendModules) {\r\n    'use strict';\r\n\r\n    var DocumentIntelligencePreviewer = function (options) {\r\n        Drop.call(this, $('<div>'), options);\r\n    };\r\n\r\n    Drop.extend(DocumentIntelligencePreviewer, Drop);\r\n\r\n    DocumentIntelligencePreviewer.typeName = 'DocumentIntelligencePreviewer';\r\n\r\n    DocumentIntelligencePreviewer.prototype.preRender = function () {\r\n        var self = this;\r\n\r\n        this.DocumentPreviewerComponent = null;\r\n\r\n        this.piping.visibility.apply(this);\r\n        this.applyPosition();\r\n\r\n        FrontendModules.load('documentIntelligenceViewer', true)\r\n            .then(self.showComponent.bind(self));\r\n\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.documentsDatasource,\r\n            function (data) {\r\n                self.documentDataSourceResult = data;\r\n\r\n                if (self.DocumentPreviewerComponent)\r\n                    self.setData(data, self.boundingRegionsDataSourceResult);\r\n            }\r\n        );\r\n\r\n        this.piping.datasources.registerDatasourceListener(\r\n            this.data.boundingRegionsDatasource,\r\n            function (data) {\r\n                self.boundingRegionsDataSourceResult = data;\r\n\r\n                if (self.DocumentPreviewerComponent && self.documentDataSourceResult)\r\n                    self.setData(self.documentDataSourceResult, data);\r\n            }\r\n        );\r\n    };\r\n\r\n    DocumentIntelligencePreviewer.prototype.showComponent = function (DocumentViewerRendered) {\r\n        this.DocumentPreviewerComponent = DocumentViewerRendered;\r\n\r\n        if (this.documentDataSourceResult)\r\n            this.setData(this.documentDataSourceResult, this.boundingRegionsDataSourceResult);\r\n    };\r\n\r\n\r\n    DocumentIntelligencePreviewer.prototype.setData = function (documentDataSourceResult, boundingRegionsDataSourceResult) {\r\n        var self = this;\r\n        var documentUrl = documentDataSourceResult.results[0][this.data.documentsDataColumn].Url;\r\n        var fileName = documentDataSourceResult.results[0][this.data.documentsDataColumn].Filename;\r\n        var url = this.getFullDocumentUrl(documentUrl);\r\n\r\n        var boundingRegions = [];\r\n\r\n        if (boundingRegionsDataSourceResult)\r\n            _.map(boundingRegionsDataSourceResult.results, function(result) {\r\n                var boundingJson = JSON.parse(result[self.data.boundingRegionsColumn]);\r\n                var boundingRegion = {\r\n                    pageNumber: boundingJson.PageNumber,\r\n                    polygon: boundingJson.Polygon,\r\n                    color: result[self.data.colorColumn],\r\n                    tooltip: result[self.data.tooltipColumn]\r\n                };\r\n\r\n                boundingRegions.push(boundingRegion);\r\n            });\r\n\r\n        var config = {\r\n            url: url,\r\n            fileName: fileName,\r\n            borderWidth: this.data.borderWidth,\r\n            backgroundOpacity: this.data.backgroundOpacity,\r\n            initialZoom: this.data.initialZoom\r\n        };\r\n\r\n        this.DocumentPreviewerComponent.default(boundingRegions, config, this.$element.get(0));\r\n    };\r\n\r\n    DocumentIntelligencePreviewer.prototype.getFullDocumentUrl = function (documentUrl) {\r\n        return lq.getFullUrl(lq.getTenantUrl('DynamicContent/DownloadFile?url=' + documentUrl + '&openInBrowser=true'));\r\n    };\r\n\r\n    return DocumentIntelligencePreviewer;\r\n});\r\n\n","define('drops/action/runtimeTypesProvider',[\r\n    'lq/typesProvider',\r\n\r\n    'drops/actionSlideshow/actionSlideshow',\r\n    'drops/autoComplete/autoComplete',\r\n    'drops/baiduMaps/baiduMaps',\r\n    'drops/barCode/barCode',\r\n    'drops/boolImageInput/boolImageInput',\r\n    'drops/boolInput/boolInput',\r\n    'drops/businessProcess/businessProcess',\r\n    'drops/businessProcessCanvas/businessProcessCanvas',\r\n    'drops/button/button',\r\n    'drops/buttonWithIcon/buttonWithIcon',\r\n    'drops/calendar/calendar',\r\n    'drops/calendarDayView/calendarDayView',\r\n    'drops/calendarItem/calendarItem',\r\n    'drops/calendarMonthView/calendarMonthView',\r\n    'drops/calendarWeekView/calendarWeekView',\r\n    'drops/calendarYearView/calendarYearView',\r\n    'drops/bucketDrop/bucketDrop',\r\n    'drops/captcha/captcha',\r\n    'drops/carousel/carousel',\r\n    'drops/carouselControl/carouselControl',\r\n    'drops/carouselPanel/carouselPanel',\r\n    'drops/carouselTabControl/carouselTabControl',\r\n    'drops/chart/chart',\r\n    'drops/chart_v2/chart_v2',\r\n    'drops/circle/circle',\r\n    'drops/circleShape/circleShape',\r\n    'drops/clock/clock',\r\n    'drops/colorPicker/colorPicker',\r\n    'drops/custom/custom',\r\n    'drops/dataGrid/dataGrid',\r\n    'drops/dateInput/dateInput',\r\n    'drops/documentView/documentView',\r\n    'drops/dropdown/dropdown',\r\n    'drops/dropField/dropField',\r\n    'drops/dynamicBarcode/dynamicBarcode',\r\n    'drops/dynamicIframe/dynamicIframe',\r\n    'drops/dynamicImage/dynamicImage',\r\n    'drops/dynamicSlideshow/dynamicSlideshow',\r\n    'drops/dynamicText/dynamicText',\r\n    'drops/dynamicVideo/dynamicVideo',\r\n    'drops/embed/embed',\r\n    'drops/entityFilter/entityFilter',\r\n    'drops/entityFiltersPanel/entityFiltersPanel',\r\n    'drops/errorHandling/errorHandling',\r\n    'drops/frame/frame',\r\n    'drops/gauge/gauge',\r\n    'drops/googleMap/googleMap',\r\n    'drops/grid/grid',\r\n    'drops/gridLayout/gridLayout',\r\n    'drops/helper/helper',\r\n    'drops/hotspot/hotspot',\r\n    'drops/iframe/iframe',\r\n    'drops/image/image',\r\n    'drops/imageKpi/imageKpi',\r\n    'drops/input/input',\r\n    'drops/jitsiMeeting/jitsiMeeting',\r\n    'drops/list/list',\r\n    'drops/listItem/listItem',\r\n    'drops/magicWand/magicWand',\r\n    'drops/matrix/matrix',\r\n    'drops/milestones/milestones',\r\n    'drops/mockList/mockList',\r\n    'drops/modalAction/modalAction',\r\n    'drops/modalPopup/modalPopup',\r\n    'drops/multiSelect/multiSelect',\r\n    'drops/numericInput/numericInput',\r\n    'drops/pagination/pagination',\r\n    'drops/pattern/pattern',\r\n    'drops/payment/payment',\r\n    'drops/planningGraph/planningGraph',\r\n    'drops/progressBar/progressBar',\r\n    'drops/pushNotificationReceiver/pushNotificationReceiver',\r\n    'drops/qrCode/qrCode',\r\n    'drops/radioButton/radioButton',\r\n    'drops/radioButtonGroup/radioButtonGroup',\r\n    'drops/radioButtonGroupV2/radioButtonGroupV2',\r\n    'drops/radioButtonList/radioButtonList',\r\n    'drops/rectangle/rectangle',\r\n    'drops/requirementsGraph/requirementsGraph',\r\n    'drops/richTextEditor/richTextEditor',\r\n    'drops/richTextTemplateEditor/richTextTemplateEditor',\r\n    'drops/runtimeQueryBuilder/runtimeQueryBuilder',\r\n    'drops/simpleSpreadsheet/simpleSpreadsheet',\r\n    'drops/sketchPad/sketchPad',\r\n    'drops/slider/slider',\r\n    'drops/stack/stack',\r\n    'drops/taskProgress/taskProgress',\r\n    'drops/text/text',\r\n    'drops/textArea/textArea',\r\n    'drops/timeInput/timeInput',\r\n    'drops/timer/timer',\r\n    'drops/treeView/treeView',\r\n    'drops/tweetDrop/tweetDrop',\r\n    'drops/video/video',\r\n    'drops/documentPreviewer/documentPreviewer',\r\n    'drops/googlePlaces/googlePlaces',\r\n    'drops/dropDown_v2/dropDown_v2',\r\n    'drops/dynamicGridLayout/dynamicGridLayout',\r\n    'drops/ganttChart/ganttChart',\r\n    'drops/normalDistribution/normalDistribution',\r\n    'drops/contentRegion/contentRegion',\r\n    'drops/scrollSync/scrollSync',\r\n    'drops/documentIntelligencePreviewer/documentIntelligencePreviewer'\r\n], function (TypesProvider) {\r\n    'use strict';\r\n\r\n    var dropTypes = Array.prototype.slice.call(arguments, 1);\r\n    return new TypesProvider(dropTypes);\r\n});\n","define('lq/parameterCollection',[\r\n    'underscore'\r\n], function (_) {\r\n\r\n    var getInternalKey = function (key) {\r\n        // fallback to empty string for EPP\r\n        return (key || '').toLowerCase();\r\n    };\r\n\r\n    var ParameterCollection = function (initialValues, parentCollection) {\r\n        this.parameters = {};\r\n        this.parentCollection = parentCollection;\r\n\r\n        if (initialValues) {\r\n            var self = this;\r\n            _.each(_.keys(initialValues), function (key) {\r\n                self.setValue(key, initialValues[key]);\r\n            });\r\n        }\r\n    };\r\n        \r\n    ParameterCollection.prototype.getValue = function (key) {\r\n        var entry = this.parameters[getInternalKey(key)];\r\n\r\n        if (entry) {\r\n            if (typeof entry.value === 'function')\r\n                return entry.value();\r\n            return entry.value;\r\n        }\r\n\r\n        if (this.parentCollection)\r\n            return this.parentCollection.getValue(key);\r\n        \r\n        return undefined;\r\n    };\r\n\r\n    ParameterCollection.prototype.setValue = function (key, value) {\r\n        if (!key) return;\r\n\r\n        var internalKey = getInternalKey(key);\r\n\r\n        if (this.parameters[internalKey])\r\n            this.parameters[internalKey].value = value;\r\n        else\r\n            this.parameters[internalKey] = {\r\n                key: key,\r\n                value: value\r\n            };\r\n\r\n        this.informSubscribers(internalKey, value);\r\n    };\r\n\r\n    ParameterCollection.prototype.parameterExists = function (key) {\r\n        var internalKey = getInternalKey(key);\r\n        return this.parameters.hasOwnProperty(internalKey);\r\n    };\r\n\r\n    ParameterCollection.prototype.clear = function (key) {\r\n        this.setValue(key, null);\r\n    };\r\n\r\n    ParameterCollection.prototype.remove = function (key) {\r\n        var internalKey = getInternalKey(key);\r\n        delete this.parameters[internalKey];\r\n        this.informSubscribers(internalKey, undefined);\r\n    };\r\n    \r\n    ParameterCollection.prototype.getAll = function () {\r\n        return this.copyInto({});\r\n    };\r\n\r\n    ParameterCollection.prototype.copyInto = function (targetObject) {\r\n        var self = this;\r\n        _.each(_.keys(this.parameters), function (internalKey) {\r\n            var originalKey = self.parameters[internalKey].key;\r\n            var value = self.getValue(internalKey);\r\n            targetObject[originalKey] = value;\r\n        });\r\n\r\n        if (this.parentCollection)\r\n            return this.parentCollection.copyInto(targetObject);\r\n\r\n        return targetObject;\r\n    };\r\n\r\n    ParameterCollection.prototype.createChildScope = function (initialValues) {\r\n        return new ParameterCollection(initialValues, this);\r\n    };\r\n\r\n    ParameterCollection.prototype.subscribeForUpdates = function (parameterName, callback, ctxObject, optionallyTriggerForInitialValue) {\r\n        if(!this.callbacks)\r\n            this.callbacks = {}\r\n\r\n        var internalKey = getInternalKey(parameterName);\r\n\r\n        if(!this.callbacks[internalKey])\r\n            this.callbacks[internalKey] = [];\r\n\r\n        this.callbacks[internalKey].push({\r\n            callback: callback,\r\n            ctxObject: ctxObject\r\n        });\r\n        \r\n        if(optionallyTriggerForInitialValue) {\r\n            setTimeout(this.informSubscribers.bind(this, internalKey, this.getValue(parameterName)), 0);\r\n        }\r\n    };\r\n\r\n    ParameterCollection.prototype.unsubscribeFromUpdates = function (parameterName, callback) {\r\n        if(!this.callbacks)\r\n            return;\r\n\r\n        var internalKey = getInternalKey(parameterName);\r\n\r\n        if(!this.callbacks[internalKey])\r\n            return;\r\n\r\n        this.callbacks[internalKey] = _.filter(this.callbacks[internalKey], function(subscription) {\r\n            return subscription.callback !== callback;\r\n        })\r\n\r\n        if(this.callbacks[internalKey].length === 0)\r\n            delete this.callbacks[internalKey];\r\n    };\r\n\r\n    ParameterCollection.prototype.informSubscribers = function (internalKey, newValue) {\r\n        if(!this.callbacks)\r\n            return;\r\n\r\n        _.each(this.callbacks[internalKey], function (subscription) {\r\n            subscription.callback(newValue, subscription.ctxObject);\r\n        });\r\n    };\r\n\r\n    return ParameterCollection;\r\n});\n","define('lq/parameterShell',[\r\n    'underscore',\r\n    'globalize',\r\n    'lq/constants',\r\n    'lq/parameterCollection',\r\n    'lq/webPushNotifications'\r\n], function (_, globalize, constants, ParameterCollection, webPushNotifications) {\r\n\r\n    var getInternalKey = function (key) {\r\n        // fallback to empty string for EPP\r\n        return (key || '').toLowerCase();\r\n    };\r\n\r\n    var currentDate = function () {\r\n        var today = new Date();\r\n        today.setHours(0, 0, 0, 0);\r\n        return globalize.format(today, constants.licquidDateFormat);\r\n    };\r\n    \r\n    var currentDateTime = function () {\r\n        var now = new Date();\r\n        return globalize.format(now, constants.licquidDateFormat);\r\n    };\r\n    \r\n    var currentTime = function () {\r\n        var now = new Date();\r\n        return globalize.format(now, constants.licquidDateFormat);\r\n    };\r\n    \r\n    var createSystemParameters = function (serverSystemParameters) {\r\n        var systems = {};\r\n\r\n        _.each(_.keys(serverSystemParameters), function (serverSystemParameter) {\r\n            systems[serverSystemParameter] = serverSystemParameters[serverSystemParameter];\r\n        });\r\n\r\n        systems['CurrentDate'] = currentDate;\r\n        systems['CurrentDateTime'] = currentDateTime;\r\n        systems['CurrentTime'] = currentTime;\r\n        systems['CurrentLayoutName'] = '';\r\n\r\n        return systems;\r\n    };\r\n\r\n    var ParameterShell = function (localsCollection, globalsCollection, systemsCollection) {\r\n        this.bindings = {};\r\n        this.locals = localsCollection;\r\n        this.globals = globalsCollection;\r\n        this.systems = systemsCollection;\r\n    };\r\n\r\n    ParameterShell.prototype.fork = function (localParameters, systemParameters) {\r\n        return new ParameterShell(\r\n            new ParameterCollection(localParameters),\r\n            this.globals,\r\n            new ParameterCollection(createSystemParameters(systemParameters))\r\n        );\r\n    };\r\n\r\n    ParameterShell.prototype.getNonSystemParameters = function () {\r\n        var all = {};\r\n\r\n        // local parameters have higher priority so we overwrite any global parameter with the same name here\r\n        this.globals.copyInto(all);\r\n        this.locals.copyInto(all);\r\n\r\n        return all;\r\n    };\r\n\r\n    ParameterShell.prototype.getAll = function () {\r\n        var all = {};\r\n\r\n        // on the server the system parameters have the highest priority\r\n        // on the client they have the lowest priority (for now)\r\n        // reason: some of these parameter names might actually already be in use\r\n        // in some applications\r\n        this.systems.copyInto(all);\r\n        this.globals.copyInto(all);\r\n        this.locals.copyInto(all);\r\n\r\n        return all;\r\n    };\r\n\r\n    ParameterShell.prototype.getValue = function (key) {\r\n        var local = this.locals.getValue(key);\r\n        if (local !== undefined) return local;\r\n\r\n        var global = this.globals.getValue(key);\r\n        if (global !== undefined) return global;\r\n\r\n        return this.systems.getValue(key);\r\n    };\r\n\r\n    //e.g. replaces token '{param0001}' with value of the parameter 'param0001'\r\n    ParameterShell.prototype.replace = function (text) {\r\n        if (!text) return text;\r\n\r\n        var self = this;\r\n        return text.replace(/\\{(\\w+)\\}/g, function (match, paramName) {\r\n            return self.getValue(paramName);\r\n        });\r\n    };\r\n\r\n    ParameterShell.prototype.createChildScope = function (newLocals) {\r\n        return new ParameterShell(\r\n            this.locals.createChildScope(newLocals),\r\n            this.globals,\r\n            this.systems\r\n        );\r\n    };\r\n\r\n    ParameterShell.prototype.subscribeForUpdates = function (parameterName, callback, optionallyTriggerForInitialValue) {\r\n        this.locals.subscribeForUpdates(parameterName, callback, 'local', optionallyTriggerForInitialValue);\r\n        this.globals.subscribeForUpdates(parameterName, callback, 'global', optionallyTriggerForInitialValue);\r\n\r\n        return {\r\n            dispose: this.unsubscribeFromUpdates.bind(this, parameterName, callback)\r\n        };\r\n    };\r\n\r\n    ParameterShell.prototype.unsubscribeFromUpdates = function (parameterName, callback) {\r\n        this.locals.unsubscribeFromUpdates(parameterName, callback);\r\n        this.globals.unsubscribeFromUpdates(parameterName, callback);\r\n    };\r\n    \r\n    return ParameterShell;\r\n});\n","define('lq/clipboard',[\r\n    'jquery'\r\n], function ($) {\r\n    'use strict';\r\n    \r\n    return {\r\n\r\n        copy: function(content) {\r\n            var $textarea = $('<textarea />')\r\n                .val(content)\r\n                .width(0)\r\n                .height(0)\r\n                .appendTo('body')\r\n                .trigger('select');\r\n\r\n            document.execCommand('copy');\r\n\r\n            $textarea.remove();\r\n        }\r\n\r\n    };\r\n});\n","define('lq/runtimeErrorHandler',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq',\r\n    'lq/clipboard'\r\n], function ($, _, lq, clipboard) {\r\n    'use strict';\r\n    \r\n    var defaultMessage = 'Please contact the administrator if the problem persists.';\r\n\r\n    var createErrorDialog = function (options) {\r\n        var $content = $('<div class=\"unhandled-error-dialog-content\" />');\r\n\r\n        var $header = $('<div class=\"unhandled-error-dialog-header\" />')\r\n            .append($('<div class=\"unhandled-error-dialog-title\" />')\r\n                .text('Something went wrong'));\r\n\r\n        if (options.devTools) {\r\n            var $devTools = $('<div class=\"unhandled-error-dev-tools\" />');\r\n\r\n            if (options.bookmark && options.bookmark.rootMorphId) {\r\n                var bookmark = options.bookmark;\r\n\r\n                var queryString = {};\r\n\r\n                if (bookmark.morphId)\r\n                    queryString['dropId'] = bookmark.morphId;\r\n\r\n                if (bookmark.morphName)\r\n                    queryString['dropName'] = bookmark.morphName;\r\n\r\n                var designerPortalUrl = lq.getPortalUrl('rootMorphs/' + bookmark.rootMorphId + '?' + $.param(queryString));\r\n\r\n                $devTools\r\n                    .append($('<a />')\r\n                        .attr('href', designerPortalUrl)\r\n                        .attr('target', '_blank')\r\n                        .text('Open in designer'));\r\n            }\r\n\r\n            if (options.reference) {\r\n                var errorReportPortalUrl = lq.getPortalUrl('errors/sentry/' + options.reference);\r\n\r\n                $devTools\r\n                    .append($('<a />')\r\n                        .attr('href', errorReportPortalUrl)\r\n                        .attr('target', '_blank')\r\n                        .text('View error report'));\r\n            }\r\n\r\n            $header.append($devTools);\r\n        }\r\n\r\n        $content\r\n            .append($('<div class=\"unhandled-error-dialog-message\" />')\r\n                .text(options.message || defaultMessage));\r\n\r\n        if (options.reference) {\r\n            $content.append($('<div />')\r\n                .append($('<span class=\"unhandled-error-dialog-reference\" />')\r\n                    .text('Reference: '))\r\n                .append($('<span />')\r\n                    .text(options.reference))\r\n                .append($('<img class=\"unhandled-error-dialog-clipboard\" />')\r\n                    .attr('title', 'Copy the reference number to the clipboard')\r\n                    .attr('src', require.toUrl('../Images/clipboard.png'))\r\n                    .on('click', function () {\r\n                        clipboard.copy(options.reference);\r\n                    })));\r\n        }\r\n\r\n        var $buttons = $('<div class=\"unhandled-error-dialog-buttons\" />')\r\n            .append($('<button class=\"unhandled-error-dialog-button\" />')\r\n                .text(options.buttonLabel)\r\n                .on('click', options.onButtonClicked));\r\n\r\n        if (options.allowErrorReporting && options.reference) {\r\n            var $submitErrorReport = $('<button class=\"unhandled-error-dialog-button\" />')\r\n                .text('Send error report to administrator')\r\n                .on('click', function () {\r\n                    $.ajax({\r\n                        url: lq.getTenantUrl('ErrorReporting/SubmitErrorReport'),\r\n                        type: 'POST',\r\n                        cache: false,\r\n                        data: JSON.stringify({\r\n                            reference: options.reference\r\n                        }),\r\n                        dataType: 'json',\r\n                        contentType: \"application/json; charset=utf-8\",\r\n                        success: function (data, status, response) {\r\n                            $submitErrorReport.remove();\r\n                            options.onErrorSubmitted();\r\n                        },\r\n                        error: $.noop\r\n                    });\r\n                });\r\n            $buttons.append($submitErrorReport);\r\n        }\r\n\r\n        $content\r\n            .append($buttons);\r\n\r\n        if (options.details) {\r\n            $('<div class=\"unhandled-error-dialog-details\" />')\r\n                .text(options.details)\r\n                .appendTo($content);\r\n        }\r\n\r\n        return $('<div class=\"unhandled-error-layer\" />')\r\n            .append($('<div class=\"unhandled-error-dialog\" />')\r\n                .append($header)\r\n                .append($content));\r\n    };\r\n\r\n    var encounteredErrorReferences = [];\r\n\r\n    var RuntimeErrorHandler = function (busyIndicator, application, $container) {\r\n        this.$container = $container;\r\n        this.application = application;\r\n        this.busyIndicator = busyIndicator;\r\n        this.listeners = [];\r\n        this.pageIsUnloading = false;\r\n        this.listenForPageUnloading();\r\n        this.listenForAjaxErrors();\r\n        this.listenForWindowErrors();\r\n    };\r\n\r\n    RuntimeErrorHandler.prototype.listenForPageUnloading = function () {\r\n        var self = this;\r\n        $(window).on('unload', function () {\r\n            self.pageIsUnloading = true;\r\n        });\r\n\r\n        $(window).on('beforeunload', function () {\r\n            self.pageIsUnloading = true;\r\n        });\r\n    };\r\n\r\n    RuntimeErrorHandler.prototype.listenForAjaxErrors = function () {\r\n        var self = this;\r\n        $(document).ajaxError(function (event, jqxhr, settings) {\r\n            // WHY ignore calls to the designer (when in validation mode) and ignore errors while unloading the page (because aborted requests cause an ajax error)\r\n            if (settings.url.indexOf(lq.getTenantUrl('')) !== 0 || self.pageIsUnloading)\r\n                return;\r\n\r\n            // in some cases a null-object can be returned (e.g. when you're disconnected from the internet).\r\n            // this would cause a infinite loop of error logging\r\n            var error = self.getAjaxError(jqxhr) || {};\r\n\r\n            if (!self.handleError(error.message)) {\r\n                var $layer = createErrorDialog({\r\n                    allowErrorReporting: self.application.allowErrorReporting,\r\n                    reference: error.referenceId,\r\n                    message: error.message,\r\n                    details: error.details,\r\n                    devTools: error.devTools,\r\n                    bookmark: error.bookmark,\r\n                    buttonLabel: 'Continue',\r\n                    onButtonClicked: function () {\r\n                        $layer.remove();\r\n                        self.$container.css('overflow', '');\r\n                    },\r\n                    onErrorSubmitted: function () {\r\n                        $layer.remove();\r\n                        self.$container.css('overflow', '');\r\n                    }\r\n                });\r\n                \r\n                // for now we're assuming we can recover from these errors\r\n                self.$container\r\n                    .css('overflow', 'hidden')\r\n                    .append($layer);\r\n            }\r\n\r\n            self.busyIndicator.forceHide();\r\n        });\r\n    };\r\n\r\n    RuntimeErrorHandler.prototype.getAjaxError = function (jqxhr) {\r\n        try {\r\n            return JSON.parse(jqxhr.responseText);\r\n        } catch (e) { }\r\n\r\n        return {\r\n            message: jqxhr.responseText\r\n        };\r\n    };\r\n\r\n    RuntimeErrorHandler.prototype.listenForWindowErrors = function () {\r\n        var self = this;\r\n        var previousOnerror = window.onerror;\r\n\r\n        window.onerror = function (message, file, lineNumber, colno, error) {\r\n            if (file && file.toLowerCase().indexOf('newrelic.com') > -1)\r\n                return true;\r\n\r\n            if (previousOnerror)\r\n                previousOnerror(message, file, lineNumber, colno, error);\r\n\r\n            var handled = self.handleError(message);\r\n            var stack = self.getStack(error);\r\n            var fullDescription = message + '\\n file: ' + file + ' ' + lineNumber;\r\n            var ravenLogger = lq.getRavenLogger();\r\n            var reference = ravenLogger ? ravenLogger.lastEventId() : undefined;\r\n            var isRavenError = true;\r\n\r\n            if (reference && encounteredErrorReferences.indexOf(reference) === -1) {\r\n                encounteredErrorReferences.push(reference)\r\n            } else {\r\n                // either Raven isn't running or Raven did not catch that last error\r\n                reference = btoa(new Date().toISOString());\r\n                isRavenError = false;\r\n            }\r\n\r\n            $.ajax({\r\n                url: lq.getTenantUrl('ErrorReporting/ReportClientError'),\r\n                type: 'POST',\r\n                cache: false,\r\n                data: JSON.stringify({\r\n                    url: window.location.href,\r\n                    component: lq.getNameOfComponent(),\r\n                    reference: reference,\r\n                    message: fullDescription,\r\n                    file: file,\r\n                    lineNumber: lineNumber,\r\n                    stack: stack\r\n                }),\r\n                dataType: 'json',\r\n                contentType: \"application/json; charset=utf-8\",\r\n                success: function(data, status, response) {\r\n                    self.busyIndicator.forceHide();\r\n                },\r\n                error: $.noop\r\n            });\r\n\r\n            if (!handled) {\r\n                var $layer = createErrorDialog({\r\n                    reference: reference,\r\n                    allowErrorReporting: self.application.allowErrorReporting && isRavenError,\r\n                    message: self.application.showErrorDetails ? fullDescription : null,\r\n                    details: self.application.showErrorDetails ? stack : null,\r\n                    buttonLabel: 'Reload page',\r\n                    onButtonClicked: function () {\r\n                        window.location.reload();\r\n                    },\r\n                    onErrorSubmitted: $.noop\r\n                });\r\n\r\n                self.$container.children().hide();\r\n                // for now we're assuming we cannot recover from these errors\r\n                self.$container.append($layer);\r\n            }\r\n\r\n            return true;\r\n        };\r\n    };\r\n\r\n    RuntimeErrorHandler.prototype.getStack = function (error) {\r\n        if (!error || !error.stack)\r\n            return 'no stack information available';\r\n        return error.stack;\r\n    };\r\n\r\n    RuntimeErrorHandler.prototype.addListener = function (callback) {\r\n        this.listeners.push(callback);\r\n    };\r\n\r\n    RuntimeErrorHandler.prototype.removeListener = function (callback) {\r\n        var index = this.listeners.indexOf(callback);\r\n        if (index >= 0)\r\n            this.listeners.splice(index, 1);\r\n    };\r\n\r\n    RuntimeErrorHandler.prototype.handleError = function (message) {\r\n        var errorArgs = {\r\n            message: message,\r\n            handled: false\r\n        };\r\n\r\n        _.forEach(this.listeners, function (listener) {\r\n            listener(errorArgs);\r\n        });\r\n\r\n        return errorArgs.handled;\r\n    };\r\n\r\n    RuntimeErrorHandler.prototype.showErrorDialog = function (error) {\r\n        var self = this;\r\n\r\n        var $layer = createErrorDialog({\r\n            allowErrorReporting: self.application.allowErrorReporting,\r\n            message: error.message,\r\n            details: self.application.showErrorDetails ? self.getStack(error) : null,\r\n            buttonLabel: 'Reload page',\r\n            onButtonClicked: function () {\r\n                window.location.reload();\r\n            },\r\n            onErrorSubmitted: $.noop\r\n        });\r\n\r\n        self.$container.children().hide();\r\n\r\n        self.$container.append($layer);\r\n    };\r\n\r\n    return RuntimeErrorHandler;\r\n});\n","define('lq/formatter',[\r\n    'globalize',\r\n    'underscore',\r\n    'lq/constants'\r\n], function (globalize, _, constants) {\r\n    'use strict';\r\n\r\n    var getActualType = function (typeOfValue, value) {\r\n        if (typeOfValue === constants.valueTypes.decimal)\r\n            return typeOfValue;\r\n\r\n        if (Object.prototype.toString.call(value) === '[object Number]') {\r\n            if (value % 1 === 0) {\r\n                return constants.valueTypes.integer;\r\n            }\r\n            return constants.valueTypes.decimal;\r\n        }\r\n\r\n        if (_.isDate(value))\r\n            return constants.valueTypes.dateTime;\r\n\r\n        if (typeOfValue)\r\n            return typeOfValue;\r\n\r\n        return constants.valueTypes.string;\r\n    };\r\n\r\n    var Formatter = function (formatting, userLanguage) {\r\n        var cultureId = Math.random().toString();\r\n        var baseCulture = globalize.findClosestCulture(userLanguage);\r\n        globalize.addCultureInfo(cultureId, baseCulture, {\r\n            name: cultureId,\r\n            englishName: cultureId,\r\n            nativeName: cultureId,\r\n            language: cultureId\r\n        });\r\n        this.culture = globalize.culture(cultureId);\r\n        this.culture.numberFormat[','] = formatting.groupSeperator;\r\n        this.culture.numberFormat['.'] = formatting.decimalSeperator;\r\n        this.culture.calendars.standard['/'] = '/'; // this will force globalize.js to use the seperator we give it, instead of defaulting to the seperator defined by the culture\r\n\r\n        this.dateFormat = formatting.dateFormat;\r\n        this.decimalPrecision = formatting.decimalPrecision;\r\n        this.groupSeperator = formatting.groupSeperator;\r\n        this.decimalSeperator = formatting.decimalSeperator;\r\n        this.looseDateFormat = formatting.dateFormat.replace(/[^dMymhHsftzg]/g, '');\r\n    };\r\n\r\n    Formatter.prototype.convertFromLicquidFormat = function (typeOfValue, value) {\r\n        var self = this;\r\n        typeOfValue = getActualType(typeOfValue, value);\r\n\r\n        if (typeOfValue === constants.valueTypes.dateTime) {\r\n            if (value) {\r\n                var theDate = _.isDate(value)\r\n                    ? value\r\n                    : self.parseLicquidDate(value);\r\n                if (!theDate)\r\n                    return value;\r\n\r\n                try {\r\n                    return this.formatDate(theDate);\r\n                }\r\n                catch (err) { // should not break the whole page for format string errors that the user can easily cause\r\n                    return value;\r\n                }\r\n            }\r\n\r\n            return value;\r\n        }\r\n\r\n        if (typeOfValue === constants.valueTypes.decimal || typeOfValue === constants.valueTypes.integer) {\r\n            if (value === null || value === undefined || value === '')\r\n                return null;\r\n\r\n            if (Object.prototype.toString.call(value) !== '[object Number]')\r\n                value = Number(value);\r\n\r\n            if (typeOfValue === constants.valueTypes.decimal)\r\n                return globalize.format(value, \"n\" + this.decimalPrecision, this.culture);\r\n\r\n            return globalize.format(value, \"n0\", this.culture);\r\n        }\r\n\r\n        if (typeOfValue === constants.valueTypes['boolean'])\r\n            return value ? 'true' : 'false';\r\n\r\n        return value;\r\n    };\r\n\r\n    Formatter.prototype.convertToLicquidFormat = function (typeOfValue, value) {\r\n        var self = this;\r\n        typeOfValue = getActualType(typeOfValue, value);\r\n\r\n        if (value) {\r\n            if (typeOfValue === constants.valueTypes.dateTime) {\r\n                var theDate = globalize.parseDate(value, this.dateFormat);\r\n                return self.formatLicquidDate(theDate);\r\n            }\r\n\r\n            if (typeOfValue === constants.valueTypes.decimal || typeOfValue === constants.valueTypes.integer) {\r\n                if (Object.prototype.toString.call(value) === '[object Number]')\r\n                    return value;\r\n\r\n                if (typeOfValue === constants.valueTypes.decimal)\r\n                    return globalize.parseFloat(value, 10, this.culture);\r\n\r\n                return globalize.parseInt(value, 10, this.culture);\r\n            }\r\n        }\r\n\r\n        return value;\r\n    };\r\n\r\n    Formatter.prototype.formatLicquidDate = function (dateValue) {\r\n        return globalize.format(dateValue, constants.licquidDateFormat);\r\n    };\r\n\r\n    Formatter.prototype.parseDate = function (value) {\r\n        return globalize.parseDate(value, [this.dateFormat, this.looseDateFormat]);\r\n    };\r\n\r\n    Formatter.prototype.parseLicquidDate = function (value) {\r\n        return globalize.parseDate(value, constants.licquidDateFormat);\r\n    };\r\n\r\n    // e.g. if the format is dd/MM/yyyy and we type in 01012012, we'll get 01/01/2012\r\n    Formatter.prototype.properlyFormatDate = function (value) {\r\n        var self = this;\r\n        var theDate = self.parseDate(value);\r\n\r\n        if (!theDate)\r\n            return null;\r\n\r\n        return self.formatDate(theDate);\r\n    };\r\n\r\n    Formatter.prototype.formatDate = function (theDate) {\r\n        return globalize.format(theDate, this.dateFormat);\r\n    };\r\n\r\n    return Formatter;\r\n});\n","define('lq/formatting',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/formatter',\r\n    'lq/util'\r\n], function ($, _, Formatter, util) {\r\n\t'use strict';\r\n\r\n\tvar defaultFormatting = {\r\n\t\tid: null,\r\n\t\tname: '',\r\n\t\tdateFormat: 'dd-MM-yyyy',\r\n\t\tdecimalSeperator: '.',\r\n\t\tgroupSeperator: ',',\r\n\t\tdecimalPrecision: 2\r\n\t};\r\n    \r\n    var Formatting = function (data, userLanguage) {\r\n        this.defaultFormattingId = data.defaultFormattingId;\r\n        this.formattersById = {};\r\n        this.defaultFormatter = null;\r\n        this.fallbackFormatter = null;\r\n        this.formattingSettings = util.cloneData(data);\r\n\r\n        this.userLanguage = userLanguage;\r\n        \r\n        if (data.formattings !== null && data.formattings !== undefined && data.formattings !== '')\r\n            _.each(data.formattings, this.addFormatting.bind(this));\r\n\r\n        this.fallbackFormatter = new Formatter(defaultFormatting, this.userLanguage);\r\n    };\r\n\r\n    Formatting.prototype.addFormatting = function (formatting) {\r\n        formatting = util.convertListOfKeyValuesToObject(formatting);\r\n        formatting = $.extend(true, {}, defaultFormatting, formatting);\r\n\r\n        var formatter = this.createFormatter(formatting);\r\n        this.formattersById[formatting.id] = formatter;\r\n\r\n        if (formatting.id === this.defaultFormattingId)\r\n            this.defaultFormatter = formatter;\r\n    };\r\n    \r\n    Formatting.prototype.getAvailableFormattings = function () {\r\n        return util.cloneData(this.formattingSettings.formattings);\r\n    };\r\n\r\n    Formatting.prototype.getSettings = function () {\r\n        return util.cloneData(this.formattingSettings);\r\n    };\r\n\r\n    Formatting.prototype.getFallbackFormatting = function () {\r\n        return util.cloneData(defaultFormatting);\r\n    };\r\n    \r\n    Formatting.prototype.createFormatter = function (formatting) {\r\n        if (!formatting)\r\n            return this.defaultFormatter || this.fallbackFormatter;\r\n\r\n        if (formatting.constructor === String)\r\n            return this.formattersById[formatting] || this.fallbackFormatter;\r\n\r\n        formatting = util.convertListOfKeyValuesToObject(formatting);\r\n        formatting = $.extend(true, {}, defaultFormatting, formatting);\r\n        \r\n        // todo find out why this fallback was built-in\r\n        formatting.decimalSeperator = formatting.decimalSeperator || defaultFormatting.decimalSeperator; // always required to have a decimal separator\r\n\r\n        return new Formatter(formatting, this.userLanguage);\r\n    };\r\n\r\n    return Formatting;\r\n});\n","define('lq/runtimeUrl',[\r\n    'jquery',\r\n    'underscore'\r\n], function ($, _) {\r\n    'use strict';\r\n\r\n    var RuntimeUrl = function (queryString) {\r\n        this.queryString = queryString;\r\n    };\r\n\r\n    RuntimeUrl.parameters = {\r\n        language: 'lq_lang'\r\n    };\r\n\r\n    RuntimeUrl.prototype.overwriteLicquidParameter = function (parameter, value) {\r\n        var self = this;\r\n        _.each(_.keys(RuntimeUrl.parameters), function (paramName) {\r\n            if (RuntimeUrl.parameters[paramName] === parameter)\r\n                self.queryString.updateParameter(parameter, value)\r\n        });\r\n    };\r\n\r\n    RuntimeUrl.prototype.prepare = function (url, queryStringObject) {\r\n        queryStringObject = queryStringObject || {};\r\n\r\n        var self = this;\r\n        _.each(_.keys(RuntimeUrl.parameters), function (paramName) {\r\n            var parameter = RuntimeUrl.parameters[paramName];\r\n            var value = self.queryString.getValueOf(parameter);\r\n            if (value !== undefined) queryStringObject[parameter] = value;\r\n        });\r\n\r\n        if (_.keys(queryStringObject).length)\r\n            return url + '?' + $.param(queryStringObject);\r\n        return url;\r\n    };\r\n\r\n    RuntimeUrl.prototype.openUrl = function (targetUrl, openBlank) {\r\n        if (openBlank) {\r\n            if (window.cordova && window.cordova.InAppBrowser) {\r\n                window.cordova.InAppBrowser.open(targetUrl, \"_system\", \"\");\r\n            } else {\r\n                window.open(targetUrl, \"_blank\");\r\n            }\r\n        } else {\r\n            window.location.href = targetUrl;\r\n        }\r\n    };\r\n    \r\n    return RuntimeUrl;\r\n});\n","define('lq/conditions/operandEvaluator',[\r\n    'jquery',\r\n    'lq/types'\r\n], function ($, types) {\r\n\r\n    var secondValueShouldFallbackToEmptyString = function (first, second) {\r\n        return types.isString(first) && second == null;\r\n    };\r\n\r\n    var valueShouldBeConvertedToNull = function (theValue) {\r\n        if (theValue === null) return false;\r\n\r\n        return theValue === '' ||\r\n            theValue === undefined\r\n\r\n            // we used to do \"==\" instead of \"===\" when evaluating conditions\r\n            // [] == \"\" will return true, but [] === \"\" won't => breaks compatibility\r\n            ||\r\n            (Array.isArray(theValue) && theValue.length === 0);\r\n    };\r\n\r\n    var evaluationHandlers = {\r\n        '=': function (left, right) {\r\n            if (valueShouldBeConvertedToNull(left)) left = null;\r\n            if (valueShouldBeConvertedToNull(right)) right = null;\r\n\r\n            return left === right;\r\n        },\r\n        '≠': function (left, right) {\r\n            if (valueShouldBeConvertedToNull(left)) left = null;\r\n            if (valueShouldBeConvertedToNull(right)) right = null;\r\n\r\n            return left !== right;\r\n        },\r\n        '>': function (left, right) {\r\n            return left > right;\r\n        },\r\n        '≥': function (left, right) {\r\n            return left >= right;\r\n        },\r\n        '≤': function (left, right) {\r\n            return left <= right;\r\n        },\r\n        '<': function (left, right) {\r\n            return left < right;\r\n        },\r\n        'contains': function (left, right) {\r\n            var leftString = String(left).toLowerCase();\r\n            var rightString = String(right).toLowerCase();\r\n            return leftString.indexOf(rightString) != -1;\r\n        }\r\n    };\r\n\r\n    var OperandEvaluator = function (operand) {\r\n        $.extend(this, operand);\r\n    };\r\n\r\n    OperandEvaluator.isCurrentContext = function (operandValue) {\r\n        return operandValue.typeOfValue === 'CurrentContext';\r\n    };\r\n\r\n    OperandEvaluator.isQueryOutput = function (operandValue) {\r\n        return operandValue.typeOfValue === 'Query';\r\n    };\r\n\r\n    OperandEvaluator.isValue = function (operandValue) {\r\n        return operandValue.typeOfValue === 'Value';\r\n    };\r\n\r\n    OperandEvaluator.isParameter = function (operandValue) {\r\n        return operandValue.typeOfValue === 'Parameter';\r\n    };\r\n\r\n    OperandEvaluator.isViewData = function (operandValue) {\r\n        return operandValue.typeOfValue === 'View';\r\n    };\r\n\r\n    OperandEvaluator.prototype.evaluate = function (queryResults, piping, currentContextValue) {\r\n        var left = this.getValue(this.leftValue, queryResults, piping, currentContextValue);\r\n        var right = this.getValue(this.rightValue, queryResults, piping, currentContextValue);\r\n\r\n        if (secondValueShouldFallbackToEmptyString(left, right)) {\r\n            right = '';\r\n        } else if (secondValueShouldFallbackToEmptyString(right, left)) {\r\n            left = '';\r\n        } else if ($.isNumeric(left) && $.isNumeric(right)) {\r\n            left = Number(left);\r\n            right = Number(right);\r\n        } else if (types.isDate(left) && types.isDate(right)) {\r\n            left = new Date(left).getTime();\r\n            right = new Date(right).getTime();\r\n        } else if (types.isBoolean(left) && types.isString(right)) {\r\n            if (right)\r\n                right = types.parseBoolean(right);\r\n            else\r\n                right = !left;\r\n        } else if (types.isBoolean(right) && types.isString(left)) {\r\n            if (left)\r\n                left = types.parseBoolean(left);\r\n            else\r\n                left = !right;\r\n        }\r\n\r\n        var evaluator = evaluationHandlers[this.operator];\r\n        return evaluator(left, right);\r\n    };\r\n\r\n    OperandEvaluator.prototype.getValue = function (operandValue, queryResults, piping, currentContextValue) {\r\n        if (OperandEvaluator.isViewData(operandValue))\r\n            return piping.dropFactory\r\n                .findDropByViewModelKey(operandValue.viewModelKey)\r\n                .getValue();\r\n\r\n        if (OperandEvaluator.isParameter(operandValue))\r\n            return piping.parameters.getValue(operandValue.fixedValue);\r\n\r\n        if (OperandEvaluator.isQueryOutput(operandValue))\r\n            return queryResults[operandValue.query][operandValue.output];\r\n\r\n        if (OperandEvaluator.isValue(operandValue))\r\n            return operandValue.fixedValue;\r\n\r\n        if (OperandEvaluator.isCurrentContext(operandValue))\r\n            return currentContextValue;\r\n\r\n        throw Error('Don\\'t know what to do with \"' + operandValue.typeOfValue + '\".')\r\n    };\r\n\r\n    return OperandEvaluator;\r\n});\n","define('lq/conditions/conditionEvaluator',[\r\n    'underscore',\r\n    'when',\r\n    'lq/events/processEventActionsUrl',\r\n    './operandEvaluator'\r\n], function (_, when, processEventActionsUrl, OperandEvaluator) {\r\n\r\n    var ConditionEvaluator = function (condition) {\r\n        if (!condition.expression)\r\n            throw new Error('The condition \"' + condition.name + '\" has an empty expression.');\r\n\r\n        this.conditionId = condition.id;\r\n        this.conditionName = condition.name;\r\n\r\n        this.expression = this.prepareExpression(condition.expression);\r\n        this.name = condition.name;\r\n\r\n        this.operands = _.map(condition.operands, function (operand) {\r\n            return new OperandEvaluator(operand);\r\n        });\r\n    };\r\n\r\n    ConditionEvaluator.prototype.evaluate = function (piping, forceEvaluation, receivedDatasources, currentContextValue) {\r\n        var d = when.defer();\r\n\r\n        if (this.awaitingQueries) {\r\n            return this.awaitingQueries;\r\n        }\r\n\r\n        if (this.previousExecutionData !== undefined && !forceEvaluation) {\r\n            d.resolve(this.previousExecutionData);\r\n        } else {\r\n            var missingDatasources = this.findAllDataSources(receivedDatasources);\r\n\r\n            var self = this;\r\n            var evaluate = function (queryResults) {\r\n                self.previousExecutionData = self.evaluateOperands(queryResults, piping, currentContextValue);\r\n                delete self.awaitingQueries;\r\n                d.resolve(self.previousExecutionData);\r\n            };\r\n\r\n            if (missingDatasources.length === 0) {\r\n                evaluate(receivedDatasources);\r\n            } else {\r\n                this.awaitingQueries = d.promise;\r\n                this.runQueries(missingDatasources, piping)\r\n                    .done(\r\n                        function (queryResults) {\r\n                            receivedDatasources = receivedDatasources || {};\r\n\r\n                            _.forEach(queryResults, function (queryResult) {\r\n                                receivedDatasources[queryResult[0]] = queryResult[1];\r\n                            });\r\n\r\n                            evaluate(receivedDatasources);\r\n                        },\r\n                        $.noop); // let the global error handling code handle any errors\r\n            }\r\n        }\r\n\r\n        return d.promise;\r\n    };\r\n\r\n    ConditionEvaluator.prototype.findAllDataSources = function (receivedDatasources) {\r\n        var dataSources = [];\r\n\r\n        _.each(this.operands, function (operand) {\r\n            if (OperandEvaluator.isQueryOutput(operand.leftValue) && (!receivedDatasources || !receivedDatasources[operand.leftValue.query]))\r\n                dataSources.push(operand.leftValue.query);\r\n            if (OperandEvaluator.isQueryOutput(operand.rightValue) && (!receivedDatasources || !receivedDatasources[operand.rightValue.query]))\r\n                dataSources.push(operand.rightValue.query);\r\n        });\r\n\r\n        return dataSources;\r\n    };\r\n\r\n    ConditionEvaluator.prototype.runQueries = function (missingDatasources, piping) {\r\n        missingDatasources = _.uniq(missingDatasources);\r\n\r\n        return piping.dispatcher\r\n            .dispatch(processEventActionsUrl.get(piping, 'Conditions', this.name), {\r\n                actionId: piping.actionId,\r\n                globalParameters: piping.parameters.globals.getAll(),\r\n                localParameters: piping.parameters.locals.getAll(),\r\n                requests: _.map(missingDatasources, function (dataSource) {\r\n                    return {\r\n                        eventActionType: 'ExecuteQuery',\r\n                        queryObjectName: dataSource,\r\n                        queries: [\r\n                            {\r\n                                listeners: [],\r\n                                params: {\r\n                                    page: 0,\r\n                                    pageSize: 1\r\n                                }\r\n                            }\r\n                        ]\r\n                    };\r\n                })\r\n            })\r\n            .then(function (results) {\r\n                return _.map(results.responses, function (response, i) {\r\n                    var data = response.results[0].result.results.length > 0 ? response.results[0].result.results[0] : {};\r\n                    return [missingDatasources[i], data];\r\n                });\r\n            });\r\n    };\r\n\r\n    ConditionEvaluator.prototype.evaluateOperands = function (queryResults, piping, currentContextValue) {\r\n        var executableExpression = this.expression;\r\n        var inputValues = {};\r\n\r\n        _.each(this.operands, function (operand) {\r\n            var value = operand.evaluate(queryResults, piping, currentContextValue);\r\n            var nameToReplace = '(^| |\\\\()(' + operand.name + ')((?= |$|\\\\)))';\r\n            inputValues[operand.name] = value;\r\n            executableExpression = executableExpression.replace(new RegExp(nameToReplace, 'g'), '$1' + value + '$3');\r\n        });\r\n\r\n        return {\r\n            condition: this,\r\n            conditionResult: eval('(' + executableExpression + ')'),\r\n            inputValues: inputValues,\r\n        };\r\n    };\r\n\r\n    ConditionEvaluator.prototype.clearResult = function () {\r\n        delete this.previousExecutionData;\r\n    };\r\n\r\n    ConditionEvaluator.prototype.prepareExpression = function (expression) {\r\n        return expression\r\n            .replace(/ and /gi, ' && ')\r\n            .replace(/ or /gi, ' || ');\r\n    };\r\n\r\n    return ConditionEvaluator;\r\n});\n","define('lq/conditions/conditions',[\r\n    'underscore', \r\n    './conditionEvaluator'\r\n], function (_, ConditionEvaluator) {\r\n    'use strict';\r\n\r\n    var Conditions = function (conditions, piping) {\r\n        this.piping = piping;\r\n\r\n        this.conditionsById = {};\r\n        this.evaluatorsById = {};\r\n\r\n        var self = this;\r\n        _.each(conditions, function (condition) {\r\n            self.conditionsById[condition.id] = condition;\r\n        });\r\n    };\r\n\r\n    Conditions.supportedValues = ['View', 'Query', 'Value', 'Parameter'];\r\n    Conditions.supportedOperators = ['=', '≠', '>', '≥', '≤', '<', 'contains'];\r\n\r\n    Conditions.prototype.getConditionEvaluator = function (idOfConditionOrConditionObject) {\r\n        if (_.isString(idOfConditionOrConditionObject)) {\r\n            if (this.evaluatorsById[idOfConditionOrConditionObject] === undefined) {\r\n                if (this.conditionsById[idOfConditionOrConditionObject] === undefined)\r\n                    throw new Error('Condition with id ' + idOfConditionOrConditionObject + ' does not exist.');\r\n\r\n                var condition = this.conditionsById[idOfConditionOrConditionObject];\r\n                this.evaluatorsById[idOfConditionOrConditionObject] = new ConditionEvaluator(condition);\r\n            }\r\n\r\n            return this.evaluatorsById[idOfConditionOrConditionObject];\r\n        }\r\n\r\n        return new ConditionEvaluator(idOfConditionOrConditionObject);\r\n    };\r\n\r\n    return Conditions;\r\n});\n","define('lq/events/actions/eventAction',[\r\n    'jquery',\r\n    'lq/oop'\r\n], function ($, oop) {\r\n\t'use strict';\r\n\r\n\tfunction EventAction(eventData, eventArg) {\r\n\t    this.eventData = eventData;\r\n\t    this.eventArg = eventArg;\r\n\t}\r\n\r\n    oop.makeExtendable(EventAction);\r\n\r\n    EventAction.DO_NOT_BATCH = \"no-batch\";\r\n    EventAction.QUERY_BATCH = \"query-batch\";\r\n    EventAction.COMMAND_BATCH = \"command-batch\";\r\n\r\n    EventAction.prototype.getBatchType = function () {\r\n        throw new Error('please override \\'getBatchType()\\' of EventAction');\r\n    };\r\n\r\n    EventAction.prototype.createEventActionRequest = function () {\r\n        return undefined;\r\n    };\r\n\r\n    EventAction.prototype.execute = function (continuation, eventActionResponse) {\r\n        continuation();\r\n    };\r\n\r\n    EventAction.prototype.eventIsEnabled = function (eventName) {\r\n        return this.eventData.eventing && this.eventData.eventing[eventName] && this.eventData.eventing[eventName].enabled;\r\n    };\r\n\r\n    EventAction.prototype.triggerEvent = function (eventName, next, param) {\r\n        this.piping.eventing.publish(this.eventData.eventing[eventName].raisedEventName, this.eventSource, param, next, this.getEventActionIdentifier());\r\n    };\r\n\r\n    EventAction.prototype.getEventActionIdentifier = function (eventName, next, param) {\r\n        return {\r\n            id: this.eventActionId,\r\n            actionInstanceId: this.rootDrop.instanceId\r\n        };\r\n    };\r\n\r\n    EventAction.prototype.triggerEventIfEnabled = function (eventName, next, param) {\r\n        if (this.eventIsEnabled(eventName)) {\r\n            this.triggerEvent(eventName, next, param);\r\n        }\r\n    };\r\n\r\n    return EventAction;\r\n});\n","define('lq/events/actions/thirdPartyLogin',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq',\r\n    'lq/events/actions/eventAction'\r\n], function ($, _, lq, EventAction) {\r\n    'use strict';\r\n\r\n    function ThirdPartyLogin(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(ThirdPartyLogin, EventAction);\r\n\r\n    ThirdPartyLogin.typeName = 'ThirdPartyLogin';\r\n\r\n    ThirdPartyLogin.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    var getParameterByName = function (parameterName) {\r\n        parameterName = parameterName.replace(/[\\[]/, \"\\\\\\[\").replace(/[\\]]/, \"\\\\\\]\");\r\n        var regexS = \"[\\\\?&]\" + parameterName + \"=([^&#]*)\";\r\n        var regex = new RegExp(regexS);\r\n        var results = regex.exec(window.location.search);\r\n        if (results == null)\r\n            return \"\";\r\n        else\r\n            return decodeURIComponent(results[1].replace(/\\+/g, \" \"));\r\n    };\r\n\r\n    ThirdPartyLogin.prototype.execute = function (continuation) {\r\n        var commandId = getParameterByName('thirdPartyLoginCommandId');\r\n\r\n        // Prevent loop when this is called during PageLoad\r\n        if (!window.isThirdPartyLoginAfterPageLoad && this.eventData.command === commandId) {\r\n            continuation();\r\n            return;\r\n        }\r\n\r\n        //deliberately not calling continuation(), because it makes no sense to continue event execution after a login/redirect\r\n        var appId = getParameterByName('AppId');\r\n\r\n        var url = lq.getTenantUrl('LicquidAction/ThirdPartyLogin'\r\n            + '?commandId=' + encodeURIComponent(this.eventData.command)\r\n            + '&actionId=' + encodeURIComponent(this.piping.actionId)\r\n            + (appId ? '&appId=' + appId : '')\r\n            + '&returnUrl=' + encodeURIComponent(window.location.pathname + window.location.search));\r\n\r\n        var parameters = {};\r\n\r\n        var self = this;\r\n        _.forEach(this.eventData.requiredParameters, function(theParameter) {\r\n            parameters[theParameter] = self.piping.parameters.getValue(theParameter);\r\n        });\r\n\r\n        url += \"&parameters=\" + encodeURIComponent(JSON.stringify(parameters));\r\n\r\n        window.location = url;\r\n    };\r\n\r\n    ThirdPartyLogin.prototype.handleError = function (eventName, defaultMessage, continuation, eventArg) {\r\n        if (this.eventIsEnabled(eventName)) {\r\n            this.triggerEvent(eventName, continuation, eventArg);\r\n        } else {\r\n            alert(defaultMessage);\r\n            continuation();\r\n        }\r\n    };\r\n\r\n    ThirdPartyLogin.afterPageLoad = function (eventing) {\r\n        window.isThirdPartyLoginAfterPageLoad = true;\r\n        \r\n        var commandId = getParameterByName('thirdPartyLoginCommandId');\r\n        var status = getParameterByName('thirdPartyLoginStatus');\r\n        var userId = getParameterByName('thirdPartyLoginUserId');\r\n        var returnUrl = getParameterByName('ReturnUrl');\r\n\r\n        if ((!commandId || !status)) return;\r\n\r\n        var continuation = function () { };\r\n        var commandWasFound = false;\r\n\r\n        _.each(eventing.events.handlers, function (event) {\r\n            _.each(event.actions, function (eventAction) {\r\n                if (commandWasFound) return;\r\n\r\n                if (commandId) {\r\n                    if (eventAction.command === commandId) {\r\n                        commandWasFound = true;\r\n\r\n                        var handler = new ThirdPartyLogin(eventAction);\r\n                        handler.piping = eventing.piping;\r\n                        handler.rootDrop = eventing.eventActionFactory.rootDrop;\r\n                        handler.getEventActionIdentifier = $.noop;\r\n\r\n                        if (status === 'Success') {\r\n                            returnUrl = returnUrl || lq.getTenantUrl('');\r\n\r\n                            if (handler.eventIsEnabled('updatingUserProperties')) {\r\n                                handler.triggerEvent('updatingUserProperties', function () {\r\n                                    eventing.piping.dispatcher.dispatch('LicquidAction/RefreshCurrentUser')\r\n                                        .then(function() {\r\n                                            if (handler.eventIsEnabled('userLoggedIn'))\r\n                                                handler.triggerEvent('userLoggedIn', continuation, returnUrl);\r\n                                            else\r\n                                                continuation();\r\n                                        });\r\n                                });\r\n                            } else if (handler.eventIsEnabled('userLoggedIn')) {\r\n                                handler.triggerEvent('userLoggedIn', continuation, returnUrl);\r\n                            } else {\r\n                                window.location = returnUrl;\r\n                            }\r\n                        } else if (status === 'InvalidCredentials')\r\n                            handler.handleError('invalidCredentials',\r\n                                'The credentials provided are invalid.',\r\n                                continuation);\r\n                        else if (status === 'UserNotFound')\r\n                            handler.handleError('userNotFound',\r\n                                'The user does not exist.',\r\n                                continuation);\r\n                        else if (status === 'UserLoginNotAllowed')\r\n                            handler.handleError('userLoginNotAllowed',\r\n                                'The user is not allowed to log in.',\r\n                                continuation, userId);\r\n                        else if (status === 'AccountLocked')\r\n                            handler.handleError('accountLocked',\r\n                                'Your account has been locked out because of too many invalid login attempts.',\r\n                                continuation);\r\n                        else\r\n                            alert('Unable to login.');\r\n                    }\r\n                }\r\n            });\r\n        });\r\n    }\r\n        \r\n    return ThirdPartyLogin;\r\n});\n","define('lq/events/actions/federatedLogin',[\r\n    'lq',\r\n    'lq/events/actions/eventAction'\r\n], function (lq, EventAction) {\r\n    'use strict';\r\n\r\n    function FederatedLogin(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(FederatedLogin, EventAction);\r\n\r\n    FederatedLogin.typeName = 'FederatedLogin';\r\n\r\n    FederatedLogin.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n        \r\n    var getParameterByName = function (parameterName) {\r\n        parameterName = parameterName.replace(/[\\[]/, \"\\\\\\[\").replace(/[\\]]/, \"\\\\\\]\");\r\n        var regexS = \"[\\\\?&]\" + parameterName + \"=([^&#]*)\";\r\n        var regex = new RegExp(regexS);\r\n        var results = regex.exec(window.location.search);\r\n        if (results == null)\r\n            return \"\";\r\n        else\r\n            return decodeURIComponent(results[1].replace(/\\+/g, \" \"));\r\n    };\r\n\r\n    FederatedLogin.prototype.execute = function (continuation) {\r\n        var commandId = getParameterByName('federatedLoginCommandId');\r\n\r\n        // Prevent loop when this is called during PageLoad\r\n        if (!window.isFederatedLoginAfterPageLoad && this.eventData.command === commandId) {\r\n            continuation();\r\n            return;\r\n        }\r\n\r\n        //deliberately not calling continuation(), because it makes no sense to continue event execution after a login/redirect\r\n\r\n        var url = lq.getTenantUrl('FederatedLogin/Login'\r\n            + '?commandId=' + encodeURIComponent(this.eventData.command)\r\n            + '&actionId=' + encodeURIComponent(this.piping.actionId)\r\n            + '&parameters=' + encodeURIComponent(JSON.stringify(this.piping.parameters.getNonSystemParameters()))\r\n            + '&returnUrl=' + encodeURIComponent(window.location.pathname + window.location.search));\r\n\r\n        window.location.href = url;\r\n    };\r\n\r\n    FederatedLogin.prototype.handleError = function (eventName, defaultMessage, continuation, eventArg) {\r\n        if (this.eventIsEnabled(eventName)) {\r\n            this.triggerEvent(eventName, continuation, eventArg);\r\n        } else {\r\n            alert(defaultMessage);\r\n            continuation();\r\n        }\r\n    };\r\n\r\n    FederatedLogin.afterPageLoad = function (eventing) {\r\n        window.isFederatedLoginAfterPageLoad = true;\r\n        \r\n        var commandId = getParameterByName('federatedLoginCommandId');\r\n        var status = getParameterByName('federatedLoginStatus');\r\n        var userId = getParameterByName('federatedLoginUserId');\r\n        var returnUrl = getParameterByName('ReturnUrl');\r\n\r\n        if ((!commandId || !status)) return;\r\n\r\n        var continuation = function () { };\r\n        var commandWasFound = false;\r\n\r\n        _.each(eventing.events.handlers, function (event) {\r\n            _.each(event.actions, function (eventAction) {\r\n                if (commandWasFound) return;\r\n\r\n                if (commandId) {\r\n                    if (eventAction.command === commandId) {\r\n                        commandWasFound = true;\r\n\r\n                        var handler = new FederatedLogin(eventAction);\r\n                        handler.piping = eventing.piping;\r\n                        handler.rootDrop = eventing.eventActionFactory.rootDrop;\r\n                        handler.getEventActionIdentifier = $.noop;\r\n\r\n                        if (status === 'Success') {\r\n                            returnUrl = returnUrl || lq.getTenantUrl('');\r\n\r\n                            if (handler.eventIsEnabled('userLoggedIn')) {\r\n                                handler.triggerEvent('userLoggedIn', continuation, returnUrl);\r\n                            } else {\r\n                                window.location = returnUrl;\r\n                            }\r\n                        } else if (status === 'InvalidCredentials')\r\n                            handler.handleError('invalidCredentials',\r\n                                'The credentials provided are invalid.',\r\n                                continuation);\r\n                        else if (status === 'UserLoginNotAllowed')\r\n                            handler.handleError('userLoginNotAllowed', \r\n                                'The user is not allowed to log in.',\r\n                                continuation, userId);\r\n                        else if (status === 'AccountLocked')\r\n                            handler.handleError('accountLocked',\r\n                                'Your acccount has been locked out because of too many invalid login attempts.',\r\n                                continuation);\r\n                        else\r\n                            alert('Unable to login.');\r\n                    }\r\n                }\r\n            });\r\n        });\r\n    }\r\n        \r\n    return FederatedLogin;\r\n});\n","define('lq/events/abortError',['lq/oop'], function (oop) {\r\n    'use strict';\r\n\r\n    function AbortError(message) {\r\n        this.name = 'AbortError';\r\n        this.message = message || 'An abort of the current event was requested.';\r\n    }\r\n\r\n    AbortError.prototype = new Error();\r\n    \r\n    return AbortError;\r\n});\n","define('lq/events/eventing',[\r\n    'underscore',\r\n    'lq/events/actions/eventAction',\r\n    'lq/events/actions/thirdPartyLogin',\r\n    'lq/events/actions/federatedLogin',\r\n    'lq/events/processEventActionsUrl',\r\n    'lq/events/abortError',\r\n    'when',\r\n    'lq/validatorGateway'\r\n], function (_, EventAction, ThirdPartyLogin, FederatedLogin, processEventActionsUrl, AbortError, when, validatorGateway) {\r\n    'use strict';\r\n\r\n    var eventCounter = 0;\r\n    \r\n    var nextEventId = function() {\r\n        return ++eventCounter;\r\n    };\r\n    \r\n    var getFullEventName = function (event) {\r\n        return event.eventSourceDropId\r\n            ? (event.eventSourceDropId + '.' + event.eventName)\r\n            : event.eventName;\r\n    };\r\n\r\n    var Eventing = function (events, piping, eventActionFactory, isReloaded) {\r\n        this.events = events;\r\n        this.piping = piping;\r\n        this.eventActionFactory = eventActionFactory;\r\n        this.subcriptions = {};\r\n        this.beforeInterceptors = [];\r\n        this.afterInterceptors = [];\r\n\r\n        this.initialEventNames = isReloaded\r\n            ? this.events.reloadedEventNames\r\n            : this.events.loadedEventNames;\r\n    };\r\n\r\n    Eventing.prototype.onPageLoad = function (callback) {\r\n        if (this.initialEventNames.length === 0) return;\r\n        this.subscribe(this.initialEventNames[0], function(eventSource, eventArg, eventCompleted) {\r\n            callback(eventCompleted);\r\n        });\r\n    };\r\n\r\n    Eventing.prototype.subscribe = function(eventName, callback) {\r\n        if (!this.subcriptions[eventName])\r\n            this.subcriptions[eventName] = [];\r\n        this.subcriptions[eventName].push(callback);\r\n    };\r\n\r\n    Eventing.prototype.addBeforeInterceptor = function (callback) {\r\n        this.beforeInterceptors.push(callback);\r\n    };\r\n\r\n    Eventing.prototype.addAfterInterceptor = function (callback) {\r\n        this.afterInterceptors.push(callback);\r\n    };\r\n\r\n    Eventing.prototype.removeInterceptor = function (callback) {\r\n        var index = this.beforeInterceptors.indexOf(callback);\r\n        if (index >= 0)\r\n            this.beforeInterceptors.splice(index, 1);\r\n        \r\n        index = this.afterInterceptors.indexOf(callback);\r\n        if (index >= 0)\r\n            this.afterInterceptors.splice(index, 1);\r\n    };\r\n\r\n    Eventing.prototype.hasSubscribers = function (eventName) {\r\n        return this.subcriptions[eventName] !== undefined && this.subcriptions[eventName].length > 0;\r\n    };\r\n    \r\n    Eventing.prototype.callBeforeInterceptors = function (eventName, args, parentEventAction) {\r\n        var interceptedEventObj = {\r\n            eventName: eventName,\r\n            parentEventAction: parentEventAction,\r\n            args: [args]\r\n        };\r\n\r\n        return when.all(_.map(this.beforeInterceptors, function (interceptor) {\r\n            return interceptor(interceptedEventObj);\r\n        }));\r\n    };\r\n        \r\n\r\n    Eventing.prototype.publish = function (eventName, eventSource, args, callback, parentEventAction) {\r\n        var subscriptions = this.subcriptions[eventName];\r\n\r\n        var self = this;\r\n\r\n        var interceptedEventObj = {\r\n            eventName: eventName,\r\n            parentEventAction: parentEventAction,\r\n            args: [args]\r\n        };\r\n\r\n        when\r\n            .all(_.map(this.beforeInterceptors, function (interceptor) {\r\n                return interceptor(interceptedEventObj);\r\n            }))\r\n            .then(function() {\r\n                return when\r\n                    .all(_.map(subscriptions, function (subscription) {\r\n                        var deferred = when.defer();\r\n\r\n                        subscription.apply(subscription, [\r\n                            eventSource,\r\n                            args, function () {\r\n                                deferred.resolve();\r\n                            },\r\n                            parentEventAction]);\r\n\r\n                        return deferred.promise;\r\n                    }))\r\n            })\r\n            .then(function () {\r\n                return when.all(_.map(self.afterInterceptors, function (interceptor) {\r\n                    return interceptor(interceptedEventObj);\r\n                }));\r\n            })\r\n            .done(callback);\r\n\r\n        // notify parent about triggered event, but don't send it to just any domain\r\n        if (window.parent) {\r\n            var eventObj = {\r\n                eventName: eventName,\r\n                args: [args] // staying backwards compatible with existing custom code\r\n            };\r\n\r\n            var targetOrigin = self.piping.embeddable\r\n                ? '*'\r\n                : window.location.protocol + '//' + window.location.host;\r\n            window.parent.postMessage(JSON.stringify(eventObj), targetOrigin);\r\n        }\r\n    };\r\n\r\n    Eventing.prototype.bindEvents = function () {\r\n        var self = this;\r\n\r\n        if (self.events.handlers.length === 0) {\r\n            return;\r\n        }\r\n        var eventGroups = _.groupBy(self.events.handlers, function (event) {\r\n            return getFullEventName(event);\r\n        });\r\n        _.each(eventGroups, function (eventGroup) {\r\n            self.bindEventGroup(eventGroup, self.piping);\r\n        });\r\n\r\n        for (var i = 0; i < 20; i++) {\r\n            endLogGroup();\r\n        }\r\n    };\r\n\r\n    Eventing.prototype.triggerPageLoadEvent = function () {\r\n        var self = this;\r\n\r\n        return this.initialEventNames.reduce(\r\n            function (p, eventName) {\r\n                return p.then(function () {\r\n                    return new Promise(function(resolve) {\r\n                        self.publish(eventName, null, null, resolve);\r\n                    });                    \r\n                });\r\n            }, Promise.resolve())\r\n            .then(function () {\r\n                ThirdPartyLogin.afterPageLoad(self);\r\n                FederatedLogin.afterPageLoad(self);\r\n            });\r\n    };\r\n\r\n    Eventing.prototype.bindEventGroup = function (eventGroup, piping) {\r\n        if (eventGroup.length === 0)\r\n            return;\r\n\r\n        var conditionEvaluators = _.chain(eventGroup)\r\n            .filter(function(event) {\r\n                return !!event.conditionId;\r\n            })\r\n            .uniq(function (event) {\r\n                return event.conditionId;\r\n            })\r\n            .map(function ( event) {\r\n                return getConditionEvaluator(event, piping);\r\n            })\r\n            .value();\r\n\r\n        var self = this;\r\n        this.subscribe(\r\n            getFullEventName(eventGroup[0]),\r\n            function (eventSource, eventArg, eventCompleted, parentEventAction) {\r\n                if (eventSource && !eventSource.isBackgroundEvent) {\r\n                    piping.busyIndicator.show();\r\n                }\r\n                \r\n                _.each(conditionEvaluators, function (conditionEvaluator) {\r\n                    conditionEvaluator.clearResult();\r\n                });\r\n\r\n                when\r\n                    .map(eventGroup, function (event) {\r\n                        if (!event.conditionId) {\r\n                            return {\r\n                                event: event,\r\n                                shouldExecute: true\r\n                            };\r\n                        }\r\n    \r\n                        var currentConditionEvaluator = _.findWhere(conditionEvaluators, { conditionId:  event.conditionId });\r\n\r\n                        return currentConditionEvaluator.evaluate(piping)\r\n                            .then(function (conditionData) {\r\n                                return {\r\n                                    event: event,\r\n                                    condition: conditionData,\r\n                                    shouldExecute: event.invertCondition\r\n                                        ? !conditionData.conditionResult\r\n                                        : conditionData.conditionResult\r\n                                };\r\n                            });\r\n                    })\r\n                    .done(function(eventsData) {\r\n                        if(!self.eventActionFactory.rootDrop.isActive()) return;\r\n                        \r\n                        var afterChainCompleted = function () {\r\n                            if (eventSource && !eventSource.isBackgroundEvent) {\r\n                                piping.busyIndicator.hide();\r\n                            }\r\n\r\n                            if (typeof eventCompleted === 'function')\r\n                                eventCompleted();\r\n                        };\r\n\r\n                        var executeNextEvent = function () {\r\n                            if(!self.eventActionFactory.rootDrop.isActive()) return;\r\n                            \r\n                            if (eventsData.length === 0) {\r\n                                afterChainCompleted();\r\n                            } else {\r\n                                var data = eventsData.splice(0, 1)[0];\r\n                                var eventId = nextEventId();\r\n\r\n                                var enterEvent = function () {\r\n                                    if(validatorGateway.isEnabled()) {\r\n                                        validatorGateway.publishEvent({\r\n                                            type: 'ENTERING_EVENT',\r\n                                            status: data.shouldExecute ? 'EXECUTING' : 'SKIPPING',\r\n                                            actionInstanceId: self.eventActionFactory.rootDrop.instanceId,\r\n                                            id: eventId,\r\n                                            name: data.event.eventName,\r\n                                            condition: data.condition ? {\r\n                                                name: data.condition.condition.conditionName,\r\n                                                expression: data.condition.condition.expression,\r\n                                                inverted: data.event.invertCondition,\r\n                                                values: data.condition.inputValues\r\n                                            } : undefined,\r\n                                            parentEventAction: parentEventAction,\r\n                                            locals: piping.parameters.locals.getAll(),\r\n                                            globals: piping.parameters.globals.getAll(),\r\n                                            systems: piping.parameters.systems.getAll(),\r\n                                            sourceDrop: eventSource ? eventSource.drop : undefined\r\n                                        });\r\n                                    }\r\n                                \r\n                                    if(data.shouldExecute) {\r\n                                        createAndExecuteEventActions(eventSource, data.event, eventId, eventArg, executeNextEvent, piping, self);                                   \r\n                                    } else {\r\n                                        executeNextEvent();                                    \r\n                                    }\r\n                                }\r\n                                if (_.some(data.event.actions, function (a) {return !!a.mockMailTo \r\n                                    || (a.redirect && a.redirect.mockJumpOptions && a.redirect.mockJumpOptions.length > 1);}) && !window.validator)  {\r\n                                    validatorGateway.loadValidator();\r\n                                    validatorGateway.whenEnabled(enterEvent);\r\n                                } else enterEvent();\r\n                            }\r\n                        };\r\n\r\n                        executeNextEvent();\r\n                    });\r\n            });\r\n    };\r\n\r\n    var getConditionEvaluator = function (event, piping) {\r\n        return piping.conditions.getConditionEvaluator(event.conditionId);\r\n    };\r\n\r\n    var createAndExecuteEventActions = function (eventSource, event, eventId, eventArg, eventCompleted, piping, eventing) {\r\n        if (event.conditionId) {\r\n            var conditionEvaluator = getConditionEvaluator(event, piping);\r\n            var inverse = \"\";\r\n            if (event.invertCondition) {\r\n                inverse = \"NOT \";\r\n            }            \r\n            startLogGroup(\"EVENT: \" + event.eventName + \" (\" + inverse + conditionEvaluator.conditionName + \")\");\r\n        } else {\r\n            startLogGroup(\"EVENT: \" + event.eventName);\r\n        }\r\n\r\n        var eventActions = eventing.eventActionFactory.createEventActions(event, eventSource, eventArg);\r\n\r\n        if(validatorGateway.isEnabled()) {\r\n            _.each(eventActions, function (eventAction) {\r\n                validatorGateway.publishEvent({\r\n                    type: 'CREATED_EVENT_ACTION',\r\n                    actionInstanceId: eventAction.rootDrop.instanceId,\r\n                    id: eventAction.eventActionId,\r\n                    eventId: eventId,\r\n                    eventActionData: eventAction.eventData\r\n                });\r\n            });\r\n        }\r\n        \r\n        executeEventActionBatches(event, eventSource, eventId, createEventActionBatches(eventActions), eventCompleted, piping, eventing);\r\n    };\r\n\r\n    var createEventActionBatches = function (eventActions) {\r\n        if (eventActions.length === 0) return [];\r\n\r\n        var batches = [];\r\n        var currentBatch = [];\r\n        var currentBatchType;\r\n        batches.push(currentBatch);\r\n\r\n        _.forEach(eventActions, function (eventAction) {\r\n            var batchType = eventAction.getBatchType();\r\n            if ((currentBatchType !== undefined && batchType !== currentBatchType) || batchType === EventAction.DO_NOT_BATCH) {\r\n                if (currentBatch.length > 0) { //no need to start a new batch when the current batch is empty\r\n                    currentBatch = [];\r\n                    batches.push(currentBatch);\r\n                }\r\n            }\r\n            currentBatch.push(eventAction);\r\n            currentBatchType = batchType;\r\n        });\r\n\r\n        return batches;\r\n    };\r\n\r\n    var executeEventActionBatches = function (event, eventSource, eventId, eventActionBatches, eventCompleted, piping, eventing) {\r\n        if(!eventing.eventActionFactory.rootDrop.isActive()) return;\r\n        \r\n        if (eventActionBatches.length === 0) { //all batches have been executed, event execution is finished completely\r\n            endLogGroup();\r\n            if (typeof eventCompleted === \"function\") {\r\n                eventCompleted();\r\n            }\r\n            return;\r\n        }\r\n\r\n        var batch = eventActionBatches[0];\r\n        eventActionBatches.splice(0, 1); //removes first element from array\r\n\r\n        startLogGroup(\"<BATCH>\");\r\n\r\n        var executeNextBatch = function () {\r\n            endLogGroup();\r\n            executeEventActionBatches(event, eventSource, eventId, eventActionBatches, eventCompleted, piping, eventing);\r\n        };\r\n\r\n        createEventActionRequests(piping, eventId, batch, function (eventActionRequests) {\r\n            if (eventActionRequests.length === 0) {\r\n                executeBatch(eventId, batch, executeNextBatch, []);\r\n            } else {\r\n                var parameters = piping.parameters;\r\n                \r\n                var dispatcher = eventSource && eventSource.isBackgroundEvent\r\n                    ? piping.dispatcher.backgroundDispatch\r\n                    : piping.dispatcher.dispatch;\r\n                dispatcher = dispatcher.bind(piping.dispatcher);\r\n\r\n                dispatcher(processEventActionsUrl.get(piping, 'Events'),\r\n                    {\r\n                        actionId: piping.actionId,\r\n                        globalParameters: parameters.globals.getAll(),\r\n                        localParameters: parameters.locals.getAll(),\r\n                        requests: eventActionRequests\r\n                    },\r\n                    function (response) {\r\n                        if(!eventing.eventActionFactory.rootDrop.isActive()) return;\r\n                        \r\n                        if (response.abort) {\r\n                            piping.busyIndicator.forceHide();\r\n\r\n                            if (response.eventName)\r\n                                piping.eventing.publish(response.eventName);\r\n                            else\r\n                                alert(response.reason);\r\n                        } else {\r\n                            _.each(response.globalParameters, function (val, key) {\r\n                                parameters.globals.setValue(key, val);\r\n                            });\r\n\r\n                            _.each(response.localParameters, function (val, key) {\r\n                                parameters.locals.setValue(key, val);\r\n                            });\r\n\r\n                            executeBatch(eventId, batch, executeNextBatch, response.responses);\r\n                        }\r\n                    }\r\n                );\r\n            }\r\n        });\r\n    };\r\n\r\n    var createEventActionRequests = function (piping, eventId, batch, continuation, eventActionRequests) {\r\n        eventActionRequests = eventActionRequests || [];\r\n\r\n        if (batch.length === 0) { //all requests have been created, continue with executing batch\r\n            continuation(eventActionRequests);\r\n            return;\r\n        }\r\n\r\n        var eventAction = batch[0];\r\n\r\n        batch = batch.slice(0); //copies array (we cannot \"clear\" actual batch queue yet, because we still need to execute it)\r\n        batch.splice(0, 1); //removes first element from array\r\n\r\n        var processEventActionRequest = function (request) {\r\n            if (self.stopExecuting) {\r\n                self.stopExecuting = false;\r\n                piping.busyIndicator.forceHide();\r\n                return;\r\n            }\r\n            if (request) {\r\n                request.eventActionId = eventAction.eventActionId;\r\n                eventActionRequests.push(request);\r\n            }\r\n            createEventActionRequests(piping, eventId, batch, continuation, eventActionRequests);\r\n        };\r\n\r\n        if(validatorGateway.isEnabled()) {\r\n            validatorGateway.publishEvent({\r\n                type: 'EXECUTING_EVENT_ACTION',\r\n                actionInstanceId: eventAction.rootDrop.instanceId,\r\n                id: eventAction.eventActionId,\r\n                eventId: eventId,\r\n                eventActionTypeName: eventAction.eventActionTypeName,\r\n                locals: eventAction.piping.parameters.locals.getAll(),\r\n                globals: eventAction.piping.parameters.globals.getAll(),\r\n                systems: eventAction.piping.parameters.systems.getAll()\r\n            });\r\n        }\r\n        \r\n        try {\r\n            var eventActionRequest = eventAction.createEventActionRequest();\r\n        }\r\n        catch (err) {\r\n            if (err instanceof AbortError) {\r\n                self.stopExecuting = true;\r\n            } else {\r\n                throw err;\r\n            }\r\n        }\r\n\r\n        if (typeof eventActionRequest == \"function\") {\r\n            eventActionRequest(function (request) {\r\n                processEventActionRequest(request);\r\n            }, function() {\r\n                self.stopExecuting = true;\r\n                processEventActionRequest(null);\r\n            });\r\n        } else {\r\n            processEventActionRequest(eventActionRequest);\r\n        }\r\n    };\r\n\r\n    var executeBatch = function (eventId, batch, continuation, responses) {\r\n        if (batch.length === 0) { //batch is fully executed, move on to next batch\r\n            continuation();\r\n            return;\r\n        }\r\n\r\n        var eventAction = batch[0];\r\n        batch.splice(0, 1); //removes first element from array\r\n\r\n        var eventActionResponse = _.find(responses, function (response) {\r\n            return response.eventActionId === eventAction.eventActionId;\r\n        });\r\n\r\n        if(validatorGateway.isEnabled() && eventActionResponse) {\r\n            validatorGateway.publishEvent({\r\n                type: 'HANDLING_EVENT_ACTION_RESPONSE',\r\n                actionInstanceId: eventAction.rootDrop.instanceId,\r\n                id: eventAction.eventActionId,\r\n                eventId: eventId,\r\n                eventActionTypeName: eventAction.eventActionTypeName,\r\n                location: eventActionResponse ? 'SERVER' : 'CLIENT',\r\n                locals: eventActionResponse.d\r\n                    ? eventActionResponse.d.beforeParameters.locals\r\n                    : eventAction.piping.parameters.locals.getAll(),\r\n                globals: eventActionResponse.d\r\n                    ? eventActionResponse.d.beforeParameters.globals\r\n                    : eventAction.piping.parameters.globals.getAll(),\r\n                systems: eventActionResponse.d\r\n                    ? eventActionResponse.d.systems\r\n                    : eventAction.piping.parameters.systems.getAll()\r\n            });\r\n        }\r\n        \r\n        startLogGroup(eventAction.eventActionId + \" - \" + eventAction.eventActionTypeName);\r\n        log(\"Executing '\" + eventAction.eventActionId + \" - \" + eventAction.eventActionTypeName + \"'\");\r\n        \r\n        eventAction.execute(\r\n            function () {\r\n                if(validatorGateway.isEnabled()) {\r\n                    validatorGateway.publishEvent({\r\n                        type: 'EXECUTED_EVENT_ACTION',\r\n                        actionInstanceId: eventAction.rootDrop.instanceId,\r\n                        id: eventAction.eventActionId,\r\n                        locals: eventActionResponse && eventActionResponse.d\r\n                            ? eventActionResponse.d.afterParameters.locals\r\n                            : eventAction.piping.parameters.locals.getAll(),\r\n                        globals: eventActionResponse && eventActionResponse.d\r\n                            ? eventActionResponse.d.afterParameters.globals\r\n                            : eventAction.piping.parameters.globals.getAll()\r\n                    });\r\n                }\r\n                \r\n                log(\"Finished executing '\" + eventAction.eventActionId + \" - \" + eventAction.eventActionTypeName + \"'\");\r\n                endLogGroup();\r\n                executeBatch(eventId, batch, continuation, responses);\r\n            }, //continue callback\r\n            eventActionResponse\r\n        );\r\n    };\r\n\r\n    // **************************************************************\r\n    // maybe we should disable log statements by default, because apparently it has some performance impact, \r\n    // it should only be done when validating the page or something like that or with a special argument, or when debugging tools are open, or ...?\r\n    // **************************************************************\r\n\r\n    var logIndentationLevel = 0;\r\n    var log = function (message) {\r\n        if (window.console && window.console.log) {\r\n            var logPrefix = '';\r\n            if (typeof console.group === \"undefined\") {\r\n                for (var i = 0; i < logIndentationLevel; i++) {\r\n                    logPrefix += \"\\t\";\r\n                }\r\n            }\r\n            console.log(logPrefix + message);\r\n        }\r\n    };\r\n\r\n    var startLogGroup = function (groupName) {\r\n        logIndentationLevel++;\r\n        if (typeof console !== \"undefined\" && typeof console.group !== \"undefined\") {\r\n            console.group(groupName);\r\n        } else {\r\n            log(groupName);\r\n        }\r\n    };\r\n\r\n    var endLogGroup = function () {\r\n        logIndentationLevel--;\r\n        if (typeof console !== \"undefined\" && typeof console.groupEnd !== \"undefined\") {\r\n            console.groupEnd();\r\n        }\r\n    };\r\n\r\n    return Eventing;\r\n});\n","define('lq/events/actions/activeDirectorySyncGroupUsers',['lq/events/actions/eventAction'],\r\n    function (EventAction) {\r\n        'use strict';\r\n\r\n        function ActiveDirectorySyncGroupUsers(eventData, eventArg) {\r\n            EventAction.call(this, eventData, eventArg);\r\n            return this;\r\n        }\r\n\r\n        EventAction.extend(ActiveDirectorySyncGroupUsers, EventAction);\r\n\r\n        ActiveDirectorySyncGroupUsers.typeName = 'ActiveDirectorySyncGroupUsers';\r\n\r\n        ActiveDirectorySyncGroupUsers.prototype.getBatchType = function () {\r\n            return EventAction.COMMAND_BATCH;\r\n        };\r\n\r\n        ActiveDirectorySyncGroupUsers.prototype.createEventActionRequest = function () {\r\n            return {\r\n                eventActionType: \"ActiveDirectorySyncGroupUsers\",\r\n                command: this.eventData.command\r\n            };\r\n        };\r\n\r\n        return ActiveDirectorySyncGroupUsers;\r\n    }\r\n);\n","define('lq/events/actions/backgroundTask',[\r\n    'lq/events/actions/eventAction',\r\n    'lq',\r\n    'when'\r\n], function (EventAction, lq, when) {\r\n    'use strict';\r\n\r\n    var pollDelayInMilliseconds = 1000;\r\n\r\n    function BackgroundTask(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(BackgroundTask, EventAction);\r\n\r\n    BackgroundTask.typeName = 'BackgroundTask';\r\n\r\n    BackgroundTask.prototype.getBatchType = function () {\r\n        return this.pollForProgress() ? EventAction.DO_NOT_BATCH : EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    BackgroundTask.prototype.createEventActionRequest = function () {\r\n        if (!this.pollForProgress()) {\r\n            return {\r\n                eventActionType: \"BackgroundTask\",\r\n                morphId: this.eventData.commandId\r\n            };\r\n        }\r\n    };\r\n\r\n    BackgroundTask.prototype.pollForProgress = function () {\r\n        return this.eventData.waitUntilReady || this.eventIsEnabled('completed');\r\n    };\r\n\r\n    BackgroundTask.prototype.updateProgress = function (data) {\r\n        if (data.progress !== this.lastBatchProgress) {\r\n            this.lastBatchProgress = data.progress;\r\n            this.triggerEventIfEnabled('batchProgressChanged', undefined, data.progress);\r\n        }\r\n\r\n        if (data.total !== this.lastBatchTotal) {\r\n            this.lastBatchTotal = data.total;\r\n            this.triggerEventIfEnabled('batchTotalChanged', undefined, data.total);\r\n        }\r\n    }\r\n\r\n    BackgroundTask.prototype.execute = function (continuation, eventActionResponse) {\r\n        var self = this;\r\n        var piping = this.piping;\r\n\r\n        if (!this.eventData.waitUntilReady) {\r\n            continuation();\r\n\r\n            if (!this.pollForProgress()) {\r\n                return;\r\n            }\r\n        }\r\n        else {\r\n            piping.busyIndicator.show();\r\n        }\r\n\r\n        function completed() {\r\n            if (self.eventData.waitUntilReady) {\r\n                piping.busyIndicator.hide();\r\n                continuation();\r\n            }\r\n\r\n            self.triggerEventIfEnabled('completed');\r\n        }\r\n\r\n        this.piping.dispatcher.dispatchToAbsoluteUrl(\r\n            this.piping.url.prepare(lq.getTenantUrl('BackgroundTask/'), {}),\r\n            {\r\n                actionId: this.rootDrop.data.id,\r\n                commandId: this.eventData.commandId,\r\n                globals: piping.parameters.globals.getAll(),\r\n                locals: piping.parameters.locals.getAll()\r\n            })\r\n            .then(function (response) {\r\n                if (!response.ticketNumber) { // neither \"wait until ready\" or \"completed\" event is enabled\r\n                    completed();\r\n                } else {\r\n                    function isReady() {\r\n                        return $.get({\r\n                            url: lq.getTenantUrl('BackgroundTask/IsReady'),\r\n                            data: {\r\n                                ticketNumber: response.ticketNumber\r\n                            },\r\n                            cache: false\r\n                        });\r\n                    }\r\n\r\n                    function poll(operation) {\r\n                        return when.promise(function (resolve, reject, notify) {\r\n                            setTimeout(function () {\r\n                                resolve(operation()\r\n                                    .always(function (data, textStatus, xhr) {\r\n                                        if (xhr.status === 202) {\r\n                                            self.updateProgress(data);\r\n                                            return poll(operation);\r\n                                        } else if (xhr.status === 200) {\r\n                                            self.updateProgress(data);\r\n                                            completed();\r\n                                        }\r\n                                    }));\r\n                            },\r\n                            pollDelayInMilliseconds);\r\n                        });\r\n                    }\r\n\r\n                    poll(isReady);\r\n                }\r\n            })\r\n            .catch(function () {\r\n                alert('Something went wrong while running the background task.');\r\n            });\r\n    };\r\n\r\n    return BackgroundTask;\r\n});\n","define('lq/events/actions/breakEvent',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function BreakEvent(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(BreakEvent, EventAction);\r\n\r\n    BreakEvent.typeName = 'BreakEvent';\r\n\r\n    BreakEvent.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    BreakEvent.prototype.execute = function (continuation, eventActionResponse) {\r\n        this.piping.busyIndicator.forceHide();\r\n    };\r\n\r\n    return BreakEvent;\r\n});\n","define('lq/events/actions/calendarEventsExportCommand',[\r\n    'lq',\r\n    'lq/events/actions/eventAction'\r\n], function (lq,EventAction) {\r\n    'use strict';\r\n\r\n    function CalendarEventsExportCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(CalendarEventsExportCommand, EventAction);\r\n\r\n    CalendarEventsExportCommand.typeName = 'CalendarEventsExportCommand';\r\n\r\n    CalendarEventsExportCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    CalendarEventsExportCommand.prototype.createEventActionRequest = function () {\r\n        if (this.eventData.downloadOnly)\r\n            return undefined;\r\n\r\n        return {\r\n            eventActionType: 'CalendarEventsExport',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    CalendarEventsExportCommand.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (this.eventData.downloadOnly) {\r\n            var queryString = {\r\n                actionId: this.piping.actionId,\r\n                calendarExportId: this.eventData.command,\r\n                parameters: JSON.stringify(this.piping.parameters.getNonSystemParameters() || {})\r\n            };\r\n            var url = this.piping.url.prepare(lq.getTenantUrl('Export/CalendarEvent'), queryString);\r\n            window.location.href = url + '#toolbar=1';\r\n            continuation();\r\n        } else if (eventActionResponse.isDirty) {\r\n            if (this.eventIsEnabled('onExecutionTrailDirty'))\r\n                this.triggerEvent('onExecutionTrailDirty');\r\n            else alert('Could not complete operation, because the data is dirty.');\r\n        } else if (eventActionResponse.download) {\r\n            var queryString = {\r\n                url: eventActionResponse.url,\r\n                filename: eventActionResponse.filename,\r\n                openInBrowser: false\r\n            };\r\n            window.location = this.piping.url.prepare(lq.getTenantUrl('DynamicContent/DownloadFile'), queryString);\r\n            continuation();\r\n        } else continuation();\r\n    };\r\n\r\n    return CalendarEventsExportCommand;\r\n});\n","define('lq/events/actions/calendarURLExport',[\r\n    'lq',\r\n    'lq/events/actions/eventAction'\r\n], function (lq, EventAction) {\r\n    'use strict';\r\n\r\n    var prepareParameter = function(value) {\r\n        return encodeURIComponent(btoa(value));\r\n    };\r\n\r\n    function CalendarURLExport(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(CalendarURLExport, EventAction);\r\n\r\n    CalendarURLExport.typeName = 'CalendarURLExport';\r\n\r\n    CalendarURLExport.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    CalendarURLExport.prototype.execute = function (continuation) {\r\n        var fullUrl = this.getFullUrl().replace(/https?:\\/\\//, 'webcal://');\r\n\r\n        if (this.eventData.targetParameter)\r\n            this.piping.parameters.locals.setValue(this.eventData.targetParameter, fullUrl);\r\n\r\n        if (this.eventData.open) {\r\n            window.location.href = fullUrl;\r\n        }\r\n        \r\n        continuation();\r\n    };\r\n\r\n    CalendarURLExport.prototype.getFullUrl = function () {\r\n        var url = lq.getTenantUrl('Export/Calendar/' + prepareParameter(this.piping.actionId) + '/' + prepareParameter(this.eventData.command)) + '/';\r\n\r\n        if (this.eventData.identifierParameter) {\r\n            var parameterValue = this.piping.parameters.getValue(this.eventData.identifierParameter);\r\n            if (parameterValue) url += prepareParameter(parameterValue);\r\n        }\r\n\r\n        return lq.getFullUrl(url);\r\n    };\r\n\r\n    return CalendarURLExport;\r\n});\n","define('lq/events/actions/changeParameter',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    var shouldSetParameter = function (options, targetParameters) {\r\n        if (options.updateType === 'always') {\r\n            return true;\r\n        }\r\n\r\n        var value = targetParameters.getValue(options.parameter);\r\n        return value === null || value === undefined;\r\n    };\r\n\r\n    function ChangeParameter(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(ChangeParameter, EventAction);\r\n\r\n    ChangeParameter.typeName = 'ChangeParameter';\r\n\r\n    ChangeParameter.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n    \r\n    ChangeParameter.prototype.execute = function (continuation) {\r\n        var self = this;\r\n\r\n        var options = self.eventData.setParameter;\r\n        \r\n        var targetParameters = options.global\r\n            ? this.piping.parameters.globals\r\n            : this.piping.parameters.locals;\r\n\r\n        if (options.updateType === 'remove') {\r\n            targetParameters.remove(options.parameter);\r\n        } else if (options.updateType === 'clear') {\r\n            targetParameters.clear(options.parameter);\r\n        } else if (shouldSetParameter(options, targetParameters)) {\r\n            targetParameters.setValue(options.parameter, options.value);\r\n\t    }\r\n\r\n\t    continuation();\r\n    };\r\n\r\n    return ChangeParameter;\r\n});\n","define('lq/events/actions/changePassword',[\r\n    'jquery',\r\n    'lq',\r\n    'lq/events/actions/eventAction'\r\n], function ($, lq, EventAction) {\r\n    'use strict';\r\n\r\n    function ChangePassword(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(ChangePassword, EventAction);\r\n\r\n    ChangePassword.typeName = 'ChangePassword';\r\n\r\n    ChangePassword.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n    \r\n    ChangePassword.prototype.getValueOf = function (dropName) {\r\n        return this.piping.dropFactory\r\n            .findDropByViewModelKey(dropName)\r\n            .getValue();\r\n    };\r\n    \r\n    ChangePassword.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'ChangePassword',\r\n            command: this.eventData.command,\r\n            newPassword: this.getValueOf(this.eventData.passwordField),\r\n            newPasswordConfirmation: this.eventData.passwordConfirmationField ? this.getValueOf(this.eventData.passwordConfirmationField) : null,\r\n            oldPassword: this.eventData.oldPasswordField ? this.getValueOf(this.eventData.oldPasswordField) : null\r\n        };\r\n    };\r\n\r\n    ChangePassword.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (eventActionResponse && eventActionResponse.status === 'invalidOldPassword') {\r\n            this.handleError('invalidOldPassword', 'The old password is wrong.', continuation);\r\n        } else if (eventActionResponse && eventActionResponse.status === 'invalidPasswordConfirmation') {\r\n            this.handleError('invalidPasswordConfirmation', 'Passwords do not match.', continuation);\r\n        } else if (eventActionResponse && eventActionResponse.status === 'invalidNewPassword') {\r\n            this.handleError('invalidNewPassword', 'The new password cannot be left empty.', continuation);\r\n        } else if (eventActionResponse && eventActionResponse.status === 'invalidPasswordLength') {\r\n            this.handleError('invalidPasswordLength', 'The new password is too short.', continuation);\r\n        } else if (eventActionResponse && eventActionResponse.status === 'invalidPasswordComplexity') {\r\n            this.handleError('invalidPasswordComplexity', 'The new password does not meet the complexity requirements.', continuation);\r\n        } else if (eventActionResponse && eventActionResponse.status === 'newPasswordSameAsOldPassword') {\r\n            this.handleError('newPasswordSameAsOldPassword', 'The new password should be different from the previous password.', continuation);\r\n        } else if (this.eventIsEnabled('passwordChanged')) {\r\n            this.triggerEvent('passwordChanged');\r\n        }\r\n\r\n        continuation();\r\n    };\r\n\r\n    ChangePassword.prototype.handleError = function (eventName, defaultMessage, continuation) {\r\n        if (this.eventIsEnabled(eventName)) {\r\n            this.triggerEvent(eventName);\r\n        } else {\r\n            alert(defaultMessage);\r\n        }\r\n    };\r\n\r\n    return ChangePassword;\r\n});\n","define('lq/events/actions/checkIn',[\r\n    'lq/events/actions/eventAction',\r\n    'lq/uploader'\r\n], function (EventAction, Uploader) {\r\n\t'use strict';\r\n\r\n\tfunction CheckIn(eventData, eventArg) {\r\n\t    EventAction.call(this, eventData, eventArg);\r\n\t    return this;\r\n\t}\r\n\r\n\tEventAction.extend(CheckIn, EventAction);\r\n\r\n    CheckIn.typeName = 'CheckIn';\r\n\r\n\tCheckIn.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n\tCheckIn.prototype.createEventActionRequest = function () {\r\n        var self = this;\r\n\r\n        return function (requestContinuation) {\r\n            new Uploader(self.piping)\r\n                .toTenantUrl(\"DynamicContent/AddTempFile\")\r\n                .onFileUploaded(function (uploadResponse) {\r\n                    if (!uploadResponse.success)\r\n                        throw new Error('Upload failed.');\r\n\r\n                    var request = {\r\n                        eventActionType: \"CheckIn\",\r\n                        morphId: self.eventData.command,\r\n                        fileName: uploadResponse.filename,\r\n                        tempUrl: uploadResponse.tempUrl\r\n                    };\r\n                    requestContinuation(request);\r\n                })\r\n                .uploadSingleFile();\r\n        };\r\n\t};\r\n\r\n    CheckIn.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (eventActionResponse.isDirty && this.eventIsEnabled('onExecutionTrailDirty'))\r\n            this.triggerEvent('onExecutionTrailDirty', continuation);\r\n        else continuation();\r\n    };\r\n\r\n\treturn CheckIn;\r\n});\n","define('lq/events/actions/checkOut',['jquery', 'lq/events/actions/eventAction', 'lq'],\r\n    function ($, EventAction, lq) {\r\n\t    'use strict';\r\n\r\n\t    function CheckOut(eventData, eventArg) {\r\n\t        EventAction.call(this, eventData, eventArg);\r\n\t        return this;\r\n\t    }\r\n\r\n        EventAction.extend(CheckOut, EventAction);\r\n\r\n        CheckOut.typeName = 'CheckOut';\r\n\r\n\t    CheckOut.prototype.getBatchType = function () {\r\n            return EventAction.COMMAND_BATCH;\r\n        };\r\n\r\n\t    CheckOut.prototype.createEventActionRequest = function () {\r\n\t        return {\r\n\t            eventActionType: \"CheckOut\",\r\n\t            morphId: this.eventData.command\r\n\t        };\r\n\t    };\r\n\r\n        CheckOut.prototype.execute = function(continuation, eventActionResponse) {\r\n            if (eventActionResponse.isDirty && this.eventIsEnabled('onExecutionTrailDirty'))\r\n                this.triggerEvent('onExecutionTrailDirty', continuation);\r\n            else {\r\n                var url =\r\n                    lq.getTenantUrl('DynamicContent/DownloadFile')\r\n                    + '?'\r\n                    + $.param({ url: eventActionResponse.url, filename: eventActionResponse.filename });\r\n                window.open(url);\r\n                continuation();\r\n            }\r\n        };\r\n\r\n\t    return CheckOut;\r\n    }\r\n);\n","define('lq/events/actions/copyDynamicContentCommand',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function CopyDynamicContentCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(CopyDynamicContentCommand, EventAction);\r\n\r\n    CopyDynamicContentCommand.typeName = 'CopyDynamicContentCommand';\r\n\r\n    CopyDynamicContentCommand.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    CopyDynamicContentCommand.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'CopyDynamicContent',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    return CopyDynamicContentCommand;\r\n});\n","define('lq/events/actions/copyToClipboard',[\r\n    'lq/events/actions/eventAction',\r\n    'lq/clipboard'\r\n], function (EventAction, clipboard) {\r\n    'use strict';\r\n\r\n    function CopyToClipboard(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(CopyToClipboard, EventAction);\r\n\r\n    CopyToClipboard.typeName = 'CopyToClipboard';\r\n\r\n    CopyToClipboard.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    CopyToClipboard.prototype.execute = function (continuation) {\r\n        clipboard.copy(this.getValueToCopy());\r\n\r\n        continuation();\r\n    };\r\n\r\n    CopyToClipboard.prototype.getValueToCopy = function() {\r\n        if (this.eventData.source === 'viewmodel') {\r\n            var sourceMorph = this.piping.dropFactory.findDropByViewModelKey(this.eventData.viewModelKey);\r\n            return sourceMorph.getValue();\r\n        }\r\n\r\n        return this.piping.parameters.getValue(this.eventData.parameter);\r\n    };\r\n\r\n    return CopyToClipboard;\r\n});\n","define('lq/events/actions/cq',[\r\n    'lq/events/actions/eventAction',\r\n    'lq/validatorGateway',\r\n], function (EventAction, validatorGateway) {\r\n    'use strict';\r\n\r\n    function CQ(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(CQ, EventAction);\r\n\r\n    CQ.typeName = 'CQ';\r\n\r\n    CQ.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    CQ.prototype.execute = function (continuation) {\r\n\t\tif (this.eventData.mockMailTo) {\r\n\t\t\tthis.showMail(this.eventData, continuation)\r\n\t\t}\r\n\t\telse {\r\n\t\t\tvar eventName = this.mapEventName(this.eventData)\r\n\t\t\tvar eventValue = this.mapArgumentValue(this.eventData)\r\n\t\r\n\t\t\tif (eventValue) this.piping.parameters.locals.setValue(\"ProcessId\", eventValue);\r\n\t\t\tthis.piping.eventing.publish(eventName, this.eventSource, eventValue, continuation, this.getEventActionIdentifier());\r\n\t\t\tcontinuation();\r\n\t\t}\r\n    };\r\n\r\n    CQ.prototype.mapEventName = function (eventData) {\r\n\t\tif (eventData.cqStartProcessId)\r\n\t\t\treturn 'MP Start Process';\r\n\t\tif (eventData.cqStartTodo)\r\n\t\t    return 'MP Start Todo';\r\n\t\tif (eventData.cqCancelTodo)\r\n\t\t    return 'MP Cancel Todo';\r\n\t\tif (eventData.cqCancelAndContinueId)\r\n\t\t\treturn 'MP Cancel Todo And Continue';\r\n\t\tif (eventData.cqFinishTodo)\r\n\t\t    return 'MP Finish Todo';\r\n\t\tif (eventData.cqFinishAndContinueId)\r\n\t\t\treturn 'MP Finish Todo And Continue';\r\n\t\tif (eventData.cqFinishAll)\r\n\t\t    return 'MP Finish All';\r\n\t\tif (eventData.cqCancelAll)\r\n\t\t    return 'MP Cancel All';\r\n\t\tif (eventData.cqGoBack)\r\n\t\t    return 'MP Go To Previous';\r\n        if (eventData.cqLogin)\r\n            return 'MP Login';\r\n\t\tif (eventData.cqLogOff)\r\n\t\t    return 'MP Logoff';\r\n    };\r\n    \r\n    CQ.prototype.mapArgumentValue = function (eventData) {\r\n\t\tif (eventData.cqStartProcessId)\r\n\t\t\treturn eventData.cqStartProcessId;\r\n\t\tif (eventData.cqCancelAndContinueId)\r\n\t\t\treturn eventData.cqCancelAndContinueId;\r\n\t\tif (eventData.cqFinishAndContinueId)\r\n\t\t\treturn eventData.cqFinishAndContinueId;\r\n    };\r\n\r\n    CQ.prototype.showMail = function (eventData, continuation) {\r\n\t\tvar self = this;\r\n\t\tvar messageId = Math.floor(Math.random() * 1E10);\r\n\t\t\r\n\t\twindow.addEventListener('message', function (message) {\r\n\t\t\tif (message.data && message.data.type === \"POPUP_CLOSED\" && message.data.id === messageId)\r\n\t\t\t\tcontinuation();\r\n\t\t});\r\n\r\n\t\tvalidatorGateway.publishEvent({\r\n\t\t\ttype: \"SHOW_EMAIL_POPUP\",\r\n\t\t\tid: messageId,\r\n\t\t\tmail: {\r\n\t\t\t\tto: eventData.mockMailTo,\r\n\t\t\t\tcc: eventData.mockMailCc,\r\n\t\t\t\tbcc: eventData.mockMailBcc,\r\n\t\t\t\tsubject: eventData.mockMailSubject,\r\n\t\t\t\tbody: eventData.mockMailBody,\r\n\t\t\t},\r\n\t\t});\r\n\t};\r\n\r\n    return CQ;\r\n});\r\n\n","define('lq/entityFiltersState',[\r\n    'underscore'\r\n], function (_) {\r\n    'use strict';\r\n\r\n    return {\r\n\r\n        getStateOfEntityFilters: function (rootDrop) {\r\n            var state = {};\r\n\r\n            var entityFilters = _.filter(rootDrop.piping.dropFactory.createdDrops, function(drop) {\r\n                return drop.data.type === 'EntityFilter';\r\n            });\r\n\r\n            _.each(entityFilters, function(entityFilter) {\r\n                var appliedFilters = _.chain(entityFilter.getDropTargets())\r\n                    .map(function (targetDrop) {\r\n                        return {\r\n                            drop: targetDrop,\r\n                            filters: entityFilter.getMyActiveFiltersForTarget(targetDrop)\r\n                        };\r\n                    })\r\n                    .filter(function (target) {\r\n                        return target.filters.length;\r\n                    })\r\n                    .map(function (target) {\r\n                        var appliedFilter = {\r\n                            targetDrop: target.drop.data.name\r\n                        };\r\n\r\n                        var targetOptions = entityFilter.getOptionsForTarget(target.drop);\r\n\r\n                        if (targetOptions.modalPopup) {\r\n                            var parameters = rootDrop.piping.parameters;\r\n                            appliedFilter.values = _.map(targetOptions.mappings, function (mapping) {\r\n                                return {\r\n                                    sourceName: mapping.sourceName,\r\n                                    parameterValue: parameters.getValue(mapping.targetParameter)\r\n                                };\r\n                            });\r\n                        }\r\n\r\n                        return appliedFilter;\r\n                    })\r\n                    .value();\r\n\r\n                if (appliedFilters.length)\r\n                    state[entityFilter.data.id] = appliedFilters;\r\n            });\r\n\r\n            return JSON.stringify(state);\r\n        },\r\n\r\n        restoreStateOfFilters: function (rootDrop, json) {\r\n            var state = JSON.parse(json);\r\n            var parameters = rootDrop.piping.parameters;\r\n            var entityFilters = _.filter(rootDrop.piping.dropFactory.createdDrops, function (drop) {\r\n                return drop.data.type === 'EntityFilter';\r\n            });\r\n\r\n            var listShouldBeReloaded = {};\r\n\r\n            _.each(entityFilters, function (entityFilter) {\r\n                _.each(entityFilter.data.targets, function(targetList) {\r\n                    if (!listShouldBeReloaded.hasOwnProperty(targetList.drop))\r\n                        listShouldBeReloaded[targetList.drop] = false;\r\n                });\r\n\r\n                entityFilter.removeAppliedFilters();\r\n\r\n                if (!state[entityFilter.data.id]) return;\r\n\r\n                var storedFilters = state[entityFilter.data.id];\r\n\r\n                _.each(storedFilters, function (dropFilter) {\r\n                    var targetDrop = rootDrop.piping.dropFactory.findDropByName(dropFilter.targetDrop);\r\n                    if (!targetDrop) return;\r\n\r\n                    var targetOptions = entityFilter.getOptionsForTarget(targetDrop);\r\n                    var filterInstance = entityFilter.createInstance(targetDrop, targetOptions, true);\r\n                    entityFilter.addAsActiveFilterToTarget(filterInstance);\r\n\r\n                    if (filterInstance.options.filterParameterName)\r\n                        parameters.locals.setValue(filterInstance.options.filterParameterName, filterInstance.options.filterParameterValue);\r\n\r\n                    if (filterInstance.options.mappings) {\r\n                        _.each(filterInstance.options.mappings, function (mapping) {\r\n                            var value = _.findWhere(dropFilter.values, { sourceName: mapping.sourceName });\r\n                            if (!value) return;\r\n\r\n                            var sourceDrop = rootDrop.piping.dropFactory.findDropByName(mapping.sourceName);\r\n                            sourceDrop.setValue({\r\n                                value: value.parameterValue\r\n                            });\r\n                            parameters.locals.setValue(mapping.targetParameter, value.parameterValue);\r\n\r\n                            entityFilter.triggerEventForTargetIfEnabled(targetOptions, 'applyFilter');\r\n                        });\r\n                    }\r\n\r\n                    entityFilter.dragToPosition(entityFilter.initialPosition);\r\n\r\n                    listShouldBeReloaded[dropFilter.targetDrop] = true;\r\n                });\r\n\r\n            });\r\n\r\n            var queriesBatch = [];\r\n\r\n            _.each(listShouldBeReloaded, function (shouldBeReloaded, listName) {\r\n                var theList = rootDrop.piping.dropFactory.findDropByName(listName);\r\n\r\n                if (theList) {\r\n                    if (shouldBeReloaded) {\r\n                        queriesBatch.push({\r\n                            queryName: theList.data.dataSource,\r\n                            handler: function (response) {\r\n                                _.each(theList.getDatasourceListenersWithSameParams(), function (listener) {\r\n                                    listener.handler(response);\r\n                                });\r\n                            },\r\n                            decorateDataFunc: function(params) {\r\n                                theList.decorateQueryParams(params);\r\n                            }\r\n                        });\r\n                    } else {\r\n                        // wait until we've dispatched the queries\r\n                        _.defer(function() {\r\n                            theList.clear();\r\n                        });\r\n                    }\r\n                        \r\n                }\r\n            });\r\n\r\n            if (queriesBatch.length)\r\n                rootDrop.piping.queryDispatcher.dispatchBatch(queriesBatch, rootDrop.piping);\r\n        }\r\n    };\r\n\r\n});\n","define('lq/events/actions/create',[\r\n    'lq/events/actions/eventAction',\r\n    'jquery',\r\n    'underscore',\r\n    'lq/uploader',\r\n    'lq/entityFiltersState',\r\n    'lq',\r\n    'lq/events/abortError',\r\n    'when'\r\n], function (EventAction, $, _, Uploader, entityFiltersState, lq, AbortError, when) {\r\n    'use strict';\r\n\r\n    function Create(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(Create, EventAction);\r\n\r\n    Create.typeName = 'Create';\r\n\r\n    Create.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    Create.prototype.createEventActionRequest = function () {\r\n        return this.validateData.bind(this);\r\n    };\r\n\r\n    Create.prototype.validateData = function (requestContinuation, requestCancellation) {\r\n        var self = this;\r\n\r\n        this.isDataValid()\r\n            .then(function(isValid) {\r\n                if(isValid) {\r\n                    if (self.eventIsEnabled('inputValidated')) {\r\n                        self.triggerEvent('inputValidated');\r\n                    }                    \r\n                    self.buildRequest(requestContinuation, requestCancellation);\r\n                }\r\n                else {\r\n                    if (self.eventIsEnabled('inputInvalidated')) {\r\n                        self.triggerEvent('inputInvalidated');\r\n                    }\r\n                    requestCancellation();\r\n                }\r\n            });\r\n    };\r\n\r\n    Create.prototype.buildRequest = function (requestContinuation, requestCancellation) {\r\n        var self = this;\r\n        \r\n        var commandViewModelKeysValues = {};\r\n\r\n        _.each(self.eventData.commandViewModelKeys, function (key) {\r\n            var drop = self.piping.dropFactory.findDropByViewModelKey(key);\r\n            var value = drop.getValue();\r\n            commandViewModelKeysValues[key] = value;\r\n        });\r\n\r\n        var extraProperties = {};\r\n\r\n        if (self.eventData.isEntityFilterEntity)\r\n            extraProperties['Filter'] = entityFiltersState.getStateOfEntityFilters(this.rootDrop);\r\n\r\n        var request = {\r\n            eventActionType: 'Create',\r\n            command: self.eventData.command,\r\n            commandViewModelKeys: commandViewModelKeysValues,\r\n            uploads: [],\r\n            extraProperties: extraProperties,\r\n            captcha: this.getCaptcha()\r\n        };\r\n\r\n        if (self.eventData.fileUploadType === null || self.eventData.fileUploadType === '' || self.eventData.fileUploadType === 'fromDocument' || self.eventData.fileUploadType === 'createEmptyFile') {\r\n            requestContinuation(request);\r\n        } else if (self.eventData.fileUploadType === 'fromViewModel') {\r\n            var drop = self.piping.dropFactory.findDropByViewModelKey(self.eventData.fileSourceMorph);\r\n            \r\n            if(self.requiredValueIsFilledIn(drop)) {\r\n                when(drop.getFile())\r\n                    .then(function (content) {\r\n                        self.uploadBase64Img(content, request, requestContinuation);\r\n                    });\r\n            } else {\r\n                requestCancellation();\r\n            }           \r\n        } else if (self.eventData.fileUploadType === 'fromParameterBase64') {\r\n            var base64Img = self.piping.parameters.getValue(self.eventData.fileSourceParameter);\r\n            self.uploadBase64Img(base64Img, request, requestContinuation);\r\n        } else if (self.eventData.fileUploadType === 'fromParameter') {\r\n            var file = self.piping.parameters.getValue(self.eventData.fileSourceParameter);\r\n            var xhr = new XMLHttpRequest();\r\n            var fd = new FormData();\r\n            var url = lq.getTenantUrl('DynamicContent/AddTempFile');\r\n            xhr.open(\"POST\", url, true);\r\n            xhr.onreadystatechange = function () {\r\n                if (xhr.readyState !== 4)\r\n                    return;\r\n                if (xhr.status === 200) {\r\n                    var response = JSON.parse(xhr.responseText);\r\n                    request.uploads.push(\r\n                        {\r\n                            fileName: response.fileName,\r\n                            tempUrl: response.tempUrl\r\n                        });\r\n                    requestContinuation(request);\r\n                }\r\n            };\r\n            fd.append(\"qqfile\", file);\r\n            xhr.send(fd);\r\n        } else {\r\n            var uploader = new Uploader(self.piping)\r\n                .toTenantUrl(\"DynamicContent/AddTempFile\")\r\n                .withFileFilter(self.eventData.fileUploadAllowedFileTypes === 'custom' ?\r\n                    self.eventData.fileUploadAllowedCustomFileTypes : self.eventData.fileUploadAllowedFileTypes)\r\n                .withMaxFileSize(self.eventData.maxFileSize)\r\n                .withSmartphoneMode(self.eventData.fileUploadModeSmartPhone)\r\n                .withPhotoQuality(self.eventData.photoQuality)\r\n                .withMaxImageDimensions(self.eventData.maxImageDimensions)\r\n                .onFileUploaded(function (uploadResponse) {\r\n                    if (!uploadResponse.success)\r\n                        throw new Error('Upload failed.');\r\n\r\n                    request.uploads.push(\r\n                        {\r\n                            fileName: uploadResponse.filename,\r\n                            tempUrl: uploadResponse.tempUrl\r\n                        });\r\n                })\r\n                .onUploadFinished(function () {\r\n                    requestContinuation(request);\r\n                });\r\n            if (self.eventIsEnabled('maxFileSizeExceeded')) {\r\n                uploader\r\n                    .onMaxFileSizeExceeded(function () {\r\n                        self.triggerEvent('maxFileSizeExceeded');\r\n                    })\r\n            }\r\n            if (self.eventData.fileUploadType === \"singleFile\") {\r\n                uploader.uploadSingleFile();\r\n            }\r\n            else if (self.eventData.fileUploadType === \"multipleFiles\") {\r\n                uploader.uploadMultipleFiles();\r\n            }\r\n        }\r\n    };\r\n\r\n    Create.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (eventActionResponse.isDirty && this.eventIsEnabled('onExecutionTrailDirty'))\r\n            this.triggerEvent('onExecutionTrailDirty', continuation);\r\n        else continuation();\r\n    };\r\n\r\n    Create.prototype.requiredValueIsFilledIn = function (drop) {\r\n        if (!this.eventData.skipRequiredFields && drop.isVisible() && !drop.isValid()) {\r\n            if (this.eventIsEnabled('requiredFieldsMissing')) {\r\n                this.triggerEvent('requiredFieldsMissing');\r\n            } else {\r\n                alert('* not all required fields are filled in.');\r\n            }\r\n            return false;\r\n        }\r\n        return true;\r\n    };\r\n\r\n    Create.prototype.isDataValid = function () {\r\n        var self = this;\r\n        return when.reduce(self.eventData.commandViewModelKeys, function(isDataValid, viewModelKey) {\r\n            var drop = self.piping.dropFactory.findDropByViewModelKey(viewModelKey);\r\n            \r\n            if (!drop)\r\n                throw 'Cannot find drop : \"' + key + '\" for create command.';\r\n    \r\n            if(!drop.isVisible())\r\n                return isDataValid;\r\n                        \r\n            if (!self.requiredValueIsFilledIn(drop))\r\n                return false;\r\n            \r\n            return drop.performValidation(self.eventActionId)\r\n                .then(function(isDropValid) {\r\n                    return isDropValid ? isDataValid : false;\r\n                });\r\n        }, true);\r\n    };\r\n    \r\n    Create.prototype.getCaptcha = function () {\r\n        if (!this.eventData.captchaField) return null;\r\n\r\n        var captchaDrop = this.piping.dropFactory\r\n            .findDropByName(this.eventData.captchaField);\r\n\r\n        if (!captchaDrop.data.captchaInputField) return null;\r\n\r\n        return this.piping.dropFactory\r\n            .findDropByName(captchaDrop.data.captchaInputField)\r\n            .getValue();\r\n    };\r\n\r\n    Create.prototype.uploadBase64Img = function (base64Img, request, requestContinuation) {\r\n        $.ajax({\r\n            type: 'POST',\r\n            url: lq.getTenantUrl('DynamicContent/AddPromptlessTempFile'),\r\n            contentType: \"application/json; charset=utf-8\",\r\n            data: base64Img,\r\n            dataType: 'json'\r\n        }).done(function (response) {\r\n            if (!response.success) return;\r\n            \r\n            request.uploads.push(\r\n                {\r\n                    fileName: response.fileName,\r\n                    tempUrl: response.tempUrl\r\n                });\r\n            requestContinuation(request);\r\n        });\r\n    };\r\n\r\n    return Create;\r\n});\n","define('lq/events/actions/createTextFileCommand',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function CreateTextFileCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(CreateTextFileCommand, EventAction);\r\n\r\n    CreateTextFileCommand.typeName = 'CreateTextFileCommand';\r\n\r\n    CreateTextFileCommand.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    CreateTextFileCommand.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'CreateTextFile',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    return CreateTextFileCommand;\r\n});\n","define('lq/formSubmission',[],function () {\r\n    'use strict';\r\n\r\n    var FormSubmission = function (url, target) {\r\n        this.form = document.createElement('form');\r\n        this.form.setAttribute('method', 'post');\r\n        this.form.setAttribute('action', url);\r\n\r\n        if (target)\r\n            this.form.setAttribute('target', target);\r\n    };\r\n\r\n    FormSubmission.prototype.addProperty = function (name, value) {\r\n        var hiddenField = document.createElement('input');\r\n        hiddenField.setAttribute('type', 'hidden');\r\n        hiddenField.setAttribute('name', name);\r\n        hiddenField.setAttribute('value', value);\r\n        this.form.appendChild(hiddenField);\r\n    };\r\n\r\n    FormSubmission.prototype.addParameters = function(name, parameters) {\r\n        this.addProperty(name, JSON.stringify(parameters));\r\n    };\r\n\r\n    FormSubmission.prototype.submit = function () {\r\n        document.body.appendChild(this.form);\r\n        this.form.submit();\r\n    };\r\n\r\n    return FormSubmission;\r\n});\n","define('lq/events/actions/csvExportCommand',[\r\n    'lq/events/actions/eventAction',\r\n    'jquery',\r\n    'lq',\r\n    'lq/cookie',\r\n    'lq/formSubmission'\r\n], function (EventAction, $, lq, cookie, FormSubmission) {\r\n    'use strict';\r\n\r\n    function CsvExportCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(CsvExportCommand, EventAction);\r\n\r\n    CsvExportCommand.typeName = 'CsvExportCommand';\r\n\r\n    CsvExportCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    CsvExportCommand.prototype.createEventActionRequest = function() {\r\n        if (this.eventData.downloadOnly)\r\n            return undefined;\r\n\r\n        return {\r\n            eventActionType: 'CsvExport',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    CsvExportCommand.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (this.eventData.downloadOnly) {\r\n            var token = 'csv-export-' + Date.now();\r\n\r\n            var form = new FormSubmission(this.piping.url.prepare(lq.getTenantUrl('Export/Csv')));\r\n            form.addProperty('actionId', this.piping.actionId);\r\n            form.addProperty('csvExportId', this.eventData.command);\r\n            form.addProperty('token', token);\r\n            form.addParameters('parameters', this.piping.parameters.getNonSystemParameters());\r\n            form.submit();\r\n\r\n            var waitWhileDownloadIsStarting = function () {\r\n                if (cookie.get(token) === null)\r\n                    setTimeout(waitWhileDownloadIsStarting, 200);\r\n                else\r\n                    continuation();\r\n            };\r\n            waitWhileDownloadIsStarting();\r\n        } else if (eventActionResponse.isDirty) {\r\n            if (this.eventIsEnabled('onExecutionTrailDirty'))\r\n                this.triggerEvent('onExecutionTrailDirty');\r\n            else alert('Could not complete operation, because the data is dirty.');\r\n        } else if (eventActionResponse.download) {\r\n            window.location.href = this.piping.url.prepare(lq.getTenantUrl('DynamicContent/DownloadFile'), {\r\n                url: eventActionResponse.url,\r\n                filename: eventActionResponse.filename,\r\n                openInBrowser: false\r\n            });\r\n            continuation();\r\n        } else continuation();\r\n    };\r\n\r\n    return CsvExportCommand;\r\n});\n","define('lq/events/actions/deleteCommand',[\r\n    'lq/events/actions/eventAction', \r\n    'lq/events/abortError'\r\n], function (EventAction, AbortError) {\r\n\t    'use strict';\r\n\r\n\t    function DeleteCommand(eventData, eventArg) {\r\n\t        EventAction.call(this, eventData, eventArg);\r\n\t        return this;\r\n\t    }\r\n\r\n        EventAction.extend(DeleteCommand, EventAction);\r\n\r\n        DeleteCommand.typeName = 'DeleteCommand';\r\n\r\n\t    DeleteCommand.prototype.getBatchType = function () {\r\n            return EventAction.COMMAND_BATCH;\r\n        };\r\n\r\n\t    DeleteCommand.prototype.createEventActionRequest = function () {\r\n            return {\r\n                eventActionType: \"Delete\",\r\n                ObjectName: this.eventData.command\r\n            };\r\n        };\r\n\r\n        DeleteCommand.prototype.execute = function (continuation, eventActionResponse) {\r\n            if (eventActionResponse.isDirty) {\r\n                if (this.eventIsEnabled('onExecutionTrailDirty')) {\r\n                    this.triggerEvent('onExecutionTrailDirty');\r\n                } else {\r\n                    alert('Could not delete the data, because the data is dirty.');\r\n                }\r\n            } else {\r\n                continuation();\r\n            }\r\n\r\n        };\r\n\r\n        return DeleteCommand;\r\n    }\r\n);\n","define('lq/events/actions/deleteDynamicContentCommand',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function DeleteDynamicContentCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(DeleteDynamicContentCommand, EventAction);\r\n\r\n    DeleteDynamicContentCommand.typeName = 'DeleteDynamicContentCommand';\r\n\r\n    DeleteDynamicContentCommand.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    DeleteDynamicContentCommand.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'DeleteDynamicContent',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    return DeleteDynamicContentCommand;\r\n});\n","define('lq/events/actions/distanceMatrix',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function DistanceMatrix(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(DistanceMatrix, EventAction);\r\n\r\n    DistanceMatrix.typeName = 'DistanceMatrix';\r\n\r\n    DistanceMatrix.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    DistanceMatrix.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: \"DistanceMatrix\",\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    return DistanceMatrix;\r\n});\n","define('lq/events/actions/desktopClientCommand',[\r\n    'underscore',\r\n    'lq/events/actions/eventAction'\r\n], function (_, EventAction) {\r\n    'use strict';\r\n\r\n    function DesktopClientCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        this.eventData = eventData;\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(DesktopClientCommand, EventAction);\r\n\r\n    DesktopClientCommand.typeName = 'DesktopClientCommand';\r\n\r\n    DesktopClientCommand.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    DesktopClientCommand.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: \"PrepareDesktopClientCommand\",\r\n            commandId: this.eventData.command\r\n        };\r\n    };\r\n\r\n    DesktopClientCommand.prototype.execute = function (continuation, eventActionResponse) {\r\n        window.location.href = eventActionResponse.url;\r\n        continuation();\r\n    };\r\n    \r\n    return DesktopClientCommand;\r\n});\n","define('lq/events/actions/documentZip',[\r\n    'underscore', \r\n    'lq/events/actions/eventAction', \r\n    'lq'\r\n], function (_, EventAction, lq) {\r\n\t'use strict';\r\n\r\n\tfunction DocumentZip(eventData, eventArg) {\r\n\t    EventAction.call(this, eventData, eventArg);\r\n\t    return this;\r\n\t}\r\n\r\n    EventAction.extend(DocumentZip, EventAction);\r\n\r\n    DocumentZip.typeName = 'DocumentZip';\r\n\r\n\tDocumentZip.prototype.getBatchType = function () {\r\n        return this.eventData.isDownloadOnly ? \r\n            EventAction.DO_NOT_BATCH \r\n            : EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n\tDocumentZip.prototype.execute = function (continuation, eventActionResponse) {\r\n    \r\n        if (this.eventData.isDownloadOnly) {\r\n            var command = {\r\n                actionId: this.piping.actionId,\r\n                morphId: this.eventData.morphId,\r\n                parameters: JSON.stringify(this.piping.parameters.getNonSystemParameters())\r\n            };\r\n            window.location = this.piping.url.prepare(lq.getTenantUrl('GeneratedContent/DocumentZip'), command);\r\n            continuation();\r\n        } else if (eventActionResponse.isDirty) {\r\n            if (this.eventIsEnabled('onExecutionTrailDirty'))\r\n                this.triggerEvent('onExecutionTrailDirty');\r\n            else alert('Could not complete operation, because the data is dirty.');\r\n        } else if (eventActionResponse.download) {\r\n            var file = {\r\n                url: eventActionResponse.url,\r\n                filename: eventActionResponse.filename\r\n            };\r\n            window.location = this.piping.url.prepare(lq.getTenantUrl('DynamicContent/DownloadFile'), file);\r\n            continuation();\r\n        } else continuation();\r\n\t};\r\n\r\n    DocumentZip.prototype.createEventActionRequest = function () {\r\n        if (this.eventData.isDownloadOnly)\r\n            return undefined;\r\n\r\n        return {\r\n            eventActionType: 'DocumentZip',\r\n            morphId: this.eventData.morphId\r\n        };\r\n    };\r\n\r\n\treturn DocumentZip;\r\n});\n","define('lq/events/actions/domainFunctionCommand',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n\t'use strict';\r\n\r\n    function DomainFunctionCommand(eventData, eventArg) {\r\n\t    EventAction.call(this, eventData, eventArg);\r\n\t    return this;\r\n\t}\r\n\r\n    EventAction.extend(DomainFunctionCommand, EventAction);\r\n\r\n    DomainFunctionCommand.typeName = 'DomainFunctionCommand';\r\n\r\n\tDomainFunctionCommand.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n\tDomainFunctionCommand.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'DomainFunction',\r\n            ObjectName: this.eventData.command\r\n        };\r\n    };\r\n\r\n\treturn DomainFunctionCommand;\r\n});\n","define('lq/events/actions/download',[\r\n    'underscore',\r\n    'lq/events/actions/eventAction',\r\n    'lq',\r\n    'lq/util',\r\n    'lq/responsive',\r\n], function (_, EventAction, lq, util, responsive) {\r\n    'use strict';\r\n\r\n    function Download(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        this.eventData = eventData;\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(Download, EventAction);\r\n\r\n    Download.typeName = 'Download';\r\n\r\n    Download.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    Download.prototype.execute = function (continuation) {\r\n        var document = this.piping.parameters.getValue(this.eventData.parameter);\r\n        \r\n        if (document) {\r\n            document = util.convertListOfKeyValuesToObject(document);\r\n\r\n            var openInBrowser = this.eventData.openInBrowser;\r\n\r\n            if (responsive.isPWA()) {\r\n                openInBrowser = false;\r\n            }\r\n\r\n            var url = this.piping.url.prepare(lq.getTenantUrl('DynamicContent/DownloadFile'), { url: document.Url, filename: document.Filename, openInBrowser: openInBrowser });\r\n\r\n            if (this.eventData.openInNewTab) {\r\n                window.open(url + '&isDownload=false#toolbar=1');\r\n            } else {\r\n                window.location.href = url;\r\n            }\r\n        }\r\n\r\n        continuation();\r\n    };\r\n\r\n    return Download;\r\n});\n","define('lq/events/actions/downloadFileCommand',[\r\n    'underscore',\r\n    'lq/events/actions/eventAction',\r\n    'lq',\r\n    'lq/responsive',\r\n], function (_, EventAction, lq, responsive) {\r\n    'use strict';\r\n\r\n    function DownloadFileCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        this.eventData = eventData;\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(DownloadFileCommand, EventAction);\r\n\r\n    DownloadFileCommand.typeName = 'DownloadFileCommand';\r\n\r\n    DownloadFileCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    DownloadFileCommand.prototype.execute = function (continuation) {\r\n        var queryString = {\r\n            actionId: this.piping.actionId,\r\n            commandId: this.eventData.command,\r\n            parameters: JSON.stringify(this.piping.parameters.getNonSystemParameters()),\r\n            forceDownload: responsive.isPWA()\r\n        };\r\n        var url = this.piping.url.prepare(lq.getTenantUrl('Export/File'), queryString);\r\n        \r\n        if (this.eventData.openInNewTab) {\r\n            window.open(url + '#toolbar=1');\r\n        } else {\r\n            window.location.href = url;\r\n        }\r\n\r\n        continuation();\r\n    };\r\n\r\n    return DownloadFileCommand;\r\n});\n","define('lq/events/actions/excelExportCommand',[\r\n    'lq/events/actions/eventAction',\r\n    'jquery',\r\n    'lq',\r\n    'lq/cookie',\r\n    'lq/formSubmission'\r\n], function (EventAction, $, lq, cookie, FormSubmission) {\r\n    'use strict';\r\n\r\n    function ExcelExportCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(ExcelExportCommand, EventAction);\r\n\r\n    ExcelExportCommand.typeName = 'ExcelExportCommand';\r\n\r\n    ExcelExportCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    ExcelExportCommand.prototype.createEventActionRequest = function() {\r\n        if (this.eventData.downloadOnly)\r\n            return undefined;\r\n\r\n        return {\r\n            eventActionType: 'ExcelExport',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    ExcelExportCommand.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (this.eventData.downloadOnly) {\r\n            var token = 'excel-export-' + Date.now();\r\n\r\n            var form = new FormSubmission(this.piping.url.prepare(lq.getTenantUrl('Export/Excel')));\r\n            form.addProperty('actionId', this.piping.actionId);\r\n            form.addProperty('excelExportId', this.eventData.command);\r\n            form.addProperty('token', token);\r\n            form.addParameters('parameters', this.piping.parameters.getNonSystemParameters());\r\n            form.submit();\r\n\r\n            var waitWhileDownloadIsStarting = function() {\r\n                if (cookie.get(token) === null)\r\n                    setTimeout(waitWhileDownloadIsStarting, 200);\r\n                else\r\n                    continuation();\r\n            };\r\n            waitWhileDownloadIsStarting();\r\n        } else if (eventActionResponse.isDirty) {\r\n            if (this.eventIsEnabled('onExecutionTrailDirty')) {\r\n                this.triggerEvent('onExecutionTrailDirty');\r\n            }\r\n            else alert('Could not complete operation, because the data is dirty.'); \r\n        } else if (eventActionResponse.download) {\r\n            var queryString = {\r\n                url: eventActionResponse.url,\r\n                filename: eventActionResponse.filename,\r\n                openInBrowser: false\r\n            };\r\n            window.location = this.piping.url.prepare(lq.getTenantUrl('DynamicContent/DownloadFile'), queryString);\r\n            continuation();\r\n        } else {\r\n            continuation();\r\n        }\r\n    };\r\n\r\n    return ExcelExportCommand;\r\n});\n","define('lq/events/actions/executeEidReader',[\r\n    'jquery',\r\n    'lq',\r\n    'underscore',\r\n    'lq/events/actions/eventAction',\r\n    'lq/util'\r\n], function ($, lq, _, EventAction, util) {\r\n    'use strict';\r\n\r\n    var EidServiceUrl = 'http://localhost:31031/eid';\r\n    var RequiredVersion = 2;\r\n\r\n    function ExecuteEidReader(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(ExecuteEidReader);\r\n\r\n    ExecuteEidReader.typeName = 'ExecuteEidReader';\r\n\r\n    ExecuteEidReader.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    ExecuteEidReader.prototype.handleError = function (eventName, defaultMessage, continuation) {\r\n        if (this.eventIsEnabled(eventName)) {\r\n            this.triggerEvent(eventName, continuation);\r\n        } else {\r\n            alert(defaultMessage);\r\n            continuation();\r\n        }\r\n    };\r\n\r\n    ExecuteEidReader.prototype.execute = function (continuation) {\r\n        var self = this;\r\n\r\n        fetch(EidServiceUrl, {\r\n            mode: 'cors',\r\n            method: 'GET'\r\n        })\r\n        .then(async function (response) {\r\n            self.piping.busyIndicator.hide();\r\n            try {\r\n                if (response.json) {\r\n                    var data = await response.json();\r\n                    if (!response.ok) {\r\n                        if (data.errorCode === 1) {\r\n                            self.handleError('noCardReaderConnected', 'No card reader connected', continuation);\r\n                        } else if (data.errorCode === 2) {\r\n                            self.handleError('noCardInReader', 'No card in the reader', continuation);\r\n                        } else if (data.errorCode === 3) {\r\n                            self.handleError('moreThanOneCardDetected', 'More than one card detected', continuation);\r\n                        } else if (data.errorCode === 4) {\r\n                            self.handleError('eIDMiddlewareNotInstalled', 'e-ID middleware not installed' , continuation);\r\n                        } else {\r\n                            alert('eID-Reader error: ' + data.detail);\r\n                        }\r\n                    } else if (parseInt(data.version) < RequiredVersion) {\r\n                        alert('Your eID-Reader version is: ' + data.version + ' but ' + RequiredVersion + ' is required');\r\n                    } else {\r\n                        self.executeMappings(self.getDecoratedData(data), self.eventData.eidMappings);\r\n                    }\r\n                } else {\r\n                    alert('eID-Reader unknown error');\r\n                }\r\n            } finally {\r\n                self.piping.busyIndicator.hide();\r\n                continuation();\r\n            }\r\n        }, function (err) {\r\n            self.piping.busyIndicator.hide();\r\n            self.handleError('notRunning', 'The eID-Reader service is not running', continuation);\r\n        });\r\n\r\n        this.piping.busyIndicator.show();\r\n    };\r\n\r\n    var monthMap = [\r\n        { expr: /JAN/, value: \"01\" },\r\n        { expr: /FE(B|V)/, value: \"02\" },\r\n        { expr: /MAAR|MARS|M.R/, value: \"03\" }, // impossible to tell what the umlaut will be encoded like\r\n        { expr: /A(P|V)R/, value: \"04\" },\r\n        { expr: /M(E|A)I/, value: \"05\" },\r\n        { expr: /JUI?N/, value: \"06\" },\r\n        { expr: /JUI?L/, value: \"07\" },\r\n        { expr: /AUG|AOUT/, value: \"08\" },\r\n        { expr: /SEPT?/, value: \"09\" },\r\n        { expr: /O(K|C)T/, value: \"10\" },\r\n        { expr: /NOV/, value: \"11\" },\r\n        { expr: /DE(C|Z)/, value: \"12\" }\r\n    ];\r\n\r\n    var birthDateExpression = /(\\d\\d)\\.?\\s*(\\S+)\\.?\\s*(\\d{4})/;\r\n    var validityDateExpression = /(\\d\\d)\\.(\\d\\d)\\.(\\d{4})/;\r\n\r\n    var valueConvertersByPath = {\r\n        'id.date_of_birth': function (original, formatter) {\r\n            var match = original.match(birthDateExpression);\r\n            if (match) {\r\n                var monthName = match[2];\r\n                var monthEntry = _.find(monthMap, function (entry) { return entry.expr.test(monthName); });\r\n                if (monthEntry) {\r\n                    var date = new Date(Date.UTC(match[3], monthEntry.value - 1, match[1]));\r\n                    //var date = formatter.parseLicquidDate(match[3] + '-' + monthEntry.value + '-' + match[1] + 'T00:00:00');\r\n                    return date;\r\n                }\r\n            }\r\n            return null;\r\n        },\r\n        'id.validity_begin_date': function (original, formatter) {\r\n            var match = original.match(validityDateExpression);\r\n            if (match) {\r\n                var date = new Date(Date.UTC(match[3], match[2] - 1, match[1]));\r\n                //var date = formatter.parseLicquidDate(match[3] + '-' + match[2] + '-' + match[1] + 'T00:00:00');\r\n                return date;\r\n            }\r\n            return null;\r\n        },\r\n        'id.validity_end_date': function (original, formatter) {\r\n            var match = original.match(validityDateExpression);\r\n            if (match) {\r\n                var date = new Date(Date.UTC(match[3], match[2] - 1, match[1]));\r\n                //var date = formatter.parseLicquidDate(match[3] + '-' + match[2] + '-' + match[1] + 'T00:00:00');\r\n                return date;\r\n            }\r\n            return null;\r\n        },\r\n        'id.gender': function (original) {\r\n            if (original === \"V\" || original === \"W\")\r\n                return \"F\";\r\n            return original;\r\n        },\r\n        'address.address_street': function (original) {\r\n            var indexOfNumber = original.search(/\\d/);\r\n            if (indexOfNumber < 0) return original;\r\n\r\n            return original.substring(0, indexOfNumber).trim();\r\n        },\r\n        'address.address_number': function (original) {\r\n            var indexOfNumber = original.search(/\\d/);\r\n            if (indexOfNumber < 0) return '';\r\n\r\n            return original.substring(indexOfNumber).trim();\r\n        }\r\n    };\r\n\r\n    ExecuteEidReader.prototype.executeMappings = function (data, eidMappings) {\r\n        var self = this;\r\n\r\n        var formatter = self.piping.formatting.createFormatter();\r\n\r\n        _.each(eidMappings, function (mapping) {\r\n            var sourcePath = mapping.sourcePath;\r\n\r\n            if (sourcePath == 'address.address_street' || sourcePath == 'address.address_number')\r\n                sourcePath = 'address.address_street_and_number';\r\n\r\n            var value = util.getPropertyByPath(data, sourcePath);\r\n\r\n            if (valueConvertersByPath[mapping.sourcePath])\r\n                value = valueConvertersByPath[mapping.sourcePath](value, formatter);\r\n\r\n            self.piping.parameters.locals.setValue(mapping.targetParameter, value);\r\n        });\r\n\r\n    };\r\n\r\n    ExecuteEidReader.prototype.getDecoratedData = function (data) {\r\n        data.photoBase64 = \"data:image/png;base64, \" + data.photoBase64;\r\n        return data;\r\n    };\r\n\r\n    return ExecuteEidReader;\r\n});\n","// jquery.jsonp 2.4.0 (c)2012 Julian Aubourg | MIT License\r\n// https://github.com/jaubourg/jquery-jsonp\r\n(function(e){function t(){}function n(e){C=[e]}function r(e,t,n){return e&&e.apply&&e.apply(t.context||t,n)}function i(e){return/\\?/.test(e)?\"&\":\"?\"}function O(c){function Y(e){z++||(W(),j&&(T[I]={s:[e]}),D&&(e=D.apply(c,[e])),r(O,c,[e,b,c]),r(_,c,[c,b]))}function Z(e){z++||(W(),j&&e!=w&&(T[I]=e),r(M,c,[c,e]),r(_,c,[c,e]))}c=e.extend({},k,c);var O=c.success,M=c.error,_=c.complete,D=c.dataFilter,P=c.callbackParameter,H=c.callback,B=c.cache,j=c.pageCache,F=c.charset,I=c.url,q=c.data,R=c.timeout,U,z=0,W=t,X,V,J,K,Q,G;return S&&S(function(e){e.done(O).fail(M),O=e.resolve,M=e.reject}).promise(c),c.abort=function(){!(z++)&&W()},r(c.beforeSend,c,[c])===!1||z?c:(I=I||u,q=q?typeof q==\"string\"?q:e.param(q,c.traditional):u,I+=q?i(I)+q:u,P&&(I+=i(I)+encodeURIComponent(P)+\"=?\"),!B&&!j&&(I+=i(I)+\"_\"+(new Date).getTime()+\"=\"),I=I.replace(/=\\?(&|$)/,\"=\"+H+\"$1\"),j&&(U=T[I])?U.s?Y(U.s[0]):Z(U):(E[H]=n,K=e(y)[0],K.id=l+N++,F&&(K[o]=F),L&&L.version()<11.6?(Q=e(y)[0]).text=\"document.getElementById('\"+K.id+\"').\"+p+\"()\":K[s]=s,A&&(K.htmlFor=K.id,K.event=h),K[d]=K[p]=K[v]=function(e){if(!K[m]||!/i/.test(K[m])){try{K[h]&&K[h]()}catch(t){}e=C,C=0,e?Y(e[0]):Z(a)}},K.src=I,W=function(e){G&&clearTimeout(G),K[v]=K[d]=K[p]=null,x[g](K),Q&&x[g](Q)},x[f](K,J=x.firstChild),Q&&x[f](Q,J),G=R>0&&setTimeout(function(){Z(w)},R)),c)}var s=\"async\",o=\"charset\",u=\"\",a=\"error\",f=\"insertBefore\",l=\"_jqjsp\",c=\"on\",h=c+\"click\",p=c+a,d=c+\"load\",v=c+\"readystatechange\",m=\"readyState\",g=\"removeChild\",y=\"<script>\",b=\"success\",w=\"timeout\",E=window,S=e.Deferred,x=e(\"head\")[0]||document.documentElement,T={},N=0,C,k={callback:l,url:location.href},L=E.opera,A=!!e(\"<div>\").html(\"<!--[if IE]><i><![endif]-->\").find(\"i\").length;O.setup=function(t){e.extend(k,t)},e.jsonp=O})(jQuery);\ndefine(\"jquery.jsonp.min\", [\"jquery\"], (function (global) {\n    return function () {\n        var ret, fn;\n        return ret || global.jQuery.jsonp;\n    };\n}(this)));\n\n","define('lq/events/actions/executeEidSigner',[\r\n    'jquery', \r\n    'underscore',\r\n    'lq/events/actions/eventAction', \r\n    'jquery.jsonp.min'],\r\nfunction ($, _, EventAction) {\r\n    'use strict';\r\n\r\n    var EidServiceUrl = '/eID-IdP/';\r\n\r\n    function ExecuteEidSigner(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(ExecuteEidSigner);\r\n\r\n    ExecuteEidSigner.typeName = 'ExecuteEidSigner';\r\n\r\n    ExecuteEidSigner.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    ExecuteEidSigner.prototype.createEventActionRequest = function () {\r\n        var self = this;\r\n\r\n        return function (continuation) {\r\n            var afterSigning = function (claims) {\r\n                self.executeMappings(claims, self.eventData.eidMappings);\r\n\r\n                //var request = {\r\n                //    eventActionType: \"EidSigner\",\r\n                //    command: self.eventData.command\r\n                //};\r\n\r\n                continuation();\r\n            };\r\n\r\n            $.ajax({\r\n                url: EidServiceUrl,\r\n                type: 'POST',\r\n                cache: false,\r\n                timeout: 10 * 60 * 1000, // 10 minutes\r\n                dataType: 'json',\r\n                success: function (data) {\r\n                    self.piping.busyIndicator.hide();\r\n\r\n                    if (data.error) {\r\n                        alert(data.error);\r\n                        continuation();\r\n                    } else if (!data.success) {\r\n                        alert(\"eID signing failed.\");\r\n                        continuation();\r\n                    }\r\n                    else {\r\n                        afterSigning(data.claims);\r\n                    }\r\n                },\r\n                error: function (error) {\r\n                    busyIndicator.hide();\r\n\r\n                    if (error.responseText && error.responseText.length > 0 && error.responseText[0] === '{') {\r\n                        alert(JSON.parse(error.responseText).error);\r\n                    }\r\n                    else {\r\n                        alert(\"eID signing failed.\");\r\n                    }\r\n\r\n                    continuation();\r\n                }\r\n            });\r\n\r\n            self.piping.busyIndicator.show();\r\n        }\r\n    };\r\n\r\n    var valueConvertersByPath = {\r\n    };\r\n\r\n    ExecuteEidSigner.prototype.executeMappings = function (data, eidMappings) {\r\n        var self = this;\r\n        _.each(eidMappings, function (mapping) {\r\n            var value = data[mapping.sourcePath];\r\n            if (valueConvertersByPath[mapping.sourcePath])\r\n                value = valueConvertersByPath[mapping.sourcePath](value);\r\n            self.piping.parameters.locals.setValue(mapping.targetParameter, value);\r\n        });\r\n        \r\n    };\r\n\r\n    return ExecuteEidSigner;\r\n});\n","define('lq/events/actions/executeMethod',[\r\n    'underscore',\r\n    'lq/events/actions/eventAction'\r\n], function (_, EventAction) {\r\n    'use strict';\r\n\r\n    function ExecuteMethod(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(ExecuteMethod, EventAction);\r\n\r\n    ExecuteMethod.typeName = 'ExecuteMethod';\r\n\r\n    ExecuteMethod.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    ExecuteMethod.prototype.execute = function (continuation) {\r\n        var methodName = 'licquidMethod_' + this.eventData.method;\r\n        var drop = this.piping.dropFactory.findDropByName(this.eventData.drop);\r\n\r\n        if (!drop)\r\n            throw 'Cannot find drop : \"' + this.eventData.drop + '\".';\r\n\r\n        if (!drop[methodName])\r\n            throw 'Cannot call method : \"' + this.eventData.method + '\" on drop \"' + this.eventData.drop + '\".';\r\n\r\n        var self = this;\r\n        var args = _.object(_.map(_.keys(this.eventData.argumentMappings), function (argumentName) {\r\n            return [argumentName, self.piping.parameters.getValue(self.eventData.argumentMappings[argumentName])];\r\n        }));\r\n        drop[methodName](args);\r\n\r\n        continuation();\r\n    };\r\n\r\n    return ExecuteMethod;\r\n});\n","define('lq/events/actions/executePlugin',[\r\n    'lq/events/actions/eventAction',\r\n    'lq/fileUpload'\r\n], function (EventAction, FileUpload) {\r\n    'use strict';\r\n\r\n    function ExecutePlugin(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(ExecutePlugin, EventAction);\r\n\r\n    ExecutePlugin.typeName = 'ExecutePlugin';\r\n\r\n    ExecutePlugin.prototype.getBatchType = function () {\r\n        if (this.eventData.doNotBatch) {\r\n            return EventAction.DO_NOT_BATCH;\r\n        }\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    ExecutePlugin.prototype.createEventActionRequest = function () {\r\n        var self = this;\r\n\r\n        var eventActionRequest = {\r\n            eventActionType: \"ExecutePlugin\",\r\n            morphId: self.eventData.command,\r\n            files: []\r\n        };\r\n\r\n        if (self.eventData.fileUploads && self.eventData.fileUploads.length > 0) {\r\n            self.piping.busyIndicator.hide();\r\n\r\n            return function (continuation) {\r\n                self.uploadFile(0, eventActionRequest, continuation);\r\n            };\r\n        }\r\n        else {\r\n            return eventActionRequest;\r\n        }\r\n    };\r\n\r\n    ExecutePlugin.prototype.uploadFile = function (fileUploadIndex, eventActionRequest, continuation) {\r\n        var self = this;\r\n\r\n        if (fileUploadIndex >= self.eventData.fileUploads.length) {\r\n            self.piping.busyIndicator.show();\r\n            continuation(eventActionRequest);\r\n            return;\r\n        }\r\n\r\n        var fileUpload = self.eventData.fileUploads[fileUploadIndex];\r\n\r\n        var uploader = new FileUpload({\r\n            accept: fileUpload.accept,\r\n            multiple: fileUpload.multiple,\r\n            onInvalidFileExtension: function (filename, extensions) {\r\n                alert(filename + ' has invalid extension. Only ' + extensions + ' files are allowed.')\r\n            },\r\n            onFilesSelected: function (files) {\r\n                const addFile = function (fileIndex) {\r\n                    if (fileIndex < files.length) {\r\n                        const file = files[fileIndex];\r\n                        const reader = new FileReader();\r\n\r\n                        reader.onload = function(evt) {\r\n                            const data = evt.target.result;\r\n\r\n                            eventActionRequest.files.push({\r\n                                name: fileUpload.name,\r\n                                filename: file.name,\r\n                                data: data\r\n                            });\r\n\r\n                            addFile(fileIndex + 1);\r\n                        };\r\n\r\n                        reader.readAsDataURL(file);\r\n                    }\r\n                    else {\r\n                        self.uploadFile(fileUploadIndex + 1, eventActionRequest, continuation);\r\n                    }\r\n                }\r\n\r\n                addFile(0);\r\n            }\r\n        });\r\n\r\n        uploader.do();\r\n    };\r\n\r\n    return ExecutePlugin;\r\n});\n","define('lq/events/actions/executeQuery',[\r\n    'underscore',\r\n    'lq/events/actions/eventAction',\r\n    'lq/asyncSubcriptions'\r\n], function (_, EventAction, asyncSubcriptions) {\r\n    'use strict';\r\n\r\n    function ExecuteQuery(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(ExecuteQuery, EventAction);\r\n\r\n    ExecuteQuery.typeName = 'ExecuteQuery';\r\n\r\n    ExecuteQuery.prototype.getBatchType = function () {\r\n        return !this.eventData.dataSource.async || this.eventData.dataSource.initialDataSource\r\n            ? EventAction.QUERY_BATCH\r\n            : EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    ExecuteQuery.prototype.createEventActionRequest = function () {\r\n        if (this.getBatchType() === EventAction.DO_NOT_BATCH)\r\n            return undefined;\r\n\r\n        var queriesBatch = [];\r\n        var listeners = this.piping.datasources.getDatasourceListenersThatListenFor(this.eventData.dataSource.id);\r\n        _.each(listeners, function (listener) {\r\n            var params = {};\r\n\r\n            if (typeof (listener.decorateDataFunc) === \"function\") {\r\n                listener.decorateDataFunc(params);\r\n            }\r\n\r\n            var queryWithTheSameParams = _.find(queriesBatch, function (q) {\r\n                return _.isEqual(q.params, params);\r\n            });\r\n            if (queryWithTheSameParams) {\r\n                queryWithTheSameParams.listeners.push(listener.id);\r\n            } else {\r\n                queriesBatch.push({\r\n                    listeners: [ listener.id ],\r\n                    params: params\r\n                });\r\n            }\r\n        });\r\n\r\n        if (queriesBatch.length > 0) {\r\n            return {\r\n                eventActionType: \"ExecuteQuery\",\r\n                actionId: this.piping.actionId,\r\n                rootMorphId: this.eventData.dataSource.rootMorphId,\r\n                queryObjectName: this.eventData.dataSource.id,\r\n                queries: queriesBatch\r\n            };\r\n        } else {\r\n            return undefined; //no request needed because there are no listeners for this query!\r\n        }\r\n    };\r\n\r\n    ExecuteQuery.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (eventActionResponse) {\r\n            var self = this;\r\n            _.each(eventActionResponse.results, function (result) {\r\n                _.each(result.listeners, function(listenerId) {\r\n                    var listener = self.piping.datasources.getDatasourceListener(listenerId);\r\n                    listener.handler(result.result, false);\r\n                });\r\n            });\r\n        }\r\n\r\n        if (this.eventData.dataSource.async) {\r\n            asyncSubcriptions\r\n                .addDatasourceSubscription(\r\n                    this.piping,\r\n                    this.eventData.dataSource.id,\r\n                    this.eventData.dataSource.filter,\r\n                    this.receiveAsyncData.bind(this))\r\n                .then(continuation);\r\n        } else {\r\n            continuation();\r\n        }\r\n    };\r\n\r\n    ExecuteQuery.prototype.receiveAsyncData = function (eventName, data) {\r\n        var listeners = this.piping.datasources.getDatasourceListenersThatListenFor(this.eventData.dataSource.id);\r\n\r\n        if (eventName === 'receiveResults') {\r\n            _.each(listeners, function (listener) {\r\n                listener.handler(data, true);\r\n            });\r\n        } else if (eventName === 'deleteResult') {\r\n            _.each(listeners, function (listener) {\r\n                listener.deleteHandler(data);\r\n            });\r\n        }\r\n    };\r\n\r\n    return ExecuteQuery;\r\n});\n","define('lq/events/actions/executeTimer',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function ExecuteTimer(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(ExecuteTimer, EventAction);\r\n\r\n    ExecuteTimer.typeName = 'ExecuteTimer';\r\n\r\n    ExecuteTimer.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    ExecuteTimer.prototype.execute = function (continuation) {\r\n        var self = this;\r\n        var dropName = self.eventData.timer;\r\n        var drop = self.piping.dropFactory.findDropByName(dropName);\r\n        if (!drop)\r\n            throw 'Cannot find drop : \"' + dropName + '\" for execute timer event action.';\r\n        if (typeof drop.startTimer !== 'function')\r\n            throw 'Drop : \"' + dropName + '\" for execute timer event action is not a timer.';\r\n        drop.startTimer(continuation);\r\n    };\r\n\r\n    return ExecuteTimer;\r\n});\n","define('lq/events/actions/extractMailAttachment',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function ExtractMailAttachment(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(ExtractMailAttachment, EventAction);\r\n\r\n    ExtractMailAttachment.typeName = 'ExtractMailAttachment';\r\n\r\n    ExtractMailAttachment.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    ExtractMailAttachment.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: \"ExtractMailAttachment\",\r\n            commandId: this.eventData.command\r\n        };\r\n    };\r\n\r\n    return ExtractMailAttachment;\r\n});\n","define('lq/events/actions/eYouthAuthenticationCommand',[\r\n    'underscore',\r\n    'lq',\r\n    'lq/events/actions/eventAction'\r\n], function (_, lq, EventAction) {\r\n    'use strict';\r\n\r\n    function eYouthAuthenticationCommand(eventData, eventArg) {\r\n        var self = this;\r\n        EventAction.call(self, eventData, eventArg);\r\n\r\n        self.authWindows = [];\r\n\r\n        self.listenForMessage(function(e) {\r\n            if (e.eventName === 'eYouthAuthenticated')\r\n                self.triggerEvent('authenticated');\r\n        });\r\n\r\n        return self;\r\n    }\r\n\r\n    EventAction.extend(eYouthAuthenticationCommand, EventAction);\r\n\r\n    eYouthAuthenticationCommand.typeName = 'eYouthAuthenticationCommand';\r\n\r\n    eYouthAuthenticationCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    eYouthAuthenticationCommand.prototype.execute = function (continuation) {\r\n        var self = this;\r\n        var w = 1030;\r\n        var h = 774;\r\n        var y = window.top.outerHeight / 2 + window.top.screenY - ( h / 2);\r\n        var x = window.top.outerWidth / 2 + window.top.screenX - ( w / 2);\r\n        self.authWindows.push(window.open(lq.getTenantUrl('Sso/eYouth'), 'eYouthAuth', 'scrollbars=on,top='+y+',left='+x+',width='+w+',height='+h));\r\n\r\n        continuation();\r\n    };\r\n\r\n    eYouthAuthenticationCommand.prototype.listenForMessage = function (callback) {\r\n        var eventMethod = window.addEventListener ? 'addEventListener' : 'attachEvent';\r\n        var messageEvent = window.addEventListener ? 'message' : 'onmessage';\r\n        var self = this;\r\n\r\n        window[eventMethod](messageEvent, function (e) {\r\n            if (!_.contains(self.authWindows, e.source))\r\n                return;\r\n            try {\r\n                var eventObj = JSON.parse(e.data);\r\n                callback(eventObj);\r\n            } catch (err) {\r\n                //could not parse, ignore it\r\n            }\r\n\r\n        }, false);\r\n    };\r\n\r\n    return eYouthAuthenticationCommand;\r\n});\n","define('lq/events/actions/eYouthAuthenticationLogoutCommand',[\r\n    'underscore',\r\n    'lq',\r\n    'lq/events/actions/eventAction'\r\n], function (_, lq, EventAction) {\r\n    'use strict';\r\n\r\n    function eYouthAuthenticationLogoutCommand(eventData, eventArg) {\r\n        var self = this;\r\n        EventAction.call(self, eventData, eventArg);\r\n\r\n        self.authWindows = [];\r\n\r\n        self.listenForMessage(function(e) {\r\n            if (e.eventName === 'eYouthAuthenticated')\r\n                self.triggerEvent('loggedOff');\r\n        });\r\n\r\n        return self;\r\n    }\r\n\r\n    EventAction.extend(eYouthAuthenticationLogoutCommand, EventAction);\r\n\r\n    eYouthAuthenticationLogoutCommand.typeName = 'eYouthAuthenticationLogoutCommand';\r\n\r\n    eYouthAuthenticationLogoutCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    eYouthAuthenticationLogoutCommand.prototype.execute = function (continuation) {\r\n        var self = this;\r\n        var w = 1030;\r\n        var h = 774;\r\n        var y = window.top.outerHeight / 2 + window.top.screenY - ( h / 2);\r\n        var x = window.top.outerWidth / 2 + window.top.screenX - ( w / 2);\r\n        self.authWindows.push(window.open(lq.getTenantUrl('Sso/eYouthLogout'), 'eYouthAuth', 'scrollbars=on,top='+y+',left='+x+',width='+w+',height='+h));\r\n\r\n        continuation();\r\n    };\r\n\r\n    eYouthAuthenticationLogoutCommand.prototype.listenForMessage = function (callback) {\r\n        var eventMethod = window.addEventListener ? 'addEventListener' : 'attachEvent';\r\n        var messageEvent = window.addEventListener ? 'message' : 'onmessage';\r\n        var self = this;\r\n\r\n        window[eventMethod](messageEvent, function (e) {\r\n            if (!_.contains(self.authWindows, e.source))\r\n                return;\r\n            try {\r\n                var eventObj = JSON.parse(e.data);\r\n                callback(eventObj);\r\n            } catch (err) {\r\n                //could not parse, ignore it\r\n            }\r\n\r\n        }, false);\r\n    };\r\n\r\n    return eYouthAuthenticationLogoutCommand;\r\n});\n","define('lq/events/actions/focus',[\r\n    'lq/events/actions/eventAction',\r\n    'jquery'\r\n], function (EventAction, $) {\r\n    'use strict';\r\n\r\n    function Focus(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(Focus, EventAction);\r\n\r\n    Focus.typeName = 'Focus';\r\n\r\n    Focus.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    Focus.prototype.execute = function (continuation) {\r\n        var drop = this.piping.dropFactory.findDropById(this.eventData.morphId);\r\n        if (drop)\r\n            drop.focus();\r\n\r\n        continuation();\r\n    };\r\n\r\n    return Focus;\r\n});\n","define('lq/events/actions/forEach',['lq/events/actions/eventAction'], function (EventAction) {\r\n    'use strict';\r\n\r\n    var ForEach = function(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n\r\n        this.eventName = eventData.forEach.eventName;\r\n        this.eventArg = eventData.forEach.eventArg;\r\n        this.dataSource = eventData.forEach.dataSource;\r\n        \r\n        return this;\r\n    };\r\n\r\n    EventAction.extend(ForEach, EventAction);\r\n\r\n    ForEach.typeName = 'ForEach';\r\n\r\n    ForEach.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    ForEach.prototype.execute = function (continuation) {\r\n        var self = this;\r\n\r\n        if (self.shouldContinueWithoutDoingAnything()) {\r\n            continuation();\r\n        } else {\r\n            self.piping.queryDispatcher.dispatch(\r\n                self.dataSource.id,\r\n                function (result) {\r\n                    self.handleForEach(continuation, result.results, 0);\r\n                });\r\n        }\r\n    };\r\n    \r\n    ForEach.prototype.shouldContinueWithoutDoingAnything = function () {\r\n        return !this.piping.eventing.hasSubscribers(this.eventName);\r\n    };\r\n\r\n    ForEach.prototype.handleForEach = function (continuation, records, iterator) {\r\n        var self = this;\r\n\r\n        var nextRecord = function () {\r\n            self.handleForEach(continuation, records, iterator + 1);\r\n        };\r\n\r\n        if (iterator + 1 > records.length) {\r\n            continuation();\r\n        } else {\r\n            var arg = records[iterator][self.eventArg];\r\n            self.piping.eventing.publish(self.eventName, self.eventSource, arg, nextRecord, self.getEventActionIdentifier());\r\n        }\r\n    };\r\n\r\n    return ForEach;\r\n});\n","define('lq/events/actions/formula',[\r\n    'lq/events/actions/eventAction',\r\n    'jquery',\r\n    'underscore',\r\n    'globalize',\r\n    'lq/constants'\r\n], function (EventAction, $, _, globalize, constants) {\r\n    'use strict';\r\n\r\n    function Formula(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        this.formula = this.eventData.formula;\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(Formula, EventAction);\r\n\r\n    Formula.typeName = 'Formula';\r\n\r\n    Formula.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n    \r\n    var fillInTheValuesFromMorphsWithAViewModelKey = function (dropFactory, targetObj) {\r\n        var drops = dropFactory.getAllDrops();\r\n        var morphsWithViewModelKey = _.filter(drops, function (morph) {\r\n            return morph.data.viewModelKey && morph.getValue;\r\n        });\r\n        $.each(morphsWithViewModelKey, function (index, morph) {\r\n            targetObj[morph.data.viewModelKey] = morph.getValue();\r\n        });\r\n    };\r\n\r\n    var isValidName = function (parameterName) {\r\n        return parameterName.match(/^[$A-Za-z_][0-9A-Za-z_$]*$/g);\r\n    };\r\n\r\n    var createSeparateListsWithNamesAndValues = function (argumentsWithTheirValue) {\r\n        var args = [];\r\n        var values = [];\r\n        for (var argument in argumentsWithTheirValue) {\r\n            if (isValidName(argument)) {\r\n                var value = argumentsWithTheirValue[argument];\r\n                args.push(argument);\r\n                values.push(value);\r\n            }\r\n        }\r\n\r\n        return {\r\n            args: args,\r\n            values: values\r\n        };\r\n    };\r\n\r\n    var buildListOfArguments = function (dropFactory, argumentsWithTheirValue) {\r\n        fillInTheValuesFromMorphsWithAViewModelKey(dropFactory, argumentsWithTheirValue);\r\n        return createSeparateListsWithNamesAndValues(argumentsWithTheirValue);\r\n    };\r\n\r\n    var getBodyOfFunction = function (formula) {\r\n        var body = formula.expression;\r\n        if (body.indexOf('\\n') == -1 && !body.indexOf('return') == 0) {\r\n            body = 'return ' + body + ';';\r\n        }\r\n        return body;\r\n    };\r\n    \r\n    var getResultFromFunction = function (bodyOfFunction, argumentsWithTheirValues) {\r\n        var self = this;\r\n\r\n        return new Promise(function (resolve) {\r\n            var theFunction = new Function(argumentsWithTheirValues.args, bodyOfFunction);\r\n            var result = theFunction.apply(self, argumentsWithTheirValues.values);\r\n\r\n            if (result != null && result.constructor === Date) {\r\n                result = globalize.format(result, constants.licquidDateFormat);\r\n            }\r\n\r\n            resolve(result);\r\n        });\r\n    };\r\n\r\n    Formula.prototype.execute = function (continuation) {\r\n        var argumentsWithTheirValues = buildListOfArguments(this.piping.dropFactory, this.piping.parameters.getAll());\r\n        var bodyOfFunction = getBodyOfFunction(this.formula);\r\n        \r\n        var self = this;\r\n        getResultFromFunction(bodyOfFunction, argumentsWithTheirValues)\r\n            .then(function (result) {\r\n                var targetParameters = self.formula.targetParameterIsGlobal\r\n                    ? self.piping.parameters.globals\r\n                    : self.piping.parameters.locals;\r\n                \r\n                targetParameters.setValue(self.formula.targetParameter, result);\r\n                continuation();\r\n            });\r\n    };\r\n\r\n    return Formula;\r\n});\n","define('lq/events/actions/generateText',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function GenerateText(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(GenerateText, EventAction);\r\n\r\n    GenerateText.typeName = 'GenerateText';\r\n\r\n    GenerateText.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    GenerateText.prototype.execute = function (continuation) {\r\n        var generatedText = this.piping.parameters.replace(this.eventData.textTemplate);\r\n        this.piping.parameters.locals.setValue(this.eventData.targetParameter, generatedText);\r\n        continuation();\r\n    };\r\n\r\n    return GenerateText;\r\n});\n","define('lq/events/actions/import',[\r\n    'lq/events/actions/eventAction',\r\n    'lq/uploader'\r\n], function (EventAction, Uploader) {\r\n    'use strict';\r\n\r\n    var Import = function (eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        this.data = eventData.excelImport;\r\n        return this;\r\n    };\r\n\r\n    EventAction.extend(Import, EventAction);\r\n\r\n    Import.typeName = 'Import';\r\n\r\n    Import.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    Import.prototype.execute = function (continuation) {\r\n        var self = this;\r\n        new Uploader(this.piping)\r\n            .toTenantUrl('Import/' + self.eventData.type)\r\n            .withParameters({\r\n                actionId: this.piping.actionId,\r\n                importMorphId: this.eventData.command,\r\n                localParameters: JSON.stringify(this.piping.parameters.locals.getAll()),\r\n                globalParameters: JSON.stringify(this.piping.parameters.globals.getAll())\r\n            })\r\n            .onFileUploaded(function(uploadResponse) {\r\n                if (uploadResponse.isDirty) {\r\n                    if (self.eventIsEnabled('onExecutionTrailDirty'))\r\n                        self.triggerEvent('onExecutionTrailDirty');\r\n                    else alert('Could not complete operation, because the data is dirty.');\r\n                } else {\r\n                    if (uploadResponse && uploadResponse.success) {\r\n                        _.each(uploadResponse.globalParameters, function (val, key) {\r\n                            self.piping.parameters.globals.setValue(key, val);\r\n                        });\r\n                        _.each(uploadResponse.localParameters, function (val, key) {\r\n                            self.piping.parameters.locals.setValue(key, val);\r\n                        });\r\n                        if (self.eventData.filenameParameter && uploadResponse.filename)\r\n                            self.piping.parameters.locals.setValue(self.eventData.filenameParameter, uploadResponse.filename);\r\n                        continuation();\r\n                    } else if (uploadResponse.report) {\r\n                        var reportMessages = self.convertReportToErrorMessage(uploadResponse.report);\r\n                        if (!self.piping.errorHandler.handleError(reportMessages))\r\n                            alert(reportMessages);\r\n                    } else {\r\n                        var errorMessage = uploadResponse && uploadResponse.message\r\n                            ? uploadResponse.message\r\n                            : 'The file could not be imported.';\r\n                        if (!self.piping.errorHandler.handleError(errorMessage))\r\n                            alert(errorMessage);\r\n                    }\r\n                }\r\n            })\r\n            .uploadSingleFile();\r\n    };\r\n\r\n    Import.prototype.convertReportToErrorMessage = function (reports) {\r\n        if (reports.length === 1) {\r\n            var errors = this.mergeErrorMessages(reports[0]);\r\n            var message = 'One or more errors occurred during the import. The affected lines were not imported.';\r\n            return message + '\\n' + errors;\r\n        }\r\n\r\n        var self = this;\r\n        var allMessages = _.map(reports, function (report) {\r\n            var errors = self.mergeErrorMessages(report);\r\n            var message = 'One or more errors occurred during the import of \"' + report.name + '\". The affected lines were not imported.';\r\n            return message + '\\n' + errors;\r\n        });\r\n        return allMessages.join('\\n');\r\n    };\r\n\r\n    Import.prototype.mergeErrorMessages = function(report) {\r\n        var errors =  _.map(report.errors, function (error) {\r\n            var rowNumber = error.row + 1; // row number is zero-based on the server\r\n            var columnNumberText = error.column != null ? ' Column ' + error.column : '';\r\n            return 'Row ' + rowNumber + columnNumberText + ': ' + error.message;\r\n        });\r\n        return errors.join('\\n');\r\n    };\r\n\r\n    return Import;\r\n});\n","define('lq/events/actions/languageCommand',[\r\n    'jquery',\r\n    'lq/events/actions/eventAction',\r\n    'lq/runtimeUrl'\r\n], function ($, EventAction, RuntimeUrl) {\r\n    'use strict';\r\n\r\n    function LanguageCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(LanguageCommand, EventAction);\r\n\r\n    LanguageCommand.typeName = 'LanguageCommand';\r\n\r\n    LanguageCommand.prototype.getBatchType = function () {\r\n        return this.eventData.refreshPage\r\n            ? EventAction.DO_NOT_BATCH\r\n            : EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    LanguageCommand.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'SwitchLanguage',\r\n            commandId: this.eventData.command\r\n        };\r\n    };\r\n\r\n    LanguageCommand.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (eventActionResponse.queryString)\r\n            this.piping.url.overwriteLicquidParameter(RuntimeUrl.parameters.language, eventActionResponse.queryString);\r\n        this.refreshPageOrContinueEvents(continuation, eventActionResponse);\r\n        this.piping.parameters.systems.setValue('CurrentLanguage', eventActionResponse.languageCode);\r\n    };\r\n\r\n    LanguageCommand.prototype.refreshPageOrContinueEvents = function (continuationFunc, eventActionResponse) {\r\n        if (!eventActionResponse.refreshPage)\r\n            continuationFunc();\r\n        else {\r\n            var params = $.extend({}, this.piping.queryString.getParameters());\r\n            document.location.href = this.piping.url.prepare('', params);\r\n        }\r\n    };\r\n\r\n    return LanguageCommand;\r\n});\n","define('lq/events/actions/login',[\r\n    'jquery',\r\n    'lq',\r\n    'lq/events/actions/eventAction'\r\n], function ($, lq, EventAction) {\r\n    'use strict';\r\n\r\n    function Login(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(Login, EventAction);\r\n\r\n    Login.typeName = 'Login';\r\n\r\n    Login.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    Login.prototype.mfaId = [];\r\n    Login.prototype.mfaPollingTimer = [];\r\n\r\n    var loginCallback = function (self, result, returnUrl, continuation, showBody) {\r\n        if (result.status === 'Success') {\r\n            returnUrl = returnUrl || lq.getTenantUrl('');\r\n\r\n            if (self.eventIsEnabled('userLoggedIn'))\r\n                self.piping.dispatcher.refreshCsrfToken(function () {\r\n                    self.triggerEvent('userLoggedIn', continuation, returnUrl);\r\n                });\r\n            else\r\n                window.location = returnUrl;\r\n        }\r\n        else {\r\n            if (showBody) $('body').show();\r\n\r\n            self.mfaId[self.eventData.command] = result.mfaId;\r\n\r\n            if (result.status === 'LoginFromLocalStorageFailed')\r\n                return;\r\n            else if (result.status === 'InvalidCaptcha')\r\n                self.handleError('invalidCaptcha', 'The captcha is incorrect.', continuation);\r\n            else if (result.status === 'InvalidCredentials')\r\n                self.handleError('invalidCredentials', 'The username or password provided is incorrect.', continuation);\r\n            else if (result.status === 'UserLoginNotAllowed')\r\n                self.handleError('userLoginNotAllowed', 'The user is not allowed to log in.', continuation, result.userId);\r\n            else if (result.status === 'AccountLocked')\r\n                self.handleError('accountLocked', 'Your account has been locked out because of too many invalid login attempts.', continuation);\r\n            else if (result.status === 'MfaChallenged') {\r\n                self.startPollingMfaStatus(result.mfaId);\r\n                self.handleError('mfaChallenged', 'MFA is necessary.', continuation);\r\n            }\r\n            else if (result.status === 'MfaExpired') {\r\n                self.stopPollingMfaStatus();\r\n                self.handleError('mfaExpired', 'MFA is expired.', continuation);\r\n            }\r\n            else if (result.status === 'MfaCodeInvalid')\r\n                self.handleError('mfaCodeInvalid', 'The MFA code is incorrect.', continuation);\r\n            else\r\n                alert('Unable to login.');\r\n        }\r\n    }\r\n\r\n    Login.prototype.getUsername = function () {\r\n        return this.piping.dropFactory\r\n            .findDropByViewModelKey(this.eventData.usernameField)\r\n            .getValue();\r\n    };\r\n\r\n    Login.prototype.getPassword = function () {\r\n        return this.piping.dropFactory\r\n            .findDropByViewModelKey(this.eventData.passwordField)\r\n            .getValue();\r\n    };\r\n\r\n    Login.prototype.getMfaCode = function () {\r\n        if (!this.eventData.mfaCodeField) return null;\r\n\r\n        return this.piping.dropFactory\r\n            .findDropByViewModelKey(this.eventData.mfaCodeField)\r\n            .getValue();\r\n    };\r\n\r\n    Login.prototype.getCaptcha = function () {\r\n        if (!this.eventData.captchaField) return null;\r\n\r\n        var captchaDrop = this.piping.dropFactory\r\n            .findDropByName(this.eventData.captchaField);\r\n\r\n        if (!captchaDrop.data.captchaInputField) return null;\r\n\r\n        return this.piping.dropFactory\r\n            .findDropByName(captchaDrop.data.captchaInputField)\r\n            .getValue();\r\n    };\r\n\r\n    Login.prototype.execute = function (continuation) {\r\n        this.executeLogin(continuation, null);\r\n    }\r\n\r\n    Login.prototype.executeLogin = function (continuation, mfaConfirmed) {\r\n        var username = this.getUsername();\r\n        var password = this.getPassword();\r\n        var captcha = this.getCaptcha();\r\n        var mfaCode = this.getMfaCode();\r\n        var returnUrl = this.piping.queryString.getValueOf('ReturnUrl');\r\n\r\n        //deliberately not calling continuation(), because it makes no sense to continue event execution after a login/redirect\r\n        var self = this;\r\n        this.piping.dispatcher.dispatch(\r\n            'LicquidAction/LoginCommand', {\r\n            actionId: this.piping.actionId,\r\n            commandId: this.eventData.command,\r\n            captcha: captcha,\r\n            appId: this.piping.queryString.getValueOf('AppId'),\r\n            parameters: {\r\n                username: username,\r\n                password: password,\r\n                mfaId: self.mfaId[self.eventData.command],\r\n                mfaCode: mfaCode,\r\n                mfaConfirmed: mfaConfirmed\r\n            }\r\n        }, function (result) {\r\n            loginCallback(self, result, returnUrl, continuation, false);\r\n        });\r\n    };\r\n\r\n    Login.prototype.handleError = function (eventName, defaultMessage, continuation, eventArg) {\r\n        if (this.eventIsEnabled(eventName)) {\r\n            this.triggerEvent(eventName, continuation, eventArg);\r\n        } else {\r\n            alert(defaultMessage);\r\n            continuation();\r\n        }\r\n    };\r\n\r\n    Login.prototype.stopPollingMfaStatus = function () {\r\n        var self = this;\r\n\r\n        const timer = self.mfaPollingTimer[self.eventData.command];\r\n        if (timer) {\r\n            clearTimeout(timer);\r\n            self.mfaPollingTimer[self.eventData.command] = undefined;\r\n        }\r\n    }\r\n\r\n    Login.prototype.startPollingMfaStatus = function (mfaId) {\r\n        var self = this;\r\n\r\n        var pollMfaStatus = function () {\r\n            self.piping.dispatcher.backgroundDispatch(\r\n                'Mfa/Status',\r\n                {\r\n                    mfaId: mfaId\r\n                },\r\n                function (result) {\r\n                    if (!self.mfaPollingTimer[self.eventData.command]) return;\r\n\r\n                    if (result.expired) {\r\n                        self.stopPollingMfaStatus();\r\n                        self.handleError('mfaExpired', 'MFA is expired.');\r\n                        return;\r\n                    }\r\n\r\n                    if (result.confirmed) {\r\n                        self.stopPollingMfaStatus();\r\n                        self.executeLogin(null, true);\r\n                        return;\r\n                    }\r\n\r\n                    self.startPollingMfaStatus(mfaId);\r\n                });\r\n        };\r\n\r\n        self.stopPollingMfaStatus();\r\n        self.mfaPollingTimer[self.eventData.command] = setTimeout(pollMfaStatus, 1000);\r\n    }\r\n\r\n    return Login;\r\n});\n","define('lq/storage',[],function () {\r\n    'use strict';\r\n\r\n    return {\r\n\r\n        localStorageIsAvailable: function() {\r\n            try {\r\n                localStorage.setItem('test', 'test');\r\n                localStorage.removeItem('test');\r\n                return true;\r\n            } catch (e) {\r\n                return false;\r\n            }\r\n        }\r\n\r\n    };\r\n});\r\n\n","define('lq/events/actions/logoffCommand',[\r\n    'lq',\r\n    'lq/storage',\r\n    'lq/events/actions/eventAction'\r\n], function (lq, storage, EventAction) {\r\n    'use strict';\r\n\r\n    function LogoffCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(LogoffCommand, EventAction);\r\n\r\n    LogoffCommand.typeName = 'LogoffCommand';\r\n\r\n    LogoffCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    LogoffCommand.prototype.execute = function (continuation) {\r\n        var self = this;\r\n        this.piping.dispatcher.dispatch('LicquidAction/LogOff')\r\n            .done(function (result) {\r\n                if (storage.localStorageIsAvailable()) {\r\n                    localStorage.removeItem('licquidAuthCookie');\r\n                    localStorage.removeItem('licquidAuthCommandId');\r\n                }\r\n\r\n                if (result && result.isFederated) {\r\n                    window.location = lq.getTenantUrl('FederatedLogin/Logout');\r\n                }\r\n                else if (self.eventIsEnabled('userLoggedOff'))\r\n                    self.piping.dispatcher.refreshCsrfToken(function () {\r\n                        self.triggerEvent('userLoggedOff', continuation);\r\n                    });\r\n                else\r\n                    window.location = lq.getTenantUrl('');\r\n            });\r\n    };\r\n\r\n    return LogoffCommand;\r\n});\n","define('lq/events/actions/mail',[\r\n    'lq',\r\n    'lq/events/actions/eventAction'\r\n], function(lq, EventAction) {\r\n    'use strict';\r\n        \r\n    function Mail(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(Mail, EventAction);\r\n\r\n    Mail.typeName = 'Mail';\r\n\r\n    Mail.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n        \r\n    Mail.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'SendMail',\r\n            morphId: this.eventData.command\r\n        };\r\n    };\r\n\r\n    Mail.prototype.execute = function (continuation) {\r\n        if (this.eventIsEnabled('sent'))\r\n            this.triggerEvent('sent', continuation);\r\n        else\r\n            continuation();\r\n    };\r\n\r\n    return Mail;\r\n});\n","define('lq/events/actions/mapping',[\r\n    'underscore',\r\n    'lq/events/actions/eventAction',\r\n    'lq/entityFiltersState',\r\n    'lq/constants',\r\n    'lq/asyncSubcriptions'\r\n], function (_, EventAction, entityFiltersState, constants, asyncSubcriptions) {\r\n    'use strict';\r\n\r\n    function Mapping(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    \tthis.mapping = eventData.mapping;\r\n    }\r\n\r\n    EventAction.extend(Mapping, EventAction);\r\n\r\n    Mapping.typeName = 'Mapping';\r\n\r\n    Mapping.prototype.getBatchType = function () {\r\n        return this.mapping.type === 'DataSource' && (!this.mapping.dataSource.async || this.mapping.dataSource.initialDataSource)\r\n            ? EventAction.QUERY_BATCH\r\n            : EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    Mapping.prototype.createEventActionRequest = function () {\r\n        if (this.getBatchType() === EventAction.DO_NOT_BATCH)\r\n            return undefined;\r\n\r\n        return {\r\n            eventActionType: 'ExecuteMapping',\r\n            mappingsId: this.mapping.mappingsId,\r\n            mappingName: this.mapping.mappingName\r\n        };\r\n    };\r\n\r\n    Mapping.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (this.mapping.type === 'DataSource') {\r\n            if (eventActionResponse)\r\n                this._doMappingFromDataSource(eventActionResponse);\r\n\r\n            if (this.mapping.dataSource.async) {\r\n                asyncSubcriptions\r\n                    .addDatasourceSubscription(\r\n                        this.piping,\r\n                        this.mapping.dataSource.id,\r\n                        this.mapping.dataSource.filter,\r\n                        this.receiveAsyncData.bind(this))\r\n                    .then(continuation);\r\n            } else {\r\n                continuation();\r\n            }\r\n\r\n    \t} else if (this.mapping.type === 'Parameter') {\r\n            this._doMappingFromParameter();\r\n            continuation();\r\n    \t} else if (this.mapping.type === 'ViewModel') {\r\n            this._doMappingFromViewModel();\r\n            continuation();\r\n\t    } else if (this.mapping.type === 'QueryString') {\r\n            this._doMappingFromQueryString();\r\n            continuation();\r\n\t    } else if (this.mapping.type === 'FixedValue') {\r\n            this._doMappingFromFixedValue();\r\n            continuation();\r\n        } else if (this.mapping.type === 'NullValue') {\r\n            this._doMappingFromNullValue();\r\n            continuation();\r\n    \t} else {\r\n    \t\tthrow new Error('Unknown type of mapping encountered');\r\n        }\r\n    };\r\n\r\n    Mapping.prototype.receiveAsyncData = function (eventName, data) {\r\n        if (eventName === 'receiveResults') {\r\n            this._doMappingFromDataSource({\r\n                queryResult: data\r\n            })\r\n        }\r\n    };\r\n\r\n    Mapping.prototype._doMappingFromDataSource = function (eventActionResponse) {\r\n        var self = this;\r\n\r\n        var queryResult = eventActionResponse.queryResult;\r\n        _.each(this.mapping.fields, function (field) {\r\n            var aResult = queryResult.results[0];\r\n\r\n            if (field.target === 'EntityFilters') {\r\n                entityFiltersState.restoreStateOfFilters(self.rootDrop, aResult[field.sourceOutput]);\r\n            } else if (field.targetViewModelKey) {\r\n                var targetMorph = self.piping.dropFactory.findDropByViewModelKey(field.targetViewModelKey);\r\n                if (targetMorph) {\r\n                    if (aResult === null || aResult === undefined || aResult === NaN || aResult === '') {\r\n                        targetMorph.clearValue();\r\n                    } else {\r\n                        if (targetMorph.supportsManyToManyData()) {\r\n                            targetMorph.setValue({\r\n                                type: queryResult.outputs[field.sourceOutput],\r\n                                value: _.map(queryResult.results, function(aResult) {\r\n                                    return aResult[field.sourceOutput];\r\n                                })\r\n                            });\r\n                        } else {\r\n                            targetMorph.setValue({\r\n                                type: queryResult.outputs[field.sourceOutput],\r\n                                value: aResult[field.sourceOutput]\r\n                            });\r\n                        }\r\n                    }\r\n                }\r\n            } else if (field.targetParameterIsGlobal) {\r\n                self.piping.parameters.globals.setValue(field.targetParameter, aResult ? aResult[field.sourceOutput] : null);\r\n            } else {\r\n                self.piping.parameters.locals.setValue(field.targetParameter, aResult ? aResult[field.sourceOutput] : null);\r\n            }\r\n        });\r\n\r\n        var listeners = this.piping.datasources.getDatasourceListenersThatListenForWithDefaultParams(this.mapping.dataSource.id);\r\n\r\n    \t_.each(listeners, function (listener) {\r\n    \t    listener.handler(queryResult);\r\n    \t});\r\n    };\r\n\r\n    Mapping.prototype._doMappingFromViewModel = function () {\r\n        var self = this;\r\n        _.each(this.mapping.fields, function (field) {\r\n            var sourceMorph = self.piping.dropFactory.findDropByViewModelKey(field.sourceViewModelKey);\r\n    \t\tif (sourceMorph) {\r\n    \t\t    var value = sourceMorph.getValue();\r\n    \t\t    self._mapValue(field, value);\r\n    \t\t}\r\n    \t});\r\n    };\r\n\r\n    Mapping.prototype._doMappingFromParameter = function () {\r\n        var self = this;\r\n    \t_.each(this.mapping.fields, function (field) {\r\n            var value = self.piping.parameters.getValue(field.sourceParameter);\r\n    \t    self._mapValue(field, value);\r\n\t    });\r\n    };\r\n\r\n    Mapping.prototype._doMappingFromQueryString = function () {\r\n        var self = this;\r\n        _.each(this.mapping.fields, function (field) {\r\n            var value = self.piping.queryString.getValueOf(field.sourceParameter);\r\n            self._mapValue(field, value);\r\n        });\r\n    };\r\n    \r\n    Mapping.prototype._doMappingFromFixedValue = function () {\r\n        var self = this;\r\n        _.each(this.mapping.fields, function (field) {\r\n            self._mapValue(field, field.sourceValue);\r\n        });\r\n    };\r\n\r\n    Mapping.prototype._doMappingFromNullValue = function () {\r\n        var self = this;\r\n        _.each(this.mapping.fields, function (field) {\r\n            self._mapValue(field, null);\r\n        });\r\n    };\r\n\r\n    Mapping.prototype._mapValue = function (field, value) {\r\n        if (field.targetViewModelKey) {\r\n            var targetMorph = this.piping.dropFactory.findDropByViewModelKey(field.targetViewModelKey);\r\n            if (targetMorph) {\r\n                if (value === null || value === undefined || value === NaN || value === \"\") {\r\n                    targetMorph.clearValue();\r\n                } else {\r\n                    targetMorph.setValue({\r\n                        type: constants.valueTypes.string,\r\n                        value: value\r\n                    });\r\n                }\r\n            }\r\n        } else if (field.targetParameterIsGlobal) {\r\n            this.piping.parameters.globals.setValue(field.targetParameter, value);\r\n        } else {\r\n            this.piping.parameters.locals.setValue(field.targetParameter, value);\r\n        }\r\n    };\r\n\r\n    return Mapping;\r\n});\n","define('lq/events/actions/mollie',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function Mollie(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(Mollie, EventAction);\r\n\r\n    Mollie.typeName = 'Mollie';\r\n\r\n    Mollie.prototype.getBatchType = function() {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    Mollie.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: \"CreateMolliePayment\",\r\n            commandId: this.eventData.command\r\n        };\r\n    };\r\n\r\n    Mollie.prototype.execute = function(continuation, eventActionResponse) {\r\n        if (eventActionResponse.paymentUrl)\r\n            window.location.href = eventActionResponse.paymentUrl;\r\n        else\r\n            continuation();\r\n    };\r\n\r\n    Mollie.prototype.handleError = function(eventName, defaultMessage, continuation) {\r\n        if (this.eventIsEnabled(eventName)) {\r\n            this.triggerEvent(eventName, continuation);\r\n        } else {\r\n            alert(defaultMessage);\r\n            continuation();\r\n        }\r\n    };\r\n\r\n    return Mollie;\r\n});\n","define('lq/events/actions/mollieCreateCustomer',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function MollieCreateCustomer(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(MollieCreateCustomer, EventAction);\r\n\r\n    MollieCreateCustomer.typeName = 'MollieCreateCustomer';\r\n\r\n    MollieCreateCustomer.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    MollieCreateCustomer.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: \"CreateMollieCustomer\",\r\n            commandId: this.eventData.command\r\n        };\r\n    };\r\n\r\n    return MollieCreateCustomer;\r\n});\n","define('lq/events/actions/mollieUpdateCustomer',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function MollieUpdateCustomer(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(MollieUpdateCustomer, EventAction);\r\n\r\n    MollieUpdateCustomer.typeName = 'MollieUpdateCustomer';\r\n\r\n    MollieUpdateCustomer.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    MollieUpdateCustomer.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: \"UpdateMollieCustomer\",\r\n            commandId: this.eventData.command\r\n        };\r\n    };\r\n\r\n    return MollieUpdateCustomer;\r\n});\n","define('lq/events/actions/officeAddinLoginCommand',[\r\n    'underscore',\r\n    'lq',\r\n    'lq/events/actions/eventAction'\r\n], function (_, lq, EventAction) {\r\n    'use strict';\r\n\r\n    // reference: https://dev.office.com/reference/add-ins/outlook/1.5/Office\r\n\r\n    var initialized = false;\r\n    var afterInitialization = [];\r\n\r\n    function OfficeAddinLoginCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(OfficeAddinLoginCommand, EventAction);\r\n\r\n    OfficeAddinLoginCommand.typeName = 'OfficeAddinLoginCommand';\r\n\r\n    // unable to batch for now, because requesting a token is async\r\n    OfficeAddinLoginCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    OfficeAddinLoginCommand.prototype.execute = function (continuation) {\r\n        if (initialized)\r\n            this.startReadingMessage(continuation);\r\n        else {\r\n            afterInitialization.push(this.startLogin.bind(this, continuation));\r\n\r\n            require([\r\n                'https://appsforoffice.microsoft.com/lib/1/hosted/Office.js'\r\n            ], function () {\r\n                Office.initialize = function () {\r\n                    initialized = true;\r\n\r\n                    _.each(afterInitialization,\r\n                        function (afterInitialization) {\r\n                            afterInitialization();\r\n                        });\r\n                };\r\n            });\r\n        }\r\n    };\r\n\r\n    var loginCallback = function (self, result, returnUrl, continuation) {\r\n        if (result.status === 'Success') {\r\n            returnUrl = returnUrl || lq.getTenantUrl('');\r\n\r\n            if (self.eventIsEnabled('userLoggedIn'))\r\n                self.piping.dispatcher.refreshCsrfToken(function () {\r\n                    self.triggerEvent('userLoggedIn', continuation, returnUrl);\r\n                });\r\n            else\r\n                window.location = returnUrl;\r\n        }\r\n        else {\r\n            if (result.status === 'InvalidCredentials' || result.status === 'UserNotFound')\r\n                self.handleError('invalidCredentials', 'The username or password provided is incorrect.', continuation);\r\n            else if (result.status === 'UserLoginNotAllowed')\r\n                self.handleError('userLoginNotAllowed', 'The user is not allowed to log in.', continuation, result.userId);\r\n            else if (result.status === 'AccountLocked')\r\n                self.handleError('accountLocked', 'Your account has been locked out because of too many invalid login attempts.', continuation);\r\n            else\r\n                alert('Unable to login.');\r\n        }\r\n    };\r\n\r\n    OfficeAddinLoginCommand.prototype.startLogin = function (continuation) {\r\n        var self = this;\r\n        \r\n        var returnUrl = this.piping.queryString.getValueOf('ReturnUrl');\r\n\r\n        Office.context.mailbox.getCallbackTokenAsync(function (callbackToken) {\r\n            if (callbackToken.status !== 'succeeded')\r\n                throw new Error('Unable to get a token from Outlook.');\r\n\r\n            self.piping.dispatcher.dispatch('Outlook/LogIn',\r\n                {\r\n                    actionId: self.piping.actionId,\r\n                    commandId: self.eventData.commandId,\r\n                    ewsUrl: Office.context.mailbox.ewsUrl,\r\n                    callbackToken: callbackToken.value,\r\n                    itemId: Office.context.mailbox.item.itemId\r\n                })\r\n                .then(function (result) {\r\n                    loginCallback(self, result, returnUrl, continuation);\r\n                });\r\n        });\r\n\r\n        OfficeAddinLoginCommand.prototype.handleError = function (eventName, defaultMessage, continuation, eventArg) {\r\n            if (this.eventIsEnabled(eventName)) {\r\n                this.triggerEvent(eventName, continuation, eventArg);\r\n            } else {\r\n                alert(defaultMessage);\r\n                continuation();\r\n            }\r\n        };\r\n    };\r\n\r\n    return OfficeAddinLoginCommand;\r\n});\n","define('lq/events/actions/openDocumentInOfficeOnline',[\r\n    'underscore',\r\n    'lq/events/actions/eventAction',\r\n    'lq',\r\n    'lq/util',\r\n    'lq/dispatcher',\r\n    'lq/cookie',\r\n    'lq/formSubmission'\r\n], function (_, EventAction, lq, util, dispatcher, cookie, FormSubmission) {\r\n    'use strict';\r\n\r\n    function OpenDocumentInOfficeOnline(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        this.eventData = eventData;\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(OpenDocumentInOfficeOnline, EventAction);\r\n\r\n    OpenDocumentInOfficeOnline.typeName = 'OpenDocumentInOfficeOnline';\r\n\r\n    OpenDocumentInOfficeOnline.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    OpenDocumentInOfficeOnline.prototype.execute = function (continuation) {\r\n        var self = this;\r\n\r\n        var documentId = self.piping.parameters.getValue(self.eventData.idParameter);\r\n        if (!documentId) {\r\n            continuation();\r\n            return;\r\n        }\r\n\r\n        var wopiWindowName = 'wopi-window-' + self.eventData.commandId + '-' + Date.now();\r\n        var wopiWindow = window.open('', wopiWindowName);\r\n\r\n        //var onPostMessage = function(event) {\r\n        //    console.log('WOPI PostMessage', event);\r\n        //}\r\n\r\n        //wopiWindow.addEventListener('message', onPostMessage);\r\n        //window.addEventListener('message', onPostMessage);\r\n\r\n        var form = new FormSubmission(self.piping.url.prepare(lq.getTenantUrl('Wopi/Open')), wopiWindowName);\r\n        form.addProperty('actionId', self.piping.actionId);\r\n        form.addProperty('commandId', self.eventData.commandId);\r\n        form.addProperty('documentId', documentId);\r\n        form.addParameters('parameters', self.piping.parameters.getNonSystemParameters());\r\n        form.submit();\r\n\r\n        var isClosed = false;\r\n        var closedTime = null;\r\n        var lastModificationDate = null;\r\n\r\n        var closedTimer = setInterval(function () {\r\n            if (wopiWindow.closed) {\r\n                clearInterval(closedTimer);\r\n\r\n                isClosed = true;\r\n                closedTime = Date.now();\r\n\r\n                //wopiWindow.removeEventListener('message', onPostMessage);\r\n                //window.removeEventListener('message', onPostMessage);\r\n\r\n                if (self.eventIsEnabled('closed'))\r\n                    self.triggerEvent('closed');\r\n            }\r\n        }, 500);\r\n\r\n        if (self.eventIsEnabled('saved') || self.eventIsEnabled('savedafterclosed')) {\r\n            var checkIsSaved = function () {\r\n                var interval = 2000;\r\n                var giveUpAfter = 30000;\r\n\r\n                if (isClosed && (Date.now() - closedTime) > giveUpAfter) {\r\n                    if (self.eventIsEnabled('savedafterclosed'))\r\n                        self.triggerEvent('savedafterclosed');\r\n                    return;\r\n                }\r\n\r\n                dispatcher.dispatch(\r\n                    'Wopi/GetModificationDate',\r\n                    {\r\n                        actionId: self.piping.actionId,\r\n                        commandId: self.eventData.commandId,\r\n                        documentId: documentId\r\n                    },\r\n                    function (result) {\r\n                        var isSaved = lastModificationDate && lastModificationDate !== result;\r\n                        lastModificationDate = result;\r\n\r\n                        if (isSaved) {\r\n                            if (self.eventIsEnabled('saved'))\r\n                                self.triggerEvent('saved');\r\n\r\n                            if (isClosed) {\r\n                                if (self.eventIsEnabled('savedafterclosed'))\r\n                                    self.triggerEvent('savedafterclosed');\r\n                                return;\r\n                            }\r\n                        }\r\n\r\n                        setTimeout(checkIsSaved, interval);\r\n                    },\r\n                    { global: false },\r\n                    function () {\r\n                        setTimeout(checkIsSaved, interval);\r\n                    });\r\n            };\r\n\r\n            checkIsSaved();\r\n        }\r\n\r\n        continuation();\r\n    };\r\n\r\n    return OpenDocumentInOfficeOnline;\r\n});\n","define('lq/events/actions/pain001ExportCommand',[\r\n    'lq/events/actions/eventAction',\r\n    'jquery',\r\n    'lq',\r\n    'lq/cookie',\r\n    'lq/formSubmission'\r\n], function (EventAction, $, lq, cookie, FormSubmission) {\r\n    'use strict';\r\n\r\n    function Pain001ExportCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(Pain001ExportCommand, EventAction);\r\n\r\n    Pain001ExportCommand.typeName = 'Pain001ExportCommand';\r\n\r\n    Pain001ExportCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    Pain001ExportCommand.prototype.createEventActionRequest = function() {\r\n        if (this.eventData.downloadOnly)\r\n            return undefined;\r\n\r\n        return {\r\n            eventActionType: 'Pain001Export',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    Pain001ExportCommand.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (this.eventData.downloadOnly) {\r\n            var token = 'pain0001-export-' + Date.now();\r\n\r\n            var form = new FormSubmission(this.piping.url.prepare(lq.getTenantUrl('Export/Pain001')));\r\n            form.addProperty('actionId', this.piping.actionId);\r\n            form.addProperty('pain001ExportId', this.eventData.command);\r\n            form.addProperty('token', token);\r\n            form.addParameters('parameters', this.piping.parameters.getNonSystemParameters());\r\n            form.submit();\r\n\r\n            var waitWhileDownloadIsStarting = function() {\r\n                if (cookie.get(token) === null)\r\n                    setTimeout(waitWhileDownloadIsStarting, 200);\r\n                else\r\n                    continuation();\r\n            };\r\n            waitWhileDownloadIsStarting(); \r\n        } else if (eventActionResponse.isDirty) {\r\n            if (this.eventIsEnabled('onExecutionTrailDirty'))\r\n                this.triggerEvent('onExecutionTrailDirty');\r\n            else alert('Could not complete operation, because the data is dirty.');\r\n        } else if (eventActionResponse.download) {\r\n            var queryString = {\r\n                url: eventActionResponse.url,\r\n                filename: eventActionResponse.filename,\r\n                openInBrowser: false\r\n            };\r\n            window.location = this.piping.url.prepare(lq.getTenantUrl('DynamicContent/DownloadFile'), queryString);\r\n            continuation();\r\n        } else {\r\n            continuation();\r\n        }\r\n    };\r\n\r\n    return Pain001ExportCommand;\r\n});\n","define('lq/events/actions/payment',[\r\n    'lq/events/actions/eventAction',\r\n    'jquery'\r\n], function (EventAction, $) {\r\n    'use strict';\r\n\r\n    function Payment(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(Payment, EventAction);\r\n\r\n    Payment.typeName = 'Payment';\r\n\r\n    Payment.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    Payment.prototype.execute = function (continuation) {\r\n        var self = this;\r\n\r\n        var drop = this.piping.dropFactory.findDropById(self.eventData.command);\r\n        if (drop) {\r\n            drop.executePayment();\r\n        }\r\n\r\n        continuation();\r\n    };\r\n\r\n    return Payment;\r\n});\n","define('lq/events/actions/paypal',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function Paypal(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(Paypal, EventAction);\r\n\r\n    Paypal.typeName = 'Paypal';\r\n\r\n    Paypal.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    Paypal.prototype.execute = function () {\r\n        var data = {\r\n            actionId: this.piping.actionId,\r\n            morphId: this.eventData.command,\r\n            parameters: this.piping.parameters.getNonSystemParameters()\r\n        };\r\n\r\n        this.piping.dispatcher.dispatch('LicquidAction/CreatePayPalCheckout', data)\r\n            .done(this.paymentInitialized.bind(this));\r\n    };\r\n\r\n    Paypal.prototype.paymentInitialized = function (initializedPayment) {\r\n        window.location.href = initializedPayment.approvalUrl;\r\n    };\r\n\r\n    return Paypal;\r\n});\n","define('lq/events/actions/pdfDataCommand',['lq/events/actions/eventAction'], function (EventAction) {\r\n    'use strict';\r\n\r\n    var PdfDataCommand = function(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    };\r\n\r\n    EventAction.extend(PdfDataCommand, EventAction);\r\n\r\n    PdfDataCommand.typeName = 'PdfDataCommand';\r\n\r\n    PdfDataCommand.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    PdfDataCommand.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'PdfData',\r\n            command: this.eventData.command\r\n        };\r\n    };    \r\n\r\n    return PdfDataCommand;\r\n});\n","define('lq/events/actions/pdfMergeCommand',[\r\n    'lq/events/actions/eventAction',\r\n    'lq'\r\n], function (EventAction, lq) {\r\n    'use strict';\r\n\r\n    var PdfMergeCommand = function(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    };\r\n\r\n    EventAction.extend(PdfMergeCommand, EventAction);\r\n\r\n    PdfMergeCommand.typeName = 'PdfMergeCommand';\r\n\r\n    PdfMergeCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    PdfMergeCommand.prototype.createEventActionRequest = function () {\r\n        var self = this;\r\n\r\n        return {\r\n            eventActionType: 'PdfMerge',\r\n            command: self.eventData.command\r\n        };\r\n    };\r\n\r\n    PdfMergeCommand.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (eventActionResponse.isDirty) {\r\n            if (this.eventIsEnabled('onExecutionTrailDirty'))\r\n                this.triggerEvent('onExecutionTrailDirty');\r\n            else alert('Could not complete operation, because the data is dirty.');\r\n        } else {\r\n            if (eventActionResponse.download) {\r\n                var url = lq.getTenantUrl(\r\n                    'PdfMerge/?actionId=' + eventActionResponse.actionId +\r\n                    '&pdfMergeId=' + eventActionResponse.pdfMergeId +\r\n                    '&parameters=' + encodeURIComponent(JSON.stringify(this.piping.parameters.getNonSystemParameters() || {})) +\r\n                    '#toolbar=1');\r\n                window.open(url);\r\n            }\r\n            continuation();\r\n        }\r\n    };\r\n\r\n    return PdfMergeCommand;\r\n});\n","define('lq/events/actions/pdfMergeCommand_v2',[\r\n    'lq/events/actions/eventAction',\r\n    'lq'\r\n], function (EventAction, lq) {\r\n    'use strict';\r\n\r\n    var PdfMergeCommand_v2 = function(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    };\r\n\r\n    EventAction.extend(PdfMergeCommand_v2, EventAction);\r\n\r\n    PdfMergeCommand_v2.typeName = 'PdfMergeCommand_v2';\r\n\r\n    PdfMergeCommand_v2.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    PdfMergeCommand_v2.prototype.createEventActionRequest = function () {\r\n        var self = this;\r\n\r\n        return {\r\n            eventActionType: 'PdfMerge',\r\n            command: self.eventData.command\r\n        };\r\n    };\r\n\r\n    PdfMergeCommand_v2.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (eventActionResponse.isDirty) {\r\n            if (this.eventIsEnabled('onExecutionTrailDirty'))\r\n                this.triggerEvent('onExecutionTrailDirty');\r\n            else alert('Could not complete operation, because the data is dirty.');\r\n        } else {\r\n            if (eventActionResponse.download) {\r\n                var url = lq.getTenantUrl(\r\n                    'PdfMerge/?actionId=' + eventActionResponse.actionId +\r\n                    '&pdfMergeId=' + eventActionResponse.pdfMergeId +\r\n                    '&parameters=' + encodeURIComponent(JSON.stringify(this.piping.parameters.getNonSystemParameters() || {})) +\r\n                    '#toolbar=1');\r\n                window.open(url);\r\n            }\r\n            continuation();\r\n        }\r\n    };\r\n\r\n    return PdfMergeCommand_v2;\r\n});\n","define('lq/events/actions/platformCommand',[\r\n    'lq/events/actions/eventAction',\r\n    'jquery',\r\n    'underscore',\r\n    'lq'\r\n], function (EventAction, $, _, lq) {\r\n    'use strict';\r\n\r\n    function PlatformCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        this.mapping = eventData.mapping;\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(PlatformCommand, EventAction);\r\n\r\n    PlatformCommand.typeName = 'PlatformCommand';\r\n\r\n    PlatformCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    PlatformCommand.prototype.createEventActionRequest = function () {\r\n        var self = this;\r\n\r\n        var commandViewModelKeysValues = {};\r\n\r\n        _.each(self.piping.dropFactory.getAllDrops(), function (drop) {\r\n            if (drop.getValue) {\r\n                var value = drop.getValue();\r\n                commandViewModelKeysValues[drop.data.viewModelKey] = value;\r\n            }\r\n        });\r\n\r\n        return {\r\n            eventActionType: \"PlatformCommand\",\r\n            command: self.eventData.command,\r\n            commandViewModelKeys: commandViewModelKeysValues\r\n        };\r\n    };\r\n\r\n    PlatformCommand.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (eventActionResponse.outputs) {\r\n            var self = this;\r\n            _.each(this.mapping.fields, function (mapping) {\r\n                self.piping.parameters.locals.setValue(mapping.targetParameter, eventActionResponse.outputs[mapping.sourceOutput]);\r\n            });\r\n        }\r\n        \r\n        continuation();\r\n    };\r\n\r\n    return PlatformCommand;\r\n});\n","define('lq/events/actions/plugInLogin',[\r\n    'jquery',\r\n    'lq',\r\n    'lq/events/actions/eventAction'\r\n], function ($, lq, EventAction) {\r\n    'use strict';\r\n\r\n    function PlugInLogin(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(PlugInLogin, EventAction);\r\n\r\n    PlugInLogin.typeName = 'PlugInLogin';\r\n\r\n    PlugInLogin.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    PlugInLogin.prototype.execute = function (continuation) {\r\n        this.piping.dispatcher.dispatch(\r\n            'LicquidAction/LoginCommand', {\r\n                actionId: this.piping.actionId,\r\n                commandId: this.eventData.command,\r\n                captcha: this.getCaptcha(),\r\n                appId: this.piping.queryString.getValueOf('AppId'),\r\n                parameters: this.getParameters()\r\n            }, this.handleResult.bind(this, continuation));\r\n    };\r\n\r\n    PlugInLogin.prototype.getParameters = function() {\r\n        var parameters = {};\r\n\r\n        var self = this;\r\n        _.each(this.eventData.parameterMappings, function (mapping) {\r\n            parameters[mapping.targetParameter] = self.piping.parameters.getValue(mapping.sourceParameter);\r\n        });\r\n\r\n        return parameters;\r\n    };\r\n\r\n    PlugInLogin.prototype.handleResult = function (continuation, result) {\r\n        if (result.status === 'Success') {\r\n            var returnUrl = this.piping.queryString.getValueOf('ReturnUrl') || lq.getTenantUrl('');\r\n\r\n            if (this.eventIsEnabled('userLoggedIn'))\r\n                this.triggerEvent('userLoggedIn', continuation, returnUrl);\r\n            else\r\n                window.location = returnUrl;\r\n        } else {\r\n            if (result.status === 'InvalidCredentials')\r\n                this.handleError('invalidCredentials', 'The credentials are invalid.', continuation);\r\n            else if (result.status === 'InvalidCaptcha')\r\n                this.handleError('invalidCaptcha', 'The captcha is incorrect.', continuation);\r\n            else if (result.status === 'UserLoginNotAllowed')\r\n                self.handleError('userLoginNotAllowed', 'The user is not allowed to log in.', continuation, result.userId);\r\n            else\r\n                alert('Unable to login.');\r\n        }\r\n    };\r\n\r\n    PlugInLogin.prototype.handleError = function (eventName, defaultMessage, continuation, eventArg) {\r\n        if (this.eventIsEnabled(eventName)) {\r\n            this.triggerEvent(eventName, continuation, eventArg);\r\n        } else {\r\n            alert(defaultMessage);\r\n            continuation();\r\n        }\r\n    };\r\n\r\n    PlugInLogin.prototype.getCaptcha = function () {\r\n        if (!this.eventData.captchaField) return null;\r\n\r\n        var captchaDrop = this.piping.dropFactory\r\n            .findDropByName(this.eventData.captchaField);\r\n\r\n        if (!captchaDrop.data.captchaInputField) return null;\r\n\r\n        return this.piping.dropFactory\r\n            .findDropByName(captchaDrop.data.captchaInputField)\r\n            .getValue();\r\n    };\r\n\r\n    return PlugInLogin;\r\n});\n","define('lq/events/actions/pushNotificationsCommand',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function PushNotificationsCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(PushNotificationsCommand, EventAction);\r\n\r\n    PushNotificationsCommand.typeName = 'PushNotificationsCommand';\r\n\r\n    PushNotificationsCommand.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    PushNotificationsCommand.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'PushNotifications',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    return PushNotificationsCommand;\r\n});\n","define('lq/events/actions/raiseEvent',[\r\n        'lq/events/actions/eventAction',\r\n        'jquery'\r\n], function (EventAction, $) {\r\n    'use strict';\r\n\r\n    function RaiseEvent(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(RaiseEvent, EventAction);\r\n\r\n    RaiseEvent.typeName = 'RaiseEvent';\r\n\r\n    RaiseEvent.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n    \r\n    RaiseEvent.prototype.execute = function (continuation) {            \r\n        if (this.eventData.eventReceiver) {\r\n            var drop = this.piping.dropFactory.findDropById(this.eventData.eventReceiver);\r\n\r\n            if (drop) {\r\n                var eventObj = {\r\n                    eventName: this.eventData.eventName,\r\n                    args: [this.getEventValue()]\r\n                };\r\n                drop.triggerEventForChild(eventObj);\r\n            }\r\n\r\n            continuation();\r\n        } else {\r\n            this.piping.eventing.publish(this.eventData.eventName, this.eventSource, this.getEventValue(), continuation, this.getEventActionIdentifier());\r\n        } \r\n    };\r\n\r\n    RaiseEvent.prototype.getEventValue = function () {\r\n        if (this.eventData.eventParameter)\r\n            return this.piping.parameters.getValue(this.eventData.eventParameter);\r\n        return null;\r\n    };\r\n\r\n    return RaiseEvent;\r\n});\n","define('lq/events/actions/readOutlookMessage',[\r\n    'underscore',\r\n    'globalize',\r\n    'lq/events/actions/eventAction',\r\n    'lq/constants'\r\n], function(_, globalize, EventAction, constants) {\r\n    'use strict';\r\n\r\n    // reference: https://dev.office.com/reference/add-ins/outlook/1.5/Office\r\n\r\n    var initialized = false;\r\n    var afterInitialization = [];\r\n    \r\n    function ReadOutlookMessage(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(ReadOutlookMessage, EventAction);\r\n\r\n    ReadOutlookMessage.typeName = 'ReadOutlookMessage';\r\n\r\n    // unable to batch for now, because requesting a token is async\r\n    ReadOutlookMessage.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n    \r\n    ReadOutlookMessage.prototype.execute = function (continuation) {\r\n        if (initialized)\r\n            this.startReadingMessage(continuation);\r\n        else {\r\n            afterInitialization.push(this.startReadingMessage.bind(this, continuation));\r\n\r\n            require([\r\n                'https://appsforoffice.microsoft.com/lib/1/hosted/Office.js'\r\n            ], function () {\r\n                Office.initialize = function () {\r\n                    initialized = true;\r\n\r\n                    _.each(afterInitialization,\r\n                        function (afterInitialization) {\r\n                            afterInitialization();\r\n                        });\r\n                };\r\n            });\r\n        }\r\n    };\r\n\r\n    ReadOutlookMessage.prototype.startReadingMessage = function(continuation) {\r\n        if (this.eventData.storeMessage) {\r\n            var self = this;\r\n            Office.context.mailbox.getCallbackTokenAsync(function (callbackToken) {\r\n                if (callbackToken.status !== 'succeeded')\r\n                    throw new Error('Unable to get a token from Outlook.');\r\n\r\n                self.piping.dispatcher.dispatch('Outlook/FetchMessage',\r\n                        {\r\n                            actionId: self.piping.actionId,\r\n                            commandId: self.eventData.commandId,\r\n                            ewsUrl: Office.context.mailbox.ewsUrl,\r\n                            callbackToken: callbackToken.value,\r\n                            itemId: Office.context.mailbox.item.itemId\r\n                        })\r\n                    .then(function (result) {\r\n                        if (self.eventData.messageEntityId)\r\n                            self.piping.parameters.locals.setValue(self.eventData.messageEntityId, result.id);\r\n\r\n                        self.readParameters(continuation);\r\n                    });\r\n            });\r\n        } else {\r\n            this.readParameters(continuation);\r\n        }\r\n    };\r\n\r\n    ReadOutlookMessage.prototype.readParameters = function (continuation) {\r\n        var item = Office.context.mailbox.item;\r\n\r\n        if (this.eventData.subject)\r\n            this.piping.parameters.locals.setValue(this.eventData.subject, item.subject);\r\n\r\n        if (this.eventData.sender)\r\n            this.piping.parameters.locals.setValue(this.eventData.sender, this.printEmailAddress(item.sender));\r\n\r\n        if (this.eventData.to)\r\n            this.piping.parameters.locals.setValue(this.eventData.to, this.printEmailAddresses(item.to));\r\n\r\n        if (this.eventData.cc)\r\n            this.piping.parameters.locals.setValue(this.eventData.cc, this.printEmailAddresses(item.cc));\r\n\r\n        if (this.eventData.bcc)\r\n            this.piping.parameters.locals.setValue(this.eventData.bcc, this.printEmailAddresses(item.bcc));\r\n\r\n        if (this.eventData.hasAttachments)\r\n            this.piping.parameters.locals.setValue(this.eventData.hasAttachments, item.attachments.length > 0);\r\n\r\n        if (this.eventData.dateTimeCreated) {\r\n            var theDate = globalize.format(item.dateTimeCreated, constants.licquidDateFormat);\r\n            this.piping.parameters.locals.setValue(this.eventData.dateTimeCreated, theDate);\r\n        }\r\n\r\n        if (this.eventData.body) {\r\n            var self = this;\r\n            item.body.getAsync('text', function callback(result) {\r\n                if (result.status !== 'succeeded')\r\n                    throw new Error('Unable to get the body of the mail from Outlook.');\r\n\r\n                self.piping.parameters.locals.setValue(self.eventData.body, result.value);\r\n                continuation();\r\n            });\r\n        } else {\r\n            continuation();\r\n        }\r\n    };\r\n\r\n    ReadOutlookMessage.prototype.printEmailAddresses = function (addresses) {\r\n        var printedAddresses = _.map(addresses, this.printEmailAddress.bind(this));\r\n        return printedAddresses.join(', ');\r\n    };\r\n\r\n    ReadOutlookMessage.prototype.printEmailAddress = function (address) {\r\n        if (!address) return null;\r\n\r\n        if (this.eventData.displayMode === 'emailAddress')\r\n            return address.emailAddress;\r\n\r\n        if (this.eventData.displayMode === 'displayName')\r\n            return address.displayName;\r\n\r\n        return address.displayName + ' <' + address.emailAddress  + '>';\r\n    };\r\n\r\n    return ReadOutlookMessage;\r\n});\n","define('lq/events/actions/redirect',[\r\n    'lq',\r\n    './eventAction',\r\n    'lq/util',\r\n    'lq/validatorGateway',\r\n    'uuid'\r\n], function (lq, EventAction, util, validatorGateway, uuid) {\r\n    'use strict';\r\n\r\n    function Redirect(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(Redirect, EventAction);\r\n\r\n    Redirect.typeName = 'Redirect';\r\n\r\n    Redirect.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    Redirect.prototype.execute = function (continuation) {\r\n        if (this.eventData.redirect.toLandingPage) {\r\n            this.piping.dispatcher.dispatch(\"ApplicationRoot/GetLandingPageId\")\r\n            .then(this.redirectToActionWrapper.bind(this));\r\n        } else if (this.eventData.redirect.mockJumpOptions && this.eventData.redirect.mockJumpOptions.length > 1) {\r\n            this.showOptionsPopup(continuation);\r\n        } else if (this.eventData.redirect.type === 'Reload') {\r\n            window.location.reload();\r\n        } else if (this.isJumpToPrevious(this.eventData.redirect)) {\r\n            var globals = this.piping.parameters.globals.getAll();\r\n            var locals = this.getLocalsForNextPage(this.eventData.redirect);\r\n            this.piping.navigator.goToPrevious(globals, locals);\r\n            continuation();\r\n        } else if (this.isJumpOutsideApplication(this.eventData.redirect)) {\r\n            var targetUrl = this.getUrl(this.eventData.redirect);\r\n            this.piping.url.openUrl(targetUrl, this.eventData.redirect.jumpToNewWindow);\r\n\r\n            if (this.eventData.redirect.jumpToNewWindow) {\r\n                continuation();\r\n            } else {\r\n                if (this.linkWillNotCauseNavigationToAnotherPage(targetUrl))\r\n                    continuation();\r\n                this.piping.busyIndicator.forceHide();\r\n            }\r\n        } else {\r\n            this.redirectToActionWrapper();\r\n        }\r\n    };\r\n\r\n    Redirect.prototype.isJumpToPrevious = function (redirect) {\r\n        return redirect.type === 'Previous';\r\n    };\r\n\r\n    Redirect.prototype.isJumpOutsideApplication = function (redirect) {\r\n        return redirect.url || redirect.applicationName || redirect.controllerAction;\r\n    };\r\n\r\n    Redirect.prototype.getUrl = function (redirect) {\r\n        if (redirect.controllerAction) {\r\n            var controllerActionUrl = lq.getTenantUrl('LicquidAction/' + redirect.controllerAction);\r\n            return this.piping.url.prepare(controllerActionUrl, this.getParameters());\r\n        }\r\n\r\n        if (redirect.applicationName) {\r\n            var applicationUrl = lq.getBaseUrl(lq.getTenantName() + '/' + redirect.applicationName + '/LicquidAction/Get/' + redirect.actionId);\r\n            return this.piping.url.prepare(applicationUrl, this.getParameters());\r\n        }\r\n\r\n        if (redirect.url) {\r\n            var url = redirect.isUrlFromParameter ? this.piping.parameters.getValue(redirect.url) : redirect.url;\r\n\r\n            if (url.indexOf('@') !== -1) {\r\n                if (this.isEmailLink(url))\r\n                    return url;\r\n                return 'mailto:' + url;\r\n            }\r\n\r\n            var locals = this.getLocalsForNextPage(this.eventData.redirect);\r\n            if (url.indexOf('tel:') === -1)\r\n                url = util.convertRelativeHyperlinkToHostName(url);\r\n\r\n            if (_.keys(locals).length > 0)\r\n                url = url + '?parameters=' + encodeURIComponent(JSON.stringify(locals));\r\n\r\n            return url;\r\n        }\r\n\r\n        return undefined;\r\n    };\r\n    \r\n    Redirect.prototype.getParameters = function () {\r\n        var params = {};\r\n\r\n        var globals = this.piping.parameters.globals.getAll();\r\n        if (_.keys(globals).length > 0)\r\n            params['globals'] = JSON.stringify(globals);\r\n\r\n        var locals = this.getLocalsForNextPage(this.eventData.redirect);\r\n        if (_.keys(locals).length > 0)\r\n            params['parameters'] = JSON.stringify(locals);\r\n\r\n        return params;\r\n    };\r\n\r\n    Redirect.prototype.linkWillNotCauseNavigationToAnotherPage = function (targetUrl) {\r\n        targetUrl = targetUrl.toLowerCase();\r\n\r\n        return targetUrl.indexOf('mailto:') === 0\r\n            || targetUrl.indexOf('skype:') === 0\r\n            || targetUrl.indexOf('tel:') === 0\r\n            || targetUrl.indexOf('webcal:') === 0;\r\n    };\r\n    \r\n    Redirect.prototype.getActionId = function (redirect) {\r\n        if (redirect.actionId)\r\n            return redirect.actionId;\r\n        \r\n        return this.piping.parameters.getValue(redirect.actionIdParameter);\r\n    };\r\n\r\n    Redirect.prototype.isEmailLink = function (targetUrl) {\r\n        return targetUrl.toLowerCase().indexOf('mailto:') === 0;\r\n    };\r\n\r\n    Redirect.prototype.getLocalsForNextPage = function (redirect) {\r\n        if (!redirect.jumpParameters)\r\n            return {};\r\n\r\n        var localsForNextPage = {};\r\n\r\n        for (var i = 0; i < redirect.jumpParameters.length; i++) {\r\n            var jumpParameter = redirect.jumpParameters[i];\r\n            localsForNextPage[jumpParameter] = this.piping.parameters.locals.getValue(jumpParameter);\r\n        }\r\n\r\n        return localsForNextPage;\r\n    };\r\n\r\n    Redirect.prototype.redirectToActionWrapper = function (actionId) {\r\n        var destinationActionId = actionId || this.getActionId(this.eventData.redirect);\r\n        var locals = this.getLocalsForNextPage(this.eventData.redirect);\r\n        var globals = this.piping.parameters.globals.getAll();\r\n\r\n        if (this.rootDrop.options.cqConfiguration && this.rootDrop.options.cqConfiguration.navigationTrailEnabled) {\r\n            this.updateNavigationTrailAndRedirect(destinationActionId, locals, globals);\r\n        } else {\r\n            this.redirectToAction(destinationActionId, locals, globals);\r\n        }\r\n    };\r\n\r\n    Redirect.prototype.redirectToAction = function (destinationActionId, locals, globals) {\r\n        this.piping.navigator.openAction(\r\n            destinationActionId,\r\n            globals,\r\n            locals,\r\n            this.eventData.redirect.jumpToNewWindow);\r\n        if (this.eventData.redirect.jumpToNewWindow)\r\n            this.piping.busyIndicator.forceHide();\r\n    };\r\n\r\n    Redirect.prototype.updateNavigationTrailAndRedirect = function (destinationActionId, locals, globals) {\r\n        var self = this;\r\n        this.piping.dispatcher\r\n            .dispatch(\r\n                'LicquidAction/UpdateNavigationTrail', {\r\n                    url: this.getTargetUrl(destinationActionId, locals, globals),\r\n                    globalParameters: this.piping.parameters.globals.getAll(),\r\n                    rollbackEnabled: this.eventData.redirect.rollbackEnabled,\r\n                    fromActionId: this.piping.actionId,\r\n                    fromLocalParameters: this.piping.parameters.locals.getAll(),\r\n                    toActionId: this.getActionId(this.eventData.redirect),\r\n                    toLocalParameters: this.getLocalsForNextPage(this.eventData.redirect)\r\n                })\r\n            .done(function () {\r\n                self.redirectToAction(destinationActionId, locals, globals);\r\n            }, $.noop);\r\n    };\r\n\r\n    // this should be temporary (until Licquid natively supports going back in navigation trail)\r\n    Redirect.prototype.getTargetUrl = function (destinationActionId, locals, globals) {\r\n        var parameters = {};\r\n\r\n        if (_.keys(globals).length)\r\n            parameters.globals = JSON.stringify(globals);\r\n\r\n        if (_.keys(locals).length)\r\n            parameters.parameters = JSON.stringify(locals);\r\n\r\n        return this.piping.url.prepare(lq.getFullUrl(lq.getTenantUrl('LicquidAction/Get/' + destinationActionId)), parameters);\r\n    };\r\n\r\n    Redirect.prototype.showOptionsPopup = function (continuation) {\r\n        var self = this;\r\n\t\tvar messageId = Math.floor(Math.random() * 1E10);\r\n\r\n        var responseListener = function (message) {\r\n\t\t\tif (message.data  && message.data.id === messageId) {\r\n                window.removeEventListener('message', responseListener);\r\n                if (message.data.type === \"JUMP_OPTIONS_POPUP_NAVIGATED\")\r\n                    self.redirectToActionWrapper(message.data.actionId);\r\n                else if (message.data.type === \"POPUP_CLOSED\")\r\n                    continuation();\r\n            }\r\n\t\t};\r\n\r\n\t\twindow.addEventListener('message', responseListener);\r\n        validatorGateway.publishEvent({\r\n            type: \"SHOW_JUMP_OPTIONS_POPUP\",\r\n            id: messageId,\r\n            options: this.eventData.redirect.mockJumpOptions\r\n        });\r\n    };\r\n\r\n    return Redirect;\r\n});\n","define('lq/events/actions/refreshCaptcha',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function RefreshCaptcha(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(RefreshCaptcha, EventAction);\r\n\r\n    RefreshCaptcha.typeName = 'RefreshCaptcha';\r\n\r\n    RefreshCaptcha.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    RefreshCaptcha.prototype.execute = function (continuation) {\r\n        var captchaDrop = this.piping.dropFactory\r\n            .findDropByName(this.eventData.captchaField);\r\n        captchaDrop.refreshCaptcha();\r\n\r\n        continuation();\r\n    };\r\n    \r\n    return RefreshCaptcha;\r\n});\n","define('lq/events/actions/refreshLoggedInUserCommand',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function RefreshLoggedInUserCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(RefreshLoggedInUserCommand, EventAction);\r\n\r\n    RefreshLoggedInUserCommand.typeName = 'RefreshLoggedInUserCommand';\r\n\r\n    RefreshLoggedInUserCommand.prototype.getBatchType = function () {\r\n        return this.eventData.cookieOnly ? EventAction.DO_NOT_BATCH : EventAction.DO_NOT_BATCH.COMMAND_BATCH;\r\n    };\r\n\r\n    RefreshLoggedInUserCommand.prototype.createEventActionRequest = function () {\r\n        if (this.eventData.cookieOnly) return undefined;\r\n\r\n        return {\r\n            eventActionType: 'RefreshLoggedInUser',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    RefreshLoggedInUserCommand.prototype.execute = function (continuation) {\r\n        if (!this.eventData.cookieOnly) {\r\n            continuation();\r\n        } else {\r\n            this.piping.dispatcher.dispatch('LicquidAction/RefreshCurrentUser')\r\n                .then(function () {\r\n                    continuation();\r\n                });\r\n        }\r\n    };\r\n\r\n    return RefreshLoggedInUserCommand;\r\n});\n","define('lq/events/actions/reportCommand',[\r\n    'lq/events/actions/eventAction',\r\n    'lq',\r\n    'when'\r\n], function (EventAction, lq, when) {\r\n    'use strict';\r\n\r\n    var pollDelayInMilliseconds = 1000;\r\n    \r\n    function ReportCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(ReportCommand, EventAction);\r\n\r\n    ReportCommand.typeName = 'ReportCommand';\r\n\r\n    ReportCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n    \r\n    ReportCommand.prototype.execute = function (continuation) {\r\n        var self = this;\r\n        var piping = this.piping;\r\n\r\n        this.piping.dispatcher.dispatchToAbsoluteUrl(\r\n            this.piping.url.prepare(lq.getTenantUrl('Report/'), {}),\r\n                {\r\n                    actionId: this.rootDrop.data.id,\r\n                    commandId: this.eventData.command,\r\n                    globals: piping.parameters.globals.getAll(),\r\n                    locals: piping.parameters.locals.getAll()\r\n                })\r\n            .then(function (response) {\r\n                if (!response.ticketNumber) { // \"generate in the background\" is probably enabled\r\n                    continuation();\r\n                } else {\r\n                    function isReady() {\r\n                        return $.get({\r\n                            url: lq.getTenantUrl('Report/IsReady'),\r\n                            data: {\r\n                                ticketNumber: response.ticketNumber\r\n                            },\r\n                            cache: false\r\n                        });\r\n                    }\r\n\r\n                    function poll(operation) {\r\n                        return when.promise(function (resolve, reject, notify) {\r\n                            setTimeout(function () {\r\n                                resolve(operation()\r\n                                    .always(function (data, textStatus, xhr) {\r\n                                        if (xhr.status === 202) {\r\n                                            return poll(operation);\r\n                                        } else if (xhr.status === 200) {\r\n                                            if (data.isDirty) {\r\n                                                if (self.eventIsEnabled('onExecutionTrailDirty'))\r\n                                                    self.triggerEvent('onExecutionTrailDirty', continuation);\r\n                                                else {\r\n                                                    alert('Could not create report, because the data is dirty.');\r\n                                                    continuation();\r\n                                                }\r\n                                            } else {\r\n                                                if (data.download) {\r\n                                                    var url = data.url\r\n                                                        ? piping.url.prepare(lq.getTenantUrl('DynamicContent/DownloadFile'), { url: data.url, filename: data.filename, openInBrowser: data.downloadBehaviour !== 'download' })\r\n                                                        : piping.url.prepare(lq.getTenantUrl('Report/Download'), { ticketNumber: response.ticketNumber });\r\n    \r\n                                                    if (data.downloadBehaviour === 'openInCurrentTab' || data.downloadBehaviour === 'download') {\r\n                                                        window.location = url;\r\n                                                    } else {\r\n                                                        window.open(url + '#toolbar=1');\r\n                                                    }\r\n                                                }\r\n    \r\n                                                if (data.entityIdParameter) {\r\n                                                    var targetParameters = data.entityIdParameterIsGlobal\r\n                                                        ? piping.parameters.globals\r\n                                                        : piping.parameters.locals;\r\n                                                    targetParameters.setValue(data.entityIdParameter, data.entityIdValue);\r\n                                                }\r\n    \r\n                                                continuation();\r\n                                            }\r\n                                        }\r\n                                    }));\r\n                            },\r\n                            pollDelayInMilliseconds);\r\n                        });\r\n                    }\r\n\r\n                    poll(isReady);\r\n                }\r\n            })\r\n            .catch(function() {\r\n                alert('Something went wrong while creating the report.');\r\n            });\r\n    };\r\n    \r\n    return ReportCommand;\r\n});\n","define('lq/events/actions/rssCommand',[\r\n    'lq/events/actions/eventAction',\r\n    'jquery',\r\n    'lq'\r\n], function (EventAction, $, lq) {\r\n    'use strict';\r\n\r\n    function RssCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(RssCommand, EventAction);\r\n\r\n    RssCommand.typeName = 'RssCommand';\r\n\r\n    RssCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    RssCommand.prototype.execute = function (continuation) {\r\n        // we can't use a POST since people should be able to directly link to the export\r\n\r\n        var queryString = {\r\n            rssId: this.eventData.command,\r\n            parameters: JSON.stringify(this.piping.parameters.getNonSystemParameters())\r\n        };\r\n        window.location = this.piping.url.prepare(lq.getTenantUrl('Export/Rss'), queryString);\r\n\r\n        continuation();\r\n    };\r\n\r\n    return RssCommand;\r\n});\n","define('lq/events/actions/saveMorph',[\r\n    'lq/events/actions/eventAction',\r\n    'lq/events/abortError',\r\n    'underscore'\r\n], function (EventAction, AbortError, _) {\r\n    'use strict';\r\n\r\n    function SaveMorph(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(SaveMorph, EventAction);\r\n\r\n    SaveMorph.typeName = 'SaveMorph';\r\n\r\n    SaveMorph.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    SaveMorph.prototype.createEventActionRequest = function () {\r\n        var drop = this.piping.dropFactory.findDropById(this.eventData.saveableMorphId);\r\n        return drop.getBatchOfCommands();\r\n    };\r\n\r\n    SaveMorph.prototype.execute = function (continuation, eventActionResponse) {\r\n        var drop = this.piping.dropFactory.findDropById(this.eventData.saveableMorphId);\r\n\r\n        if (drop.receiveBatchOfCommandsResult)\r\n            drop.receiveBatchOfCommandsResult(eventActionResponse.identifiers);\r\n\r\n        continuation();\r\n    };\r\n\r\n    return SaveMorph;\r\n});\n","define('lq/events/actions/scheduledTaskCommand',['lq/events/actions/eventAction'],\r\n    function (EventAction) {\r\n\t    'use strict';\r\n\r\n        function ScheduledTaskCommand(eventData, eventArg) {\r\n\t        EventAction.call(this, eventData, eventArg);\r\n\t        return this;\r\n\t    }\r\n\r\n        EventAction.extend(ScheduledTaskCommand, EventAction);\r\n\r\n        ScheduledTaskCommand.typeName = 'ScheduledTaskCommand';\r\n\r\n\t    ScheduledTaskCommand.prototype.getBatchType = function () {\r\n            return EventAction.COMMAND_BATCH;\r\n        };\r\n\r\n\t    ScheduledTaskCommand.prototype.createEventActionRequest = function () {\r\n            return {\r\n                eventActionType: \"ScheduledTask\",\r\n                ObjectName: this.eventData.command\r\n            };\r\n        };\r\n\r\n\t    return ScheduledTaskCommand;\r\n    }\r\n);\n","define('lq/events/actions/scrollTo',[\r\n    'lq/events/actions/eventAction',\r\n    'jquery'\r\n], function (EventAction, $) {\r\n    'use strict';\r\n\r\n    function ScrollTo(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(ScrollTo, EventAction);\r\n\r\n    ScrollTo.typeName = 'ScrollTo';\r\n\r\n    ScrollTo.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    ScrollTo.prototype.execute = function (continuation) {\r\n        var self = this;\r\n\r\n        var drop = self.piping.dropFactory.findDropByName(self.eventData.scrollTo);\r\n        if (!drop)\r\n            throw 'Cannot find drop : \"' + self.eventData.timer + '\" for scroll to event action.';\r\n        if (drop.isVisible()) {\r\n            this.piping.$actionWrapper.animate({\r\n                // offset().top gives back the position relative to the top of the page,\r\n                // it is different if the scroll bar is in different position\r\n                scrollTop: drop.$element.offset().top + this.piping.$actionWrapper.scrollTop()\r\n            }, {\r\n                queue: false\r\n            });\r\n        }\r\n\r\n        continuation();\r\n    };\r\n\r\n    return ScrollTo;\r\n});\n","define('lq/events/actions/serverCommand',[\r\n    'lq/events/actions/eventAction',\r\n    'jquery',\r\n    'underscore',\r\n    'lq',\r\n    'lq/events/abortError'\r\n], function (EventAction, $, _, lq, AbortError) {\r\n    'use strict';\r\n\r\n    function ServerCommand(eventData, eventArg) {\r\n    \tEventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(ServerCommand, EventAction);\r\n\r\n    ServerCommand.typeName = 'ServerCommand';\r\n\r\n    ServerCommand.prototype.getBatchType = function () {\r\n    \treturn EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    ServerCommand.prototype.createEventActionRequest = function () {\r\n    \tvar commandViewModelKeysValues = {};\r\n\r\n    \tvar self = this;\r\n        _.each(this.piping.dropFactory.getAllDrops(), function(drop) {\r\n\t        if (drop.getValue) {\r\n                var value = drop.getValue();\r\n                commandViewModelKeysValues[drop.data.viewModelKey] = value;\r\n            }\r\n\t    });\r\n\r\n    \treturn {\r\n    \t\teventActionType: \"ServerCommand\",\r\n    \t\tcommand: self.eventData.command,\r\n    \t\tcommandViewModelKeys: commandViewModelKeysValues\r\n    \t};\r\n    };\r\n\r\n    return ServerCommand;\r\n});\n","define('lq/events/actions/setParameterFromEvent',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function SetParameterFromEvent(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(SetParameterFromEvent, EventAction);\r\n\r\n    SetParameterFromEvent.typeName = 'SetParameterFromEvent';\r\n\r\n    SetParameterFromEvent.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n    \r\n    SetParameterFromEvent.prototype.execute = function (continuation) {\r\n        var targetParameters = this.eventData.global\r\n            ? this.piping.parameters.globals\r\n            : this.piping.parameters.locals;\r\n        targetParameters.setValue(this.eventData.parameter, this.eventArg);\r\n\r\n\t\tcontinuation();\r\n    };\r\n\r\n    return SetParameterFromEvent;\r\n});\n","define('lq/events/actions/setVisibility',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    var opposites = {\r\n        'top': 'bottom',\r\n        'bottom': 'top',\r\n        'left': 'right',\r\n        'right': 'left'\r\n    };\r\n\r\n    var hasEnoughRoomAtTheRight = function (parameters, requiredSpace) {\r\n        return parameters.srcElementX - parameters.scrollLeft + requiredSpace <= parameters.windowWidth;\r\n    };\r\n\r\n    var hasEnoughRoomAtTheLeft = function (parameters, requiredSpace) {\r\n        return parameters.srcElementX - parameters.scrollLeft - requiredSpace >= 0;\r\n    };\r\n\r\n    var hasEnoughRoomAtTheBottom = function (parameters, requiredSpace) {\r\n        return parameters.srcElementY - parameters.scrollTop + requiredSpace <= parameters.windowHeight;\r\n    };\r\n\r\n    var hasEnoughRoomAtTheTop = function (parameters, requiredSpace) {\r\n        return parameters.srcElementY - parameters.scrollTop - requiredSpace >= 0;\r\n    };\r\n\r\n    var hasEnoughRoomAtLeftOrRight = function (direction, parameters) {\r\n        return direction === 'right' ?\r\n            hasEnoughRoomAtTheLeft(parameters, parameters.targetElementWidth - parameters.srcElementWidth)\r\n                : hasEnoughRoomAtTheRight(parameters, parameters.targetElementWidth);\r\n    };\r\n\r\n    var hasEnoughRoomAtTopOrBottom = function (direction, parameters) {\r\n        return direction === 'top' ?\r\n            hasEnoughRoomAtTheBottom(parameters, parameters.targetElementHeight)\r\n            : hasEnoughRoomAtTheTop(parameters, parameters.targetElementHeight - parameters.srcElementHeight);\r\n    };\r\n\r\n    var hasEnoughRoom = function (parameters, positionA, positionB) {\r\n        if (positionA === 'right') {\r\n            return hasEnoughRoomAtTheRight(parameters, parameters.srcElementWidth + parameters.targetElementWidth)\r\n                && hasEnoughRoomAtTopOrBottom(positionB, parameters);\r\n        } else if (positionA === 'left') {\r\n            return hasEnoughRoomAtTheLeft(parameters, parameters.targetElementWidth)\r\n                && hasEnoughRoomAtTopOrBottom(positionB, parameters);\r\n        } else if (positionA === 'top') {\r\n            return hasEnoughRoomAtTheTop(parameters, parameters.targetElementHeight)\r\n                && hasEnoughRoomAtLeftOrRight(positionB, parameters);\r\n        } else if (positionA === 'bottom') {\r\n            return hasEnoughRoomAtTheBottom(parameters, parameters.srcElementHeight + parameters.targetElementHeight)\r\n                && hasEnoughRoomAtLeftOrRight(positionB, parameters);\r\n        }\r\n\r\n        return true;\r\n    };\r\n\r\n    var determinePosition = function (parameters, positionA, positionB) {\r\n        var targetPosition = {\r\n            top: null,\r\n            left: null,\r\n            right: null,\r\n            bottom: null\r\n        };\r\n\r\n        if (positionA === 'cover' && positionB === 'cover') {\r\n            targetPosition.left = parameters.srcElementX + ((parameters.srcElementWidth - parameters.targetElementWidth) / 2);\r\n            targetPosition.top = parameters.srcElementY + ((parameters.srcElementHeight - parameters.targetElementHeight) / 2);\r\n        } else if (positionA === 'coverleft' && positionB === 'covertop') {\r\n            targetPosition.left = parameters.srcElementX;\r\n            targetPosition.top = parameters.srcElementY;\r\n        } else if (positionA === 'coverright' && positionB === 'covertop') {\r\n            targetPosition.left = parameters.srcElementX - parameters.targetElementWidth + parameters.srcElementWidth;\r\n            targetPosition.top = parameters.srcElementY;\r\n        } else if (positionA === 'coverright' && positionB === 'coverbottom') {\r\n            targetPosition.left = parameters.srcElementX - parameters.targetElementWidth + parameters.srcElementWidth;\r\n            targetPosition.top = parameters.srcElementY - parameters.targetElementHeight + parameters.srcElementHeight;\r\n        } else if (positionA === 'coverleft' && positionB === 'coverbottom') {\r\n            targetPosition.left = parameters.srcElementX;\r\n            targetPosition.top = parameters.srcElementY - parameters.targetElementHeight + parameters.srcElementHeight;\r\n        } else if (positionA === 'right') {\r\n            targetPosition.left = parameters.srcElementX + parameters.srcElementWidth;\r\n\r\n            if (positionB === 'top')\r\n                targetPosition.top = parameters.srcElementY;\r\n            else\r\n                targetPosition.bottom = parameters.windowHeight - parameters.srcElementY - parameters.srcElementHeight;\r\n        } else if (positionA === 'left') {\r\n            targetPosition.right = parameters.windowWidth - parameters.srcElementX;\r\n\r\n            if (positionB === 'top')\r\n                targetPosition.top = parameters.srcElementY;\r\n            else\r\n                targetPosition.bottom = parameters.windowHeight - parameters.srcElementY - parameters.srcElementHeight;\r\n        } else if (positionA === 'top') {\r\n            targetPosition.bottom = parameters.windowHeight - parameters.srcElementY;\r\n\r\n            if (positionB === 'left')\r\n                targetPosition.left = parameters.srcElementX;\r\n            else\r\n                targetPosition.right = parameters.windowWidth - parameters.srcElementX - parameters.srcElementWidth;\r\n        } else if (positionA === 'bottom') {\r\n            targetPosition.top = parameters.srcElementY + parameters.srcElementHeight;\r\n\r\n            if (positionB === 'left')\r\n                targetPosition.left = parameters.srcElementX;\r\n            else\r\n                targetPosition.right = parameters.windowWidth - parameters.srcElementX - parameters.srcElementWidth;\r\n        }\r\n\r\n        return targetPosition;\r\n    };\r\n\r\n    var getBestPosition = function (eventSource, drop) {\r\n        var preferedPositionA = drop.data.autoPosition.preferedPositionA;\r\n        var preferedPositionB = drop.data.autoPosition.preferedPositionB;\r\n\r\n        var allPositions = [\r\n            { a: preferedPositionA, b: preferedPositionB },\r\n            { a: preferedPositionA, b: opposites[preferedPositionB] },\r\n            { a: opposites[preferedPositionA], b: preferedPositionB },\r\n            { a: opposites[preferedPositionA], b: opposites[preferedPositionB] },\r\n            { a: preferedPositionB, b: preferedPositionA },\r\n            { a: preferedPositionB, b: opposites[preferedPositionA] },\r\n            { a: opposites[preferedPositionB], b: preferedPositionA },\r\n            { a: opposites[preferedPositionB], b: opposites[preferedPositionA] }\r\n        ];\r\n\r\n        var $window = $(window);\r\n\r\n        var parameters = {\r\n            windowWidth: $window.width(),\r\n            windowHeight: $window.height(),\r\n\r\n            scrollTop: $window.scrollTop(),\r\n            scrollLeft: $window.scrollLeft(),\r\n\r\n            srcElementX: eventSource.activeArea.left,\r\n            srcElementY: eventSource.activeArea.top,\r\n            srcElementHeight: eventSource.activeArea.height,\r\n            srcElementWidth: eventSource.activeArea.width,\r\n\r\n            targetElementHeight: drop.$element.height(),\r\n            targetElementWidth: drop.$element.width()\r\n        };\r\n\r\n        if (drop.data.autoPosition && eventSource.eventPosition && drop.data.autoPosition.position === 'Mouse click') {\r\n            parameters.srcElementX = eventSource.eventPosition.clientX;\r\n            parameters.srcElementY = eventSource.eventPosition.clientY;\r\n            parameters.srcElementHeight = 0;\r\n            parameters.srcElementWidth = 0;\r\n        }\r\n\r\n        for (var i = 0; i < allPositions.length; i++) {\r\n            var position = allPositions[i];\r\n\r\n            if (hasEnoughRoom(parameters, position.a, position.b))\r\n                return determinePosition(parameters, position.a, position.b);\r\n        }\r\n\r\n        return determinePosition(parameters, preferedPositionA, preferedPositionB);\r\n    };\r\n\r\n    function SetVisibility(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(SetVisibility, EventAction);\r\n\r\n    SetVisibility.typeName = 'SetVisibility';\r\n\r\n    SetVisibility.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    SetVisibility.prototype.execute = function (continuation) {\r\n        var drop = this.piping.dropFactory.findDropById(this.eventData.morphId);\r\n\r\n        if (drop) {\r\n            if (this.eventData.showMorph || (this.eventData.showMorph === null && drop.isHidden)) {\r\n\r\n                if (drop.data.autoPosition && drop.data.autoPosition.enabled) {\r\n                    var targetPosition = getBestPosition(this.eventSource, drop);\r\n                    drop.autoPositionAt(targetPosition);\r\n                }\r\n\r\n                drop.show();\r\n            } else {\r\n                drop.hide();\r\n            }\r\n        }\r\n\r\n        continuation();\r\n    };\r\n\r\n    return SetVisibility;\r\n});\n","define('lq/events/actions/shareOnFacebook',[\r\n    'lq/events/actions/eventAction'\r\n], function(EventAction) {\r\n    'use strict';\r\n\r\n    var fbInitialized = false;\r\n\r\n    function ShareOnFacebook(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(ShareOnFacebook, EventAction);\r\n\r\n    ShareOnFacebook.typeName = 'ShareOnFacebook';\r\n\r\n    ShareOnFacebook.prototype.getBatchType = function() {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    ShareOnFacebook.prototype.execute = function(continuation) {\r\n        if (fbInitialized) {\r\n            this.showDialog();\r\n\r\n            continuation();\r\n        } else {\r\n            var self = this;\r\n            window.fbAsyncInit = function () {\r\n                fbInitialized = true;\r\n\r\n                window.FB.init({\r\n                    appId: self.eventData.facebook.appId,\r\n                    xfbml: false,\r\n                    version: 'v2.8'\r\n                });\r\n\r\n                self.showDialog();\r\n\r\n                continuation();\r\n            }\r\n\r\n            var script = document.createElement('script');\r\n            script.src = '//connect.facebook.net/en_US/sdk.js';\r\n            document.head.appendChild(script);\r\n        }\r\n    };\r\n\r\n    ShareOnFacebook.prototype.showDialog = function() {\r\n        window.FB.ui({\r\n            method: 'share',\r\n            display: 'popup',\r\n            href: this.piping.parameters.replace(this.eventData.facebook.url)\r\n        }, function (response) { });\r\n    };\r\n\r\n    return ShareOnFacebook;\r\n});\n","define('lq/events/actions/shareOnLinkedIn',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    var linkedInUrl = 'http://www.linkedin.com/shareArticle';\r\n\r\n    function ShareOnLinkedIn(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(ShareOnLinkedIn, EventAction);\r\n\r\n    ShareOnLinkedIn.typeName = 'ShareOnLinkedIn';\r\n\r\n    ShareOnLinkedIn.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    ShareOnLinkedIn.prototype.execute = function (continuation) {\r\n        var url = linkedInUrl;\r\n        var parameters = this.getParameters();\r\n\r\n        if (_.keys(parameters).length)\r\n            url = url + '?' + $.param(parameters);\r\n\r\n        window.open(url, '', 'left=0,top=0,width=550,height=450,personalbar=0,toolbar=0,scrollbars=0,resizable=0');\r\n\r\n        continuation();\r\n    };\r\n\r\n    ShareOnLinkedIn.prototype.getParameters = function () {\r\n        var parameters = {\r\n            mini: true, \r\n            url: this.piping.parameters.replace(this.eventData.linkedIn.url)\r\n        };\r\n\r\n        if (this.eventData.linkedIn.title)\r\n            parameters['title'] = this.piping.parameters.replace(this.eventData.linkedIn.title);\r\n\r\n        if (this.eventData.linkedIn.summary)\r\n            parameters['summary'] = this.piping.parameters.replace(this.eventData.linkedIn.summary);\r\n\r\n        return parameters;\r\n    };\r\n\r\n    return ShareOnLinkedIn;\r\n});\n","define('lq/events/actions/shareOnTwitter',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    var twitterUrl = 'https://twitter.com/intent/tweet'; \r\n\r\n    function ShareOnTwitter(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(ShareOnTwitter, EventAction);\r\n\r\n    ShareOnTwitter.typeName = 'ShareOnTwitter';\r\n\r\n    ShareOnTwitter.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    ShareOnTwitter.prototype.execute = function (continuation) {\r\n        var url = twitterUrl;\r\n        var parameters = this.getParameters();\r\n\r\n        if (_.keys(parameters).length)\r\n            url = url + '?' + $.param(parameters);\r\n\r\n        window.open(url, '', 'left=0,top=0,width=550,height=450,personalbar=0,toolbar=0,scrollbars=0,resizable=0');\r\n\r\n        continuation();\r\n    };\r\n\r\n    ShareOnTwitter.prototype.getParameters = function () {\r\n        var parameters = {};\r\n\r\n        if (this.eventData.twitter.text)\r\n            parameters['text'] = this.piping.parameters.replace(this.eventData.twitter.text);\r\n\r\n        if (this.eventData.twitter.url)\r\n            parameters['url'] = this.piping.parameters.replace(this.eventData.twitter.url);\r\n\r\n        if (this.eventData.twitter.hashtags)\r\n            parameters['hashtags'] = this.piping.parameters.replace(this.eventData.twitter.hashtags);\r\n\r\n        if (this.eventData.twitter.via)\r\n            parameters['via'] = this.piping.parameters.replace(this.eventData.twitter.via);\r\n\r\n        return parameters;\r\n    };\r\n\r\n    return ShareOnTwitter;\r\n});\n","define('lq/events/actions/sms',[\r\n    'lq',\r\n    'lq/events/actions/eventAction'\r\n], function(lq, EventAction) {\r\n    'use strict';\r\n        \r\n    function Sms(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(Sms, EventAction);\r\n\r\n    Sms.typeName = 'Sms';\r\n\r\n    Sms.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n        \r\n    Sms.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'SendSms',\r\n            morphId: this.eventData.command\r\n        };\r\n    };\r\n\r\n    Sms.prototype.execute = function (continuation) {\r\n        if (this.eventIsEnabled('sent'))\r\n            this.triggerEvent('sent', continuation);\r\n        else\r\n            continuation();\r\n    };\r\n\r\n    return Sms;\r\n});\n","define('lq/events/actions/transformRichText',[\r\n    'lq/events/actions/eventAction',\r\n    'lq/richText'\r\n], function (EventAction, richText) {\r\n    'use strict';\r\n    \r\n    function TransformRichText(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(TransformRichText, EventAction);\r\n\r\n    TransformRichText.typeName = 'TransformRichText';\r\n\r\n    TransformRichText.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    TransformRichText.prototype.execute = function (continuation) {\r\n        var self = this;\r\n        var sourceString = this.piping.parameters.getValue(self.eventData.transform.sourceParameter);\r\n\r\n        if (richText.isRichTextString(sourceString)) {\r\n            self.piping.queryDispatcher.dispatch(\r\n                self.eventData.transform.dataSource.id,\r\n                function (response) {\r\n                    var result = self.getResultFromTransform(sourceString, response.results);\r\n                    self.writeResult(result);\r\n                    continuation();\r\n                });\r\n        } else {\r\n            self.writeResult(sourceString);\r\n            continuation();\r\n        }\r\n    };\r\n\r\n    TransformRichText.prototype.getResultFromTransform = function (richTextString, data) {\r\n        var resultingRichText = richText.modelFromRichTextString(richTextString);\r\n        resultingRichText.sections = [];\r\n\r\n        var self = this;\r\n        data.forEach(function (dataItem) {\r\n            // WHY: Deserializing again: create new instance of the rich text\r\n            var sections = richText.modelFromRichTextString(richTextString).sections;\r\n\r\n            sections.forEach(function (section) {\r\n                section.text = self.getTransformedText(section.text, dataItem);\r\n                resultingRichText.sections.push(section);\r\n            });\r\n        });\r\n\r\n        return richText.modelToRichTextString(resultingRichText);\r\n    };\r\n\r\n    TransformRichText.prototype.getTransformedText = function (text, dataItem) {\r\n        var caseInsensitiveParameters = {};\r\n        for (var key in dataItem)\r\n            caseInsensitiveParameters[key.toLowerCase()] = dataItem[key];\r\n\r\n        var replacePlaceholder = function (match, p1) {\r\n            return caseInsensitiveParameters[p1.toLowerCase()];\r\n        };\r\n\r\n        return text.replace(/\\{(.+?)\\}/g, replacePlaceholder);\r\n    };\r\n\r\n    TransformRichText.prototype.writeResult = function (result) {\r\n        if (result === null)\r\n            result = undefined;\r\n        this.piping.parameters.locals.setValue(this.eventData.transform.targetParameter, result);\r\n    };\r\n\r\n    return TransformRichText;\r\n});\n","define('lq/events/actions/undoCheckOut',['lq/events/actions/eventAction'],\r\n    function (EventAction) {\r\n\t    'use strict';\r\n\r\n\t    function UndoCheckOut(eventData, eventArg) {\r\n\t        EventAction.call(this, eventData, eventArg);\r\n\t        return this;\r\n\t    }\r\n\r\n        EventAction.extend(UndoCheckOut, EventAction);\r\n\r\n        UndoCheckOut.typeName = 'UndoCheckOut';\r\n\r\n\t    UndoCheckOut.prototype.getBatchType = function () {\r\n            return EventAction.COMMAND_BATCH;\r\n        };\r\n\r\n\t    UndoCheckOut.prototype.createEventActionRequest = function () {\r\n            return {\r\n\t            eventActionType: \"UndoCheckOut\",\r\n\t\t\t\tmorphId: this.eventData.command\r\n\t        };\r\n\t    };\r\n\r\n\t    return UndoCheckOut;\r\n    }\r\n);\n","define('lq/events/actions/update',[\r\n    'lq/events/actions/eventAction',\r\n    'jquery',\r\n    'underscore',\r\n    'lq/uploader',\r\n    'lq/entityFiltersState',\r\n    'lq',\r\n    'lq/events/abortError',\r\n    'when'\r\n], function (EventAction, $, _, Uploader, entityFiltersState, lq, AbortError, when) {\r\n    'use strict';\r\n\r\n    function Update(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(Update, EventAction);\r\n\r\n    Update.typeName = 'Update';\r\n\r\n    Update.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    Update.prototype.createEventActionRequest = function () {\r\n        return this.validateData.bind(this);\r\n    };\r\n\r\n    Update.prototype.validateData = function (requestContinuation, requestCancellation) {\r\n        var self = this;\r\n\r\n        this.isDataValid()\r\n            .then(function(isValid) {\r\n                if(isValid) {\r\n                    if (self.eventIsEnabled('inputValidated')) {\r\n                        self.triggerEvent('inputValidated');\r\n                    }\r\n                    self.buildRequest(requestContinuation, requestCancellation);\r\n                }\r\n                else {\r\n                    if (self.eventIsEnabled('inputInvalidated')) {\r\n                        self.triggerEvent('inputInvalidated');\r\n                    }\r\n                    requestCancellation();\r\n                }\r\n            });\r\n    };\r\n\r\n    Update.prototype.buildRequest = function (requestContinuation, requestCancellation) {\r\n        var self = this;\r\n\r\n        var commandViewModelKeysValues = {};\r\n\r\n        _.each(self.eventData.commandViewModelKeys, function (key) {\r\n            var drop = self.piping.dropFactory.findDropByViewModelKey(key);\r\n            var value = drop.getValue();\r\n            commandViewModelKeysValues[key] = value;\r\n        });\r\n\r\n        var extraProperties = {};\r\n\r\n        if (self.eventData.isEntityFilterEntity)\r\n            extraProperties['Filter'] = entityFiltersState.getStateOfEntityFilters(this.rootDrop);\r\n\r\n        var request = {\r\n            eventActionType: \"Update\",\r\n            command: self.eventData.command,\r\n            commandViewModelKeys: commandViewModelKeysValues,\r\n            uploads: [],\r\n            extraProperties: extraProperties,\r\n            captcha: this.getCaptcha()\r\n        };\r\n\r\n        if (self.eventData.fileUploadType === null) {\r\n            requestContinuation(request);\r\n        } else if (self.eventData.fileUploadType === 'fromViewModel') {\r\n            var drop = self.piping.dropFactory.findDropByViewModelKey(self.eventData.fileSourceMorph);\r\n            \r\n            if(self.requiredValueIsFilledIn(drop)) {\r\n                when(drop.getFile())\r\n                    .then(function (content) {\r\n                        $.ajax({\r\n                            type: 'POST',\r\n                            url: lq.getTenantUrl('DynamicContent/AddPromptlessTempFile'),\r\n                            contentType: \"application/json; charset=utf-8\",\r\n                            data: content,\r\n                            dataType: 'json'\r\n                        }).done(function (response) {\r\n                            if (response.success) {\r\n                                request.uploads.push(\r\n                                    {\r\n                                        fileName: response.fileName,\r\n                                        tempUrl: response.tempUrl\r\n                                    });\r\n                                requestContinuation(request);\r\n                            };\r\n                        });\r\n                    });\r\n            } else {\r\n                requestCancellation();\r\n            }\r\n        } else if (self.eventData.fileUploadType === 'fromParameter') {\r\n            var file = self.piping.parameters.getValue(self.eventData.fileSourceParameter);\r\n            var xhr = new XMLHttpRequest();\r\n            var fd = new FormData();\r\n            var url = lq.getTenantUrl('DynamicContent/AddTempFile');\r\n            xhr.open(\"POST\", url, true);\r\n            xhr.onreadystatechange = function () {\r\n                if (xhr.readyState !== 4)\r\n                    return;\r\n                if (xhr.status === 200) {\r\n                    var response = JSON.parse(xhr.responseText);\r\n                    request.uploads.push(\r\n                        {\r\n                            fileName: response.fileName,\r\n                            tempUrl: response.tempUrl\r\n                        });\r\n                    requestContinuation(request);\r\n                }\r\n            };\r\n            fd.append(\"qqfile\", file);\r\n            xhr.send(fd);\r\n        } else {\r\n            var uploader = new Uploader(self.piping)\r\n                .toTenantUrl(\"DynamicContent/AddTempFile\")\r\n                .withFileFilter(self.eventData.fileUploadAllowedFileTypes === 'custom' ?\r\n                    self.eventData.fileUploadAllowedCustomFileTypes : self.eventData.fileUploadAllowedFileTypes)\r\n                .withMaxFileSize(self.eventData.maxFileSize)\r\n                .withSmartphoneMode(self.eventData.fileUploadModeSmartPhone)\r\n                .withPhotoQuality(self.eventData.photoQuality)\r\n                .withMaxImageDimensions(self.eventData.maxImageDimensions)\r\n                .onFileUploaded(function (uploadResponse) {\r\n                    if (!uploadResponse.success)\r\n                        throw new Error('Upload failed.');\r\n\r\n                    request.uploads.push(\r\n                        {\r\n                            fileName: uploadResponse.filename,\r\n                            tempUrl: uploadResponse.tempUrl\r\n                        });\r\n                })\r\n                .onUploadFinished(function () {\r\n                    requestContinuation(request);\r\n                });\r\n            if (self.eventIsEnabled('maxFileSizeExceeded')) {\r\n                uploader\r\n                    .onMaxFileSizeExceeded(function () {\r\n                        self.triggerEvent('maxFileSizeExceeded');\r\n                    })\r\n            }\r\n            if (self.eventData.fileUploadType === \"singleFile\" || self.eventData.fileUploadType == \"newFile\") {\r\n                uploader.uploadSingleFile();\r\n            }\r\n            else if (self.eventData.fileUploadType === \"multipleFiles\") {\r\n                uploader.uploadMultipleFiles();\r\n            }\r\n        }\r\n    };\r\n\r\n    Update.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (eventActionResponse.isDirty){\r\n            if (this.eventIsEnabled('onExecutionTrailDirty'))\r\n                this.triggerEvent('onExecutionTrailDirty');\r\n            else alert('Could not update the data, because the data is dirty.');\r\n        }\r\n        else continuation();\r\n    };\r\n\r\n    Update.prototype.requiredValueIsFilledIn = function (drop) {\r\n        if (!this.eventData.skipRequiredFields && drop.isVisible() && !drop.isValid()) {\r\n            if (this.eventIsEnabled('requiredFieldsMissing')) {\r\n                this.triggerEvent('requiredFieldsMissing');\r\n            } else {\r\n                alert('* not all required fields are filled in.');\r\n            }\r\n            return false;\r\n        }\r\n        return true;\r\n    };\r\n\r\n    Update.prototype.getCaptcha = function () {\r\n        if (!this.eventData.captchaField) return null;\r\n\r\n        var captchaDrop = this.piping.dropFactory\r\n            .findDropByName(this.eventData.captchaField);\r\n\r\n        if (!captchaDrop.data.captchaInputField) return null;\r\n\r\n        return this.piping.dropFactory\r\n            .findDropByName(captchaDrop.data.captchaInputField)\r\n            .getValue();\r\n    };\r\n\r\n    Update.prototype.isDataValid = function () {\r\n        var self = this;\r\n        return when.reduce(self.eventData.commandViewModelKeys, function(isDataValid, viewModelKey) {\r\n            var drop = self.piping.dropFactory.findDropByViewModelKey(viewModelKey);\r\n\r\n            if (!drop)\r\n                throw 'Cannot find drop : \"' + key + '\" for create command.';\r\n\r\n            if(!drop.isVisible())\r\n                return isDataValid;\r\n\r\n            if (!self.requiredValueIsFilledIn(drop))\r\n                return false;\r\n\r\n            return drop.performValidation(self.eventActionId)\r\n                .then(function(isDropValid) {\r\n                    return isDropValid ? isDataValid : false;\r\n                });\r\n        }, true);\r\n    };\r\n\r\n    return Update;\r\n});\n","define('lq/events/actions/urlGenerator',[\r\n    'lq',\r\n    'lq/events/actions/eventAction'\r\n], function (lq, EventAction) {\r\n    'use strict';\r\n\r\n    function UrlGenerator(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        this.values = eventData.values;\r\n    }\r\n\r\n    EventAction.extend(UrlGenerator, EventAction);\r\n\r\n    UrlGenerator.typeName = 'UrlGenerator';\r\n\r\n    UrlGenerator.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n    \r\n    UrlGenerator.prototype.execute = function (continuation) {\r\n        this.piping.parameters.locals.setValue(this.values.targetParameter, this.getFullUrl());\r\n\r\n        continuation();\r\n    };\r\n    \r\n    UrlGenerator.prototype.getFullUrl = function () {\r\n        if (this.values.generator === 'url') {\r\n            return this.values.url + '?' + $.param(this.getParameters());\r\n        } else {\r\n            var url = this.getBaseUrl();\r\n            return url + '?' + $.param(this.getParameters());\r\n        }\r\n    };\r\n\r\n    UrlGenerator.prototype.getBaseUrl = function () {\r\n        switch(this.values.generator) {\r\n            case 'action':\r\n                return lq.getFullUrl(lq.getTenantUrl('LicquidAction/Get/' + this.values.actionId));\r\n            case 'actionIdFromParameter':\r\n                return lq.getFullUrl(lq.getTenantUrl('LicquidAction/Get/' + this.piping.parameters.getValue(this.values.actionIdParameter)));\r\n            case 'application':\r\n                return lq.getFullUrl(lq.getBaseUrl(lq.getTenantName() + '/' + this.values.application.applicationName + '/LicquidAction/Get/' + this.values.application.actionId));\r\n        }\r\n\r\n        throw new Error('Invalid url generator');\r\n    };\r\n\r\n    UrlGenerator.prototype.getParameters = function () {\r\n        var parameters = {};\r\n\r\n        var locals = {};\r\n        for (var i = 0; i < this.values.parameters.length; i++) {\r\n            var name = this.values.parameters[i].name;\r\n            var value = this.piping.parameters.getValue(name);\r\n            locals[name] = value;\r\n        }\r\n        parameters['parameters'] = JSON.stringify(locals);\r\n\r\n        if (this.values.includeGlobals) {\r\n            var globals = this.piping.parameters.globals.getAll();\r\n            parameters['globals'] = JSON.stringify(globals);\r\n        }\r\n\r\n        return parameters;\r\n    };\r\n\r\n    return UrlGenerator;\r\n});\n","define('lq/events/actions/windowsLoginCommand',[\r\n    'jquery',\r\n    'lq',\r\n    'lq/events/actions/eventAction'\r\n], function ($, lq, EventAction) {\r\n    'use strict';\r\n\r\n    function WindowsLoginCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(WindowsLoginCommand, EventAction);\r\n\r\n    WindowsLoginCommand.typeName = 'WindowsLoginCommand';\r\n\r\n    WindowsLoginCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n        \r\n    var getParameterByName = function (parameterName) {\r\n        parameterName = parameterName.replace(/[\\[]/, \"\\\\\\[\").replace(/[\\]]/, \"\\\\\\]\");\r\n        var regexS = \"[\\\\?&]\" + parameterName + \"=([^&#]*)\";\r\n        var regex = new RegExp(regexS);\r\n        var results = regex.exec(window.location.search);\r\n        if (results == null)\r\n            return \"\";\r\n        else\r\n            return decodeURIComponent(results[1].replace(/\\+/g, \" \"));\r\n    };\r\n\r\n    var loginCallback = function (self, result, returnUrl, continuation, showBody) {\r\n        if (result.status === 'Success') {\r\n            if (self.eventIsEnabled('userLoggedIn')) {\r\n                self.triggerEvent('userLoggedIn', continuation, returnUrl);\r\n            } else {\r\n                if (returnUrl)\r\n                    window.location = returnUrl;\r\n                else\r\n                    window.location = lq.getTenantUrl('');\r\n            }\r\n        }\r\n        else {\r\n            if (showBody) $('body').show();\r\n\r\n            if (result.status === 'LoginFromLocalStorageFailed')\r\n                return;\r\n            else if (result.status === 'InvalidCredentials')\r\n                self.handleError('invalidCredentials', 'Invalid credentials.', continuation);\r\n            else if (result.status === 'UserLoginNotAllowed')\r\n                self.handleError('userLoginNotAllowed', 'The user is not allowed to log in.', continuation, result.userId);\r\n            else if (result.status === 'AccountLocked')\r\n                self.handleError('accountLocked', 'Your account has been locked out because of too many invalid login attempts.', continuation);\r\n            else\r\n                alert('Unable to login.');\r\n        }\r\n    }\r\n\r\n    WindowsLoginCommand.prototype.execute = function (continuation) {\r\n        var returnUrl = getParameterByName('ReturnUrl');\r\n\r\n        //deliberately not calling continuation(), because it makes no sense to continue event execution after a login/redirect\r\n        var self = this;\r\n        this.piping.dispatcher.dispatch(\r\n            'LicquidAction/StartWindowsLogin', {\r\n                commandId: self.eventData.command,\r\n                appId: getParameterByName('AppId')\r\n            }, function () {\r\n                self.piping.dispatcher.dispatch(\r\n                    'LicquidAction/LoginFromWindowsLogin', {\r\n                        actionId: self.piping.actionId,\r\n                        commandId: self.eventData.command,\r\n                        appId: getParameterByName('AppId')\r\n                    }, function (result) {\r\n                        loginCallback(self, result, returnUrl, continuation, false);\r\n                    });\r\n            },\r\n            { global: false },\r\n            function () {\r\n                self.handleError('invalidCredentials', 'Log in failed.', continuation);\r\n            },\r\n            true);\r\n    };\r\n\r\n    WindowsLoginCommand.prototype.handleError = function (eventName, defaultMessage, continuation, eventArg) {\r\n        if (this.eventIsEnabled(eventName)) {\r\n            this.triggerEvent(eventName, continuation, eventArg);\r\n        } else {\r\n            alert(defaultMessage);\r\n            continuation();\r\n        }\r\n    };\r\n        \r\n    return WindowsLoginCommand;\r\n});\n","define('lq/events/actions/wordExportCommand',[\r\n    'lq/events/actions/eventAction',\r\n    'jquery',\r\n    'lq',\r\n    'lq/cookie',\r\n    'lq/formSubmission'\r\n], function (EventAction, $, lq, cookie, FormSubmission) {\r\n    'use strict';\r\n\r\n    function WordExportCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(WordExportCommand, EventAction);\r\n\r\n    WordExportCommand.typeName = 'WordExportCommand';\r\n\r\n    WordExportCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    WordExportCommand.prototype.createEventActionRequest = function() {\r\n        if (this.eventData.downloadOnly)\r\n            return undefined;\r\n\r\n        return {\r\n            eventActionType: 'WordExport',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    WordExportCommand.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (this.eventData.downloadOnly) {\r\n            var token = 'word-export-' + Date.now();\r\n\r\n            var form = new FormSubmission(this.piping.url.prepare(lq.getTenantUrl('Export/Word')));\r\n            form.addProperty('actionId', this.piping.actionId);\r\n            form.addProperty('wordExportId', this.eventData.command);\r\n            form.addProperty('token', token);\r\n            form.addParameters('parameters', this.piping.parameters.getNonSystemParameters());\r\n            form.submit();\r\n\r\n            var waitWhileDownloadIsStarting = function() {\r\n                if (cookie.get(token) === null)\r\n                    setTimeout(waitWhileDownloadIsStarting, 200);\r\n                else\r\n                    continuation();\r\n            };\r\n            waitWhileDownloadIsStarting();\r\n        } else if (eventActionResponse.isDirty) {\r\n            if (this.eventIsEnabled('onExecutionTrailDirty'))\r\n                this.triggerEvent('onExecutionTrailDirty');\r\n            else alert('Could not complete operation, because the data is dirty.');\r\n        } else if (eventActionResponse.download) {\r\n            var queryString = {\r\n                url: eventActionResponse.url,\r\n                filename: eventActionResponse.filename,\r\n                openInBrowser: false\r\n            };\r\n            window.location = this.piping.url.prepare(lq.getTenantUrl('DynamicContent/DownloadFile'), queryString);\r\n            continuation();\r\n        } else {\r\n            continuation();\r\n        }\r\n    };\r\n\r\n    return WordExportCommand;\r\n});\n","define('lq/events/actions/xmlExportCommand',[\r\n    'lq/events/actions/eventAction',\r\n    'jquery',\r\n    'lq',\r\n    'lq/cookie',\r\n    'lq/formSubmission'\r\n], function(EventAction, $, lq, cookie, FormSubmission) {\r\n    'use strict';\r\n\r\n    function XmlExportCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(XmlExportCommand, EventAction);\r\n\r\n    XmlExportCommand.typeName = 'XmlExportCommand';\r\n\r\n    XmlExportCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    XmlExportCommand.prototype.createEventActionRequest = function () {\r\n        if (this.eventData.downloadOnly)\r\n            return undefined;\r\n\r\n        return {\r\n            eventActionType: 'XmlExport',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    XmlExportCommand.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (this.eventData.downloadOnly) {\r\n            var token = 'xml-export-' + Date.now();\r\n\r\n            var form = new FormSubmission(this.piping.url.prepare(lq.getTenantUrl('Export/Xml')));\r\n            form.addProperty('actionId', this.piping.actionId);\r\n            form.addProperty('xmlExportId', this.eventData.command);\r\n            form.addProperty('token', token);\r\n            form.addParameters('parameters', this.piping.parameters.getNonSystemParameters());\r\n            form.submit();\r\n\r\n            var waitWhileDownloadIsStarting = function () {\r\n                if (cookie.get(token) === null)\r\n                    setTimeout(waitWhileDownloadIsStarting, 200);\r\n                else\r\n                    continuation();\r\n            };\r\n            waitWhileDownloadIsStarting();\r\n        } else if (eventActionResponse.isDirty) {\r\n            if (this.eventIsEnabled('onExecutionTrailDirty'))\r\n                this.triggerEvent('onExecutionTrailDirty');\r\n            else alert('Could not complete operation, because the data is dirty.');\r\n        } else if (eventActionResponse.download) {\r\n            var queryString = {\r\n                url: eventActionResponse.url,\r\n                filename: eventActionResponse.filename,\r\n                openInBrowser: false\r\n            };\r\n            window.location = this.piping.url.prepare(lq.getTenantUrl('DynamicContent/DownloadFile'), queryString);\r\n            continuation();\r\n        } else {\r\n            continuation();\r\n        }\r\n    };\r\n\r\n    return XmlExportCommand;\r\n});\n","define('lq/events/actions/popupGoogleLogin',[\r\n    'lq',\r\n    'lq/events/actions/eventAction'\r\n], function (lq, EventAction) {\r\n    'use strict';\r\n\r\n    function PopupGoogleLogin(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(PopupGoogleLogin, EventAction);\r\n\r\n    PopupGoogleLogin.typeName = 'PopupGoogleLogin';\r\n\r\n    PopupGoogleLogin.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    PopupGoogleLogin.prototype.execute = function (continuation) {\r\n        require([ 'https://accounts.google.com/gsi/client' ], this.signIn.bind(this, continuation));\r\n    };\r\n\r\n    PopupGoogleLogin.prototype.signIn = function (continuation) {\r\n        this.$popup = $('<div id=\"googleLoginPopup\" />')\r\n            .css({\r\n                position: 'fixed',\r\n                top: '50%',\r\n                left: '50%',\r\n                zIndex: 999999,\r\n                transform: 'translate(-50%, -50%)'\r\n            })\r\n            .appendTo($('body'));\r\n\r\n        google.accounts.id.initialize({\r\n            client_id: this.eventData.clientId,\r\n            cancel_on_tap_outside: false,\r\n            prompt_parent_id: 'googleLoginPopup',\r\n            callback: this.handlePopupResponse.bind(this, continuation)\r\n        });\r\n\r\n        var self = this;\r\n        google.accounts.id.prompt(function (notification) {\r\n            // OneTap has a cool down feature that will supress the login dialog when the user closed it using 'x'.\r\n            // However, the button does not suffer from this, so we can fallback to showing a button instead\r\n            if (notification.isNotDisplayed()) {\r\n                window.google.accounts.id.renderButton(\r\n                    document.getElementById(\"googleLoginPopup\"),\r\n                    {\r\n                        theme: 'filled_blue',\r\n                        size: 'large'\r\n                    }\r\n                );\r\n            } else if (notification.isSkippedMoment()) {\r\n                self.piping.busyIndicator.forceHide();\r\n            }\r\n        });\r\n    };\r\n\r\n    PopupGoogleLogin.prototype.handlePopupResponse = function (continuation, response) {\r\n        if (!response.credential) {\r\n            this.handleError('invalidCredentials', 'Unable to sign in.');\r\n        } else {\r\n            this.piping.dispatcher.dispatch(\r\n                'LicquidAction/GoogleLogin', {\r\n                    actionId: this.piping.actionId,\r\n                    commandId: this.eventData.command,\r\n                    accessToken: response.credential\r\n                }, this.handleLoginResponse.bind(this, continuation));\r\n        }\r\n\r\n        this.$popup.remove();\r\n        this.$popup = null;\r\n    };\r\n\r\n    PopupGoogleLogin.prototype.handleLoginResponse = function (continuation, result) {\r\n        if (result.status === 'Success') {\r\n            var returnUrl = this.piping.queryString.getValueOf('ReturnUrl') || lq.getTenantUrl('');\r\n\r\n            if (this.eventIsEnabled('updatingUserProperties')) {\r\n                var self = this;\r\n                this.triggerEvent('updatingUserProperties', function () {\r\n                    self.piping.dispatcher.dispatch('LicquidAction/RefreshCurrentUser')\r\n                        .then(function () {\r\n                            if (self.eventIsEnabled('userLoggedIn'))\r\n                                self.triggerEvent('userLoggedIn', continuation, returnUrl);\r\n                            else\r\n                                continuation();\r\n                        });\r\n                });\r\n            } else if (this.eventIsEnabled('userLoggedIn')) {\r\n                this.triggerEvent('userLoggedIn', continuation, returnUrl);\r\n            } else {\r\n                window.location = returnUrl;\r\n            }\r\n        } else {\r\n            this.handleError('invalidCredentials', 'Unable to sign in.');\r\n        }\r\n    };\r\n\r\n    PopupGoogleLogin.prototype.handleError = function (eventName, defaultMessage) {\r\n        if (this.eventIsEnabled(eventName)) {\r\n            this.triggerEvent(eventName, continuation);\r\n        } else {\r\n            alert(defaultMessage);\r\n        }\r\n    };\r\n\r\n    return PopupGoogleLogin;\r\n});\n","define('lq/events/actions/bigBlueButtonJoinMeetingCommand',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n        function BigBlueButtonJoinMeetingCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(BigBlueButtonJoinMeetingCommand, EventAction);\r\n\r\n    BigBlueButtonJoinMeetingCommand.typeName = 'BigBlueButtonJoinMeetingCommand';\r\n\r\n    BigBlueButtonJoinMeetingCommand.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    BigBlueButtonJoinMeetingCommand.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: \"JoinMeeting\",\r\n            morphId: this.eventData.command\r\n        };\r\n    };\r\n\r\n    BigBlueButtonJoinMeetingCommand.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (eventActionResponse.success) {\r\n            if (window.cordova &&\r\n                window.cordova.plugins &&\r\n                window.cordova.plugins.diagnostic &&\r\n                window.cordova.plugins.diagnostic.requestRuntimePermissions) {\r\n                var self = this;\r\n                window.cordova.plugins.diagnostic.requestRuntimePermissions(function() {\r\n                        self.joined(continuation, eventActionResponse);\r\n                    },\r\n                    function(error) {\r\n                        console.error(\"The following error occurred: \" + error);\r\n                    },\r\n                    [\r\n                        window.cordova.plugins.diagnostic.permission.CAMERA,\r\n                        window.cordova.plugins.diagnostic.permission.RECORD_AUDIO\r\n                    ]);\r\n            } else {\r\n                this.joined(continuation, eventActionResponse);\r\n            }\r\n        } else {\r\n            if (this.eventIsEnabled('joinFailed'))\r\n                this.triggerEvent('joinFailed', continuation);\r\n            else {\r\n                alert('Could not join the meeting.');\r\n                continuation();\r\n            }\r\n        }\r\n    };\r\n\r\n    BigBlueButtonJoinMeetingCommand.prototype.joined = function (continuation, eventActionResponse) {\r\n        if (this.eventIsEnabled('joinedMeeting'))\r\n            this.triggerEvent('joinedMeeting', continuation, eventActionResponse.redirectUrl);\r\n        else\r\n            continuation();\r\n    };\r\n\r\n    return BigBlueButtonJoinMeetingCommand;\r\n});\n","define('lq/events/actions/bigBlueButtonStartMeetingCommand',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function BigBlueButtonStartMeeting(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(BigBlueButtonStartMeeting, EventAction);\r\n\r\n    BigBlueButtonStartMeeting.typeName = 'BigBlueButtonStartMeetingCommand';\r\n\r\n    BigBlueButtonStartMeeting.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    BigBlueButtonStartMeeting.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: \"StartMeeting\",\r\n            morphId: this.eventData.command\r\n        };\r\n    };\r\n\r\n    BigBlueButtonStartMeeting.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (eventActionResponse.success) {\r\n            if (this.eventIsEnabled('meetingStarted'))\r\n                this.triggerEvent('meetingStarted', continuation);\r\n            else\r\n                continuation();\r\n        } else {\r\n            if (this.eventIsEnabled('startFailed'))\r\n                this.triggerEvent('startFailed', continuation);\r\n            else {\r\n                alert('The meeting could not be started.');\r\n                continuation();\r\n            }\r\n        }\r\n    };\r\n\r\n    return BigBlueButtonStartMeeting;\r\n});\n","define('lq/events/actions/googleGeocodingQuery',[\r\n    'underscore',\r\n    'lq/events/actions/eventAction'\r\n], function (_, EventAction) {\r\n    'use strict';\r\n\r\n    function GoogleGeocodingQuery(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        this.eventData = eventData;\r\n\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(GoogleGeocodingQuery, EventAction);\r\n\r\n    GoogleGeocodingQuery.typeName = 'GoogleGeocodingQuery';\r\n\r\n    GoogleGeocodingQuery.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n\r\n    GoogleGeocodingQuery.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'GoogleGeocodingQuery',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    GoogleGeocodingQuery.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (eventActionResponse.success) {\r\n            if (this.eventIsEnabled('succeeded')) {\r\n                this.triggerEvent('succeeded', continuation);\r\n            } else {\r\n                continuation();\r\n            }\r\n        } else {\r\n            if (this.eventIsEnabled('failed')) {\r\n                this.triggerEvent('failed', continuation);\r\n            } else {\r\n                alert('The geocoding of the address has been failed, and the \\'failed\\' event is not enabled.')\r\n                continuation();\r\n            }\r\n        }\r\n    };\r\n\r\n    return GoogleGeocodingQuery;\r\n});\n","define('lq/events/actions/downloadExternalDocumentCommand',[\r\n    'underscore',\r\n    'lq/events/actions/eventAction',\r\n    'lq'\r\n], function (_, EventAction, lq) {\r\n    'use strict';\r\n\r\n    function DownloadExternalDocumentCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        this.eventData = eventData;\r\n\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(DownloadExternalDocumentCommand, EventAction);\r\n\r\n    DownloadExternalDocumentCommand.typeName = 'DownloadExternalDocumentCommand';\r\n\r\n    DownloadExternalDocumentCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    DownloadExternalDocumentCommand.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: \"DownloadExternalDocument\",\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    DownloadExternalDocumentCommand.prototype.execute = function (continuation, eventActionResponse) {\r\n        if (eventActionResponse.directDownloadEnabled &&\r\n            eventActionResponse.url &&\r\n            eventActionResponse.fileName) {\r\n            window.location = this.piping.url.prepare(lq.getTenantUrl('DynamicContent/DownloadFile'), {\r\n                url: eventActionResponse.url,\r\n                filename: eventActionResponse.fileName,\r\n                openInBrowser: false\r\n            });\r\n        } else if (eventActionResponse.directDownloadEnabled &&\r\n            (!eventActionResponse.url || !eventActionResponse.fileName)) {\r\n            window.location = this.piping.url.prepare(lq.getTenantUrl('DownloadExternalDocument/Download'), {\r\n                    actionId: this.piping.actionId,\r\n                    commandId: this.eventData.command,\r\n                    parameters: JSON.stringify(this.piping.parameters.getNonSystemParameters())\r\n                });\r\n        }\r\n        continuation();\r\n    };\r\n\r\n    return DownloadExternalDocumentCommand;\r\n});\r\n\n","define('lq/events/actions/rawSqlCommand',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function RawSql(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(RawSql, EventAction);\r\n\r\n    RawSql.typeName = 'RawSql';\r\n\r\n    RawSql.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n    \r\n    RawSql.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'RawSql',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    return RawSql;\r\n});\r\n\n","define('lq/events/actions/asyncSender',[\r\n    'lq/events/actions/eventAction'\r\n], function(EventAction) {\r\n    'use strict';\r\n        \r\n    function AsyncSender(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(AsyncSender, EventAction);\r\n\r\n    AsyncSender.typeName = 'AsyncSender';\r\n\r\n    AsyncSender.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n        \r\n    AsyncSender.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'AsyncSender',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    return AsyncSender;\r\n});\n","define('lq/events/actions/asyncEventTrigger',[\r\n    'lq/events/actions/eventAction'\r\n], function(EventAction) {\r\n    'use strict';\r\n        \r\n    function AsyncEventTrigger(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(AsyncEventTrigger, EventAction);\r\n\r\n    AsyncEventTrigger.typeName = 'AsyncEventTrigger';\r\n\r\n    AsyncEventTrigger.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n        \r\n    AsyncEventTrigger.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'AsyncEventTrigger',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    return AsyncEventTrigger;\r\n});\n","define('lq/events/actions/asyncEventReceiver',[\r\n    'lq/events/actions/eventAction',\r\n    'lq/asyncSubcriptions'\r\n], function (EventAction, asyncSubcriptions) {\r\n    'use strict';\r\n        \r\n    function AsyncEventReceiver(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(AsyncEventReceiver, EventAction);\r\n\r\n    AsyncEventReceiver.typeName = 'AsyncEventReceiver';\r\n\r\n    AsyncEventReceiver.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n        \r\n    AsyncEventReceiver.prototype.execute = function (continuation) {\r\n        asyncSubcriptions\r\n            .addEventSubscription(\r\n                this.piping,\r\n                this.eventData.command,\r\n                this.eventData.filter,\r\n                this.receiveEvent.bind(this))\r\n            .then(continuation);\r\n    };\r\n\r\n    AsyncEventReceiver.prototype.receiveEvent = function (eventName, event, argument) {\r\n        if (eventName === 'receiveEvent') {\r\n            if (this.eventData.events.indexOf(event) === -1) return;\r\n            this.piping.eventing.publish(this.eventData.command + '.' + event, this.eventSource, argument, null, this.getEventActionIdentifier());\r\n        }\r\n    };\r\n\r\n    return AsyncEventReceiver;\r\n});\n","define('lq/events/actions/share',[\r\n    'lq/events/actions/eventAction',\r\n    'lq'\r\n], function(EventAction, lq) {\r\n    'use strict';\r\n\r\n    function Share(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        this.eventData = eventData;\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(Share, EventAction);\r\n\r\n    Share.typeName = 'Share';\r\n\r\n    Share.prototype.getBatchType = function() {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    Share.prototype.execute = function(continuation) {\r\n        const title = this.piping.parameters.replace(this.eventData.title);\r\n        var shareData = {\r\n            title: title\r\n        };\r\n        if (this.eventData.shareType === 'Text') {\r\n            shareData.text = this.piping.parameters.replace(this.eventData.textToShare);\r\n            navigator.share(shareData)\r\n                .then(function () {\r\n                    continuation();\r\n                })\r\n                .catch(function (e) {\r\n                    continuation();\r\n                });\r\n        } else {\r\n            if (this.eventData.sourceFileDataSource && this.eventData.sourceFileOutput) {\r\n                var queryString = {\r\n                    actionId: this.piping.actionId,\r\n                    commandId: this.eventData.command,\r\n                    parameters: JSON.stringify(this.piping.parameters.getNonSystemParameters())\r\n                };\r\n                var self = this;\r\n                var downloadUrl = this.piping.url.prepare(lq.getTenantUrl('Export/Share'), queryString);\r\n                fetch(downloadUrl).then(function (response) {\r\n                    response.blob().then(function (data) {\r\n                        var metadata = {\r\n                            type: response.headers.get('content-type')\r\n                        };\r\n                        var fileName = self.piping.parameters.replace(self.eventData.fileName);\r\n                        if (!fileName) {\r\n                            // Get the fileName from: 'attachment; filename=nameOfTheFile.svg'\r\n                            var disposition = response.headers.get('content-disposition');\r\n                            if (disposition && disposition.indexOf('attachment') !== -1) {\r\n                                var filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\r\n                                var matches = filenameRegex.exec(disposition);\r\n                                if (matches != null && matches[1]) {\r\n                                    fileName = matches[1].replace(/['\"]/g, '');\r\n                                }\r\n                            }\r\n                        }\r\n                        var file = new File([data], fileName, metadata);\r\n                        shareData.files = [file];\r\n                        if (navigator.canShare(shareData)) {\r\n                            navigator.share(shareData)\r\n                                .then(function () {\r\n                                    continuation();\r\n                                })\r\n                                .catch(function (e) {\r\n                                    continuation();\r\n                                });\r\n                        } else {\r\n                            continuation();\r\n                        }\r\n                    });\r\n                });\r\n            } else {\r\n                continuation();\r\n            }\r\n        }\r\n    };\r\n\r\n    return Share;\r\n});\r\n\n","define('lq/events/actions/labelImageCommand',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function LabelImageCommand(eventData, eventArg) {\r\n    \tEventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(LabelImageCommand, EventAction);\r\n\r\n    LabelImageCommand.typeName = 'LabelImageCommand';\r\n\r\n    LabelImageCommand.prototype.getBatchType = function () {\r\n    \treturn EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    LabelImageCommand.prototype.createEventActionRequest = function () {\r\n    \treturn {\r\n            eventActionType: 'LabelImage',\r\n    \t\tcommand: this.eventData.command\r\n    \t};\r\n    };\r\n\r\n    return LabelImageCommand;\r\n});\n","define('lq/events/actions/webserviceClient',[\r\n    'lq/events/actions/eventAction'\r\n], function(EventAction) {\r\n    'use strict';\r\n        \r\n    function WebserviceClient(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(WebserviceClient, EventAction);\r\n\r\n    WebserviceClient.typeName = 'WebserviceClient';\r\n\r\n    WebserviceClient.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n        \r\n    WebserviceClient.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'WebserviceClientCommand',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    return WebserviceClient;\r\n});\n","define('lq/events/actions/chatGPTBatchCommand',[\r\n    'lq/events/actions/eventAction'\r\n], function(EventAction) {\r\n    'use strict';\r\n    \r\n    function ChatGPTBatchCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        this.eventData = eventData;\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(ChatGPTBatchCommand, EventAction);\r\n\r\n    ChatGPTBatchCommand.typeName = 'ChatGPTBatchCommand';\r\n\r\n    ChatGPTBatchCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    ChatGPTBatchCommand.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'ChatGPTBatch',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    return ChatGPTBatchCommand;\r\n});\r\n\n","define('lq/events/actions/chatGPTCommand',[\r\n    'lq/events/actions/eventAction'\r\n], function(EventAction) {\r\n    'use strict';\r\n    \r\n    function ChatGPTCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        this.eventData = eventData;\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(ChatGPTCommand, EventAction);\r\n\r\n    ChatGPTCommand.typeName = 'ChatGPTCommand';\r\n\r\n    ChatGPTCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    ChatGPTCommand.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'ChatGPT',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    return ChatGPTCommand;\r\n});\n","define('lq/events/actions/chatGPTImageCommand',[\r\n    'lq/events/actions/eventAction'\r\n], function(EventAction) {\r\n    'use strict';\r\n    \r\n    function ChatGPTImageCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        this.eventData = eventData;\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(ChatGPTImageCommand, EventAction);\r\n\r\n    ChatGPTImageCommand.typeName = 'ChatGPTImageCommand';\r\n\r\n    ChatGPTImageCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    ChatGPTImageCommand.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'ChatGPTImage',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    return ChatGPTImageCommand;\r\n});\r\n\n","define('lq/events/actions/businessLogicBlockCommand',[\r\n    'underscore',\r\n    'lq/events/actions/eventAction',\r\n    'lq/validatorGateway'\r\n], function (_, EventAction, validatorGateway) {\r\n    'use strict';\r\n\r\n    function BusinessLogicBlockCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(BusinessLogicBlockCommand, EventAction);\r\n\r\n    BusinessLogicBlockCommand.typeName = 'BusinessLogicBlockCommand';\r\n\r\n    BusinessLogicBlockCommand.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    BusinessLogicBlockCommand.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'BusinessLogicBlockCommand',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    BusinessLogicBlockCommand.prototype.execute = function (continuation, eventActionResponse) {\r\n        if(validatorGateway.isEnabled())\r\n            this.runTrace(eventActionResponse.trace, this.rootDrop.instanceId, this.eventActionId);\r\n        \r\n        this.triggerEvents(continuation, eventActionResponse);        \r\n    };\r\n\r\n    BusinessLogicBlockCommand.prototype.triggerEvents = function (continuation, eventActionResponse) {\r\n        var self = this;\r\n        var firstContinuation = _.reduce(eventActionResponse.events.reverse(), function (nextContinuation, theEvent) {\r\n            return function () {\r\n                var eventName = theEvent.eventName.charAt(0).toLowerCase() + theEvent.eventName.slice(1)\r\n                self.triggerEvent(eventName, nextContinuation, theEvent.value);\r\n            }\r\n        }, continuation);\r\n\r\n        firstContinuation();\r\n    };\r\n\r\n    BusinessLogicBlockCommand.prototype.runTrace = function (trace, parentActionInstanceId, parentEventActionId) {\r\n        if (!trace || trace.length === 0)\r\n            return\r\n\r\n        var actionInstanceId = this.rootDrop.__proto__.constructor.nextInstanceId();\r\n        var eventId = 0;\r\n        var eventActionId = 0;\r\n\r\n        var self = this;\r\n        _.each(trace, function (event) {\r\n            eventId++;\r\n\r\n            var entering = {\r\n                type: 'ENTERING_EVENT',\r\n                status:  event.entered ? 'EXECUTING' : 'SKIPPING',\r\n                actionInstanceId: actionInstanceId,\r\n                id: eventId,\r\n                name: event.eventName,\r\n                parentEventAction: {\r\n                    id: parentEventActionId,\r\n                    actionInstanceId: parentActionInstanceId\r\n                },\r\n                condition: event.condition,\r\n                locals: event.locals,\r\n                globals: event.globals,\r\n                systems: event.systems\r\n            };\r\n            \r\n            validatorGateway.publishEvent(entering);\r\n\r\n            _.each(event.eventActions, function (eventAction) {\r\n                eventActionId++;\r\n\r\n                validatorGateway.publishEvent({\r\n                    type: 'CREATED_EVENT_ACTION',\r\n                    actionInstanceId: actionInstanceId,\r\n                    id: eventActionId,\r\n                    eventId: eventId,\r\n                    eventActionData: eventAction.data\r\n                });\r\n\r\n                validatorGateway.publishEvent({\r\n                    type: 'EXECUTING_EVENT_ACTION',\r\n                    actionInstanceId: actionInstanceId,\r\n                    id: eventActionId,\r\n                    eventId: eventId,\r\n                    eventActionTypeName: eventAction.data.eventActionType,\r\n                    locals: {},\r\n                    globals: {},\r\n                    systems: {}\r\n                });\r\n\r\n                validatorGateway.publishEvent({\r\n                    type: 'HANDLING_EVENT_ACTION_RESPONSE',\r\n                    actionInstanceId: actionInstanceId,\r\n                    id: eventActionId,\r\n                    eventId: eventId,\r\n                    eventActionTypeName: eventAction.data.eventActionType,\r\n                    location: 'SERVER',\r\n                    locals: eventAction.debug.beforeParameters.locals,\r\n                    globals: eventAction.debug.beforeParameters.globals,\r\n                    systems: eventAction.debug.systems,\r\n                });\r\n\r\n                if(eventAction.events) {\r\n                    self.runTrace(eventAction.events, actionInstanceId, eventActionId);\r\n                }\r\n                \r\n                validatorGateway.publishEvent({\r\n                    type: 'EXECUTED_EVENT_ACTION',\r\n                    actionInstanceId: actionInstanceId,\r\n                    id: eventActionId,\r\n                    locals: eventAction.debug.afterParameters.locals,\r\n                    globals: eventAction.debug.afterParameters.globals\r\n                });\r\n            });\r\n        });\r\n    };\r\n\r\n    return BusinessLogicBlockCommand;\r\n});\n","define('lq/services/mpa/addToHomeScreenCommand',[\r\n    'lq/responsive'\r\n], function (responsive) {\r\n    'use strict';\r\n\r\n    function AddToHomeScreenCommand(data) {\r\n        this.data = data;\r\n        this.onBeforeInstallPrompt = this.handleBeforeInstallPrompt.bind(this);\r\n    };\r\n\r\n    AddToHomeScreenCommand.typeName = 'AddToHomeScreenCommand';\r\n\r\n    AddToHomeScreenCommand.deferredPrompt = null;\r\n\r\n    AddToHomeScreenCommand.prototype.initialize = function () {\r\n        if (!responsive.isPWA()) {\r\n            // Running in Browser\r\n            window.addEventListener('beforeinstallprompt', this.onBeforeInstallPrompt);\r\n        } else {\r\n            // Running as PWA\r\n            var self = this;\r\n            var eventName = 'alreadyAdded';\r\n            setTimeout(function () {\r\n                if (self.piping.eventing && self.data.eventing[eventName] && self.data.eventing[eventName].enabled) {\r\n                    self.piping.eventing.publish(self.data.eventing[eventName].raisedEventName, null, null, null, self.eventActionId);\r\n                }\r\n            });\r\n        }\r\n    };\r\n\r\n    AddToHomeScreenCommand.prototype.handleBeforeInstallPrompt = function (event) {\r\n        event.preventDefault();\r\n        AddToHomeScreenCommand.deferredPrompt = event;\r\n    };\r\n\r\n    return AddToHomeScreenCommand;\r\n});\r\n\n","define('lq/events/actions/addToHomeScreenCommand',[\r\n    'underscore',\r\n    'lq/events/actions/eventAction',\r\n    'lq/services/mpa/addToHomeScreenCommand',\r\n    'lq/services/action/addToHomeScreenCommand'\r\n], function (_, EventAction, AddToHomeScreenCommandMpa, AddToHomeScreenCommandSpa) {\r\n    'use strict';\r\n\r\n    function AddToHomeScreenCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        this.eventData = eventData;\r\n\r\n        if (AddToHomeScreenCommandMpa.deferredPrompt) {\r\n            this.deferredPrompt = AddToHomeScreenCommandMpa.deferredPrompt;\r\n\r\n        } else if (AddToHomeScreenCommandSpa.deferredPrompt) {\r\n            this.deferredPrompt = AddToHomeScreenCommandSpa.deferredPrompt;\r\n        }\r\n\r\n        return this;\r\n    }\r\n\r\n    AddToHomeScreenCommand.prototype.deferredPrompt = null\r\n\r\n    EventAction.extend(AddToHomeScreenCommand, EventAction);\r\n\r\n    AddToHomeScreenCommand.typeName = 'AddToHomeScreenCommand';\r\n\r\n    AddToHomeScreenCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    AddToHomeScreenCommand.prototype.execute = function (continuation) {\r\n        if (this.deferredPrompt) {\r\n            this.deferredPrompt.prompt();\r\n            if (this.eventIsEnabled('installationPrompted')) {\r\n                this.triggerEvent('installationPrompted');\r\n            }\r\n            this.deferredPrompt.userChoice.then(function (result) {\r\n                if (result.outcome === 'accepted') {\r\n                    this.deferredPrompt = null;\r\n                }\r\n            });\r\n        }\r\n        continuation();\r\n    };\r\n\r\n    return AddToHomeScreenCommand;\r\n});\r\n\n","define('lq/events/actions/translationCommand',[\r\n    'lq/events/actions/eventAction'\r\n], function(EventAction) {\r\n    'use strict';\r\n    \r\n    function TranslationCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        this.eventData = eventData;\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(TranslationCommand, EventAction);\r\n\r\n    TranslationCommand.typeName = 'TranslationCommand';\r\n\r\n    TranslationCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    TranslationCommand.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'Translation',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    TranslationCommand.prototype.execute = function (continuation, eventActionResponse) {\r\n        continuation();\r\n    };\r\n\r\n    return TranslationCommand;\r\n});\n","define('lq/events/actions/asyncDeletion',[\r\n    'lq/events/actions/eventAction'\r\n], function(EventAction) {\r\n    'use strict';\r\n        \r\n    function AsyncDeletion(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(AsyncDeletion, EventAction);\r\n\r\n    AsyncDeletion.typeName = 'AsyncDeletion';\r\n\r\n    AsyncDeletion.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n        \r\n    AsyncDeletion.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'AsyncDeletion',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    return AsyncDeletion;\r\n});\n","define('lq/events/actions/enablePushNotificationsCommand',[\r\n    'lq/events/actions/eventAction',\r\n    'lq/main',\r\n    'lq/webPushNotifications'\r\n], function (EventAction, main, webPushNotifications) {\r\n    'use strict';\r\n\r\n    function EnablePushNotificationsCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(EnablePushNotificationsCommand, EventAction);\r\n\r\n    EnablePushNotificationsCommand.typeName = 'EnablePushNotificationsCommand';\r\n\r\n    EnablePushNotificationsCommand.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    EnablePushNotificationsCommand.prototype.execute = function (continuation) {\r\n        var self = this;\r\n    \r\n        if (main.areWebNotificationsEnabled())\r\n            webPushNotifications.enableNotifications(this.piping.application.userId, function (permissionType, deviceId) {\r\n                if (permissionType === 'granted' && self.eventIsEnabled('granted'))\r\n                    self.triggerEvent('granted', continuation, deviceId);\r\n                else if (permissionType === 'denied' && self.eventIsEnabled('denied'))\r\n                    self.triggerEvent('denied', continuation);\r\n                else if (permissionType === 'default' && self.eventIsEnabled('dismissed'))\r\n                    self.triggerEvent('dismissed', continuation);\r\n            });\r\n        else\r\n            continuation();\r\n    };\r\n\r\n    return EnablePushNotificationsCommand;\r\n});\n","define('lq/events/actions/CQCommand',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function CQCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(CQCommand, EventAction);\r\n\r\n    CQCommand.typeName = 'CQCommand';\r\n\r\n    CQCommand.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    CQCommand.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'CQCommand',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    return CQCommand;\r\n});\n","define('lq/events/actions/validateCommand',[\r\n    'lq/events/actions/eventAction',\r\n    'lq/validations'\r\n], function (EventAction, validations) {\r\n    'use strict';\r\n\r\n    function ValidationCommand(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n        return this;\r\n    }\r\n\r\n    EventAction.extend(ValidationCommand, EventAction);\r\n\r\n    ValidationCommand.typeName = 'ValidateCommand';\r\n\r\n    ValidationCommand.prototype.getBatchType = function () {\r\n        return EventAction.DO_NOT_BATCH;\r\n    };\r\n\r\n    ValidationCommand.prototype.execute = function (continuation) {\r\n        validations.runValidation(this.eventData.validation, this.piping, this.triggerValidationEvent.bind(this))\r\n            .done(this.afterValidationCompleted.bind(this, continuation));\r\n    };\r\n\r\n    ValidationCommand.prototype.triggerValidationEvent = function (eventName) {\r\n        this.piping.eventing.publish(eventName, this.eventSource, null, null, this.getEventActionIdentifier());\r\n    };\r\n\r\n    ValidationCommand.prototype.afterValidationCompleted = function (continuation, isEverythingValid) {\r\n        if (isEverythingValid && this.eventIsEnabled('inputValidated')) {\r\n            this.triggerEvent('inputValidated', continuation);\r\n        } else if (!isEverythingValid && this.eventIsEnabled('inputInvalidated')) {\r\n            this.triggerEvent('inputInvalidated');\r\n        }\r\n\r\n        continuation();\r\n    };    \r\n\r\n    return ValidationCommand;\r\n});\n","define('lq/events/actions/apiCallv2',[\r\n    'lq/events/actions/eventAction'\r\n], function (EventAction) {\r\n    'use strict';\r\n\r\n    function APICallv2Command(eventData, eventArg) {\r\n        EventAction.call(this, eventData, eventArg);\r\n    }\r\n\r\n    EventAction.extend(APICallv2Command, EventAction);\r\n\r\n    APICallv2Command.typeName = 'APICallv2';\r\n\r\n    APICallv2Command.prototype.getBatchType = function () {\r\n        return EventAction.COMMAND_BATCH;\r\n    };\r\n\r\n    APICallv2Command.prototype.createEventActionRequest = function () {\r\n        return {\r\n            eventActionType: 'APICallv2',\r\n            command: this.eventData.command\r\n        };\r\n    };\r\n\r\n    return APICallv2Command;\r\n});\n","define('lq/events/eventActionFactory',[\r\n    'lq/typesProvider',\r\n\r\n    './actions/activeDirectorySyncGroupUsers',\r\n    './actions/backgroundTask',\r\n    './actions/breakEvent',\r\n    './actions/calendarEventsExportCommand',\r\n    './actions/calendarURLExport',\r\n    './actions/changeParameter',\r\n    './actions/changePassword',\r\n    './actions/checkIn',\r\n    './actions/checkOut',\r\n    './actions/copyDynamicContentCommand',\r\n    './actions/copyToClipboard',\r\n    './actions/cq',\r\n    './actions/create',\r\n    './actions/createTextFileCommand',\r\n    './actions/csvExportCommand',\r\n    './actions/deleteCommand',\r\n    './actions/deleteDynamicContentCommand',\r\n    './actions/distanceMatrix',\r\n    './actions/desktopClientCommand',\r\n    './actions/documentZip',\r\n    './actions/domainFunctionCommand',\r\n    './actions/download',\r\n    './actions/downloadFileCommand',\r\n    './actions/excelExportCommand',\r\n    './actions/executeEidReader',\r\n    './actions/executeEidSigner',\r\n    './actions/executeMethod',\r\n    './actions/executePlugin',\r\n    './actions/executeQuery',\r\n    './actions/executeTimer',\r\n    './actions/extractMailAttachment',\r\n    './actions/eYouthAuthenticationCommand',\r\n    './actions/eYouthAuthenticationLogoutCommand',\r\n    './actions/federatedLogin',\r\n    './actions/focus',\r\n    './actions/forEach',\r\n    './actions/formula',\r\n    './actions/generateText',\r\n    './actions/import',\r\n    './actions/languageCommand',\r\n    './actions/login',\r\n    './actions/logoffCommand',\r\n    './actions/mail',\r\n    './actions/mapping',\r\n    './actions/mollie',\r\n    './actions/mollieCreateCustomer',\r\n    './actions/mollieUpdateCustomer',\r\n    './actions/officeAddinLoginCommand',\r\n    './actions/openDocumentInOfficeOnline',\r\n    './actions/pain001ExportCommand',\r\n    './actions/payment',\r\n    './actions/paypal',\r\n    './actions/pdfDataCommand',\r\n    './actions/pdfMergeCommand',\r\n    './actions/pdfMergeCommand_v2',\r\n    './actions/platformCommand',\r\n    './actions/plugInLogin',\r\n    './actions/pushNotificationsCommand',\r\n    './actions/raiseEvent',\r\n    './actions/readOutlookMessage',\r\n    './actions/redirect',\r\n    './actions/refreshCaptcha',\r\n    './actions/refreshLoggedInUserCommand',\r\n    './actions/reportCommand',\r\n    './actions/rssCommand',\r\n    './actions/saveMorph',\r\n    './actions/scheduledTaskCommand',\r\n    './actions/scrollTo',\r\n    './actions/serverCommand',\r\n    './actions/setParameterFromEvent',\r\n    './actions/setVisibility',\r\n    './actions/shareOnFacebook',\r\n    './actions/shareOnLinkedIn',\r\n    './actions/shareOnTwitter',\r\n    './actions/sms',\r\n    './actions/thirdPartyLogin',\r\n    './actions/transformRichText',\r\n    './actions/undoCheckOut',\r\n    './actions/update',\r\n    './actions/urlGenerator',\r\n    './actions/windowsLoginCommand',\r\n    './actions/wordExportCommand',\r\n    './actions/xmlExportCommand',\r\n    './actions/popupGoogleLogin',\r\n    './actions/bigBlueButtonJoinMeetingCommand',\r\n    './actions/bigBlueButtonStartMeetingCommand',\r\n    './actions/googleGeocodingQuery',\r\n    './actions/downloadExternalDocumentCommand',\r\n    './actions/rawSqlCommand',\r\n    './actions/asyncSender',\r\n    './actions/asyncEventTrigger',\r\n    './actions/asyncEventReceiver',\r\n    './actions/share',\r\n    './actions/labelImageCommand',\r\n    './actions/webserviceClient',\r\n    './actions/chatGPTBatchCommand',\r\n    './actions/chatGPTCommand',\r\n    './actions/chatGPTImageCommand',\r\n    './actions/businessLogicBlockCommand',\r\n    './actions/addToHomeScreenCommand',\r\n    './actions/translationCommand',\r\n    './actions/asyncDeletion',\r\n    './actions/enablePushNotificationsCommand',\r\n    './actions/CQCommand',\r\n    './actions/validateCommand',\r\n    './actions/apiCallv2'\r\n], function (TypesProvider) {\r\n    'use strict';\r\n\r\n    var eventActionTypes = Array.prototype.slice.call(arguments, 1);\r\n    var typesProvider = new TypesProvider(eventActionTypes);\r\n\r\n    var currentEventActionId = 0;\r\n\r\n    var EventActionFactory = function (rootDrop) {\r\n        this.rootDrop = rootDrop;\r\n    };\r\n\r\n    EventActionFactory.prototype.createEventActions = function (event, eventSource, eventArg) {\r\n        var self = this;\r\n        return _.map(event.actions, function (data) {\r\n            var EventActionType = typesProvider.get(data.eventActionType);\r\n            var eventAction = new EventActionType(data, eventArg);\r\n            eventAction.eventSource = eventSource;\r\n            eventAction.rootDrop = self.rootDrop;\r\n            eventAction.piping = self.rootDrop.piping;\r\n            eventAction.eventActionId = ++currentEventActionId;\r\n            eventAction.eventActionTypeName = data.eventActionType;\r\n            return eventAction;\r\n        });\r\n    };\r\n\r\n    return EventActionFactory;\r\n});\n","define('lq/visibility/defaultVisibility',[\r\n    'jquery',\r\n    'underscore'\r\n], function ($, _) {\r\n    'use strict';\r\n\r\n    var DefaultVisibility = function () {\r\n        this.bindings = undefined;\r\n    };\r\n\r\n    DefaultVisibility.prototype.apply = function (drop) {\r\n        var self = this;\r\n\r\n        if (drop.data.initialVisibility === false)\r\n            drop.hideWithoutAnimation();\r\n\r\n        if (this.fromQuery(drop)) {\r\n            drop.visibilityRegistrationId = drop.piping.datasources.registerDatasourceListener(\r\n                drop.data.dataSourceForVisibility,\r\n                function (data) {\r\n                    var isVisible = data.results.length && data.results[0][drop.data.dataSourceOutputForVisibility];\r\n                    if (isVisible === true)\r\n                        drop.show();\r\n                    else\r\n                        drop.hide();\r\n                }\r\n            );\r\n        } else if (this.fromParameter(drop)) {\r\n            this.updateVisibilityFromParameter(drop);\r\n\r\n            if (drop.data.parameterForVisibilityIsBound) {\r\n                var binding = drop.piping.parameters.subscribeForUpdates(drop.data.parameterForVisibility, this.updateVisibilityFromParameter.bind(this, drop));\r\n                if(!this.bindings)\r\n                    this.bindings = [];\r\n                this.bindings.push(binding);\r\n            }\r\n        } else if (this.fromCondition(drop)) {\r\n            var evaluator = drop.piping.conditions.getConditionEvaluator(drop.data.conditionForVisibility);\r\n            evaluator.evaluate(drop.piping, true)\r\n                .then(function (executionData) {\r\n                    if (executionData.conditionResult) {\r\n                        drop.showWithoutAnimation();\r\n                    } else {\r\n                        drop.hideWithoutAnimation();\r\n                    }\r\n                });\r\n        } else if (this.fromParentState(drop)) {\r\n            drop.hideWithoutAnimation();\r\n\r\n            if (!drop.data.parentWithState) {\r\n                _.each(drop.data.visibleWhenParentHasStates, function (state) {\r\n                    drop.getElementForVisibility().addClass(\"visible-when-\" + state);\r\n                });\r\n            } else {\r\n                if (!$('#visibilityFromParentRules').length) {\r\n                    $('<style type=\"text/css\" id=\"visibilityFromParentRules\" />')\r\n                        .appendTo('head');\r\n                }\r\n\r\n                var parentWithState = this.getDropById(drop, drop.data.parentWithState);\r\n                parentWithState.$element.addClass(`state-for-${drop.data.id}`);\r\n                \r\n                var rules = []; \r\n                \r\n                _.each(drop.data.visibleWhenParentHasStates, function (state) {\r\n                    var parentRule = `.state-for-${drop.data.id}.has-states${state === 'hover' ? \":\" : \".\"}${state}`;\r\n                    var visibilityRule = `visible-when-${state}-${drop.data.id}`;\r\n                    \r\n                    drop.getElementForVisibility().addClass(visibilityRule);\r\n                    \r\n                    var rule = `${parentRule} .${visibilityRule}`;\r\n                    \r\n                    if (!rules.includes(rule)) {\r\n                        rules.push(rule);\r\n                    }\r\n                });\r\n\r\n                var cssProperties = \"{ visibility: inherit !important; display: block !important; }\";\r\n\r\n                var $visibilityFromParentRules = $('#visibilityFromParentRules');\r\n\r\n                rules.forEach(function (rule) {\r\n                    if (!$visibilityFromParentRules.html().includes(rule)) {\r\n                        $visibilityFromParentRules.html(`${$visibilityFromParentRules.html()} ${rule} ${cssProperties} `);\r\n                    } \r\n                });\r\n            }\r\n        }\r\n    };\r\n\r\n    DefaultVisibility.prototype.updateVisibilityFromParameter = function (drop) {\r\n        if (this.valueFromParameterIsTrue(drop))\r\n            drop.showWithoutAnimation();\r\n        else\r\n            drop.hideWithoutAnimation();\r\n    };\r\n\r\n    // note that this is a very naive implementation. It can use parameters that are passed in from another page,\r\n    // but it won't be able to pick up parameters that are set during the PageLoad event or any other event.\r\n    // If we need to support that second use case, we need to be able to listen to changes to parameter values\r\n    DefaultVisibility.prototype.valueFromParameterIsTrue = function (drop) {\r\n        var value = drop.piping.parameters.getValue(drop.data.parameterForVisibility);\r\n\r\n        if (value === undefined)\r\n            return false;\r\n\r\n        if ($.type(value) === 'boolean')\r\n            return value === true;\r\n\r\n        if ($.type(value) === 'string')\r\n            return value.toLowerCase() === 'true';\r\n\r\n        throw new Error('Cannot determine the visibility of the drop. The value of parameter ' + drop.data.parameterForVisibility + ' cannot be converted to a boolean.');\r\n    };\r\n\r\n    DefaultVisibility.prototype.fromQuery = function (drop) {\r\n        return drop.data.initialVisibilityOption === 'From Query' && drop.data.dataSourceForVisibility;\r\n    };\r\n\r\n    DefaultVisibility.prototype.fromParameter = function (drop) {\r\n        return drop.data.initialVisibilityOption === 'From Parameter' && drop.data.parameterForVisibility;\r\n    };\r\n\r\n    DefaultVisibility.prototype.fromCondition = function (drop) {\r\n        return drop.data.initialVisibilityOption === 'From Condition' && drop.data.conditionForVisibility;\r\n    };\r\n\r\n    DefaultVisibility.prototype.fromParentState = function (drop) {\r\n        return drop.data.initialVisibilityOption === 'FromParentState' && drop.data.visibleWhenParentHasStates;\r\n    };\r\n\r\n\r\n    DefaultVisibility.prototype.cleanUp = function () {\r\n        _.each(this.bindings, function (binding) {\r\n            binding.dispose();\r\n        });\r\n        this.bindings = undefined;\r\n    };\r\n\r\n    DefaultVisibility.prototype.getDropById = function (drop, dropId) {\r\n        while (drop.parent !== null) {\r\n            if (drop.data.id === dropId) {\r\n                return drop;\r\n            }\r\n\r\n            drop = drop.parent;\r\n        }\r\n    };\r\n\r\n    return DefaultVisibility;\r\n});\n","define('lq/datasources',[\r\n    'jquery',\r\n    'underscore',\r\n    'lq/queryDispatcher',\r\n    'lq/util'\r\n], function ($, _, QueryDispatcher, util) {\r\n    'use strict';\r\n\r\n    var Datasources = function () {\r\n        this.datasourceListeners = [];\r\n        this.datasources = [];\r\n    };\r\n\r\n    Datasources.prototype.registerDatasourceListener = function (queryName, handler, decorateDataFunc, deleteHandler) {\r\n        var id = _.uniqueId();\r\n        this.datasourceListeners.push({\r\n            id: id,\r\n            queryName: queryName,\r\n            handler: handler,\r\n            decorateDataFunc: decorateDataFunc,\r\n            deleteHandler: deleteHandler || $.noop\r\n        });\r\n        return id;\r\n    };\r\n\r\n    Datasources.prototype.getDatasourceListenersThatListenFor = function (queryName) {\r\n        return _.where(this.datasourceListeners, { queryName: queryName });\r\n    };\r\n\r\n    Datasources.prototype.getDatasourceListenersThatListenForWithDefaultParams = function (queryName) {\r\n        var defaultParams = QueryDispatcher.getDefaultQueryParams();\r\n        return _.filter(this.getDatasourceListenersThatListenFor(queryName), function (listener) {\r\n            if (typeof (listener.decorateDataFunc) !== \"function\")\r\n                return true;\r\n            var params = QueryDispatcher.getDefaultQueryParams();\r\n            listener.decorateDataFunc(params);\r\n            return _.isEqual(defaultParams, params);\r\n        });\r\n    };\r\n\r\n    Datasources.prototype.unregisterDatasourceListener = function (id) {\r\n        var listenerToRemove = this.getDatasourceListener(id);\r\n        this.datasourceListeners = _.without(this.datasourceListeners, listenerToRemove);\r\n    };\r\n\r\n    Datasources.prototype.getDatasourceListener = function (id) {\r\n        return _.findWhere(this.datasourceListeners, { id: id });\r\n    };\r\n\r\n    Datasources.prototype.registerDatasource = function (datasource) {\r\n        if (datasource.id != null) {\r\n            _.each(datasource.outputs, function (output, index) {\r\n                datasource.outputs[index] = util.convertListOfKeyValuesToObject(output);\r\n            });\r\n            this.datasources.push(datasource);\r\n        }\r\n    };\r\n\r\n    Datasources.prototype.getDatasources = function () {\r\n        return util.cloneData(this.datasources);\r\n    };\r\n\r\n    Datasources.prototype.getDatasourceNames = function (datasourceTypesToIgnore) {\r\n        return _.chain(this.datasources)\r\n            .filter(function (d) {\r\n                return !!d.name && (!datasourceTypesToIgnore || datasourceTypesToIgnore.indexOf(d.type) === -1);\r\n            })\r\n            .groupBy(function(d) {\r\n                return d.name;\r\n            })\r\n            .map(function (datasources, datasourceName) {\r\n                return {\r\n                    name: datasourceName,\r\n                    unique: datasources.length === 1\r\n                };\r\n            })\r\n            .sortBy(function (d) {\r\n                return d.name.toLowerCase();\r\n            })\r\n            .value();\r\n    };\r\n\r\n    Datasources.prototype.getDatasourceByName = function (dataSourceName) {\r\n    \treturn _.findWhere(this.datasources, { name: dataSourceName });\r\n    };\r\n\r\n    Datasources.prototype.getEntityTypeOfDatasource = function (dataSourceName) {\r\n        var datasource = this.getDatasourceByName(dataSourceName);\r\n        return datasource ? datasource.entityDefinitionName : null;\r\n    };\r\n\r\n    Datasources.prototype.getDatasourceOutputs = function (dataSource, keepOriginalOrder) {\r\n        if ($.type(dataSource) === 'string')\r\n    \t    dataSource = this.getDatasourceByName(dataSource);\r\n\r\n    \tif (!dataSource)\r\n            return [];\r\n\r\n        var chain = _.chain(dataSource.outputs)\r\n            .filter(function (output) {\r\n                return !output.hideField && output.alias;\r\n            })\r\n            .pluck('alias');\r\n\r\n        if (!keepOriginalOrder) {\r\n            chain = chain.sortBy(function (a) {\r\n                return a.toLowerCase();\r\n            });\r\n        }\r\n\r\n        return chain.value();\r\n    };\r\n\r\n    Datasources.prototype.updateDatasource = function (datasource) {\r\n    \tthis.unregisterDatasource(datasource);\r\n        this.registerDatasource(datasource);\r\n    };\r\n\r\n    Datasources.prototype.unregisterDatasource = function (datasource) {\r\n        this.datasources = _.filter(this.datasources, function (d) { return d.id !== datasource.id; });\r\n    };\r\n\r\n    Datasources.prototype.clear = function () {\r\n        this.datasourceListeners = [];\r\n        this.datasources = [];\r\n    };\r\n\r\n    return Datasources;\r\n});\n","define('lq/visibility/itemVisibility',[\r\n    './defaultVisibility'\r\n], function (DefaultVisibility) {\r\n    'use strict';\r\n\r\n    var ItemVisibility = function (dataRow, parent) {\r\n        this.dataRow = dataRow;\r\n        this.parent = parent;\r\n        this.default = new DefaultVisibility();\r\n    };\r\n\r\n    ItemVisibility.prototype.apply = function (drop) {\r\n        if (this.shouldGetVisibilityFromParent(drop)) {\r\n            drop.addListener('DatasourceApplied', this.updateVisibilityFromDataRow.bind(this, drop))\r\n        } else {\r\n            this.default.apply(drop);\r\n        }\r\n    };\r\n\r\n    ItemVisibility.prototype.updateVisibilityFromDataRow = function (drop) {\r\n        var isVisible = this.dataRow[drop.data.dataSourceOutputForVisibility];\r\n\r\n        if (isVisible)\r\n            drop.showWithoutAnimation();\r\n        else\r\n            drop.hideWithoutAnimation();\r\n    };\r\n\r\n    ItemVisibility.prototype.shouldGetVisibilityFromParent = function (drop) {\r\n        if (drop.data.initialVisibilityOption !== 'From Query')\r\n            return false;\r\n        return drop.data.dataSourceForVisibility === this.parent.data.dataSource || this.parent.data.useParentGroupData;\r\n    };\r\n\r\n    ItemVisibility.prototype.cleanUp = function () {\r\n        this.default.cleanUp();\r\n    };\r\n\r\n    return ItemVisibility;\r\n});\n","define('lq/queryString',[\r\n    'underscore'\r\n], function (_) {\r\n    'use strict';\r\n\r\n    var getParametersFromQueryString = function () {\r\n        if (!window.location.search) return {};\r\n\r\n        var queryString = window.location.search.substr(1).split('&');\r\n\r\n        if (!queryString) return {};\r\n\r\n        var params = {};\r\n        for (var i = 0; i < queryString.length; ++i) {\r\n            var queryStringPart = queryString[i];\r\n            var splitPosition = queryStringPart.indexOf('=');\r\n\r\n            if (splitPosition) {\r\n                var paramName = queryStringPart.substring(0, splitPosition);\r\n                var paramValue = queryStringPart.substring(splitPosition + 1);\r\n                params[paramName] = decodeURIComponent(paramValue.replace(/\\+/g, \" \"));\r\n            }\r\n        }\r\n\r\n        return params;\r\n    };\r\n\r\n    var QueryString = function (parameters) {\r\n        this.parameters = parameters;\r\n    };\r\n\r\n    QueryString.initialize = function () {\r\n        var queryString = new QueryString(getParametersFromQueryString());\r\n\r\n        window.history.pushState = new Proxy(window.history.pushState, {\r\n            apply: function (target, thisArg, argArray) {\r\n                queryString.update();\r\n                return target.apply(thisArg, argArray);\r\n            }\r\n        });\r\n\r\n        return queryString;\r\n    };\r\n\r\n    QueryString.prototype.getParameterNames = function () {\r\n        return _.keys(this.parameters);\r\n    };\r\n\r\n    QueryString.prototype.getParameters = function () {\r\n        return this.parameters;\r\n    };\r\n\r\n    QueryString.prototype.updateParameter = function (parameterName, value) {\r\n        this.parameters[parameterName] = value;\r\n    };\r\n\r\n    QueryString.prototype.getValueOf = function (parameterName) {\r\n        return this.parameters[parameterName];\r\n    };\r\n\r\n    QueryString.prototype.update = function () {\r\n        this.parameters = getParametersFromQueryString();\r\n    };\r\n\r\n    return QueryString;\r\n});\n","define('lq/runtimePiping',[\r\n    'jquery',\r\n    'lq/queryDispatcher',\r\n    'drops/action/runtimeTypesProvider',\r\n    'lq/dropFactory',\r\n    'lq/parameterShell',\r\n    'lq/parameterCollection',\r\n    'lq/runtimeBusyIndicator',\r\n    'lq/runtimeErrorHandler',\r\n    'lq/formatting',\r\n    'lq/runtimeDispatcher',\r\n    'lq/runtimeUrl',\r\n    'lq/conditions/conditions',\r\n    'lq/events/eventing',\r\n    'lq/events/eventActionFactory',\r\n    'lq/visibility/defaultVisibility',\r\n    'lq/datasources',\r\n    'lq/visibility/itemVisibility',\r\n    'lq/required',\r\n    'lq/queryString'\r\n], function ($, QueryDispatcher, runtimeTypesProvider, DropFactory, ParameterShell, ParameterCollection, RuntimeBusyIndicator, RuntimeErrorHandler, Formatting, RuntimeDispatcher, RuntimeUrl, Conditions, Eventing, EventActionFactory, DefaultVisibility, Datasources, ItemVisibility, Required, QueryString) {\r\n    'use strict';\r\n    \r\n    var RuntimePiping = function () {\r\n    };\r\n\r\n    RuntimePiping.createRoot = function (globalParameters, application, $app) {\r\n        var piping = new RuntimePiping();\r\n        piping.$app = $app;\r\n        piping.$modals = $app;\r\n        piping.application = application;\r\n        piping.busyIndicator = new RuntimeBusyIndicator($app);\r\n        piping.errorHandler = new RuntimeErrorHandler(piping.busyIndicator, application, $app);\r\n        piping.parameters = new ParameterShell(\r\n            new ParameterCollection(),\r\n            new ParameterCollection(globalParameters),\r\n            new ParameterCollection()\r\n        );\r\n        piping.formatting = new Formatting(application.formatting, application.languageISOCode\r\n            || navigator.userLanguage\r\n            || navigator.language);\r\n        piping.queryString = QueryString.initialize();\r\n        piping.url = new RuntimeUrl(piping.queryString);\r\n        return piping;\r\n    };\r\n\r\n    RuntimePiping.prototype.createChildPiping = function (actionData, actionDrop, localParameters, systemParameters, $wrapper, $view, isReloaded) {\r\n        var piping = new RuntimePiping();\r\n\r\n        $.extend(piping, this);\r\n\r\n        piping.$actionWrapper = $wrapper;\r\n        piping.$actionView = $view;\r\n        piping.dispatcher = new RuntimeDispatcher(piping.busyIndicator, actionData.actionVersion, actionData.masterPageVersion);\r\n        piping.actionId = actionData.id;\r\n        piping.actionInstanceId = actionData.instanceId;\r\n        piping.masterPageId = actionData.view.data.masterPageId;\r\n        piping.embeddable = actionData.view.data.embeddable;\r\n        piping.dropFactory = new DropFactory(runtimeTypesProvider, true);\r\n        piping.parameters = this.parameters.fork(localParameters, systemParameters);\r\n        piping.conditions = new Conditions(actionData.conditions, piping);\r\n        piping.eventing = new Eventing(actionData.events, piping, new EventActionFactory(actionDrop), isReloaded);\r\n        piping.datasources = new Datasources();\r\n        piping.visibility = new DefaultVisibility();\r\n        piping.required = new Required();\r\n        piping.queryDispatcher = new QueryDispatcher(piping);\r\n\r\n        return piping;\r\n    };\r\n\r\n    RuntimePiping.prototype.fork = function (data, parentDrop, idOutput) {\r\n        var childParameters = this.parameters.createChildScope(data);\r\n        var childPiping = new RuntimePiping();\r\n        var childQueryDispatcher = new QueryDispatcher(childPiping);\r\n\r\n        return $.extend(\r\n            childPiping,\r\n            this,\r\n            {\r\n                visibility: new ItemVisibility(data, parentDrop),\r\n                parameters: childParameters,\r\n                queryDispatcher: childQueryDispatcher,\r\n                idOfItem: data[idOutput]\r\n            });\r\n    };\r\n\r\n    RuntimePiping.prototype.cleanUp = function () {\r\n        this.visibility.cleanUp();\r\n    };\r\n\r\n    return RuntimePiping;\r\n});\n","define('lq/navigatorMpa',[\r\n    'lq',\r\n    './navigationHistory'\r\n], function (lq, NavigationHistory) {\r\n    'use strict';\r\n    \r\n    var NavigatorMpa = function (url, friendlyNames) {\r\n        this.url = url;\r\n        this.friendlyNames = friendlyNames;\r\n        this.history = NavigationHistory.withLocalStorage('mpa');\r\n    };\r\n\r\n    NavigatorMpa.prototype.openAction = function (actionId, globals, locals, openBlank) {\r\n        this.history.push(window.location.href);\r\n\r\n        var route = this.friendlyNames[actionId];\r\n\r\n        if (!route)\r\n            route = 'LicquidAction/Get/' + actionId;\r\n\r\n        var parameters = {};\r\n        if (_.keys(globals).length)\r\n            parameters.globals = JSON.stringify(globals);\r\n        if (_.keys(locals).length)\r\n            parameters.parameters = JSON.stringify(locals);\r\n\r\n        var targetUrl = this.url.prepare(lq.getTenantUrl(route), parameters);\r\n        this.url.openUrl(targetUrl, openBlank);\r\n    };\r\n\r\n    NavigatorMpa.prototype.goToPrevious = function (globals, locals) {\r\n        var previousUrl = this.history.pop();\r\n        if (!previousUrl) return;\r\n        \r\n        var parameters = {\r\n\r\n            globals: globals\r\n                ? JSON.stringify(globals)\r\n                : undefined,\r\n\r\n            parameters: locals\r\n                ? JSON.stringify(locals)\r\n                : undefined\r\n\r\n        };\r\n        var targetUrl = this.url.prepare(previousUrl, parameters);\r\n        this.url.openUrl(targetUrl, false);\r\n    };\r\n\r\n    return NavigatorMpa;\r\n});\n","define('lq/services/mpa/pasteCommand',[\r\n    'jquery',\r\n    'underscore'\r\n], function ($, _) {\r\n    'use strict';\r\n\r\n    var filePastedEvent = 'filePasted';\r\n    var textPastedEvent = 'textPasted';\r\n\r\n    function PasteCommand(data) {\r\n        this.data = data;\r\n    };\r\n\r\n    PasteCommand.typeName = 'PasteCommand';\r\n\r\n    PasteCommand.prototype.initialize = function () {\r\n        if (!this.shouldListenForPaste()) return;\r\n        this.addEventHandlers();\r\n    };\r\n\r\n    PasteCommand.prototype.shouldListenForPaste = function () {\r\n        return this.shouldListenFor(filePastedEvent) || this.shouldListenFor(textPastedEvent);\r\n    };\r\n\r\n    PasteCommand.prototype.shouldListenFor = function (eventName) {\r\n        return this.data.eventing\r\n            && this.data.eventing[eventName]\r\n            && this.data.eventing[eventName].enabled;\r\n    };\r\n\r\n    PasteCommand.prototype.addEventHandlers = function () {\r\n        var self = this;\r\n\r\n        document.onpaste = function (event) {\r\n            var items = (event.clipboardData || event.originalEvent.clipboardData).items;\r\n\r\n            var image = _.find(items, function (item) { return item.kind === 'file'; });\r\n\r\n            if (image) {\r\n                if (self.shouldListenFor(filePastedEvent))\r\n                    self.piping.eventing.publish(self.data.eventing[filePastedEvent].raisedEventName, null, image.getAsFile(), null, self.eventActionId);\r\n            } else if (self.shouldListenFor(textPastedEvent)) {\r\n                var text = _.find(items, function (item) { return item.kind === 'string'; });\r\n\r\n                if (text) {\r\n                    text.getAsString(function (textData) {\r\n                        self.piping.eventing.publish(self.data.eventing[textPastedEvent].raisedEventName, null, textData, null, self.eventActionId);\r\n                    });\r\n                } \r\n            }\r\n        }\r\n    }\r\n\r\n    return PasteCommand;\r\n});\n","define('lq/services/mpa/applicationValidation',[\r\n    'module',\r\n    'lq',\r\n    'lq/frontendModules',\r\n    'lq/cssutil',\r\n    'lq/validatorGateway',\r\n], function (module, lq, FrontendModules, cssutil, validatorGateway) {\r\n    'use strict';\r\n\r\n    var config = module.config();\r\n\r\n    var delta = 500;\r\n    var numberToTrigger = 3;\r\n\r\n    function ApplicationValidation(annotations) {\r\n        this.annotations = annotations;\r\n        this.presses = 0;\r\n    };\r\n\r\n    ApplicationValidation.typeName = 'ApplicationValidation';\r\n\r\n    ApplicationValidation.prototype.initialize = function () {\r\n        if (this.annotations.isProductionModeEnabled) {\r\n            this.handler = this.handleKeyUp.bind(this);\r\n            $(document).on('keyup', this.handler);\r\n        }\r\n    };\r\n\r\n    ApplicationValidation.prototype.handleKeyUp = function (event) {\r\n        if (event.keyCode !== 27)\r\n            return;\r\n\r\n        var keyPressTime = new Date();\r\n\r\n        if (this.previousKeyPressTime && keyPressTime - this.previousKeyPressTime > delta) {\r\n            this.presses = 1;\r\n            this.previousKeyPressTime = keyPressTime;\r\n        } else if (this.presses === numberToTrigger - 1) {\r\n            this.presses = 0;\r\n            this.previousKeyPressTime = null;\r\n            this.loadValidator();\r\n            $(document).off('keyup', this.handler);\r\n        } else {\r\n            this.presses++;\r\n            this.previousKeyPressTime = keyPressTime;\r\n        }\r\n    };\r\n\r\n    ApplicationValidation.prototype.loadValidator = function () {\r\n        cssutil.requireCss(config.cssFile);\r\n        \r\n        var self = this;\r\n        require(['lq/licquidRuntimeValidationLegacy'], function() {\r\n            FrontendModules.load('validator', true)\r\n                .then(function (Validator) {\r\n                    self.start(Validator);\r\n                });\r\n        });\r\n    };\r\n\r\n    ApplicationValidation.prototype.start = function (Validator) {\r\n        var validatorConfig = {\r\n            loginUrl: '/Licquid.Designer/Account/Validator',\r\n            frontEndUrl: lq.getFrontEndUrl(''),\r\n            designUrl: lq.getDesignerUrl(''),\r\n            portalUrl: lq.getPortalUrl(''),\r\n        };\r\n\r\n        Validator.default(validatorConfig, document.getElementById(\"licquid-validator\"));\r\n\r\n        validatorGateway.callCallbacks();\r\n    };\r\n\r\n    return ApplicationValidation;\r\n});\n","define('lq/runtimeClone',[\r\n    'jquery',\r\n    'underscore'\r\n], function ($, _) {\r\n    'use strict';\r\n\r\n    var prepare = function (parent) {\r\n        _.forEach(parent.pool, function (drop) {\r\n            if (drop.data.id) {\r\n                if (!drop.$element.hasClass('runtime-selectable'))\r\n                    drop.$element.addClass('runtime-selectable runtime-drop-' + drop.data.id);\r\n            }\r\n\r\n            prepare(drop);\r\n        });\r\n    };\r\n\r\n    var RuntimeClone = function (options) {\r\n        this.options = options;\r\n        this.onClicked = this.select.bind(this);\r\n        this.$container = null;\r\n    };\r\n\r\n    RuntimeClone.prototype.create = function () {\r\n        prepare(this.options.action);\r\n\r\n        var $masterPageClone = this.options.action.$masterPage\r\n            .clone()\r\n            .addClass('runtime-clone');\r\n        var $actionClone = this.options.action.$element\r\n            .clone()\r\n            .addClass('runtime-clone');\r\n        var $topBar = $('<div />')\r\n            .css({\r\n                position: 'fixed',\r\n                top: 0,\r\n                padding: '0.5rem 2rem',\r\n                zIndex: 999999999,\r\n                backgroundColor: '#4ECCFF',\r\n                color: 'white',\r\n                margin: '0 auto',\r\n                left: 0,\r\n                right: 0,\r\n                width: '300px',\r\n                textAlign: 'center',\r\n                borderRadius: '0 0 0.5rem 0.5rem'\r\n            })\r\n            .append($('<span />').text('Select an element or '))\r\n            .append($('<span />').text('[ cancel ]').addClass('clickable').on('click', this.cancel.bind(this)));\r\n        this.$container = $('<div />')\r\n            .append($masterPageClone)\r\n            .append($actionClone)\r\n            .append($topBar)\r\n            .css({\r\n                position: 'absolute',\r\n                top: 0,\r\n                left: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                zIndex: 999999999,\r\n                backgroundColor: 'white',\r\n                overflowY: 'auto'\r\n            })\r\n            .appendTo($('body'));\r\n\r\n        $('body')\r\n            .addClass('runtime-clone-body');\r\n\r\n        $(document).on('click', this.onClicked);\r\n    };\r\n\r\n    RuntimeClone.prototype.cancel = function () {\r\n        this.options.onCancel();\r\n    };\r\n\r\n    RuntimeClone.prototype.select = function (e) {\r\n        var $closest = $(e.target).closest('.runtime-selectable');\r\n        if ($closest.length === 0)\r\n            return;\r\n\r\n        var classes = $closest.attr('class').split(' ');\r\n        var idClassName = _.find(classes, function (className) {\r\n            return className.indexOf('runtime-drop-') === 0;\r\n        });\r\n        var morphId = idClassName.substring('runtime-drop-'.length);\r\n\r\n        var $pool = $(e.target).closest('.licquid-drops-pool');\r\n        var actionData = this.options.action.data;\r\n        var rootMorphId = $pool.length > 0\r\n            ? actionData.id\r\n            : actionData.masterPageId;\r\n\r\n        this.options.onSelect(rootMorphId, morphId);\r\n    };\r\n    \r\n    RuntimeClone.prototype.destroy = function () {\r\n        this.$container.remove();\r\n        this.$container = null;\r\n\r\n        $('body').removeClass('runtime-clone-body');\r\n        $(document).off('click', this.onClicked);\r\n    };\r\n\r\n    return RuntimeClone;\r\n});\n","define('lq/runtimeDropPicker',[\r\n    'when',\r\n    './runtimeClone'\r\n], function (when, RuntimeClone) {\r\n    'use strict';\r\n\r\n    var RuntimeDropPicker = function (action) {\r\n        this.action = action;\r\n        this.clone = null;\r\n    };\r\n\r\n    RuntimeDropPicker.prototype.canPick = function () {\r\n        return !this.clone;\r\n    };\r\n\r\n    RuntimeDropPicker.prototype.pick = function () {\r\n        return when.promise(this.createClone.bind(this));\r\n    };\r\n\r\n    RuntimeDropPicker.prototype.createClone = function (resolve) {\r\n        var self = this;\r\n        this.clone = new RuntimeClone({\r\n            action: this.action,\r\n            onSelect: function (rootMorphId, morphId) {\r\n                resolve({\r\n                    rootMorphId: rootMorphId,\r\n                    morphId: morphId\r\n                });\r\n                self.destroyClone();\r\n            },\r\n            onCancel: function () {\r\n                resolve(null);\r\n                self.destroyClone();\r\n            }\r\n        });\r\n        this.clone.create();    \r\n    };\r\n\r\n    RuntimeDropPicker.prototype.destroyClone = function () {\r\n        this.clone.destroy();\r\n        this.clone = null;\r\n    };\r\n\r\n    return RuntimeDropPicker;\r\n});\n","define('lq/services/mpa/issueTracking',[\r\n    'lq/runtimeDropPicker'\r\n], function (RuntimeDropPicker) {\r\n    'use strict';\r\n    \r\n    var shortCutKey = 16; // Shift\r\n    var delta = 500;\r\n\r\n    function IssueTracking(annotations) {\r\n        this.configuration = annotations.data;\r\n        this.previousKeyPressTime = null;\r\n        this.presses = 0;\r\n        this.picking = false;\r\n    };\r\n\r\n    IssueTracking.typeName = 'IssueTracking';\r\n\r\n    IssueTracking.prototype.initialize = function () {\r\n        $(document).on('keyup', this.handleKeyUp.bind(this));\r\n    };\r\n\r\n    IssueTracking.prototype.handleKeyUp = function (event) {\r\n        if (event.keyCode !== shortCutKey || this.picking)\r\n            return;\r\n\r\n        var keyPressTime = new Date();\r\n\r\n        if (this.previousKeyPressTime && keyPressTime - this.previousKeyPressTime > delta) {\r\n            this.presses = 1;\r\n            this.previousKeyPressTime = keyPressTime;\r\n        } else if (this.presses === 2) {\r\n            this.presses = 0;\r\n            this.previousKeyPressTime = null;\r\n            this.picking = true;\r\n\r\n            new RuntimeDropPicker(this.rootDrop).pick()\r\n                .done(this.handleSelection.bind(this));\r\n        } else {\r\n            this.presses++;\r\n            this.previousKeyPressTime = keyPressTime;\r\n        }\r\n    };\r\n\r\n    IssueTracking.prototype.handleSelection = function (selection) {\r\n        this.picking = false;\r\n\r\n        if (selection) {\r\n            var url = this.configuration.createUrl + '?' + $.param({\r\n                morphId: selection.morphId,\r\n                rootMorphId: selection.rootMorphId,\r\n                identifier: this.configuration.identifier\r\n            });\r\n            window.open(url);\r\n        }\r\n    };\r\n\r\n    return IssueTracking;\r\n});\n","define('lq/pullDownAction',[\"jquery\"], function ($) {\r\n    var getTouches = function (e) {\r\n        return e.touches ||             // browser API\r\n            e.originalEvent.touches; // jQuery\r\n    };\r\n\r\n    return {\r\n        attach: function ($app, $wrapper, callback) {\r\n\r\n            var startY = null;\r\n            var shouldRefresh = false;\r\n            var thresholdDistance = 150;\r\n            var touchId = -1;\r\n            var translateLength = 0;\r\n\r\n            var $pullDownContainer = $(\"<div id='pull-down-container'></div>\");\r\n\r\n            var $pullDownIndicator = $(`<img id='pull-down-indicator' src=${require.toUrl(\"../Lq/pullDownAction.svg?bust=00001\")}/>`)\r\n                .appendTo($pullDownContainer);\r\n\r\n            $app.append($pullDownContainer);\r\n\r\n            $(document.documentElement).addClass('no-native-pull-down');\r\n            $(document.body).addClass('no-native-pull-down');\r\n\r\n            var handleTouchStart = function (e) {\r\n                if (touchId > -1 || $wrapper.scrollTop() !== 0) return;\r\n\r\n                var touch = getTouches(e)[0];\r\n                startY = touch.screenY;\r\n\r\n                touchId = touch.identifier;\r\n            };\r\n\r\n            var handleTouchMove = function (e) {\r\n                if (!startY) {\r\n                    return;\r\n                }\r\n\r\n                var touch = Array.from(e.changedTouches).find(function (t) { return t.identifier === touchId; });\r\n                if (!touch) return;\r\n\r\n                var distance = getTouches(e)[0].screenY - startY;\r\n                shouldRefresh = distance >= thresholdDistance;\r\n\r\n                if (distance > 0) {\r\n                    translateLength = Math.min(distance, 120);\r\n\r\n                    requestAnimationFrame(function () {\r\n                        $app[0].style.overflow = 'hidden';\r\n                        $app[0].style.webkitOverflowScrolling = 'touch';\r\n\r\n                        $pullDownIndicator.css({\r\n                            top: `${translateLength}px`,\r\n                            transition: 'top 0.3s linear',\r\n                            transform: `rotate(${translateLength * 3}deg)`\r\n                        });\r\n                    });\r\n                }\r\n            };\r\n\r\n            var handleTouchEnd = function (e) {\r\n                var touch = Array.from(e.changedTouches).find(function (t) { return t.identifier === touchId; });\r\n                if (!touch) return;\r\n\r\n                $app[0].style.overflowY = 'auto'\r\n                touchId = -1;\r\n\r\n                if (shouldRefresh) {\r\n                    callback();\r\n                    shouldRefresh = false\r\n                }\r\n\r\n                $app[0].style.overflow = 'hidden';\r\n                $app[0].style.webkitOverflowScrolling = 'touch';\r\n\r\n                $pullDownIndicator.css({\r\n                    top: '-48px',\r\n                    transition: 'top 0.1s linear'\r\n                });\r\n\r\n                $app[0].style.overflow = 'visible';\r\n\r\n                removeEventListener('touchmove', handleTouchMove);\r\n                removeEventListener('touchend', handleTouchEnd);\r\n            };\r\n\r\n            document.addEventListener('touchstart', handleTouchStart);\r\n            document.addEventListener('touchmove', handleTouchMove);\r\n            document.addEventListener('touchend', handleTouchEnd);\r\n        }\r\n    }\r\n});\r\n\n","define('lq/services/mpa/pullDownEvents',[\r\n    'lq/pullDownAction'\r\n], function (pullDownAction) {\r\n    'use strict';\r\n\r\n    function PullDownEvents() {\r\n    };\r\n\r\n    PullDownEvents.typeName = 'PullDownEvents';\r\n\r\n    PullDownEvents.prototype.initialize = function () {\r\n        if (window !== window.parent) return;\r\n\r\n        var action = this.rootDrop;\r\n        pullDownAction.attach(this.piping.$app, this.piping.$actionWrapper, function () {\r\n            if (action.isEventEnabled('pullDown')) {\r\n                action.triggerEventIfEnabled('pullDown');\r\n            } else {\r\n                window.location.reload();\r\n            }\r\n        });\r\n    };\r\n\r\n    return PullDownEvents;\r\n});\n","define('lq/services/mpa/serviceFactory',[\r\n    'lq/typesProvider',\r\n\r\n    './pasteCommand',\r\n    './applicationValidation',\r\n    './issueTracking',\r\n    './pullDownEvents',\r\n    './addToHomeScreenCommand'\r\n], function (TypesProvider) {\r\n    'use strict';\r\n\r\n    var servicesTypes = Array.prototype.slice.call(arguments, 1);\r\n    var typesProvider = new TypesProvider(servicesTypes);\r\n\r\n    var createService = function (service, rootDrop) {\r\n        var ServiceType = typesProvider.get(service.serviceType);\r\n        var instance = new ServiceType(service.data);\r\n        instance.rootDrop = rootDrop;\r\n        instance.piping = rootDrop.piping;\r\n        return instance;\r\n    };\r\n\r\n    return {\r\n        createService: createService\r\n    };\r\n});\n","define('lq/javascript/polyfill',[], function () {\r\n\r\n    // source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FArray%2FindexOf#Compatibility\r\n    if (!Array.prototype.indexOf) {\r\n        Array.prototype.indexOf = function (searchElement, fromIndex) {\r\n            var i,\r\n                pivot = (fromIndex) ? fromIndex : 0,\r\n                length;\r\n\r\n            if (!this) {\r\n                throw new TypeError();\r\n            }\r\n\r\n            length = this.length;\r\n\r\n            if (length === 0 || pivot >= length) {\r\n                return -1;\r\n            }\r\n\r\n            if (pivot < 0) {\r\n                pivot = length - Math.abs(pivot);\r\n            }\r\n\r\n            for (i = pivot; i < length; i++) {\r\n                if (this[i] === searchElement) {\r\n                    return i;\r\n                }\r\n            }\r\n            return -1;\r\n        };\r\n    }\r\n\r\n    // From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys\r\n    if (!Object.keys) {\r\n        Object.keys = (function () {\r\n            'use strict';\r\n            var hasOwnProperty = Object.prototype.hasOwnProperty,\r\n                hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString'),\r\n                dontEnums = [\r\n                  'toString',\r\n                  'toLocaleString',\r\n                  'valueOf',\r\n                  'hasOwnProperty',\r\n                  'isPrototypeOf',\r\n                  'propertyIsEnumerable',\r\n                  'constructor'\r\n                ],\r\n                dontEnumsLength = dontEnums.length;\r\n\r\n            return function (obj) {\r\n                if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {\r\n                    throw new TypeError('Object.keys called on non-object');\r\n                }\r\n\r\n                var result = [], prop, i;\r\n\r\n                for (prop in obj) {\r\n                    if (hasOwnProperty.call(obj, prop)) {\r\n                        result.push(prop);\r\n                    }\r\n                }\r\n\r\n                if (hasDontEnumBug) {\r\n                    for (i = 0; i < dontEnumsLength; i++) {\r\n                        if (hasOwnProperty.call(obj, dontEnums[i])) {\r\n                            result.push(dontEnums[i]);\r\n                        }\r\n                    }\r\n                }\r\n                return result;\r\n            };\r\n        }());\r\n    }\r\n\r\n    // textContent support based on innerText for IE8\r\n    // from: https://gist.github.com/joshrhoades/8874249\r\n    if (Object.defineProperty && Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(Element.prototype, \"textContent\") && !Object.getOwnPropertyDescriptor(Element.prototype, \"textContent\").get) {\r\n        (function () {\r\n            var innerText = Object.getOwnPropertyDescriptor(Element.prototype, \"innerText\");\r\n            Object.defineProperty(Element.prototype, \"textContent\",\r\n                {\r\n                    get: function () {\r\n                        return innerText.get.call(this);\r\n                    },\r\n                    set: function (s) {\r\n                        return innerText.set.call(this, s);\r\n                    }\r\n                }\r\n            );\r\n        })();\r\n    }\r\n\r\n    // CustomEvent for IE\r\n    // from: https://stackoverflow.com/questions/26596123/internet-explorer-9-10-11-event-constructor-doesnt-work\r\n    if ( typeof window.CustomEvent !== \"function\" ) {\r\n        function CustomEvent ( event, params ) {\r\n            params = params || { bubbles: false, cancelable: false, detail: undefined };\r\n            var evt = document.createEvent( 'CustomEvent' );\r\n            evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );\r\n            return evt;\r\n        }\r\n        CustomEvent.prototype = window.Event.prototype;\r\n        window.CustomEvent = CustomEvent;\r\n    }\r\n\r\n\t/*\r\n\t * Pointer Events Polyfill: Adds support for the style attribute \"pointer-events: none\" to browsers without this feature (namely, IE).\r\n\t * (c) 2013, Kent Mewhort, licensed under BSD.\r\n\t */\r\n\r\n\t/* @license\r\n\t * BSD License for Pointer Events Polyfill (http://github.com/kmewhort/pointer_events_polyfill)\r\n\t *\r\n\t * Copyright (c) 2013, Kent Mewhort\r\n\t * All rights reserved.\r\n\t *\r\n\t * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the\r\n\t * following conditions are met:\r\n\t *\r\n\t *     Redistributions of source code must retain the above copyright notice, this list of conditions and the following\r\n\t *     disclaimer.\r\n\t *     Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following\r\n\t *     disclaimer in the documentation and/or other materials provided with the distribution.\r\n\t *\r\n\t * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\r\n\t * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r\n\t * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n\t * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r\n\t * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r\n\t * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\r\n\t * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n\t */\r\n\r\n\t// constructor\r\n    function PointerEventsPolyfill(options) {\r\n    \t// set defaults\r\n    \tthis.options = {\r\n    \t\tselector: '*',\r\n    \t\tmouseEvents: ['click', 'dblclick', 'mousedown', 'mouseup'],\r\n    \t\tusePolyfillIf: function () {\r\n    \t\t\tif (navigator.appName == 'Microsoft Internet Explorer') {\r\n    \t\t\t\tvar agent = navigator.userAgent;\r\n    \t\t\t\tif (agent.match(/MSIE ([0-9]{1,}[\\.0-9]{0,})/) != null) {\r\n    \t\t\t\t\tvar version = parseFloat(RegExp.$1);\r\n    \t\t\t\t\tif (version < 11)\r\n    \t\t\t\t\t\treturn true;\r\n    \t\t\t\t}\r\n    \t\t\t}\r\n    \t\t\treturn false;\r\n    \t\t}\r\n    \t};\r\n    \tif (options) {\r\n    \t\tvar obj = this;\r\n    \t\t$.each(options, function (k, v) {\r\n    \t\t\tobj.options[k] = v;\r\n    \t\t});\r\n    \t}\r\n\r\n    \tif (this.options.usePolyfillIf())\r\n    \t\tthis.register_mouse_events();\r\n    }\r\n\r\n\t// singleton initializer\r\n    PointerEventsPolyfill.initialize = function (options) {\r\n    \tif (PointerEventsPolyfill.singleton == null)\r\n    \t\tPointerEventsPolyfill.singleton = new PointerEventsPolyfill(options);\r\n    \treturn PointerEventsPolyfill.singleton;\r\n    };\r\n\r\n\t// handle mouse events w/ support for pointer-events: none\r\n    PointerEventsPolyfill.prototype.register_mouse_events = function () {\r\n    \t// register on all elements (and all future elements) matching the selector\r\n    \t$(document).on(this.options.mouseEvents.join(\" \"), this.options.selector, function (e) {\r\n    \t\tif (this != e.target)\r\n    \t\t\treturn;\r\n    \t\tif ($(e.target).css('pointer-events') == 'none') {\r\n    \t\t\t// peak at the element below\r\n    \t\t\tvar origDisplayAttribute = $(this).css('display');\r\n    \t\t\t$(this).css('display', 'none');\r\n\r\n    \t\t\tvar underneathElem = document.elementFromPoint(e.clientX, e.clientY);\r\n\r\n    \t\t\tif (origDisplayAttribute)\r\n    \t\t\t\t$(this)\r\n\t\t\t\t\t\t.css('display', origDisplayAttribute);\r\n    \t\t\telse\r\n    \t\t\t\t$(this).css('display', '');\r\n\r\n    \t\t\t// fire the mouse event on the element below\r\n    \t\t\te.target = underneathElem;\r\n    \t\t\t$(underneathElem).trigger(e);\r\n\r\n    \t\t\treturn false;\r\n    \t\t}\r\n    \t\treturn true;\r\n    \t});\r\n    };\r\n\r\n    window.PointerEventsPolyfill = PointerEventsPolyfill;\r\n\r\n});\n","define('lq/licquidRuntimeMpa',[\r\n    'underscore',\r\n    'drops/action/action',\r\n    'lq/runtimePiping',\r\n    'lq/style',\r\n    'lq/windowSize',\r\n    'lq/navigatorMpa',\r\n    'lq/responsive',\r\n    'lq/layouting',\r\n    'lq/services/mpa/serviceFactory',\r\n    'lq/validatorGateway',\r\n    'lq/javascript/polyfill',\r\n], function (_, Action, RuntimePiping, Style, windowSize, NavigatorMpa, responsive, layouting, serviceFactory, validatorGateway) {\r\n\r\n    var inIframe = function() {\r\n        return window !== window.parent;\r\n    };\r\n\r\n    var LicquidRuntimeMpa = function () {\r\n        if (window.cordova) {\r\n            document.addEventListener('deviceready', function () {\r\n                if (window.universalLinks) {\r\n                    window.universalLinks.subscribe(null, function (eventData) {\r\n                        window.location = eventData.url;\r\n                    });\r\n                }\r\n            }, false);\r\n        }\r\n    };\r\n    \r\n    LicquidRuntimeMpa.prototype.start = function (setup) {\r\n        Style.defaultStyles = setup.application.styles.defaultStyles;\r\n        Style.defaultMockStyles = setup.application.styles.defaultMockStyles;\r\n        Style.mockMode = setup.isInMockMode;\r\n\r\n        var $app = setup.$el;\r\n        var $wrapper = $('<div class=\"licquid-action-wrapper\" />')\r\n            .appendTo($app);\r\n        var $view = $('<div class=\"licquid-action-view\" />')\r\n            .appendTo($wrapper);\r\n\r\n        this.globalPiping = RuntimePiping.createRoot(setup.parameters.globals, setup.application, $app);\r\n        this.globalPiping.navigator = new NavigatorMpa(this.globalPiping.url, setup.friendlyNames);\r\n        this.globalPiping.errorHandler.addListener(this.handleError.bind(this));\r\n        \r\n        var action = new Action(setup.action.view, setup.application.options);\r\n        action.backgroundDrops = setup.action.backgroundDrops;\r\n        action.allLayouts = setup.action.allLayouts;\r\n        action.defaultLayout = setup.action.defaultLayout;\r\n        action.piping = this.globalPiping.createChildPiping(setup.action, action, setup.parameters.locals, setup.parameters.system, $wrapper, $view, window.performance.navigation.type == window.performance.navigation.TYPE_RELOAD);\r\n\r\n        var self = this;\r\n\r\n        if (validatorGateway.isEnabled()) {\r\n            validatorGateway.publishEvent({\r\n                type: 'LICQUID_RUNTIME_LOADED',\r\n                globalPiping: this.globalPiping\r\n            });\r\n        } else {\r\n            validatorGateway.whenEnabled(function () {\r\n                validatorGateway.publishEvent({\r\n                    type: 'LICQUID_RUNTIME_LOADED',\r\n                    globalPiping: self.globalPiping\r\n                });\r\n\r\n                if (self.action !== null) {\r\n                    validatorGateway.registerListener(self.action.instanceId, self.receiveMessage.bind(self));\r\n\r\n                    validatorGateway.publishEvent({\r\n                        type: 'ACTION_INSTANCE_LOADED',\r\n                        action: self.action,\r\n                        canReload: false\r\n                    });\r\n                }\r\n            });\r\n        }\r\n\r\n        action.services = _.map(setup.application.services.concat(setup.action.services), function (service) {\r\n            return serviceFactory.createService(service, action);\r\n        });\r\n\r\n        var layout = responsive.getCurrentLayout(action);\r\n        layouting.applyLayout($view, layout);\r\n        action.applyLayout(layout);\r\n\r\n        if (action.shouldUseWidthOfLayout()) {\r\n            action.data.size.x = layout.resolutionX;\r\n        }\r\n\r\n        // note: only the top level action should update the viewport\r\n        action.createAndRenderDrops($('#viewport'));\r\n        \r\n        if (setup.application.embedded) {\r\n            window.parent.postMessage(JSON.stringify({\r\n                eventName: 'LicquidLoaded'\r\n            }), '*');\r\n        }\r\n        \r\n        if (validatorGateway.isEnabled()) {\r\n            validatorGateway.registerListener(action.instanceId.toString(), this.receiveMessage.bind(this));\r\n\r\n            validatorGateway.publishEvent({\r\n                type: 'ACTION_INSTANCE_LOADED',\r\n                action: action,\r\n                canReload: false\r\n            });\r\n        }\r\n\r\n        if (inIframe()) {\r\n            window.parent.postMessage(JSON.stringify({\r\n                eventName: 'EmbeddedActionLoaded',\r\n                sizeX: action.data.size.x,\r\n                sizeY: action.data.size.y\r\n            }), window.location.protocol + '//' + window.location.host);\r\n            \r\n            var receiveMessage = function (e) {\r\n                if (e.source !== window.parent)\r\n                    return;\r\n                try {\r\n                    var eventObj = JSON.parse(e.data);\r\n                    if (!eventObj.eventName)\r\n                        return;\r\n                    action.triggerEvent(eventObj.eventName, eventObj.args[0]);\r\n                } catch (err) {\r\n                    //could not parse, ignore it\r\n                }\r\n            };\r\n\r\n            window.addEventListener(\"message\", receiveMessage, false);\r\n        }\r\n\r\n        windowSize.withOnChanged(function () {\r\n            action.resize();\r\n        });\r\n\r\n        this.action = action;\r\n    };\r\n\r\n    LicquidRuntimeMpa.prototype.receiveMessage = function (message) {\r\n        switch (message.type) {\r\n\r\n            case 'RELOAD_ACTION_INSTANCE':\r\n                this.openNewAction(this.action.data.id, this.action.globals, this.action.locals, { ignoreHistory: true });\r\n                break;\r\n\r\n            case 'HIGHLIGHT_ACTION_INSTANCE':\r\n                highlighter.highlight(this.$wrapper);\r\n                break;\r\n\r\n        }\r\n    };\r\n\r\n    LicquidRuntimeMpa.prototype.handleError = function (errorArgs) {\r\n        if (this.action) this.action.error(errorArgs);\r\n    };\r\n\r\n    return LicquidRuntimeMpa;\r\n});\n","/** @license\r\n * RequireJS plugin for async dependency load like JSONP and Google Maps\r\n * Author: Miller Medeiros\r\n * Version: 0.1.2 (2014/02/24)\r\n * Released under the MIT license\r\n */\r\ndefine('async',[],function () {\r\n\r\n    var DEFAULT_PARAM_NAME = 'callback',\r\n        _uid = 0;\r\n\r\n    function injectScript(src) {\r\n        var s, t;\r\n        s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = src;\r\n        t = document.getElementsByTagName('script')[0]; t.parentNode.insertBefore(s, t);\r\n    }\r\n\r\n    function formatUrl(name, id) {\r\n        var paramRegex = /!(.+)/,\r\n            url = name.replace(paramRegex, ''),\r\n            param = (paramRegex.test(name)) ? name.replace(/.+!/, '') : DEFAULT_PARAM_NAME;\r\n        url += (url.indexOf('?') < 0) ? '?' : '&';\r\n        return url + param + '=' + id;\r\n    }\r\n\r\n    function uid() {\r\n        _uid += 1;\r\n        return '__async_req_' + _uid + '__';\r\n    }\r\n\r\n    return {\r\n        load: function (name, req, onLoad, config) {\r\n            if (config.isBuild) {\r\n                onLoad(null); //avoid errors on the optimizer\r\n            } else {\r\n                var id = uid();\r\n                //create a global variable that stores onLoad so callback\r\n                //function can define new module after async load\r\n                window[id] = onLoad;\r\n                injectScript(formatUrl(req.toUrl(name), id));\r\n            }\r\n        }\r\n    };\r\n});\n","define('lq/services/application/applicationValidation',[\r\n    'module',\r\n    'lq',\r\n    'lq/frontendModules',\r\n    'lq/cssutil',\r\n    'lq/validatorGateway',\r\n], function (module, lq, FrontendModules, cssutil, validatorGateway) {\r\n    'use strict';\r\n    \r\n    var config = module.config();\r\n    \r\n    var delta = 500;\r\n    var numberToTrigger = 3;\r\n\r\n    function ApplicationValidation(annotations) {\r\n        this.annotations = annotations;\r\n        this.presses = 0;\r\n    };\r\n\r\n    ApplicationValidation.typeName = 'ApplicationValidation';\r\n\r\n    ApplicationValidation.prototype.initialize = function () {\r\n        var self = this;\r\n        if (this.annotations.isProductionModeEnabled) {\r\n            this.handler = this.handleKeyUp.bind(this);\r\n            $(document).on('keyup', this.handler);\r\n        }\r\n        window.addEventListener('message', function (message) {\r\n            if (message.data && message.data.type === \"LOAD_VALIDATOR\") self.loadValidator()\r\n            return;\r\n        });\r\n    };\r\n\r\n    ApplicationValidation.prototype.handleKeyUp = function (event) {\r\n        if (event.keyCode !== 27)\r\n            return;\r\n\r\n        var keyPressTime = new Date();\r\n\r\n        if (this.previousKeyPressTime && keyPressTime - this.previousKeyPressTime > delta) {\r\n            this.presses = 1;\r\n            this.previousKeyPressTime = keyPressTime;\r\n        } else if (this.presses === numberToTrigger - 1) {\r\n            this.presses = 0;\r\n            this.previousKeyPressTime = null;\r\n            this.loadValidator();\r\n            $(document).off('keyup', this.handler);\r\n        } else {\r\n            this.presses++;\r\n            this.previousKeyPressTime = keyPressTime;\r\n        }\r\n    };\r\n\r\n    ApplicationValidation.prototype.loadValidator = function () {\r\n        cssutil.requireCss(config.cssFile);\r\n        \r\n        var self = this;\r\n        require(['lq/licquidRuntimeValidationLegacy'], function() {\r\n            FrontendModules.load('validator', true)\r\n                .then(function (Validator) {\r\n                    self.start(Validator);\r\n                });\r\n        });\r\n    };\r\n\r\n    ApplicationValidation.prototype.start = function (Validator) {\r\n        var validatorConfig = {\r\n            loginUrl: '/Licquid.Designer/Account/Validator',\r\n            frontEndUrl: lq.getFrontEndUrl(''),\r\n            designUrl: lq.getDesignerUrl(''),\r\n            portalUrl: lq.getPortalUrl(''),\r\n        };\r\n\r\n        Validator.default(validatorConfig, document.getElementById(\"licquid-validator\"));\r\n\r\n        validatorGateway.callCallbacks();\r\n    };\r\n    \r\n    return ApplicationValidation;\r\n});\n","define('lq/services/application/issueTracking',[],function () {\r\n    'use strict';\r\n\r\n    // todo svb SPA this is a placeholder for the integration with new Runtime validator\r\n    \r\n    function IssueTracking() {\r\n    };\r\n\r\n    IssueTracking.typeName = 'IssueTracking';\r\n\r\n    IssueTracking.prototype.initialize = function () {\r\n        \r\n    };\r\n\r\n    return IssueTracking;\r\n});\n","define('lq/services/application/pullDownEvents',[\r\n    'lq/pullDownAction'\r\n], function (pullDownAction) {\r\n    'use strict';\r\n\r\n    function PullDownEvents() {\r\n    };\r\n\r\n    PullDownEvents.typeName = 'PullDownEvents';\r\n\r\n    PullDownEvents.prototype.initialize = function (app) {\r\n        if (window !== window.parent) return;\r\n\r\n        pullDownAction.attach(app.$app, app.$wrapper, function () {\r\n            if (app.action.isEventEnabled('pullDown')) {\r\n                app.action.triggerEventIfEnabled('pullDown');\r\n            } else {\r\n                window.location.reload();\r\n            }\r\n        });\r\n    };\r\n\r\n    return PullDownEvents;\r\n});\n","define('lq/services/application/applicationServiceFactory',[\r\n    'lq/typesProvider',\r\n    \r\n    './applicationValidation',\r\n    './issueTracking',\r\n    './pullDownEvents'\r\n], function (TypesProvider) {\r\n    'use strict';\r\n\r\n    var servicesTypes = Array.prototype.slice.call(arguments, 1);\r\n    var typesProvider = new TypesProvider(servicesTypes);\r\n\r\n    var createService = function (service) {\r\n        var ServiceType = typesProvider.get(service.serviceType);\r\n        var instance = new ServiceType(service.data);\r\n        return instance;\r\n    };\r\n\r\n    return {\r\n        createService: createService\r\n    };\r\n});\n","define('lq/licquidRuntimeSpa',[\r\n    'lq',\r\n    'underscore',\r\n    'drops/action/action',\r\n    'lq/runtimePiping',\r\n    'lq/parameterShell',\r\n    'lq/actionLoader',\r\n    'lq/navigatorSpa',\r\n    'lq/style',\r\n    'lq/windowSize',\r\n    'lq/responsive',\r\n    'lq/services/application/applicationServiceFactory',\r\n    'lq/validatorGateway',\r\n    'lq/highlighter',\r\n    'lq/layouting',\r\n    'lq/javascript/polyfill'\r\n], function (lq, _, Action, RuntimePiping, ParameterShell, ActionLoader, NavigatorSpa, Style, windowSize, responsive, applicationServiceFactory, validatorGateway, highlighter, layouting, pullDownAction) {\r\n\r\n    var deferredPrompt = null;\r\n    if (!responsive.isPWA()) {\r\n        // Running in Browser\r\n        window.addEventListener('beforeinstallprompt', function (e) {\r\n            deferredPrompt = e;\r\n        });\r\n    }\r\n\r\n    var inIframe = function () {\r\n        return window !== window.parent;\r\n    };\r\n\r\n    var LicquidRuntimeSpa = function () {\r\n        if (window.cordova) {\r\n            document.addEventListener('deviceready', function () {\r\n                if (window.universalLinks) {\r\n                    window.universalLinks.subscribe(null, function (eventData) {\r\n                        window.location = eventData.url;\r\n                    });\r\n                }\r\n            }, false);\r\n        }\r\n    };\r\n\r\n    LicquidRuntimeSpa.prototype.start = function (setup) {\r\n        if (setup.application.embedded) {\r\n            window.parent.postMessage(JSON.stringify({\r\n                eventName: 'LicquidLoaded'\r\n            }), '*');\r\n        }\r\n\r\n        var self = this;\r\n        windowSize.withOnChanged(function () {\r\n            if (self.action) self.action.resize();\r\n        });\r\n\r\n        window.addEventListener('popstate', function (e) {\r\n            self.openNewAction(e.state.actionId, e.state.globals, e.state.locals, { ignoreHistory: true });\r\n        });\r\n\r\n        Style.defaultStyles = setup.application.styles.defaultStyles;\r\n        Style.defaultMockStyles = setup.application.styles.defaultMockStyles;\r\n        Style.mockMode = setup.isInMockMode;\r\n\r\n        this.action = null;\r\n        \r\n        this.$app = setup.$el;\r\n        this.$wrapper = $('<div class=\"licquid-action-wrapper\" />')\r\n            .appendTo(this.$app);\r\n        this.$view = $('<div class=\"licquid-action-view\" />')\r\n            .appendTo(this.$wrapper);\r\n\r\n        this.globalPiping = RuntimePiping.createRoot(setup.parameters.globals, setup.application, this.$app);\r\n        this.globalPiping.navigator = NavigatorSpa.withLocalStorage(setup.action.id, this.globalPiping.url, this.openNewAction.bind(this));\r\n        this.globalPiping.errorHandler.addListener(this.handleError.bind(this));\r\n        this.globalPiping.runtime = this;\r\n\r\n        if (validatorGateway.isEnabled()) {\r\n            validatorGateway.publishEvent({\r\n                type: 'LICQUID_RUNTIME_LOADED',\r\n                globalPiping: this.globalPiping\r\n            });\r\n        } else {\r\n            validatorGateway.whenEnabled(function () {\r\n                validatorGateway.publishEvent({\r\n                    type: 'LICQUID_RUNTIME_LOADED',\r\n                    globalPiping: self.globalPiping\r\n                });\r\n\r\n                if (self.action !== null) {\r\n                    validatorGateway.registerListener(self.action.instanceId, self.receiveMessage.bind(self));\r\n\r\n                    validatorGateway.publishEvent({\r\n                        type: 'ACTION_INSTANCE_LOADED',\r\n                        action: self.action,\r\n                        canReload: false\r\n                    });\r\n                }\r\n            });\r\n        }\r\n\r\n        this.globalServices = _.map(setup.application.services, function (service) {\r\n            return applicationServiceFactory.createService(service);\r\n        });\r\n        _.forEach(this.globalServices, function (globalService) {\r\n            globalService.initialize(self);\r\n        });\r\n\r\n        this.application = setup.application;\r\n        \r\n        this.actionLoader = new ActionLoader(this.globalPiping.url);\r\n        this.actionLoader.addListener(this.showAction.bind(this));\r\n\r\n        this.globalPiping.busyIndicator.show();\r\n        this.openNewAction(setup.action.id, setup.parameters.globals, setup.parameters.locals);\r\n\r\n        this.globalPiping.deferredPrompt = deferredPrompt;\r\n    };\r\n\r\n    LicquidRuntimeSpa.prototype.showAction = function (setup, parameters, state) {\r\n        var self = this;\r\n        \r\n        $.extend(this.globalPiping.application, setup.application);\r\n\r\n        if(setup.view.insertionPoint) {\r\n            var index = this.insertionPoints.indexOf(setup.view.insertionPoint);\r\n            this.insertionPoints = this.insertionPoints.slice(0, index + 1);\r\n            this.insertionPoints = this.insertionPoints\r\n                .concat(_.map(setup.view.actions, function(action) {\r\n                    return action.action.id;\r\n                }));\r\n\r\n            this.action.setContent(setup.view.actions, parameters.locals, setup.view.insertionPoint);\r\n    \r\n            this.updateHistory(setup, _.last(setup.view.actions).action.id, parameters, state);\r\n        } else {\r\n            this.insertionPoints = _.map(setup.view.actions, function(action) {\r\n                return action.action.id;\r\n            });\r\n\r\n            var actionData = setup.view.actions[0].action;\r\n            var systemParameters = setup.view.actions[0].systemParameters;\r\n            var localParameters = setup.view.actions.length > 1 ? {} : parameters.locals;\r\n\r\n            var action = new Action(actionData.view, this.globalPiping.application.options);\r\n            action.loadData(actionData);\r\n            action.piping = this.globalPiping.createChildPiping(actionData, action, localParameters, systemParameters, this.$wrapper, this.$view, !this.action && window.performance.navigation.type == window.performance.navigation.TYPE_RELOAD);\r\n            action.globals = _.clone(parameters.globals);\r\n            action.locals = _.clone(parameters.locals);\r\n\r\n            var layout = responsive.getCurrentLayout(action);\r\n            layouting.applyLayout(this.$view, layout);\r\n            action.applyLayout(layout);\r\n\r\n            if (action.shouldUseWidthOfLayout()) {\r\n                action.data.size.x = layout.resolutionX;\r\n            }\r\n\r\n            // todo svb SPA viewport should only be set once (but what with \"growable\" actions?)\r\n            action.createAndRenderDrops($('#viewport'))\r\n                .then(function () {\r\n                    action.setContent(setup.view.actions.slice(1), parameters.locals);\r\n                });\r\n\r\n            if (this.action) {\r\n                if(validatorGateway.isEnabled()) {\r\n                    validatorGateway.unregisterListener(this.action.instanceId);\r\n\r\n                    validatorGateway.publishEvent({\r\n                        type: 'ACTION_INSTANCE_UNLOADING',\r\n                        action: this.action\r\n                    });\r\n                }\r\n\r\n                this.action.piping.cleanUp();\r\n                this.action.unsubscribeEventHandlersRecursive();\r\n\r\n                this.updateHistory(setup, _.last(setup.view.actions).action.id, parameters, state);\r\n            } else {\r\n                window.history.replaceState({\r\n                    actionId: _.last(setup.view.actions).action.id,\r\n                    globals: parameters.globals,\r\n                    locals: parameters.locals\r\n                }, '', this.application.hideUrl ? lq.getTenantUrl('') : window.location.href);\r\n            }\r\n\r\n            this.$wrapper.scrollTop(0);\r\n            this.action = action;\r\n            this.action.piping.busyIndicator.forceHide();\r\n\r\n            if(validatorGateway.isEnabled()) {\r\n                validatorGateway.registerListener(action.instanceId.toString(), this.receiveMessage.bind(this));\r\n\r\n                validatorGateway.publishEvent({\r\n                    type: 'ACTION_INSTANCE_LOADED',\r\n                    action: action,\r\n                    canReload: setup.view.actions.length === 1\r\n                });\r\n            }\r\n\r\n            if (inIframe()) {\r\n                window.parent.postMessage(JSON.stringify({\r\n                    eventName: 'EmbeddedActionLoaded',\r\n                    sizeX: action.data.size.x,\r\n                    sizeY: action.data.size.y\r\n                }), window.location.protocol + '//' + window.location.host);\r\n            }   \r\n        }\r\n    };\r\n\r\n    LicquidRuntimeSpa.prototype.updateHistory = function (setup, actionId, parameters, state) {\r\n        if (!state || !state.ignoreHistory) {\r\n            var pageUrl = setup.friendlyName\r\n                ? setup.friendlyName\r\n                : 'LicquidAction/Get/' + actionId;\r\n\r\n            var currentParameters = {};\r\n            if (_.keys(parameters.globals).length)\r\n                currentParameters.globals = JSON.stringify(parameters.globals);\r\n            if (_.keys(parameters.locals).length)\r\n                currentParameters.parameters = JSON.stringify(parameters.locals);\r\n            \r\n            var currentUrl = this.application.hideUrl\r\n                ? lq.getTenantUrl('')\r\n                : this.globalPiping.url.prepare(lq.getTenantUrl(pageUrl), currentParameters);\r\n\r\n            window.history.pushState({\r\n                    actionId: actionId,\r\n                    globals: parameters.globals,\r\n                    locals: parameters.locals\r\n                },\r\n                '',\r\n                currentUrl);\r\n        }\r\n    };\r\n\r\n    LicquidRuntimeSpa.prototype.receiveMessage = function (message) {\r\n        switch (message.type) {\r\n\r\n            case 'RELOAD_ACTION_INSTANCE':\r\n                this.openNewAction(this.action.data.id, this.action.globals, this.action.locals, { ignoreHistory: true });\r\n                break;\r\n\r\n            case 'HIGHLIGHT_ACTION_INSTANCE':\r\n                highlighter.highlight(this.$wrapper);\r\n                break;\r\n\r\n        }\r\n    };\r\n\r\n    LicquidRuntimeSpa.prototype.openNewAction = function (actionId, globals, locals, state) {\r\n        this.actionLoader.load(actionId, globals, locals, state, this.insertionPoints);\r\n    };\r\n\r\n    LicquidRuntimeSpa.prototype.handleError = function (errorArgs) {\r\n        if (this.action) this.action.error(errorArgs);\r\n    };\r\n\r\n    return LicquidRuntimeSpa;\r\n});\n","define('lq/licquidRuntimeRaven',[\r\n    'lq/main'\r\n], function (lq) {\r\n    \r\n    var LicquidRuntimeRaven = function (licquidRuntime) {\r\n        this.licquidRuntime = licquidRuntime;\r\n    };\r\n\r\n    LicquidRuntimeRaven.prototype.start = function (setup) {\r\n        var self = this;\r\n        var raven = setup.raven;\r\n        var licquidRuntime = this.licquidRuntime;\r\n        require(['raven'], function (Raven) {\r\n            var ravenLogger = Raven\r\n                .config(raven.frontEndDsn,\r\n                    {\r\n                        tags: raven.tags,\r\n                        dataCallback: function (data) {\r\n                            data.fingerprint = raven.tags.issuesProjectIdentifier\r\n                                ? ['{{ default }}', raven.tags.issuesProjectIdentifier, raven.tags.rootMorphId]\r\n                                : ['{{ default }}', raven.tags.tenant, raven.tags.application, raven.tags.rootMorphId];\r\n\r\n                            if (licquidRuntime.action) {\r\n                                data.extra.globalParameters = licquidRuntime.action.piping.parameters.globals.getAll();\r\n                                data.extra.localParameters = licquidRuntime.action.piping.parameters.locals.getAll();\r\n                                data.tags.rootMorphId = licquidRuntime.action.data.id;\r\n                                data.extra.bookmark = {\r\n                                    bookmarkType: 'actionBookmarkById',\r\n                                    rootMorphId: licquidRuntime.action.data.id\r\n                                }\r\n                            }\r\n\r\n                            if (licquidRuntime.globalPiping) {\r\n                                var application = licquidRuntime.globalPiping.application;\r\n                                if (application.releaseName)\r\n                                    data.tags.releaseNumber = application.releaseName;\r\n                                if (application.userId)\r\n                                    data.user = {\r\n                                        id: application.userId\r\n                                    }\r\n                            }\r\n \r\n                            return data;\r\n                        }\r\n                    })\r\n                .install();\r\n            lq.setRavenLogger(ravenLogger);\r\n\r\n            Raven.context(self.startRuntime.bind(self, setup));\r\n        });\r\n    };\r\n\r\n    LicquidRuntimeRaven.prototype.startRuntime = function (setup) {\r\n        this.licquidRuntime.start(setup);\r\n    };\r\n\r\n    return LicquidRuntimeRaven;\r\n});\n"]}